Name: series-workflowl7ql2 Phase: Succeeded StartedAt: 2026-07-10 09:43:47 +0000 UTC FinishedAt: 2026-07-10 11:15:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[0] Phase: Succeeded StartedAt: 2026-07-10 09:43:47 +0000 UTC FinishedAt: 2026-07-10 10:05:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 09:43:47 +0000 UTC FinishedAt: 2026-07-10 10:05:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VFIO_PCI_ZDEV_KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VFIO_PCI_ZDEV_KVM" ], "series_id": "e33cd092-5150-4fda-bc29-2547d1cdf074" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_s390_pci_aif_enable", "kvm_s390_pci_zpci_reg_aen" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWRklPX1BDSV9aREVWX0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3BjaV9haWZfZW5hYmxlJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIG9mIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgaW4gdGhlIHMzOTAgS1ZNIFBDSSBwYXNzdGhyb3VnaCBjb2RlLCBhZGRpbmcgYSBjaGVjayBmb3IgYGZpYi1cdTAwM2VmbXQwLnN1bSA9PSAxYC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1MzOTBfWlBDSV9PUGAgVk0gaW9jdGwsIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gY29uZmlndXJlIHpQQ0kgZGV2aWNlcyBmb3IgYSBLVk0gZ3Vlc3QuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc3NjkzOGVmZTVjYjExMDZhNmExNWRlYWY1NjM0NzRjMDQ0Mjg3ZjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMDowMzowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3BjaS5jIGIvYXJjaC9zMzkwL2t2bS9wY2kuY1xuaW5kZXggNWIwNzVjMzg5OThlMzEuLmRjNzQ4Y2RlNDcwM2I4IDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9wY2kuY1xuQEAgLTMwMCw5ICYjNDM7MzAwLDE0IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBzdHJ1Y3QgenBjaV9maWIgKmZpYixcbiBcbiBcdGdhaXRlLVx1MDAzZWdpc2MgPSBmaWItXHUwMDNlZm10MC5pc2M7XG4gXHRnYWl0ZS1cdTAwM2Vjb3VudCYjNDM7JiM0Mzs7XG4tXHRnYWl0ZS1cdTAwM2VhaXNibyA9IGZpYi1cdTAwM2VmbXQwLmFpc2JvO1xuLVx0Z2FpdGUtXHUwMDNlYWlzYiA9IHZpcnRfdG9fcGh5cyhwYWdlX2FkZHJlc3MoYWlzYl9wYWdlKSAmIzQzOyAoZmliLVx1MDAzZWZtdDAuYWlzYiBcdTAwMjZcbi1cdFx0XHRcdFx0XHRcdCAgICAgIH5QQUdFX01BU0spKTtcbiYjNDM7XHRpZiAoZmliLVx1MDAzZWZtdDAuc3VtID09IDEpIHtcbiYjNDM7XHRcdGdhaXRlLVx1MDAzZWFpc2JvID0gZmliLVx1MDAzZWZtdDAuYWlzYm87XG4mIzQzO1x0XHRnYWl0ZS1cdTAwM2VhaXNiID0gdmlydF90b19waHlzKHBhZ2VfYWRkcmVzcyhhaXNiX3BhZ2UpICYjNDM7XG4mIzQzO1x0XHRcdFx0XHQgICAoZmliLVx1MDAzZWZtdDAuYWlzYiBcdTAwMjYgflBBR0VfTUFTSykpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRnYWl0ZS1cdTAwM2VhaXNibyA9IDA7XG4mIzQzO1x0XHRnYWl0ZS1cdTAwM2VhaXNiID0gMDtcbiYjNDM7XHR9XG4gXHRhaWZ0LVx1MDAzZWt6ZGV2W3pkZXYtXHUwMDNlYWlzYl0gPSB6ZGV2LVx1MDAzZWt6ZGV2O1xuIFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmFpZnQtXHUwMDNlZ2FpdF9sb2NrKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBvZiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIGluIHRoZSBzMzkwIEtWTSBQQ0kgcGFzc3Rocm91Z2ggY29kZSwgYWRkaW5nIGEgY2hlY2sgZm9yIGBmaWItXHUwMDNlZm10MC5zdW0gPT0gMWAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9TMzkwX1pQQ0lfT1BgIFZNIGlvY3RsLCB3aGljaCBhbGxvd3MgdXNlcnNwYWNlIHRvIGNvbmZpZ3VyZSB6UENJIGRldmljZXMgZm9yIGEgS1ZNIGd1ZXN0LiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc3NjkzOGVmZTVjYjExMDZhNmExNWRlYWY1NjM0NzRjMDQ0Mjg3ZjkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAxMDowMzowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmMgYi9hcmNoL3MzOTAva3ZtL3BjaS5jCmluZGV4IDViMDc1YzM4OTk4ZTMxLi5kYzc0OGNkZTQ3MDNiOCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3BjaS5jCkBAIC0zMDAsOSAmIzQzOzMwMCwxNCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsCiAKIAlnYWl0ZS0mZ3Q7Z2lzYyA9IGZpYi0mZ3Q7Zm10MC5pc2M7CiAJZ2FpdGUtJmd0O2NvdW50JiM0MzsmIzQzOzsKLQlnYWl0ZS0mZ3Q7YWlzYm8gPSBmaWItJmd0O2ZtdDAuYWlzYm87Ci0JZ2FpdGUtJmd0O2Fpc2IgPSB2aXJ0X3RvX3BoeXMocGFnZV9hZGRyZXNzKGFpc2JfcGFnZSkgJiM0MzsgKGZpYi0mZ3Q7Zm10MC5haXNiICZhbXA7Ci0JCQkJCQkJICAgICAgflBBR0VfTUFTSykpOwomIzQzOwlpZiAoZmliLSZndDtmbXQwLnN1bSA9PSAxKSB7CiYjNDM7CQlnYWl0ZS0mZ3Q7YWlzYm8gPSBmaWItJmd0O2ZtdDAuYWlzYm87CiYjNDM7CQlnYWl0ZS0mZ3Q7YWlzYiA9IHZpcnRfdG9fcGh5cyhwYWdlX2FkZHJlc3MoYWlzYl9wYWdlKSAmIzQzOwomIzQzOwkJCQkJICAgKGZpYi0mZ3Q7Zm10MC5haXNiICZhbXA7IH5QQUdFX01BU0spKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWdhaXRlLSZndDthaXNibyA9IDA7CiYjNDM7CQlnYWl0ZS0mZ3Q7YWlzYiA9IDA7CiYjNDM7CX0KIAlhaWZ0LSZndDtremRldlt6ZGV2LSZndDthaXNiXSA9IHpkZXYtJmd0O2t6ZGV2OwogCXNwaW5fdW5sb2NrX2lycSgmYW1wO2FpZnQtJmd0O2dhaXRfbG9jayk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyMQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBvdGVudGlhbDogQSBEZWVwIERpdmUgaW50byBzMzkwIEtWTSBQQ0kgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgYXJjaC9zMzkwL2t2bS9wY2kuY2AsIHNwZWNpZmljYWxseSB0aGUgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhpcyBuZXcgYGlmIChmaWItJmd0O2ZtdDAuc3VtID09IDEpYCBjaGVjaywgd2hpY2ggc2VlbXMgdG8gYmUgYSBjb25kaXRpb25hbCBnYXRlIGJlZm9yZSBzZXR0aW5nIGBnYWl0ZS0mZ3Q7YWlzYm9gIGFuZCBgZ2FpdGUtJmd0O2Fpc2JgLiBNeSBpbml0aWFsIHRob3VnaHQgaXM6ICpjYW4gd2UgZnV6eiB0aGlzPyoKCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBub3RlIHRoYXQgdGhlIGNvZGUgaXMgd2l0aGluIGBhcmNoL3MzOTAva3ZtL3BjaS5jYC4gR29vZCwgdGhhdCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlLiBOb3cgdGhlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSogd2l0aGluIGEgZnV6emluZyBjb250ZXh0IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFdhaXQgYSBzZWNvbmQsIHRoZSBmYWN0IHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgS1ZNIG9uIHMzOTAgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHJlY2FsbCB0aGF0IHN5emthbGxlciAqZG9lcyogZnV6eiBLVk0gb24gczM5MHgsIHNvIHRoYXQgc3VnZ2VzdHMgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGRlZmluaXRlbHkgdGVzdGFibGUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZmlndXJlIG91dCB3aGF0IENPTkZJRyBvcHRpb25zIGFyZSBuZWVkZWQgdG8gZXZlbiBicmluZyB0aGlzIGZ1bmN0aW9uYWxpdHkgaW50byB0aGUgYnVpbGQuIFRvIGRvIHRoYXQsIEkmIzM5O2xsIGdvIGJhY2sgdG8gdGhlIHNvdXJjZSBmaWxlOiBgYXJjaC9zMzkwL2t2bS9wY2kuY2AgYW5kIGltbWVkaWF0ZWx5ICpncmVwKiBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCB0byBlc3RhYmxpc2ggdGhlIGVudHJ5IHBvaW50IGZvciB0aGlzIGNvZGUgYmxvY2sgYW5kIGl0cyBwb3RlbnRpYWwgQ09ORklHIGRlcGVuZGVuY2llcy4gVGhpcyB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCB0ZXN0aW5nIGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9wY2kuYz0yMDM9c3RhdGljIGlubGluZSBpbnQgYWNjb3VudF9tZW0odW5zaWduZWQgbG9uZyBucl9wYWdlcylcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTIyMS1cbmFyY2gvczM5MC9rdm0vcGNpLmM6MjIyOnN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBzdHJ1Y3QgenBjaV9maWIgKmZpYixcbmFyY2gvczM5MC9rdm0vcGNpLmMtMjIzLVx0XHRcdFx0ICAgYm9vbCBhc3Npc3QpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYz01OTU9c3RhdGljIGludCBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHN0cnVjdCB6cGNpX2RldiAqemRldixcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTYxNC1cdGhvc3RmbGFnID0gIShhcmdzLVx1MDAzZXUucmVnX2Flbi5mbGFncyBcdTAwMjYgS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTl9IT1NUKTtcbmFyY2gvczM5MC9rdm0vcGNpLmM6NjE1Olx0cmV0dXJuIGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHpkZXYsIFx1MDAyNmZpYiwgaG9zdGZsYWcpO1xuYXJjaC9zMzkwL2t2bS9wY2kuYy02MTYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTUKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OgoKKipUcmFjaW5nIHRoZSBBY3RpdmF0aW9uIG9mIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAqKgoKT2theSwgc28gSSBzZWUgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IGNvbm5lY3Rpb24uIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzICp3aGVuKiBhbmQgKndoeSogYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gIGdldHMgaW52b2tlZC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNvbnRyb2wgZmxvdy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgdGhhdCBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQmIzM5O3MgdHJpZ2dlcmVkLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIHNwZWNpZmljIGV2ZW50IG9yIHN0YXRlIHRoYXQgY2F1c2VzIHRoZSBQQ0kgQUlGIGVuYWJsZW1lbnQuIFVuZGVyc3RhbmRpbmcgdGhvc2UgY29uZGl0aW9ucyBpcyBrZXkgdG8gdGhlIG92ZXJhbGwgbWVjaGFuaXNtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vcGNpLmM9NTc4PXN0YXRpYyBzdHJ1Y3QgenBjaV9kZXYgKmdldF96ZGV2X2Zyb21fa3ZtX2J5X2ZoKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGZoKVxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmMtNTk0LVxuYXJjaC9zMzkwL2t2bS9wY2kuYzo1OTU6c3RhdGljIGludCBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHN0cnVjdCB6cGNpX2RldiAqemRldixcbmFyY2gvczM5MC9rdm0vcGNpLmMtNTk2LVx0XHRcdFx0ICAgICBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncylcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTYxOD1pbnQga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncylcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY0Ny1cdFx0fVxuYXJjaC9zMzkwL2t2bS9wY2kuYzo2NDg6XHRcdHIgPSBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHpkZXYsIGFyZ3MpO1xuYXJjaC9zMzkwL2t2bS9wY2kuYy02NDktXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIHF1ZXN0aW9uOgoKKipBbmFseXppbmcgdGhlIENhbGwgU2l0ZSBvZiBga3ZtX3MzOTBfcGNpX3pwY2lfb3BgKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYGt2bV9zMzkwX3BjaV96cGNpX29wYCBpcyBiZWluZyBjYWxsZWQgZnJvbS4gVGhhdCYjMzk7cyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbiwgZXNwZWNpYWxseSBnaXZlbiBpdHMgbmFtZSDigJMgaXQmIzM5O3MgY2xlYXJseSByZWxhdGVkIHRvIEtWTSBvbiBzMzkweCwgYW5kIGxpa2VseSBQQ0kvWlBDSSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSSBrbm93IHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzb21ld2hlcmUgaW4gdGhlIEtWTSBpbmZyYXN0cnVjdHVyZSwgcHJvYmFibHkgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSBlbXVsYXRpb24gb2YgUENJIGRldmljZXMgb3IgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFpQQ0kgaGFyZHdhcmUgb24gYW4gczM5MHggc3lzdGVtLiBLbm93aW5nIHRoZSBjYWxsIHNpdGUgd2lsbCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBvciBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gdGhpcyBvbmUgaXMgaW52b2tlZCBieS4gVGhpcyBsZXRzIG1lIG1hcCBvdXQgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgc291cmNlIGNvZGUgbmF2aWdhdGlvbiB0b29scyBhbmQgc2VhcmNoIGZvciBhbGwgaW5zdGFuY2VzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBIb3BlZnVsbHksIHRoZSBjYWxsaW5nIGNvbnRleHQgd2lsbCBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbiB0byB0cmFjZSBpdCBhbGwgdGhlIHdheSBiYWNrIHVwIHRoZSBzdGFjay4gSXTigJlsbCB0ZWxsIG1lIHRoZSBvcmlnaW5hdGluZyBldmVudCBvciBvcGVyYXRpb24gdGhhdCB0cmlnZ2VyZWQgaXQuIEl0IGNvdWxkIGJlIHRyaWdnZXJlZCBieSBhbiBndWVzdCBhdHRlbXB0aW5nIHRvIGFjY2VzcyBvciBjb25maWd1cmUgYSBQQ0kgZGV2aWNlLCBvciBwZXJoYXBzIGJ5IHNvbWUgaG9zdCBtYW5hZ2VtZW50IG9wZXJhdGlvbi4gT25jZSBJIGtub3cgdGhlIGNhbGxlciwgSSBjYW4gYW5hbHl6ZSB0aGUgYXJndW1lbnRzIGl0JiMzOTtzIHBhc3NpbmcgdG8gdGhpcyBmdW5jdGlvbi4gVGhhdCBnaXZlcyBtZSBjbHVlcyBhYm91dCB3aGljaCBzcGVjaWZpYyBkZXZpY2Ugb3Igb3BlcmF0aW9uIGlzIGJlaW5nIHRhcmdldGVkLiBJIGFsc28gbmVlZCB0byBiZSBhd2FyZSB0aGF0IGl0IG1pZ2h0IGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHBsYWNlcywgc28gSSBuZWVkIHRvIGZpbmQgYWxsIG9mIHRoZW0uIEFscmlnaHQsIGxldCYjMzk7cyBnZXQgdG8gaXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX29wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTI5MjM9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDkwLVx0XHR9XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzA5MTpcdFx0ciA9IGt2bV9zMzkwX3BjaV96cGNpX29wKGt2bSwgXHUwMDI2YXJncyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA5Mi1cdFx0YnJlYWs7XG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYz01OTU9c3RhdGljIGludCBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHN0cnVjdCB6cGNpX2RldiAqemRldixcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTYxNy1cbmFyY2gvczM5MC9rdm0vcGNpLmM6NjE4OmludCBrdm1fczM5MF9wY2lfenBjaV9vcChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF96cGNpX29wICphcmdzKVxuYXJjaC9zMzkwL2t2bS9wY2kuYy02MTkte1xuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmg9NTk9dm9pZCBrdm1fczM5MF9wY2lfY2xlYXJfbGlzdChzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC9zMzkwL2t2bS9wY2kuaC02MC1cbmFyY2gvczM5MC9rdm0vcGNpLmg6NjE6aW50IGt2bV9zMzkwX3BjaV96cGNpX29wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpO1xuYXJjaC9zMzkwL2t2bS9wY2kuaC02Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDgyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgQXNzZXNzbWVudDogS1ZNIGFuZCBaUENJIFZ1bG5lcmFiaWxpdHkgUG90ZW50aWFsKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhbiBgaW9jdGxgIGNhbGwsIHNwZWNpZmljYWxseSB0aGUgYEtWTV9TMzkwX1pQQ0lfT1BgIG9uIGEgS1ZNIFZNIGZpbGUgZGVzY3JpcHRvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggYW4gYGlvY3RsYCBzdWdnZXN0cyBpdCYjMzk7cyBsaWtlbHkgYWNjZXNzaWJsZSBmcm9tIHVzZXIgc3BhY2UsIG1ha2luZyBpdCBhIHZpYWJsZSBhdHRhY2sgc3VyZmFjZS4gTXkgaW5zdGluY3QgaXMgdGVsbGluZyBtZSB0aGlzIGNvdWxkIGJlIGludGVyZXN0aW5nLgoKTm93LCB0byBkZXRlcm1pbmUgdGhlIHByYWN0aWNhbGl0eSBvZiBmdXp6aW5nLCBJIG5lZWQgdG8ga25vdyB0aGUgcHJlcmVxdWlzaXRlcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCB0byBjb21waWxlIGBhcmNoL3MzOTAva3ZtL3BjaS5jYC4gVW5kZXJzdGFuZGluZyB0aG9zZSBDT05GSUcgb3B0aW9ucyB3aWxsIHRlbGwgbWUgdGhlIG1pbmltdW0gc2V0dXAgbmVlZGVkIHRvIGV2ZW4gKmdldCogdG8gdGhpcyBjb2RlLiBUaGVuIEkgY2FuIGZpZ3VyZSBvdXQgaG93IHJlYWxpc3RpYyBpdCBpcyB0byBidWlsZCBhbiBlbnZpcm9ubWVudCB0aGF0IGNhbiB0cmlnZ2VyIHRoaXMgYGlvY3RsYC4gVGhlIGludmVzdGlnYXRpb24gY29udGludWVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTI9a3ZtLXkgJiM0Mzs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTMtXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlOjE0Omt2bS0kKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgJiM0Mzs9IHBjaS5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19LVk0pICYjNDM7PSBrdm0ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTIwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBEZXBlbmRlbmNpZXMgZm9yIFZGSU8tUENJIHdpdGggWkVEIERldmljZXMgaW4gS1ZNKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgbmVlZCBmb3IgYENPTkZJR19WRklPX1BDSV9aREVWX0tWTWAuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBJIGNhbiYjMzk7dCBldmVuICp0aGluayogYWJvdXQgdGhpcyB3aXRob3V0IHRoYXQgYmVpbmcgZW5hYmxlZC4gU28sIHRoYXQmIzM5O3MgZmlybWx5IGluIHBsYWNlLgoKTm93LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcmFiYml0IGhvbGUsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSBsdXJraW5nIGluIHRoZSBjb25maWd1cmF0aW9uIHRoYXQmIzM5O3MgZ29pbmcgdG8gdHJpcCBtZSB1cD8gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBmbGFncywgbWF5YmUgYSBoaWRkZW4gZGVwZW5kZW5jeSBJ4oCZbSBvdmVybG9va2luZz8gUGVyaGFwcyB0aGVyZSBhcmUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgaW1wbGljaXRseSBuZWVkZWQgZm9yIGBWRklPX1BDSV9aREVWX0tWTWAgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYW55dGhpbmcgdGhhdCBjb3VsZCBiZSBhIHByZXJlcXVpc2l0ZSBvciBtaWdodCBhbHRlciBpdHMgYmVoYXZpb3IgaW4gYW4gdW5leHBlY3RlZCB3YXkuIEJlc3QgdG8gYmUgdGhvcm91Z2ggZnJvbSB0aGUgZ2V0LWdvLiBObyBwb2ludCBpbiBkaWdnaW5nIG15c2VsZiBhIGhvbGUgZnVydGhlciBkb3duIHRoZSBsaW5lLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZnVsbHkgYXdhcmUgb2YgdGhlIGxhbmRzY2FwZSwgYW5kIGhvdyBpdCBpcyBjb21wb3NlZCwgYmVmb3JlIG1ha2luZyBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtWRklPX1BDSV9aREVWX0tWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBLY29uZmlnIGZvciBWRklPIGFuZCBaREVWKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGltcGxpY2F0aW9ucyBvZiBgVkZJT19QQ0lfWkRFVl9LVk1gLiBNeSBndXQgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIHNvbWV0aGluZyBzcGVjaWZpYyDigJMgbGlrZWx5IGEgc3BlY2lhbGl6ZWQgZGV2aWNlIG9yIFotcmVsYXRlZCBmZWF0dXJlIHdpdGhpbiBWRklPLCBwb3RlbnRpYWxseSB0aWVkIHRvIEtWTSB2aXJ0dWFsaXphdGlvbi4gVGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCBpdHMgZGVjbGFyYXRpb24gYW5kIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgc2VhcmNoIGFsbCByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc3VyZmFjZS1sZXZlbCBncmVwOyBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqaG93KiB0aGlzIHZhcmlhYmxlIGlzIGRlZmluZWQsICp3aGVyZSogaXQmIzM5O3MgZGVmaW5lZCwgYW5kLCBjcnVjaWFsbHksIHdoYXQgY29uZGl0aW9uYWwgbG9naWMgc3Vycm91bmRzIGl0LiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQ/IERvZXMgaXQgZGVwZW5kIG9uIG90aGVyLCBtb3JlIGZ1bmRhbWVudGFsIFZGSU8gb3IgS1ZNIGZlYXR1cmVzPyBBcmUgdGhlcmUgcGxhdGZvcm0tc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGluIHBsYXk/IEkgbmVlZCB0aGUgY29tcGxldGUgcGljdHVyZSB0byBmdWxseSBncmFzcCBpdHMgaW1wYWN0LiBUaGlzIHNlYXJjaCBpcyB0aGUgZm91bmRhdGlvbiBmb3IgYW55IGRlZXBlciBhbmFseXNpcyBvciBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9NYWtlZmlsZT0xMj1rdm0teSAmIzQzOz0gZGF0Lm8gZ21hcC5vIGZhdWx0aW4ub1xuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZS0xMy1cbmFyY2gvczM5MC9rdm0vTWFrZWZpbGU6MTQ6a3ZtLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSAmIzQzOz0gcGNpLm9cbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IGt2bS5vXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zNjIwPXN0YXRpYyB2b2lkIGdpYl9hbGVydF9pcnFfaGFuZGxlcihzdHJ1Y3QgYWlycV9zdHJ1Y3QgKmFpcnEsXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNjI3LVx0aWYgKChpbmZvLVx1MDAzZWZvcndhcmQgfHwgaW5mby1cdTAwM2VlcnJvcikgXHUwMDI2XHUwMDI2XG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM2Mjg6XHQgICAgSVNfRU5BQkxFRChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pKSB7XG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM2MjktXHRcdGFlbl9wcm9jZXNzX2dhaXQoaW5mby1cdTAwM2Vpc2MpO1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00OTY9c3RhdGljIGludCBfX2luaXQgX19rdm1fczM5MF9pbml0KHZvaWQpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUyMC1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1MjE6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pKSB7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTIyLVx0XHRyYyA9IGt2bV9zMzkwX3BjaV9pbml0KCk7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUzOC1lcnJfZ2liOlxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjUzOTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTQwLVx0XHRrdm1fczM5MF9wY2lfZXhpdCgpO1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz01NTA9c3RhdGljIHZvaWQgX19rdm1fczM5MF9leGl0KHZvaWQpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NS1cdGt2bV9zMzkwX2dpYl9kZXN0cm95KCk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTU2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTctXHRcdGt2bV9zMzkwX3BjaV9leGl0KCk7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTI5MjM9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDg0LVx0XHRyID0gLUVJTlZBTDtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMDg1Olx0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDg2LVx0XHRcdGJyZWFrO1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMjUyPXZvaWQga3ZtX2FyY2hfZnJlZV92bShzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzI1My17XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzI1NDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzI1NS1cdFx0a3ZtX3MzOTBfcGNpX2NsZWFyX2xpc3Qoa3ZtKTtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MzI2MD1pbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzMzNi1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMzM3Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSkge1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMzMzgtXHRcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWxvY2spO1xuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmg9NDY9c3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtICprdm1fczM5MF9wY2lfc2lfdG9fa3ZtKHN0cnVjdCB6cGNpX2FpZnQgKmFpZnQsXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuaC00OC17XG5hcmNoL3MzOTAva3ZtL3BjaS5oOjQ5Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgfHwgIWFpZnQtXHUwMDNla3pkZXYgfHxcbmFyY2gvczM5MC9rdm0vcGNpLmgtNTAtXHQgICAgIWFpZnQtXHUwMDNla3pkZXZbc2ldKVxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmg9NjY9c3RhdGljIGlubGluZSBib29sIGt2bV9zMzkwX3BjaV9pbnRlcnBfYWxsb3dlZCh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmgtODAtXHRkZWZhdWx0OlxuYXJjaC9zMzkwL2t2bS9wY2kuaDo4MTpcdFx0cmV0dXJuIChJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgXHUwMDI2XHUwMDI2XG5hcmNoL3MzOTAva3ZtL3BjaS5oLTgyLVx0XHRcdHNjbHAuaGFzX3pwY2lfbHNpIFx1MDAyNlx1MDAyNiBzY2xwLmhhc19hZW5pIFx1MDAyNlx1MDAyNiBzY2xwLmhhc19haXNpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz00NT1lbmRpZlxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlPTM9dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xuZHJpdmVycy92ZmlvL3BjaS9NYWtlZmlsZTo0OnZmaW8tcGNpLWNvcmUtJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICYjNDM7PSB2ZmlvX3BjaV96ZGV2Lm9cbmRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGUtNS12ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX0RNQUJVRikgJiM0Mzs9IHZmaW9fcGNpX2RtYWJ1Zi5vXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg9ODU9c3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfaWdkX2luaXQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oLTkwLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg6OTE6I2lmZGVmIENPTkZJR19WRklPX1BDSV9aREVWX0tWTVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtOTItaW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC91c2VyLmg9MTQ9c3RydWN0IHVzZXJfc3RydWN0IHtcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3VzZXIuaC0yNy1cdGRlZmluZWQoQ09ORklHX05FVCkgfHwgZGVmaW5lZChDT05GSUdfSU9fVVJJTkcpIHx8IFxcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3VzZXIuaDoyODpcdGRlZmluZWQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSB8fCBJU19FTkFCTEVEKENPTkZJR19JT01NVUZEKVxuaW5jbHVkZS9saW51eC9zY2hlZC91c2VyLmgtMjktXHRhdG9taWNfbG9uZ190IGxvY2tlZF92bTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU2OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgVkZJTy1QQ0kgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgVkZJT19QQ0lfWkRFVl9LVk1gIGNvbmZpZyBvcHRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGF0ICphbGwqIHRoZXJlIGlzPyBBcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBvciBzaG91bGQgY2hlY2s/JiMzNDsgT2J2aW91c2x5LCBLVk0gaXMgZXNzZW50aWFsIGhlcmUsIHNvIHRoYXQmIzM5O3MgYSBnaXZlbi4gQW5kIG9mIGNvdXJzZSwgVkZJT19QQ0kgaXRzZWxmIGlzIG5lY2Vzc2FyeSDigJMgdGhhdCYjMzk7cyB0aGUgY29yZSBjb21wb25lbnQuIE5vdywgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLCBJJiMzOTtsbCBkaXZlIGludG8gYGRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ2AgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUgYW5kIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggYFZGSU9fUENJX1pERVZfS1ZNYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhbnkgcmVsYXRlZCBzZXR0aW5ncyBvciBmbGFncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU9fUENJX1pERVZfS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz00NT1lbmRpZlxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk1MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkRlbHZpbmcgaW50byB0aGUgVkZJTyBLY29uZmlnIGZvciBVbmRlcnN0YW5kaW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWdgIGZpbGUuIEkmIzM5O20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gbGluZSA0NywgYXMgdGhhdCBhcmVhIHVzdWFsbHkgaG9sZHMgc29tZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBvcHRpb25zIGFyZSBjb250cm9sbGVkIGhlcmUgZm9yIHRoZSBWRklPLVBDSSBkcml2ZXIuIElzIGl0IHRoZSBmZWF0dXJlIGZsYWdzLCBwbGF0Zm9ybSBzdXBwb3J0IG9yIHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBJIG5lZWQgdG8gcmVtZW1iZXI/IExldCYjMzk7cyByZWZyZXNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNDA6XHRcdCAgYXNzaWdubWVudCB0byB2aXJ0dWFsIG1hY2hpbmVzLiAgVGhpcyBpbmNsdWRlcyBleHBvc2luZyBhbiBJR0RcbiAgNDE6XHRcdCAgc3BlY2lmaWMgZmlybXdhcmUgdGFibGUgYW5kIHJlYWQtb25seSBjb3BpZXMgb2YgdGhlIGhvc3QgYnJpZGdlXG4gIDQyOlx0XHQgIGFuZCBMUEMgYnJpZGdlIGNvbmZpZyBzcGFjZS5cbiAgNDM6XHRcbiAgNDQ6XHRcdCAgVG8gZW5hYmxlIEludGVsIElHRCBhc3NpZ25tZW50IHRocm91Z2ggdmZpby1wY2ksIHNheSBZLlxuICA0NTpcdGVuZGlmXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIFZGSU9fUENJX1pERVZfS1ZNXG4gIDQ4Olx0XHRib29sIFwmIzM0O1ZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIHMzOTB4IEtWTSBwYXNzdGhyb3VnaFwmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBTMzkwIFx1MDAyNlx1MDAyNiBLVk1cbiAgNTA6XHRcdGRlZmF1bHQgeVxuICA1MTpcdFx0aGVscFxuICA1MjpcdFx0ICBTdXBwb3J0IHMzOTB4LXNwZWNpZmljIGV4dGVuc2lvbnMgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGVuaGFuY2VtZW50c1xuICA1MzpcdFx0ICB0byBLVk0gcGFzc3Rocm91Z2ggY2FwYWJpbGl0aWVzLCBzdWNoIGFzIGludGVycHJldGl2ZSBleGVjdXRpb24gb2ZcbiAgNTQ6XHRcdCAgelBDSSBpbnN0cnVjdGlvbnMuXG4gIDU1Olx0XG4gIDU2Olx0XHQgIFRvIGVuYWJsZSBzMzkweCBLVk0gdmZpby1wY2kgZXh0ZW5zaW9ucywgc2F5IFkuXG4gIDU3Olx0XG4gIDU4Olx0Y29uZmlnIFZGSU9fUENJX0RNQUJVRlxuICA1OTpcdFx0ZGVmX2Jvb2wgeSBpZiBWRklPX1BDSV9DT1JFIFx1MDAyNlx1MDAyNiBQQ0lfUDJQRE1BIFx1MDAyNlx1MDAyNiBETUFfU0hBUkVEX0JVRkZFUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDI5CgkJCQkJCQlvdXRwdXQ6IDE5NQoJCQkJCQkJdGhvdWdodHM6IDM2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVkZJT19QQ0lfWkRFVl9LVk0gRGVwZW5kZW5jeSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gYFZGSU9fUENJX1pERVZfS1ZNYCwgYW5kIGl0JiMzOTtzIGNsZWFyIGl0IGhpbmdlcyBvbiBib3RoIGBTMzkwYCBhbmQgYEtWTWAuIFRoZSBkZWZhdWx0IHNldHRpbmcgaXMgJiMzNDt5JiMzNDssIHdoaWNoIGlzIGludGVyZXN0aW5nLiBOb3csIGxvb2tpbmcgYXQgdGhlIGNvZGUgZmxvdywgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUgc2VlbXMgdG8gYmUgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYC4gSXQgZ2V0cyBjYWxsZWQgdmlhIGEgY2hhaW46IGZyb20gYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gLCB3aGljaCBpdHNlbGYgaXMgdHJpZ2dlcmVkIGJ5IGBrdm1fczM5MF9wY2lfenBjaV9vcGAsIHdoaWNoIGluIHR1cm4gaXMgYWN0aXZhdGVkIGJ5IGBrdm1fYXJjaF92bV9pb2N0bGAgd2hlbiBoYW5kbGluZyBgS1ZNX1MzOTBfWlBDSV9PUGAuIFRoaXMgaXMgYSBjbGVhciBwYXRoLCBtYWtpbmcgaXQgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHJpcGUgZm9yIGZ1enppbmcuCgpNeSBwcmltYXJ5IGZvY3VzIG5lZWRzIHRvIGJlIG9uIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgYW5kIGBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuYCwgYW5kIHNpbmNlIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgaXMgc3RhdGljLCBJIGNhbiBjb25jZW50cmF0ZSBvbiB0aGF0IGZvciBmdXp6aW5nLiBJIGNhbiB2ZXJpZnkgdGhpcy4gCgpBIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpcyBpbmRlZWQgc3RhdGljIHdpdGhpbiBgYXJjaC9zMzkwL2t2bS9wY2kuY2AsIHdoaWNoIGNvbmZpcm1zIG15IHRob3VnaHRzLiBJIHdhbnQgdG8gcnVsZSBvdXQgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpbmdzLiBTZWVtcyB0aGF0IGBLVk1gIGFuZCBgVkZJT19QQ0lfWkRFVl9LVk1gIGFyZSB0aGUgbWFpbiBjb25maWcgb3B0aW9ucyB0aGF0IGltcGFjdCB0aGlzIGZsb3cuIEdpdmVuIHRoYXQgYFZGSU9fUENJX1pERVZfS1ZNYCBpcyAmIzM0O3kmIzM0OyBieSBkZWZhdWx0IG9uIFMzOTAgd2l0aCBLVk0sIEkmIzM5O20gdGhpbmtpbmcgSSBvbmx5IG5lZWQgYEtWTWAgYW5kIGBWRklPX1BDSV9aREVWX0tWTWAgZW5hYmxlZC4gSSBjYW4gcHJvY2VlZCB0byBzZXQgdGhvc2UgYXMgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJX1pERVZfS1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUmIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgb2YgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpbiB0aGUgczM5MCBLVk0gUENJIHBhc3N0aHJvdWdoIGNvZGUsIGFkZGluZyBhIGNoZWNrIGZvciBgZmliLVx1MDAzZWZtdDAuc3VtID09IDFgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBLVk1fUzM5MF9aUENJX09QYCBWTSBpb2N0bCwgd2hpY2ggYWxsb3dzIHVzZXJzcGFjZSB0byBjb25maWd1cmUgelBDSSBkZXZpY2VzIGZvciBhIEtWTSBndWVzdC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBvZiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIGluIHRoZSBzMzkwIEtWTSBQQ0kgcGFzc3Rocm91Z2ggY29kZSwgYWRkaW5nIGEgY2hlY2sgZm9yIGBmaWItXHUwMDNlZm10MC5zdW0gPT0gMWAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9TMzkwX1pQQ0lfT1BgIFZNIGlvY3RsLCB3aGljaCBhbGxvd3MgdXNlcnNwYWNlIHRvIGNvbmZpZ3VyZSB6UENJIGRldmljZXMgZm9yIGEgS1ZNIGd1ZXN0LiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowMzowOS40MTIwMjQ5ODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE1NTg2OTc4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJWRklPX1BDSV9aREVWX0tWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9zMzkwX3BjaV9haWZfZW5hYmxlXCIsXG4gICAgXCJrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIG9mIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgaW4gdGhlIHMzOTAgS1ZNIFBDSSBwYXNzdGhyb3VnaCBjb2RlLCBhZGRpbmcgYSBjaGVjayBmb3IgYGZpYi1cXHUwMDNlZm10MC5zdW0gPT0gMWAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9TMzkwX1pQQ0lfT1BgIFZNIGlvY3RsLCB3aGljaCBhbGxvd3MgdXNlcnNwYWNlIHRvIGNvbmZpZ3VyZSB6UENJIGRldmljZXMgZm9yIGEgS1ZNIGd1ZXN0LiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEwOjAzOjA5LjQxMjAzMTk2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUyNDc5NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzc2OTM4ZWZlNWNiMTEwNmE2YTE1ZGVhZjU2MzQ3NGMwNDQyODdmOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMDowMzowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3BjaS5jIGIvYXJjaC9zMzkwL2t2bS9wY2kuY1xcbmluZGV4IDViMDc1YzM4OTk4ZTMxLi5kYzc0OGNkZTQ3MDNiOCAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAva3ZtL3BjaS5jXFxuKysrIGIvYXJjaC9zMzkwL2t2bS9wY2kuY1xcbkBAIC0zMDAsOSArMzAwLDE0IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBzdHJ1Y3QgenBjaV9maWIgKmZpYixcXG4gXFxuIFxcdGdhaXRlLVxcdTAwM2VnaXNjID0gZmliLVxcdTAwM2VmbXQwLmlzYztcXG4gXFx0Z2FpdGUtXFx1MDAzZWNvdW50Kys7XFxuLVxcdGdhaXRlLVxcdTAwM2VhaXNibyA9IGZpYi1cXHUwMDNlZm10MC5haXNibztcXG4tXFx0Z2FpdGUtXFx1MDAzZWFpc2IgPSB2aXJ0X3RvX3BoeXMocGFnZV9hZGRyZXNzKGFpc2JfcGFnZSkgKyAoZmliLVxcdTAwM2VmbXQwLmFpc2IgXFx1MDAyNlxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICB+UEFHRV9NQVNLKSk7XFxuK1xcdGlmIChmaWItXFx1MDAzZWZtdDAuc3VtID09IDEpIHtcXG4rXFx0XFx0Z2FpdGUtXFx1MDAzZWFpc2JvID0gZmliLVxcdTAwM2VmbXQwLmFpc2JvO1xcbitcXHRcXHRnYWl0ZS1cXHUwMDNlYWlzYiA9IHZpcnRfdG9fcGh5cyhwYWdlX2FkZHJlc3MoYWlzYl9wYWdlKSArXFxuK1xcdFxcdFxcdFxcdFxcdCAgIChmaWItXFx1MDAzZWZtdDAuYWlzYiBcXHUwMDI2IH5QQUdFX01BU0spKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0Z2FpdGUtXFx1MDAzZWFpc2JvID0gMDtcXG4rXFx0XFx0Z2FpdGUtXFx1MDAzZWFpc2IgPSAwO1xcbitcXHR9XFxuIFxcdGFpZnQtXFx1MDAzZWt6ZGV2W3pkZXYtXFx1MDAzZWFpc2JdID0gemRldi1cXHUwMDNla3pkZXY7XFxuIFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2YWlmdC1cXHUwMDNlZ2FpdF9sb2NrKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEwOjAzOjEwLjA2NTU2MzIwOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwOTA1MTQ2OTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVkZJT19QQ0lfWkRFVl9LVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fczM5MF9wY2lfYWlmX2VuYWJsZVwiLFxuICAgIFwia3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBvZiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIGluIHRoZSBzMzkwIEtWTSBQQ0kgcGFzc3Rocm91Z2ggY29kZSwgYWRkaW5nIGEgY2hlY2sgZm9yIGBmaWItXFx1MDAzZWZtdDAuc3VtID09IDFgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBLVk1fUzM5MF9aUENJX09QYCBWTSBpb2N0bCwgd2hpY2ggYWxsb3dzIHVzZXJzcGFjZSB0byBjb25maWd1cmUgelBDSSBkZXZpY2VzIGZvciBhIEtWTSBndWVzdC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3NjkzOGVmZTVjYjExMDZhNmExNWRlYWY1NjM0NzRjMDQ0Mjg3ZjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMDowMzowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmMgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5pbmRleCA1YjA3NWMzODk5OGUzMS4uZGM3NDhjZGU0NzAzYjggMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3BjaS5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5AQCAtMzAwLDkgKzMwMCwxNCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXG4gXG4gXHRnYWl0ZS1cdTAwM2VnaXNjID0gZmliLVx1MDAzZWZtdDAuaXNjO1xuIFx0Z2FpdGUtXHUwMDNlY291bnQrKztcbi1cdGdhaXRlLVx1MDAzZWFpc2JvID0gZmliLVx1MDAzZWZtdDAuYWlzYm87XG4tXHRnYWl0ZS1cdTAwM2VhaXNiID0gdmlydF90b19waHlzKHBhZ2VfYWRkcmVzcyhhaXNiX3BhZ2UpICsgKGZpYi1cdTAwM2VmbXQwLmFpc2IgXHUwMDI2XG4tXHRcdFx0XHRcdFx0XHQgICAgICB+UEFHRV9NQVNLKSk7XG4rXHRpZiAoZmliLVx1MDAzZWZtdDAuc3VtID09IDEpIHtcbitcdFx0Z2FpdGUtXHUwMDNlYWlzYm8gPSBmaWItXHUwMDNlZm10MC5haXNibztcbitcdFx0Z2FpdGUtXHUwMDNlYWlzYiA9IHZpcnRfdG9fcGh5cyhwYWdlX2FkZHJlc3MoYWlzYl9wYWdlKSArXG4rXHRcdFx0XHRcdCAgIChmaWItXHUwMDNlZm10MC5haXNiIFx1MDAyNiB+UEFHRV9NQVNLKSk7XG4rXHR9IGVsc2Uge1xuK1x0XHRnYWl0ZS1cdTAwM2VhaXNibyA9IDA7XG4rXHRcdGdhaXRlLVx1MDAzZWFpc2IgPSAwO1xuK1x0fVxuIFx0YWlmdC1cdTAwM2VremRldlt6ZGV2LVx1MDAzZWFpc2JdID0gemRldi1cdTAwM2VremRldjtcbiBcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZhaWZ0LVx1MDAzZWdhaXRfbG9jayk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowMzoxMC4wNjU1NjU0OTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTU2OTE3NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUG90ZW50aWFsOiBBIERlZXAgRGl2ZSBpbnRvIHMzOTAgS1ZNIFBDSSBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgYXJjaC9zMzkwL2t2bS9wY2kuY2AsIHNwZWNpZmljYWxseSB0aGUgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhpcyBuZXcgYGlmIChmaWItXHUwMDNlZm10MC5zdW0gPT0gMSlgIGNoZWNrLCB3aGljaCBzZWVtcyB0byBiZSBhIGNvbmRpdGlvbmFsIGdhdGUgYmVmb3JlIHNldHRpbmcgYGdhaXRlLVx1MDAzZWFpc2JvYCBhbmQgYGdhaXRlLVx1MDAzZWFpc2JgLiBNeSBpbml0aWFsIHRob3VnaHQgaXM6ICpjYW4gd2UgZnV6eiB0aGlzPypcblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5vdGUgdGhhdCB0aGUgY29kZSBpcyB3aXRoaW4gYGFyY2gvczM5MC9rdm0vcGNpLmNgLiBHb29kLCB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUuIE5vdyB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gV2FpdCBhIHNlY29uZCwgdGhlIGZhY3QgdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IEtWTSBvbiBzMzkwIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSByZWNhbGwgdGhhdCBzeXprYWxsZXIgKmRvZXMqIGZ1enogS1ZNIG9uIHMzOTB4LCBzbyB0aGF0IHN1Z2dlc3RzIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBkZWZpbml0ZWx5IHRlc3RhYmxlLlxuXG5BbHJpZ2h0LCBsZXQncyBmaWd1cmUgb3V0IHdoYXQgQ09ORklHIG9wdGlvbnMgYXJlIG5lZWRlZCB0byBldmVuIGJyaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSBpbnRvIHRoZSBidWlsZC4gVG8gZG8gdGhhdCwgSSdsbCBnbyBiYWNrIHRvIHRoZSBzb3VyY2UgZmlsZTogYGFyY2gvczM5MC9rdm0vcGNpLmNgIGFuZCBpbW1lZGlhdGVseSAqZ3JlcCogZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgdG8gZXN0YWJsaXNoIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBjb2RlIGJsb2NrIGFuZCBpdHMgcG90ZW50aWFsIENPTkZJRyBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgdGVzdGluZyBsYW5kc2NhcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjEsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowMzoxOC4wMjI0ODUzMTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NjUxNTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX3BjaV9haWZfZW5hYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9wY2kuYz0yMDM9c3RhdGljIGlubGluZSBpbnQgYWNjb3VudF9tZW0odW5zaWduZWQgbG9uZyBucl9wYWdlcylcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtMjIxLVxcbmFyY2gvczM5MC9rdm0vcGNpLmM6MjIyOnN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBzdHJ1Y3QgenBjaV9maWIgKmZpYixcXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTIyMy1cXHRcXHRcXHRcXHQgICBib29sIGFzc2lzdClcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmM9NTk1PXN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTYxNC1cXHRob3N0ZmxhZyA9ICEoYXJncy1cXHUwMDNldS5yZWdfYWVuLmZsYWdzIFxcdTAwMjYgS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTl9IT1NUKTtcXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjYxNTpcXHRyZXR1cm4ga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoemRldiwgXFx1MDAyNmZpYiwgaG9zdGZsYWcpO1xcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjE2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6MTguMTI4MTQyNDA1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwODY2NzMyMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OlxuXG4qKlRyYWNpbmcgdGhlIEFjdGl2YXRpb24gb2YgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCoqXG5cbk9rYXksIHNvIEkgc2VlIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgaXMgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gLiBUaGF0J3MgdGhlIGZpcnN0IGNvbm5lY3Rpb24uIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzICp3aGVuKiBhbmQgKndoeSogYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gIGdldHMgaW52b2tlZC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0byBmdWxseSBncmFzcCB0aGUgY29udHJvbCBmbG93LiBJJ2xsIG5lZWQgdG8gdHJhY2UgYWxsIHRoZSBjYWxsIHNpdGVzIG9mIHRoYXQgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0J3MgdHJpZ2dlcmVkLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIHNwZWNpZmljIGV2ZW50IG9yIHN0YXRlIHRoYXQgY2F1c2VzIHRoZSBQQ0kgQUlGIGVuYWJsZW1lbnQuIFVuZGVyc3RhbmRpbmcgdGhvc2UgY29uZGl0aW9ucyBpcyBrZXkgdG8gdGhlIG92ZXJhbGwgbWVjaGFuaXNtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU1LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6MjkuMjE0ODE3ODk3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjA4MjYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9wY2kuYz01Nzg9c3RhdGljIHN0cnVjdCB6cGNpX2RldiAqZ2V0X3pkZXZfZnJvbV9rdm1fYnlfZmgoc3RydWN0IGt2bSAqa3ZtLCB1MzIgZmgpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTU5NC1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjU5NTpzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4oc3RydWN0IHpwY2lfZGV2ICp6ZGV2LFxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNTk2LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTYxOD1pbnQga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncylcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjQ3LVxcdFxcdH1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjY0ODpcXHRcXHRyID0ga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2Flbih6ZGV2LCBhcmdzKTtcXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY0OS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6MjkuMzQ2OTA2NDc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTg3OTk0NDQxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgcXVlc3Rpb246XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIFNpdGUgb2YgYGt2bV9zMzkwX3BjaV96cGNpX29wYCoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGVyZSBga3ZtX3MzOTBfcGNpX3pwY2lfb3BgIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBUaGF0J3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgZ2l2ZW4gaXRzIG5hbWUg4oCTIGl0J3MgY2xlYXJseSByZWxhdGVkIHRvIEtWTSBvbiBzMzkweCwgYW5kIGxpa2VseSBQQ0kvWlBDSSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSSBrbm93IHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzb21ld2hlcmUgaW4gdGhlIEtWTSBpbmZyYXN0cnVjdHVyZSwgcHJvYmFibHkgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSBlbXVsYXRpb24gb2YgUENJIGRldmljZXMgb3IgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFpQQ0kgaGFyZHdhcmUgb24gYW4gczM5MHggc3lzdGVtLiBLbm93aW5nIHRoZSBjYWxsIHNpdGUgd2lsbCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBvciBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gdGhpcyBvbmUgaXMgaW52b2tlZCBieS4gVGhpcyBsZXRzIG1lIG1hcCBvdXQgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIHVzZSBteSBzb3VyY2UgY29kZSBuYXZpZ2F0aW9uIHRvb2xzIGFuZCBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIEhvcGVmdWxseSwgdGhlIGNhbGxpbmcgY29udGV4dCB3aWxsIHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHRyYWNlIGl0IGFsbCB0aGUgd2F5IGJhY2sgdXAgdGhlIHN0YWNrLiBJdOKAmWxsIHRlbGwgbWUgdGhlIG9yaWdpbmF0aW5nIGV2ZW50IG9yIG9wZXJhdGlvbiB0aGF0IHRyaWdnZXJlZCBpdC4gSXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGFuIGd1ZXN0IGF0dGVtcHRpbmcgdG8gYWNjZXNzIG9yIGNvbmZpZ3VyZSBhIFBDSSBkZXZpY2UsIG9yIHBlcmhhcHMgYnkgc29tZSBob3N0IG1hbmFnZW1lbnQgb3BlcmF0aW9uLiBPbmNlIEkga25vdyB0aGUgY2FsbGVyLCBJIGNhbiBhbmFseXplIHRoZSBhcmd1bWVudHMgaXQncyBwYXNzaW5nIHRvIHRoaXMgZnVuY3Rpb24uIFRoYXQgZ2l2ZXMgbWUgY2x1ZXMgYWJvdXQgd2hpY2ggc3BlY2lmaWMgZGV2aWNlIG9yIG9wZXJhdGlvbiBpcyBiZWluZyB0YXJnZXRlZC4gSSBhbHNvIG5lZWQgdG8gYmUgYXdhcmUgdGhhdCBpdCBtaWdodCBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSBwbGFjZXMsIHNvIEkgbmVlZCB0byBmaW5kIGFsbCBvZiB0aGVtLiBBbHJpZ2h0LCBsZXQncyBnZXQgdG8gaXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjAxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6MzkuMjI2ODUzMzUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzA0Mjg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9wY2lfenBjaV9vcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjkyMz1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA5MC1cXHRcXHR9XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMwOTE6XFx0XFx0ciA9IGt2bV9zMzkwX3BjaV96cGNpX29wKGt2bSwgXFx1MDAyNmFyZ3MpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDkyLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYz01OTU9c3RhdGljIGludCBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHN0cnVjdCB6cGNpX2RldiAqemRldixcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjE3LVxcbmFyY2gvczM5MC9rdm0vcGNpLmM6NjE4OmludCBrdm1fczM5MF9wY2lfenBjaV9vcChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF96cGNpX29wICphcmdzKVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjE5LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmg9NTk9dm9pZCBrdm1fczM5MF9wY2lfY2xlYXJfbGlzdChzdHJ1Y3Qga3ZtICprdm0pO1xcbmFyY2gvczM5MC9rdm0vcGNpLmgtNjAtXFxuYXJjaC9zMzkwL2t2bS9wY2kuaDo2MTppbnQga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncyk7XFxuYXJjaC9zMzkwL2t2bS9wY2kuaC02Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6MzkuNDE5OTA5MDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTI2NTg4NDQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogS1ZNIGFuZCBaUENJIFZ1bG5lcmFiaWxpdHkgUG90ZW50aWFsKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYW4gYGlvY3RsYCBjYWxsLCBzcGVjaWZpY2FsbHkgdGhlIGBLVk1fUzM5MF9aUENJX09QYCBvbiBhIEtWTSBWTSBmaWxlIGRlc2NyaXB0b3IuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGl0J3MgcmVhY2hhYmxlIHRocm91Z2ggYW4gYGlvY3RsYCBzdWdnZXN0cyBpdCdzIGxpa2VseSBhY2Nlc3NpYmxlIGZyb20gdXNlciBzcGFjZSwgbWFraW5nIGl0IGEgdmlhYmxlIGF0dGFjayBzdXJmYWNlLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRoaXMgY291bGQgYmUgaW50ZXJlc3RpbmcuXG5cbk5vdywgdG8gZGV0ZXJtaW5lIHRoZSBwcmFjdGljYWxpdHkgb2YgZnV6emluZywgSSBuZWVkIHRvIGtub3cgdGhlIHByZXJlcXVpc2l0ZXMuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCB0byBjb21waWxlIGBhcmNoL3MzOTAva3ZtL3BjaS5jYC4gVW5kZXJzdGFuZGluZyB0aG9zZSBDT05GSUcgb3B0aW9ucyB3aWxsIHRlbGwgbWUgdGhlIG1pbmltdW0gc2V0dXAgbmVlZGVkIHRvIGV2ZW4gKmdldCogdG8gdGhpcyBjb2RlLiBUaGVuIEkgY2FuIGZpZ3VyZSBvdXQgaG93IHJlYWxpc3RpYyBpdCBpcyB0byBidWlsZCBhbiBlbnZpcm9ubWVudCB0aGF0IGNhbiB0cmlnZ2VyIHRoaXMgYGlvY3RsYC4gVGhlIGludmVzdGlnYXRpb24gY29udGludWVzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0ODIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowMzo1MC42ODU3OTYzMDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjU2OTYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlPTEyPWt2bS15ICs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEzLVxcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGU6MTQ6a3ZtLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSArPSBwY2kub1xcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6NTAuODg4Mzc1MzA5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDc2MDk5NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIERlcGVuZGVuY2llcyBmb3IgVkZJTy1QQ0kgd2l0aCBaRUQgRGV2aWNlcyBpbiBLVk0qKlxuXG5BbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIG5lZWQgZm9yIGBDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk1gLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBJIGNhbid0IGV2ZW4gKnRoaW5rKiBhYm91dCB0aGlzIHdpdGhvdXQgdGhhdCBiZWluZyBlbmFibGVkLiBTbywgdGhhdCdzIGZpcm1seSBpbiBwbGFjZS5cblxuTm93LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcmFiYml0IGhvbGUsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIGx1cmtpbmcgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCdzIGdvaW5nIHRvIHRyaXAgbWUgdXA/IEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVxdWlyZWQgZmxhZ3MsIG1heWJlIGEgaGlkZGVuIGRlcGVuZGVuY3kgSeKAmW0gb3Zlcmxvb2tpbmc/IFBlcmhhcHMgdGhlcmUgYXJlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGltcGxpY2l0bHkgbmVlZGVkIGZvciBgVkZJT19QQ0lfWkRFVl9LVk1gIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYW55dGhpbmcgdGhhdCBjb3VsZCBiZSBhIHByZXJlcXVpc2l0ZSBvciBtaWdodCBhbHRlciBpdHMgYmVoYXZpb3IgaW4gYW4gdW5leHBlY3RlZCB3YXkuIEJlc3QgdG8gYmUgdGhvcm91Z2ggZnJvbSB0aGUgZ2V0LWdvLiBObyBwb2ludCBpbiBkaWdnaW5nIG15c2VsZiBhIGhvbGUgZnVydGhlciBkb3duIHRoZSBsaW5lLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZnVsbHkgYXdhcmUgb2YgdGhlIGxhbmRzY2FwZSwgYW5kIGhvdyBpdCBpcyBjb21wb3NlZCwgYmVmb3JlIG1ha2luZyBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkyMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEwOjA0OjAxLjk2NDQ3Nzg0MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwNjIyNzQ4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWRklPX1BDSV9aREVWX0tWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEwOjA0OjAyLjE3NTExMDE5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3ODMwNjg3NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBLY29uZmlnIGZvciBWRklPIGFuZCBaREVWKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBpbXBsaWNhdGlvbnMgb2YgYFZGSU9fUENJX1pERVZfS1ZNYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBzb21ldGhpbmcgc3BlY2lmaWMg4oCTIGxpa2VseSBhIHNwZWNpYWxpemVkIGRldmljZSBvciBaLXJlbGF0ZWQgZmVhdHVyZSB3aXRoaW4gVkZJTywgcG90ZW50aWFsbHkgdGllZCB0byBLVk0gdmlydHVhbGl6YXRpb24uIFRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgaXRzIGRlY2xhcmF0aW9uIGFuZCBkZXBlbmRlbmNpZXMuIEknbGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgc2VhcmNoIGFsbCByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIGlzbid0IGp1c3QgYSBzdXJmYWNlLWxldmVsIGdyZXA7IEkgd2FudCB0byB1bmRlcnN0YW5kICpob3cqIHRoaXMgdmFyaWFibGUgaXMgZGVmaW5lZCwgKndoZXJlKiBpdCdzIGRlZmluZWQsIGFuZCwgY3J1Y2lhbGx5LCB3aGF0IGNvbmRpdGlvbmFsIGxvZ2ljIHN1cnJvdW5kcyBpdC4gSXMgaXQgZW5hYmxlZCBieSBkZWZhdWx0PyBEb2VzIGl0IGRlcGVuZCBvbiBvdGhlciwgbW9yZSBmdW5kYW1lbnRhbCBWRklPIG9yIEtWTSBmZWF0dXJlcz8gQXJlIHRoZXJlIHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyBpbiBwbGF5PyBJIG5lZWQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgdG8gZnVsbHkgZ3Jhc3AgaXRzIGltcGFjdC4gVGhpcyBzZWFyY2ggaXMgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBkZWVwZXIgYW5hbHlzaXMgb3IgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNjUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowNDoyMC4wMDU4MDAzMDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjY3ODg0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVkZJT19QQ0lfWkRFVl9LVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTI9a3ZtLXkgKz0gZGF0Lm8gZ21hcC5vIGZhdWx0aW4ub1xcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTMtXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxNDprdm0tJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICs9IHBjaS5vXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfS1ZNKSArPSBrdm0ub1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zNjIwPXN0YXRpYyB2b2lkIGdpYl9hbGVydF9pcnFfaGFuZGxlcihzdHJ1Y3QgYWlycV9zdHJ1Y3QgKmFpcnEsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM2MjctXFx0aWYgKChpbmZvLVxcdTAwM2Vmb3J3YXJkIHx8IGluZm8tXFx1MDAzZWVycm9yKSBcXHUwMDI2XFx1MDAyNlxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzYyODpcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pKSB7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNjI5LVxcdFxcdGFlbl9wcm9jZXNzX2dhaXQoaW5mby1cXHUwMDNlaXNjKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00OTY9c3RhdGljIGludCBfX2luaXQgX19rdm1fczM5MF9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTIwLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1MjE6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSkge1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MjItXFx0XFx0cmMgPSBrdm1fczM5MF9wY2lfaW5pdCgpO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUzOC1lcnJfZ2liOlxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1Mzk6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTQwLVxcdFxcdGt2bV9zMzkwX3BjaV9leGl0KCk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTUwPXN0YXRpYyB2b2lkIF9fa3ZtX3MzOTBfZXhpdCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NS1cXHRrdm1fczM5MF9naWJfZGVzdHJveSgpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NTY6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU3LVxcdFxcdGt2bV9zMzkwX3BjaV9leGl0KCk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjkyMz1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA4NC1cXHRcXHRyID0gLUVJTlZBTDtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzA4NTpcXHRcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA4Ni1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMjUyPXZvaWQga3ZtX2FyY2hfZnJlZV92bShzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMyNTMte1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMjU0OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMyNTUtXFx0XFx0a3ZtX3MzOTBfcGNpX2NsZWFyX2xpc3Qoa3ZtKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMjYwPWludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMzMzYtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMzMzc6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSkge1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMzM4LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlbG9jayk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5oPTQ2PXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bSAqa3ZtX3MzOTBfcGNpX3NpX3RvX2t2bShzdHJ1Y3QgenBjaV9haWZ0ICphaWZ0LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuaC00OC17XFxuYXJjaC9zMzkwL2t2bS9wY2kuaDo0OTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSB8fCAhYWlmdC1cXHUwMDNla3pkZXYgfHxcXG5hcmNoL3MzOTAva3ZtL3BjaS5oLTUwLVxcdCAgICAhYWlmdC1cXHUwMDNla3pkZXZbc2ldKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuaD02Nj1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX3MzOTBfcGNpX2ludGVycF9hbGxvd2VkKHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5oLTgwLVxcdGRlZmF1bHQ6XFxuYXJjaC9zMzkwL2t2bS9wY2kuaDo4MTpcXHRcXHRyZXR1cm4gKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSBcXHUwMDI2XFx1MDAyNlxcbmFyY2gvczM5MC9rdm0vcGNpLmgtODItXFx0XFx0XFx0c2NscC5oYXNfenBjaV9sc2kgXFx1MDAyNlxcdTAwMjYgc2NscC5oYXNfYWVuaSBcXHUwMDI2XFx1MDAyNiBzY2xwLmhhc19haXNpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDYtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cXHRib29sIFxcXCJWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlPTM9dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xcbmRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGU6NDp2ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSArPSB2ZmlvX3BjaV96ZGV2Lm9cXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlLTUtdmZpby1wY2ktY29yZS0kKENPTkZJR19WRklPX1BDSV9ETUFCVUYpICs9IHZmaW9fcGNpX2RtYWJ1Zi5vXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaD04NT1zdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV9pZ2RfaW5pdChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC05MC1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaDo5MTojaWZkZWYgQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtOTItaW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3VzZXIuaD0xND1zdHJ1Y3QgdXNlcl9zdHJ1Y3Qge1xcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC91c2VyLmgtMjctXFx0ZGVmaW5lZChDT05GSUdfTkVUKSB8fCBkZWZpbmVkKENPTkZJR19JT19VUklORykgfHwgXFxcXFxcbmluY2x1ZGUvbGludXgvc2NoZWQvdXNlci5oOjI4OlxcdGRlZmluZWQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSB8fCBJU19FTkFCTEVEKENPTkZJR19JT01NVUZEKVxcbmluY2x1ZGUvbGludXgvc2NoZWQvdXNlci5oLTI5LVxcdGF0b21pY19sb25nX3QgbG9ja2VkX3ZtO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowNDoyNC4zNzI1OTc0NDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY4NzA2OTEwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBWRklPLVBDSSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgVkZJT19QQ0lfWkRFVl9LVk1gIGNvbmZpZyBvcHRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJJcyB0aGF0ICphbGwqIHRoZXJlIGlzPyBBcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBvciBzaG91bGQgY2hlY2s/XCIgT2J2aW91c2x5LCBLVk0gaXMgZXNzZW50aWFsIGhlcmUsIHNvIHRoYXQncyBhIGdpdmVuLiBBbmQgb2YgY291cnNlLCBWRklPX1BDSSBpdHNlbGYgaXMgbmVjZXNzYXJ5IOKAkyB0aGF0J3MgdGhlIGNvcmUgY29tcG9uZW50LiBOb3csIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLCBJJ2xsIGRpdmUgaW50byBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBhbmQgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbnRlcmFjdGlvbnMgd2l0aCBgVkZJT19QQ0lfWkRFVl9LVk1gLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgYW55IHJlbGF0ZWQgc2V0dGluZ3Mgb3IgZmxhZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NjksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowNDo0MS4yNDMyOTExNjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzI2MDI5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz00NT1lbmRpZlxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6NDc6Y29uZmlnIFZGSU9fUENJX1pERVZfS1ZNXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIHMzOTB4IEtWTSBwYXNzdGhyb3VnaFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDQ6NDEuNzc2NTU3MzE2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3Mjk1NzM5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkRlbHZpbmcgaW50byB0aGUgVkZJTyBLY29uZmlnIGZvciBVbmRlcnN0YW5kaW5nKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYCBmaWxlLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gbGluZSA0NywgYXMgdGhhdCBhcmVhIHVzdWFsbHkgaG9sZHMgc29tZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBvcHRpb25zIGFyZSBjb250cm9sbGVkIGhlcmUgZm9yIHRoZSBWRklPLVBDSSBkcml2ZXIuIElzIGl0IHRoZSBmZWF0dXJlIGZsYWdzLCBwbGF0Zm9ybSBzdXBwb3J0IG9yIHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBJIG5lZWQgdG8gcmVtZW1iZXI/IExldCdzIHJlZnJlc2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowNDo0NC41MDYxMzM4NTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDQwOlxcdFxcdCAgYXNzaWdubWVudCB0byB2aXJ0dWFsIG1hY2hpbmVzLiAgVGhpcyBpbmNsdWRlcyBleHBvc2luZyBhbiBJR0RcXG4gIDQxOlxcdFxcdCAgc3BlY2lmaWMgZmlybXdhcmUgdGFibGUgYW5kIHJlYWQtb25seSBjb3BpZXMgb2YgdGhlIGhvc3QgYnJpZGdlXFxuICA0MjpcXHRcXHQgIGFuZCBMUEMgYnJpZGdlIGNvbmZpZyBzcGFjZS5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0ICBUbyBlbmFibGUgSW50ZWwgSUdEIGFzc2lnbm1lbnQgdGhyb3VnaCB2ZmlvLXBjaSwgc2F5IFkuXFxuICA0NTpcXHRlbmRpZlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIlZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIHMzOTB4IEtWTSBwYXNzdGhyb3VnaFxcXCJcXG4gIDQ5OlxcdFxcdGRlcGVuZHMgb24gUzM5MCBcXHUwMDI2XFx1MDAyNiBLVk1cXG4gIDUwOlxcdFxcdGRlZmF1bHQgeVxcbiAgNTE6XFx0XFx0aGVscFxcbiAgNTI6XFx0XFx0ICBTdXBwb3J0IHMzOTB4LXNwZWNpZmljIGV4dGVuc2lvbnMgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGVuaGFuY2VtZW50c1xcbiAgNTM6XFx0XFx0ICB0byBLVk0gcGFzc3Rocm91Z2ggY2FwYWJpbGl0aWVzLCBzdWNoIGFzIGludGVycHJldGl2ZSBleGVjdXRpb24gb2ZcXG4gIDU0OlxcdFxcdCAgelBDSSBpbnN0cnVjdGlvbnMuXFxuICA1NTpcXHRcXG4gIDU2OlxcdFxcdCAgVG8gZW5hYmxlIHMzOTB4IEtWTSB2ZmlvLXBjaSBleHRlbnNpb25zLCBzYXkgWS5cXG4gIDU3OlxcdFxcbiAgNTg6XFx0Y29uZmlnIFZGSU9fUENJX0RNQUJVRlxcbiAgNTk6XFx0XFx0ZGVmX2Jvb2wgeSBpZiBWRklPX1BDSV9DT1JFIFxcdTAwMjZcXHUwMDI2IFBDSV9QMlBETUEgXFx1MDAyNlxcdTAwMjYgRE1BX1NIQVJFRF9CVUZGRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDQ6NDQuNTA2MjI5NDI0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MjQyNTEyODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBWRklPX1BDSV9aREVWX0tWTSBEZXBlbmRlbmN5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gYFZGSU9fUENJX1pERVZfS1ZNYCwgYW5kIGl0J3MgY2xlYXIgaXQgaGluZ2VzIG9uIGJvdGggYFMzOTBgIGFuZCBgS1ZNYC4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBcInlcIiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE5vdywgbG9va2luZyBhdCB0aGUgY29kZSBmbG93LCB0aGUgY3JpdGljYWwgZnVuY3Rpb24gaGVyZSBzZWVtcyB0byBiZSBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgLiBJdCBnZXRzIGNhbGxlZCB2aWEgYSBjaGFpbjogZnJvbSBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAsIHdoaWNoIGl0c2VsZiBpcyB0cmlnZ2VyZWQgYnkgYGt2bV9zMzkwX3BjaV96cGNpX29wYCwgd2hpY2ggaW4gdHVybiBpcyBhY3RpdmF0ZWQgYnkgYGt2bV9hcmNoX3ZtX2lvY3RsYCB3aGVuIGhhbmRsaW5nIGBLVk1fUzM5MF9aUENJX09QYC4gVGhpcyBpcyBhIGNsZWFyIHBhdGgsIG1ha2luZyBpdCBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgcmlwZSBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBuZWVkcyB0byBiZSBvbiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIGFuZCBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAsIGFuZCBzaW5jZSBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIGlzIHN0YXRpYywgSSBjYW4gY29uY2VudHJhdGUgb24gdGhhdCBmb3IgZnV6emluZy4gSSBjYW4gdmVyaWZ5IHRoaXMuIFxuXG5BIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpcyBpbmRlZWQgc3RhdGljIHdpdGhpbiBgYXJjaC9zMzkwL2t2bS9wY2kuY2AsIHdoaWNoIGNvbmZpcm1zIG15IHRob3VnaHRzLiBJIHdhbnQgdG8gcnVsZSBvdXQgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpbmdzLiBTZWVtcyB0aGF0IGBLVk1gIGFuZCBgVkZJT19QQ0lfWkRFVl9LVk1gIGFyZSB0aGUgbWFpbiBjb25maWcgb3B0aW9ucyB0aGF0IGltcGFjdCB0aGlzIGZsb3cuIEdpdmVuIHRoYXQgYFZGSU9fUENJX1pERVZfS1ZNYCBpcyBcInlcIiBieSBkZWZhdWx0IG9uIFMzOTAgd2l0aCBLVk0sIEknbSB0aGlua2luZyBJIG9ubHkgbmVlZCBgS1ZNYCBhbmQgYFZGSU9fUENJX1pERVZfS1ZNYCBlbmFibGVkLiBJIGNhbiBwcm9jZWVkIHRvIHNldCB0aG9zZSBhcyB0aGUgbmVjZXNzYXJ5IGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MjksIk91dHB1dFRva2VucyI6MTk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDU6MDAuNzQ4NzQ1NDU5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxOTU4Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIlZGSU9fUENJX1pERVZfS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgb2YgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpbiB0aGUgczM5MCBLVk0gUENJIHBhc3N0aHJvdWdoIGNvZGUsIGFkZGluZyBhIGNoZWNrIGZvciBgZmliLVxcdTAwM2VmbXQwLnN1bSA9PSAxYC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1MzOTBfWlBDSV9PUGAgVk0gaW9jdGwsIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gY29uZmlndXJlIHpQQ0kgZGV2aWNlcyBmb3IgYSBLVk0gZ3Vlc3QuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIlZGSU9fUENJX1pERVZfS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgb2YgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpbiB0aGUgczM5MCBLVk0gUENJIHBhc3N0aHJvdWdoIGNvZGUsIGFkZGluZyBhIGNoZWNrIGZvciBgZmliLVxcdTAwM2VmbXQwLnN1bSA9PSAxYC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1MzOTBfWlBDSV9PUGAgVk0gaW9jdGwsIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gY29uZmlndXJlIHpQQ0kgZGV2aWNlcyBmb3IgYSBLVk0gZ3Vlc3QuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7ql2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 09:43:47 +0000 UTC FinishedAt: 2026-07-10 10:05:02 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VFIO_PCI_ZDEV_KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "VFIO_PCI_ZDEV_KVM" ], "series_id": "e33cd092-5150-4fda-bc29-2547d1cdf074" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_s390_pci_aif_enable", "kvm_s390_pci_zpci_reg_aen" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtWRklPX1BDSV9aREVWX0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3BjaV9haWZfZW5hYmxlJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIG9mIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgaW4gdGhlIHMzOTAgS1ZNIFBDSSBwYXNzdGhyb3VnaCBjb2RlLCBhZGRpbmcgYSBjaGVjayBmb3IgYGZpYi1cdTAwM2VmbXQwLnN1bSA9PSAxYC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1MzOTBfWlBDSV9PUGAgVk0gaW9jdGwsIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gY29uZmlndXJlIHpQQ0kgZGV2aWNlcyBmb3IgYSBLVk0gZ3Vlc3QuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc3NjkzOGVmZTVjYjExMDZhNmExNWRlYWY1NjM0NzRjMDQ0Mjg3ZjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMDowMzowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3BjaS5jIGIvYXJjaC9zMzkwL2t2bS9wY2kuY1xuaW5kZXggNWIwNzVjMzg5OThlMzEuLmRjNzQ4Y2RlNDcwM2I4IDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9wY2kuY1xuQEAgLTMwMCw5ICYjNDM7MzAwLDE0IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBzdHJ1Y3QgenBjaV9maWIgKmZpYixcbiBcbiBcdGdhaXRlLVx1MDAzZWdpc2MgPSBmaWItXHUwMDNlZm10MC5pc2M7XG4gXHRnYWl0ZS1cdTAwM2Vjb3VudCYjNDM7JiM0Mzs7XG4tXHRnYWl0ZS1cdTAwM2VhaXNibyA9IGZpYi1cdTAwM2VmbXQwLmFpc2JvO1xuLVx0Z2FpdGUtXHUwMDNlYWlzYiA9IHZpcnRfdG9fcGh5cyhwYWdlX2FkZHJlc3MoYWlzYl9wYWdlKSAmIzQzOyAoZmliLVx1MDAzZWZtdDAuYWlzYiBcdTAwMjZcbi1cdFx0XHRcdFx0XHRcdCAgICAgIH5QQUdFX01BU0spKTtcbiYjNDM7XHRpZiAoZmliLVx1MDAzZWZtdDAuc3VtID09IDEpIHtcbiYjNDM7XHRcdGdhaXRlLVx1MDAzZWFpc2JvID0gZmliLVx1MDAzZWZtdDAuYWlzYm87XG4mIzQzO1x0XHRnYWl0ZS1cdTAwM2VhaXNiID0gdmlydF90b19waHlzKHBhZ2VfYWRkcmVzcyhhaXNiX3BhZ2UpICYjNDM7XG4mIzQzO1x0XHRcdFx0XHQgICAoZmliLVx1MDAzZWZtdDAuYWlzYiBcdTAwMjYgflBBR0VfTUFTSykpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRnYWl0ZS1cdTAwM2VhaXNibyA9IDA7XG4mIzQzO1x0XHRnYWl0ZS1cdTAwM2VhaXNiID0gMDtcbiYjNDM7XHR9XG4gXHRhaWZ0LVx1MDAzZWt6ZGV2W3pkZXYtXHUwMDNlYWlzYl0gPSB6ZGV2LVx1MDAzZWt6ZGV2O1xuIFx0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmFpZnQtXHUwMDNlZ2FpdF9sb2NrKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBvZiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIGluIHRoZSBzMzkwIEtWTSBQQ0kgcGFzc3Rocm91Z2ggY29kZSwgYWRkaW5nIGEgY2hlY2sgZm9yIGBmaWItXHUwMDNlZm10MC5zdW0gPT0gMWAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9TMzkwX1pQQ0lfT1BgIFZNIGlvY3RsLCB3aGljaCBhbGxvd3MgdXNlcnNwYWNlIHRvIGNvbmZpZ3VyZSB6UENJIGRldmljZXMgZm9yIGEgS1ZNIGd1ZXN0LiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc3NjkzOGVmZTVjYjExMDZhNmExNWRlYWY1NjM0NzRjMDQ0Mjg3ZjkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAxMDowMzowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmMgYi9hcmNoL3MzOTAva3ZtL3BjaS5jCmluZGV4IDViMDc1YzM4OTk4ZTMxLi5kYzc0OGNkZTQ3MDNiOCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3BjaS5jCkBAIC0zMDAsOSAmIzQzOzMwMCwxNCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsCiAKIAlnYWl0ZS0mZ3Q7Z2lzYyA9IGZpYi0mZ3Q7Zm10MC5pc2M7CiAJZ2FpdGUtJmd0O2NvdW50JiM0MzsmIzQzOzsKLQlnYWl0ZS0mZ3Q7YWlzYm8gPSBmaWItJmd0O2ZtdDAuYWlzYm87Ci0JZ2FpdGUtJmd0O2Fpc2IgPSB2aXJ0X3RvX3BoeXMocGFnZV9hZGRyZXNzKGFpc2JfcGFnZSkgJiM0MzsgKGZpYi0mZ3Q7Zm10MC5haXNiICZhbXA7Ci0JCQkJCQkJICAgICAgflBBR0VfTUFTSykpOwomIzQzOwlpZiAoZmliLSZndDtmbXQwLnN1bSA9PSAxKSB7CiYjNDM7CQlnYWl0ZS0mZ3Q7YWlzYm8gPSBmaWItJmd0O2ZtdDAuYWlzYm87CiYjNDM7CQlnYWl0ZS0mZ3Q7YWlzYiA9IHZpcnRfdG9fcGh5cyhwYWdlX2FkZHJlc3MoYWlzYl9wYWdlKSAmIzQzOwomIzQzOwkJCQkJICAgKGZpYi0mZ3Q7Zm10MC5haXNiICZhbXA7IH5QQUdFX01BU0spKTsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWdhaXRlLSZndDthaXNibyA9IDA7CiYjNDM7CQlnYWl0ZS0mZ3Q7YWlzYiA9IDA7CiYjNDM7CX0KIAlhaWZ0LSZndDtremRldlt6ZGV2LSZndDthaXNiXSA9IHpkZXYtJmd0O2t6ZGV2OwogCXNwaW5fdW5sb2NrX2lycSgmYW1wO2FpZnQtJmd0O2dhaXRfbG9jayk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAyMQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFBvdGVudGlhbDogQSBEZWVwIERpdmUgaW50byBzMzkwIEtWTSBQQ0kgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgYXJjaC9zMzkwL2t2bS9wY2kuY2AsIHNwZWNpZmljYWxseSB0aGUgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhpcyBuZXcgYGlmIChmaWItJmd0O2ZtdDAuc3VtID09IDEpYCBjaGVjaywgd2hpY2ggc2VlbXMgdG8gYmUgYSBjb25kaXRpb25hbCBnYXRlIGJlZm9yZSBzZXR0aW5nIGBnYWl0ZS0mZ3Q7YWlzYm9gIGFuZCBgZ2FpdGUtJmd0O2Fpc2JgLiBNeSBpbml0aWFsIHRob3VnaHQgaXM6ICpjYW4gd2UgZnV6eiB0aGlzPyoKCkZpcnN0IHRoaW5ncyBmaXJzdCwgSSBub3RlIHRoYXQgdGhlIGNvZGUgaXMgd2l0aGluIGBhcmNoL3MzOTAva3ZtL3BjaS5jYC4gR29vZCwgdGhhdCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlLiBOb3cgdGhlIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gKnJlYWNoYWJsZSogd2l0aGluIGEgZnV6emluZyBjb250ZXh0IGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IFdhaXQgYSBzZWNvbmQsIHRoZSBmYWN0IHRoYXQgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgS1ZNIG9uIHMzOTAgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHJlY2FsbCB0aGF0IHN5emthbGxlciAqZG9lcyogZnV6eiBLVk0gb24gczM5MHgsIHNvIHRoYXQgc3VnZ2VzdHMgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGRlZmluaXRlbHkgdGVzdGFibGUuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZmlndXJlIG91dCB3aGF0IENPTkZJRyBvcHRpb25zIGFyZSBuZWVkZWQgdG8gZXZlbiBicmluZyB0aGlzIGZ1bmN0aW9uYWxpdHkgaW50byB0aGUgYnVpbGQuIFRvIGRvIHRoYXQsIEkmIzM5O2xsIGdvIGJhY2sgdG8gdGhlIHNvdXJjZSBmaWxlOiBgYXJjaC9zMzkwL2t2bS9wY2kuY2AgYW5kIGltbWVkaWF0ZWx5ICpncmVwKiBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCB0byBlc3RhYmxpc2ggdGhlIGVudHJ5IHBvaW50IGZvciB0aGlzIGNvZGUgYmxvY2sgYW5kIGl0cyBwb3RlbnRpYWwgQ09ORklHIGRlcGVuZGVuY2llcy4gVGhpcyB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCB0ZXN0aW5nIGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9wY2kuYz0yMDM9c3RhdGljIGlubGluZSBpbnQgYWNjb3VudF9tZW0odW5zaWduZWQgbG9uZyBucl9wYWdlcylcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTIyMS1cbmFyY2gvczM5MC9rdm0vcGNpLmM6MjIyOnN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBzdHJ1Y3QgenBjaV9maWIgKmZpYixcbmFyY2gvczM5MC9rdm0vcGNpLmMtMjIzLVx0XHRcdFx0ICAgYm9vbCBhc3Npc3QpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYz01OTU9c3RhdGljIGludCBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHN0cnVjdCB6cGNpX2RldiAqemRldixcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTYxNC1cdGhvc3RmbGFnID0gIShhcmdzLVx1MDAzZXUucmVnX2Flbi5mbGFncyBcdTAwMjYgS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTl9IT1NUKTtcbmFyY2gvczM5MC9rdm0vcGNpLmM6NjE1Olx0cmV0dXJuIGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHpkZXYsIFx1MDAyNmZpYiwgaG9zdGZsYWcpO1xuYXJjaC9zMzkwL2t2bS9wY2kuYy02MTYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTUKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OgoKKipUcmFjaW5nIHRoZSBBY3RpdmF0aW9uIG9mIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAqKgoKT2theSwgc28gSSBzZWUgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAuIFRoYXQmIzM5O3MgdGhlIGZpcnN0IGNvbm5lY3Rpb24uIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzICp3aGVuKiBhbmQgKndoeSogYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gIGdldHMgaW52b2tlZC4gVGhhdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNvbnRyb2wgZmxvdy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgdGhhdCBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQmIzM5O3MgdHJpZ2dlcmVkLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIHNwZWNpZmljIGV2ZW50IG9yIHN0YXRlIHRoYXQgY2F1c2VzIHRoZSBQQ0kgQUlGIGVuYWJsZW1lbnQuIFVuZGVyc3RhbmRpbmcgdGhvc2UgY29uZGl0aW9ucyBpcyBrZXkgdG8gdGhlIG92ZXJhbGwgbWVjaGFuaXNtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3BjaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vcGNpLmM9NTc4PXN0YXRpYyBzdHJ1Y3QgenBjaV9kZXYgKmdldF96ZGV2X2Zyb21fa3ZtX2J5X2ZoKHN0cnVjdCBrdm0gKmt2bSwgdTMyIGZoKVxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmMtNTk0LVxuYXJjaC9zMzkwL2t2bS9wY2kuYzo1OTU6c3RhdGljIGludCBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHN0cnVjdCB6cGNpX2RldiAqemRldixcbmFyY2gvczM5MC9rdm0vcGNpLmMtNTk2LVx0XHRcdFx0ICAgICBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncylcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTYxOD1pbnQga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncylcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY0Ny1cdFx0fVxuYXJjaC9zMzkwL2t2bS9wY2kuYzo2NDg6XHRcdHIgPSBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHpkZXYsIGFyZ3MpO1xuYXJjaC9zMzkwL2t2bS9wY2kuYy02NDktXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIHF1ZXN0aW9uOgoKKipBbmFseXppbmcgdGhlIENhbGwgU2l0ZSBvZiBga3ZtX3MzOTBfcGNpX3pwY2lfb3BgKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYGt2bV9zMzkwX3BjaV96cGNpX29wYCBpcyBiZWluZyBjYWxsZWQgZnJvbS4gVGhhdCYjMzk7cyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbiwgZXNwZWNpYWxseSBnaXZlbiBpdHMgbmFtZSDigJMgaXQmIzM5O3MgY2xlYXJseSByZWxhdGVkIHRvIEtWTSBvbiBzMzkweCwgYW5kIGxpa2VseSBQQ0kvWlBDSSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSSBrbm93IHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzb21ld2hlcmUgaW4gdGhlIEtWTSBpbmZyYXN0cnVjdHVyZSwgcHJvYmFibHkgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSBlbXVsYXRpb24gb2YgUENJIGRldmljZXMgb3IgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFpQQ0kgaGFyZHdhcmUgb24gYW4gczM5MHggc3lzdGVtLiBLbm93aW5nIHRoZSBjYWxsIHNpdGUgd2lsbCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBvciBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gdGhpcyBvbmUgaXMgaW52b2tlZCBieS4gVGhpcyBsZXRzIG1lIG1hcCBvdXQgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgc291cmNlIGNvZGUgbmF2aWdhdGlvbiB0b29scyBhbmQgc2VhcmNoIGZvciBhbGwgaW5zdGFuY2VzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBIb3BlZnVsbHksIHRoZSBjYWxsaW5nIGNvbnRleHQgd2lsbCBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbiB0byB0cmFjZSBpdCBhbGwgdGhlIHdheSBiYWNrIHVwIHRoZSBzdGFjay4gSXTigJlsbCB0ZWxsIG1lIHRoZSBvcmlnaW5hdGluZyBldmVudCBvciBvcGVyYXRpb24gdGhhdCB0cmlnZ2VyZWQgaXQuIEl0IGNvdWxkIGJlIHRyaWdnZXJlZCBieSBhbiBndWVzdCBhdHRlbXB0aW5nIHRvIGFjY2VzcyBvciBjb25maWd1cmUgYSBQQ0kgZGV2aWNlLCBvciBwZXJoYXBzIGJ5IHNvbWUgaG9zdCBtYW5hZ2VtZW50IG9wZXJhdGlvbi4gT25jZSBJIGtub3cgdGhlIGNhbGxlciwgSSBjYW4gYW5hbHl6ZSB0aGUgYXJndW1lbnRzIGl0JiMzOTtzIHBhc3NpbmcgdG8gdGhpcyBmdW5jdGlvbi4gVGhhdCBnaXZlcyBtZSBjbHVlcyBhYm91dCB3aGljaCBzcGVjaWZpYyBkZXZpY2Ugb3Igb3BlcmF0aW9uIGlzIGJlaW5nIHRhcmdldGVkLiBJIGFsc28gbmVlZCB0byBiZSBhd2FyZSB0aGF0IGl0IG1pZ2h0IGJlIGNhbGxlZCBmcm9tIG11bHRpcGxlIHBsYWNlcywgc28gSSBuZWVkIHRvIGZpbmQgYWxsIG9mIHRoZW0uIEFscmlnaHQsIGxldCYjMzk7cyBnZXQgdG8gaXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX29wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTI5MjM9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDkwLVx0XHR9XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzA5MTpcdFx0ciA9IGt2bV9zMzkwX3BjaV96cGNpX29wKGt2bSwgXHUwMDI2YXJncyk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA5Mi1cdFx0YnJlYWs7XG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYz01OTU9c3RhdGljIGludCBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHN0cnVjdCB6cGNpX2RldiAqemRldixcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTYxNy1cbmFyY2gvczM5MC9rdm0vcGNpLmM6NjE4OmludCBrdm1fczM5MF9wY2lfenBjaV9vcChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF96cGNpX29wICphcmdzKVxuYXJjaC9zMzkwL2t2bS9wY2kuYy02MTkte1xuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmg9NTk9dm9pZCBrdm1fczM5MF9wY2lfY2xlYXJfbGlzdChzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC9zMzkwL2t2bS9wY2kuaC02MC1cbmFyY2gvczM5MC9rdm0vcGNpLmg6NjE6aW50IGt2bV9zMzkwX3BjaV96cGNpX29wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpO1xuYXJjaC9zMzkwL2t2bS9wY2kuaC02Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDgyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgQXNzZXNzbWVudDogS1ZNIGFuZCBaUENJIFZ1bG5lcmFiaWxpdHkgUG90ZW50aWFsKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhbiBgaW9jdGxgIGNhbGwsIHNwZWNpZmljYWxseSB0aGUgYEtWTV9TMzkwX1pQQ0lfT1BgIG9uIGEgS1ZNIFZNIGZpbGUgZGVzY3JpcHRvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgcmVhY2hhYmxlIHRocm91Z2ggYW4gYGlvY3RsYCBzdWdnZXN0cyBpdCYjMzk7cyBsaWtlbHkgYWNjZXNzaWJsZSBmcm9tIHVzZXIgc3BhY2UsIG1ha2luZyBpdCBhIHZpYWJsZSBhdHRhY2sgc3VyZmFjZS4gTXkgaW5zdGluY3QgaXMgdGVsbGluZyBtZSB0aGlzIGNvdWxkIGJlIGludGVyZXN0aW5nLgoKTm93LCB0byBkZXRlcm1pbmUgdGhlIHByYWN0aWNhbGl0eSBvZiBmdXp6aW5nLCBJIG5lZWQgdG8ga25vdyB0aGUgcHJlcmVxdWlzaXRlcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCB0byBjb21waWxlIGBhcmNoL3MzOTAva3ZtL3BjaS5jYC4gVW5kZXJzdGFuZGluZyB0aG9zZSBDT05GSUcgb3B0aW9ucyB3aWxsIHRlbGwgbWUgdGhlIG1pbmltdW0gc2V0dXAgbmVlZGVkIHRvIGV2ZW4gKmdldCogdG8gdGhpcyBjb2RlLiBUaGVuIEkgY2FuIGZpZ3VyZSBvdXQgaG93IHJlYWxpc3RpYyBpdCBpcyB0byBidWlsZCBhbiBlbnZpcm9ubWVudCB0aGF0IGNhbiB0cmlnZ2VyIHRoaXMgYGlvY3RsYC4gVGhlIGludmVzdGlnYXRpb24gY29udGludWVzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTI9a3ZtLXkgJiM0Mzs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTMtXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlOjE0Omt2bS0kKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgJiM0Mzs9IHBjaS5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19LVk0pICYjNDM7PSBrdm0ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTIwCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBEZXBlbmRlbmNpZXMgZm9yIFZGSU8tUENJIHdpdGggWkVEIERldmljZXMgaW4gS1ZNKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgbmVlZCBmb3IgYENPTkZJR19WRklPX1BDSV9aREVWX0tWTWAuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBJIGNhbiYjMzk7dCBldmVuICp0aGluayogYWJvdXQgdGhpcyB3aXRob3V0IHRoYXQgYmVpbmcgZW5hYmxlZC4gU28sIHRoYXQmIzM5O3MgZmlybWx5IGluIHBsYWNlLgoKTm93LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcmFiYml0IGhvbGUsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4gSXMgdGhlcmUgYW55dGhpbmcgZWxzZSBsdXJraW5nIGluIHRoZSBjb25maWd1cmF0aW9uIHRoYXQmIzM5O3MgZ29pbmcgdG8gdHJpcCBtZSB1cD8gQXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBmbGFncywgbWF5YmUgYSBoaWRkZW4gZGVwZW5kZW5jeSBJ4oCZbSBvdmVybG9va2luZz8gUGVyaGFwcyB0aGVyZSBhcmUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgaW1wbGljaXRseSBuZWVkZWQgZm9yIGBWRklPX1BDSV9aREVWX0tWTWAgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYW55dGhpbmcgdGhhdCBjb3VsZCBiZSBhIHByZXJlcXVpc2l0ZSBvciBtaWdodCBhbHRlciBpdHMgYmVoYXZpb3IgaW4gYW4gdW5leHBlY3RlZCB3YXkuIEJlc3QgdG8gYmUgdGhvcm91Z2ggZnJvbSB0aGUgZ2V0LWdvLiBObyBwb2ludCBpbiBkaWdnaW5nIG15c2VsZiBhIGhvbGUgZnVydGhlciBkb3duIHRoZSBsaW5lLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZnVsbHkgYXdhcmUgb2YgdGhlIGxhbmRzY2FwZSwgYW5kIGhvdyBpdCBpcyBjb21wb3NlZCwgYmVmb3JlIG1ha2luZyBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtWRklPX1BDSV9aREVWX0tWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDEwOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNjUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBLY29uZmlnIGZvciBWRklPIGFuZCBaREVWKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGltcGxpY2F0aW9ucyBvZiBgVkZJT19QQ0lfWkRFVl9LVk1gLiBNeSBndXQgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIHNvbWV0aGluZyBzcGVjaWZpYyDigJMgbGlrZWx5IGEgc3BlY2lhbGl6ZWQgZGV2aWNlIG9yIFotcmVsYXRlZCBmZWF0dXJlIHdpdGhpbiBWRklPLCBwb3RlbnRpYWxseSB0aWVkIHRvIEtWTSB2aXJ0dWFsaXphdGlvbi4gVGhlIGZpcnN0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCBpdHMgZGVjbGFyYXRpb24gYW5kIGRlcGVuZGVuY2llcy4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgc2VhcmNoIGFsbCByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc3VyZmFjZS1sZXZlbCBncmVwOyBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqaG93KiB0aGlzIHZhcmlhYmxlIGlzIGRlZmluZWQsICp3aGVyZSogaXQmIzM5O3MgZGVmaW5lZCwgYW5kLCBjcnVjaWFsbHksIHdoYXQgY29uZGl0aW9uYWwgbG9naWMgc3Vycm91bmRzIGl0LiBJcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQ/IERvZXMgaXQgZGVwZW5kIG9uIG90aGVyLCBtb3JlIGZ1bmRhbWVudGFsIFZGSU8gb3IgS1ZNIGZlYXR1cmVzPyBBcmUgdGhlcmUgcGxhdGZvcm0tc3BlY2lmaWMgZGVwZW5kZW5jaWVzIGluIHBsYXk/IEkgbmVlZCB0aGUgY29tcGxldGUgcGljdHVyZSB0byBmdWxseSBncmFzcCBpdHMgaW1wYWN0LiBUaGlzIHNlYXJjaCBpcyB0aGUgZm91bmRhdGlvbiBmb3IgYW55IGRlZXBlciBhbmFseXNpcyBvciBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9NYWtlZmlsZT0xMj1rdm0teSAmIzQzOz0gZGF0Lm8gZ21hcC5vIGZhdWx0aW4ub1xuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZS0xMy1cbmFyY2gvczM5MC9rdm0vTWFrZWZpbGU6MTQ6a3ZtLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSAmIzQzOz0gcGNpLm9cbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX0tWTSkgJiM0Mzs9IGt2bS5vXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zNjIwPXN0YXRpYyB2b2lkIGdpYl9hbGVydF9pcnFfaGFuZGxlcihzdHJ1Y3QgYWlycV9zdHJ1Y3QgKmFpcnEsXG4tLVxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNjI3LVx0aWYgKChpbmZvLVx1MDAzZWZvcndhcmQgfHwgaW5mby1cdTAwM2VlcnJvcikgXHUwMDI2XHUwMDI2XG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jOjM2Mjg6XHQgICAgSVNfRU5BQkxFRChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pKSB7XG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM2MjktXHRcdGFlbl9wcm9jZXNzX2dhaXQoaW5mby1cdTAwM2Vpc2MpO1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00OTY9c3RhdGljIGludCBfX2luaXQgX19rdm1fczM5MF9pbml0KHZvaWQpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUyMC1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1MjE6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pKSB7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTIyLVx0XHRyYyA9IGt2bV9zMzkwX3BjaV9pbml0KCk7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUzOC1lcnJfZ2liOlxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjUzOTpcdGlmIChJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTQwLVx0XHRrdm1fczM5MF9wY2lfZXhpdCgpO1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz01NTA9c3RhdGljIHZvaWQgX19rdm1fczM5MF9leGl0KHZvaWQpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NS1cdGt2bV9zMzkwX2dpYl9kZXN0cm95KCk7XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6NTU2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01NTctXHRcdGt2bV9zMzkwX3BjaV9leGl0KCk7XG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTI5MjM9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDg0LVx0XHRyID0gLUVJTlZBTDtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMDg1Olx0XHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSlcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDg2LVx0XHRcdGJyZWFrO1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMjUyPXZvaWQga3ZtX2FyY2hfZnJlZV92bShzdHJ1Y3Qga3ZtICprdm0pXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzI1My17XG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzI1NDpcdGlmIChJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkpXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzI1NS1cdFx0a3ZtX3MzOTBfcGNpX2NsZWFyX2xpc3Qoa3ZtKTtcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MzI2MD1pbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbi0tXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzMzNi1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMzM3Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSkge1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMzMzgtXHRcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWxvY2spO1xuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmg9NDY9c3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtICprdm1fczM5MF9wY2lfc2lfdG9fa3ZtKHN0cnVjdCB6cGNpX2FpZnQgKmFpZnQsXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuaC00OC17XG5hcmNoL3MzOTAva3ZtL3BjaS5oOjQ5Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgfHwgIWFpZnQtXHUwMDNla3pkZXYgfHxcbmFyY2gvczM5MC9rdm0vcGNpLmgtNTAtXHQgICAgIWFpZnQtXHUwMDNla3pkZXZbc2ldKVxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmg9NjY9c3RhdGljIGlubGluZSBib29sIGt2bV9zMzkwX3BjaV9pbnRlcnBfYWxsb3dlZCh2b2lkKVxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmgtODAtXHRkZWZhdWx0OlxuYXJjaC9zMzkwL2t2bS9wY2kuaDo4MTpcdFx0cmV0dXJuIChJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgXHUwMDI2XHUwMDI2XG5hcmNoL3MzOTAva3ZtL3BjaS5oLTgyLVx0XHRcdHNjbHAuaGFzX3pwY2lfbHNpIFx1MDAyNlx1MDAyNiBzY2xwLmhhc19hZW5pIFx1MDAyNlx1MDAyNiBzY2xwLmhhc19haXNpIFx1MDAyNlx1MDAyNlxuLS1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz00NT1lbmRpZlxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlPTM9dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xuZHJpdmVycy92ZmlvL3BjaS9NYWtlZmlsZTo0OnZmaW8tcGNpLWNvcmUtJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICYjNDM7PSB2ZmlvX3BjaV96ZGV2Lm9cbmRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGUtNS12ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX0RNQUJVRikgJiM0Mzs9IHZmaW9fcGNpX2RtYWJ1Zi5vXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg9ODU9c3RhdGljIGlubGluZSBpbnQgdmZpb19wY2lfaWdkX2luaXQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfcHJpdi5oLTkwLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2Lmg6OTE6I2lmZGVmIENPTkZJR19WRklPX1BDSV9aREVWX0tWTVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtOTItaW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC91c2VyLmg9MTQ9c3RydWN0IHVzZXJfc3RydWN0IHtcbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3VzZXIuaC0yNy1cdGRlZmluZWQoQ09ORklHX05FVCkgfHwgZGVmaW5lZChDT05GSUdfSU9fVVJJTkcpIHx8IFxcXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3VzZXIuaDoyODpcdGRlZmluZWQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSB8fCBJU19FTkFCTEVEKENPTkZJR19JT01NVUZEKVxuaW5jbHVkZS9saW51eC9zY2hlZC91c2VyLmgtMjktXHRhdG9taWNfbG9uZ190IGxvY2tlZF92bTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU2OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgVkZJTy1QQ0kgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgVkZJT19QQ0lfWkRFVl9LVk1gIGNvbmZpZyBvcHRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGF0ICphbGwqIHRoZXJlIGlzPyBBcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBvciBzaG91bGQgY2hlY2s/JiMzNDsgT2J2aW91c2x5LCBLVk0gaXMgZXNzZW50aWFsIGhlcmUsIHNvIHRoYXQmIzM5O3MgYSBnaXZlbi4gQW5kIG9mIGNvdXJzZSwgVkZJT19QQ0kgaXRzZWxmIGlzIG5lY2Vzc2FyeSDigJMgdGhhdCYjMzk7cyB0aGUgY29yZSBjb21wb25lbnQuIE5vdywgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLCBJJiMzOTtsbCBkaXZlIGludG8gYGRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZ2AgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUgYW5kIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW50ZXJhY3Rpb25zIHdpdGggYFZGSU9fUENJX1pERVZfS1ZNYC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhbnkgcmVsYXRlZCBzZXR0aW5ncyBvciBmbGFncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZGSU9fUENJX1pERVZfS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz00NT1lbmRpZlxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ4LVx0Ym9vbCBcJiMzNDtWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTA6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk1MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkRlbHZpbmcgaW50byB0aGUgVkZJTyBLY29uZmlnIGZvciBVbmRlcnN0YW5kaW5nKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWdgIGZpbGUuIEkmIzM5O20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gbGluZSA0NywgYXMgdGhhdCBhcmVhIHVzdWFsbHkgaG9sZHMgc29tZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBvcHRpb25zIGFyZSBjb250cm9sbGVkIGhlcmUgZm9yIHRoZSBWRklPLVBDSSBkcml2ZXIuIElzIGl0IHRoZSBmZWF0dXJlIGZsYWdzLCBwbGF0Zm9ybSBzdXBwb3J0IG9yIHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBJIG5lZWQgdG8gcmVtZW1iZXI/IExldCYjMzk7cyByZWZyZXNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNDA6XHRcdCAgYXNzaWdubWVudCB0byB2aXJ0dWFsIG1hY2hpbmVzLiAgVGhpcyBpbmNsdWRlcyBleHBvc2luZyBhbiBJR0RcbiAgNDE6XHRcdCAgc3BlY2lmaWMgZmlybXdhcmUgdGFibGUgYW5kIHJlYWQtb25seSBjb3BpZXMgb2YgdGhlIGhvc3QgYnJpZGdlXG4gIDQyOlx0XHQgIGFuZCBMUEMgYnJpZGdlIGNvbmZpZyBzcGFjZS5cbiAgNDM6XHRcbiAgNDQ6XHRcdCAgVG8gZW5hYmxlIEludGVsIElHRCBhc3NpZ25tZW50IHRocm91Z2ggdmZpby1wY2ksIHNheSBZLlxuICA0NTpcdGVuZGlmXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIFZGSU9fUENJX1pERVZfS1ZNXG4gIDQ4Olx0XHRib29sIFwmIzM0O1ZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIHMzOTB4IEtWTSBwYXNzdGhyb3VnaFwmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBTMzkwIFx1MDAyNlx1MDAyNiBLVk1cbiAgNTA6XHRcdGRlZmF1bHQgeVxuICA1MTpcdFx0aGVscFxuICA1MjpcdFx0ICBTdXBwb3J0IHMzOTB4LXNwZWNpZmljIGV4dGVuc2lvbnMgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGVuaGFuY2VtZW50c1xuICA1MzpcdFx0ICB0byBLVk0gcGFzc3Rocm91Z2ggY2FwYWJpbGl0aWVzLCBzdWNoIGFzIGludGVycHJldGl2ZSBleGVjdXRpb24gb2ZcbiAgNTQ6XHRcdCAgelBDSSBpbnN0cnVjdGlvbnMuXG4gIDU1Olx0XG4gIDU2Olx0XHQgIFRvIGVuYWJsZSBzMzkweCBLVk0gdmZpby1wY2kgZXh0ZW5zaW9ucywgc2F5IFkuXG4gIDU3Olx0XG4gIDU4Olx0Y29uZmlnIFZGSU9fUENJX0RNQUJVRlxuICA1OTpcdFx0ZGVmX2Jvb2wgeSBpZiBWRklPX1BDSV9DT1JFIFx1MDAyNlx1MDAyNiBQQ0lfUDJQRE1BIFx1MDAyNlx1MDAyNiBETUFfU0hBUkVEX0JVRkZFUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDI5CgkJCQkJCQlvdXRwdXQ6IDE5NQoJCQkJCQkJdGhvdWdodHM6IDM2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVkZJT19QQ0lfWkRFVl9LVk0gRGVwZW5kZW5jeSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gYFZGSU9fUENJX1pERVZfS1ZNYCwgYW5kIGl0JiMzOTtzIGNsZWFyIGl0IGhpbmdlcyBvbiBib3RoIGBTMzkwYCBhbmQgYEtWTWAuIFRoZSBkZWZhdWx0IHNldHRpbmcgaXMgJiMzNDt5JiMzNDssIHdoaWNoIGlzIGludGVyZXN0aW5nLiBOb3csIGxvb2tpbmcgYXQgdGhlIGNvZGUgZmxvdywgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUgc2VlbXMgdG8gYmUgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYC4gSXQgZ2V0cyBjYWxsZWQgdmlhIGEgY2hhaW46IGZyb20gYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gLCB3aGljaCBpdHNlbGYgaXMgdHJpZ2dlcmVkIGJ5IGBrdm1fczM5MF9wY2lfenBjaV9vcGAsIHdoaWNoIGluIHR1cm4gaXMgYWN0aXZhdGVkIGJ5IGBrdm1fYXJjaF92bV9pb2N0bGAgd2hlbiBoYW5kbGluZyBgS1ZNX1MzOTBfWlBDSV9PUGAuIFRoaXMgaXMgYSBjbGVhciBwYXRoLCBtYWtpbmcgaXQgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHJpcGUgZm9yIGZ1enppbmcuCgpNeSBwcmltYXJ5IGZvY3VzIG5lZWRzIHRvIGJlIG9uIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgYW5kIGBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuYCwgYW5kIHNpbmNlIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgaXMgc3RhdGljLCBJIGNhbiBjb25jZW50cmF0ZSBvbiB0aGF0IGZvciBmdXp6aW5nLiBJIGNhbiB2ZXJpZnkgdGhpcy4gCgpBIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpcyBpbmRlZWQgc3RhdGljIHdpdGhpbiBgYXJjaC9zMzkwL2t2bS9wY2kuY2AsIHdoaWNoIGNvbmZpcm1zIG15IHRob3VnaHRzLiBJIHdhbnQgdG8gcnVsZSBvdXQgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpbmdzLiBTZWVtcyB0aGF0IGBLVk1gIGFuZCBgVkZJT19QQ0lfWkRFVl9LVk1gIGFyZSB0aGUgbWFpbiBjb25maWcgb3B0aW9ucyB0aGF0IGltcGFjdCB0aGlzIGZsb3cuIEdpdmVuIHRoYXQgYFZGSU9fUENJX1pERVZfS1ZNYCBpcyAmIzM0O3kmIzM0OyBieSBkZWZhdWx0IG9uIFMzOTAgd2l0aCBLVk0sIEkmIzM5O20gdGhpbmtpbmcgSSBvbmx5IG5lZWQgYEtWTWAgYW5kIGBWRklPX1BDSV9aREVWX0tWTWAgZW5hYmxlZC4gSSBjYW4gcHJvY2VlZCB0byBzZXQgdGhvc2UgYXMgdGhlIG5lY2Vzc2FyeSBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxMDowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJX1pERVZfS1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUmIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgb2YgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpbiB0aGUgczM5MCBLVk0gUENJIHBhc3N0aHJvdWdoIGNvZGUsIGFkZGluZyBhIGNoZWNrIGZvciBgZmliLVx1MDAzZWZtdDAuc3VtID09IDFgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBLVk1fUzM5MF9aUENJX09QYCBWTSBpb2N0bCwgd2hpY2ggYWxsb3dzIHVzZXJzcGFjZSB0byBjb25maWd1cmUgelBDSSBkZXZpY2VzIGZvciBhIEtWTSBndWVzdC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBvZiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIGluIHRoZSBzMzkwIEtWTSBQQ0kgcGFzc3Rocm91Z2ggY29kZSwgYWRkaW5nIGEgY2hlY2sgZm9yIGBmaWItXHUwMDNlZm10MC5zdW0gPT0gMWAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9TMzkwX1pQQ0lfT1BgIFZNIGlvY3RsLCB3aGljaCBhbGxvd3MgdXNlcnNwYWNlIHRvIGNvbmZpZ3VyZSB6UENJIGRldmljZXMgZm9yIGEgS1ZNIGd1ZXN0LiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowMzowOS40MTIwMjQ5ODVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE1NTg2OTc4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJWRklPX1BDSV9aREVWX0tWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9zMzkwX3BjaV9haWZfZW5hYmxlXCIsXG4gICAgXCJrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIG9mIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgaW4gdGhlIHMzOTAgS1ZNIFBDSSBwYXNzdGhyb3VnaCBjb2RlLCBhZGRpbmcgYSBjaGVjayBmb3IgYGZpYi1cXHUwMDNlZm10MC5zdW0gPT0gMWAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9TMzkwX1pQQ0lfT1BgIFZNIGlvY3RsLCB3aGljaCBhbGxvd3MgdXNlcnNwYWNlIHRvIGNvbmZpZ3VyZSB6UENJIGRldmljZXMgZm9yIGEgS1ZNIGd1ZXN0LiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UsIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEwOjAzOjA5LjQxMjAzMTk2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUyNDc5NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzc2OTM4ZWZlNWNiMTEwNmE2YTE1ZGVhZjU2MzQ3NGMwNDQyODdmOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMDowMzowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3BjaS5jIGIvYXJjaC9zMzkwL2t2bS9wY2kuY1xcbmluZGV4IDViMDc1YzM4OTk4ZTMxLi5kYzc0OGNkZTQ3MDNiOCAxMDA2NDRcXG4tLS0gYS9hcmNoL3MzOTAva3ZtL3BjaS5jXFxuKysrIGIvYXJjaC9zMzkwL2t2bS9wY2kuY1xcbkBAIC0zMDAsOSArMzAwLDE0IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBzdHJ1Y3QgenBjaV9maWIgKmZpYixcXG4gXFxuIFxcdGdhaXRlLVxcdTAwM2VnaXNjID0gZmliLVxcdTAwM2VmbXQwLmlzYztcXG4gXFx0Z2FpdGUtXFx1MDAzZWNvdW50Kys7XFxuLVxcdGdhaXRlLVxcdTAwM2VhaXNibyA9IGZpYi1cXHUwMDNlZm10MC5haXNibztcXG4tXFx0Z2FpdGUtXFx1MDAzZWFpc2IgPSB2aXJ0X3RvX3BoeXMocGFnZV9hZGRyZXNzKGFpc2JfcGFnZSkgKyAoZmliLVxcdTAwM2VmbXQwLmFpc2IgXFx1MDAyNlxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICB+UEFHRV9NQVNLKSk7XFxuK1xcdGlmIChmaWItXFx1MDAzZWZtdDAuc3VtID09IDEpIHtcXG4rXFx0XFx0Z2FpdGUtXFx1MDAzZWFpc2JvID0gZmliLVxcdTAwM2VmbXQwLmFpc2JvO1xcbitcXHRcXHRnYWl0ZS1cXHUwMDNlYWlzYiA9IHZpcnRfdG9fcGh5cyhwYWdlX2FkZHJlc3MoYWlzYl9wYWdlKSArXFxuK1xcdFxcdFxcdFxcdFxcdCAgIChmaWItXFx1MDAzZWZtdDAuYWlzYiBcXHUwMDI2IH5QQUdFX01BU0spKTtcXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0Z2FpdGUtXFx1MDAzZWFpc2JvID0gMDtcXG4rXFx0XFx0Z2FpdGUtXFx1MDAzZWFpc2IgPSAwO1xcbitcXHR9XFxuIFxcdGFpZnQtXFx1MDAzZWt6ZGV2W3pkZXYtXFx1MDAzZWFpc2JdID0gemRldi1cXHUwMDNla3pkZXY7XFxuIFxcdHNwaW5fdW5sb2NrX2lycShcXHUwMDI2YWlmdC1cXHUwMDNlZ2FpdF9sb2NrKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEwOjAzOjEwLjA2NTU2MzIwOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwOTA1MTQ2OTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiVkZJT19QQ0lfWkRFVl9LVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fczM5MF9wY2lfYWlmX2VuYWJsZVwiLFxuICAgIFwia3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBvZiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIGluIHRoZSBzMzkwIEtWTSBQQ0kgcGFzc3Rocm91Z2ggY29kZSwgYWRkaW5nIGEgY2hlY2sgZm9yIGBmaWItXFx1MDAzZWZtdDAuc3VtID09IDFgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBLVk1fUzM5MF9aUENJX09QYCBWTSBpb2N0bCwgd2hpY2ggYWxsb3dzIHVzZXJzcGFjZSB0byBjb25maWd1cmUgelBDSSBkZXZpY2VzIGZvciBhIEtWTSBndWVzdC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3NjkzOGVmZTVjYjExMDZhNmExNWRlYWY1NjM0NzRjMDQ0Mjg3ZjlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxMDowMzowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmMgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5pbmRleCA1YjA3NWMzODk5OGUzMS4uZGM3NDhjZGU0NzAzYjggMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3BjaS5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5AQCAtMzAwLDkgKzMwMCwxNCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXG4gXG4gXHRnYWl0ZS1cdTAwM2VnaXNjID0gZmliLVx1MDAzZWZtdDAuaXNjO1xuIFx0Z2FpdGUtXHUwMDNlY291bnQrKztcbi1cdGdhaXRlLVx1MDAzZWFpc2JvID0gZmliLVx1MDAzZWZtdDAuYWlzYm87XG4tXHRnYWl0ZS1cdTAwM2VhaXNiID0gdmlydF90b19waHlzKHBhZ2VfYWRkcmVzcyhhaXNiX3BhZ2UpICsgKGZpYi1cdTAwM2VmbXQwLmFpc2IgXHUwMDI2XG4tXHRcdFx0XHRcdFx0XHQgICAgICB+UEFHRV9NQVNLKSk7XG4rXHRpZiAoZmliLVx1MDAzZWZtdDAuc3VtID09IDEpIHtcbitcdFx0Z2FpdGUtXHUwMDNlYWlzYm8gPSBmaWItXHUwMDNlZm10MC5haXNibztcbitcdFx0Z2FpdGUtXHUwMDNlYWlzYiA9IHZpcnRfdG9fcGh5cyhwYWdlX2FkZHJlc3MoYWlzYl9wYWdlKSArXG4rXHRcdFx0XHRcdCAgIChmaWItXHUwMDNlZm10MC5haXNiIFx1MDAyNiB+UEFHRV9NQVNLKSk7XG4rXHR9IGVsc2Uge1xuK1x0XHRnYWl0ZS1cdTAwM2VhaXNibyA9IDA7XG4rXHRcdGdhaXRlLVx1MDAzZWFpc2IgPSAwO1xuK1x0fVxuIFx0YWlmdC1cdTAwM2VremRldlt6ZGV2LVx1MDAzZWFpc2JdID0gemRldi1cdTAwM2VremRldjtcbiBcdHNwaW5fdW5sb2NrX2lycShcdTAwMjZhaWZ0LVx1MDAzZWdhaXRfbG9jayk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowMzoxMC4wNjU1NjU0OTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTU2OTE3NTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgUG90ZW50aWFsOiBBIERlZXAgRGl2ZSBpbnRvIHMzOTAgS1ZNIFBDSSBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgYXJjaC9zMzkwL2t2bS9wY2kuY2AsIHNwZWNpZmljYWxseSB0aGUgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhpcyBuZXcgYGlmIChmaWItXHUwMDNlZm10MC5zdW0gPT0gMSlgIGNoZWNrLCB3aGljaCBzZWVtcyB0byBiZSBhIGNvbmRpdGlvbmFsIGdhdGUgYmVmb3JlIHNldHRpbmcgYGdhaXRlLVx1MDAzZWFpc2JvYCBhbmQgYGdhaXRlLVx1MDAzZWFpc2JgLiBNeSBpbml0aWFsIHRob3VnaHQgaXM6ICpjYW4gd2UgZnV6eiB0aGlzPypcblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5vdGUgdGhhdCB0aGUgY29kZSBpcyB3aXRoaW4gYGFyY2gvczM5MC9rdm0vcGNpLmNgLiBHb29kLCB0aGF0IG5hcnJvd3MgZG93biB0aGUgc2NvcGUuIE5vdyB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gV2FpdCBhIHNlY29uZCwgdGhlIGZhY3QgdGhhdCB3ZSdyZSB0YWxraW5nIGFib3V0IEtWTSBvbiBzMzkwIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSByZWNhbGwgdGhhdCBzeXprYWxsZXIgKmRvZXMqIGZ1enogS1ZNIG9uIHMzOTB4LCBzbyB0aGF0IHN1Z2dlc3RzIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBkZWZpbml0ZWx5IHRlc3RhYmxlLlxuXG5BbHJpZ2h0LCBsZXQncyBmaWd1cmUgb3V0IHdoYXQgQ09ORklHIG9wdGlvbnMgYXJlIG5lZWRlZCB0byBldmVuIGJyaW5nIHRoaXMgZnVuY3Rpb25hbGl0eSBpbnRvIHRoZSBidWlsZC4gVG8gZG8gdGhhdCwgSSdsbCBnbyBiYWNrIHRvIHRoZSBzb3VyY2UgZmlsZTogYGFyY2gvczM5MC9rdm0vcGNpLmNgIGFuZCBpbW1lZGlhdGVseSAqZ3JlcCogZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgdG8gZXN0YWJsaXNoIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBjb2RlIGJsb2NrIGFuZCBpdHMgcG90ZW50aWFsIENPTkZJRyBkZXBlbmRlbmNpZXMuIFRoaXMgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgdGVzdGluZyBsYW5kc2NhcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjEsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowMzoxOC4wMjI0ODUzMTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NjUxNTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX3BjaV9haWZfZW5hYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9wY2kuYz0yMDM9c3RhdGljIGlubGluZSBpbnQgYWNjb3VudF9tZW0odW5zaWduZWQgbG9uZyBucl9wYWdlcylcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtMjIxLVxcbmFyY2gvczM5MC9rdm0vcGNpLmM6MjIyOnN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBzdHJ1Y3QgenBjaV9maWIgKmZpYixcXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTIyMy1cXHRcXHRcXHRcXHQgICBib29sIGFzc2lzdClcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmM9NTk1PXN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTYxNC1cXHRob3N0ZmxhZyA9ICEoYXJncy1cXHUwMDNldS5yZWdfYWVuLmZsYWdzIFxcdTAwMjYgS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTl9IT1NUKTtcXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjYxNTpcXHRyZXR1cm4ga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoemRldiwgXFx1MDAyNmZpYiwgaG9zdGZsYWcpO1xcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjE2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6MTguMTI4MTQyNDA1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTEwODY2NzMyMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgY29kZSBzbmlwcGV0OlxuXG4qKlRyYWNpbmcgdGhlIEFjdGl2YXRpb24gb2YgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCoqXG5cbk9rYXksIHNvIEkgc2VlIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgaXMgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gLiBUaGF0J3MgdGhlIGZpcnN0IGNvbm5lY3Rpb24uIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzICp3aGVuKiBhbmQgKndoeSogYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gIGdldHMgaW52b2tlZC4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0byBmdWxseSBncmFzcCB0aGUgY29udHJvbCBmbG93LiBJJ2xsIG5lZWQgdG8gdHJhY2UgYWxsIHRoZSBjYWxsIHNpdGVzIG9mIHRoYXQgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0J3MgdHJpZ2dlcmVkLiBUaGlzIHNob3VsZCByZXZlYWwgdGhlIHNwZWNpZmljIGV2ZW50IG9yIHN0YXRlIHRoYXQgY2F1c2VzIHRoZSBQQ0kgQUlGIGVuYWJsZW1lbnQuIFVuZGVyc3RhbmRpbmcgdGhvc2UgY29uZGl0aW9ucyBpcyBrZXkgdG8gdGhlIG92ZXJhbGwgbWVjaGFuaXNtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTU1LCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6MjkuMjE0ODE3ODk3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjA4MjYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9wY2kuYz01Nzg9c3RhdGljIHN0cnVjdCB6cGNpX2RldiAqZ2V0X3pkZXZfZnJvbV9rdm1fYnlfZmgoc3RydWN0IGt2bSAqa3ZtLCB1MzIgZmgpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTU5NC1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjU5NTpzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4oc3RydWN0IHpwY2lfZGV2ICp6ZGV2LFxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNTk2LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTYxOD1pbnQga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncylcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjQ3LVxcdFxcdH1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjY0ODpcXHRcXHRyID0ga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2Flbih6ZGV2LCBhcmdzKTtcXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY0OS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6MjkuMzQ2OTA2NDc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTg3OTk0NDQxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgcXVlc3Rpb246XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIFNpdGUgb2YgYGt2bV9zMzkwX3BjaV96cGNpX29wYCoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGVyZSBga3ZtX3MzOTBfcGNpX3pwY2lfb3BgIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBUaGF0J3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgZ2l2ZW4gaXRzIG5hbWUg4oCTIGl0J3MgY2xlYXJseSByZWxhdGVkIHRvIEtWTSBvbiBzMzkweCwgYW5kIGxpa2VseSBQQ0kvWlBDSSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSSBrbm93IHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzb21ld2hlcmUgaW4gdGhlIEtWTSBpbmZyYXN0cnVjdHVyZSwgcHJvYmFibHkgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSBlbXVsYXRpb24gb2YgUENJIGRldmljZXMgb3IgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIFpQQ0kgaGFyZHdhcmUgb24gYW4gczM5MHggc3lzdGVtLiBLbm93aW5nIHRoZSBjYWxsIHNpdGUgd2lsbCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBvciBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gdGhpcyBvbmUgaXMgaW52b2tlZCBieS4gVGhpcyBsZXRzIG1lIG1hcCBvdXQgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcG90ZW50aWFsIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIHVzZSBteSBzb3VyY2UgY29kZSBuYXZpZ2F0aW9uIHRvb2xzIGFuZCBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIEhvcGVmdWxseSwgdGhlIGNhbGxpbmcgY29udGV4dCB3aWxsIHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHRyYWNlIGl0IGFsbCB0aGUgd2F5IGJhY2sgdXAgdGhlIHN0YWNrLiBJdOKAmWxsIHRlbGwgbWUgdGhlIG9yaWdpbmF0aW5nIGV2ZW50IG9yIG9wZXJhdGlvbiB0aGF0IHRyaWdnZXJlZCBpdC4gSXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGFuIGd1ZXN0IGF0dGVtcHRpbmcgdG8gYWNjZXNzIG9yIGNvbmZpZ3VyZSBhIFBDSSBkZXZpY2UsIG9yIHBlcmhhcHMgYnkgc29tZSBob3N0IG1hbmFnZW1lbnQgb3BlcmF0aW9uLiBPbmNlIEkga25vdyB0aGUgY2FsbGVyLCBJIGNhbiBhbmFseXplIHRoZSBhcmd1bWVudHMgaXQncyBwYXNzaW5nIHRvIHRoaXMgZnVuY3Rpb24uIFRoYXQgZ2l2ZXMgbWUgY2x1ZXMgYWJvdXQgd2hpY2ggc3BlY2lmaWMgZGV2aWNlIG9yIG9wZXJhdGlvbiBpcyBiZWluZyB0YXJnZXRlZC4gSSBhbHNvIG5lZWQgdG8gYmUgYXdhcmUgdGhhdCBpdCBtaWdodCBiZSBjYWxsZWQgZnJvbSBtdWx0aXBsZSBwbGFjZXMsIHNvIEkgbmVlZCB0byBmaW5kIGFsbCBvZiB0aGVtLiBBbHJpZ2h0LCBsZXQncyBnZXQgdG8gaXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjAxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6MzkuMjI2ODUzMzUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzA0Mjg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9wY2lfenBjaV9vcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjkyMz1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA5MC1cXHRcXHR9XFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMwOTE6XFx0XFx0ciA9IGt2bV9zMzkwX3BjaV96cGNpX29wKGt2bSwgXFx1MDAyNmFyZ3MpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDkyLVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYz01OTU9c3RhdGljIGludCBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHN0cnVjdCB6cGNpX2RldiAqemRldixcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjE3LVxcbmFyY2gvczM5MC9rdm0vcGNpLmM6NjE4OmludCBrdm1fczM5MF9wY2lfenBjaV9vcChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF96cGNpX29wICphcmdzKVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjE5LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmg9NTk9dm9pZCBrdm1fczM5MF9wY2lfY2xlYXJfbGlzdChzdHJ1Y3Qga3ZtICprdm0pO1xcbmFyY2gvczM5MC9rdm0vcGNpLmgtNjAtXFxuYXJjaC9zMzkwL2t2bS9wY2kuaDo2MTppbnQga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncyk7XFxuYXJjaC9zMzkwL2t2bS9wY2kuaC02Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6MzkuNDE5OTA5MDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTI2NTg4NDQ2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogS1ZNIGFuZCBaUENJIFZ1bG5lcmFiaWxpdHkgUG90ZW50aWFsKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYW4gYGlvY3RsYCBjYWxsLCBzcGVjaWZpY2FsbHkgdGhlIGBLVk1fUzM5MF9aUENJX09QYCBvbiBhIEtWTSBWTSBmaWxlIGRlc2NyaXB0b3IuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGl0J3MgcmVhY2hhYmxlIHRocm91Z2ggYW4gYGlvY3RsYCBzdWdnZXN0cyBpdCdzIGxpa2VseSBhY2Nlc3NpYmxlIGZyb20gdXNlciBzcGFjZSwgbWFraW5nIGl0IGEgdmlhYmxlIGF0dGFjayBzdXJmYWNlLiBNeSBpbnN0aW5jdCBpcyB0ZWxsaW5nIG1lIHRoaXMgY291bGQgYmUgaW50ZXJlc3RpbmcuXG5cbk5vdywgdG8gZGV0ZXJtaW5lIHRoZSBwcmFjdGljYWxpdHkgb2YgZnV6emluZywgSSBuZWVkIHRvIGtub3cgdGhlIHByZXJlcXVpc2l0ZXMuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoYXQga2VybmVsIGNvbmZpZ3VyYXRpb25zIGFyZSByZXF1aXJlZCB0byBjb21waWxlIGBhcmNoL3MzOTAva3ZtL3BjaS5jYC4gVW5kZXJzdGFuZGluZyB0aG9zZSBDT05GSUcgb3B0aW9ucyB3aWxsIHRlbGwgbWUgdGhlIG1pbmltdW0gc2V0dXAgbmVlZGVkIHRvIGV2ZW4gKmdldCogdG8gdGhpcyBjb2RlLiBUaGVuIEkgY2FuIGZpZ3VyZSBvdXQgaG93IHJlYWxpc3RpYyBpdCBpcyB0byBidWlsZCBhbiBlbnZpcm9ubWVudCB0aGF0IGNhbiB0cmlnZ2VyIHRoaXMgYGlvY3RsYC4gVGhlIGludmVzdGlnYXRpb24gY29udGludWVzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0ODIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowMzo1MC42ODU3OTYzMDFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjU2OTYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlPTEyPWt2bS15ICs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEzLVxcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGU6MTQ6a3ZtLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSArPSBwY2kub1xcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDM6NTAuODg4Mzc1MzA5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMDc2MDk5NTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIERlcGVuZGVuY2llcyBmb3IgVkZJTy1QQ0kgd2l0aCBaRUQgRGV2aWNlcyBpbiBLVk0qKlxuXG5BbHJpZ2h0LCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIG5lZWQgZm9yIGBDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk1gLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBJIGNhbid0IGV2ZW4gKnRoaW5rKiBhYm91dCB0aGlzIHdpdGhvdXQgdGhhdCBiZWluZyBlbmFibGVkLiBTbywgdGhhdCdzIGZpcm1seSBpbiBwbGFjZS5cblxuTm93LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciBkb3duIHRoaXMgcmFiYml0IGhvbGUsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLiBJcyB0aGVyZSBhbnl0aGluZyBlbHNlIGx1cmtpbmcgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCdzIGdvaW5nIHRvIHRyaXAgbWUgdXA/IEFyZSB0aGVyZSBhbnkgb3RoZXIgcmVxdWlyZWQgZmxhZ3MsIG1heWJlIGEgaGlkZGVuIGRlcGVuZGVuY3kgSeKAmW0gb3Zlcmxvb2tpbmc/IFBlcmhhcHMgdGhlcmUgYXJlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGltcGxpY2l0bHkgbmVlZGVkIGZvciBgVkZJT19QQ0lfWkRFVl9LVk1gIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgcmVsYXRlZCBjb25maWd1cmF0aW9ucywgYW55dGhpbmcgdGhhdCBjb3VsZCBiZSBhIHByZXJlcXVpc2l0ZSBvciBtaWdodCBhbHRlciBpdHMgYmVoYXZpb3IgaW4gYW4gdW5leHBlY3RlZCB3YXkuIEJlc3QgdG8gYmUgdGhvcm91Z2ggZnJvbSB0aGUgZ2V0LWdvLiBObyBwb2ludCBpbiBkaWdnaW5nIG15c2VsZiBhIGhvbGUgZnVydGhlciBkb3duIHRoZSBsaW5lLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZnVsbHkgYXdhcmUgb2YgdGhlIGxhbmRzY2FwZSwgYW5kIGhvdyBpdCBpcyBjb21wb3NlZCwgYmVmb3JlIG1ha2luZyBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkyMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEwOjA0OjAxLjk2NDQ3Nzg0MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEwNjIyNzQ4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWRklPX1BDSV9aREVWX0tWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDEwOjA0OjAyLjE3NTExMDE5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3ODMwNjg3NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBLY29uZmlnIGZvciBWRklPIGFuZCBaREVWKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBpbXBsaWNhdGlvbnMgb2YgYFZGSU9fUENJX1pERVZfS1ZNYC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byBzb21ldGhpbmcgc3BlY2lmaWMg4oCTIGxpa2VseSBhIHNwZWNpYWxpemVkIGRldmljZSBvciBaLXJlbGF0ZWQgZmVhdHVyZSB3aXRoaW4gVkZJTywgcG90ZW50aWFsbHkgdGllZCB0byBLVk0gdmlydHVhbGl6YXRpb24uIFRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgaXRzIGRlY2xhcmF0aW9uIGFuZCBkZXBlbmRlbmNpZXMuIEknbGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgc2VhcmNoIGFsbCByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIGlzbid0IGp1c3QgYSBzdXJmYWNlLWxldmVsIGdyZXA7IEkgd2FudCB0byB1bmRlcnN0YW5kICpob3cqIHRoaXMgdmFyaWFibGUgaXMgZGVmaW5lZCwgKndoZXJlKiBpdCdzIGRlZmluZWQsIGFuZCwgY3J1Y2lhbGx5LCB3aGF0IGNvbmRpdGlvbmFsIGxvZ2ljIHN1cnJvdW5kcyBpdC4gSXMgaXQgZW5hYmxlZCBieSBkZWZhdWx0PyBEb2VzIGl0IGRlcGVuZCBvbiBvdGhlciwgbW9yZSBmdW5kYW1lbnRhbCBWRklPIG9yIEtWTSBmZWF0dXJlcz8gQXJlIHRoZXJlIHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyBpbiBwbGF5PyBJIG5lZWQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgdG8gZnVsbHkgZ3Jhc3AgaXRzIGltcGFjdC4gVGhpcyBzZWFyY2ggaXMgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBkZWVwZXIgYW5hbHlzaXMgb3IgcG90ZW50aWFsIG1vZGlmaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNjUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowNDoyMC4wMDU4MDAzMDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjY3ODg0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVkZJT19QQ0lfWkRFVl9LVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTI9a3ZtLXkgKz0gZGF0Lm8gZ21hcC5vIGZhdWx0aW4ub1xcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTMtXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxNDprdm0tJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICs9IHBjaS5vXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfS1ZNKSArPSBrdm0ub1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYz0zNjIwPXN0YXRpYyB2b2lkIGdpYl9hbGVydF9pcnFfaGFuZGxlcihzdHJ1Y3QgYWlycV9zdHJ1Y3QgKmFpcnEsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2ludGVycnVwdC5jLTM2MjctXFx0aWYgKChpbmZvLVxcdTAwM2Vmb3J3YXJkIHx8IGluZm8tXFx1MDAzZWVycm9yKSBcXHUwMDI2XFx1MDAyNlxcbmFyY2gvczM5MC9rdm0vaW50ZXJydXB0LmM6MzYyODpcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pKSB7XFxuYXJjaC9zMzkwL2t2bS9pbnRlcnJ1cHQuYy0zNjI5LVxcdFxcdGFlbl9wcm9jZXNzX2dhaXQoaW5mby1cXHUwMDNlaXNjKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz00OTY9c3RhdGljIGludCBfX2luaXQgX19rdm1fczM5MF9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTIwLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1MjE6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSkge1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy01MjItXFx0XFx0cmMgPSBrdm1fczM5MF9wY2lfaW5pdCgpO1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTUzOC1lcnJfZ2liOlxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1Mzk6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTQwLVxcdFxcdGt2bV9zMzkwX3BjaV9leGl0KCk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9NTUwPXN0YXRpYyB2b2lkIF9fa3ZtX3MzOTBfZXhpdCh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTU1NS1cXHRrdm1fczM5MF9naWJfZGVzdHJveSgpO1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzo1NTY6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtNTU3LVxcdFxcdGt2bV9zMzkwX3BjaV9leGl0KCk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjkyMz1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA4NC1cXHRcXHRyID0gLUVJTlZBTDtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM6MzA4NTpcXHRcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSlcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA4Ni1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMjUyPXZvaWQga3ZtX2FyY2hfZnJlZV92bShzdHJ1Y3Qga3ZtICprdm0pXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMyNTMte1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMjU0OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkpXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMyNTUtXFx0XFx0a3ZtX3MzOTBfcGNpX2NsZWFyX2xpc3Qoa3ZtKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYz0zMjYwPWludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMzMzYtXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jOjMzMzc6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSkge1xcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMzM4LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlbG9jayk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5oPTQ2PXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bSAqa3ZtX3MzOTBfcGNpX3NpX3RvX2t2bShzdHJ1Y3QgenBjaV9haWZ0ICphaWZ0LFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuaC00OC17XFxuYXJjaC9zMzkwL2t2bS9wY2kuaDo0OTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSB8fCAhYWlmdC1cXHUwMDNla3pkZXYgfHxcXG5hcmNoL3MzOTAva3ZtL3BjaS5oLTUwLVxcdCAgICAhYWlmdC1cXHUwMDNla3pkZXZbc2ldKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuaD02Nj1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX3MzOTBfcGNpX2ludGVycF9hbGxvd2VkKHZvaWQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5oLTgwLVxcdGRlZmF1bHQ6XFxuYXJjaC9zMzkwL2t2bS9wY2kuaDo4MTpcXHRcXHRyZXR1cm4gKElTX0VOQUJMRUQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSBcXHUwMDI2XFx1MDAyNlxcbmFyY2gvczM5MC9rdm0vcGNpLmgtODItXFx0XFx0XFx0c2NscC5oYXNfenBjaV9sc2kgXFx1MDAyNlxcdTAwMjYgc2NscC5oYXNfYWVuaSBcXHUwMDI2XFx1MDAyNiBzY2xwLmhhc19haXNpIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDYtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cXHRib29sIFxcXCJWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlPTM9dmZpby1wY2ktY29yZS15IDo9IHZmaW9fcGNpX2NvcmUubyB2ZmlvX3BjaV9pbnRycy5vIHZmaW9fcGNpX3Jkd3IubyB2ZmlvX3BjaV9jb25maWcub1xcbmRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGU6NDp2ZmlvLXBjaS1jb3JlLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSArPSB2ZmlvX3BjaV96ZGV2Lm9cXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlLTUtdmZpby1wY2ktY29yZS0kKENPTkZJR19WRklPX1BDSV9ETUFCVUYpICs9IHZmaW9fcGNpX2RtYWJ1Zi5vXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaD04NT1zdGF0aWMgaW5saW5lIGludCB2ZmlvX3BjaV9pZ2RfaW5pdChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaC05MC1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX3ByaXYuaDo5MTojaWZkZWYgQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9wcml2LmgtOTItaW50IHZmaW9fcGNpX2luZm9femRldl9hZGRfY2FwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkL3VzZXIuaD0xND1zdHJ1Y3QgdXNlcl9zdHJ1Y3Qge1xcbi0tXFxuaW5jbHVkZS9saW51eC9zY2hlZC91c2VyLmgtMjctXFx0ZGVmaW5lZChDT05GSUdfTkVUKSB8fCBkZWZpbmVkKENPTkZJR19JT19VUklORykgfHwgXFxcXFxcbmluY2x1ZGUvbGludXgvc2NoZWQvdXNlci5oOjI4OlxcdGRlZmluZWQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSB8fCBJU19FTkFCTEVEKENPTkZJR19JT01NVUZEKVxcbmluY2x1ZGUvbGludXgvc2NoZWQvdXNlci5oLTI5LVxcdGF0b21pY19sb25nX3QgbG9ja2VkX3ZtO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowNDoyNC4zNzI1OTc0NDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY4NzA2OTEwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBWRklPLVBDSSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgVkZJT19QQ0lfWkRFVl9LVk1gIGNvbmZpZyBvcHRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJJcyB0aGF0ICphbGwqIHRoZXJlIGlzPyBBcmUgdGhlcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBvciBzaG91bGQgY2hlY2s/XCIgT2J2aW91c2x5LCBLVk0gaXMgZXNzZW50aWFsIGhlcmUsIHNvIHRoYXQncyBhIGdpdmVuLiBBbmQgb2YgY291cnNlLCBWRklPX1BDSSBpdHNlbGYgaXMgbmVjZXNzYXJ5IOKAkyB0aGF0J3MgdGhlIGNvcmUgY29tcG9uZW50LiBOb3csIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLCBJJ2xsIGRpdmUgaW50byBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBhbmQgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBpbnRlcmFjdGlvbnMgd2l0aCBgVkZJT19QQ0lfWkRFVl9LVk1gLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEknbSBub3Qgb3Zlcmxvb2tpbmcgYW55IHJlbGF0ZWQgc2V0dGluZ3Mgb3IgZmxhZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1NjksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowNDo0MS4yNDMyOTExNjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzI2MDI5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz00NT1lbmRpZlxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6NDc6Y29uZmlnIFZGSU9fUENJX1pERVZfS1ZNXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIHMzOTB4IEtWTSBwYXNzdGhyb3VnaFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDQ6NDEuNzc2NTU3MzE2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3Mjk1NzM5MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkRlbHZpbmcgaW50byB0aGUgVkZJTyBLY29uZmlnIGZvciBVbmRlcnN0YW5kaW5nKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYCBmaWxlLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gbGluZSA0NywgYXMgdGhhdCBhcmVhIHVzdWFsbHkgaG9sZHMgc29tZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBvcHRpb25zIGFyZSBjb250cm9sbGVkIGhlcmUgZm9yIHRoZSBWRklPLVBDSSBkcml2ZXIuIElzIGl0IHRoZSBmZWF0dXJlIGZsYWdzLCBwbGF0Zm9ybSBzdXBwb3J0IG9yIHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBJIG5lZWQgdG8gcmVtZW1iZXI/IExldCdzIHJlZnJlc2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxMDowNDo0NC41MDYxMzM4NTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDQwOlxcdFxcdCAgYXNzaWdubWVudCB0byB2aXJ0dWFsIG1hY2hpbmVzLiAgVGhpcyBpbmNsdWRlcyBleHBvc2luZyBhbiBJR0RcXG4gIDQxOlxcdFxcdCAgc3BlY2lmaWMgZmlybXdhcmUgdGFibGUgYW5kIHJlYWQtb25seSBjb3BpZXMgb2YgdGhlIGhvc3QgYnJpZGdlXFxuICA0MjpcXHRcXHQgIGFuZCBMUEMgYnJpZGdlIGNvbmZpZyBzcGFjZS5cXG4gIDQzOlxcdFxcbiAgNDQ6XFx0XFx0ICBUbyBlbmFibGUgSW50ZWwgSUdEIGFzc2lnbm1lbnQgdGhyb3VnaCB2ZmlvLXBjaSwgc2F5IFkuXFxuICA0NTpcXHRlbmRpZlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIlZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIHMzOTB4IEtWTSBwYXNzdGhyb3VnaFxcXCJcXG4gIDQ5OlxcdFxcdGRlcGVuZHMgb24gUzM5MCBcXHUwMDI2XFx1MDAyNiBLVk1cXG4gIDUwOlxcdFxcdGRlZmF1bHQgeVxcbiAgNTE6XFx0XFx0aGVscFxcbiAgNTI6XFx0XFx0ICBTdXBwb3J0IHMzOTB4LXNwZWNpZmljIGV4dGVuc2lvbnMgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGVuaGFuY2VtZW50c1xcbiAgNTM6XFx0XFx0ICB0byBLVk0gcGFzc3Rocm91Z2ggY2FwYWJpbGl0aWVzLCBzdWNoIGFzIGludGVycHJldGl2ZSBleGVjdXRpb24gb2ZcXG4gIDU0OlxcdFxcdCAgelBDSSBpbnN0cnVjdGlvbnMuXFxuICA1NTpcXHRcXG4gIDU2OlxcdFxcdCAgVG8gZW5hYmxlIHMzOTB4IEtWTSB2ZmlvLXBjaSBleHRlbnNpb25zLCBzYXkgWS5cXG4gIDU3OlxcdFxcbiAgNTg6XFx0Y29uZmlnIFZGSU9fUENJX0RNQUJVRlxcbiAgNTk6XFx0XFx0ZGVmX2Jvb2wgeSBpZiBWRklPX1BDSV9DT1JFIFxcdTAwMjZcXHUwMDI2IFBDSV9QMlBETUEgXFx1MDAyNlxcdTAwMjYgRE1BX1NIQVJFRF9CVUZGRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDQ6NDQuNTA2MjI5NDI0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MjQyNTEyODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBWRklPX1BDSV9aREVWX0tWTSBEZXBlbmRlbmN5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gYFZGSU9fUENJX1pERVZfS1ZNYCwgYW5kIGl0J3MgY2xlYXIgaXQgaGluZ2VzIG9uIGJvdGggYFMzOTBgIGFuZCBgS1ZNYC4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcyBcInlcIiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE5vdywgbG9va2luZyBhdCB0aGUgY29kZSBmbG93LCB0aGUgY3JpdGljYWwgZnVuY3Rpb24gaGVyZSBzZWVtcyB0byBiZSBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgLiBJdCBnZXRzIGNhbGxlZCB2aWEgYSBjaGFpbjogZnJvbSBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAsIHdoaWNoIGl0c2VsZiBpcyB0cmlnZ2VyZWQgYnkgYGt2bV9zMzkwX3BjaV96cGNpX29wYCwgd2hpY2ggaW4gdHVybiBpcyBhY3RpdmF0ZWQgYnkgYGt2bV9hcmNoX3ZtX2lvY3RsYCB3aGVuIGhhbmRsaW5nIGBLVk1fUzM5MF9aUENJX09QYC4gVGhpcyBpcyBhIGNsZWFyIHBhdGgsIG1ha2luZyBpdCBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgcmlwZSBmb3IgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBuZWVkcyB0byBiZSBvbiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIGFuZCBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAsIGFuZCBzaW5jZSBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIGlzIHN0YXRpYywgSSBjYW4gY29uY2VudHJhdGUgb24gdGhhdCBmb3IgZnV6emluZy4gSSBjYW4gdmVyaWZ5IHRoaXMuIFxuXG5BIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpcyBpbmRlZWQgc3RhdGljIHdpdGhpbiBgYXJjaC9zMzkwL2t2bS9wY2kuY2AsIHdoaWNoIGNvbmZpcm1zIG15IHRob3VnaHRzLiBJIHdhbnQgdG8gcnVsZSBvdXQgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpbmdzLiBTZWVtcyB0aGF0IGBLVk1gIGFuZCBgVkZJT19QQ0lfWkRFVl9LVk1gIGFyZSB0aGUgbWFpbiBjb25maWcgb3B0aW9ucyB0aGF0IGltcGFjdCB0aGlzIGZsb3cuIEdpdmVuIHRoYXQgYFZGSU9fUENJX1pERVZfS1ZNYCBpcyBcInlcIiBieSBkZWZhdWx0IG9uIFMzOTAgd2l0aCBLVk0sIEknbSB0aGlua2luZyBJIG9ubHkgbmVlZCBgS1ZNYCBhbmQgYFZGSU9fUENJX1pERVZfS1ZNYCBlbmFibGVkLiBJIGNhbiBwcm9jZWVkIHRvIHNldCB0aG9zZSBhcyB0aGUgbmVjZXNzYXJ5IGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MjksIk91dHB1dFRva2VucyI6MTk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTA6MDU6MDAuNzQ4NzQ1NDU5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxOTU4Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIlZGSU9fUENJX1pERVZfS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgb2YgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpbiB0aGUgczM5MCBLVk0gUENJIHBhc3N0aHJvdWdoIGNvZGUsIGFkZGluZyBhIGNoZWNrIGZvciBgZmliLVxcdTAwM2VmbXQwLnN1bSA9PSAxYC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1MzOTBfWlBDSV9PUGAgVk0gaW9jdGwsIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gY29uZmlndXJlIHpQQ0kgZGV2aWNlcyBmb3IgYSBLVk0gZ3Vlc3QuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIlZGSU9fUENJX1pERVZfS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgb2YgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBpbiB0aGUgczM5MCBLVk0gUENJIHBhc3N0aHJvdWdoIGNvZGUsIGFkZGluZyBhIGNoZWNrIGZvciBgZmliLVxcdTAwM2VmbXQwLnN1bSA9PSAxYC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1MzOTBfWlBDSV9PUGAgVk0gaW9jdGwsIHdoaWNoIGFsbG93cyB1c2Vyc3BhY2UgdG8gY29uZmlndXJlIHpQQ0kgZGV2aWNlcyBmb3IgYSBLVk0gZ3Vlc3QuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7ql2[1] Phase: Succeeded StartedAt: 2026-07-10 10:05:13 +0000 UTC FinishedAt: 2026-07-10 10:05:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 10:05:13 +0000 UTC FinishedAt: 2026-07-10 10:05:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2] Phase: Succeeded StartedAt: 2026-07-10 10:05:13 +0000 UTC FinishedAt: 2026-07-10 11:15:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-10 10:05:13 +0000 UTC FinishedAt: 2026-07-10 11:15:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-10 10:05:13 +0000 UTC FinishedAt: 2026-07-10 10:05:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-10 10:05:13 +0000 UTC FinishedAt: 2026-07-10 10:05:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowl7ql2/series-workflowl7ql2-convert-artifact-4186136627/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-10 10:05:24 +0000 UTC FinishedAt: 2026-07-10 10:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-10 10:05:24 +0000 UTC FinishedAt: 2026-07-10 10:44:33 +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:*eb94bff2-7325-4d16-8ddc-58ea921793f2,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-workflowl7ql2/series-workflowl7ql2-convert-artifact-4186136627/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": "9b4928b5-f426-458f-b9f9-00a8fb3729a9", "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-workflowl7ql2/series-workflowl7ql2-build-action-3035204321/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-10 10:05:24 +0000 UTC FinishedAt: 2026-07-10 10:44:23 +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:*eb94bff2-7325-4d16-8ddc-58ea921793f2,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-workflowl7ql2/series-workflowl7ql2-convert-artifact-4186136627/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": "9b4928b5-f426-458f-b9f9-00a8fb3729a9", "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-workflowl7ql2/series-workflowl7ql2-build-action-3035204321/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-10 10:44:33 +0000 UTC FinishedAt: 2026-07-10 10:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-10 10:44:33 +0000 UTC FinishedAt: 2026-07-10 10:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-10 10:44:33 +0000 UTC FinishedAt: 2026-07-10 10:44:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-10 10:44:33 +0000 UTC FinishedAt: 2026-07-10 10:44:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowl7ql2/series-workflowl7ql2-convert-artifact-3901829418/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-10 10:44:43 +0000 UTC FinishedAt: 2026-07-10 10:46:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-10 10:44:43 +0000 UTC FinishedAt: 2026-07-10 10:46:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9b4928b5-f426-458f-b9f9-00a8fb3729a9,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-workflowl7ql2/series-workflowl7ql2-build-action-3035204321/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-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-10 10:46:50 +0000 UTC FinishedAt: 2026-07-10 10:46:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-10 10:46:50 +0000 UTC FinishedAt: 2026-07-10 10:46:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-10 10:46:50 +0000 UTC FinishedAt: 2026-07-10 11:12:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-10 10:46:50 +0000 UTC FinishedAt: 2026-07-10 11:12:07 +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:*eb94bff2-7325-4d16-8ddc-58ea921793f2,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-workflowl7ql2/series-workflowl7ql2-convert-artifact-3901829418/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": "37917f6e-761b-448e-ab2b-ea2d2a50781f", "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-workflowl7ql2/series-workflowl7ql2-build-action-1922451534/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-10 10:46:50 +0000 UTC FinishedAt: 2026-07-10 11:11:57 +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:*eb94bff2-7325-4d16-8ddc-58ea921793f2,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-workflowl7ql2/series-workflowl7ql2-convert-artifact-3901829418/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": "37917f6e-761b-448e-ab2b-ea2d2a50781f", "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-workflowl7ql2/series-workflowl7ql2-build-action-1922451534/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-10 11:12:07 +0000 UTC FinishedAt: 2026-07-10 11:12:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-10 11:12:07 +0000 UTC FinishedAt: 2026-07-10 11:12:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-10 11:12:07 +0000 UTC FinishedAt: 2026-07-10 11:14:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-10 11:12:07 +0000 UTC FinishedAt: 2026-07-10 11:14:06 +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:*37917f6e-761b-448e-ab2b-ea2d2a50781f,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-workflowl7ql2/series-workflowl7ql2-build-action-1922451534/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-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-10 11:14:16 +0000 UTC FinishedAt: 2026-07-10 11:15:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-10 11:14:16 +0000 UTC FinishedAt: 2026-07-10 11:15:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"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:*9b4928b5-f426-458f-b9f9-00a8fb3729a9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*37917f6e-761b-448e-ab2b-ea2d2a50781f,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-workflowl7ql2/series-workflowl7ql2-build-action-3035204321/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-workflowl7ql2/series-workflowl7ql2-build-action-1922451534/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-10 11:14:16 +0000 UTC FinishedAt: 2026-07-10 11:14:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-10 11:14:16 +0000 UTC FinishedAt: 2026-07-10 11:14:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"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-workflowl7ql2/series-workflowl7ql2-convert-artifact-3480120767/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-10 11:14:16 +0000 UTC FinishedAt: 2026-07-10 11:14:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-10 11:14:16 +0000 UTC FinishedAt: 2026-07-10 11:14:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-10 11:14:16 +0000 UTC FinishedAt: 2026-07-10 11:14:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-10 11:14:26 +0000 UTC FinishedAt: 2026-07-10 11:15:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl7ql2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_zpci_reg_aen"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","VFIO_PCI_ZDEV_KVM"],"series_id":"e33cd092-5150-4fda-bc29-2547d1cdf074","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-10 11:14:26 +0000 UTC FinishedAt: 2026-07-10 11:15:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9b4928b5-f426-458f-b9f9-00a8fb3729a9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*37917f6e-761b-448e-ab2b-ea2d2a50781f,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-workflowl7ql2/series-workflowl7ql2-build-action-3035204321/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-workflowl7ql2/series-workflowl7ql2-build-action-1922451534/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-workflowl7ql2/series-workflowl7ql2-convert-artifact-3480120767/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,}