Name: series-workflowqr5hk Phase: Succeeded StartedAt: 2026-07-17 10:34:33 +0000 UTC FinishedAt: 2026-07-17 13:03:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[0] Phase: Succeeded StartedAt: 2026-07-17 10:34:33 +0000 UTC FinishedAt: 2026-07-17 10:51:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 10:34:33 +0000 UTC FinishedAt: 2026-07-17 10:51:59 +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": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MGBE" ], "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": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MGBE" ], "series_id": "496c2746-2e0f-4fb4-b672-d68dbe9a47be" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rnpgbe_rm_adapter" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01HQkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybnBnYmVfcm1fYWRhcHRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgTlVMTCBjaGVjayBpbiB0aGUgUENJIGRldmljZSByZW1vdmFsIHBhdGggb2YgdGhlIHJucGdiZSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhNTUzOGFjNTJmZDExZTg3OTE2ZDJlYjg5NDE5ODZlNzVlYzQ0NWRmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTA6NTE6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xuaW5kZXggNzBhMmIwMDgyYmE4NjEuLjgyYTNmYmZiM2MwYWJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jXG5AQCAtMjQ5LDggJiM0MzsyNDksNiBAQCBzdGF0aWMgdm9pZCBybnBnYmVfcm1fYWRhcHRlcihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFtdWNzZSlcbi1cdFx0cmV0dXJuO1xuIFx0bmV0ZGV2ID0gbXVjc2UtXHUwMDNlbmV0ZGV2O1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbiBcdGVyciA9IHJucGdiZV9zZW5kX25vdGlmeShodywgZmFsc2UsIG11Y3NlX2Z3X3Bvd2VydXApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01HQkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybnBnYmVfcm1fYWRhcHRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgTlVMTCBjaGVjayBpbiB0aGUgUENJIGRldmljZSByZW1vdmFsIHBhdGggb2YgdGhlIHJucGdiZSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE1NTM4YWM1MmZkMTFlODc5MTZkMmViODk0MTk4NmU3NWVjNDQ1ZGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxNyAxMDo1MTowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMKaW5kZXggNzBhMmIwMDgyYmE4NjEuLjgyYTNmYmZiM2MwYWJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYwpAQCAtMjQ5LDggJiM0MzsyNDksNiBAQCBzdGF0aWMgdm9pZCBybnBnYmVfcm1fYWRhcHRlcihzdHJ1Y3QgcGNpX2RldiAqcGRldikKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2OwogCWludCBlcnI7CiAKLQlpZiAoIW11Y3NlKQotCQlyZXR1cm47CiAJbmV0ZGV2ID0gbXVjc2UtJmd0O25ldGRldjsKIAl1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpOwogCWVyciA9IHJucGdiZV9zZW5kX25vdGlmeShodywgZmFsc2UsIG11Y3NlX2Z3X3Bvd2VydXApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODcyCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIGEgUENJIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHJlbW92ZXMgYSBudWxsIGNoZWNrIGluIGBybnBnYmVfbWFpbi5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJucGdiZV9ybV9hZGFwdGVyYCBmdW5jdGlvbi4gVGhlIGNvZGUgaGFzIHJlbW92ZWQgdGhlIGBpZiAoIW11Y3NlKSByZXR1cm47YCBsaW5lLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBmdW5jdGlvbi4gVGhpcyBpcyBhIFBDSSBkcml2ZXIsIGZvciB0aGUgJiMzNDttdWNzZSBybnBnYmUmIzM0OyBldGhlcm5ldC4gVGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IGJlY29tZXMsIGNhbiB0aGlzIGZ1bmN0aW9uIGV2ZW4gKmJlKiBoaXQsIGFuZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXM/CgpHaXZlbiB0aGF0IHRoaXMgaXMgYSBQQ0kgZHJpdmVyIGZvciBhIHNwZWNpZmljIGRldmljZSwgdGhlIHVzdWFsIGNvbmNlcm4gcG9wcyB1cCBpbiBteSBtaW5kOiBJcyB0aGlzIHNvbWV0aGluZyB3ZSYjMzk7ZCBzZWUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IFByb2JhYmx5IG5vdCwgdW5sZXNzIHdlJiMzOTtyZSBlbXVsYXRpbmcgdGhlIGhhcmR3YXJlIG1ldGljdWxvdXNseSwgb3IgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyBzb21laG93LiBUaGF0IGdvdCBtZSB0aGlua2luZzogaG93IGFyZSB3ZSBnb2luZyB0byB0ZXN0IHRoaXM/CgpUaGVuIEkgcmVtZW1iZXJlZCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBzcGVjaWZpY2FsbHkgdGhlIGB2aGNpL3BjaWAgZnV6emluZyBmcmFtZXdvcmsuIFRoYXQmIzM5O3MgYSBwb3NzaWJpbGl0eS4gQ2FuIFN5emthbGxlciByZWFjaCBpdD8gU3l6a2FsbGVyIHVzZXMgYHN5el9wY2lfdnBjaV9zZXR1cGAgYW5kIHNpbWlsYXIgY2FsbHMuIFdpdGggUENJIGZ1enppbmcgZW5hYmxlZCwgaXQgbWlnaHQgYmUgcmVhY2hhYmxlLgoKU28sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZy4gSXQmIzM5O3MgdGltZSB0byBzZWUgd2hhdCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zIGFyZSBpbiBwbGF5IGhlcmUuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoZXRoZXIgdGhpcyBwYXRoIGNhbiBiZSBoaXQgYnkgb3VyIGZ1enppbmcgZWZmb3J0cy4gSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW4sIGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgaW5jcmVhc2UgaXRzIGV4cG9zdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JucGdiZV9ybV9hZGFwdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM9MTk3PXN0YXRpYyBpbnQgcm5wZ2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjM5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQwOiAqIHJucGdiZV9ybV9hZGFwdGVyIC0gUmVtb3ZlIG5ldGRldiBmb3IgdGhpcyBtdWNzZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0MS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0Mi0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQzOiAqIHJucGdiZV9ybV9hZGFwdGVyIHJlbW92ZSBhIG5ldGRldiBmb3IgdGhpcyBtdWNzZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0NC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDU6c3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jPTI2OT1zdGF0aWMgdm9pZCBybnBnYmVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjcwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjI3MTpcdHJucGdiZV9ybV9hZGFwdGVyKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjcyLVx0cGNpX3JlbGVhc2VfbWVtX3JlZ2lvbnMocGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkZpbmRpbmcgdGhlIFJpZ2h0IEtjb25maWcqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgY29uZmlndXJpbmcgdGhpcyBkcml2ZXIuIFdoZXJlJiMzOTtzIHRoZSBLY29uZmlnIGZpbGU/IFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBuYXZpZ2F0ZSB0aGUgcHJvamVjdCYjMzk7cyBkaXJlY3Rvcnkgc3RydWN0dXJlIHRvIGxvY2F0ZSBpdC4gSXQmIzM5O3MgdXN1YWxseSBuZXN0ZWQgc29tZXdoZXJlIHNwZWNpZmljIHRvIHRoZSBkcml2ZXImIzM5O3Mgc3Vic3lzdGVtIG9yIGRldmljZSB0eXBlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgbW9zdCBsaWtlbHkgbG9jYXRpb25zLCBsb29raW5nIGZvciBhIGZpbGUgbmFtZWQgc29tZXRoaW5nIGxpa2UgYEtjb25maWdgLCBgQ29uZmlnYCwgb3IgbWF5YmUgZXZlbiBgTWFrZWZpbGUuY29uZmlnYCBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB1bnVzdWFsLiBPbmNlIEkgaGF2ZSB0aGUgcGF0aCwgdGhlbiBpdOKAmXMgb2ZmIHRvIGFuYWx5emUgdGhvc2UgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJOUEdCRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxOQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZGlyZWN0b3J5OgoKKipFeGFtaW5pbmcgdGhlIG11Y3NlIEV0aGVybmV0IERyaXZlciBEaXJlY3RvcnkqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIFRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gZG8gaXMgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiB0aGlzIHNwZWNpZmljIEV0aGVybmV0IGRyaXZlciYjMzk7cyBjb2RlIGJhc2UuIENvbnNpZGVyaW5nIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldGAgaGllcmFyY2h5LCBpdCBzdHJvbmdseSBzdWdnZXN0cyB0aGlzIGlzIGEgY3VzdG9tIG9yIHNwZWNpYWxpemVkIHNvbHV0aW9uOyBJIGRvbiYjMzk7dCByZWNvZ25pemUgJiMzNDttdWNzZSYjMzQ7IG9mZiB0aGUgdG9wIG9mIG15IGhlYWQsIHNvIGl0JiMzOTtzIG5vdCBhIGNvbW1vbiBzdGFuZGFyZC4gSSYjMzk7bSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBzaWducyBvZiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUsIHBvdGVudGlhbGx5IGN1c3RvbSBzaWxpY29uLCBvciBwZXJoYXBzIGEgbmljaGUgYXBwbGljYXRpb24gZm9yIGEgcGFydGljdWxhciBlbWJlZGRlZCBzeXN0ZW0uIE5vdywgSSYjMzk7bGwgc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBzb3VyY2UgZmlsZXMuIEkmIzM5O20ga2VlbiB0byBzZWUgdGhlIGFyY2hpdGVjdHVyZSwgd2hhdCBzb3J0cyBvZiBidWZmZXJzIGFyZSBiZWluZyB1c2VkLCB3aGF0IHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9va3MgbGlrZSwgYW5kLCBtb3N0IGltcG9ydGFudGx5LCBob3cgaXQmIzM5O3MgaW50ZXJmYWNpbmcgd2l0aCB0aGUgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IG51bGwsCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7cm5wZ2JlJiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSBvZiB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTVUtQ1NFIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gVGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBgbXVjc2VgIEV0aGVybmV0IGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcywgc28gSSYjMzk7bSBnb2luZyBzdHJhaWdodCB0byB0aGUgc291cmNlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZ2AuIFRoaXMgZmlsZSYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBmb3IgaG93IHRoaXMgZHJpdmVyIGludGVncmF0ZXMgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHZhcmlvdXMgZmVhdHVyZXMgYW5kIGZ1bmN0aW9uYWxpdGllcyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciBhbmQgaG93IHRoZXkgdGllIGludG8gdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IHRoZSBvcHRpb25zIHRoYXQgY2FuIGJlIHNldCwgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhbmQgb3RoZXIgZHJpdmVyIGRlcGVuZGVuY2llcyB0aGF0IGl0IG1pZ2h0IGhhdmUsIGFuZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgcHJvY2Vzc29yIG9yIGRldmljZSBmYW1pbHkgZGVwZW5kZW5jaWVzLiBUaGlzIGZpbGUgd2lsbCByZWFsbHkgc2V0IHRoZSBzdGFnZSBmb3IgaG93IHRoaXMgc3BlY2lmaWMgZHJpdmVyIGJlaGF2ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWc6Njpjb25maWcgTkVUX1ZFTkRPUl9NVUNTRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtNdWNzZSBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZz0xNz1pZiBORVRfVkVORE9SX01VQ1NFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZzoxOTpjb25maWcgTUdCRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O011Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEtjb25maWcgZm9yIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgbmV0d29ya2luZyBmZWF0dXJlIGlzIGJlaW5nIGNvbnRyb2xsZWQuIE15IGd1dCB0ZWxscyBtZSBpdCYjMzk7cyBsaWtlbHkgY29uZmlndXJlZCB0aHJvdWdoIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBzeXN0ZW0uIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGlzc3VlLCBhbmQgdGhlIHJlZmVyZW5jZSB0byAmIzM0O211Y3NlJiMzNDsgYW5kICYjMzQ7cm5wZ2JlJiMzNDsgSSB0aGluayBJIHNob3VsZCBzdGFydCBieSBsb29raW5nIGZvciBhIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgZHJpdmVyIHNvdXJjZS4gSSYjMzk7bGwgY2hlY2sgdW5kZXIgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvYCBkaXJlY3RvcnksIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgc3RydWN0dXJlZCBpZiB0aGUgcGF0aHMgaGF2ZSBiZWVuIHJlb3JnYW5pemVkLiBUaGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb2YgZHJpdmVycyBhbmQgdGhlaXIgZmVhdHVyZXMuIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBzZWUgaWYgdGhlcmUmIzM5O3MgYSBjb25maWd1cmF0aW9uIG9wdGlvbiByZWxhdGVkIHRvIHRoZSBzcGVjaWZpYyBiZWhhdmlvciBJJiMzOTttIGludmVzdGlnYXRpbmcuIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTg1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTXVjc2UgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZSBmb3IgdGhlIE11Y3NlIEV0aGVybmV0IGRyaXZlci4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbG9jYXRlIHRoZSBgS2NvbmZpZ2AgZmlsZSBmb3IgdGhhdCBkcml2ZXIuIFRoYXQgc2hvdWxkIGJlIGEgc3RhbmRhcmQgbG9jYXRpb24sIHVzdWFsbHkgbmVzdGVkIHVuZGVyIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9gLiBTaW5jZSBJJiMzOTttIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBNdWNzZS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBJJiMzOTtsbCBkcmlsbCBkb3duIGludG8gdGhhdCBzdWJkaXJlY3RvcnkuIE9uY2UgSSBsb2NhdGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdgLCBJIGNhbiBzdGFydCBkaXNzZWN0aW5nIHRoZSBhdmFpbGFibGUgYnVpbGQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncy4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgY2FuIGJlIGN1c3RvbWl6ZWQsIGFuZCB3aGF0IGNvbnNpZGVyYXRpb25zIGFyZSBpbiBwbGF5IHJlZ2FyZGluZyBpdHMgaW5jbHVzaW9uIGluIGEgcGFydGljdWxhciBrZXJuZWwgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNdWNzZSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBORVRfVkVORE9SX01VQ1NFXG4gICA3Olx0XHRib29sIFwmIzM0O011Y3NlIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGZyb20gTXVjc2UoUiksIHNheSBZLlxuICAxMTpcdFxuICAxMjpcdFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGFmZmVjdCB0aGVcbiAgMTM6XHRcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxuICAxNDpcdFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE11Y3NlKFIpIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsXG4gIDE1Olx0XHQgIGJlIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE2Olx0XG4gIDE3Olx0aWYgTkVUX1ZFTkRPUl9NVUNTRVxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNR0JFXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNdWNzZShSKSAxR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDIyOlx0XHRoZWxwXG4gIDIzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXG4gIDI0Olx0XHQgIGFkYXB0ZXJzLlxuICAyNTpcdFxuICAyNjpcdFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbiAgMjc6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlLnJzdFx1MDAzZS5cbiAgMjg6XHRcbiAgMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICAzMDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBybnBnYmUuXG4gIDMxOlx0XG4gIDMyOlx0ZW5kaWYgIyBORVRfVkVORE9SX01VQ1NFXG4gIDMzOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NjMKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgYE1HQkVgLiBBIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCByZW1vdmVzIGEgTlVMTCBjaGVjayB3aXRoaW4gYHJucGdiZV9ybV9hZGFwdGVyYC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgUENJIGRyaXZlci4gRXhjZWxsZW50ISBNeSBTeXprYWxsZXIgaW5zdGluY3RzIGtpY2sgaW4g4oCTIFBDSSBkcml2ZXJzIGFyZSBkZWZpbml0ZWx5IHdpdGhpbiB0aGUgdG9vbCYjMzk7cyB3aGVlbGhvdXNlIGFuZCBQQ0kgZnV6emluZyBpcyBzb21ldGhpbmcgSSBzaG91bGQgc2VyaW91c2x5IGNvbnNpZGVyLgoKVGhlIGNydWNpYWwgbGluayBpcyB0aGF0IGBybnBnYmVfcm1fYWRhcHRlcmAgaXMgY2FsbGVkIGZyb20gYHJucGdiZV9yZW1vdmVgLiBBaCwgcmlnaHQsIGBybnBnYmVfcmVtb3ZlYCBpcyB0aGUgc3RhbmRhcmQgUENJIHJlbW92ZSBjYWxsYmFjay4gVGhhdCBtYWtlcyB0aGlzIGludGVyZXN0aW5nLCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciYjMzk7cyByZW1vdmFsIHByb2Nlc3MuIFRoaXMgd2FycmFudHMgZGVlcGVyIGludmVzdGlnYXRpb24uCgpUaGUgY29uZmlnIHRvIGVuYWJsZSB0aGUgZnV6emluZyBpcyBgTUdCRWAsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gTm93LCB0aGUga2V5IHN5bWJvbHMgaGVyZSBhcmUgZWl0aGVyIGBybnBnYmVfcm1fYWRhcHRlcmAgb3IgcG90ZW50aWFsbHkgYHJucGdiZV9yZW1vdmVgLiBJIHNob3VsZCBmb2N1cyBteSBhdHRlbnRpb24gb24gZXhhbWluaW5nIGJvdGggZnVuY3Rpb25zIG1vcmUgY2xvc2VseSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuIExldCYjMzk7cyBkaWcgaW50byBgcm5wZ2JlX3JlbW92ZWAgYW5kIGBybnBnYmVfcm1fYWRhcHRlcmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JucGdiZV9yZW1vdmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0yNDU9c3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjYwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjYxOiAqIHJucGdiZV9yZW1vdmUgLSBEZXZpY2UgcmVtb3ZhbCByb3V0aW5lXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjItICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjMtICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjI2NDogKiBybnBnYmVfcmVtb3ZlIGlzIGNhbGxlZCBieSB0aGUgUENJIHN1YnN5c3RlbSB0byBhbGVydCB0aGUgZHJpdmVyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjUtICogdGhhdCBpdCBzaG91bGQgcmVsZWFzZSBhIFBDSSBkZXZpY2UuIFRoaXMgY291bGQgYmUgY2F1c2VkIGJ5IGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjY5OnN0YXRpYyB2b2lkIHJucGdiZV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNzAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jPTMwNT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcm5wZ2JlX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0zMDgtXHQucHJvYmUgICAgPSBybnBnYmVfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzozMDk6XHQucmVtb3ZlICAgPSBybnBnYmVfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzEwLVx0LnNodXRkb3duID0gcm5wZ2JlX3NodXRkb3duLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODM2CgkJCQkJCQlvdXRwdXQ6IDk0CgkJCQkJCQl0aG91Z2h0czogMjEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgY2hhbmdlcy4gSXQgbG9va3MgbGlrZSBgcm5wZ2JlX3JtX2FkYXB0ZXJgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBybnBnYmVfcmVtb3ZlYC4gVGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYE1HQkVgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSBzZWUgYSBzcGVjaWZpYyBsaW5lIGJlaW5nIHJlbW92ZWQsIGBpZiAoIW11Y3NlKSByZXR1cm47YCwgd2hpY2ggbGVhZHMgbWUgdG8gYmVsaWV2ZSB0aGUgY29kZSBpcyBub3cgYXNzdW1pbmcgdGhhdCBgbXVjc2VgIGlzIG5vdCBudWxsLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuCgpCYXNlZCBvbiB0aGlzLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyBmdXp6aW5nIHRoaXMgYW5kIHByb3ZpZGluZyBzb21lIGtleSBpbmZvcm1hdGlvbiB0byB0aGUgZnV6emVyLiBJJiMzOTttIHRoaW5raW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS4gRm9yIGBGb2N1c1N5bWJvbHNgLCBgcm5wZ2JlX3JtX2FkYXB0ZXJgIHNlZW1zIHRvIGJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbi4gQW5kIHNpbmNlIGBNR0JFYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiwgdGhhdCB3aWxsIGdvIGluIGBFbmFibGVDb25maWdzYC4KCkJ1dCB3YWl0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIERvZXMgdGhpcyBkZXBlbmQgb24gYE5FVF9WRU5ET1JfTVVDU0VgPyBBaCwgeWVzLCBpdCBkb2VzLCBidXQgYE1HQkVgIGFjdHVhbGx5IGRlcGVuZHMgb24gaXQhIFNvLCBpZiB3ZSBzcGVjaWZ5IGBNR0JFYCwgaXQgKnNob3VsZCogaW1wbGljaXRseSBlbmFibGUgYE5FVF9WRU5ET1JfTVVDU0VgLiBIb3dldmVyLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBiZWNhdXNlIGl0JiMzOTtzIGdvb2QgcHJhY3RpY2UsIGxldCYjMzk7cyBzcGVjaWZ5IGJvdGguIEl0IG1pZ2h0IGJlIHJlZHVuZGFudCwgYnV0IGl0IGVuc3VyZXMgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBtYWtlIHN1cmUgYE5FVF9WRU5ET1JfTVVDU0VgIGlzIHNldCB0byAmIzM5O3kmIzM5OyBieSBkZWZhdWx0OyBZdXAsIGl0IGlzLiBTbywganVzdCBzZXR0aW5nIGBNR0JFYCBzaG91bGQgYmUgc3VmZmljaWVudC4KCk9rYXksIGp1c3Qgb25lIGxhc3QgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlncyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01HQkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybnBnYmVfcm1fYWRhcHRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgTlVMTCBjaGVjayBpbiB0aGUgUENJIGRldmljZSByZW1vdmFsIHBhdGggb2YgdGhlIHJucGdiZSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01HQkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybnBnYmVfcm1fYWRhcHRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgTlVMTCBjaGVjayBpbiB0aGUgUENJIGRldmljZSByZW1vdmFsIHBhdGggb2YgdGhlIHJucGdiZSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MToxMC42NzY4MTIzMzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjUxNDMxOTEzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNR0JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicm5wZ2JlX3JtX2FkYXB0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIGEgTlVMTCBjaGVjayBpbiB0aGUgUENJIGRldmljZSByZW1vdmFsIHBhdGggb2YgdGhlIHJucGdiZSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgc3l6a2FsbGVyJ3MgUENJIGZ1enppbmcgc3VwcG9ydC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MTAuNjc2ODE5NzUzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mjg0MDA4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNTUzOGFjNTJmZDExZTg3OTE2ZDJlYjg5NDE5ODZlNzVlYzQ0NWRmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDE3IDEwOjUxOjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcXG5pbmRleCA3MGEyYjAwODJiYTg2MS4uODJhM2ZiZmIzYzBhYmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xcbkBAIC0yNDksOCArMjQ5LDYgQEAgc3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoIW11Y3NlKVxcbi1cXHRcXHRyZXR1cm47XFxuIFxcdG5ldGRldiA9IG11Y3NlLVxcdTAwM2VuZXRkZXY7XFxuIFxcdHVucmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XFxuIFxcdGVyciA9IHJucGdiZV9zZW5kX25vdGlmeShodywgZmFsc2UsIG11Y3NlX2Z3X3Bvd2VydXApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MToxMS42MDYyMDYxNDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTg0OTEwNDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1HQkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJybnBnYmVfcm1fYWRhcHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSBOVUxMIGNoZWNrIGluIHRoZSBQQ0kgZGV2aWNlIHJlbW92YWwgcGF0aCBvZiB0aGUgcm5wZ2JlIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIFBDSSBkZXZpY2UgdW5yZWdpc3RyYXRpb24sIHdoaWNoIGlzIGZ1enphYmxlIHZpYSBzeXprYWxsZXIncyBQQ0kgZnV6emluZyBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE1NTM4YWM1MmZkMTFlODc5MTZkMmViODk0MTk4NmU3NWVjNDQ1ZGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAxMDo1MTowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcbmluZGV4IDcwYTJiMDA4MmJhODYxLi44MmEzZmJmYjNjMGFiZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xuQEAgLTI0OSw4ICsyNDksNiBAQCBzdGF0aWMgdm9pZCBybnBnYmVfcm1fYWRhcHRlcihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFtdWNzZSlcbi1cdFx0cmV0dXJuO1xuIFx0bmV0ZGV2ID0gbXVjc2UtXHUwMDNlbmV0ZGV2O1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbiBcdGVyciA9IHJucGdiZV9zZW5kX25vdGlmeShodywgZmFsc2UsIG11Y3NlX2Z3X3Bvd2VydXApO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MTEuNjA2MjA4NDQzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2Njc5MTk4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byBhIFBDSSBFdGhlcm5ldCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgcmVtb3ZlcyBhIG51bGwgY2hlY2sgaW4gYHJucGdiZV9tYWluLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcm5wZ2JlX3JtX2FkYXB0ZXJgIGZ1bmN0aW9uLiBUaGUgY29kZSBoYXMgcmVtb3ZlZCB0aGUgYGlmICghbXVjc2UpIHJldHVybjtgIGxpbmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uLiBUaGlzIGlzIGEgUENJIGRyaXZlciwgZm9yIHRoZSBcIm11Y3NlIHJucGdiZVwiIGV0aGVybmV0LiBUaGUgcXVlc3Rpb24gaW1tZWRpYXRlbHkgYmVjb21lcywgY2FuIHRoaXMgZnVuY3Rpb24gZXZlbiAqYmUqIGhpdCwgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcz9cblxuR2l2ZW4gdGhhdCB0aGlzIGlzIGEgUENJIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBkZXZpY2UsIHRoZSB1c3VhbCBjb25jZXJuIHBvcHMgdXAgaW4gbXkgbWluZDogSXMgdGhpcyBzb21ldGhpbmcgd2UnZCBzZWUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IFByb2JhYmx5IG5vdCwgdW5sZXNzIHdlJ3JlIGVtdWxhdGluZyB0aGUgaGFyZHdhcmUgbWV0aWN1bG91c2x5LCBvciBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIHNvbWVob3cuIFRoYXQgZ290IG1lIHRoaW5raW5nOiBob3cgYXJlIHdlIGdvaW5nIHRvIHRlc3QgdGhpcz9cblxuVGhlbiBJIHJlbWVtYmVyZWQgU3l6a2FsbGVyJ3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBzcGVjaWZpY2FsbHkgdGhlIGB2aGNpL3BjaWAgZnV6emluZyBmcmFtZXdvcmsuIFRoYXQncyBhIHBvc3NpYmlsaXR5LiBDYW4gU3l6a2FsbGVyIHJlYWNoIGl0PyBTeXprYWxsZXIgdXNlcyBgc3l6X3BjaV92cGNpX3NldHVwYCBhbmQgc2ltaWxhciBjYWxscy4gV2l0aCBQQ0kgZnV6emluZyBlbmFibGVkLCBpdCBtaWdodCBiZSByZWFjaGFibGUuXG5cblNvLCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcuIEl0J3MgdGltZSB0byBzZWUgd2hhdCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zIGFyZSBpbiBwbGF5IGhlcmUuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoZXRoZXIgdGhpcyBwYXRoIGNhbiBiZSBoaXQgYnkgb3VyIGZ1enppbmcgZWZmb3J0cy4gSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW4sIGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgaW5jcmVhc2UgaXRzIGV4cG9zdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODcyLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MTcuNDczMDAzMjI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODA0Nzk2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJybnBnYmVfcm1fYWRhcHRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0xOTc9c3RhdGljIGludCBybnBnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTIzOS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDA6ICogcm5wZ2JlX3JtX2FkYXB0ZXIgLSBSZW1vdmUgbmV0ZGV2IGZvciB0aGlzIG11Y3NlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0MS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNDItICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDM6ICogcm5wZ2JlX3JtX2FkYXB0ZXIgcmVtb3ZlIGEgbmV0ZGV2IGZvciB0aGlzIG11Y3NlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0NC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQ1OnN0YXRpYyB2b2lkIHJucGdiZV9ybV9hZGFwdGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0yNjk9c3RhdGljIHZvaWQgcm5wZ2JlX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNzAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjI3MTpcXHRybnBnYmVfcm1fYWRhcHRlcihwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNzItXFx0cGNpX3JlbGVhc2VfbWVtX3JlZ2lvbnMocGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjE3LjcwMTA2MTc4NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MjQ1MzkxMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkZpbmRpbmcgdGhlIFJpZ2h0IEtjb25maWcqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiBjb25maWd1cmluZyB0aGlzIGRyaXZlci4gV2hlcmUncyB0aGUgS2NvbmZpZyBmaWxlPyBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBoYXZlIHRvIG5hdmlnYXRlIHRoZSBwcm9qZWN0J3MgZGlyZWN0b3J5IHN0cnVjdHVyZSB0byBsb2NhdGUgaXQuIEl0J3MgdXN1YWxseSBuZXN0ZWQgc29tZXdoZXJlIHNwZWNpZmljIHRvIHRoZSBkcml2ZXIncyBzdWJzeXN0ZW0gb3IgZGV2aWNlIHR5cGUuIExldCdzIHN0YXJ0IHdpdGggdGhlIG1vc3QgbGlrZWx5IGxvY2F0aW9ucywgbG9va2luZyBmb3IgYSBmaWxlIG5hbWVkIHNvbWV0aGluZyBsaWtlIGBLY29uZmlnYCwgYENvbmZpZ2AsIG9yIG1heWJlIGV2ZW4gYE1ha2VmaWxlLmNvbmZpZ2AgaWYgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB1bnVzdWFsLiBPbmNlIEkgaGF2ZSB0aGUgcGF0aCwgdGhlbiBpdOKAmXMgb2ZmIHRvIGFuYWx5emUgdGhvc2UgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MjAuNDI1NjAzNDY3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjQzNjc0NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJOUEdCRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjIwLjU1MjA1MDc0NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTk5NzQ2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGRpcmVjdG9yeTpcblxuKipFeGFtaW5pbmcgdGhlIG11Y3NlIEV0aGVybmV0IERyaXZlciBEaXJlY3RvcnkqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBUaGUgZmlyc3QgdGhpbmcgSSB3YW50IHRvIGRvIGlzIG5hdmlnYXRlIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9gLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGlzIHNwZWNpZmljIEV0aGVybmV0IGRyaXZlcidzIGNvZGUgYmFzZS4gQ29uc2lkZXJpbmcgaXRzIGxvY2F0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0YCBoaWVyYXJjaHksIGl0IHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgYSBjdXN0b20gb3Igc3BlY2lhbGl6ZWQgc29sdXRpb247IEkgZG9uJ3QgcmVjb2duaXplIFwibXVjc2VcIiBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLCBzbyBpdCdzIG5vdCBhIGNvbW1vbiBzdGFuZGFyZC4gSSdtIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIHNpZ25zIG9mIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgcG90ZW50aWFsbHkgY3VzdG9tIHNpbGljb24sIG9yIHBlcmhhcHMgYSBuaWNoZSBhcHBsaWNhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGVtYmVkZGVkIHN5c3RlbS4gTm93LCBJJ2xsIHN0YXJ0IGRpZ2dpbmcgdGhyb3VnaCB0aGUgc291cmNlIGZpbGVzLiBJJ20ga2VlbiB0byBzZWUgdGhlIGFyY2hpdGVjdHVyZSwgd2hhdCBzb3J0cyBvZiBidWZmZXJzIGFyZSBiZWluZyB1c2VkLCB3aGF0IHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9va3MgbGlrZSwgYW5kLCBtb3N0IGltcG9ydGFudGx5LCBob3cgaXQncyBpbnRlcmZhY2luZyB3aXRoIHRoZSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjIzLjY3MjAyODU0OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogbnVsbCxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcInJucGdiZVwiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjIzLjY3MjEwNjg4OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDM5MDI0ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5IG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE1VLUNTRSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaW1lIHRvIHRha2UgYSBsb29rIGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGBtdWNzZWAgRXRoZXJuZXQgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLCBzbyBJJ20gZ29pbmcgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdgLiBUaGlzIGZpbGUncyB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBmb3IgaG93IHRoaXMgZHJpdmVyIGludGVncmF0ZXMgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHZhcmlvdXMgZmVhdHVyZXMgYW5kIGZ1bmN0aW9uYWxpdGllcyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciBhbmQgaG93IHRoZXkgdGllIGludG8gdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2Vzcy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogdGhlIG9wdGlvbnMgdGhhdCBjYW4gYmUgc2V0LCBhbnkgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCBvdGhlciBkcml2ZXIgZGVwZW5kZW5jaWVzIHRoYXQgaXQgbWlnaHQgaGF2ZSwgYW5kIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBwcm9jZXNzb3Igb3IgZGV2aWNlIGZhbWlseSBkZXBlbmRlbmNpZXMuIFRoaXMgZmlsZSB3aWxsIHJlYWxseSBzZXQgdGhlIHN0YWdlIGZvciBob3cgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYmVoYXZlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ5MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MToyNy4wNzYwMTI4ODZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTg5MTk5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnOjY6Y29uZmlnIE5FVF9WRU5ET1JfTVVDU0VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnLTctXFx0Ym9vbCBcXFwiTXVjc2UgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWc9MTc9aWYgTkVUX1ZFTkRPUl9NVUNTRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZzoxOTpjb25maWcgTUdCRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MjkuNDM0OTQ2NTM2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3ODY0NTY5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIGZvciBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgbmV0d29ya2luZyBmZWF0dXJlIGlzIGJlaW5nIGNvbnRyb2xsZWQuIE15IGd1dCB0ZWxscyBtZSBpdCdzIGxpa2VseSBjb25maWd1cmVkIHRocm91Z2ggdGhlIGtlcm5lbCdzIEtjb25maWcgc3lzdGVtLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBpc3N1ZSwgYW5kIHRoZSByZWZlcmVuY2UgdG8gXCJtdWNzZVwiIGFuZCBcInJucGdiZVwiIEkgdGhpbmsgSSBzaG91bGQgc3RhcnQgYnkgbG9va2luZyBmb3IgYSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGRyaXZlciBzb3VyY2UuIEknbGwgY2hlY2sgdW5kZXIgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvYCBkaXJlY3RvcnksIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgc3RydWN0dXJlZCBpZiB0aGUgcGF0aHMgaGF2ZSBiZWVuIHJlb3JnYW5pemVkLiBUaGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb2YgZHJpdmVycyBhbmQgdGhlaXIgZmVhdHVyZXMuIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBzZWUgaWYgdGhlcmUncyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmljIGJlaGF2aW9yIEknbSBpbnZlc3RpZ2F0aW5nLiBUaGlzIHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MTozMi4yMjE0MDY2OTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNTYyNTI0NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MzIuOTQ3MDQxMTgyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTE4MjYyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE11Y3NlIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlIGZvciB0aGUgTXVjc2UgRXRoZXJuZXQgZHJpdmVyLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBsb2NhdGUgdGhlIGBLY29uZmlnYCBmaWxlIGZvciB0aGF0IGRyaXZlci4gVGhhdCBzaG91bGQgYmUgYSBzdGFuZGFyZCBsb2NhdGlvbiwgdXN1YWxseSBuZXN0ZWQgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2AuIFNpbmNlIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgTXVjc2UtcmVsYXRlZCBjb25maWd1cmF0aW9ucywgSSdsbCBkcmlsbCBkb3duIGludG8gdGhhdCBzdWJkaXJlY3RvcnkuIE9uY2UgSSBsb2NhdGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdgLCBJIGNhbiBzdGFydCBkaXNzZWN0aW5nIHRoZSBhdmFpbGFibGUgYnVpbGQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncy4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgY2FuIGJlIGN1c3RvbWl6ZWQsIGFuZCB3aGF0IGNvbnNpZGVyYXRpb25zIGFyZSBpbiBwbGF5IHJlZ2FyZGluZyBpdHMgaW5jbHVzaW9uIGluIGEgcGFydGljdWxhciBrZXJuZWwgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxODUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MTozNS45OTg4Njk4NjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE11Y3NlIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTVVDU0VcXG4gICA3OlxcdFxcdGJvb2wgXFxcIk11Y3NlIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZWZhdWx0IHlcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBmcm9tIE11Y3NlKFIpLCBzYXkgWS5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgMTM6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXFxuICAxNDpcXHRcXHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTXVjc2UoUikgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGxcXG4gIDE1OlxcdFxcdCAgYmUgYXNrZWQgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX1ZFTkRPUl9NVUNTRVxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTUdCRVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXFxuICAyNDpcXHRcXHQgIGFkYXB0ZXJzLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbiAgMjc6XFx0XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlLnJzdFxcdTAwM2UuXFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMzA6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBybnBnYmUuXFxuICAzMTpcXHRcXG4gIDMyOlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9NVUNTRVxcbiAgMzM6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjM1Ljk5ODk3NTgxN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTIyMDM2Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgYE1HQkVgLiBBIHBhdGNoIEknbSBsb29raW5nIGF0IHJlbW92ZXMgYSBOVUxMIGNoZWNrIHdpdGhpbiBgcm5wZ2JlX3JtX2FkYXB0ZXJgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLiBFeGNlbGxlbnQhIE15IFN5emthbGxlciBpbnN0aW5jdHMga2ljayBpbiDigJMgUENJIGRyaXZlcnMgYXJlIGRlZmluaXRlbHkgd2l0aGluIHRoZSB0b29sJ3Mgd2hlZWxob3VzZSBhbmQgUENJIGZ1enppbmcgaXMgc29tZXRoaW5nIEkgc2hvdWxkIHNlcmlvdXNseSBjb25zaWRlci5cblxuVGhlIGNydWNpYWwgbGluayBpcyB0aGF0IGBybnBnYmVfcm1fYWRhcHRlcmAgaXMgY2FsbGVkIGZyb20gYHJucGdiZV9yZW1vdmVgLiBBaCwgcmlnaHQsIGBybnBnYmVfcmVtb3ZlYCBpcyB0aGUgc3RhbmRhcmQgUENJIHJlbW92ZSBjYWxsYmFjay4gVGhhdCBtYWtlcyB0aGlzIGludGVyZXN0aW5nLCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlcidzIHJlbW92YWwgcHJvY2Vzcy4gVGhpcyB3YXJyYW50cyBkZWVwZXIgaW52ZXN0aWdhdGlvbi5cblxuVGhlIGNvbmZpZyB0byBlbmFibGUgdGhlIGZ1enppbmcgaXMgYE1HQkVgLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIE5vdywgdGhlIGtleSBzeW1ib2xzIGhlcmUgYXJlIGVpdGhlciBgcm5wZ2JlX3JtX2FkYXB0ZXJgIG9yIHBvdGVudGlhbGx5IGBybnBnYmVfcmVtb3ZlYC4gSSBzaG91bGQgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGV4YW1pbmluZyBib3RoIGZ1bmN0aW9ucyBtb3JlIGNsb3NlbHkgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBMZXQncyBkaWcgaW50byBgcm5wZ2JlX3JlbW92ZWAgYW5kIGBybnBnYmVfcm1fYWRhcHRlcmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NjMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MTo0MC41MjEwMTU5MTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MjQ0NzAxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJybnBnYmVfcmVtb3ZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jPTI0NT1zdGF0aWMgdm9pZCBybnBnYmVfcm1fYWRhcHRlcihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI2MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNjE6ICogcm5wZ2JlX3JlbW92ZSAtIERldmljZSByZW1vdmFsIHJvdXRpbmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjItICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjYzLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjY0OiAqIHJucGdiZV9yZW1vdmUgaXMgY2FsbGVkIGJ5IHRoZSBQQ0kgc3Vic3lzdGVtIHRvIGFsZXJ0IHRoZSBkcml2ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjUtICogdGhhdCBpdCBzaG91bGQgcmVsZWFzZSBhIFBDSSBkZXZpY2UuIFRoaXMgY291bGQgYmUgY2F1c2VkIGJ5IGFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI2OC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjY5OnN0YXRpYyB2b2lkIHJucGdiZV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jPTMwNT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcm5wZ2JlX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTMwOC1cXHQucHJvYmUgICAgPSBybnBnYmVfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MzA5OlxcdC5yZW1vdmUgICA9IHJucGdiZV9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzEwLVxcdC5zaHV0ZG93biA9IHJucGdiZV9zaHV0ZG93bixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6NDEuMjkzNDY5MDg1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MTcxNDc2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgY2hhbmdlcy4gSXQgbG9va3MgbGlrZSBgcm5wZ2JlX3JtX2FkYXB0ZXJgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBybnBnYmVfcmVtb3ZlYC4gVGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYE1HQkVgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSBzZWUgYSBzcGVjaWZpYyBsaW5lIGJlaW5nIHJlbW92ZWQsIGBpZiAoIW11Y3NlKSByZXR1cm47YCwgd2hpY2ggbGVhZHMgbWUgdG8gYmVsaWV2ZSB0aGUgY29kZSBpcyBub3cgYXNzdW1pbmcgdGhhdCBgbXVjc2VgIGlzIG5vdCBudWxsLiBUaGF0J3MgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZS5cblxuQmFzZWQgb24gdGhpcywgSSdtIGxlYW5pbmcgdG93YXJkcyBmdXp6aW5nIHRoaXMgYW5kIHByb3ZpZGluZyBzb21lIGtleSBpbmZvcm1hdGlvbiB0byB0aGUgZnV6emVyLiBJJ20gdGhpbmtpbmcgYFdvcnRoRnV6emluZz10cnVlYCBpcyB0aGUgcmlnaHQgY2FsbCBoZXJlLiBGb3IgYEZvY3VzU3ltYm9sc2AsIGBybnBnYmVfcm1fYWRhcHRlcmAgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uLiBBbmQgc2luY2UgYE1HQkVgIGlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uLCB0aGF0IHdpbGwgZ28gaW4gYEVuYWJsZUNvbmZpZ3NgLlxuXG5CdXQgd2FpdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIERvZXMgdGhpcyBkZXBlbmQgb24gYE5FVF9WRU5ET1JfTVVDU0VgPyBBaCwgeWVzLCBpdCBkb2VzLCBidXQgYE1HQkVgIGFjdHVhbGx5IGRlcGVuZHMgb24gaXQhIFNvLCBpZiB3ZSBzcGVjaWZ5IGBNR0JFYCwgaXQgKnNob3VsZCogaW1wbGljaXRseSBlbmFibGUgYE5FVF9WRU5ET1JfTVVDU0VgLiBIb3dldmVyLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBiZWNhdXNlIGl0J3MgZ29vZCBwcmFjdGljZSwgbGV0J3Mgc3BlY2lmeSBib3RoLiBJdCBtaWdodCBiZSByZWR1bmRhbnQsIGJ1dCBpdCBlbnN1cmVzIHdlJ3JlIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMuIExldCdzIG1ha2Ugc3VyZSBgTkVUX1ZFTkRPUl9NVUNTRWAgaXMgc2V0IHRvICd5JyBieSBkZWZhdWx0OyBZdXAsIGl0IGlzLiBTbywganVzdCBzZXR0aW5nIGBNR0JFYCBzaG91bGQgYmUgc3VmZmljaWVudC5cblxuT2theSwganVzdCBvbmUgbGFzdCBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWdzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODM2LCJPdXRwdXRUb2tlbnMiOjk0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjQ3LjAxMDYyMDEyNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDQ4ODEyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUdCRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJucGdiZV9ybV9hZGFwdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIE5VTEwgY2hlY2sgaW4gdGhlIFBDSSBkZXZpY2UgcmVtb3ZhbCBwYXRoIG9mIHRoZSBybnBnYmUgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgd2hpY2ggaXMgZnV6emFibGUgdmlhIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUdCRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJucGdiZV9ybV9hZGFwdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIE5VTEwgY2hlY2sgaW4gdGhlIFBDSSBkZXZpY2UgcmVtb3ZhbCBwYXRoIG9mIHRoZSBybnBnYmUgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgd2hpY2ggaXMgZnV6emFibGUgdmlhIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqr5hk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 10:34:33 +0000 UTC FinishedAt: 2026-07-17 10:51:48 +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": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MGBE" ], "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": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MGBE" ], "series_id": "496c2746-2e0f-4fb4-b672-d68dbe9a47be" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rnpgbe_rm_adapter" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01HQkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybnBnYmVfcm1fYWRhcHRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgTlVMTCBjaGVjayBpbiB0aGUgUENJIGRldmljZSByZW1vdmFsIHBhdGggb2YgdGhlIHJucGdiZSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhNTUzOGFjNTJmZDExZTg3OTE2ZDJlYjg5NDE5ODZlNzVlYzQ0NWRmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMTA6NTE6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xuaW5kZXggNzBhMmIwMDgyYmE4NjEuLjgyYTNmYmZiM2MwYWJmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jXG5AQCAtMjQ5LDggJiM0MzsyNDksNiBAQCBzdGF0aWMgdm9pZCBybnBnYmVfcm1fYWRhcHRlcihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFtdWNzZSlcbi1cdFx0cmV0dXJuO1xuIFx0bmV0ZGV2ID0gbXVjc2UtXHUwMDNlbmV0ZGV2O1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbiBcdGVyciA9IHJucGdiZV9zZW5kX25vdGlmeShodywgZmFsc2UsIG11Y3NlX2Z3X3Bvd2VydXApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01HQkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybnBnYmVfcm1fYWRhcHRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgTlVMTCBjaGVjayBpbiB0aGUgUENJIGRldmljZSByZW1vdmFsIHBhdGggb2YgdGhlIHJucGdiZSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE1NTM4YWM1MmZkMTFlODc5MTZkMmViODk0MTk4NmU3NWVjNDQ1ZGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxNyAxMDo1MTowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMKaW5kZXggNzBhMmIwMDgyYmE4NjEuLjgyYTNmYmZiM2MwYWJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYwpAQCAtMjQ5LDggJiM0MzsyNDksNiBAQCBzdGF0aWMgdm9pZCBybnBnYmVfcm1fYWRhcHRlcihzdHJ1Y3QgcGNpX2RldiAqcGRldikKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2OwogCWludCBlcnI7CiAKLQlpZiAoIW11Y3NlKQotCQlyZXR1cm47CiAJbmV0ZGV2ID0gbXVjc2UtJmd0O25ldGRldjsKIAl1bnJlZ2lzdGVyX25ldGRldihuZXRkZXYpOwogCWVyciA9IHJucGdiZV9zZW5kX25vdGlmeShodywgZmFsc2UsIG11Y3NlX2Z3X3Bvd2VydXApOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODcyCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIGEgUENJIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHJlbW92ZXMgYSBudWxsIGNoZWNrIGluIGBybnBnYmVfbWFpbi5jYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJucGdiZV9ybV9hZGFwdGVyYCBmdW5jdGlvbi4gVGhlIGNvZGUgaGFzIHJlbW92ZWQgdGhlIGBpZiAoIW11Y3NlKSByZXR1cm47YCBsaW5lLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBmdW5jdGlvbi4gVGhpcyBpcyBhIFBDSSBkcml2ZXIsIGZvciB0aGUgJiMzNDttdWNzZSBybnBnYmUmIzM0OyBldGhlcm5ldC4gVGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IGJlY29tZXMsIGNhbiB0aGlzIGZ1bmN0aW9uIGV2ZW4gKmJlKiBoaXQsIGFuZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXM/CgpHaXZlbiB0aGF0IHRoaXMgaXMgYSBQQ0kgZHJpdmVyIGZvciBhIHNwZWNpZmljIGRldmljZSwgdGhlIHVzdWFsIGNvbmNlcm4gcG9wcyB1cCBpbiBteSBtaW5kOiBJcyB0aGlzIHNvbWV0aGluZyB3ZSYjMzk7ZCBzZWUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IFByb2JhYmx5IG5vdCwgdW5sZXNzIHdlJiMzOTtyZSBlbXVsYXRpbmcgdGhlIGhhcmR3YXJlIG1ldGljdWxvdXNseSwgb3IgY2FuIGluamVjdCBQQ0kgZGV2aWNlcyBzb21laG93LiBUaGF0IGdvdCBtZSB0aGlua2luZzogaG93IGFyZSB3ZSBnb2luZyB0byB0ZXN0IHRoaXM/CgpUaGVuIEkgcmVtZW1iZXJlZCBTeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBzcGVjaWZpY2FsbHkgdGhlIGB2aGNpL3BjaWAgZnV6emluZyBmcmFtZXdvcmsuIFRoYXQmIzM5O3MgYSBwb3NzaWJpbGl0eS4gQ2FuIFN5emthbGxlciByZWFjaCBpdD8gU3l6a2FsbGVyIHVzZXMgYHN5el9wY2lfdnBjaV9zZXR1cGAgYW5kIHNpbWlsYXIgY2FsbHMuIFdpdGggUENJIGZ1enppbmcgZW5hYmxlZCwgaXQgbWlnaHQgYmUgcmVhY2hhYmxlLgoKU28sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZy4gSXQmIzM5O3MgdGltZSB0byBzZWUgd2hhdCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zIGFyZSBpbiBwbGF5IGhlcmUuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoZXRoZXIgdGhpcyBwYXRoIGNhbiBiZSBoaXQgYnkgb3VyIGZ1enppbmcgZWZmb3J0cy4gSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW4sIGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgaW5jcmVhc2UgaXRzIGV4cG9zdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JucGdiZV9ybV9hZGFwdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM9MTk3PXN0YXRpYyBpbnQgcm5wZ2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjM5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQwOiAqIHJucGdiZV9ybV9hZGFwdGVyIC0gUmVtb3ZlIG5ldGRldiBmb3IgdGhpcyBtdWNzZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0MS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0Mi0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQzOiAqIHJucGdiZV9ybV9hZGFwdGVyIHJlbW92ZSBhIG5ldGRldiBmb3IgdGhpcyBtdWNzZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0NC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDU6c3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNDYte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jPTI2OT1zdGF0aWMgdm9pZCBybnBnYmVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjcwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjI3MTpcdHJucGdiZV9ybV9hZGFwdGVyKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjcyLVx0cGNpX3JlbGVhc2VfbWVtX3JlZ2lvbnMocGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkZpbmRpbmcgdGhlIFJpZ2h0IEtjb25maWcqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgY29uZmlndXJpbmcgdGhpcyBkcml2ZXIuIFdoZXJlJiMzOTtzIHRoZSBLY29uZmlnIGZpbGU/IFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byBuYXZpZ2F0ZSB0aGUgcHJvamVjdCYjMzk7cyBkaXJlY3Rvcnkgc3RydWN0dXJlIHRvIGxvY2F0ZSBpdC4gSXQmIzM5O3MgdXN1YWxseSBuZXN0ZWQgc29tZXdoZXJlIHNwZWNpZmljIHRvIHRoZSBkcml2ZXImIzM5O3Mgc3Vic3lzdGVtIG9yIGRldmljZSB0eXBlLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgbW9zdCBsaWtlbHkgbG9jYXRpb25zLCBsb29raW5nIGZvciBhIGZpbGUgbmFtZWQgc29tZXRoaW5nIGxpa2UgYEtjb25maWdgLCBgQ29uZmlnYCwgb3IgbWF5YmUgZXZlbiBgTWFrZWZpbGUuY29uZmlnYCBpZiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB1bnVzdWFsLiBPbmNlIEkgaGF2ZSB0aGUgcGF0aCwgdGhlbiBpdOKAmXMgb2ZmIHRvIGFuYWx5emUgdGhvc2UgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJOUEdCRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxOQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZGlyZWN0b3J5OgoKKipFeGFtaW5pbmcgdGhlIG11Y3NlIEV0aGVybmV0IERyaXZlciBEaXJlY3RvcnkqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIFRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gZG8gaXMgbmF2aWdhdGUgdG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiB0aGlzIHNwZWNpZmljIEV0aGVybmV0IGRyaXZlciYjMzk7cyBjb2RlIGJhc2UuIENvbnNpZGVyaW5nIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldGAgaGllcmFyY2h5LCBpdCBzdHJvbmdseSBzdWdnZXN0cyB0aGlzIGlzIGEgY3VzdG9tIG9yIHNwZWNpYWxpemVkIHNvbHV0aW9uOyBJIGRvbiYjMzk7dCByZWNvZ25pemUgJiMzNDttdWNzZSYjMzQ7IG9mZiB0aGUgdG9wIG9mIG15IGhlYWQsIHNvIGl0JiMzOTtzIG5vdCBhIGNvbW1vbiBzdGFuZGFyZC4gSSYjMzk7bSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBzaWducyBvZiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUsIHBvdGVudGlhbGx5IGN1c3RvbSBzaWxpY29uLCBvciBwZXJoYXBzIGEgbmljaGUgYXBwbGljYXRpb24gZm9yIGEgcGFydGljdWxhciBlbWJlZGRlZCBzeXN0ZW0uIE5vdywgSSYjMzk7bGwgc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBzb3VyY2UgZmlsZXMuIEkmIzM5O20ga2VlbiB0byBzZWUgdGhlIGFyY2hpdGVjdHVyZSwgd2hhdCBzb3J0cyBvZiBidWZmZXJzIGFyZSBiZWluZyB1c2VkLCB3aGF0IHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9va3MgbGlrZSwgYW5kLCBtb3N0IGltcG9ydGFudGx5LCBob3cgaXQmIzM5O3MgaW50ZXJmYWNpbmcgd2l0aCB0aGUgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IG51bGwsCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7cm5wZ2JlJiMzNDsKICBdCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSBvZiB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTVUtQ1NFIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gVGltZSB0byB0YWtlIGEgbG9vayBhdCB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBgbXVjc2VgIEV0aGVybmV0IGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJ1aWxkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcywgc28gSSYjMzk7bSBnb2luZyBzdHJhaWdodCB0byB0aGUgc291cmNlOiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZ2AuIFRoaXMgZmlsZSYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBmb3IgaG93IHRoaXMgZHJpdmVyIGludGVncmF0ZXMgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHZhcmlvdXMgZmVhdHVyZXMgYW5kIGZ1bmN0aW9uYWxpdGllcyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciBhbmQgaG93IHRoZXkgdGllIGludG8gdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6IHRoZSBvcHRpb25zIHRoYXQgY2FuIGJlIHNldCwgYW55IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhbmQgb3RoZXIgZHJpdmVyIGRlcGVuZGVuY2llcyB0aGF0IGl0IG1pZ2h0IGhhdmUsIGFuZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgcHJvY2Vzc29yIG9yIGRldmljZSBmYW1pbHkgZGVwZW5kZW5jaWVzLiBUaGlzIGZpbGUgd2lsbCByZWFsbHkgc2V0IHRoZSBzdGFnZSBmb3IgaG93IHRoaXMgc3BlY2lmaWMgZHJpdmVyIGJlaGF2ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWc6Njpjb25maWcgTkVUX1ZFTkRPUl9NVUNTRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtNdWNzZSBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZz0xNz1pZiBORVRfVkVORE9SX01VQ1NFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnLTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZzoxOTpjb25maWcgTUdCRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O011Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTE0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEtjb25maWcgZm9yIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgbmV0d29ya2luZyBmZWF0dXJlIGlzIGJlaW5nIGNvbnRyb2xsZWQuIE15IGd1dCB0ZWxscyBtZSBpdCYjMzk7cyBsaWtlbHkgY29uZmlndXJlZCB0aHJvdWdoIHRoZSBrZXJuZWwmIzM5O3MgS2NvbmZpZyBzeXN0ZW0uIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGlzc3VlLCBhbmQgdGhlIHJlZmVyZW5jZSB0byAmIzM0O211Y3NlJiMzNDsgYW5kICYjMzQ7cm5wZ2JlJiMzNDsgSSB0aGluayBJIHNob3VsZCBzdGFydCBieSBsb29raW5nIGZvciBhIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgZHJpdmVyIHNvdXJjZS4gSSYjMzk7bGwgY2hlY2sgdW5kZXIgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvYCBkaXJlY3RvcnksIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgc3RydWN0dXJlZCBpZiB0aGUgcGF0aHMgaGF2ZSBiZWVuIHJlb3JnYW5pemVkLiBUaGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb2YgZHJpdmVycyBhbmQgdGhlaXIgZmVhdHVyZXMuIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBzZWUgaWYgdGhlcmUmIzM5O3MgYSBjb25maWd1cmF0aW9uIG9wdGlvbiByZWxhdGVkIHRvIHRoZSBzcGVjaWZpYyBiZWhhdmlvciBJJiMzOTttIGludmVzdGlnYXRpbmcuIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTg1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTXVjc2UgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZSBmb3IgdGhlIE11Y3NlIEV0aGVybmV0IGRyaXZlci4gTXkgaW1tZWRpYXRlIGdvYWwgaXMgdG8gbG9jYXRlIHRoZSBgS2NvbmZpZ2AgZmlsZSBmb3IgdGhhdCBkcml2ZXIuIFRoYXQgc2hvdWxkIGJlIGEgc3RhbmRhcmQgbG9jYXRpb24sIHVzdWFsbHkgbmVzdGVkIHVuZGVyIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9gLiBTaW5jZSBJJiMzOTttIHNwZWNpZmljYWxseSBsb29raW5nIGZvciBNdWNzZS1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBJJiMzOTtsbCBkcmlsbCBkb3duIGludG8gdGhhdCBzdWJkaXJlY3RvcnkuIE9uY2UgSSBsb2NhdGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdgLCBJIGNhbiBzdGFydCBkaXNzZWN0aW5nIHRoZSBhdmFpbGFibGUgYnVpbGQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncy4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgY2FuIGJlIGN1c3RvbWl6ZWQsIGFuZCB3aGF0IGNvbnNpZGVyYXRpb25zIGFyZSBpbiBwbGF5IHJlZ2FyZGluZyBpdHMgaW5jbHVzaW9uIGluIGEgcGFydGljdWxhciBrZXJuZWwgYnVpbGQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNdWNzZSBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBORVRfVkVORE9SX01VQ1NFXG4gICA3Olx0XHRib29sIFwmIzM0O011Y3NlIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGZyb20gTXVjc2UoUiksIHNheSBZLlxuICAxMTpcdFxuICAxMjpcdFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJiMzOTt0IGRpcmVjdGx5IGFmZmVjdCB0aGVcbiAgMTM6XHRcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxuICAxNDpcdFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE11Y3NlKFIpIGNhcmRzLiBJZiB5b3Ugc2F5IFksIHlvdSB3aWxsXG4gIDE1Olx0XHQgIGJlIGFza2VkIGZvciB5b3VyIHNwZWNpZmljIGNhcmQgaW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbnMuXG4gIDE2Olx0XG4gIDE3Olx0aWYgTkVUX1ZFTkRPUl9NVUNTRVxuICAxODpcdFxuICAxOTpcdGNvbmZpZyBNR0JFXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtNdWNzZShSKSAxR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdGRlcGVuZHMgb24gUENJXG4gIDIyOlx0XHRoZWxwXG4gIDIzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXG4gIDI0Olx0XHQgIGFkYXB0ZXJzLlxuICAyNTpcdFxuICAyNjpcdFx0ICBNb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIgaXMgaW5cbiAgMjc6XHRcdCAgXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlLnJzdFx1MDAzZS5cbiAgMjg6XHRcbiAgMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICAzMDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBybnBnYmUuXG4gIDMxOlx0XG4gIDMyOlx0ZW5kaWYgIyBORVRfVkVORE9SX01VQ1NFXG4gIDMzOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NjMKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgYE1HQkVgLiBBIHBhdGNoIEkmIzM5O20gbG9va2luZyBhdCByZW1vdmVzIGEgTlVMTCBjaGVjayB3aXRoaW4gYHJucGdiZV9ybV9hZGFwdGVyYC4gVGhpcyBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgUENJIGRyaXZlci4gRXhjZWxsZW50ISBNeSBTeXprYWxsZXIgaW5zdGluY3RzIGtpY2sgaW4g4oCTIFBDSSBkcml2ZXJzIGFyZSBkZWZpbml0ZWx5IHdpdGhpbiB0aGUgdG9vbCYjMzk7cyB3aGVlbGhvdXNlIGFuZCBQQ0kgZnV6emluZyBpcyBzb21ldGhpbmcgSSBzaG91bGQgc2VyaW91c2x5IGNvbnNpZGVyLgoKVGhlIGNydWNpYWwgbGluayBpcyB0aGF0IGBybnBnYmVfcm1fYWRhcHRlcmAgaXMgY2FsbGVkIGZyb20gYHJucGdiZV9yZW1vdmVgLiBBaCwgcmlnaHQsIGBybnBnYmVfcmVtb3ZlYCBpcyB0aGUgc3RhbmRhcmQgUENJIHJlbW92ZSBjYWxsYmFjay4gVGhhdCBtYWtlcyB0aGlzIGludGVyZXN0aW5nLCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciYjMzk7cyByZW1vdmFsIHByb2Nlc3MuIFRoaXMgd2FycmFudHMgZGVlcGVyIGludmVzdGlnYXRpb24uCgpUaGUgY29uZmlnIHRvIGVuYWJsZSB0aGUgZnV6emluZyBpcyBgTUdCRWAsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gTm93LCB0aGUga2V5IHN5bWJvbHMgaGVyZSBhcmUgZWl0aGVyIGBybnBnYmVfcm1fYWRhcHRlcmAgb3IgcG90ZW50aWFsbHkgYHJucGdiZV9yZW1vdmVgLiBJIHNob3VsZCBmb2N1cyBteSBhdHRlbnRpb24gb24gZXhhbWluaW5nIGJvdGggZnVuY3Rpb25zIG1vcmUgY2xvc2VseSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuIExldCYjMzk7cyBkaWcgaW50byBgcm5wZ2JlX3JlbW92ZWAgYW5kIGBybnBnYmVfcm1fYWRhcHRlcmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDEwOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JucGdiZV9yZW1vdmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0yNDU9c3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjYwLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjYxOiAqIHJucGdiZV9yZW1vdmUgLSBEZXZpY2UgcmVtb3ZhbCByb3V0aW5lXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjItICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjMtICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjI2NDogKiBybnBnYmVfcmVtb3ZlIGlzIGNhbGxlZCBieSB0aGUgUENJIHN1YnN5c3RlbSB0byBhbGVydCB0aGUgZHJpdmVyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjUtICogdGhhdCBpdCBzaG91bGQgcmVsZWFzZSBhIFBDSSBkZXZpY2UuIFRoaXMgY291bGQgYmUgY2F1c2VkIGJ5IGFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjY5OnN0YXRpYyB2b2lkIHJucGdiZV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNzAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jPTMwNT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcm5wZ2JlX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0zMDgtXHQucHJvYmUgICAgPSBybnBnYmVfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzozMDk6XHQucmVtb3ZlICAgPSBybnBnYmVfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzEwLVx0LnNodXRkb3duID0gcm5wZ2JlX3NodXRkb3duLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAxMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODM2CgkJCQkJCQlvdXRwdXQ6IDk0CgkJCQkJCQl0aG91Z2h0czogMjEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgY2hhbmdlcy4gSXQgbG9va3MgbGlrZSBgcm5wZ2JlX3JtX2FkYXB0ZXJgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBybnBnYmVfcmVtb3ZlYC4gVGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYE1HQkVgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSBzZWUgYSBzcGVjaWZpYyBsaW5lIGJlaW5nIHJlbW92ZWQsIGBpZiAoIW11Y3NlKSByZXR1cm47YCwgd2hpY2ggbGVhZHMgbWUgdG8gYmVsaWV2ZSB0aGUgY29kZSBpcyBub3cgYXNzdW1pbmcgdGhhdCBgbXVjc2VgIGlzIG5vdCBudWxsLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuCgpCYXNlZCBvbiB0aGlzLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyBmdXp6aW5nIHRoaXMgYW5kIHByb3ZpZGluZyBzb21lIGtleSBpbmZvcm1hdGlvbiB0byB0aGUgZnV6emVyLiBJJiMzOTttIHRoaW5raW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS4gRm9yIGBGb2N1c1N5bWJvbHNgLCBgcm5wZ2JlX3JtX2FkYXB0ZXJgIHNlZW1zIHRvIGJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbi4gQW5kIHNpbmNlIGBNR0JFYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiwgdGhhdCB3aWxsIGdvIGluIGBFbmFibGVDb25maWdzYC4KCkJ1dCB3YWl0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIERvZXMgdGhpcyBkZXBlbmQgb24gYE5FVF9WRU5ET1JfTVVDU0VgPyBBaCwgeWVzLCBpdCBkb2VzLCBidXQgYE1HQkVgIGFjdHVhbGx5IGRlcGVuZHMgb24gaXQhIFNvLCBpZiB3ZSBzcGVjaWZ5IGBNR0JFYCwgaXQgKnNob3VsZCogaW1wbGljaXRseSBlbmFibGUgYE5FVF9WRU5ET1JfTVVDU0VgLiBIb3dldmVyLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBiZWNhdXNlIGl0JiMzOTtzIGdvb2QgcHJhY3RpY2UsIGxldCYjMzk7cyBzcGVjaWZ5IGJvdGguIEl0IG1pZ2h0IGJlIHJlZHVuZGFudCwgYnV0IGl0IGVuc3VyZXMgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBtYWtlIHN1cmUgYE5FVF9WRU5ET1JfTVVDU0VgIGlzIHNldCB0byAmIzM5O3kmIzM5OyBieSBkZWZhdWx0OyBZdXAsIGl0IGlzLiBTbywganVzdCBzZXR0aW5nIGBNR0JFYCBzaG91bGQgYmUgc3VmZmljaWVudC4KCk9rYXksIGp1c3Qgb25lIGxhc3QgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlncyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMTA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01HQkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybnBnYmVfcm1fYWRhcHRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgTlVMTCBjaGVjayBpbiB0aGUgUENJIGRldmljZSByZW1vdmFsIHBhdGggb2YgdGhlIHJucGdiZSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01HQkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtybnBnYmVfcm1fYWRhcHRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIGEgTlVMTCBjaGVjayBpbiB0aGUgUENJIGRldmljZSByZW1vdmFsIHBhdGggb2YgdGhlIHJucGdiZSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgc3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MToxMC42NzY4MTIzMzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjUxNDMxOTEzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNR0JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicm5wZ2JlX3JtX2FkYXB0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZW1vdmVzIGEgTlVMTCBjaGVjayBpbiB0aGUgUENJIGRldmljZSByZW1vdmFsIHBhdGggb2YgdGhlIHJucGdiZSBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGR1cmluZyBQQ0kgZGV2aWNlIHVucmVnaXN0cmF0aW9uLCB3aGljaCBpcyBmdXp6YWJsZSB2aWEgc3l6a2FsbGVyJ3MgUENJIGZ1enppbmcgc3VwcG9ydC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MTAuNjc2ODE5NzUzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5Mjg0MDA4MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNTUzOGFjNTJmZDExZTg3OTE2ZDJlYjg5NDE5ODZlNzVlYzQ0NWRmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDE3IDEwOjUxOjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcXG5pbmRleCA3MGEyYjAwODJiYTg2MS4uODJhM2ZiZmIzYzBhYmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xcbkBAIC0yNDksOCArMjQ5LDYgQEAgc3RhdGljIHZvaWQgcm5wZ2JlX3JtX2FkYXB0ZXIoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoIW11Y3NlKVxcbi1cXHRcXHRyZXR1cm47XFxuIFxcdG5ldGRldiA9IG11Y3NlLVxcdTAwM2VuZXRkZXY7XFxuIFxcdHVucmVnaXN0ZXJfbmV0ZGV2KG5ldGRldik7XFxuIFxcdGVyciA9IHJucGdiZV9zZW5kX25vdGlmeShodywgZmFsc2UsIG11Y3NlX2Z3X3Bvd2VydXApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MToxMS42MDYyMDYxNDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTg0OTEwNDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1HQkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJybnBnYmVfcm1fYWRhcHRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYSBOVUxMIGNoZWNrIGluIHRoZSBQQ0kgZGV2aWNlIHJlbW92YWwgcGF0aCBvZiB0aGUgcm5wZ2JlIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIFBDSSBkZXZpY2UgdW5yZWdpc3RyYXRpb24sIHdoaWNoIGlzIGZ1enphYmxlIHZpYSBzeXprYWxsZXIncyBQQ0kgZnV6emluZyBzdXBwb3J0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE1NTM4YWM1MmZkMTFlODc5MTZkMmViODk0MTk4NmU3NWVjNDQ1ZGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAxMDo1MTowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmNcbmluZGV4IDcwYTJiMDA4MmJhODYxLi44MmEzZmJmYjNjMGFiZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1xuQEAgLTI0OSw4ICsyNDksNiBAQCBzdGF0aWMgdm9pZCBybnBnYmVfcm1fYWRhcHRlcihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFtdWNzZSlcbi1cdFx0cmV0dXJuO1xuIFx0bmV0ZGV2ID0gbXVjc2UtXHUwMDNlbmV0ZGV2O1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXYobmV0ZGV2KTtcbiBcdGVyciA9IHJucGdiZV9zZW5kX25vdGlmeShodywgZmFsc2UsIG11Y3NlX2Z3X3Bvd2VydXApO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MTEuNjA2MjA4NDQzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2Njc5MTk4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byBhIFBDSSBFdGhlcm5ldCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgcmVtb3ZlcyBhIG51bGwgY2hlY2sgaW4gYHJucGdiZV9tYWluLmNgLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcm5wZ2JlX3JtX2FkYXB0ZXJgIGZ1bmN0aW9uLiBUaGUgY29kZSBoYXMgcmVtb3ZlZCB0aGUgYGlmICghbXVjc2UpIHJldHVybjtgIGxpbmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHJlYWNoYWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uLiBUaGlzIGlzIGEgUENJIGRyaXZlciwgZm9yIHRoZSBcIm11Y3NlIHJucGdiZVwiIGV0aGVybmV0LiBUaGUgcXVlc3Rpb24gaW1tZWRpYXRlbHkgYmVjb21lcywgY2FuIHRoaXMgZnVuY3Rpb24gZXZlbiAqYmUqIGhpdCwgYW5kIHVuZGVyIHdoYXQgY2lyY3Vtc3RhbmNlcz9cblxuR2l2ZW4gdGhhdCB0aGlzIGlzIGEgUENJIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBkZXZpY2UsIHRoZSB1c3VhbCBjb25jZXJuIHBvcHMgdXAgaW4gbXkgbWluZDogSXMgdGhpcyBzb21ldGhpbmcgd2UnZCBzZWUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/IFByb2JhYmx5IG5vdCwgdW5sZXNzIHdlJ3JlIGVtdWxhdGluZyB0aGUgaGFyZHdhcmUgbWV0aWN1bG91c2x5LCBvciBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIHNvbWVob3cuIFRoYXQgZ290IG1lIHRoaW5raW5nOiBob3cgYXJlIHdlIGdvaW5nIHRvIHRlc3QgdGhpcz9cblxuVGhlbiBJIHJlbWVtYmVyZWQgU3l6a2FsbGVyJ3MgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBzcGVjaWZpY2FsbHkgdGhlIGB2aGNpL3BjaWAgZnV6emluZyBmcmFtZXdvcmsuIFRoYXQncyBhIHBvc3NpYmlsaXR5LiBDYW4gU3l6a2FsbGVyIHJlYWNoIGl0PyBTeXprYWxsZXIgdXNlcyBgc3l6X3BjaV92cGNpX3NldHVwYCBhbmQgc2ltaWxhciBjYWxscy4gV2l0aCBQQ0kgZnV6emluZyBlbmFibGVkLCBpdCBtaWdodCBiZSByZWFjaGFibGUuXG5cblNvLCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcuIEl0J3MgdGltZSB0byBzZWUgd2hhdCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zIGFyZSBpbiBwbGF5IGhlcmUuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjbGVhcmVzdCBwaWN0dXJlIG9mIHdoZXRoZXIgdGhpcyBwYXRoIGNhbiBiZSBoaXQgYnkgb3VyIGZ1enppbmcgZWZmb3J0cy4gSSBuZWVkIHRvIGtub3cgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW4sIGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgaW5jcmVhc2UgaXRzIGV4cG9zdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODcyLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MTcuNDczMDAzMjI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODA0Nzk2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJybnBnYmVfcm1fYWRhcHRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0xOTc9c3RhdGljIGludCBybnBnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTIzOS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDA6ICogcm5wZ2JlX3JtX2FkYXB0ZXIgLSBSZW1vdmUgbmV0ZGV2IGZvciB0aGlzIG11Y3NlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0MS0gKiBAcGRldjogUENJIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3RcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNDItICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNDM6ICogcm5wZ2JlX3JtX2FkYXB0ZXIgcmVtb3ZlIGEgbmV0ZGV2IGZvciB0aGlzIG11Y3NlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0NC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjQ1OnN0YXRpYyB2b2lkIHJucGdiZV9ybV9hZGFwdGVyKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYz0yNjk9c3RhdGljIHZvaWQgcm5wZ2JlX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNzAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jOjI3MTpcXHRybnBnYmVfcm1fYWRhcHRlcihwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNzItXFx0cGNpX3JlbGVhc2VfbWVtX3JlZ2lvbnMocGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjE3LjcwMTA2MTc4NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MjQ1MzkxMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkZpbmRpbmcgdGhlIFJpZ2h0IEtjb25maWcqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eSBvZiBjb25maWd1cmluZyB0aGlzIGRyaXZlci4gV2hlcmUncyB0aGUgS2NvbmZpZyBmaWxlPyBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBoYXZlIHRvIG5hdmlnYXRlIHRoZSBwcm9qZWN0J3MgZGlyZWN0b3J5IHN0cnVjdHVyZSB0byBsb2NhdGUgaXQuIEl0J3MgdXN1YWxseSBuZXN0ZWQgc29tZXdoZXJlIHNwZWNpZmljIHRvIHRoZSBkcml2ZXIncyBzdWJzeXN0ZW0gb3IgZGV2aWNlIHR5cGUuIExldCdzIHN0YXJ0IHdpdGggdGhlIG1vc3QgbGlrZWx5IGxvY2F0aW9ucywgbG9va2luZyBmb3IgYSBmaWxlIG5hbWVkIHNvbWV0aGluZyBsaWtlIGBLY29uZmlnYCwgYENvbmZpZ2AsIG9yIG1heWJlIGV2ZW4gYE1ha2VmaWxlLmNvbmZpZ2AgaWYgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB1bnVzdWFsLiBPbmNlIEkgaGF2ZSB0aGUgcGF0aCwgdGhlbiBpdOKAmXMgb2ZmIHRvIGFuYWx5emUgdGhvc2UgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MjAuNDI1NjAzNDY3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjQzNjc0NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJOUEdCRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjIwLjU1MjA1MDc0NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTk5NzQ2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGRpcmVjdG9yeTpcblxuKipFeGFtaW5pbmcgdGhlIG11Y3NlIEV0aGVybmV0IERyaXZlciBEaXJlY3RvcnkqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBUaGUgZmlyc3QgdGhpbmcgSSB3YW50IHRvIGRvIGlzIG5hdmlnYXRlIHRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9gLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGlzIHNwZWNpZmljIEV0aGVybmV0IGRyaXZlcidzIGNvZGUgYmFzZS4gQ29uc2lkZXJpbmcgaXRzIGxvY2F0aW9uIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0YCBoaWVyYXJjaHksIGl0IHN0cm9uZ2x5IHN1Z2dlc3RzIHRoaXMgaXMgYSBjdXN0b20gb3Igc3BlY2lhbGl6ZWQgc29sdXRpb247IEkgZG9uJ3QgcmVjb2duaXplIFwibXVjc2VcIiBvZmYgdGhlIHRvcCBvZiBteSBoZWFkLCBzbyBpdCdzIG5vdCBhIGNvbW1vbiBzdGFuZGFyZC4gSSdtIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIHNpZ25zIG9mIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgcG90ZW50aWFsbHkgY3VzdG9tIHNpbGljb24sIG9yIHBlcmhhcHMgYSBuaWNoZSBhcHBsaWNhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGVtYmVkZGVkIHN5c3RlbS4gTm93LCBJJ2xsIHN0YXJ0IGRpZ2dpbmcgdGhyb3VnaCB0aGUgc291cmNlIGZpbGVzLiBJJ20ga2VlbiB0byBzZWUgdGhlIGFyY2hpdGVjdHVyZSwgd2hhdCBzb3J0cyBvZiBidWZmZXJzIGFyZSBiZWluZyB1c2VkLCB3aGF0IHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgbG9va3MgbGlrZSwgYW5kLCBtb3N0IGltcG9ydGFudGx5LCBob3cgaXQncyBpbnRlcmZhY2luZyB3aXRoIHRoZSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIxOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjIzLjY3MjAyODU0OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY1MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogbnVsbCxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcInJucGdiZVwiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjIzLjY3MjEwNjg4OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDM5MDI0ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5IG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE1VLUNTRSBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaW1lIHRvIHRha2UgYSBsb29rIGF0IHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGlzIGBtdWNzZWAgRXRoZXJuZXQgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLCBzbyBJJ20gZ29pbmcgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdgLiBUaGlzIGZpbGUncyB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBmb3IgaG93IHRoaXMgZHJpdmVyIGludGVncmF0ZXMgd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHZhcmlvdXMgZmVhdHVyZXMgYW5kIGZ1bmN0aW9uYWxpdGllcyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciBhbmQgaG93IHRoZXkgdGllIGludG8gdGhlIG92ZXJhbGwgYnVpbGQgcHJvY2Vzcy4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTogdGhlIG9wdGlvbnMgdGhhdCBjYW4gYmUgc2V0LCBhbnkgaGFyZHdhcmUgZGVwZW5kZW5jaWVzIGFuZCBvdGhlciBkcml2ZXIgZGVwZW5kZW5jaWVzIHRoYXQgaXQgbWlnaHQgaGF2ZSwgYW5kIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBwcm9jZXNzb3Igb3IgZGV2aWNlIGZhbWlseSBkZXBlbmRlbmNpZXMuIFRoaXMgZmlsZSB3aWxsIHJlYWxseSBzZXQgdGhlIHN0YWdlIGZvciBob3cgdGhpcyBzcGVjaWZpYyBkcml2ZXIgYmVoYXZlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ5MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MToyNy4wNzYwMTI4ODZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTg5MTk5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnOjY6Y29uZmlnIE5FVF9WRU5ET1JfTVVDU0VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9LY29uZmlnLTctXFx0Ym9vbCBcXFwiTXVjc2UgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWc9MTc9aWYgTkVUX1ZFTkRPUl9NVUNTRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2UvS2NvbmZpZzoxOTpjb25maWcgTUdCRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIk11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MjkuNDM0OTQ2NTM2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3ODY0NTY5OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIGZvciBOZXR3b3JrIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgbmV0d29ya2luZyBmZWF0dXJlIGlzIGJlaW5nIGNvbnRyb2xsZWQuIE15IGd1dCB0ZWxscyBtZSBpdCdzIGxpa2VseSBjb25maWd1cmVkIHRocm91Z2ggdGhlIGtlcm5lbCdzIEtjb25maWcgc3lzdGVtLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBpc3N1ZSwgYW5kIHRoZSByZWZlcmVuY2UgdG8gXCJtdWNzZVwiIGFuZCBcInJucGdiZVwiIEkgdGhpbmsgSSBzaG91bGQgc3RhcnQgYnkgbG9va2luZyBmb3IgYSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGRyaXZlciBzb3VyY2UuIEknbGwgY2hlY2sgdW5kZXIgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvYCBkaXJlY3RvcnksIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgc3RydWN0dXJlZCBpZiB0aGUgcGF0aHMgaGF2ZSBiZWVuIHJlb3JnYW5pemVkLiBUaGUgYEtjb25maWdgIGZpbGVzIGFyZSB1c3VhbGx5IHRoZSBiZXN0IHBsYWNlIHRvIGZpbmQgdGhlIG9wdGlvbnMgdGhhdCBjb250cm9sIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb2YgZHJpdmVycyBhbmQgdGhlaXIgZmVhdHVyZXMuIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBzZWUgaWYgdGhlcmUncyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmljIGJlaGF2aW9yIEknbSBpbnZlc3RpZ2F0aW5nLiBUaGlzIHNob3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MTozMi4yMjE0MDY2OTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNTYyNTI0NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6MzIuOTQ3MDQxMTgyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTE4MjYyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIE11Y3NlIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlIGZvciB0aGUgTXVjc2UgRXRoZXJuZXQgZHJpdmVyLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBsb2NhdGUgdGhlIGBLY29uZmlnYCBmaWxlIGZvciB0aGF0IGRyaXZlci4gVGhhdCBzaG91bGQgYmUgYSBzdGFuZGFyZCBsb2NhdGlvbiwgdXN1YWxseSBuZXN0ZWQgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2AuIFNpbmNlIEknbSBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgTXVjc2UtcmVsYXRlZCBjb25maWd1cmF0aW9ucywgSSdsbCBkcmlsbCBkb3duIGludG8gdGhhdCBzdWJkaXJlY3RvcnkuIE9uY2UgSSBsb2NhdGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdgLCBJIGNhbiBzdGFydCBkaXNzZWN0aW5nIHRoZSBhdmFpbGFibGUgYnVpbGQgb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncy4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGNsZWFyZXN0IHBpY3R1cmUgb2YgaG93IHRoZSBkcml2ZXIgY2FuIGJlIGN1c3RvbWl6ZWQsIGFuZCB3aGF0IGNvbnNpZGVyYXRpb25zIGFyZSBpbiBwbGF5IHJlZ2FyZGluZyBpdHMgaW5jbHVzaW9uIGluIGEgcGFydGljdWxhciBrZXJuZWwgYnVpbGQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxODUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MTozNS45OTg4Njk4NjdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzNjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE11Y3NlIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTVVDU0VcXG4gICA3OlxcdFxcdGJvb2wgXFxcIk11Y3NlIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZWZhdWx0IHlcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBmcm9tIE11Y3NlKFIpLCBzYXkgWS5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIGRvZXNuJ3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxcbiAgMTM6XFx0XFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXFxuICAxNDpcXHRcXHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTXVjc2UoUikgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGxcXG4gIDE1OlxcdFxcdCAgYmUgYXNrZWQgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX1ZFTkRPUl9NVUNTRVxcbiAgMTg6XFx0XFxuICAxOTpcXHRjb25maWcgTUdCRVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIk11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE11Y3NlKFIpIDFHYkUgUENJIEV4cHJlc3MgZmFtaWx5IG9mXFxuICAyNDpcXHRcXHQgIGFkYXB0ZXJzLlxcbiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIE1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgdGhlIGRyaXZlciBpcyBpblxcbiAgMjc6XFx0XFx0ICBcXHUwMDNjZmlsZTpEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlLnJzdFxcdTAwM2UuXFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMzA6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBybnBnYmUuXFxuICAzMTpcXHRcXG4gIDMyOlxcdGVuZGlmICMgTkVUX1ZFTkRPUl9NVUNTRVxcbiAgMzM6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjM1Ljk5ODk3NTgxN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTIyMDM2Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgYE1HQkVgLiBBIHBhdGNoIEknbSBsb29raW5nIGF0IHJlbW92ZXMgYSBOVUxMIGNoZWNrIHdpdGhpbiBgcm5wZ2JlX3JtX2FkYXB0ZXJgLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLiBFeGNlbGxlbnQhIE15IFN5emthbGxlciBpbnN0aW5jdHMga2ljayBpbiDigJMgUENJIGRyaXZlcnMgYXJlIGRlZmluaXRlbHkgd2l0aGluIHRoZSB0b29sJ3Mgd2hlZWxob3VzZSBhbmQgUENJIGZ1enppbmcgaXMgc29tZXRoaW5nIEkgc2hvdWxkIHNlcmlvdXNseSBjb25zaWRlci5cblxuVGhlIGNydWNpYWwgbGluayBpcyB0aGF0IGBybnBnYmVfcm1fYWRhcHRlcmAgaXMgY2FsbGVkIGZyb20gYHJucGdiZV9yZW1vdmVgLiBBaCwgcmlnaHQsIGBybnBnYmVfcmVtb3ZlYCBpcyB0aGUgc3RhbmRhcmQgUENJIHJlbW92ZSBjYWxsYmFjay4gVGhhdCBtYWtlcyB0aGlzIGludGVyZXN0aW5nLCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlcidzIHJlbW92YWwgcHJvY2Vzcy4gVGhpcyB3YXJyYW50cyBkZWVwZXIgaW52ZXN0aWdhdGlvbi5cblxuVGhlIGNvbmZpZyB0byBlbmFibGUgdGhlIGZ1enppbmcgaXMgYE1HQkVgLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIE5vdywgdGhlIGtleSBzeW1ib2xzIGhlcmUgYXJlIGVpdGhlciBgcm5wZ2JlX3JtX2FkYXB0ZXJgIG9yIHBvdGVudGlhbGx5IGBybnBnYmVfcmVtb3ZlYC4gSSBzaG91bGQgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGV4YW1pbmluZyBib3RoIGZ1bmN0aW9ucyBtb3JlIGNsb3NlbHkgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBMZXQncyBkaWcgaW50byBgcm5wZ2JlX3JlbW92ZWAgYW5kIGBybnBnYmVfcm1fYWRhcHRlcmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NjMsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QxMDo1MTo0MC41MjEwMTU5MTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3MjQ0NzAxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJybnBnYmVfcmVtb3ZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jPTI0NT1zdGF0aWMgdm9pZCBybnBnYmVfcm1fYWRhcHRlcihzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI2MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYzoyNjE6ICogcm5wZ2JlX3JlbW92ZSAtIERldmljZSByZW1vdmFsIHJvdXRpbmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjItICogQHBkZXY6IFBDSSBkZXZpY2UgaW5mb3JtYXRpb24gc3RydWN0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjYzLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjY0OiAqIHJucGdiZV9yZW1vdmUgaXMgY2FsbGVkIGJ5IHRoZSBQQ0kgc3Vic3lzdGVtIHRvIGFsZXJ0IHRoZSBkcml2ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tdWNzZS9ybnBnYmUvcm5wZ2JlX21haW4uYy0yNjUtICogdGhhdCBpdCBzaG91bGQgcmVsZWFzZSBhIFBDSSBkZXZpY2UuIFRoaXMgY291bGQgYmUgY2F1c2VkIGJ5IGFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTI2OC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MjY5OnN0YXRpYyB2b2lkIHJucGdiZV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMjcwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jPTMwNT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgcm5wZ2JlX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L211Y3NlL3JucGdiZS9ybnBnYmVfbWFpbi5jLTMwOC1cXHQucHJvYmUgICAgPSBybnBnYmVfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmM6MzA5OlxcdC5yZW1vdmUgICA9IHJucGdiZV9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXVjc2Uvcm5wZ2JlL3JucGdiZV9tYWluLmMtMzEwLVxcdC5zaHV0ZG93biA9IHJucGdiZV9zaHV0ZG93bixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMTA6NTE6NDEuMjkzNDY5MDg1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MTcxNDc2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVjZW50IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgY2hhbmdlcy4gSXQgbG9va3MgbGlrZSBgcm5wZ2JlX3JtX2FkYXB0ZXJgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBybnBnYmVfcmVtb3ZlYC4gVGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYE1HQkVgLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gSSBzZWUgYSBzcGVjaWZpYyBsaW5lIGJlaW5nIHJlbW92ZWQsIGBpZiAoIW11Y3NlKSByZXR1cm47YCwgd2hpY2ggbGVhZHMgbWUgdG8gYmVsaWV2ZSB0aGUgY29kZSBpcyBub3cgYXNzdW1pbmcgdGhhdCBgbXVjc2VgIGlzIG5vdCBudWxsLiBUaGF0J3MgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZS5cblxuQmFzZWQgb24gdGhpcywgSSdtIGxlYW5pbmcgdG93YXJkcyBmdXp6aW5nIHRoaXMgYW5kIHByb3ZpZGluZyBzb21lIGtleSBpbmZvcm1hdGlvbiB0byB0aGUgZnV6emVyLiBJJ20gdGhpbmtpbmcgYFdvcnRoRnV6emluZz10cnVlYCBpcyB0aGUgcmlnaHQgY2FsbCBoZXJlLiBGb3IgYEZvY3VzU3ltYm9sc2AsIGBybnBnYmVfcm1fYWRhcHRlcmAgc2VlbXMgdG8gYmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uLiBBbmQgc2luY2UgYE1HQkVgIGlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uLCB0aGF0IHdpbGwgZ28gaW4gYEVuYWJsZUNvbmZpZ3NgLlxuXG5CdXQgd2FpdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIERvZXMgdGhpcyBkZXBlbmQgb24gYE5FVF9WRU5ET1JfTVVDU0VgPyBBaCwgeWVzLCBpdCBkb2VzLCBidXQgYE1HQkVgIGFjdHVhbGx5IGRlcGVuZHMgb24gaXQhIFNvLCBpZiB3ZSBzcGVjaWZ5IGBNR0JFYCwgaXQgKnNob3VsZCogaW1wbGljaXRseSBlbmFibGUgYE5FVF9WRU5ET1JfTVVDU0VgLiBIb3dldmVyLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBiZWNhdXNlIGl0J3MgZ29vZCBwcmFjdGljZSwgbGV0J3Mgc3BlY2lmeSBib3RoLiBJdCBtaWdodCBiZSByZWR1bmRhbnQsIGJ1dCBpdCBlbnN1cmVzIHdlJ3JlIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMuIExldCdzIG1ha2Ugc3VyZSBgTkVUX1ZFTkRPUl9NVUNTRWAgaXMgc2V0IHRvICd5JyBieSBkZWZhdWx0OyBZdXAsIGl0IGlzLiBTbywganVzdCBzZXR0aW5nIGBNR0JFYCBzaG91bGQgYmUgc3VmZmljaWVudC5cblxuT2theSwganVzdCBvbmUgbGFzdCBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWdzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODM2LCJPdXRwdXRUb2tlbnMiOjk0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDEwOjUxOjQ3LjAxMDYyMDEyNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDQ4ODEyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUdCRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJucGdiZV9ybV9hZGFwdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIE5VTEwgY2hlY2sgaW4gdGhlIFBDSSBkZXZpY2UgcmVtb3ZhbCBwYXRoIG9mIHRoZSBybnBnYmUgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgd2hpY2ggaXMgZnV6emFibGUgdmlhIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUdCRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJucGdiZV9ybV9hZGFwdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhIE5VTEwgY2hlY2sgaW4gdGhlIFBDSSBkZXZpY2UgcmVtb3ZhbCBwYXRoIG9mIHRoZSBybnBnYmUgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgUENJIGRldmljZSB1bnJlZ2lzdHJhdGlvbiwgd2hpY2ggaXMgZnV6emFibGUgdmlhIHN5emthbGxlcidzIFBDSSBmdXp6aW5nIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqr5hk[1] Phase: Succeeded StartedAt: 2026-07-17 10:51:59 +0000 UTC FinishedAt: 2026-07-17 10:51:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 10:51:59 +0000 UTC FinishedAt: 2026-07-17 10:51:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2] Phase: Succeeded StartedAt: 2026-07-17 10:51:59 +0000 UTC FinishedAt: 2026-07-17 13:03:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 10:51:59 +0000 UTC FinishedAt: 2026-07-17 13:03:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 10:51:59 +0000 UTC FinishedAt: 2026-07-17 10:52:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 10:51:59 +0000 UTC FinishedAt: 2026-07-17 10:52:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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-workflowqr5hk/series-workflowqr5hk-convert-artifact-119009588/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 10:52:10 +0000 UTC FinishedAt: 2026-07-17 11:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 10:52:10 +0000 UTC FinishedAt: 2026-07-17 11:42:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a3ee122e-aeac-4c24-8b37-6a855e8eae04,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-workflowqr5hk/series-workflowqr5hk-convert-artifact-119009588/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": "3f94873b-068a-4e88-bad1-a57ce3c5f9b4", "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-workflowqr5hk/series-workflowqr5hk-build-action-1669048114/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 10:52:10 +0000 UTC FinishedAt: 2026-07-17 11:42:34 +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:*a3ee122e-aeac-4c24-8b37-6a855e8eae04,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-workflowqr5hk/series-workflowqr5hk-convert-artifact-119009588/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": "3f94873b-068a-4e88-bad1-a57ce3c5f9b4", "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-workflowqr5hk/series-workflowqr5hk-build-action-1669048114/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:42:46 +0000 UTC FinishedAt: 2026-07-17 11:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:42:46 +0000 UTC FinishedAt: 2026-07-17 11:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:42:46 +0000 UTC FinishedAt: 2026-07-17 11:42:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:42:46 +0000 UTC FinishedAt: 2026-07-17 11:42:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-workflowqr5hk/series-workflowqr5hk-convert-artifact-3260469491/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:42:56 +0000 UTC FinishedAt: 2026-07-17 11:44:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:42:56 +0000 UTC FinishedAt: 2026-07-17 11:44:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3f94873b-068a-4e88-bad1-a57ce3c5f9b4,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-workflowqr5hk/series-workflowqr5hk-build-action-1669048114/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-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:44:55 +0000 UTC FinishedAt: 2026-07-17 11:44:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:44:55 +0000 UTC FinishedAt: 2026-07-17 11:44:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:44:55 +0000 UTC FinishedAt: 2026-07-17 12:11:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:44:55 +0000 UTC FinishedAt: 2026-07-17 12:11:26 +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:*a3ee122e-aeac-4c24-8b37-6a855e8eae04,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-workflowqr5hk/series-workflowqr5hk-convert-artifact-3260469491/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": "71339f36-62bd-4e9f-b852-1fa0008f4d3d", "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-workflowqr5hk/series-workflowqr5hk-build-action-662538407/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 11:44:55 +0000 UTC FinishedAt: 2026-07-17 12:11:16 +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:*a3ee122e-aeac-4c24-8b37-6a855e8eae04,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-workflowqr5hk/series-workflowqr5hk-convert-artifact-3260469491/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": "71339f36-62bd-4e9f-b852-1fa0008f4d3d", "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-workflowqr5hk/series-workflowqr5hk-build-action-662538407/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:11:26 +0000 UTC FinishedAt: 2026-07-17 12:11:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:11:26 +0000 UTC FinishedAt: 2026-07-17 12:11:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:11:26 +0000 UTC FinishedAt: 2026-07-17 12:13:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:11:26 +0000 UTC FinishedAt: 2026-07-17 12:13:26 +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:*71339f36-62bd-4e9f-b852-1fa0008f4d3d,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-workflowqr5hk/series-workflowqr5hk-build-action-662538407/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-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:13:36 +0000 UTC FinishedAt: 2026-07-17 13:03:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:13:36 +0000 UTC FinishedAt: 2026-07-17 13:03:07 +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":["rnpgbe_rm_adapter"],"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:*3f94873b-068a-4e88-bad1-a57ce3c5f9b4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*71339f36-62bd-4e9f-b852-1fa0008f4d3d,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-workflowqr5hk/series-workflowqr5hk-build-action-1669048114/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-workflowqr5hk/series-workflowqr5hk-build-action-662538407/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:13:36 +0000 UTC FinishedAt: 2026-07-17 12:13:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:13:36 +0000 UTC FinishedAt: 2026-07-17 12:13:40 +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":["rnpgbe_rm_adapter"],"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-workflowqr5hk/series-workflowqr5hk-convert-artifact-3919281644/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:13:36 +0000 UTC FinishedAt: 2026-07-17 12:13:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:13:36 +0000 UTC FinishedAt: 2026-07-17 12:13:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:13:36 +0000 UTC FinishedAt: 2026-07-17 12:13:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:13:46 +0000 UTC FinishedAt: 2026-07-17 13:03:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqr5hk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"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":["rnpgbe_rm_adapter"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MGBE"],"series_id":"496c2746-2e0f-4fb4-b672-d68dbe9a47be","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-07-17 12:13:46 +0000 UTC FinishedAt: 2026-07-17 13:02:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3f94873b-068a-4e88-bad1-a57ce3c5f9b4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*71339f36-62bd-4e9f-b852-1fa0008f4d3d,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-workflowqr5hk/series-workflowqr5hk-build-action-1669048114/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-workflowqr5hk/series-workflowqr5hk-build-action-662538407/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-workflowqr5hk/series-workflowqr5hk-convert-artifact-3919281644/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,}