Name: series-workflowh8lpm Phase: Succeeded StartedAt: 2026-06-26 02:18:48 +0000 UTC FinishedAt: 2026-06-26 04:13:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[0] Phase: Succeeded StartedAt: 2026-06-26 02:18:48 +0000 UTC FinishedAt: 2026-06-26 02:27:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 02:18:48 +0000 UTC FinishedAt: 2026-06-26 02:27:03 +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": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VDPA_SIM", "VDPA_SIM_NET", "VDPA_SIM_BLOCK" ], "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": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VDPA_SIM", "VDPA_SIM_NET", "VDPA_SIM_BLOCK" ], "series_id": "30585f36-e158-4664-8713-39e560c4b3bc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vdpasim_do_reset", "vdpasim_dma_unmap" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZEUEFfU0lNJiMzNDssCiAgICAmIzM0O1ZEUEFfU0lNX05FVCYjMzQ7LAogICAgJiMzNDtWRFBBX1NJTV9CTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZkcGFzaW1fZG9fcmVzZXQmIzM0OywKICAgICYjMzQ7dmRwYXNpbV9kbWFfdW5tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2ZHBhc2ltX2RtYV91bm1hcCBieSBtb3ZpbmcgdGhlIGlvbW11X2xvY2sgYWNxdWlzaXRpb24gYmVmb3JlIGFjY2Vzc2luZyBpb21tdV9wdCwgYW5kIHJlc2V0cyBwZW5kaW5nX2tpY2sgaW4gdmRwYXNpbV9kb19yZXNldC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgdkRQQSBzaW11bGF0b3IgY29yZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoyNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM3NGU2ODVkMmE0NTM2OTFlNTkyZDgzMWJiNGZmZWQyODUzNjkwMWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAwMjoyNjoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYyBiL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jXG5pbmRleCA4Y2IxY2MyZWExMzkxYS4uZDkxNDNiZDljYTE1NTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmNcbkBAIC0xNjEsNiAmIzQzOzE2MSw3IEBAIHN0YXRpYyB2b2lkIHZkcGFzaW1fZG9fcmVzZXQoc3RydWN0IHZkcGFzaW0gKnZkcGFzaW0sIHUzMiBmbGFncylcbiBcdH1cbiBcbiBcdHZkcGFzaW0tXHUwMDNlcnVubmluZyA9IGZhbHNlO1xuJiM0MztcdHZkcGFzaW0tXHUwMDNlcGVuZGluZ19raWNrID0gZmFsc2U7XG4gXHRzcGluX3VubG9jayhcdTAwMjZ2ZHBhc2ltLVx1MDAzZWlvbW11X2xvY2spO1xuIFxuIFx0dmRwYXNpbS1cdTAwM2VmZWF0dXJlcyA9IDA7XG5AQCAtNzI1LDEyICYjNDM7NzI2LDExIEBAIHN0YXRpYyBpbnQgdmRwYXNpbV9kbWFfdW5tYXAoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1bnNpZ25lZCBpbnQgYXNpZCxcbiBcdGlmIChhc2lkIFx1MDAzZT0gdmRwYXNpbS1cdTAwM2VkZXZfYXR0ci5uYXMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdHNwaW5fbG9jayhcdTAwMjZ2ZHBhc2ltLVx1MDAzZWlvbW11X2xvY2spO1xuIFx0aWYgKHZkcGFzaW0tXHUwMDNlaW9tbXVfcHRbYXNpZF0pIHtcbiBcdFx0dmhvc3RfaW90bGJfcmVzZXQoXHUwMDI2dmRwYXNpbS1cdTAwM2Vpb21tdVthc2lkXSk7XG4gXHRcdHZkcGFzaW0tXHUwMDNlaW9tbXVfcHRbYXNpZF0gPSBmYWxzZTtcbiBcdH1cbi1cbi1cdHNwaW5fbG9jayhcdTAwMjZ2ZHBhc2ltLVx1MDAzZWlvbW11X2xvY2spO1xuIFx0dmhvc3RfaW90bGJfZGVsX3JhbmdlKFx1MDAyNnZkcGFzaW0tXHUwMDNlaW9tbXVbYXNpZF0sIGlvdmEsIGlvdmEgJiM0Mzsgc2l6ZSAtIDEpO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2dmRwYXNpbS1cdTAwM2Vpb21tdV9sb2NrKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWRFBBX1NJTSYjMzQ7LAogICAgJiMzNDtWRFBBX1NJTV9ORVQmIzM0OywKICAgICYjMzQ7VkRQQV9TSU1fQkxPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZHBhc2ltX2RvX3Jlc2V0JiMzNDssCiAgICAmIzM0O3ZkcGFzaW1fZG1hX3VubWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdmRwYXNpbV9kbWFfdW5tYXAgYnkgbW92aW5nIHRoZSBpb21tdV9sb2NrIGFjcXVpc2l0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgaW9tbXVfcHQsIGFuZCByZXNldHMgcGVuZGluZ19raWNrIGluIHZkcGFzaW1fZG9fcmVzZXQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIHZEUEEgc2ltdWxhdG9yIGNvcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM3NGU2ODVkMmE0NTM2OTFlNTkyZDgzMWJiNGZmZWQyODUzNjkwMWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAwMjoyNjoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jIGIvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMKaW5kZXggOGNiMWNjMmVhMTM5MWEuLmQ5MTQzYmQ5Y2ExNTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYwpAQCAtMTYxLDYgJiM0MzsxNjEsNyBAQCBzdGF0aWMgdm9pZCB2ZHBhc2ltX2RvX3Jlc2V0KHN0cnVjdCB2ZHBhc2ltICp2ZHBhc2ltLCB1MzIgZmxhZ3MpCiAJfQogCiAJdmRwYXNpbS0mZ3Q7cnVubmluZyA9IGZhbHNlOwomIzQzOwl2ZHBhc2ltLSZndDtwZW5kaW5nX2tpY2sgPSBmYWxzZTsKIAlzcGluX3VubG9jaygmYW1wO3ZkcGFzaW0tJmd0O2lvbW11X2xvY2spOwogCiAJdmRwYXNpbS0mZ3Q7ZmVhdHVyZXMgPSAwOwpAQCAtNzI1LDEyICYjNDM7NzI2LDExIEBAIHN0YXRpYyBpbnQgdmRwYXNpbV9kbWFfdW5tYXAoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1bnNpZ25lZCBpbnQgYXNpZCwKIAlpZiAoYXNpZCAmZ3Q7PSB2ZHBhc2ltLSZndDtkZXZfYXR0ci5uYXMpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CXNwaW5fbG9jaygmYW1wO3ZkcGFzaW0tJmd0O2lvbW11X2xvY2spOwogCWlmICh2ZHBhc2ltLSZndDtpb21tdV9wdFthc2lkXSkgewogCQl2aG9zdF9pb3RsYl9yZXNldCgmYW1wO3ZkcGFzaW0tJmd0O2lvbW11W2FzaWRdKTsKIAkJdmRwYXNpbS0mZ3Q7aW9tbXVfcHRbYXNpZF0gPSBmYWxzZTsKIAl9Ci0KLQlzcGluX2xvY2soJmFtcDt2ZHBhc2ltLSZndDtpb21tdV9sb2NrKTsKIAl2aG9zdF9pb3RsYl9kZWxfcmFuZ2UoJmFtcDt2ZHBhc2ltLSZndDtpb21tdVthc2lkXSwgaW92YSwgaW92YSAmIzQzOyBzaXplIC0gMSk7CiAJc3Bpbl91bmxvY2soJmFtcDt2ZHBhc2ltLSZndDtpb21tdV9sb2NrKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDYzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVkRQQSBTaW11bGF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmNgLiBUaGUgY29yZSBjaGFuZ2VzIHNlZW0gc3RyYWlnaHRmb3J3YXJkLCBidXQgbGV0JiMzOTtzIGJyZWFrIHRoZW0gZG93biBhbmQgc2VlIGlmIHRoZXkgbWFrZSBjb21wbGV0ZSBzZW5zZSB3aXRoaW4gdGhlIGxhcmdlciBjb250ZXh0IG9mIHRoZSBWRFBBIHNpbXVsYXRpb24gZW52aXJvbm1lbnQuCgpGaXJzdCwgdGhpcyBhZGRpdGlvbiBvZiBgdmRwYXNpbS0mZ3Q7cGVuZGluZ19raWNrID0gZmFsc2U7YCB3aXRoaW4gYHZkcGFzaW1fZG9fcmVzZXRgIGlzIGludGVyZXN0aW5nLiBSZXNldCBvcGVyYXRpb25zIGFyZSBhbHdheXMgcG90ZW50aWFsIHNvdXJjZXMgb2Ygc3VidGxlIGJ1Z3MsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gVGhlIGBwZW5kaW5nX2tpY2tgIGZsYWcgKm11c3QqIHJlbGF0ZSB0byBzb21lIGZvcm0gb2YgaW50ZXJydXB0IG9yIGV2ZW50IGhhbmRsaW5nIGR1cmluZyB0aGUgcmVzZXQgcHJvY2Vzcy4gV2hhdCYjMzk7cyB0aGUgc3RhdGUgbWFjaGluZSBhc3NvY2lhdGVkIHdpdGggYSBWRFBBIHJlc2V0PyBJcyB0aGlzIGVuc3VyaW5nIHRoYXQgYSBwZW5kaW5nIGtpY2sgaXMgY2xlYXJlZCBiZWZvcmUgYSBuZXcgcmVzZXQgY3ljbGUgYmVnaW5zPyBXZSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgcHJldmVudHMgYW55IHNvcnQgb2Ygc3B1cmlvdXMgaW50ZXJydXB0cyBvciByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvcnJlY3QgZGV2aWNlIHN0YXRlLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsaW5nIGNvbnRleHQgb2YgYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBzZWUgaG93IGBwZW5kaW5nX2tpY2tgIGlzIHVzZWQgZWxzZXdoZXJlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJhbWlmaWNhdGlvbnMuCgpOZXh0LCB0aGUgcmVsb2NhdGlvbiBvZiBgc3Bpbl9sb2NrKCZhbXA7dmRwYXNpbS0mZ3Q7aW9tbXVfbG9jayk7YCBiZWZvcmUgdGhlIGNvbmRpdGlvbmFsIGBpZiAodmRwYXNpbS0mZ3Q7aW9tbXVfcHRbYXNpZF0pYCB3aXRoaW4gYHZkcGFzaW1fZG1hX3VubWFwYCBjYXRjaGVzIG15IGV5ZS4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gdGhlIGxvY2tpbmcgc3RyYXRlZ3kgYXJvdW5kIHRoZSBJT01NVSBwYWdlIHRhYmxlIGFjY2Vzcy4gV2h5IHRoZSBjaGFuZ2U/IElzIHRoaXMgdG8gcHJvdmlkZSBmaW5lci1ncmFpbmVkIGxvY2tpbmc/IEFyZSB3ZSB3b3JyaWVkIGFib3V0IGNvbnRlbnRpb24sIG9yIHBlcmhhcHMgZW5zdXJpbmcgdGhhdCBgaW9tbXVfcHRgIGlzIGNvbnNpc3RlbnQgYXQgYWxsIHRpbWVzIHdoZW4gZG9pbmcgSU9NTVUgdW5tYXBwaW5nPyBXZSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgb24gcGVyZm9ybWFuY2UgYW5kIHdoZXRoZXIgaXQgaXMgYSBwb3RlbnRpYWwgY2F1c2Ugb2YgZGVhZGxvY2sgYW5kIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IGNoYW5nZSwgYW5kIEkgbmVlZCB0byByZXZpZXcgdGhlIGNvZGUgcGF0aCBjYXJlZnVsbHkuCgpCZWZvcmUgZGl2aW5nIGRlZXAsIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmbGFncyBpbiB0aGUga2VybmVsIGNvbmZpZyBmb3IgYGRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBWRFBBIHNpbXVsYXRpb24gZHJpdmVyIGlzIGFjdHVhbGx5IGVuYWJsZWQgd2l0aCB0aGUgbmVjZXNzYXJ5IGZlYXR1cmVzLCBhbmQgdG8gdW5kZXJzdGFuZCB3aGljaCBjb25maWd1cmF0aW9ucyBjb3VsZCBpbmZsdWVuY2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBjaGFuZ2VzIGJlaW5nIHByb3Bvc2VkIGhlcmUuIEFyZSB0aGVzZSBjaGFuZ2VzIGNvbmRpdGlvbmFsIG9uIHNwZWNpZmljIHNpbXVsYXRpb24gZmVhdHVyZXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnM/IEtub3dpbmcgdGhhdCB3aWxsIHByb3ZpZGUgdmFsdWFibGUgY29udGV4dCBmb3IgYSBjb21wcmVoZW5zaXZlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZkcGFfc2ltLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS92ZHBhX3NpbS9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS9NYWtlZmlsZToyOm9iai0kKENPTkZJR19WRFBBX1NJTSkgJiM0Mzs9IHZkcGFfc2ltLm9cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS9NYWtlZmlsZS0zLW9iai0kKENPTkZJR19WRFBBX1NJTV9ORVQpICYjNDM7PSB2ZHBhX3NpbV9uZXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgVkRQQV9TSU1gIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGBWRFBBX1NJTWAgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRocyBvZiBrZXkgZnVuY3Rpb25zIHdpdGhpbiB0aGlzIHNpbXVsYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGJlaW5nIG1hbmFnZWQuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIHJlc2V0IGFuZCBETUEgdW5tYXAgb3BlcmF0aW9ucy4gTXkgbGluZSBvZiBxdWVzdGlvbmluZyBnb2VzIGxpa2UgdGhpczogQ2FuIEkgcmVhY2ggYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBgdmRwYXNpbV9kbWFfdW5tYXBgPwoKSSBrbm93IGB2ZHBhc2ltX2RvX3Jlc2V0YCBpcyBsaWtlbHkgY2FsbGVkIGJ5IHNvbWV0aGluZyBsaWtlIGB2ZHBhc2ltX3Jlc2V0YCwgb3IgYSB2ZXJ5IHNpbWlsYXIgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHJlc2V0IGZ1bmN0aW9uYWxpdHkuIFRoZSBjb2RlIHdvdWxkIGJlIHN0cnVjdHVyZWQgaW4gc3VjaCBhIHdheSB0aGF0IGl0IG1ha2VzIHNlbnNlIGZvciBhIHJlc2V0IHRvIHRyaWdnZXIgdGhpcyBhY3Rpb24uIEl0JiMzOTtzIGEgdHlwaWNhbCBhcHByb2FjaCwgYW5kIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBjb25maXJtIHRoaXMgaW4gdGhlIGNvZGViYXNlLgoKVGhlbiwgcmVnYXJkaW5nIGB2ZHBhc2ltX2RtYV91bm1hcGAsIEkgcmVjYWxsIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGB2ZHBhX2NvbmZpZ19vcHNgIGNhbGxiYWNrLiBUaGlzIGNhbGxiYWNrIHN0cnVjdHVyZSBhbGxvd3MgZm9yIHNwZWNpZmljIG9wZXJhdGlvbnMsIGFuZCBpdCBtZWFucyBgdmRwYXNpbV9kbWFfdW5tYXBgIGlzIGxpa2VseSBob29rZWQgaW50byB0aGUgc3lzdGVtIGF0IGEgdmVyeSBkZWZpbmVkIGludGVyZmFjZS4gU28sIEkgaGF2ZSB0byBpbnNwZWN0IHRoZSBicm9hZGVyIGRlc2lnbiBzdXJyb3VuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcGVyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZkcGFzaW1fZG9fcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTEyNz1zdGF0aWMgdm9pZCB2ZHBhc2ltX3ZxX3Jlc2V0KHN0cnVjdCB2ZHBhc2ltICp2ZHBhc2ltLFxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTE0MS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjE0MjpzdGF0aWMgdm9pZCB2ZHBhc2ltX2RvX3Jlc2V0KHN0cnVjdCB2ZHBhc2ltICp2ZHBhc2ltLCB1MzIgZmxhZ3MpXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy0xNDMte1xuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTUwMD1zdGF0aWMgaW50IHZkcGFzaW1fY29tcGF0X3Jlc2V0KHN0cnVjdCB2ZHBhX2RldmljZSAqdmRwYSwgdTMyIGZsYWdzKVxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTUwNS1cdHZkcGFzaW0tXHUwMDNlc3RhdHVzID0gMDtcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjUwNjpcdHZkcGFzaW1fZG9fcmVzZXQodmRwYXNpbSwgZmxhZ3MpO1xuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNTA3LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZkcGFzaW0tXHUwMDNlbXV0ZXgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MDgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgdmRwYXNpbV9kbWFfdW5tYXBgKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYHZkcGFzaW1fZG1hX3VubWFwYC4gSSYjMzk7bSBzdGFydGluZyBoZXJlIGJlY2F1c2UuLi4gd2VsbCwgKndoeSogYXJlIHdlIGxvb2tpbmcgYXQgaXQ/IFdoYXQmIzM5O3MgdGhlIGNvbnRleHQ/IElzIHRoaXMgcGFydCBvZiBhIGRlYnVnZ2luZyBzZXNzaW9uLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3IgcGVyaGFwcyBhIHNlY3VyaXR5IHJldmlldz8gS25vd2luZyB0aGUgJiMzNDt3aHkmIzM0OyB3aWxsIHNpZ25pZmljYW50bHkgaW5mbHVlbmNlIGhvdyBkZWVwbHkgSSBuZWVkIHRvIGdvLgoKRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIG9mIHRoZSB0eXBpY2FsIHJlc3BvbnNpYmlsaXRpZXMgb2YgYSBETUEgdW5tYXAgZnVuY3Rpb24uIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWlubHkgcmVzcG9uc2libGUgZm9yIGNsZWFuaW5nIHVwIHRoZSBETUEgbWFwcGluZyBzZXR1cCBpbml0aWF0ZWQgYnkgYSBwcmV2aW91cyBgbWFwYCBjYWxsLiBUaGF0IG1lYW5zIGVuc3VyaW5nIHRoYXQgdGhlIHBoeXNpY2FsIGFkZHJlc3NlcyB1c2VkIGJ5IHRoZSBETUEgZW5naW5lIGFyZSBubyBsb25nZXIgYWNjZXNzaWJsZSB0byB0aGUgQ1BVIChvciBhdCBsZWFzdCwgdGhhdCB0aGUgQ1BVIGlzIG5vdGlmaWVkIGFuZCBhcHByb3ByaWF0ZWx5IHN5bmNocm9uaXplZCByZWdhcmRpbmcgdGhlIGNhY2hlIGNvaGVyZW5jeSBpbXBsaWNhdGlvbnMpLgoKSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBiYXNpYyBzdHJ1Y3R1cmUuIElzIGl0IGhhbmRsaW5nIHNjYXR0ZXItZ2F0aGVyIGxpc3RzPyBXaGF0IGtpbmQgb2YgZXJyb3IgY2hlY2tpbmcgaXMgaW1wbGVtZW50ZWQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyByYWNlIGNvbmRpdGlvbnMgdGhhdCBqdW1wIG91dD8gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqU3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM6KiogSXMgaXQgdXNpbmcgc3BpbmxvY2tzLCBtdXRleGVzLCBvciBhdG9taWMgb3BlcmF0aW9ucz8gSG93IHJvYnVzdCBpcyB0aGUgbG9ja2luZyBzY2hlbWUgaW4gdGhlIGNvbnRleHQgb2YgY29uY3VycmVudCBhY2Nlc3Mgb3IgaW50ZXJydXB0cz8KKiAgICoqQ2FjaGUgaW52YWxpZGF0aW9uL2ZsdXNoaW5nOioqIElzIGNhY2hlIGNvaGVyZW5jeSBiZWluZyBwcm9wZXJseSBtYW5hZ2VkPyBBcmUgdGhlIG5lY2Vzc2FyeSBjYWNoZSBvcGVyYXRpb25zIChpbnZhbGlkYXRpb24sIGZsdXNoaW5nLCBldGMuKSBwcmVzZW50IHRvIGd1YXJhbnRlZSBkYXRhIGludGVncml0eSBhZnRlciB0aGUgRE1BIHRyYW5zZmVyPyBPciwgaXMgaXQgcmVseWluZyBvbiBtb3JlIGdlbmVyYWwgY2FjaGUgbWFpbnRlbmFuY2UgbWVjaGFuaXNtcz8KKiAgICoqRGV2aWNlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zOioqIERvZXMgaXQgc2VlbSB0byBiZSBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHF1aXJrcyBvZiB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gbWFuYWdlPyBEb2VzIGl0IHRha2UgaW50byBhY2NvdW50IHNwZWNpZmljIERNQSBlbmdpbmUgY2hhcmFjdGVyaXN0aWNzLCBidWZmZXIgYWxpZ25tZW50cywgb3IgbWVtb3J5IGFjY2VzcyByZXF1aXJlbWVudHMgb2YgdGhlIFZEUD8KKiAgICoqRXJyb3IgaGFuZGxpbmc6KiogSXMgdGhlcmUgcHJvcGVyIGVycm9yIGNoZWNraW5nIGZvciBpbnZhbGlkIGFkZHJlc3NlcywgbWFwcGluZyBlcnJvcnMsIG9yIGhhcmR3YXJlIGlzc3Vlcz8gQXJlIHBvdGVudGlhbCBlcnJvcnMgZ3JhY2VmdWxseSBoYW5kbGVkPwoKQmV5b25kIHRoZSBiYXNpYyBtZWNoYW5pY3MsIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBzdWJ0bGUgaXNzdWVzLCBsaWtlIG1lbW9yeSBsZWFrcyAoZmFpbHVyZSB0byBmcmVlIHJlc291cmNlcykgb3IgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0aWVzLiBBIGdvb2QgcGxhY2UgdG8gc3RhcnQgd291bGQgYmUgdG8gZXhhbWluZSBpdHMgaW50ZXJhY3Rpb25zIHdpdGggYW55IGRldmljZS1zcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgb3IgcmVzb3VyY2UgbWFuYWdlbWVudC4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgY3Jvc3MtcmVmZXJlbmNpbmcgdGhpcyB3aXRoIHRoZSBgdmRwYXNpbV9kbWFfbWFwYCBmdW5jdGlvbiB0byB2ZXJpZnkgdGhhdCB0aGUgdW5tYXAgb3BlcmF0aW9uIGNvcnJlY3RseSBtaXJyb3JzIHRoZSBzZXR1cCwgYW5kIGlzIG5vdCBza2lwcGluZyBhbnkgY3J1Y2lhbCBkZS1hbGxvY2F0aW9uIHN0ZXBzLgoKVWx0aW1hdGVseSwgSSBuZWVkIHRvIGFuc3dlciB0aGlzOiBpcyB0aGlzIGltcGxlbWVudGF0aW9uIHJvYnVzdCwgZWZmaWNpZW50LCBhbmQgc2VjdXJlLCBjb25zaWRlcmluZyB0aGUgcGxhdGZvcm0gYW5kIGludGVuZGVkIHVzYWdlPyBBbmQgaWYgdGhlcmUgYXJlIGFueSBzaG9ydGNvbWluZ3MsIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBrbm93IHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmRwYXNpbV9kbWFfdW5tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTY5OT1zdGF0aWMgaW50IHZkcGFzaW1fZG1hX21hcChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHVuc2lnbmVkIGludCBhc2lkLFxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTcyMC1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjcyMTpzdGF0aWMgaW50IHZkcGFzaW1fZG1hX3VubWFwKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRwYSwgdW5zaWduZWQgaW50IGFzaWQsXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03MjItXHRcdFx0ICAgICB1NjQgaW92YSwgdTY0IHNpemUpXG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM9NzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmRwYV9jb25maWdfb3BzIHZkcGFzaW1fY29uZmlnX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03OTYtXHQuZG1hX21hcCAgICAgICAgICAgICAgICA9IHZkcGFzaW1fZG1hX21hcCxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjc5NzpcdC5kbWFfdW5tYXAgICAgICAgICAgICAgID0gdmRwYXNpbV9kbWFfdW5tYXAsXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03OTgtXHQucmVzZXRfbWFwICAgICAgICAgICAgICA9IHZkcGFzaW1fcmVzZXRfbWFwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NDUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFZEUEEgU0lNIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gb3IgYSBtaXNzaW5nIGxvY2sgd2l0aGluIGB2ZHBhc2ltX2RtYV91bm1hcGAuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBmaXgsIGRlZmluaXRlbHkgbmVlZHMgYXR0ZW50aW9uLiBJdCBhbHNvIGFkZHMgYHZkcGFzaW0tJmd0O3BlbmRpbmdfa2ljayA9IGZhbHNlO2AgdG8gYHZkcGFzaW1fZG9fcmVzZXRgLiBGdW5jdGlvbmFsbHksIHRoaXMgc2VlbXMgY29ycmVjdCwgYW5kIHRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlLCB3aGljaCBpcyBnb29kLiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwYXRjaCBpcyBgVkRQQV9TSU1gLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgY29tcG9uZW50IGl0IGFmZmVjdHMuCgpNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgb24gdGhlIHR3byBzeW1ib2xzIGlkZW50aWZpZWQ6IGB2ZHBhc2ltX2RvX3Jlc2V0YCBhbmQgYHZkcGFzaW1fZG1hX3VubWFwYC4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IHRoaXMgaW1wYWN0cyB0aGUgRE1BIHVubWFwcGluZyBwcm9jZXNzLCBhbmQgdGhlIHJlc2V0IG1lY2hhbmlzbS4KClRoZSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgYWdhaW5zdCBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGZpeCBkb2VzbiYjMzk7dCBpbmFkdmVydGVudGx5IGludHJvZHVjZSBhbnkgaXNzdWVzIHdpdGggb3RoZXIgaW50ZXJhY3RpbmcgZmVhdHVyZXMsIG9yIGlmIGl0IHdpbGwgbmVlZCBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgY29uZmlncyBuZWVkZWQsIG9yIGlmIHRoaXMgY2hhbmdlIG5lZWRzIGZ1cnRoZXIgYWRqdXN0bWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRFBBX1NJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZHBhL0tjb25maWc9MTA9aWYgVkRQQVxuZHJpdmVycy92ZHBhL0tjb25maWctMTEtXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzoxMjpjb25maWcgVkRQQV9TSU1cbmRyaXZlcnMvdmRwYS9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7dkRQQSBkZXZpY2Ugc2ltdWxhdG9yIGNvcmVcJiMzNDtcbi0tXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy0yMC1cbmRyaXZlcnMvdmRwYS9LY29uZmlnOjIxOmNvbmZpZyBWRFBBX1NJTV9ORVRcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7dkRQQSBzaW11bGF0b3IgZm9yIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4tLVxuZHJpdmVycy92ZHBhL0tjb25maWctMjctXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzoyODpjb25maWcgVkRQQV9TSU1fQkxPQ0tcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7dkRQQSBzaW11bGF0b3IgZm9yIGJsb2NrIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTk4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhpcyDigJMgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4KCioqUmVmbGVjdGluZyBvbiBTaW11bGF0b3IgQXJjaGl0ZWN0dXJlKioKClJpZ2h0LCBzbyB0aGUgY2VudHJhbCBwaWVjZSBoZXJlIGlzIGNsZWFybHkgYFZEUEFfU0lNYC4gVGhhdCYjMzk7cyBvdXIgY29yZSBzaW11bGF0b3IsIHRoZSBlbmdpbmUuIEkmIzM5O20gdGhpbmtpbmcgd2UmIzM5O3JlIGdvaW5nIHRvIHdhbnQgdmFyaWFudHMgdG8gaGFuZGxlIGRpZmZlcmVudCBsZXZlbHMgb2YgYWJzdHJhY3Rpb24gb3IgZGlmZmVyZW50IGludGVncmF0aW9uIGFwcHJvYWNoZXMuIEl0IG1ha2VzIHNlbnNlIHRoYXQgYFZEUEFfU0lNX05FVGAgb3IgYFZEUEFfU0lNX0JMT0NLYCBtaWdodCBiZSBpbnN0YW50aWF0aW9ucyBvciB3cmFwcGVycyBhcm91bmQgdGhlIGNvcmUgZm9yIG5ldHdvcmstbGV2ZWwgb3IgYmxvY2stbGV2ZWwgc2ltdWxhdGlvbi4gVGhlcmVmb3JlLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyBkZWZpbmluZyBhbGwgdGhyZWU6IGBWRFBBX1NJTWAsIGBWRFBBX1NJTV9ORVRgLCBhbmQgYFZEUEFfU0lNX0JMT0NLYC4gVGhhdCBjb3ZlcnMgb3VyIGJhc2VzIGFuZCBnaXZlcyB1cyBmbGV4aWJpbGl0eSBkb3duIHRoZSBsaW5lLgoKTm93LCBhIGJpdCBvZiBhIHdyaW5rbGUgaGFzIHByZXNlbnRlZCBpdHNlbGYgYXMgSSByZWNhbGwgaG93IHRoZSByZXNldCBwcm9jZWR1cmUgc2VlbXMgdG8gd29yay4gVGhlIGB2ZHBhc2ltX2RvX3Jlc2V0YCBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIGRpcmVjdGx5LCBpdCBhcHBlYXJzIHRoYXQgdGhlIGB2ZHBhc2ltX2NvbXBhdF9yZXNldGAgZnVuY3Rpb24gY2FsbHMgaXQuIFRoaXMgaW4gdHVybiwgaXMgdGhlbiBjYWxsZWQgYnkgZWl0aGVyIGB2ZHBhc2ltX3Jlc2V0YCBvciBhIHNpbWlsYXIgZnVuY3Rpb24gY2FsbC4gR2l2ZW4gdGhlIGltcG9ydGFuY2Ugb2YgcmVzZXQsIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHZkcGFzaW1fY29tcGF0X3Jlc2V0YCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBiZWhhdmluZyBhcyBleHBlY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmRwYXNpbV9jb21wYXRfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTQ5MD1zdGF0aWMgdm9pZCB2ZHBhc2ltX3NldF9zdGF0dXMoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1OCBzdGF0dXMpXG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNDk5LVxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM6NTAwOnN0YXRpYyBpbnQgdmRwYXNpbV9jb21wYXRfcmVzZXQoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1MzIgZmxhZ3MpXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy01MDEte1xuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTUxMj1zdGF0aWMgaW50IHZkcGFzaW1fcmVzZXQoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhKVxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNTEzLXtcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjUxNDpcdHJldHVybiB2ZHBhc2ltX2NvbXBhdF9yZXNldCh2ZHBhLCAwKTtcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTUxNS19XG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM9NzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmRwYV9jb25maWdfb3BzIHZkcGFzaW1fY29uZmlnX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03ODYtXHQucmVzZXRcdFx0XHQ9IHZkcGFzaW1fcmVzZXQsXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo3ODc6XHQuY29tcGF0X3Jlc2V0XHRcdD0gdmRwYXNpbV9jb21wYXRfcmVzZXQsXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03ODgtXHQuc3VzcGVuZFx0XHQ9IHZkcGFzaW1fc3VzcGVuZCxcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz04MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZHBhX2NvbmZpZ19vcHMgdmRwYXNpbV9iYXRjaF9jb25maWdfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTgyNi1cdC5yZXNldFx0XHRcdD0gdmRwYXNpbV9yZXNldCxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjgyNzpcdC5jb21wYXRfcmVzZXRcdFx0PSB2ZHBhc2ltX2NvbXBhdF9yZXNldCxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTgyOC1cdC5zdXNwZW5kXHRcdD0gdmRwYXNpbV9zdXNwZW5kLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTk4CgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGVzZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IGltcGFjdGZ1bCBhbmQgZGlyZWN0bHkgYWRkcmVzcyBzb21lIGNvcmUgZnVuY3Rpb25hbGl0aWVzIOKAkyB0aGV5JiMzOTtyZSByZWFjaGFibGUsIG1lYW5pbmcgdGhlIGNvZGUgcGF0aCBpcyBjbGVhci4gTXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IHplcm9lcyBpbiBvbiB0aG9zZSBrZXkgc3ltYm9sczogYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBgdmRwYXNpbV9kbWFfdW5tYXBgLiBUaGVzZSBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHRoZSB2aXJ0dWFsIGRldmljZSBwZXJmb3JtcyByZXNldHMgYW5kIG1hbmFnZXMgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgdW5tYXBwaW5nLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIGRhdGEgaW50ZWdyaXR5LgoKSSBzZWUgdGhyZWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZsYWdnZWQ6IGBWRFBBX1NJTWAsIGBWRFBBX1NJTV9ORVRgLCBhbmQgYFZEUEFfU0lNX0JMT0NLYC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCB0aGVzZSBsb29rIGxpa2UgZGlzdGluY3Qgc2ltdWxhdGlvbiBjb25maWd1cmF0aW9ucy4gTXkgaW1tZWRpYXRlIG1lbnRhbCBtYXBwaW5nIGlzIHRoYXQgYFZEUEFfU0lNYCBpcyB0aGUgYmFzZSwgZ2VuZXJhbCBzaW11bGF0aW9uIGVudmlyb25tZW50LCB3aXRoIGBWRFBBX1NJTV9ORVRgIGxpa2VseSBmb2N1c2luZyBvbiBuZXR3b3JrLXNwZWNpZmljIGVtdWxhdGlvbiwgYW5kIGBWRFBBX1NJTV9CTE9DS2AgaGFuZGxpbmcgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9ucy4gVGhpcyBpbmZvcm1hdGlvbiBsZXRzIG1lIGtub3cgd2hhdCBsZXZlbCBvZiBhbmFseXNpcyBpcyB3YXJyYW50ZWQuCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGluaXRpYWwgYW5hbHlzaXMgYW5kIHZlcmlmeSB0aGUgcmVzdWx0cyBvZiB0aGUgY2hhbmdlcy4gSSYjMzk7bGwgbmVlZCB0byBkbyBhIHF1aWNrIHNldCBvZiByZXN1bHRzIHRvIGNoZWNrIHRoZXNlIGZ1bmN0aW9uYWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZEUEFfU0lNJiMzNDssCiAgICAmIzM0O1ZEUEFfU0lNX05FVCYjMzQ7LAogICAgJiMzNDtWRFBBX1NJTV9CTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZkcGFzaW1fZG9fcmVzZXQmIzM0OywKICAgICYjMzQ7dmRwYXNpbV9kbWFfdW5tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2ZHBhc2ltX2RtYV91bm1hcCBieSBtb3ZpbmcgdGhlIGlvbW11X2xvY2sgYWNxdWlzaXRpb24gYmVmb3JlIGFjY2Vzc2luZyBpb21tdV9wdCwgYW5kIHJlc2V0cyBwZW5kaW5nX2tpY2sgaW4gdmRwYXNpbV9kb19yZXNldC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgdkRQQSBzaW11bGF0b3IgY29yZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkRQQV9TSU0mIzM0OywKICAgICYjMzQ7VkRQQV9TSU1fTkVUJiMzNDssCiAgICAmIzM0O1ZEUEFfU0lNX0JMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmRwYXNpbV9kb19yZXNldCYjMzQ7LAogICAgJiMzNDt2ZHBhc2ltX2RtYV91bm1hcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZkcGFzaW1fZG1hX3VubWFwIGJ5IG1vdmluZyB0aGUgaW9tbXVfbG9jayBhY3F1aXNpdGlvbiBiZWZvcmUgYWNjZXNzaW5nIGlvbW11X3B0LCBhbmQgcmVzZXRzIHBlbmRpbmdfa2ljayBpbiB2ZHBhc2ltX2RvX3Jlc2V0LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSB2RFBBIHNpbXVsYXRvciBjb3JlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MjY6MjUuMTY3MjM4NTUxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1NjAyNjQzMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkRQQV9TSU1cIixcbiAgICBcIlZEUEFfU0lNX05FVFwiLFxuICAgIFwiVkRQQV9TSU1fQkxPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZHBhc2ltX2RvX3Jlc2V0XCIsXG4gICAgXCJ2ZHBhc2ltX2RtYV91bm1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdmRwYXNpbV9kbWFfdW5tYXAgYnkgbW92aW5nIHRoZSBpb21tdV9sb2NrIGFjcXVpc2l0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgaW9tbXVfcHQsIGFuZCByZXNldHMgcGVuZGluZ19raWNrIGluIHZkcGFzaW1fZG9fcmVzZXQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIHZEUEEgc2ltdWxhdG9yIGNvcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjI1LjE2NzI0NTg4MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ5NzMwOTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzc0ZTY4NWQyYTQ1MzY5MWU1OTJkODMxYmI0ZmZlZDI4NTM2OTAxY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAwMjoyNjoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYyBiL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jXFxuaW5kZXggOGNiMWNjMmVhMTM5MWEuLmQ5MTQzYmQ5Y2ExNTU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jXFxuKysrIGIvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmNcXG5AQCAtMTYxLDYgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIHZkcGFzaW1fZG9fcmVzZXQoc3RydWN0IHZkcGFzaW0gKnZkcGFzaW0sIHUzMiBmbGFncylcXG4gXFx0fVxcbiBcXG4gXFx0dmRwYXNpbS1cXHUwMDNlcnVubmluZyA9IGZhbHNlO1xcbitcXHR2ZHBhc2ltLVxcdTAwM2VwZW5kaW5nX2tpY2sgPSBmYWxzZTtcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNnZkcGFzaW0tXFx1MDAzZWlvbW11X2xvY2spO1xcbiBcXG4gXFx0dmRwYXNpbS1cXHUwMDNlZmVhdHVyZXMgPSAwO1xcbkBAIC03MjUsMTIgKzcyNiwxMSBAQCBzdGF0aWMgaW50IHZkcGFzaW1fZG1hX3VubWFwKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRwYSwgdW5zaWduZWQgaW50IGFzaWQsXFxuIFxcdGlmIChhc2lkIFxcdTAwM2U9IHZkcGFzaW0tXFx1MDAzZWRldl9hdHRyLm5hcylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRzcGluX2xvY2soXFx1MDAyNnZkcGFzaW0tXFx1MDAzZWlvbW11X2xvY2spO1xcbiBcXHRpZiAodmRwYXNpbS1cXHUwMDNlaW9tbXVfcHRbYXNpZF0pIHtcXG4gXFx0XFx0dmhvc3RfaW90bGJfcmVzZXQoXFx1MDAyNnZkcGFzaW0tXFx1MDAzZWlvbW11W2FzaWRdKTtcXG4gXFx0XFx0dmRwYXNpbS1cXHUwMDNlaW9tbXVfcHRbYXNpZF0gPSBmYWxzZTtcXG4gXFx0fVxcbi1cXG4tXFx0c3Bpbl9sb2NrKFxcdTAwMjZ2ZHBhc2ltLVxcdTAwM2Vpb21tdV9sb2NrKTtcXG4gXFx0dmhvc3RfaW90bGJfZGVsX3JhbmdlKFxcdTAwMjZ2ZHBhc2ltLVxcdTAwM2Vpb21tdVthc2lkXSwgaW92YSwgaW92YSArIHNpemUgLSAxKTtcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNnZkcGFzaW0tXFx1MDAzZWlvbW11X2xvY2spO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MjY6MjUuODE3NTM1NjI2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTkwOTk1ODUyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRFBBX1NJTVwiLFxuICAgIFwiVkRQQV9TSU1fTkVUXCIsXG4gICAgXCJWRFBBX1NJTV9CTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZkcGFzaW1fZG9fcmVzZXRcIixcbiAgICBcInZkcGFzaW1fZG1hX3VubWFwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2ZHBhc2ltX2RtYV91bm1hcCBieSBtb3ZpbmcgdGhlIGlvbW11X2xvY2sgYWNxdWlzaXRpb24gYmVmb3JlIGFjY2Vzc2luZyBpb21tdV9wdCwgYW5kIHJlc2V0cyBwZW5kaW5nX2tpY2sgaW4gdmRwYXNpbV9kb19yZXNldC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgdkRQQSBzaW11bGF0b3IgY29yZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNzRlNjg1ZDJhNDUzNjkxZTU5MmQ4MzFiYjRmZmVkMjg1MzY5MDFjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMDI6MjY6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYyBiL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jXG5pbmRleCA4Y2IxY2MyZWExMzkxYS4uZDkxNDNiZDljYTE1NTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uY1xuKysrIGIvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmNcbkBAIC0xNjEsNiArMTYxLDcgQEAgc3RhdGljIHZvaWQgdmRwYXNpbV9kb19yZXNldChzdHJ1Y3QgdmRwYXNpbSAqdmRwYXNpbSwgdTMyIGZsYWdzKVxuIFx0fVxuIFxuIFx0dmRwYXNpbS1cdTAwM2VydW5uaW5nID0gZmFsc2U7XG4rXHR2ZHBhc2ltLVx1MDAzZXBlbmRpbmdfa2ljayA9IGZhbHNlO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2dmRwYXNpbS1cdTAwM2Vpb21tdV9sb2NrKTtcbiBcbiBcdHZkcGFzaW0tXHUwMDNlZmVhdHVyZXMgPSAwO1xuQEAgLTcyNSwxMiArNzI2LDExIEBAIHN0YXRpYyBpbnQgdmRwYXNpbV9kbWFfdW5tYXAoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1bnNpZ25lZCBpbnQgYXNpZCxcbiBcdGlmIChhc2lkIFx1MDAzZT0gdmRwYXNpbS1cdTAwM2VkZXZfYXR0ci5uYXMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0c3Bpbl9sb2NrKFx1MDAyNnZkcGFzaW0tXHUwMDNlaW9tbXVfbG9jayk7XG4gXHRpZiAodmRwYXNpbS1cdTAwM2Vpb21tdV9wdFthc2lkXSkge1xuIFx0XHR2aG9zdF9pb3RsYl9yZXNldChcdTAwMjZ2ZHBhc2ltLVx1MDAzZWlvbW11W2FzaWRdKTtcbiBcdFx0dmRwYXNpbS1cdTAwM2Vpb21tdV9wdFthc2lkXSA9IGZhbHNlO1xuIFx0fVxuLVxuLVx0c3Bpbl9sb2NrKFx1MDAyNnZkcGFzaW0tXHUwMDNlaW9tbXVfbG9jayk7XG4gXHR2aG9zdF9pb3RsYl9kZWxfcmFuZ2UoXHUwMDI2dmRwYXNpbS1cdTAwM2Vpb21tdVthc2lkXSwgaW92YSwgaW92YSArIHNpemUgLSAxKTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnZkcGFzaW0tXHUwMDNlaW9tbXVfbG9jayk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjoyNS44MTc1MzY4OTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA0NDA1NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVkRQQSBTaW11bGF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jYC4gVGhlIGNvcmUgY2hhbmdlcyBzZWVtIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGxldCdzIGJyZWFrIHRoZW0gZG93biBhbmQgc2VlIGlmIHRoZXkgbWFrZSBjb21wbGV0ZSBzZW5zZSB3aXRoaW4gdGhlIGxhcmdlciBjb250ZXh0IG9mIHRoZSBWRFBBIHNpbXVsYXRpb24gZW52aXJvbm1lbnQuXG5cbkZpcnN0LCB0aGlzIGFkZGl0aW9uIG9mIGB2ZHBhc2ltLVx1MDAzZXBlbmRpbmdfa2ljayA9IGZhbHNlO2Agd2l0aGluIGB2ZHBhc2ltX2RvX3Jlc2V0YCBpcyBpbnRlcmVzdGluZy4gUmVzZXQgb3BlcmF0aW9ucyBhcmUgYWx3YXlzIHBvdGVudGlhbCBzb3VyY2VzIG9mIHN1YnRsZSBidWdzLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGhlcmUuIFRoZSBgcGVuZGluZ19raWNrYCBmbGFnICptdXN0KiByZWxhdGUgdG8gc29tZSBmb3JtIG9mIGludGVycnVwdCBvciBldmVudCBoYW5kbGluZyBkdXJpbmcgdGhlIHJlc2V0IHByb2Nlc3MuIFdoYXQncyB0aGUgc3RhdGUgbWFjaGluZSBhc3NvY2lhdGVkIHdpdGggYSBWRFBBIHJlc2V0PyBJcyB0aGlzIGVuc3VyaW5nIHRoYXQgYSBwZW5kaW5nIGtpY2sgaXMgY2xlYXJlZCBiZWZvcmUgYSBuZXcgcmVzZXQgY3ljbGUgYmVnaW5zPyBXZSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgcHJldmVudHMgYW55IHNvcnQgb2Ygc3B1cmlvdXMgaW50ZXJydXB0cyBvciByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvcnJlY3QgZGV2aWNlIHN0YXRlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGxpbmcgY29udGV4dCBvZiBgdmRwYXNpbV9kb19yZXNldGAgYW5kIHNlZSBob3cgYHBlbmRpbmdfa2lja2AgaXMgdXNlZCBlbHNld2hlcmUgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgcmFtaWZpY2F0aW9ucy5cblxuTmV4dCwgdGhlIHJlbG9jYXRpb24gb2YgYHNwaW5fbG9jayhcdTAwMjZ2ZHBhc2ltLVx1MDAzZWlvbW11X2xvY2spO2AgYmVmb3JlIHRoZSBjb25kaXRpb25hbCBgaWYgKHZkcGFzaW0tXHUwMDNlaW9tbXVfcHRbYXNpZF0pYCB3aXRoaW4gYHZkcGFzaW1fZG1hX3VubWFwYCBjYXRjaGVzIG15IGV5ZS4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gdGhlIGxvY2tpbmcgc3RyYXRlZ3kgYXJvdW5kIHRoZSBJT01NVSBwYWdlIHRhYmxlIGFjY2Vzcy4gV2h5IHRoZSBjaGFuZ2U/IElzIHRoaXMgdG8gcHJvdmlkZSBmaW5lci1ncmFpbmVkIGxvY2tpbmc/IEFyZSB3ZSB3b3JyaWVkIGFib3V0IGNvbnRlbnRpb24sIG9yIHBlcmhhcHMgZW5zdXJpbmcgdGhhdCBgaW9tbXVfcHRgIGlzIGNvbnNpc3RlbnQgYXQgYWxsIHRpbWVzIHdoZW4gZG9pbmcgSU9NTVUgdW5tYXBwaW5nPyBXZSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgb24gcGVyZm9ybWFuY2UgYW5kIHdoZXRoZXIgaXQgaXMgYSBwb3RlbnRpYWwgY2F1c2Ugb2YgZGVhZGxvY2sgYW5kIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IGNoYW5nZSwgYW5kIEkgbmVlZCB0byByZXZpZXcgdGhlIGNvZGUgcGF0aCBjYXJlZnVsbHkuXG5cbkJlZm9yZSBkaXZpbmcgZGVlcCwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGZsYWdzIGluIHRoZSBrZXJuZWwgY29uZmlnIGZvciBgZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIFZEUEEgc2ltdWxhdGlvbiBkcml2ZXIgaXMgYWN0dWFsbHkgZW5hYmxlZCB3aXRoIHRoZSBuZWNlc3NhcnkgZmVhdHVyZXMsIGFuZCB0byB1bmRlcnN0YW5kIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGNvdWxkIGluZmx1ZW5jZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGNoYW5nZXMgYmVpbmcgcHJvcG9zZWQgaGVyZS4gQXJlIHRoZXNlIGNoYW5nZXMgY29uZGl0aW9uYWwgb24gc3BlY2lmaWMgc2ltdWxhdGlvbiBmZWF0dXJlcyBvciBoYXJkd2FyZSBjb25maWd1cmF0aW9ucz8gS25vd2luZyB0aGF0IHdpbGwgcHJvdmlkZSB2YWx1YWJsZSBjb250ZXh0IGZvciBhIGNvbXByZWhlbnNpdmUgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjozMC42MjE5NDQ3ODdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ3Nzk3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmRwYV9zaW0ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmRwYS92ZHBhX3NpbS9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfVkRQQV9TSU0pICs9IHZkcGFfc2ltLm9cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vTWFrZWZpbGUtMy1vYmotJChDT05GSUdfVkRQQV9TSU1fTkVUKSArPSB2ZHBhX3NpbV9uZXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjozMC43MTY3MzU1MDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzMzNzg0NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgVkRQQV9TSU1gIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBgVkRQQV9TSU1gIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aHMgb2Yga2V5IGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBzaW11bGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpbmdzIGFyZSBiZWluZyBtYW5hZ2VkLiBJJ20gZm9jdXNpbmcgb24gdGhlIHJlc2V0IGFuZCBETUEgdW5tYXAgb3BlcmF0aW9ucy4gTXkgbGluZSBvZiBxdWVzdGlvbmluZyBnb2VzIGxpa2UgdGhpczogQ2FuIEkgcmVhY2ggYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBgdmRwYXNpbV9kbWFfdW5tYXBgP1xuXG5JIGtub3cgYHZkcGFzaW1fZG9fcmVzZXRgIGlzIGxpa2VseSBjYWxsZWQgYnkgc29tZXRoaW5nIGxpa2UgYHZkcGFzaW1fcmVzZXRgLCBvciBhIHZlcnkgc2ltaWxhciBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgcmVzZXQgZnVuY3Rpb25hbGl0eS4gVGhlIGNvZGUgd291bGQgYmUgc3RydWN0dXJlZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgbWFrZXMgc2Vuc2UgZm9yIGEgcmVzZXQgdG8gdHJpZ2dlciB0aGlzIGFjdGlvbi4gSXQncyBhIHR5cGljYWwgYXBwcm9hY2gsIGFuZCBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgY29uZmlybSB0aGlzIGluIHRoZSBjb2RlYmFzZS5cblxuVGhlbiwgcmVnYXJkaW5nIGB2ZHBhc2ltX2RtYV91bm1hcGAsIEkgcmVjYWxsIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGB2ZHBhX2NvbmZpZ19vcHNgIGNhbGxiYWNrLiBUaGlzIGNhbGxiYWNrIHN0cnVjdHVyZSBhbGxvd3MgZm9yIHNwZWNpZmljIG9wZXJhdGlvbnMsIGFuZCBpdCBtZWFucyBgdmRwYXNpbV9kbWFfdW5tYXBgIGlzIGxpa2VseSBob29rZWQgaW50byB0aGUgc3lzdGVtIGF0IGEgdmVyeSBkZWZpbmVkIGludGVyZmFjZS4gU28sIEkgaGF2ZSB0byBpbnNwZWN0IHRoZSBicm9hZGVyIGRlc2lnbiBzdXJyb3VuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MjY6MzQuNDUwNTIyMzEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NjUzNTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZkcGFzaW1fZG9fcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZHBhL3ZkcGFfc2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz0xMjc9c3RhdGljIHZvaWQgdmRwYXNpbV92cV9yZXNldChzdHJ1Y3QgdmRwYXNpbSAqdmRwYXNpbSxcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTE0MS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzoxNDI6c3RhdGljIHZvaWQgdmRwYXNpbV9kb19yZXNldChzdHJ1Y3QgdmRwYXNpbSAqdmRwYXNpbSwgdTMyIGZsYWdzKVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTE0My17XFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz01MDA9c3RhdGljIGludCB2ZHBhc2ltX2NvbXBhdF9yZXNldChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHUzMiBmbGFncylcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTUwNS1cXHR2ZHBhc2ltLVxcdTAwM2VzdGF0dXMgPSAwO1xcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjUwNjpcXHR2ZHBhc2ltX2RvX3Jlc2V0KHZkcGFzaW0sIGZsYWdzKTtcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy01MDctXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2ZHBhc2ltLVxcdTAwM2VtdXRleCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjM0LjUzMDE4MTM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1NjkwNjkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYHZkcGFzaW1fZG1hX3VubWFwYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byBgdmRwYXNpbV9kbWFfdW5tYXBgLiBJJ20gc3RhcnRpbmcgaGVyZSBiZWNhdXNlLi4uIHdlbGwsICp3aHkqIGFyZSB3ZSBsb29raW5nIGF0IGl0PyBXaGF0J3MgdGhlIGNvbnRleHQ/IElzIHRoaXMgcGFydCBvZiBhIGRlYnVnZ2luZyBzZXNzaW9uLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3IgcGVyaGFwcyBhIHNlY3VyaXR5IHJldmlldz8gS25vd2luZyB0aGUgXCJ3aHlcIiB3aWxsIHNpZ25pZmljYW50bHkgaW5mbHVlbmNlIGhvdyBkZWVwbHkgSSBuZWVkIHRvIGdvLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIHR5cGljYWwgcmVzcG9uc2liaWxpdGllcyBvZiBhIERNQSB1bm1hcCBmdW5jdGlvbi4gSXQncyBhbG1vc3QgY2VydGFpbmx5IHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZyB1cCB0aGUgRE1BIG1hcHBpbmcgc2V0dXAgaW5pdGlhdGVkIGJ5IGEgcHJldmlvdXMgYG1hcGAgY2FsbC4gVGhhdCBtZWFucyBlbnN1cmluZyB0aGF0IHRoZSBwaHlzaWNhbCBhZGRyZXNzZXMgdXNlZCBieSB0aGUgRE1BIGVuZ2luZSBhcmUgbm8gbG9uZ2VyIGFjY2Vzc2libGUgdG8gdGhlIENQVSAob3IgYXQgbGVhc3QsIHRoYXQgdGhlIENQVSBpcyBub3RpZmllZCBhbmQgYXBwcm9wcmlhdGVseSBzeW5jaHJvbml6ZWQgcmVnYXJkaW5nIHRoZSBjYWNoZSBjb2hlcmVuY3kgaW1wbGljYXRpb25zKS5cblxuSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBiYXNpYyBzdHJ1Y3R1cmUuIElzIGl0IGhhbmRsaW5nIHNjYXR0ZXItZ2F0aGVyIGxpc3RzPyBXaGF0IGtpbmQgb2YgZXJyb3IgY2hlY2tpbmcgaXMgaW1wbGVtZW50ZWQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyByYWNlIGNvbmRpdGlvbnMgdGhhdCBqdW1wIG91dD8gU3BlY2lmaWNhbGx5LCBJJ20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKlN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOioqIElzIGl0IHVzaW5nIHNwaW5sb2NrcywgbXV0ZXhlcywgb3IgYXRvbWljIG9wZXJhdGlvbnM/IEhvdyByb2J1c3QgaXMgdGhlIGxvY2tpbmcgc2NoZW1lIGluIHRoZSBjb250ZXh0IG9mIGNvbmN1cnJlbnQgYWNjZXNzIG9yIGludGVycnVwdHM/XG4qICAgKipDYWNoZSBpbnZhbGlkYXRpb24vZmx1c2hpbmc6KiogSXMgY2FjaGUgY29oZXJlbmN5IGJlaW5nIHByb3Blcmx5IG1hbmFnZWQ/IEFyZSB0aGUgbmVjZXNzYXJ5IGNhY2hlIG9wZXJhdGlvbnMgKGludmFsaWRhdGlvbiwgZmx1c2hpbmcsIGV0Yy4pIHByZXNlbnQgdG8gZ3VhcmFudGVlIGRhdGEgaW50ZWdyaXR5IGFmdGVyIHRoZSBETUEgdHJhbnNmZXI/IE9yLCBpcyBpdCByZWx5aW5nIG9uIG1vcmUgZ2VuZXJhbCBjYWNoZSBtYWludGVuYW5jZSBtZWNoYW5pc21zP1xuKiAgICoqRGV2aWNlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zOioqIERvZXMgaXQgc2VlbSB0byBiZSBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHF1aXJrcyBvZiB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gbWFuYWdlPyBEb2VzIGl0IHRha2UgaW50byBhY2NvdW50IHNwZWNpZmljIERNQSBlbmdpbmUgY2hhcmFjdGVyaXN0aWNzLCBidWZmZXIgYWxpZ25tZW50cywgb3IgbWVtb3J5IGFjY2VzcyByZXF1aXJlbWVudHMgb2YgdGhlIFZEUD9cbiogICAqKkVycm9yIGhhbmRsaW5nOioqIElzIHRoZXJlIHByb3BlciBlcnJvciBjaGVja2luZyBmb3IgaW52YWxpZCBhZGRyZXNzZXMsIG1hcHBpbmcgZXJyb3JzLCBvciBoYXJkd2FyZSBpc3N1ZXM/IEFyZSBwb3RlbnRpYWwgZXJyb3JzIGdyYWNlZnVsbHkgaGFuZGxlZD9cblxuQmV5b25kIHRoZSBiYXNpYyBtZWNoYW5pY3MsIEknbGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIHN1YnRsZSBpc3N1ZXMsIGxpa2UgbWVtb3J5IGxlYWtzIChmYWlsdXJlIHRvIGZyZWUgcmVzb3VyY2VzKSBvciB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXRpZXMuIEEgZ29vZCBwbGFjZSB0byBzdGFydCB3b3VsZCBiZSB0byBleGFtaW5lIGl0cyBpbnRlcmFjdGlvbnMgd2l0aCBhbnkgZGV2aWNlLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBvciByZXNvdXJjZSBtYW5hZ2VtZW50LiBXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBJJ2xsIHByb2JhYmx5IHN0YXJ0IGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgd2l0aCB0aGUgYHZkcGFzaW1fZG1hX21hcGAgZnVuY3Rpb24gdG8gdmVyaWZ5IHRoYXQgdGhlIHVubWFwIG9wZXJhdGlvbiBjb3JyZWN0bHkgbWlycm9ycyB0aGUgc2V0dXAsIGFuZCBpcyBub3Qgc2tpcHBpbmcgYW55IGNydWNpYWwgZGUtYWxsb2NhdGlvbiBzdGVwcy5cblxuVWx0aW1hdGVseSwgSSBuZWVkIHRvIGFuc3dlciB0aGlzOiBpcyB0aGlzIGltcGxlbWVudGF0aW9uIHJvYnVzdCwgZWZmaWNpZW50LCBhbmQgc2VjdXJlLCBjb25zaWRlcmluZyB0aGUgcGxhdGZvcm0gYW5kIGludGVuZGVkIHVzYWdlPyBBbmQgaWYgdGhlcmUgYXJlIGFueSBzaG9ydGNvbWluZ3MsIEknbSBnb2luZyB0byB3YW50IHRvIGtub3cgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUwOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjM5LjU4NzA5MTM3NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzA3NzA5MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmRwYXNpbV9kbWFfdW5tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZHBhL3ZkcGFfc2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz02OTk9c3RhdGljIGludCB2ZHBhc2ltX2RtYV9tYXAoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1bnNpZ25lZCBpbnQgYXNpZCxcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTcyMC1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo3MjE6c3RhdGljIGludCB2ZHBhc2ltX2RtYV91bm1hcChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHVuc2lnbmVkIGludCBhc2lkLFxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTcyMi1cXHRcXHRcXHQgICAgIHU2NCBpb3ZhLCB1NjQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTc2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfY29uZmlnX29wcyB2ZHBhc2ltX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03OTYtXFx0LmRtYV9tYXAgICAgICAgICAgICAgICAgPSB2ZHBhc2ltX2RtYV9tYXAsXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM6Nzk3OlxcdC5kbWFfdW5tYXAgICAgICAgICAgICAgID0gdmRwYXNpbV9kbWFfdW5tYXAsXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNzk4LVxcdC5yZXNldF9tYXAgICAgICAgICAgICAgID0gdmRwYXNpbV9yZXNldF9tYXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjM5LjcxNzg2ODE0MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjgxNjE2MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFZEUEEgU0lNIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBvciBhIG1pc3NpbmcgbG9jayB3aXRoaW4gYHZkcGFzaW1fZG1hX3VubWFwYC4gVGhhdCdzIGEgY3JpdGljYWwgZml4LCBkZWZpbml0ZWx5IG5lZWRzIGF0dGVudGlvbi4gSXQgYWxzbyBhZGRzIGB2ZHBhc2ltLVx1MDAzZXBlbmRpbmdfa2ljayA9IGZhbHNlO2AgdG8gYHZkcGFzaW1fZG9fcmVzZXRgLiBGdW5jdGlvbmFsbHksIHRoaXMgc2VlbXMgY29ycmVjdCwgYW5kIHRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlLCB3aGljaCBpcyBnb29kLiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwYXRjaCBpcyBgVkRQQV9TSU1gLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgY29tcG9uZW50IGl0IGFmZmVjdHMuXG5cbk15IHByaW1hcnkgZm9jdXMgaGVyZSBpcyBvbiB0aGUgdHdvIHN5bWJvbHMgaWRlbnRpZmllZDogYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBgdmRwYXNpbV9kbWFfdW5tYXBgLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBpbXBhY3RzIHRoZSBETUEgdW5tYXBwaW5nIHByb2Nlc3MsIGFuZCB0aGUgcmVzZXQgbWVjaGFuaXNtLlxuXG5UaGUgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGFnYWluc3Qgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBmaXggZG9lc24ndCBpbmFkdmVydGVudGx5IGludHJvZHVjZSBhbnkgaXNzdWVzIHdpdGggb3RoZXIgaW50ZXJhY3RpbmcgZmVhdHVyZXMsIG9yIGlmIGl0IHdpbGwgbmVlZCBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBjb25maWdzIG5lZWRlZCwgb3IgaWYgdGhpcyBjaGFuZ2UgbmVlZHMgZnVydGhlciBhZGp1c3RtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ0NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjo0My4wNDYwMzIyMTlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNDU4NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRFBBX1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZkcGEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmRwYS9LY29uZmlnPTEwPWlmIFZEUEFcXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzoxMjpjb25maWcgVkRQQV9TSU1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy0xMy1cXHR0cmlzdGF0ZSBcXFwidkRQQSBkZXZpY2Ugc2ltdWxhdG9yIGNvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzoyMTpjb25maWcgVkRQQV9TSU1fTkVUXFxuZHJpdmVycy92ZHBhL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcInZEUEEgc2ltdWxhdG9yIGZvciBuZXR3b3JraW5nIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTI3LVxcbmRyaXZlcnMvdmRwYS9LY29uZmlnOjI4OmNvbmZpZyBWRFBBX1NJTV9CTE9DS1xcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJ2RFBBIHNpbXVsYXRvciBmb3IgYmxvY2sgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjo0My4xMzg0OTYyNzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzMTA5NzI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhpcyDigJMgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LlxuXG4qKlJlZmxlY3Rpbmcgb24gU2ltdWxhdG9yIEFyY2hpdGVjdHVyZSoqXG5cblJpZ2h0LCBzbyB0aGUgY2VudHJhbCBwaWVjZSBoZXJlIGlzIGNsZWFybHkgYFZEUEFfU0lNYC4gVGhhdCdzIG91ciBjb3JlIHNpbXVsYXRvciwgdGhlIGVuZ2luZS4gSSdtIHRoaW5raW5nIHdlJ3JlIGdvaW5nIHRvIHdhbnQgdmFyaWFudHMgdG8gaGFuZGxlIGRpZmZlcmVudCBsZXZlbHMgb2YgYWJzdHJhY3Rpb24gb3IgZGlmZmVyZW50IGludGVncmF0aW9uIGFwcHJvYWNoZXMuIEl0IG1ha2VzIHNlbnNlIHRoYXQgYFZEUEFfU0lNX05FVGAgb3IgYFZEUEFfU0lNX0JMT0NLYCBtaWdodCBiZSBpbnN0YW50aWF0aW9ucyBvciB3cmFwcGVycyBhcm91bmQgdGhlIGNvcmUgZm9yIG5ldHdvcmstbGV2ZWwgb3IgYmxvY2stbGV2ZWwgc2ltdWxhdGlvbi4gVGhlcmVmb3JlLCBJJ20gbGVhbmluZyB0b3dhcmRzIGRlZmluaW5nIGFsbCB0aHJlZTogYFZEUEFfU0lNYCwgYFZEUEFfU0lNX05FVGAsIGFuZCBgVkRQQV9TSU1fQkxPQ0tgLiBUaGF0IGNvdmVycyBvdXIgYmFzZXMgYW5kIGdpdmVzIHVzIGZsZXhpYmlsaXR5IGRvd24gdGhlIGxpbmUuXG5cbk5vdywgYSBiaXQgb2YgYSB3cmlua2xlIGhhcyBwcmVzZW50ZWQgaXRzZWxmIGFzIEkgcmVjYWxsIGhvdyB0aGUgcmVzZXQgcHJvY2VkdXJlIHNlZW1zIHRvIHdvcmsuIFRoZSBgdmRwYXNpbV9kb19yZXNldGAgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCBkaXJlY3RseSwgaXQgYXBwZWFycyB0aGF0IHRoZSBgdmRwYXNpbV9jb21wYXRfcmVzZXRgIGZ1bmN0aW9uIGNhbGxzIGl0LiBUaGlzIGluIHR1cm4sIGlzIHRoZW4gY2FsbGVkIGJ5IGVpdGhlciBgdmRwYXNpbV9yZXNldGAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIGNhbGwuIEdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHJlc2V0LCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHZkcGFzaW1fY29tcGF0X3Jlc2V0YCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBiZWhhdmluZyBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk5OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjo0Ni45Njk1OTYzODJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxODUxMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZkcGFzaW1fY29tcGF0X3Jlc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmRwYS92ZHBhX3NpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM9NDkwPXN0YXRpYyB2b2lkIHZkcGFzaW1fc2V0X3N0YXR1cyhzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHU4IHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTQ5OS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo1MDA6c3RhdGljIGludCB2ZHBhc2ltX2NvbXBhdF9yZXNldChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHUzMiBmbGFncylcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy01MDEte1xcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM9NTEyPXN0YXRpYyBpbnQgdmRwYXNpbV9yZXNldChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEpXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNTEzLXtcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo1MTQ6XFx0cmV0dXJuIHZkcGFzaW1fY29tcGF0X3Jlc2V0KHZkcGEsIDApO1xcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTUxNS19XFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz03NjM9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZHBhX2NvbmZpZ19vcHMgdmRwYXNpbV9jb25maWdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNzg2LVxcdC5yZXNldFxcdFxcdFxcdD0gdmRwYXNpbV9yZXNldCxcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo3ODc6XFx0LmNvbXBhdF9yZXNldFxcdFxcdD0gdmRwYXNpbV9jb21wYXRfcmVzZXQsXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNzg4LVxcdC5zdXNwZW5kXFx0XFx0PSB2ZHBhc2ltX3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz04MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZHBhX2NvbmZpZ19vcHMgdmRwYXNpbV9iYXRjaF9jb25maWdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtODI2LVxcdC5yZXNldFxcdFxcdFxcdD0gdmRwYXNpbV9yZXNldCxcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo4Mjc6XFx0LmNvbXBhdF9yZXNldFxcdFxcdD0gdmRwYXNpbV9jb21wYXRfcmVzZXQsXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtODI4LVxcdC5zdXNwZW5kXFx0XFx0PSB2ZHBhc2ltX3N1c3BlbmQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjQ3LjA1MTQ1NDQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1Mzk4NTU4NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlc2UgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSBpbXBhY3RmdWwgYW5kIGRpcmVjdGx5IGFkZHJlc3Mgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdGllcyDigJMgdGhleSdyZSByZWFjaGFibGUsIG1lYW5pbmcgdGhlIGNvZGUgcGF0aCBpcyBjbGVhci4gTXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IHplcm9lcyBpbiBvbiB0aG9zZSBrZXkgc3ltYm9sczogYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBgdmRwYXNpbV9kbWFfdW5tYXBgLiBUaGVzZSBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHRoZSB2aXJ0dWFsIGRldmljZSBwZXJmb3JtcyByZXNldHMgYW5kIG1hbmFnZXMgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgdW5tYXBwaW5nLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIGRhdGEgaW50ZWdyaXR5LlxuXG5JIHNlZSB0aHJlZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZmxhZ2dlZDogYFZEUEFfU0lNYCwgYFZEUEFfU0lNX05FVGAsIGFuZCBgVkRQQV9TSU1fQkxPQ0tgLiBHaXZlbiBteSBleHBlcnRpc2UsIHRoZXNlIGxvb2sgbGlrZSBkaXN0aW5jdCBzaW11bGF0aW9uIGNvbmZpZ3VyYXRpb25zLiBNeSBpbW1lZGlhdGUgbWVudGFsIG1hcHBpbmcgaXMgdGhhdCBgVkRQQV9TSU1gIGlzIHRoZSBiYXNlLCBnZW5lcmFsIHNpbXVsYXRpb24gZW52aXJvbm1lbnQsIHdpdGggYFZEUEFfU0lNX05FVGAgbGlrZWx5IGZvY3VzaW5nIG9uIG5ldHdvcmstc3BlY2lmaWMgZW11bGF0aW9uLCBhbmQgYFZEUEFfU0lNX0JMT0NLYCBoYW5kbGluZyBibG9jayBkZXZpY2UgaW50ZXJhY3Rpb25zLiBUaGlzIGluZm9ybWF0aW9uIGxldHMgbWUga25vdyB3aGF0IGxldmVsIG9mIGFuYWx5c2lzIGlzIHdhcnJhbnRlZC5cblxuQWxyaWdodCwgYmVmb3JlIGRpdmluZyBkZWVwZXIgaW50byB0aGUgY29kZSwgbGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGluaXRpYWwgYW5hbHlzaXMgYW5kIHZlcmlmeSB0aGUgcmVzdWx0cyBvZiB0aGUgY2hhbmdlcy4gSSdsbCBuZWVkIHRvIGRvIGEgcXVpY2sgc2V0IG9mIHJlc3VsdHMgdG8gY2hlY2sgdGhlc2UgZnVuY3Rpb25hbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTk4LCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjUxLjU5MTMxMzUxN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjE3NTkyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkRQQV9TSU1cIixcbiAgICBcIlZEUEFfU0lNX05FVFwiLFxuICAgIFwiVkRQQV9TSU1fQkxPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZHBhc2ltX2RvX3Jlc2V0XCIsXG4gICAgXCJ2ZHBhc2ltX2RtYV91bm1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdmRwYXNpbV9kbWFfdW5tYXAgYnkgbW92aW5nIHRoZSBpb21tdV9sb2NrIGFjcXVpc2l0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgaW9tbXVfcHQsIGFuZCByZXNldHMgcGVuZGluZ19raWNrIGluIHZkcGFzaW1fZG9fcmVzZXQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIHZEUEEgc2ltdWxhdG9yIGNvcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkRQQV9TSU1cIixcbiAgICBcIlZEUEFfU0lNX05FVFwiLFxuICAgIFwiVkRQQV9TSU1fQkxPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZHBhc2ltX2RvX3Jlc2V0XCIsXG4gICAgXCJ2ZHBhc2ltX2RtYV91bm1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdmRwYXNpbV9kbWFfdW5tYXAgYnkgbW92aW5nIHRoZSBpb21tdV9sb2NrIGFjcXVpc2l0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgaW9tbXVfcHQsIGFuZCByZXNldHMgcGVuZGluZ19raWNrIGluIHZkcGFzaW1fZG9fcmVzZXQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIHZEUEEgc2ltdWxhdG9yIGNvcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowh8lpm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 02:18:48 +0000 UTC FinishedAt: 2026-06-26 02:26:53 +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": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VDPA_SIM", "VDPA_SIM_NET", "VDPA_SIM_BLOCK" ], "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": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VDPA_SIM", "VDPA_SIM_NET", "VDPA_SIM_BLOCK" ], "series_id": "30585f36-e158-4664-8713-39e560c4b3bc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vdpasim_do_reset", "vdpasim_dma_unmap" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZEUEFfU0lNJiMzNDssCiAgICAmIzM0O1ZEUEFfU0lNX05FVCYjMzQ7LAogICAgJiMzNDtWRFBBX1NJTV9CTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZkcGFzaW1fZG9fcmVzZXQmIzM0OywKICAgICYjMzQ7dmRwYXNpbV9kbWFfdW5tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2ZHBhc2ltX2RtYV91bm1hcCBieSBtb3ZpbmcgdGhlIGlvbW11X2xvY2sgYWNxdWlzaXRpb24gYmVmb3JlIGFjY2Vzc2luZyBpb21tdV9wdCwgYW5kIHJlc2V0cyBwZW5kaW5nX2tpY2sgaW4gdmRwYXNpbV9kb19yZXNldC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgdkRQQSBzaW11bGF0b3IgY29yZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoyNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM3NGU2ODVkMmE0NTM2OTFlNTkyZDgzMWJiNGZmZWQyODUzNjkwMWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAwMjoyNjoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYyBiL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jXG5pbmRleCA4Y2IxY2MyZWExMzkxYS4uZDkxNDNiZDljYTE1NTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmNcbkBAIC0xNjEsNiAmIzQzOzE2MSw3IEBAIHN0YXRpYyB2b2lkIHZkcGFzaW1fZG9fcmVzZXQoc3RydWN0IHZkcGFzaW0gKnZkcGFzaW0sIHUzMiBmbGFncylcbiBcdH1cbiBcbiBcdHZkcGFzaW0tXHUwMDNlcnVubmluZyA9IGZhbHNlO1xuJiM0MztcdHZkcGFzaW0tXHUwMDNlcGVuZGluZ19raWNrID0gZmFsc2U7XG4gXHRzcGluX3VubG9jayhcdTAwMjZ2ZHBhc2ltLVx1MDAzZWlvbW11X2xvY2spO1xuIFxuIFx0dmRwYXNpbS1cdTAwM2VmZWF0dXJlcyA9IDA7XG5AQCAtNzI1LDEyICYjNDM7NzI2LDExIEBAIHN0YXRpYyBpbnQgdmRwYXNpbV9kbWFfdW5tYXAoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1bnNpZ25lZCBpbnQgYXNpZCxcbiBcdGlmIChhc2lkIFx1MDAzZT0gdmRwYXNpbS1cdTAwM2VkZXZfYXR0ci5uYXMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdHNwaW5fbG9jayhcdTAwMjZ2ZHBhc2ltLVx1MDAzZWlvbW11X2xvY2spO1xuIFx0aWYgKHZkcGFzaW0tXHUwMDNlaW9tbXVfcHRbYXNpZF0pIHtcbiBcdFx0dmhvc3RfaW90bGJfcmVzZXQoXHUwMDI2dmRwYXNpbS1cdTAwM2Vpb21tdVthc2lkXSk7XG4gXHRcdHZkcGFzaW0tXHUwMDNlaW9tbXVfcHRbYXNpZF0gPSBmYWxzZTtcbiBcdH1cbi1cbi1cdHNwaW5fbG9jayhcdTAwMjZ2ZHBhc2ltLVx1MDAzZWlvbW11X2xvY2spO1xuIFx0dmhvc3RfaW90bGJfZGVsX3JhbmdlKFx1MDAyNnZkcGFzaW0tXHUwMDNlaW9tbXVbYXNpZF0sIGlvdmEsIGlvdmEgJiM0Mzsgc2l6ZSAtIDEpO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2dmRwYXNpbS1cdTAwM2Vpb21tdV9sb2NrKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoyNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWRFBBX1NJTSYjMzQ7LAogICAgJiMzNDtWRFBBX1NJTV9ORVQmIzM0OywKICAgICYjMzQ7VkRQQV9TSU1fQkxPQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZHBhc2ltX2RvX3Jlc2V0JiMzNDssCiAgICAmIzM0O3ZkcGFzaW1fZG1hX3VubWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdmRwYXNpbV9kbWFfdW5tYXAgYnkgbW92aW5nIHRoZSBpb21tdV9sb2NrIGFjcXVpc2l0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgaW9tbXVfcHQsIGFuZCByZXNldHMgcGVuZGluZ19raWNrIGluIHZkcGFzaW1fZG9fcmVzZXQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIHZEUEEgc2ltdWxhdG9yIGNvcmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM3NGU2ODVkMmE0NTM2OTFlNTkyZDgzMWJiNGZmZWQyODUzNjkwMWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAwMjoyNjoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jIGIvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMKaW5kZXggOGNiMWNjMmVhMTM5MWEuLmQ5MTQzYmQ5Y2ExNTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYwpAQCAtMTYxLDYgJiM0MzsxNjEsNyBAQCBzdGF0aWMgdm9pZCB2ZHBhc2ltX2RvX3Jlc2V0KHN0cnVjdCB2ZHBhc2ltICp2ZHBhc2ltLCB1MzIgZmxhZ3MpCiAJfQogCiAJdmRwYXNpbS0mZ3Q7cnVubmluZyA9IGZhbHNlOwomIzQzOwl2ZHBhc2ltLSZndDtwZW5kaW5nX2tpY2sgPSBmYWxzZTsKIAlzcGluX3VubG9jaygmYW1wO3ZkcGFzaW0tJmd0O2lvbW11X2xvY2spOwogCiAJdmRwYXNpbS0mZ3Q7ZmVhdHVyZXMgPSAwOwpAQCAtNzI1LDEyICYjNDM7NzI2LDExIEBAIHN0YXRpYyBpbnQgdmRwYXNpbV9kbWFfdW5tYXAoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1bnNpZ25lZCBpbnQgYXNpZCwKIAlpZiAoYXNpZCAmZ3Q7PSB2ZHBhc2ltLSZndDtkZXZfYXR0ci5uYXMpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CXNwaW5fbG9jaygmYW1wO3ZkcGFzaW0tJmd0O2lvbW11X2xvY2spOwogCWlmICh2ZHBhc2ltLSZndDtpb21tdV9wdFthc2lkXSkgewogCQl2aG9zdF9pb3RsYl9yZXNldCgmYW1wO3ZkcGFzaW0tJmd0O2lvbW11W2FzaWRdKTsKIAkJdmRwYXNpbS0mZ3Q7aW9tbXVfcHRbYXNpZF0gPSBmYWxzZTsKIAl9Ci0KLQlzcGluX2xvY2soJmFtcDt2ZHBhc2ltLSZndDtpb21tdV9sb2NrKTsKIAl2aG9zdF9pb3RsYl9kZWxfcmFuZ2UoJmFtcDt2ZHBhc2ltLSZndDtpb21tdVthc2lkXSwgaW92YSwgaW92YSAmIzQzOyBzaXplIC0gMSk7CiAJc3Bpbl91bmxvY2soJmFtcDt2ZHBhc2ltLSZndDtpb21tdV9sb2NrKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDYzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVkRQQSBTaW11bGF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmNgLiBUaGUgY29yZSBjaGFuZ2VzIHNlZW0gc3RyYWlnaHRmb3J3YXJkLCBidXQgbGV0JiMzOTtzIGJyZWFrIHRoZW0gZG93biBhbmQgc2VlIGlmIHRoZXkgbWFrZSBjb21wbGV0ZSBzZW5zZSB3aXRoaW4gdGhlIGxhcmdlciBjb250ZXh0IG9mIHRoZSBWRFBBIHNpbXVsYXRpb24gZW52aXJvbm1lbnQuCgpGaXJzdCwgdGhpcyBhZGRpdGlvbiBvZiBgdmRwYXNpbS0mZ3Q7cGVuZGluZ19raWNrID0gZmFsc2U7YCB3aXRoaW4gYHZkcGFzaW1fZG9fcmVzZXRgIGlzIGludGVyZXN0aW5nLiBSZXNldCBvcGVyYXRpb25zIGFyZSBhbHdheXMgcG90ZW50aWFsIHNvdXJjZXMgb2Ygc3VidGxlIGJ1Z3MsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgaGVyZS4gVGhlIGBwZW5kaW5nX2tpY2tgIGZsYWcgKm11c3QqIHJlbGF0ZSB0byBzb21lIGZvcm0gb2YgaW50ZXJydXB0IG9yIGV2ZW50IGhhbmRsaW5nIGR1cmluZyB0aGUgcmVzZXQgcHJvY2Vzcy4gV2hhdCYjMzk7cyB0aGUgc3RhdGUgbWFjaGluZSBhc3NvY2lhdGVkIHdpdGggYSBWRFBBIHJlc2V0PyBJcyB0aGlzIGVuc3VyaW5nIHRoYXQgYSBwZW5kaW5nIGtpY2sgaXMgY2xlYXJlZCBiZWZvcmUgYSBuZXcgcmVzZXQgY3ljbGUgYmVnaW5zPyBXZSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgcHJldmVudHMgYW55IHNvcnQgb2Ygc3B1cmlvdXMgaW50ZXJydXB0cyBvciByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvcnJlY3QgZGV2aWNlIHN0YXRlLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsaW5nIGNvbnRleHQgb2YgYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBzZWUgaG93IGBwZW5kaW5nX2tpY2tgIGlzIHVzZWQgZWxzZXdoZXJlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJhbWlmaWNhdGlvbnMuCgpOZXh0LCB0aGUgcmVsb2NhdGlvbiBvZiBgc3Bpbl9sb2NrKCZhbXA7dmRwYXNpbS0mZ3Q7aW9tbXVfbG9jayk7YCBiZWZvcmUgdGhlIGNvbmRpdGlvbmFsIGBpZiAodmRwYXNpbS0mZ3Q7aW9tbXVfcHRbYXNpZF0pYCB3aXRoaW4gYHZkcGFzaW1fZG1hX3VubWFwYCBjYXRjaGVzIG15IGV5ZS4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gdGhlIGxvY2tpbmcgc3RyYXRlZ3kgYXJvdW5kIHRoZSBJT01NVSBwYWdlIHRhYmxlIGFjY2Vzcy4gV2h5IHRoZSBjaGFuZ2U/IElzIHRoaXMgdG8gcHJvdmlkZSBmaW5lci1ncmFpbmVkIGxvY2tpbmc/IEFyZSB3ZSB3b3JyaWVkIGFib3V0IGNvbnRlbnRpb24sIG9yIHBlcmhhcHMgZW5zdXJpbmcgdGhhdCBgaW9tbXVfcHRgIGlzIGNvbnNpc3RlbnQgYXQgYWxsIHRpbWVzIHdoZW4gZG9pbmcgSU9NTVUgdW5tYXBwaW5nPyBXZSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgb24gcGVyZm9ybWFuY2UgYW5kIHdoZXRoZXIgaXQgaXMgYSBwb3RlbnRpYWwgY2F1c2Ugb2YgZGVhZGxvY2sgYW5kIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IGNoYW5nZSwgYW5kIEkgbmVlZCB0byByZXZpZXcgdGhlIGNvZGUgcGF0aCBjYXJlZnVsbHkuCgpCZWZvcmUgZGl2aW5nIGRlZXAsIEkgbmVlZCB0byBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmbGFncyBpbiB0aGUga2VybmVsIGNvbmZpZyBmb3IgYGRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBWRFBBIHNpbXVsYXRpb24gZHJpdmVyIGlzIGFjdHVhbGx5IGVuYWJsZWQgd2l0aCB0aGUgbmVjZXNzYXJ5IGZlYXR1cmVzLCBhbmQgdG8gdW5kZXJzdGFuZCB3aGljaCBjb25maWd1cmF0aW9ucyBjb3VsZCBpbmZsdWVuY2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBjaGFuZ2VzIGJlaW5nIHByb3Bvc2VkIGhlcmUuIEFyZSB0aGVzZSBjaGFuZ2VzIGNvbmRpdGlvbmFsIG9uIHNwZWNpZmljIHNpbXVsYXRpb24gZmVhdHVyZXMgb3IgaGFyZHdhcmUgY29uZmlndXJhdGlvbnM/IEtub3dpbmcgdGhhdCB3aWxsIHByb3ZpZGUgdmFsdWFibGUgY29udGV4dCBmb3IgYSBjb21wcmVoZW5zaXZlIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZkcGFfc2ltLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS92ZHBhX3NpbS9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS9NYWtlZmlsZToyOm9iai0kKENPTkZJR19WRFBBX1NJTSkgJiM0Mzs9IHZkcGFfc2ltLm9cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS9NYWtlZmlsZS0zLW9iai0kKENPTkZJR19WRFBBX1NJTV9ORVQpICYjNDM7PSB2ZHBhX3NpbV9uZXQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgVkRQQV9TSU1gIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGBWRFBBX1NJTWAgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRocyBvZiBrZXkgZnVuY3Rpb25zIHdpdGhpbiB0aGlzIHNpbXVsYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGluZ3MgYXJlIGJlaW5nIG1hbmFnZWQuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIHJlc2V0IGFuZCBETUEgdW5tYXAgb3BlcmF0aW9ucy4gTXkgbGluZSBvZiBxdWVzdGlvbmluZyBnb2VzIGxpa2UgdGhpczogQ2FuIEkgcmVhY2ggYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBgdmRwYXNpbV9kbWFfdW5tYXBgPwoKSSBrbm93IGB2ZHBhc2ltX2RvX3Jlc2V0YCBpcyBsaWtlbHkgY2FsbGVkIGJ5IHNvbWV0aGluZyBsaWtlIGB2ZHBhc2ltX3Jlc2V0YCwgb3IgYSB2ZXJ5IHNpbWlsYXIgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHJlc2V0IGZ1bmN0aW9uYWxpdHkuIFRoZSBjb2RlIHdvdWxkIGJlIHN0cnVjdHVyZWQgaW4gc3VjaCBhIHdheSB0aGF0IGl0IG1ha2VzIHNlbnNlIGZvciBhIHJlc2V0IHRvIHRyaWdnZXIgdGhpcyBhY3Rpb24uIEl0JiMzOTtzIGEgdHlwaWNhbCBhcHByb2FjaCwgYW5kIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBjb25maXJtIHRoaXMgaW4gdGhlIGNvZGViYXNlLgoKVGhlbiwgcmVnYXJkaW5nIGB2ZHBhc2ltX2RtYV91bm1hcGAsIEkgcmVjYWxsIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGB2ZHBhX2NvbmZpZ19vcHNgIGNhbGxiYWNrLiBUaGlzIGNhbGxiYWNrIHN0cnVjdHVyZSBhbGxvd3MgZm9yIHNwZWNpZmljIG9wZXJhdGlvbnMsIGFuZCBpdCBtZWFucyBgdmRwYXNpbV9kbWFfdW5tYXBgIGlzIGxpa2VseSBob29rZWQgaW50byB0aGUgc3lzdGVtIGF0IGEgdmVyeSBkZWZpbmVkIGludGVyZmFjZS4gU28sIEkgaGF2ZSB0byBpbnNwZWN0IHRoZSBicm9hZGVyIGRlc2lnbiBzdXJyb3VuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcGVyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZkcGFzaW1fZG9fcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTEyNz1zdGF0aWMgdm9pZCB2ZHBhc2ltX3ZxX3Jlc2V0KHN0cnVjdCB2ZHBhc2ltICp2ZHBhc2ltLFxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTE0MS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjE0MjpzdGF0aWMgdm9pZCB2ZHBhc2ltX2RvX3Jlc2V0KHN0cnVjdCB2ZHBhc2ltICp2ZHBhc2ltLCB1MzIgZmxhZ3MpXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy0xNDMte1xuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTUwMD1zdGF0aWMgaW50IHZkcGFzaW1fY29tcGF0X3Jlc2V0KHN0cnVjdCB2ZHBhX2RldmljZSAqdmRwYSwgdTMyIGZsYWdzKVxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTUwNS1cdHZkcGFzaW0tXHUwMDNlc3RhdHVzID0gMDtcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjUwNjpcdHZkcGFzaW1fZG9fcmVzZXQodmRwYXNpbSwgZmxhZ3MpO1xuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNTA3LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZkcGFzaW0tXHUwMDNlbXV0ZXgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MDgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgdmRwYXNpbV9kbWFfdW5tYXBgKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYHZkcGFzaW1fZG1hX3VubWFwYC4gSSYjMzk7bSBzdGFydGluZyBoZXJlIGJlY2F1c2UuLi4gd2VsbCwgKndoeSogYXJlIHdlIGxvb2tpbmcgYXQgaXQ/IFdoYXQmIzM5O3MgdGhlIGNvbnRleHQ/IElzIHRoaXMgcGFydCBvZiBhIGRlYnVnZ2luZyBzZXNzaW9uLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3IgcGVyaGFwcyBhIHNlY3VyaXR5IHJldmlldz8gS25vd2luZyB0aGUgJiMzNDt3aHkmIzM0OyB3aWxsIHNpZ25pZmljYW50bHkgaW5mbHVlbmNlIGhvdyBkZWVwbHkgSSBuZWVkIHRvIGdvLgoKRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIG9mIHRoZSB0eXBpY2FsIHJlc3BvbnNpYmlsaXRpZXMgb2YgYSBETUEgdW5tYXAgZnVuY3Rpb24uIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWlubHkgcmVzcG9uc2libGUgZm9yIGNsZWFuaW5nIHVwIHRoZSBETUEgbWFwcGluZyBzZXR1cCBpbml0aWF0ZWQgYnkgYSBwcmV2aW91cyBgbWFwYCBjYWxsLiBUaGF0IG1lYW5zIGVuc3VyaW5nIHRoYXQgdGhlIHBoeXNpY2FsIGFkZHJlc3NlcyB1c2VkIGJ5IHRoZSBETUEgZW5naW5lIGFyZSBubyBsb25nZXIgYWNjZXNzaWJsZSB0byB0aGUgQ1BVIChvciBhdCBsZWFzdCwgdGhhdCB0aGUgQ1BVIGlzIG5vdGlmaWVkIGFuZCBhcHByb3ByaWF0ZWx5IHN5bmNocm9uaXplZCByZWdhcmRpbmcgdGhlIGNhY2hlIGNvaGVyZW5jeSBpbXBsaWNhdGlvbnMpLgoKSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBiYXNpYyBzdHJ1Y3R1cmUuIElzIGl0IGhhbmRsaW5nIHNjYXR0ZXItZ2F0aGVyIGxpc3RzPyBXaGF0IGtpbmQgb2YgZXJyb3IgY2hlY2tpbmcgaXMgaW1wbGVtZW50ZWQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyByYWNlIGNvbmRpdGlvbnMgdGhhdCBqdW1wIG91dD8gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqU3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM6KiogSXMgaXQgdXNpbmcgc3BpbmxvY2tzLCBtdXRleGVzLCBvciBhdG9taWMgb3BlcmF0aW9ucz8gSG93IHJvYnVzdCBpcyB0aGUgbG9ja2luZyBzY2hlbWUgaW4gdGhlIGNvbnRleHQgb2YgY29uY3VycmVudCBhY2Nlc3Mgb3IgaW50ZXJydXB0cz8KKiAgICoqQ2FjaGUgaW52YWxpZGF0aW9uL2ZsdXNoaW5nOioqIElzIGNhY2hlIGNvaGVyZW5jeSBiZWluZyBwcm9wZXJseSBtYW5hZ2VkPyBBcmUgdGhlIG5lY2Vzc2FyeSBjYWNoZSBvcGVyYXRpb25zIChpbnZhbGlkYXRpb24sIGZsdXNoaW5nLCBldGMuKSBwcmVzZW50IHRvIGd1YXJhbnRlZSBkYXRhIGludGVncml0eSBhZnRlciB0aGUgRE1BIHRyYW5zZmVyPyBPciwgaXMgaXQgcmVseWluZyBvbiBtb3JlIGdlbmVyYWwgY2FjaGUgbWFpbnRlbmFuY2UgbWVjaGFuaXNtcz8KKiAgICoqRGV2aWNlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zOioqIERvZXMgaXQgc2VlbSB0byBiZSBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHF1aXJrcyBvZiB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gbWFuYWdlPyBEb2VzIGl0IHRha2UgaW50byBhY2NvdW50IHNwZWNpZmljIERNQSBlbmdpbmUgY2hhcmFjdGVyaXN0aWNzLCBidWZmZXIgYWxpZ25tZW50cywgb3IgbWVtb3J5IGFjY2VzcyByZXF1aXJlbWVudHMgb2YgdGhlIFZEUD8KKiAgICoqRXJyb3IgaGFuZGxpbmc6KiogSXMgdGhlcmUgcHJvcGVyIGVycm9yIGNoZWNraW5nIGZvciBpbnZhbGlkIGFkZHJlc3NlcywgbWFwcGluZyBlcnJvcnMsIG9yIGhhcmR3YXJlIGlzc3Vlcz8gQXJlIHBvdGVudGlhbCBlcnJvcnMgZ3JhY2VmdWxseSBoYW5kbGVkPwoKQmV5b25kIHRoZSBiYXNpYyBtZWNoYW5pY3MsIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBzdWJ0bGUgaXNzdWVzLCBsaWtlIG1lbW9yeSBsZWFrcyAoZmFpbHVyZSB0byBmcmVlIHJlc291cmNlcykgb3IgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0aWVzLiBBIGdvb2QgcGxhY2UgdG8gc3RhcnQgd291bGQgYmUgdG8gZXhhbWluZSBpdHMgaW50ZXJhY3Rpb25zIHdpdGggYW55IGRldmljZS1zcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgb3IgcmVzb3VyY2UgbWFuYWdlbWVudC4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgY3Jvc3MtcmVmZXJlbmNpbmcgdGhpcyB3aXRoIHRoZSBgdmRwYXNpbV9kbWFfbWFwYCBmdW5jdGlvbiB0byB2ZXJpZnkgdGhhdCB0aGUgdW5tYXAgb3BlcmF0aW9uIGNvcnJlY3RseSBtaXJyb3JzIHRoZSBzZXR1cCwgYW5kIGlzIG5vdCBza2lwcGluZyBhbnkgY3J1Y2lhbCBkZS1hbGxvY2F0aW9uIHN0ZXBzLgoKVWx0aW1hdGVseSwgSSBuZWVkIHRvIGFuc3dlciB0aGlzOiBpcyB0aGlzIGltcGxlbWVudGF0aW9uIHJvYnVzdCwgZWZmaWNpZW50LCBhbmQgc2VjdXJlLCBjb25zaWRlcmluZyB0aGUgcGxhdGZvcm0gYW5kIGludGVuZGVkIHVzYWdlPyBBbmQgaWYgdGhlcmUgYXJlIGFueSBzaG9ydGNvbWluZ3MsIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBrbm93IHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmRwYXNpbV9kbWFfdW5tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTY5OT1zdGF0aWMgaW50IHZkcGFzaW1fZG1hX21hcChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHVuc2lnbmVkIGludCBhc2lkLFxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTcyMC1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjcyMTpzdGF0aWMgaW50IHZkcGFzaW1fZG1hX3VubWFwKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRwYSwgdW5zaWduZWQgaW50IGFzaWQsXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03MjItXHRcdFx0ICAgICB1NjQgaW92YSwgdTY0IHNpemUpXG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM9NzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmRwYV9jb25maWdfb3BzIHZkcGFzaW1fY29uZmlnX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03OTYtXHQuZG1hX21hcCAgICAgICAgICAgICAgICA9IHZkcGFzaW1fZG1hX21hcCxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjc5NzpcdC5kbWFfdW5tYXAgICAgICAgICAgICAgID0gdmRwYXNpbV9kbWFfdW5tYXAsXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03OTgtXHQucmVzZXRfbWFwICAgICAgICAgICAgICA9IHZkcGFzaW1fcmVzZXRfbWFwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NDUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFZEUEEgU0lNIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gb3IgYSBtaXNzaW5nIGxvY2sgd2l0aGluIGB2ZHBhc2ltX2RtYV91bm1hcGAuIFRoYXQmIzM5O3MgYSBjcml0aWNhbCBmaXgsIGRlZmluaXRlbHkgbmVlZHMgYXR0ZW50aW9uLiBJdCBhbHNvIGFkZHMgYHZkcGFzaW0tJmd0O3BlbmRpbmdfa2ljayA9IGZhbHNlO2AgdG8gYHZkcGFzaW1fZG9fcmVzZXRgLiBGdW5jdGlvbmFsbHksIHRoaXMgc2VlbXMgY29ycmVjdCwgYW5kIHRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlLCB3aGljaCBpcyBnb29kLiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwYXRjaCBpcyBgVkRQQV9TSU1gLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgY29tcG9uZW50IGl0IGFmZmVjdHMuCgpNeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgb24gdGhlIHR3byBzeW1ib2xzIGlkZW50aWZpZWQ6IGB2ZHBhc2ltX2RvX3Jlc2V0YCBhbmQgYHZkcGFzaW1fZG1hX3VubWFwYC4gSSBuZWVkIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaG93IHRoaXMgaW1wYWN0cyB0aGUgRE1BIHVubWFwcGluZyBwcm9jZXNzLCBhbmQgdGhlIHJlc2V0IG1lY2hhbmlzbS4KClRoZSBuZXh0IHN0ZXAgaXMgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgYWdhaW5zdCBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGZpeCBkb2VzbiYjMzk7dCBpbmFkdmVydGVudGx5IGludHJvZHVjZSBhbnkgaXNzdWVzIHdpdGggb3RoZXIgaW50ZXJhY3RpbmcgZmVhdHVyZXMsIG9yIGlmIGl0IHdpbGwgbmVlZCBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgY29uZmlncyBuZWVkZWQsIG9yIGlmIHRoaXMgY2hhbmdlIG5lZWRzIGZ1cnRoZXIgYWRqdXN0bWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRFBBX1NJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZHBhL0tjb25maWc9MTA9aWYgVkRQQVxuZHJpdmVycy92ZHBhL0tjb25maWctMTEtXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzoxMjpjb25maWcgVkRQQV9TSU1cbmRyaXZlcnMvdmRwYS9LY29uZmlnLTEzLVx0dHJpc3RhdGUgXCYjMzQ7dkRQQSBkZXZpY2Ugc2ltdWxhdG9yIGNvcmVcJiMzNDtcbi0tXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy0yMC1cbmRyaXZlcnMvdmRwYS9LY29uZmlnOjIxOmNvbmZpZyBWRFBBX1NJTV9ORVRcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTIyLVx0dHJpc3RhdGUgXCYjMzQ7dkRQQSBzaW11bGF0b3IgZm9yIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4tLVxuZHJpdmVycy92ZHBhL0tjb25maWctMjctXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzoyODpjb25maWcgVkRQQV9TSU1fQkxPQ0tcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTI5LVx0dHJpc3RhdGUgXCYjMzQ7dkRQQSBzaW11bGF0b3IgZm9yIGJsb2NrIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTk4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhpcyDigJMgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4KCioqUmVmbGVjdGluZyBvbiBTaW11bGF0b3IgQXJjaGl0ZWN0dXJlKioKClJpZ2h0LCBzbyB0aGUgY2VudHJhbCBwaWVjZSBoZXJlIGlzIGNsZWFybHkgYFZEUEFfU0lNYC4gVGhhdCYjMzk7cyBvdXIgY29yZSBzaW11bGF0b3IsIHRoZSBlbmdpbmUuIEkmIzM5O20gdGhpbmtpbmcgd2UmIzM5O3JlIGdvaW5nIHRvIHdhbnQgdmFyaWFudHMgdG8gaGFuZGxlIGRpZmZlcmVudCBsZXZlbHMgb2YgYWJzdHJhY3Rpb24gb3IgZGlmZmVyZW50IGludGVncmF0aW9uIGFwcHJvYWNoZXMuIEl0IG1ha2VzIHNlbnNlIHRoYXQgYFZEUEFfU0lNX05FVGAgb3IgYFZEUEFfU0lNX0JMT0NLYCBtaWdodCBiZSBpbnN0YW50aWF0aW9ucyBvciB3cmFwcGVycyBhcm91bmQgdGhlIGNvcmUgZm9yIG5ldHdvcmstbGV2ZWwgb3IgYmxvY2stbGV2ZWwgc2ltdWxhdGlvbi4gVGhlcmVmb3JlLCBJJiMzOTttIGxlYW5pbmcgdG93YXJkcyBkZWZpbmluZyBhbGwgdGhyZWU6IGBWRFBBX1NJTWAsIGBWRFBBX1NJTV9ORVRgLCBhbmQgYFZEUEFfU0lNX0JMT0NLYC4gVGhhdCBjb3ZlcnMgb3VyIGJhc2VzIGFuZCBnaXZlcyB1cyBmbGV4aWJpbGl0eSBkb3duIHRoZSBsaW5lLgoKTm93LCBhIGJpdCBvZiBhIHdyaW5rbGUgaGFzIHByZXNlbnRlZCBpdHNlbGYgYXMgSSByZWNhbGwgaG93IHRoZSByZXNldCBwcm9jZWR1cmUgc2VlbXMgdG8gd29yay4gVGhlIGB2ZHBhc2ltX2RvX3Jlc2V0YCBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIGRpcmVjdGx5LCBpdCBhcHBlYXJzIHRoYXQgdGhlIGB2ZHBhc2ltX2NvbXBhdF9yZXNldGAgZnVuY3Rpb24gY2FsbHMgaXQuIFRoaXMgaW4gdHVybiwgaXMgdGhlbiBjYWxsZWQgYnkgZWl0aGVyIGB2ZHBhc2ltX3Jlc2V0YCBvciBhIHNpbWlsYXIgZnVuY3Rpb24gY2FsbC4gR2l2ZW4gdGhlIGltcG9ydGFuY2Ugb2YgcmVzZXQsIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHZkcGFzaW1fY29tcGF0X3Jlc2V0YCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBiZWhhdmluZyBhcyBleHBlY3RlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmRwYXNpbV9jb21wYXRfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTQ5MD1zdGF0aWMgdm9pZCB2ZHBhc2ltX3NldF9zdGF0dXMoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1OCBzdGF0dXMpXG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNDk5LVxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM6NTAwOnN0YXRpYyBpbnQgdmRwYXNpbV9jb21wYXRfcmVzZXQoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1MzIgZmxhZ3MpXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy01MDEte1xuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTUxMj1zdGF0aWMgaW50IHZkcGFzaW1fcmVzZXQoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhKVxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNTEzLXtcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjUxNDpcdHJldHVybiB2ZHBhc2ltX2NvbXBhdF9yZXNldCh2ZHBhLCAwKTtcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTUxNS19XG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM9NzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmRwYV9jb25maWdfb3BzIHZkcGFzaW1fY29uZmlnX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03ODYtXHQucmVzZXRcdFx0XHQ9IHZkcGFzaW1fcmVzZXQsXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo3ODc6XHQuY29tcGF0X3Jlc2V0XHRcdD0gdmRwYXNpbV9jb21wYXRfcmVzZXQsXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03ODgtXHQuc3VzcGVuZFx0XHQ9IHZkcGFzaW1fc3VzcGVuZCxcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz04MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZHBhX2NvbmZpZ19vcHMgdmRwYXNpbV9iYXRjaF9jb25maWdfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTgyNi1cdC5yZXNldFx0XHRcdD0gdmRwYXNpbV9yZXNldCxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjgyNzpcdC5jb21wYXRfcmVzZXRcdFx0PSB2ZHBhc2ltX2NvbXBhdF9yZXNldCxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTgyOC1cdC5zdXNwZW5kXHRcdD0gdmRwYXNpbV9zdXNwZW5kLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTk4CgkJCQkJCQlvdXRwdXQ6IDEzNQoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyB0aGVzZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IGltcGFjdGZ1bCBhbmQgZGlyZWN0bHkgYWRkcmVzcyBzb21lIGNvcmUgZnVuY3Rpb25hbGl0aWVzIOKAkyB0aGV5JiMzOTtyZSByZWFjaGFibGUsIG1lYW5pbmcgdGhlIGNvZGUgcGF0aCBpcyBjbGVhci4gTXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IHplcm9lcyBpbiBvbiB0aG9zZSBrZXkgc3ltYm9sczogYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBgdmRwYXNpbV9kbWFfdW5tYXBgLiBUaGVzZSBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHRoZSB2aXJ0dWFsIGRldmljZSBwZXJmb3JtcyByZXNldHMgYW5kIG1hbmFnZXMgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgdW5tYXBwaW5nLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIGRhdGEgaW50ZWdyaXR5LgoKSSBzZWUgdGhyZWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZsYWdnZWQ6IGBWRFBBX1NJTWAsIGBWRFBBX1NJTV9ORVRgLCBhbmQgYFZEUEFfU0lNX0JMT0NLYC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCB0aGVzZSBsb29rIGxpa2UgZGlzdGluY3Qgc2ltdWxhdGlvbiBjb25maWd1cmF0aW9ucy4gTXkgaW1tZWRpYXRlIG1lbnRhbCBtYXBwaW5nIGlzIHRoYXQgYFZEUEFfU0lNYCBpcyB0aGUgYmFzZSwgZ2VuZXJhbCBzaW11bGF0aW9uIGVudmlyb25tZW50LCB3aXRoIGBWRFBBX1NJTV9ORVRgIGxpa2VseSBmb2N1c2luZyBvbiBuZXR3b3JrLXNwZWNpZmljIGVtdWxhdGlvbiwgYW5kIGBWRFBBX1NJTV9CTE9DS2AgaGFuZGxpbmcgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9ucy4gVGhpcyBpbmZvcm1hdGlvbiBsZXRzIG1lIGtub3cgd2hhdCBsZXZlbCBvZiBhbmFseXNpcyBpcyB3YXJyYW50ZWQuCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGRlZXBlciBpbnRvIHRoZSBjb2RlLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGluaXRpYWwgYW5hbHlzaXMgYW5kIHZlcmlmeSB0aGUgcmVzdWx0cyBvZiB0aGUgY2hhbmdlcy4gSSYjMzk7bGwgbmVlZCB0byBkbyBhIHF1aWNrIHNldCBvZiByZXN1bHRzIHRvIGNoZWNrIHRoZXNlIGZ1bmN0aW9uYWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZEUEFfU0lNJiMzNDssCiAgICAmIzM0O1ZEUEFfU0lNX05FVCYjMzQ7LAogICAgJiMzNDtWRFBBX1NJTV9CTE9DSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZkcGFzaW1fZG9fcmVzZXQmIzM0OywKICAgICYjMzQ7dmRwYXNpbV9kbWFfdW5tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2ZHBhc2ltX2RtYV91bm1hcCBieSBtb3ZpbmcgdGhlIGlvbW11X2xvY2sgYWNxdWlzaXRpb24gYmVmb3JlIGFjY2Vzc2luZyBpb21tdV9wdCwgYW5kIHJlc2V0cyBwZW5kaW5nX2tpY2sgaW4gdmRwYXNpbV9kb19yZXNldC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgdkRQQSBzaW11bGF0b3IgY29yZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkRQQV9TSU0mIzM0OywKICAgICYjMzQ7VkRQQV9TSU1fTkVUJiMzNDssCiAgICAmIzM0O1ZEUEFfU0lNX0JMT0NLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmRwYXNpbV9kb19yZXNldCYjMzQ7LAogICAgJiMzNDt2ZHBhc2ltX2RtYV91bm1hcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHZkcGFzaW1fZG1hX3VubWFwIGJ5IG1vdmluZyB0aGUgaW9tbXVfbG9jayBhY3F1aXNpdGlvbiBiZWZvcmUgYWNjZXNzaW5nIGlvbW11X3B0LCBhbmQgcmVzZXRzIHBlbmRpbmdfa2ljayBpbiB2ZHBhc2ltX2RvX3Jlc2V0LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSB2RFBBIHNpbXVsYXRvciBjb3JlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MjY6MjUuMTY3MjM4NTUxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY1NjAyNjQzMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkRQQV9TSU1cIixcbiAgICBcIlZEUEFfU0lNX05FVFwiLFxuICAgIFwiVkRQQV9TSU1fQkxPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZHBhc2ltX2RvX3Jlc2V0XCIsXG4gICAgXCJ2ZHBhc2ltX2RtYV91bm1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdmRwYXNpbV9kbWFfdW5tYXAgYnkgbW92aW5nIHRoZSBpb21tdV9sb2NrIGFjcXVpc2l0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgaW9tbXVfcHQsIGFuZCByZXNldHMgcGVuZGluZ19raWNrIGluIHZkcGFzaW1fZG9fcmVzZXQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIHZEUEEgc2ltdWxhdG9yIGNvcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjI1LjE2NzI0NTg4MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ5NzMwOTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzc0ZTY4NWQyYTQ1MzY5MWU1OTJkODMxYmI0ZmZlZDI4NTM2OTAxY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAwMjoyNjoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYyBiL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jXFxuaW5kZXggOGNiMWNjMmVhMTM5MWEuLmQ5MTQzYmQ5Y2ExNTU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jXFxuKysrIGIvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmNcXG5AQCAtMTYxLDYgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIHZkcGFzaW1fZG9fcmVzZXQoc3RydWN0IHZkcGFzaW0gKnZkcGFzaW0sIHUzMiBmbGFncylcXG4gXFx0fVxcbiBcXG4gXFx0dmRwYXNpbS1cXHUwMDNlcnVubmluZyA9IGZhbHNlO1xcbitcXHR2ZHBhc2ltLVxcdTAwM2VwZW5kaW5nX2tpY2sgPSBmYWxzZTtcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNnZkcGFzaW0tXFx1MDAzZWlvbW11X2xvY2spO1xcbiBcXG4gXFx0dmRwYXNpbS1cXHUwMDNlZmVhdHVyZXMgPSAwO1xcbkBAIC03MjUsMTIgKzcyNiwxMSBAQCBzdGF0aWMgaW50IHZkcGFzaW1fZG1hX3VubWFwKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRwYSwgdW5zaWduZWQgaW50IGFzaWQsXFxuIFxcdGlmIChhc2lkIFxcdTAwM2U9IHZkcGFzaW0tXFx1MDAzZWRldl9hdHRyLm5hcylcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHRzcGluX2xvY2soXFx1MDAyNnZkcGFzaW0tXFx1MDAzZWlvbW11X2xvY2spO1xcbiBcXHRpZiAodmRwYXNpbS1cXHUwMDNlaW9tbXVfcHRbYXNpZF0pIHtcXG4gXFx0XFx0dmhvc3RfaW90bGJfcmVzZXQoXFx1MDAyNnZkcGFzaW0tXFx1MDAzZWlvbW11W2FzaWRdKTtcXG4gXFx0XFx0dmRwYXNpbS1cXHUwMDNlaW9tbXVfcHRbYXNpZF0gPSBmYWxzZTtcXG4gXFx0fVxcbi1cXG4tXFx0c3Bpbl9sb2NrKFxcdTAwMjZ2ZHBhc2ltLVxcdTAwM2Vpb21tdV9sb2NrKTtcXG4gXFx0dmhvc3RfaW90bGJfZGVsX3JhbmdlKFxcdTAwMjZ2ZHBhc2ltLVxcdTAwM2Vpb21tdVthc2lkXSwgaW92YSwgaW92YSArIHNpemUgLSAxKTtcXG4gXFx0c3Bpbl91bmxvY2soXFx1MDAyNnZkcGFzaW0tXFx1MDAzZWlvbW11X2xvY2spO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MjY6MjUuODE3NTM1NjI2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTkwOTk1ODUyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRFBBX1NJTVwiLFxuICAgIFwiVkRQQV9TSU1fTkVUXCIsXG4gICAgXCJWRFBBX1NJTV9CTE9DS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZkcGFzaW1fZG9fcmVzZXRcIixcbiAgICBcInZkcGFzaW1fZG1hX3VubWFwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB2ZHBhc2ltX2RtYV91bm1hcCBieSBtb3ZpbmcgdGhlIGlvbW11X2xvY2sgYWNxdWlzaXRpb24gYmVmb3JlIGFjY2Vzc2luZyBpb21tdV9wdCwgYW5kIHJlc2V0cyBwZW5kaW5nX2tpY2sgaW4gdmRwYXNpbV9kb19yZXNldC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgdkRQQSBzaW11bGF0b3IgY29yZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNzRlNjg1ZDJhNDUzNjkxZTU5MmQ4MzFiYjRmZmVkMjg1MzY5MDFjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMjYgMDI6MjY6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYyBiL2RyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jXG5pbmRleCA4Y2IxY2MyZWExMzkxYS4uZDkxNDNiZDljYTE1NTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uY1xuKysrIGIvZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmNcbkBAIC0xNjEsNiArMTYxLDcgQEAgc3RhdGljIHZvaWQgdmRwYXNpbV9kb19yZXNldChzdHJ1Y3QgdmRwYXNpbSAqdmRwYXNpbSwgdTMyIGZsYWdzKVxuIFx0fVxuIFxuIFx0dmRwYXNpbS1cdTAwM2VydW5uaW5nID0gZmFsc2U7XG4rXHR2ZHBhc2ltLVx1MDAzZXBlbmRpbmdfa2ljayA9IGZhbHNlO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2dmRwYXNpbS1cdTAwM2Vpb21tdV9sb2NrKTtcbiBcbiBcdHZkcGFzaW0tXHUwMDNlZmVhdHVyZXMgPSAwO1xuQEAgLTcyNSwxMiArNzI2LDExIEBAIHN0YXRpYyBpbnQgdmRwYXNpbV9kbWFfdW5tYXAoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1bnNpZ25lZCBpbnQgYXNpZCxcbiBcdGlmIChhc2lkIFx1MDAzZT0gdmRwYXNpbS1cdTAwM2VkZXZfYXR0ci5uYXMpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0c3Bpbl9sb2NrKFx1MDAyNnZkcGFzaW0tXHUwMDNlaW9tbXVfbG9jayk7XG4gXHRpZiAodmRwYXNpbS1cdTAwM2Vpb21tdV9wdFthc2lkXSkge1xuIFx0XHR2aG9zdF9pb3RsYl9yZXNldChcdTAwMjZ2ZHBhc2ltLVx1MDAzZWlvbW11W2FzaWRdKTtcbiBcdFx0dmRwYXNpbS1cdTAwM2Vpb21tdV9wdFthc2lkXSA9IGZhbHNlO1xuIFx0fVxuLVxuLVx0c3Bpbl9sb2NrKFx1MDAyNnZkcGFzaW0tXHUwMDNlaW9tbXVfbG9jayk7XG4gXHR2aG9zdF9pb3RsYl9kZWxfcmFuZ2UoXHUwMDI2dmRwYXNpbS1cdTAwM2Vpb21tdVthc2lkXSwgaW92YSwgaW92YSArIHNpemUgLSAxKTtcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnZkcGFzaW0tXHUwMDNlaW9tbXVfbG9jayk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjoyNS44MTc1MzY4OTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA0NDA1NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVkRQQSBTaW11bGF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jYC4gVGhlIGNvcmUgY2hhbmdlcyBzZWVtIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGxldCdzIGJyZWFrIHRoZW0gZG93biBhbmQgc2VlIGlmIHRoZXkgbWFrZSBjb21wbGV0ZSBzZW5zZSB3aXRoaW4gdGhlIGxhcmdlciBjb250ZXh0IG9mIHRoZSBWRFBBIHNpbXVsYXRpb24gZW52aXJvbm1lbnQuXG5cbkZpcnN0LCB0aGlzIGFkZGl0aW9uIG9mIGB2ZHBhc2ltLVx1MDAzZXBlbmRpbmdfa2ljayA9IGZhbHNlO2Agd2l0aGluIGB2ZHBhc2ltX2RvX3Jlc2V0YCBpcyBpbnRlcmVzdGluZy4gUmVzZXQgb3BlcmF0aW9ucyBhcmUgYWx3YXlzIHBvdGVudGlhbCBzb3VyY2VzIG9mIHN1YnRsZSBidWdzLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGhlcmUuIFRoZSBgcGVuZGluZ19raWNrYCBmbGFnICptdXN0KiByZWxhdGUgdG8gc29tZSBmb3JtIG9mIGludGVycnVwdCBvciBldmVudCBoYW5kbGluZyBkdXJpbmcgdGhlIHJlc2V0IHByb2Nlc3MuIFdoYXQncyB0aGUgc3RhdGUgbWFjaGluZSBhc3NvY2lhdGVkIHdpdGggYSBWRFBBIHJlc2V0PyBJcyB0aGlzIGVuc3VyaW5nIHRoYXQgYSBwZW5kaW5nIGtpY2sgaXMgY2xlYXJlZCBiZWZvcmUgYSBuZXcgcmVzZXQgY3ljbGUgYmVnaW5zPyBXZSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgcHJldmVudHMgYW55IHNvcnQgb2Ygc3B1cmlvdXMgaW50ZXJydXB0cyBvciByYWNlIGNvbmRpdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiBvciBpbmNvcnJlY3QgZGV2aWNlIHN0YXRlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGxpbmcgY29udGV4dCBvZiBgdmRwYXNpbV9kb19yZXNldGAgYW5kIHNlZSBob3cgYHBlbmRpbmdfa2lja2AgaXMgdXNlZCBlbHNld2hlcmUgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgcmFtaWZpY2F0aW9ucy5cblxuTmV4dCwgdGhlIHJlbG9jYXRpb24gb2YgYHNwaW5fbG9jayhcdTAwMjZ2ZHBhc2ltLVx1MDAzZWlvbW11X2xvY2spO2AgYmVmb3JlIHRoZSBjb25kaXRpb25hbCBgaWYgKHZkcGFzaW0tXHUwMDNlaW9tbXVfcHRbYXNpZF0pYCB3aXRoaW4gYHZkcGFzaW1fZG1hX3VubWFwYCBjYXRjaGVzIG15IGV5ZS4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBjaGFuZ2UgaW4gdGhlIGxvY2tpbmcgc3RyYXRlZ3kgYXJvdW5kIHRoZSBJT01NVSBwYWdlIHRhYmxlIGFjY2Vzcy4gV2h5IHRoZSBjaGFuZ2U/IElzIHRoaXMgdG8gcHJvdmlkZSBmaW5lci1ncmFpbmVkIGxvY2tpbmc/IEFyZSB3ZSB3b3JyaWVkIGFib3V0IGNvbnRlbnRpb24sIG9yIHBlcmhhcHMgZW5zdXJpbmcgdGhhdCBgaW9tbXVfcHRgIGlzIGNvbnNpc3RlbnQgYXQgYWxsIHRpbWVzIHdoZW4gZG9pbmcgSU9NTVUgdW5tYXBwaW5nPyBXZSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgb24gcGVyZm9ybWFuY2UgYW5kIHdoZXRoZXIgaXQgaXMgYSBwb3RlbnRpYWwgY2F1c2Ugb2YgZGVhZGxvY2sgYW5kIHJhY2UgY29uZGl0aW9ucy4gVGhpcyBpcyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IGNoYW5nZSwgYW5kIEkgbmVlZCB0byByZXZpZXcgdGhlIGNvZGUgcGF0aCBjYXJlZnVsbHkuXG5cbkJlZm9yZSBkaXZpbmcgZGVlcCwgSSBuZWVkIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGZsYWdzIGluIHRoZSBrZXJuZWwgY29uZmlnIGZvciBgZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmNgLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIFZEUEEgc2ltdWxhdGlvbiBkcml2ZXIgaXMgYWN0dWFsbHkgZW5hYmxlZCB3aXRoIHRoZSBuZWNlc3NhcnkgZmVhdHVyZXMsIGFuZCB0byB1bmRlcnN0YW5kIHdoaWNoIGNvbmZpZ3VyYXRpb25zIGNvdWxkIGluZmx1ZW5jZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGNoYW5nZXMgYmVpbmcgcHJvcG9zZWQgaGVyZS4gQXJlIHRoZXNlIGNoYW5nZXMgY29uZGl0aW9uYWwgb24gc3BlY2lmaWMgc2ltdWxhdGlvbiBmZWF0dXJlcyBvciBoYXJkd2FyZSBjb25maWd1cmF0aW9ucz8gS25vd2luZyB0aGF0IHdpbGwgcHJvdmlkZSB2YWx1YWJsZSBjb250ZXh0IGZvciBhIGNvbXByZWhlbnNpdmUgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjozMC42MjE5NDQ3ODdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQ3Nzk3MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmRwYV9zaW0ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmRwYS92ZHBhX3NpbS9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfVkRQQV9TSU0pICs9IHZkcGFfc2ltLm9cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vTWFrZWZpbGUtMy1vYmotJChDT05GSUdfVkRQQV9TSU1fTkVUKSArPSB2ZHBhX3NpbV9uZXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjozMC43MTY3MzU1MDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzMzNzg0NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgVkRQQV9TSU1gIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBgVkRQQV9TSU1gIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aHMgb2Yga2V5IGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBzaW11bGF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpbmdzIGFyZSBiZWluZyBtYW5hZ2VkLiBJJ20gZm9jdXNpbmcgb24gdGhlIHJlc2V0IGFuZCBETUEgdW5tYXAgb3BlcmF0aW9ucy4gTXkgbGluZSBvZiBxdWVzdGlvbmluZyBnb2VzIGxpa2UgdGhpczogQ2FuIEkgcmVhY2ggYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBgdmRwYXNpbV9kbWFfdW5tYXBgP1xuXG5JIGtub3cgYHZkcGFzaW1fZG9fcmVzZXRgIGlzIGxpa2VseSBjYWxsZWQgYnkgc29tZXRoaW5nIGxpa2UgYHZkcGFzaW1fcmVzZXRgLCBvciBhIHZlcnkgc2ltaWxhciBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgcmVzZXQgZnVuY3Rpb25hbGl0eS4gVGhlIGNvZGUgd291bGQgYmUgc3RydWN0dXJlZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgbWFrZXMgc2Vuc2UgZm9yIGEgcmVzZXQgdG8gdHJpZ2dlciB0aGlzIGFjdGlvbi4gSXQncyBhIHR5cGljYWwgYXBwcm9hY2gsIGFuZCBJIHNob3VsZCBiZSBhYmxlIHRvIHF1aWNrbHkgY29uZmlybSB0aGlzIGluIHRoZSBjb2RlYmFzZS5cblxuVGhlbiwgcmVnYXJkaW5nIGB2ZHBhc2ltX2RtYV91bm1hcGAsIEkgcmVjYWxsIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGB2ZHBhX2NvbmZpZ19vcHNgIGNhbGxiYWNrLiBUaGlzIGNhbGxiYWNrIHN0cnVjdHVyZSBhbGxvd3MgZm9yIHNwZWNpZmljIG9wZXJhdGlvbnMsIGFuZCBpdCBtZWFucyBgdmRwYXNpbV9kbWFfdW5tYXBgIGlzIGxpa2VseSBob29rZWQgaW50byB0aGUgc3lzdGVtIGF0IGEgdmVyeSBkZWZpbmVkIGludGVyZmFjZS4gU28sIEkgaGF2ZSB0byBpbnNwZWN0IHRoZSBicm9hZGVyIGRlc2lnbiBzdXJyb3VuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MjY6MzQuNDUwNTIyMzEyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NjUzNTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZkcGFzaW1fZG9fcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZHBhL3ZkcGFfc2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz0xMjc9c3RhdGljIHZvaWQgdmRwYXNpbV92cV9yZXNldChzdHJ1Y3QgdmRwYXNpbSAqdmRwYXNpbSxcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTE0MS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzoxNDI6c3RhdGljIHZvaWQgdmRwYXNpbV9kb19yZXNldChzdHJ1Y3QgdmRwYXNpbSAqdmRwYXNpbSwgdTMyIGZsYWdzKVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTE0My17XFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz01MDA9c3RhdGljIGludCB2ZHBhc2ltX2NvbXBhdF9yZXNldChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHUzMiBmbGFncylcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTUwNS1cXHR2ZHBhc2ltLVxcdTAwM2VzdGF0dXMgPSAwO1xcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jOjUwNjpcXHR2ZHBhc2ltX2RvX3Jlc2V0KHZkcGFzaW0sIGZsYWdzKTtcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy01MDctXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2ZHBhc2ltLVxcdTAwM2VtdXRleCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjM0LjUzMDE4MTM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1NjkwNjkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYHZkcGFzaW1fZG1hX3VubWFwYCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byBgdmRwYXNpbV9kbWFfdW5tYXBgLiBJJ20gc3RhcnRpbmcgaGVyZSBiZWNhdXNlLi4uIHdlbGwsICp3aHkqIGFyZSB3ZSBsb29raW5nIGF0IGl0PyBXaGF0J3MgdGhlIGNvbnRleHQ/IElzIHRoaXMgcGFydCBvZiBhIGRlYnVnZ2luZyBzZXNzaW9uLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3IgcGVyaGFwcyBhIHNlY3VyaXR5IHJldmlldz8gS25vd2luZyB0aGUgXCJ3aHlcIiB3aWxsIHNpZ25pZmljYW50bHkgaW5mbHVlbmNlIGhvdyBkZWVwbHkgSSBuZWVkIHRvIGdvLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIHR5cGljYWwgcmVzcG9uc2liaWxpdGllcyBvZiBhIERNQSB1bm1hcCBmdW5jdGlvbi4gSXQncyBhbG1vc3QgY2VydGFpbmx5IHJlc3BvbnNpYmxlIGZvciBjbGVhbmluZyB1cCB0aGUgRE1BIG1hcHBpbmcgc2V0dXAgaW5pdGlhdGVkIGJ5IGEgcHJldmlvdXMgYG1hcGAgY2FsbC4gVGhhdCBtZWFucyBlbnN1cmluZyB0aGF0IHRoZSBwaHlzaWNhbCBhZGRyZXNzZXMgdXNlZCBieSB0aGUgRE1BIGVuZ2luZSBhcmUgbm8gbG9uZ2VyIGFjY2Vzc2libGUgdG8gdGhlIENQVSAob3IgYXQgbGVhc3QsIHRoYXQgdGhlIENQVSBpcyBub3RpZmllZCBhbmQgYXBwcm9wcmlhdGVseSBzeW5jaHJvbml6ZWQgcmVnYXJkaW5nIHRoZSBjYWNoZSBjb2hlcmVuY3kgaW1wbGljYXRpb25zKS5cblxuSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBiYXNpYyBzdHJ1Y3R1cmUuIElzIGl0IGhhbmRsaW5nIHNjYXR0ZXItZ2F0aGVyIGxpc3RzPyBXaGF0IGtpbmQgb2YgZXJyb3IgY2hlY2tpbmcgaXMgaW1wbGVtZW50ZWQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyByYWNlIGNvbmRpdGlvbnMgdGhhdCBqdW1wIG91dD8gU3BlY2lmaWNhbGx5LCBJJ20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKlN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOioqIElzIGl0IHVzaW5nIHNwaW5sb2NrcywgbXV0ZXhlcywgb3IgYXRvbWljIG9wZXJhdGlvbnM/IEhvdyByb2J1c3QgaXMgdGhlIGxvY2tpbmcgc2NoZW1lIGluIHRoZSBjb250ZXh0IG9mIGNvbmN1cnJlbnQgYWNjZXNzIG9yIGludGVycnVwdHM/XG4qICAgKipDYWNoZSBpbnZhbGlkYXRpb24vZmx1c2hpbmc6KiogSXMgY2FjaGUgY29oZXJlbmN5IGJlaW5nIHByb3Blcmx5IG1hbmFnZWQ/IEFyZSB0aGUgbmVjZXNzYXJ5IGNhY2hlIG9wZXJhdGlvbnMgKGludmFsaWRhdGlvbiwgZmx1c2hpbmcsIGV0Yy4pIHByZXNlbnQgdG8gZ3VhcmFudGVlIGRhdGEgaW50ZWdyaXR5IGFmdGVyIHRoZSBETUEgdHJhbnNmZXI/IE9yLCBpcyBpdCByZWx5aW5nIG9uIG1vcmUgZ2VuZXJhbCBjYWNoZSBtYWludGVuYW5jZSBtZWNoYW5pc21zP1xuKiAgICoqRGV2aWNlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zOioqIERvZXMgaXQgc2VlbSB0byBiZSBjb3JyZWN0bHkgaGFuZGxpbmcgdGhlIHF1aXJrcyBvZiB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgdGhpcyBkcml2ZXIgaXMgaW50ZW5kZWQgdG8gbWFuYWdlPyBEb2VzIGl0IHRha2UgaW50byBhY2NvdW50IHNwZWNpZmljIERNQSBlbmdpbmUgY2hhcmFjdGVyaXN0aWNzLCBidWZmZXIgYWxpZ25tZW50cywgb3IgbWVtb3J5IGFjY2VzcyByZXF1aXJlbWVudHMgb2YgdGhlIFZEUD9cbiogICAqKkVycm9yIGhhbmRsaW5nOioqIElzIHRoZXJlIHByb3BlciBlcnJvciBjaGVja2luZyBmb3IgaW52YWxpZCBhZGRyZXNzZXMsIG1hcHBpbmcgZXJyb3JzLCBvciBoYXJkd2FyZSBpc3N1ZXM/IEFyZSBwb3RlbnRpYWwgZXJyb3JzIGdyYWNlZnVsbHkgaGFuZGxlZD9cblxuQmV5b25kIHRoZSBiYXNpYyBtZWNoYW5pY3MsIEknbGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIHN1YnRsZSBpc3N1ZXMsIGxpa2UgbWVtb3J5IGxlYWtzIChmYWlsdXJlIHRvIGZyZWUgcmVzb3VyY2VzKSBvciB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXRpZXMuIEEgZ29vZCBwbGFjZSB0byBzdGFydCB3b3VsZCBiZSB0byBleGFtaW5lIGl0cyBpbnRlcmFjdGlvbnMgd2l0aCBhbnkgZGV2aWNlLXNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBvciByZXNvdXJjZSBtYW5hZ2VtZW50LiBXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBJJ2xsIHByb2JhYmx5IHN0YXJ0IGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgd2l0aCB0aGUgYHZkcGFzaW1fZG1hX21hcGAgZnVuY3Rpb24gdG8gdmVyaWZ5IHRoYXQgdGhlIHVubWFwIG9wZXJhdGlvbiBjb3JyZWN0bHkgbWlycm9ycyB0aGUgc2V0dXAsIGFuZCBpcyBub3Qgc2tpcHBpbmcgYW55IGNydWNpYWwgZGUtYWxsb2NhdGlvbiBzdGVwcy5cblxuVWx0aW1hdGVseSwgSSBuZWVkIHRvIGFuc3dlciB0aGlzOiBpcyB0aGlzIGltcGxlbWVudGF0aW9uIHJvYnVzdCwgZWZmaWNpZW50LCBhbmQgc2VjdXJlLCBjb25zaWRlcmluZyB0aGUgcGxhdGZvcm0gYW5kIGludGVuZGVkIHVzYWdlPyBBbmQgaWYgdGhlcmUgYXJlIGFueSBzaG9ydGNvbWluZ3MsIEknbSBnb2luZyB0byB3YW50IHRvIGtub3cgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUwOCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjM5LjU4NzA5MTM3NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzA3NzA5MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmRwYXNpbV9kbWFfdW5tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZHBhL3ZkcGFfc2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz02OTk9c3RhdGljIGludCB2ZHBhc2ltX2RtYV9tYXAoc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhLCB1bnNpZ25lZCBpbnQgYXNpZCxcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTcyMC1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo3MjE6c3RhdGljIGludCB2ZHBhc2ltX2RtYV91bm1hcChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHVuc2lnbmVkIGludCBhc2lkLFxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTcyMi1cXHRcXHRcXHQgICAgIHU2NCBpb3ZhLCB1NjQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jPTc2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfY29uZmlnX29wcyB2ZHBhc2ltX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy03OTYtXFx0LmRtYV9tYXAgICAgICAgICAgICAgICAgPSB2ZHBhc2ltX2RtYV9tYXAsXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM6Nzk3OlxcdC5kbWFfdW5tYXAgICAgICAgICAgICAgID0gdmRwYXNpbV9kbWFfdW5tYXAsXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNzk4LVxcdC5yZXNldF9tYXAgICAgICAgICAgICAgID0gdmRwYXNpbV9yZXNldF9tYXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjM5LjcxNzg2ODE0MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjgxNjE2MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFZEUEEgU0lNIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSByYWNlIGNvbmRpdGlvbiBvciBhIG1pc3NpbmcgbG9jayB3aXRoaW4gYHZkcGFzaW1fZG1hX3VubWFwYC4gVGhhdCdzIGEgY3JpdGljYWwgZml4LCBkZWZpbml0ZWx5IG5lZWRzIGF0dGVudGlvbi4gSXQgYWxzbyBhZGRzIGB2ZHBhc2ltLVx1MDAzZXBlbmRpbmdfa2ljayA9IGZhbHNlO2AgdG8gYHZkcGFzaW1fZG9fcmVzZXRgLiBGdW5jdGlvbmFsbHksIHRoaXMgc2VlbXMgY29ycmVjdCwgYW5kIHRoZSBjb2RlIHBhdGggaXMgcmVhY2hhYmxlLCB3aGljaCBpcyBnb29kLiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwYXRjaCBpcyBgVkRQQV9TSU1gLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgY29tcG9uZW50IGl0IGFmZmVjdHMuXG5cbk15IHByaW1hcnkgZm9jdXMgaGVyZSBpcyBvbiB0aGUgdHdvIHN5bWJvbHMgaWRlbnRpZmllZDogYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBgdmRwYXNpbV9kbWFfdW5tYXBgLiBJIG5lZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBpbXBhY3RzIHRoZSBETUEgdW5tYXBwaW5nIHByb2Nlc3MsIGFuZCB0aGUgcmVzZXQgbWVjaGFuaXNtLlxuXG5UaGUgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgY3Jvc3MtcmVmZXJlbmNlIGFnYWluc3Qgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBmaXggZG9lc24ndCBpbmFkdmVydGVudGx5IGludHJvZHVjZSBhbnkgaXNzdWVzIHdpdGggb3RoZXIgaW50ZXJhY3RpbmcgZmVhdHVyZXMsIG9yIGlmIGl0IHdpbGwgbmVlZCBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBjb25maWdzIG5lZWRlZCwgb3IgaWYgdGhpcyBjaGFuZ2UgbmVlZHMgZnVydGhlciBhZGp1c3RtZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ0NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjo0My4wNDYwMzIyMTlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNDU4NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRFBBX1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZkcGEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmRwYS9LY29uZmlnPTEwPWlmIFZEUEFcXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzoxMjpjb25maWcgVkRQQV9TSU1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy0xMy1cXHR0cmlzdGF0ZSBcXFwidkRQQSBkZXZpY2Ugc2ltdWxhdG9yIGNvcmVcXFwiXFxuLS1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL3ZkcGEvS2NvbmZpZzoyMTpjb25maWcgVkRQQV9TSU1fTkVUXFxuZHJpdmVycy92ZHBhL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcInZEUEEgc2ltdWxhdG9yIGZvciBuZXR3b3JraW5nIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTI3LVxcbmRyaXZlcnMvdmRwYS9LY29uZmlnOjI4OmNvbmZpZyBWRFBBX1NJTV9CTE9DS1xcbmRyaXZlcnMvdmRwYS9LY29uZmlnLTI5LVxcdHRyaXN0YXRlIFxcXCJ2RFBBIHNpbXVsYXRvciBmb3IgYmxvY2sgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjo0My4xMzg0OTYyNzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzMTA5NzI0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhpcyDigJMgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LlxuXG4qKlJlZmxlY3Rpbmcgb24gU2ltdWxhdG9yIEFyY2hpdGVjdHVyZSoqXG5cblJpZ2h0LCBzbyB0aGUgY2VudHJhbCBwaWVjZSBoZXJlIGlzIGNsZWFybHkgYFZEUEFfU0lNYC4gVGhhdCdzIG91ciBjb3JlIHNpbXVsYXRvciwgdGhlIGVuZ2luZS4gSSdtIHRoaW5raW5nIHdlJ3JlIGdvaW5nIHRvIHdhbnQgdmFyaWFudHMgdG8gaGFuZGxlIGRpZmZlcmVudCBsZXZlbHMgb2YgYWJzdHJhY3Rpb24gb3IgZGlmZmVyZW50IGludGVncmF0aW9uIGFwcHJvYWNoZXMuIEl0IG1ha2VzIHNlbnNlIHRoYXQgYFZEUEFfU0lNX05FVGAgb3IgYFZEUEFfU0lNX0JMT0NLYCBtaWdodCBiZSBpbnN0YW50aWF0aW9ucyBvciB3cmFwcGVycyBhcm91bmQgdGhlIGNvcmUgZm9yIG5ldHdvcmstbGV2ZWwgb3IgYmxvY2stbGV2ZWwgc2ltdWxhdGlvbi4gVGhlcmVmb3JlLCBJJ20gbGVhbmluZyB0b3dhcmRzIGRlZmluaW5nIGFsbCB0aHJlZTogYFZEUEFfU0lNYCwgYFZEUEFfU0lNX05FVGAsIGFuZCBgVkRQQV9TSU1fQkxPQ0tgLiBUaGF0IGNvdmVycyBvdXIgYmFzZXMgYW5kIGdpdmVzIHVzIGZsZXhpYmlsaXR5IGRvd24gdGhlIGxpbmUuXG5cbk5vdywgYSBiaXQgb2YgYSB3cmlua2xlIGhhcyBwcmVzZW50ZWQgaXRzZWxmIGFzIEkgcmVjYWxsIGhvdyB0aGUgcmVzZXQgcHJvY2VkdXJlIHNlZW1zIHRvIHdvcmsuIFRoZSBgdmRwYXNpbV9kb19yZXNldGAgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCBkaXJlY3RseSwgaXQgYXBwZWFycyB0aGF0IHRoZSBgdmRwYXNpbV9jb21wYXRfcmVzZXRgIGZ1bmN0aW9uIGNhbGxzIGl0LiBUaGlzIGluIHR1cm4sIGlzIHRoZW4gY2FsbGVkIGJ5IGVpdGhlciBgdmRwYXNpbV9yZXNldGAgb3IgYSBzaW1pbGFyIGZ1bmN0aW9uIGNhbGwuIEdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHJlc2V0LCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHZkcGFzaW1fY29tcGF0X3Jlc2V0YCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBiZWhhdmluZyBhcyBleHBlY3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk5OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoyNjo0Ni45Njk1OTYzODJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxODUxMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZkcGFzaW1fY29tcGF0X3Jlc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmRwYS92ZHBhX3NpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM9NDkwPXN0YXRpYyB2b2lkIHZkcGFzaW1fc2V0X3N0YXR1cyhzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHU4IHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTQ5OS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo1MDA6c3RhdGljIGludCB2ZHBhc2ltX2NvbXBhdF9yZXNldChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHUzMiBmbGFncylcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYy01MDEte1xcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmM9NTEyPXN0YXRpYyBpbnQgdmRwYXNpbV9yZXNldChzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEpXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNTEzLXtcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo1MTQ6XFx0cmV0dXJuIHZkcGFzaW1fY29tcGF0X3Jlc2V0KHZkcGEsIDApO1xcbmRyaXZlcnMvdmRwYS92ZHBhX3NpbS92ZHBhX3NpbS5jLTUxNS19XFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz03NjM9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZHBhX2NvbmZpZ19vcHMgdmRwYXNpbV9jb25maWdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNzg2LVxcdC5yZXNldFxcdFxcdFxcdD0gdmRwYXNpbV9yZXNldCxcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo3ODc6XFx0LmNvbXBhdF9yZXNldFxcdFxcdD0gdmRwYXNpbV9jb21wYXRfcmVzZXQsXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtNzg4LVxcdC5zdXNwZW5kXFx0XFx0PSB2ZHBhc2ltX3N1c3BlbmQsXFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYz04MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZHBhX2NvbmZpZ19vcHMgdmRwYXNpbV9iYXRjaF9jb25maWdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtODI2LVxcdC5yZXNldFxcdFxcdFxcdD0gdmRwYXNpbV9yZXNldCxcXG5kcml2ZXJzL3ZkcGEvdmRwYV9zaW0vdmRwYV9zaW0uYzo4Mjc6XFx0LmNvbXBhdF9yZXNldFxcdFxcdD0gdmRwYXNpbV9jb21wYXRfcmVzZXQsXFxuZHJpdmVycy92ZHBhL3ZkcGFfc2ltL3ZkcGFfc2ltLmMtODI4LVxcdC5zdXNwZW5kXFx0XFx0PSB2ZHBhc2ltX3N1c3BlbmQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjQ3LjA1MTQ1NDQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1Mzk4NTU4NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gdGhlc2UgY2hhbmdlcyBhcmUgZGVmaW5pdGVseSBpbXBhY3RmdWwgYW5kIGRpcmVjdGx5IGFkZHJlc3Mgc29tZSBjb3JlIGZ1bmN0aW9uYWxpdGllcyDigJMgdGhleSdyZSByZWFjaGFibGUsIG1lYW5pbmcgdGhlIGNvZGUgcGF0aCBpcyBjbGVhci4gTXkgYXR0ZW50aW9uIGltbWVkaWF0ZWx5IHplcm9lcyBpbiBvbiB0aG9zZSBrZXkgc3ltYm9sczogYHZkcGFzaW1fZG9fcmVzZXRgIGFuZCBgdmRwYXNpbV9kbWFfdW5tYXBgLiBUaGVzZSBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHRoZSB2aXJ0dWFsIGRldmljZSBwZXJmb3JtcyByZXNldHMgYW5kIG1hbmFnZXMgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgdW5tYXBwaW5nLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UgYW5kIGRhdGEgaW50ZWdyaXR5LlxuXG5JIHNlZSB0aHJlZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZmxhZ2dlZDogYFZEUEFfU0lNYCwgYFZEUEFfU0lNX05FVGAsIGFuZCBgVkRQQV9TSU1fQkxPQ0tgLiBHaXZlbiBteSBleHBlcnRpc2UsIHRoZXNlIGxvb2sgbGlrZSBkaXN0aW5jdCBzaW11bGF0aW9uIGNvbmZpZ3VyYXRpb25zLiBNeSBpbW1lZGlhdGUgbWVudGFsIG1hcHBpbmcgaXMgdGhhdCBgVkRQQV9TSU1gIGlzIHRoZSBiYXNlLCBnZW5lcmFsIHNpbXVsYXRpb24gZW52aXJvbm1lbnQsIHdpdGggYFZEUEFfU0lNX05FVGAgbGlrZWx5IGZvY3VzaW5nIG9uIG5ldHdvcmstc3BlY2lmaWMgZW11bGF0aW9uLCBhbmQgYFZEUEFfU0lNX0JMT0NLYCBoYW5kbGluZyBibG9jayBkZXZpY2UgaW50ZXJhY3Rpb25zLiBUaGlzIGluZm9ybWF0aW9uIGxldHMgbWUga25vdyB3aGF0IGxldmVsIG9mIGFuYWx5c2lzIGlzIHdhcnJhbnRlZC5cblxuQWxyaWdodCwgYmVmb3JlIGRpdmluZyBkZWVwZXIgaW50byB0aGUgY29kZSwgbGV0J3Mgc3RhcnQgd2l0aCBhIHF1aWNrIGluaXRpYWwgYW5hbHlzaXMgYW5kIHZlcmlmeSB0aGUgcmVzdWx0cyBvZiB0aGUgY2hhbmdlcy4gSSdsbCBuZWVkIHRvIGRvIGEgcXVpY2sgc2V0IG9mIHJlc3VsdHMgdG8gY2hlY2sgdGhlc2UgZnVuY3Rpb25hbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTk4LCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjI2OjUxLjU5MTMxMzUxN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjE3NTkyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkRQQV9TSU1cIixcbiAgICBcIlZEUEFfU0lNX05FVFwiLFxuICAgIFwiVkRQQV9TSU1fQkxPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZHBhc2ltX2RvX3Jlc2V0XCIsXG4gICAgXCJ2ZHBhc2ltX2RtYV91bm1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdmRwYXNpbV9kbWFfdW5tYXAgYnkgbW92aW5nIHRoZSBpb21tdV9sb2NrIGFjcXVpc2l0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgaW9tbXVfcHQsIGFuZCByZXNldHMgcGVuZGluZ19raWNrIGluIHZkcGFzaW1fZG9fcmVzZXQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIHZEUEEgc2ltdWxhdG9yIGNvcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkRQQV9TSU1cIixcbiAgICBcIlZEUEFfU0lNX05FVFwiLFxuICAgIFwiVkRQQV9TSU1fQkxPQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZHBhc2ltX2RvX3Jlc2V0XCIsXG4gICAgXCJ2ZHBhc2ltX2RtYV91bm1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdmRwYXNpbV9kbWFfdW5tYXAgYnkgbW92aW5nIHRoZSBpb21tdV9sb2NrIGFjcXVpc2l0aW9uIGJlZm9yZSBhY2Nlc3NpbmcgaW9tbXVfcHQsIGFuZCByZXNldHMgcGVuZGluZ19raWNrIGluIHZkcGFzaW1fZG9fcmVzZXQuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIHZEUEEgc2ltdWxhdG9yIGNvcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowh8lpm[1] Phase: Succeeded StartedAt: 2026-06-26 02:27:03 +0000 UTC FinishedAt: 2026-06-26 02:27:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 02:27:03 +0000 UTC FinishedAt: 2026-06-26 02:27:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2] Phase: Succeeded StartedAt: 2026-06-26 02:27:03 +0000 UTC FinishedAt: 2026-06-26 04:13:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:27:03 +0000 UTC FinishedAt: 2026-06-26 04:13:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:27:03 +0000 UTC FinishedAt: 2026-06-26 02:27:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:27:03 +0000 UTC FinishedAt: 2026-06-26 02:27:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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-workflowh8lpm/series-workflowh8lpm-convert-artifact-5612648/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:27:23 +0000 UTC FinishedAt: 2026-06-26 02:49:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:27:23 +0000 UTC FinishedAt: 2026-06-26 02:49:41 +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:*ce5ad6a3-7c8c-4032-8d3b-83fab07e1a24,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-workflowh8lpm/series-workflowh8lpm-convert-artifact-5612648/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": "1dea5402-3e1a-42cf-93ee-06fc266662fc", "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-workflowh8lpm/series-workflowh8lpm-build-action-2945067486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:27:23 +0000 UTC FinishedAt: 2026-06-26 02:49:31 +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:*ce5ad6a3-7c8c-4032-8d3b-83fab07e1a24,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-workflowh8lpm/series-workflowh8lpm-convert-artifact-5612648/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": "1dea5402-3e1a-42cf-93ee-06fc266662fc", "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-workflowh8lpm/series-workflowh8lpm-build-action-2945067486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:49:41 +0000 UTC FinishedAt: 2026-06-26 02:49:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:49:41 +0000 UTC FinishedAt: 2026-06-26 02:49:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:49:41 +0000 UTC FinishedAt: 2026-06-26 02:49:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:49:41 +0000 UTC FinishedAt: 2026-06-26 02:49:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-workflowh8lpm/series-workflowh8lpm-convert-artifact-4208019535/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:49:51 +0000 UTC FinishedAt: 2026-06-26 02:52:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:49:51 +0000 UTC FinishedAt: 2026-06-26 02:52:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1dea5402-3e1a-42cf-93ee-06fc266662fc,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-workflowh8lpm/series-workflowh8lpm-build-action-2945067486/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-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:52:25 +0000 UTC FinishedAt: 2026-06-26 02:52:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:52:25 +0000 UTC FinishedAt: 2026-06-26 02:52:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:52:25 +0000 UTC FinishedAt: 2026-06-26 03:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:52:25 +0000 UTC FinishedAt: 2026-06-26 03:17:45 +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:*ce5ad6a3-7c8c-4032-8d3b-83fab07e1a24,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-workflowh8lpm/series-workflowh8lpm-convert-artifact-4208019535/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": "3562ee8e-ad78-4131-b4f7-588240dae5ce", "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-workflowh8lpm/series-workflowh8lpm-build-action-3314339939/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 02:52:25 +0000 UTC FinishedAt: 2026-06-26 03:17:35 +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:*ce5ad6a3-7c8c-4032-8d3b-83fab07e1a24,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-workflowh8lpm/series-workflowh8lpm-convert-artifact-4208019535/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": "3562ee8e-ad78-4131-b4f7-588240dae5ce", "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-workflowh8lpm/series-workflowh8lpm-build-action-3314339939/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:17:45 +0000 UTC FinishedAt: 2026-06-26 03:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:17:45 +0000 UTC FinishedAt: 2026-06-26 03:17:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:17:45 +0000 UTC FinishedAt: 2026-06-26 03:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:17:45 +0000 UTC FinishedAt: 2026-06-26 03:19:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3562ee8e-ad78-4131-b4f7-588240dae5ce,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-workflowh8lpm/series-workflowh8lpm-build-action-3314339939/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-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:20:01 +0000 UTC FinishedAt: 2026-06-26 04:13:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:20:01 +0000 UTC FinishedAt: 2026-06-26 04:13:13 +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":["vdpasim_do_reset","vdpasim_dma_unmap"],"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:*1dea5402-3e1a-42cf-93ee-06fc266662fc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3562ee8e-ad78-4131-b4f7-588240dae5ce,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-workflowh8lpm/series-workflowh8lpm-build-action-2945067486/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-workflowh8lpm/series-workflowh8lpm-build-action-3314339939/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:20:01 +0000 UTC FinishedAt: 2026-06-26 03:20:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:20:01 +0000 UTC FinishedAt: 2026-06-26 03:20:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vdpasim_do_reset","vdpasim_dma_unmap"],"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-workflowh8lpm/series-workflowh8lpm-convert-artifact-3713956616/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:20:01 +0000 UTC FinishedAt: 2026-06-26 03:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:20:01 +0000 UTC FinishedAt: 2026-06-26 03:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:20:01 +0000 UTC FinishedAt: 2026-06-26 03:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:20:11 +0000 UTC FinishedAt: 2026-06-26 04:13:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh8lpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"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":["vdpasim_do_reset","vdpasim_dma_unmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["VDPA_SIM","VDPA_SIM_NET","VDPA_SIM_BLOCK"],"series_id":"30585f36-e158-4664-8713-39e560c4b3bc","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-06-26 03:20:11 +0000 UTC FinishedAt: 2026-06-26 04:13:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1dea5402-3e1a-42cf-93ee-06fc266662fc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3562ee8e-ad78-4131-b4f7-588240dae5ce,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-workflowh8lpm/series-workflowh8lpm-build-action-2945067486/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-workflowh8lpm/series-workflowh8lpm-build-action-3314339939/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-workflowh8lpm/series-workflowh8lpm-convert-artifact-3713956616/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,}