Name: series-workflowxx5b7 Phase: Succeeded StartedAt: 2026-06-23 17:00:36 +0000 UTC FinishedAt: 2026-06-23 18:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[0] Phase: Succeeded StartedAt: 2026-06-23 17:00:36 +0000 UTC FinishedAt: 2026-06-23 17:13:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 17:00:36 +0000 UTC FinishedAt: 2026-06-23 17:13:52 +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": "ef057cbf825e03b63f6edf5980f96abf3c53089d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "ef057cbf825e03b63f6edf5980f96abf3c53089d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "c7b90b24-1e78-4575-9389-3f59fa9d482d" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "gmap_protect_asce_top_level", "gmap_create_shadow", "acquire_gmap_shadow", "vsie_run", "kvm_s390_handle_vsie" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbCYjMzQ7LAogICAgJiMzNDtnbWFwX2NyZWF0ZV9zaGFkb3cmIzM0OywKICAgICYjMzQ7YWNxdWlyZV9nbWFwX3NoYWRvdyYjMzQ7LAogICAgJiMzNDt2c2llX3J1biYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfdnNpZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBzMzkwIEtWTSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gKHZTSUUpIHdoZXJlIHRoZSB3cm9uZyBBU0NFIGZpZWxkIHdhcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGdldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBLVk0gY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDYyMDNiNmFjN2RmZmU4NWFlMDg5NjY4MGU0M2Y3YTk4NjlkZjllYThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAxNzoxMjoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2dtYXAuYyBiL2FyY2gvczM5MC9rdm0vZ21hcC5jXG5pbmRleCA3NzgyOWY3ODdkYzc4MS4uZTFlNzM0Y2JjMGNjZGEgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL2dtYXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9nbWFwLmNcbkBAIC0xMjg3LDcgJiM0MzsxMjg3LDcgQEAgc3RhdGljIGludCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBnbWFcbiBcdC8qIFBhaXJzIHdpdGggdGhlIHNtcF93bWIoKSBpbiBrdm1fbW11X2ludmFsaWRhdGVfZW5kKCkuICovXG4gXHRzbXBfcm1iKCk7XG4gXG4tXHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cdTAwM2Vrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLmR0ICYjNDM7IDEsIGZhbHNlKTtcbiYjNDM7XHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cdTAwM2Vrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLnRsICYjNDM7IDEsIGZhbHNlKTtcbiBcdGlmIChyYyBcdTAwM2UgMClcbiBcdFx0cmMgPSAtRUZBVUxUO1xuIFx0aWYgKCFyYylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwmIzM0OywKICAgICYjMzQ7Z21hcF9jcmVhdGVfc2hhZG93JiMzNDssCiAgICAmIzM0O2FjcXVpcmVfZ21hcF9zaGFkb3cmIzM0OywKICAgICYjMzQ7dnNpZV9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfaGFuZGxlX3ZzaWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gczM5MCBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSB3aGVyZSB0aGUgd3JvbmcgQVNDRSBmaWVsZCB3YXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBwYWdlcyB0byBnZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgS1ZNIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyMDNiNmFjN2RmZmU4NWFlMDg5NjY4MGU0M2Y3YTk4NjlkZjllYTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAyMyAxNzoxMjoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vZ21hcC5jIGIvYXJjaC9zMzkwL2t2bS9nbWFwLmMKaW5kZXggNzc4MjlmNzg3ZGM3ODEuLmUxZTczNGNiYzBjY2RhIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL2dtYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL2dtYXAuYwpAQCAtMTI4Nyw3ICYjNDM7MTI4Nyw3IEBAIHN0YXRpYyBpbnQgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hCiAJLyogUGFpcnMgd2l0aCB0aGUgc21wX3dtYigpIGluIGt2bV9tbXVfaW52YWxpZGF0ZV9lbmQoKS4gKi8KIAlzbXBfcm1iKCk7CiAKLQlyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy0mZ3Q7a3ZtLCBjb250ZXh0LmYsIGFzY2UucnN0bywgYXNjZS5kdCAmIzQzOyAxLCBmYWxzZSk7CiYjNDM7CXJjID0ga3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzKHNnLSZndDtrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLnRsICYjNDM7IDEsIGZhbHNlKTsKIAlpZiAocmMgJmd0OyAwKQogCQlyYyA9IC1FRkFVTFQ7CiAJaWYgKCFyYykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyOAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIHMzOTAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBhcmNoL3MzOTAva3ZtL2dtYXAuY2AuIFRoZSBjaGFuZ2UgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgcmVwbGFjaW5nIGBhc2NlLmR0ICYjNDM7IDFgIHdpdGggYGFzY2UudGwgJiM0MzsgMWAgaW4gYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIEtWTSBmb3IgczM5MCwgbm8gcXVlc3Rpb24gYWJvdXQgaXQuCgpOb3csIHRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkLCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGZ1enplYWJsZSBpbiBvdXIgZW52aXJvbm1lbnQuIFdlIHVzdWFsbHkgZm9jdXMgZnV6emluZyBlZmZvcnRzIG9uIHg4Nl82NCBvciBhcm02NCwgYnV0IGlmIHdlJiMzOTtyZSBydW5uaW5nIHMzOTB4LCB0aGVuIHRoaXMgY291bGQgb3BlbiB1cCBhIG5ldyBhdmVudWUuCgpMZXQmIzM5O3MgcGF1c2UsIHRoZSBwcm9tcHQgbWVudGlvbnMgc29tZXRoaW5nIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHaXZlbiB0aGlzIGlzIEtWTSwgdGhpcyBkb2VzIGdpdmUgbWUgcGF1c2UsIGl0IG1ha2VzIG1lIHRoaW5rLiBBcmUgdGhlcmUgY29uZmlndXJhdGlvbnMgd2UgYXJlIG1pc3Npbmc/CgpCdXQgd2FpdC4gSWYgd2UmIzM5O3JlIHJ1bm5pbmcgc3l6a2FsbGVyIG9uIHMzOTB4LCB0aGVuIHRoaXMgczM5MCBLVk0gY29kZSBpcyAqZGVmaW5pdGVseSogcmVhY2hhYmxlLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGltZSB0byBkaWcgaW50byB0aGUgYGFyY2gvczM5MC9rdm0vZ21hcC5jYCBmaWxlIGFuZCBzZWUgd2hhdCBLVk0tc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGFwcGx5IHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gV2UgbmVlZCB0byBmaW5kIHdoYXQgYWxsb3dzIHRoaXMgcGF0aCB0byBiZSBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vZ21hcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vZ21hcC5jPTEyMDU9c3RhdGljIHN0cnVjdCBnbWFwICpnbWFwX2ZpbmRfc2hhZG93KHN0cnVjdCBnbWFwICpwYXJlbnQsIHVuaW9uIGFzY2UgYXNjZSwgaW50IGVkYXRfbGV2ZWwpXG4tLVxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTIxOC0jZGVmaW5lIENSU1RfVEFCTEVfUEFHRVMgKF9DUlNUX1RBQkxFX1NJWkUgLyBQQUdFX1NJWkUpXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjE5OnN0cnVjdCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwge1xuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTIyMC1cdHVuc2lnbmVkIGxvbmcgc2VxO1xuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyMjMtXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjI0OnN0YXRpYyBpbmxpbmUgaW50IF9fZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqc2csXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjI1Olx0XHRcdFx0XHRcdHN0cnVjdCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwgKmNvbnRleHQpXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjI2LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjU2LVxuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTI1NzpzdGF0aWMgaW5saW5lIGludCBfZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqc2csXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjU4Olx0XHRcdFx0XHQgICAgICAgc3RydWN0IGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbCAqY29udGV4dClcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyNTkte1xuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyNzAtXHRcdFx0cmV0dXJuIHJjO1xuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTI3MTpcdFx0cmMgPSBfX2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChtYywgc2csIGNvbnRleHQpO1xuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTI3Mi1cdFx0cmFkaXhfdHJlZV9wcmVsb2FkX2VuZCgpO1xuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyNzctXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjc4OnN0YXRpYyBpbnQgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqc2cpXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjc5LXtcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyODA6XHRzdHJ1Y3QgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsIGNvbnRleHQgPSB7fTtcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyODEtXHR1bmlvbiBhc2NlIGFzY2UgPSBzZy1cdTAwM2VndWVzdF9hc2NlO1xuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyOTMtXHRpZiAoIXJjKVxuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTI5NDpcdFx0cmMgPSBfZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKG1jLCBzZywgXHUwMDI2Y29udGV4dCk7XG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjk1LVx0aWYgKHJjKVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jPTEzMTg9c3RydWN0IGdtYXAgKmdtYXBfY3JlYXRlX3NoYWRvdyhzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnBhcmVudCxcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMzY4LVx0LyogUHJvdGVjdCB3aGlsZSBpbnNlcnRpbmcsIHByb3RlY3RzIGFnYWluc3QgaW52YWxpZGF0aW9uIHJhY2VzLiAqL1xuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTM2OTpcdHJjID0gZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKG1jLCBuZXcpO1xuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTM3MC1cdGlmIChyYykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqQW5hbHl6aW5nIHRoZSBDYWxsIFN0YWNrIGFuZCBQb3RlbnRpYWwgT3B0aW1pemF0aW9uKioKCkFscmlnaHQsIHNvIGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBnbWFwX2NyZWF0ZV9zaGFkb3dgLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50IHRvIG5vdGUg4oCTIGl0IGdpdmVzIG1lIGEgY2xlYXIgaWRlYSBvZiB0aGUgY2FsbCBmbG93LiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdGhpbmsgYWJvdXQgd2hldGhlciB0aGVyZSYjMzk7cyBhbnl0aGluZyBwbGF0Zm9ybS1zcGVjaWZpYyBpbnZvbHZlZC4gR2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIGJyb2FkZXIgbWVtb3J5IG1hbmFnZW1lbnQgb3IgdmlydHVhbCBtZW1vcnkgc2V0dXAsIEkgbmVlZCB0byBjb25zaWRlciBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucyBvciB3b3JrYXJvdW5kcyBmb3IgczM5MCBLVk0sIHNwZWNpZmljYWxseS4gQXJlIHRoZXJlIGFueSBrbm93biBxdWlya3MsIGFyY2hpdGVjdHVyYWwgbnVhbmNlcywgb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgaW4gdGhlIHMzOTAgS1ZNIGVudmlyb25tZW50IHRoYXQgbWlnaHQgYmUgaW1wYWN0aW5nIHRoaXMgY29kZSBwYXRoPyBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgZGlmZmVyZW50IHdheSB3ZSBjYW4gaGFuZGxlIHRoZSBBU0NFIChBZGRyZXNzIFNwYWNlIENvbnRyb2wgRW50cnkpIHByb3RlY3Rpb24gZm9yIHRoaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljYWxseS4gVGltZSB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgcGF0aHMgYXNzb2NpYXRlZCB3aXRoIHMzOTAgS1ZNIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHRhcmdldHMgZm9yIHJldmlldyBvciBlbmhhbmNlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTI9a3ZtLXkgJiM0Mzs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTMtXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlOjE0Omt2bS0kKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgJiM0Mzs9IHBjaS5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19LVk0pICYjNDM7PSBrdm0ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBzMzkwIEtWTSBGdXp6aW5nIFBvc3NpYmlsaXR5KioKCk9rYXksIHNvIHRoZSBjb3JlIGNvbmZpZyB0byBjb25zaWRlciBpcyBkZWZpbml0ZWx5IGBDT05GSUdfS1ZNYC4gQnV0IGhlcmUmIzM5O3MgdGhlIHF1ZXN0aW9uOiBpcyBzMzkwIEtWTSBldmVuICphY2Nlc3NpYmxlKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVT8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoYXQsIGJlY2F1c2UgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocy4gRm9ydHVuYXRlbHksIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgc3VwcG9ydHMgczM5MHggYW5kIGlzIGtub3duIHRvIGZ1enogS1ZNIG9uIHRoYXQgdmVyeSBhcmNoaXRlY3R1cmUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKQnV0IGhvbGQgb24sIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiYjMzQ7IGluY2x1ZGluZyB0aG9zZSBlbXVsYXRlZCBieSBzb2Z0d2FyZSBsaWtlIFVTQiBnYWRnZXRzLCBtYWM4MDIxMV9od3NpbS4gT2theSwgc28gaXMgczM5MCBLVk0gcmVhY2hhYmxlIGluIHg4Nl82NCBHQ0U/IERlZmluaXRlbHkgbm90LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXMgbm90IHRoZSBjYXNlLgoKSG93ZXZlciwgc2luY2UgSSBrbm93IHN5emthbGxlciBydW5zIG9uIHMzOTB4IFFFTVUsIHRoYXQgb3BlbnMgdXAgcG9zc2liaWxpdGllcy4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGJlY29tZXMsIGlzIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGU/IElmIHNvLCB0aGVuIGl0IHdhcnJhbnRzIGRlZXBlciBpbnZlc3RpZ2F0aW9uIGFuZCBmdXp6aW5nLCB3aGljaCBtZWFucyB5ZXMsIHdlIHNob3VsZCBkZWZpbml0ZWx5IGV4cGxvcmUgdGhpcy4gU3l6a2FsbGVyJiMzOTtzIG11bHRpLWFyY2hpdGVjdHVyZSBzdXBwb3J0IGlzIGEgc2lnbmlmaWNhbnQgZmFjdG9yIGhlcmUuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGZvciBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWdzLCB0aG91Z2gsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgpSaWdodCwgYENPTkZJR19LVk1gIGlzIHRoZSBwcmltYXJ5IG9uZSwgb2YgY291cnNlLiBUbyB6ZXJvIGluIG9uIHRoZSBjcml0aWNhbCBjb2RlIGFyZWFzLCBJIG5lZWQgdG8gbG9vayBhdCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIGNvbmZpZy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGdtYXBfY3JlYXRlX3NoYWRvd2AgdG8gcGlucG9pbnQgd2hpY2ggc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSByZWxldmFudCBoZXJlLiBUaGF0IHNob3VsZCBndWlkZSBteSBuZXh0IHN0ZXBzIGluIGFzc2Vzc2luZyBpdHMgZnV6emluZyBwb3RlbnRpYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z21hcF9jcmVhdGVfc2hhZG93JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9nbWFwLmM9MTI3OD1zdGF0aWMgaW50IGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnNnKVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMDAtLyoqXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMzAxOiAqIGdtYXBfY3JlYXRlX3NoYWRvdygpIC0gQ3JlYXRlL2ZpbmQgYSBzaGFkb3cgZ3Vlc3QgYWRkcmVzcyBzcGFjZS5cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMDItICogQG1jOiBUaGUgY2FjaGUgdG8gdXNlIHRvIGFsbG9jYXRlIGRhdCB0YWJsZXMuXG4tLVxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTMxNy0gKi9cbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEzMTg6c3RydWN0IGdtYXAgKmdtYXBfY3JlYXRlX3NoYWRvdyhzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnBhcmVudCxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMTktXHRcdFx0XHR1bmlvbiBhc2NlIGFzY2UsIGludCBlZGF0X2xldmVsKVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5oPTEwOD12b2lkIF9nbWFwX2hhbmRsZV92c2llX3Vuc2hhZG93X2V2ZW50KHN0cnVjdCBnbWFwICpwYXJlbnQsIGdmbl90IGdmbik7XG5hcmNoL3MzOTAva3ZtL2dtYXAuaDoxMDk6c3RydWN0IGdtYXAgKmdtYXBfY3JlYXRlX3NoYWRvdyhzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKmdtYXAsXG5hcmNoL3MzOTAva3ZtL2dtYXAuaC0xMTAtXHRcdFx0XHR1bmlvbiBhc2NlIGFzY2UsIGludCBlZGF0X2xldmVsKTtcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0xMzAwPXN0YXRpYyBzdHJ1Y3QgZ21hcCAqYWNxdWlyZV9nbWFwX3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSlcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMzI5LWFnYWluOlxuYXJjaC9zMzkwL2t2bS92c2llLmM6MTMzMDpcdGdtYXAgPSBnbWFwX2NyZWF0ZV9zaGFkb3codmNwdS1cdTAwM2VhcmNoLm1jLCB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmdtYXAsIGFzY2UsIGVkYXQpO1xuYXJjaC9zMzkwL2t2bS92c2llLmMtMTMzMS1cdGlmIChJU19FUlIoZ21hcCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIzNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQ2FsbCBTdGFjazogYGFjcXVpcmVfZ21hcF9zaGFkb3dgKioKClJpZ2h0LCBgYWNxdWlyZV9nbWFwX3NoYWRvd2AgaXMgZmxhZ2dlZCBhcyBjb21pbmcgZnJvbSBgdnNpZS5jYC4gVGhhdCBpbW1lZGlhdGVseSBzcGFya3MgbXkgaW50ZXJlc3Q7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgY29udGV4dC4gTXkgbmV4dCBzdGVwLCBuYXR1cmFsbHksIGlzIHRvIHRyYWNlIHRob3NlIGNhbGxzLiBJIHdhbnQgdG8gc2VlICpleGFjdGx5KiB3aGVyZSBhbmQgaG93IGBhY3F1aXJlX2dtYXBfc2hhZG93YCBpcyBpbnZva2VkLiBXaGF0IGFyZSB0aGUgY2FsbGluZyBhcmd1bWVudHM/IFdoYXQgaXMgdGhlIGV4ZWN1dGlvbiBmbG93IGltbWVkaWF0ZWx5IGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGZ1bmN0aW9uIGNhbGw/IFRoYXQgaW5mb3JtYXRpb24gd2lsbCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBkZXRlcm1pbmUgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gc3lzdGVtIGJlaGF2aW9yLiBJdCYjMzk7cyB0aW1lIHRvIGRpdmUgaW50byB0aGUgY2FsbCBncmFwaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWNxdWlyZV9nbWFwX3NoYWRvdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vdnNpZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vdnNpZS5jPTEyODQ9c3RhdGljIHZvaWQgcmVsZWFzZV9nbWFwX3NoYWRvdyhzdHJ1Y3QgdnNpZV9wYWdlICp2c2llX3BhZ2UpXG4tLVxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTI5OS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jOjEzMDA6c3RhdGljIHN0cnVjdCBnbWFwICphY3F1aXJlX2dtYXBfc2hhZG93KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlKVxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTMwMS17XG4tLVxuYXJjaC9zMzkwL2t2bS92c2llLmM9MTM5Nj1zdGF0aWMgaW50IHZzaWVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlKVxuLS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE0MDItXHR3aGlsZSAoMSkge1xuYXJjaC9zMzkwL2t2bS92c2llLmM6MTQwMzpcdFx0c2cgPSBhY3F1aXJlX2dtYXBfc2hhZG93KHZjcHUsIHZzaWVfcGFnZSk7XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNDA0LVx0XHRpZiAoSVNfRVJSKHNnKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTEzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnNpZV9ydW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3ZzaWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3ZzaWUuYz0xMTA3PXN0YXRpYyBpbnQgdnNpZV9oYW5kbGVfbXZwZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSwgc3RydWN0IGdtYXAgKnNnKVxuLS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jLTExODYtICovXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxMTg3OnN0YXRpYyBpbnQgZG9fdnNpZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdnNpZV9wYWdlICp2c2llX3BhZ2UsIHN0cnVjdCBnbWFwICpzZylcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTExODgtXHRfX3JlbGVhc2VzKHZjcHUtXHUwMDNla3ZtLVx1MDAzZXNyY3UpXG4tLVxuYXJjaC9zMzkwL2t2bS92c2llLmM9MTM4Mj1zdGF0aWMgdm9pZCB1bnJlZ2lzdGVyX3NoYWRvd19zY2Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jLTEzOTUtICovXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxMzk2OnN0YXRpYyBpbnQgdnNpZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdnNpZV9wYWdlICp2c2llX3BhZ2UpXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMzk3LXtcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNDExLVx0XHRcdHVwZGF0ZV9pbnRlcnZlbnRpb25fcmVxdWVzdHModnNpZV9wYWdlKTtcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjE0MTI6XHRcdFx0cmMgPSBkb192c2llX3J1bih2Y3B1LCB2c2llX3BhZ2UsIHNnKTtcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE0MTMtXHRcdH1cbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0xNTU2PWludCBrdm1fczM5MF9oYW5kbGVfdnNpZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTU5OC1cdHJlZ2lzdGVyX3NoYWRvd19zY2IodmNwdSwgdnNpZV9wYWdlKTtcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjE1OTk6XHRyYyA9IHZzaWVfcnVuKHZjcHUsIHZzaWVfcGFnZSk7XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNjAwLVx0dW5yZWdpc3Rlcl9zaGFkb3dfc2NiKHZjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzI3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfaGFuZGxlX3ZzaWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NDQyPWludCBrdm1fczM5MF9za2V5X2NoZWNrX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC00NDQtLyogaW1wbGVtZW50ZWQgaW4gdnNpZS5jICovXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NDQ1OmludCBrdm1fczM5MF9oYW5kbGVfdnNpZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTQ0Ni12b2lkIGt2bV9zMzkwX3ZzaWVfa2ljayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jPTk1Nj1pbnQga3ZtX3MzOTBfaGFuZGxlX2IyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy05NjktXHRjYXNlIDB4MTQ6XG5hcmNoL3MzOTAva3ZtL3ByaXYuYzo5NzA6XHRcdHJldHVybiBrdm1fczM5MF9oYW5kbGVfdnNpZSh2Y3B1KTtcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTk3MS1cdGNhc2UgMHgyMTpcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0xNDgzPXN0YXRpYyBzdHJ1Y3QgdnNpZV9wYWdlICpnZXRfdnNpZV9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE1NTUtXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxNTU2OmludCBrdm1fczM5MF9oYW5kbGVfdnNpZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNTU3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg5MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHZTSUUgSGFuZGxpbmcgaW4gS1ZNL3MzOTAqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aCBoZXJlIGZvciB2U0lFLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gSSBzZWUgdGhhdCBga3ZtX3MzOTBfaGFuZGxlX3ZzaWVgIGlzIHRoZSBlbnRyeSBwb2ludCwgY2FsbGVkIGJ5IGBrdm1fczM5MF9oYW5kbGVfYjJgIHdoaWNoLCBpbiB0dXJuLCBkZWFscyB3aXRoIHRoZSBTSUUgaW5zdHJ1Y3Rpb24gKDB4YjIxNCkuIFRoaXMgaXMgdGhlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBiaXQsIHRoZSB2U0lFIGNvbXBvbmVudC4KCk5vdywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBjcml0aWNhbCBzeW1ib2xzIGluIHRoaXMgZmxvdy4gYGt2bV9zMzkwX2hhbmRsZV92c2llYCBraWNrcyB0aGluZ3Mgb2ZmLCBpdCBsZWFkcyB0byBgdnNpZV9ydW5gLCB0aGVuIHRvIGBhY3F1aXJlX2dtYXBfc2hhZG93YCwgYGdtYXBfY3JlYXRlX3NoYWRvd2AsIGFuZCBmaW5hbGx5LCB3ZSBhcnJpdmUgYXQgYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAuIEl0JiMzOTtzIGEgY2xlYXIgY2hhaW4gb2YgY2FsbHMgcmVwcmVzZW50aW5nIHRoZSBwcm9jZXNzLgoKV2FpdCBhIHNlY29uZC4uLiBJIHNlZSB0aGF0IGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgIGlzIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaW1lIHRvIHplcm8gaW4gb24gdGhhdCBvbmUuIFRoaXMgd2hvbGUgc2VxdWVuY2UgaXMgd29ydGggaW52ZXN0aWdhdGluZywgbGV0JiMzOTtzIGV4cGxvcmUgdGhpcyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIHZTSUUgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIG1vZGlmaWNhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnNpZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9NYWtlZmlsZT0xMD1rdm0teSAmIzQzOz0ga3ZtLXMzOTAubyBpbnRlcmNlcHQubyBpbnRlcnJ1cHQubyBwcml2Lm8gc2lncC5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlOjExOmt2bS15ICYjNDM7PSBkaWFnLm8gZ2FjY2Vzcy5vIGd1ZXN0ZGJnLm8gdnNpZS5vIHB2Lm9cbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTIta3ZtLXkgJiM0Mzs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU0OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKktWTSBJbnRlZ3JhdGlvbiDigJMgTGV0JiMzOTtzIERpZyBEZWVwZXIqKgoKUmlnaHQsIHNvIEtWTSBpcyBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkIHdoZW4gYENPTkZJR19LVk1gIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBCdXQgSSYjMzk7bSBjdXJpb3VzLCBhcmUgdGhlcmUgKmFueSogb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIG51YW5jZXMgc3BlY2lmaWMgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlPyBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLiBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZSB0aGlzIGlzIGFsbCB0aGVyZSBpcy4gVGltZSB0byBjaGVjayB0aGUgc291cmNlLiBMZXQgbWUgZ2V0IHJpZ2h0IHRvIGBLY29uZmlnYCBpbiB0aGUgYGFyY2gvczM5MC9rdm0vYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgYW55dGhpbmcgdW5pcXVlIG9yIHMzOTAtc3BlY2lmaWMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBhcm91bmQgZmVhdHVyZXMgYW5kIGRlcGVuZGVuY2llcyBzcGVjaWZpYyB0byB0aGlzIHBsYXRmb3JtLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXHRkZWZfdHJpc3RhdGUgeVxuLS1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTc4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIEtWTSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyB0aGUgcHJvbXB0IGlzIHBvaW50aW5nIG1lIHRvd2FyZHMgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgbW9kaWZpZWQgY29kZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGBLVk1gIOKAkyB0aGF0JiMzOTtzIHRoZSBiaWcgb25lLCB0aGUgbWFpbiBjb25maWd1cmF0aW9uLiBCdXQgdGhlbiBJJiMzOTttIHN0cnVjayBieSB0aGF0IGNhdmVhdDogJiMzNDtEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzLiYjMzQ7IEkgaW1tZWRpYXRlbHkgc3RhcnQgcXVlc3Rpb25pbmcgaWYgYEtWTWAgZmFsbHMgaW50byB0aGF0ICYjMzQ7Z2VuZXJpYyYjMzQ7IGNhdGVnb3J5LiBBZnRlciBhbGwsIGl0ICppcyogc3BlY2lmaWMgdG8gS1ZNLCBidXQgaXMgdGhhdCBzcGVjaWZpYyAqZW5vdWdoKj8KClRoZSBwcm9tcHQmIzM5O3Mgd29yZGluZyBrZWVwcyBlY2hvaW5nIGluIG15IG1pbmQuIElmIGBLVk1gIGlzLCBpbiBmYWN0LCBhbHJlYWR5IGVuYWJsZWQsIGFtIEkganVzdCBhZGRpbmcgbm9pc2UgYnkgaW5jbHVkaW5nIGl0PyBJdCYjMzk7cyBhIHJpc2suIE9uIHRoZSBvbmUgaGFuZCwgaXQmIzM5O3Mgc2FmZXIgdG8gbGlzdCBpdCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyLiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgbWFrZXMgbWUgZmVlbCBsYXp5LgoKVGhlbiwgYSBuZXcgcXVlc3Rpb24gZW1lcmdlczogSXMgdGhlcmUgYSBtb3JlICpzcGVjaWZpYyogY29uZmlndXJhdGlvbiBmb3IgbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBwYXJ0aWN1bGFybHkgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlPyBJIG5lZWQgdG8ga25vdy4gVGltZSB0byBkaXZlIGludG8gYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBLVk0gY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRzb3VyY2UgXCYjMzQ7dmlydC9rdm0vS2NvbmZpZ1wmIzM0O1xuICAgNjpcdFxuICAgNzpcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cbiAgIDg6XHRcdGRlZl9ib29sIHlcbiAgIDk6XHRcdHByb21wdCBcJiMzNDtLVk1cJiMzNDtcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW4gb3RoZXJcbiAgMTI6XHRcdCAgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXG4gIDEzOlx0XHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmQgZGlzYWJsZWQuXG4gIDE2Olx0XG4gIDE3Olx0aWYgVklSVFVBTElaQVRJT05cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgS1ZNXG4gIDIwOlx0XHRkZWZfdHJpc3RhdGUgeVxuICAyMTpcdFx0cHJvbXB0IFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcbiAgMjM6XHRcdHNlbGVjdCBLVk1fQVNZTkNfUEZcbiAgMjQ6XHRcdHNlbGVjdCBLVk1fQVNZTkNfUEZfU1lOQ1xuICAyNTpcdFx0c2VsZWN0IEtWTV9DT01NT05cbiAgMjY6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXG4gIDI3Olx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcbiAgMjg6XHRcdHNlbGVjdCBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcbiAgMjk6XHRcdHNlbGVjdCBIQVZFX0tWTV9OT19QT0xMXG4gIDMwOlx0XHRzZWxlY3QgS1ZNX1ZGSU9cbiAgMzE6XHRcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuICAzMjpcdFx0c2VsZWN0IEtWTV9NTVVfTE9DS0xFU1NfQUdJTkdcbiAgMzM6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXG4gIDM0Olx0XHRoZWxwXG4gIDM1Olx0XHQgIFN1cHBvcnQgaG9zdGluZyBwYXJhdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmcgdGhlIFNJRVxuICAzNjpcdFx0ICB2aXJ0dWFsaXphdGlvbiBjYXBhYmlsaXR5IG9uIHRoZSBtYWluZnJhbWUuIFRoaXMgc2hvdWxkIHdvcmtcbiAgMzc6XHRcdCAgb24gYW55IDY0Yml0IG1hY2hpbmUuXG4gIDM4Olx0XG4gIDM5Olx0XHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzIHRocm91Z2hcbiAgNDA6XHRcdCAgYSBjaGFyYWN0ZXIgZGV2aWNlIG5vZGUgbmFtZWQgL2Rldi9rdm0uXG4gIDQxOlx0XG4gIDQyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuICA0MzpcdFx0ICB3aWxsIGJlIGNhbGxlZCBrdm0uXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXG4gIDQ4Olx0XHRib29sIFwmIzM0O1VzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcJiMzNDtcbiAgNDk6XHRcdGRlcGVuZHMgb24gS1ZNXG4gIDUwOlx0XHRoZWxwXG4gIDUxOlx0XHQgIEFsbG93IENBUF9TWVNfQURNSU4gdXNlcnMgdG8gY3JlYXRlIEtWTSB2aXJ0dWFsIG1hY2hpbmVzIHRoYXQgYXJlXG4gIDUyOlx0XHQgIGNvbnRyb2xsZWQgYnkgdXNlcnNwYWNlLlxuICA1MzpcdFxuICA1NDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA1NTpcdFxuICA1NjpcdGVuZGlmICMgVklSVFVBTElaQVRJT05cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE2NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDYyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGlzIHMzOTAgS1ZNIFBhdGNoKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSBvbiBzMzkwOyBpdCYjMzk7cyBqdXN0IHBhcnQgb2YgdGhlIHN0YW5kYXJkIEtWTSBzZXR1cC4gVGhlcmVmb3JlLCAmIzM0O0tWTSYjMzQ7IGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZyBoZXJlLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyBhIGJ1ZyBmaXggaW4gYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAuIFRoaXMgZnVuY3Rpb24gY29tZXMgaW50byBwbGF5IHdoZW4gd2UmIzM5O3JlIGNyZWF0aW5nIGEgc2hhZG93IGdtYXAgZm9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gVGhlIGlzc3VlIGlzIGEgc2ltcGxlIHR5cG86IHRoZSBjb2RlIHdhcyBpbmNvcnJlY3RseSB1c2luZyBgYXNjZS5kdCAmIzQzOyAxYCBpbnN0ZWFkIG9mIGBhc2NlLnRsICYjNDM7IDFgLiBgYXNjZS5kdGAgcmVmZXJzIHRvIHRoZSBkYXRhIHRhYmxlIHR5cGUsIHdoaWxlIGBhc2NlLnRsYCBjb3JyZWN0bHkgZGVub3RlcyB0aGUgdGFibGUgbGVuZ3RoLiBJdCYjMzk7cyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyB0aGUgZnVuZGFtZW50YWwgYmVoYXZpb3Igb2YgaG93IGd1ZXN0IG1lbW9yeSBpcyBoYW5kbGVkLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHNvbWUgZm9jdXMgc3ltYm9scy4gYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAgaXMgZGVmaW5pdGVseSBvbmUuIFRoZW4gd2UgaGF2ZSBgZ21hcF9jcmVhdGVfc2hhZG93YCwgYGFjcXVpcmVfZ21hcF9zaGFkb3dgLCBgdnNpZV9ydW5gLCBhbmQgYGt2bV9zMzkwX2hhbmRsZV92c2llYC4KCkFyZSB0aGVzZSBob3QtcGF0aCBmdW5jdGlvbnM/IGBrdm1fczM5MF9oYW5kbGVfdnNpZWAgaXMgY3J1Y2lhbDsgaXQmIzM5O3MgaW52b2tlZCB3aGVuIHRoZSBndWVzdCBleGVjdXRlcyB0aGUgU0lFIGluc3RydWN0aW9uLCBhY3RpbmcgYXMgdGhlIGVudHJ5IHBvaW50IGZvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIGB2c2llX3J1bmAgYWN0dWFsbHkgcnVucyB0aGUgbmVzdGVkIGd1ZXN0LiBgYWNxdWlyZV9nbWFwX3NoYWRvd2AgZmluZHMgb3IgY3JlYXRlcyBhIHNoYWRvdyBnbWFwLCBhbmQgYGdtYXBfY3JlYXRlX3NoYWRvd2AgZG9lcyB0aGUgY3JlYXRpb24uIGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgIHByb3RlY3RzIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIEFTQ0UuIFRoZXNlIGFyZW4mIzM5O3QgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgbGlrZSBzY2hlZHVsaW5nIG9yIG1lbW9yeSBhbGxvY2F0aW9uLiBUaGV5JiMzOTtyZSBzcGVjaWZpY2FsbHkgdGllZCB0byBzMzkwIEtWTSBuZXN0ZWQgdmlydHVhbGl6YXRpb24sIHNvIHRoZXkmIzM5O3JlIGV4Y2VsbGVudCBmb2N1cyBzeW1ib2xzLgoKTGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBpdHNlbGY6CgpgYGBjCi0JcmMgPSBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc2ctJmd0O2t2bSwgY29udGV4dC5mLCBhc2NlLnJzdG8sIGFzY2UuZHQgJiM0MzsgMSwgZmFsc2UpOwomIzQzOwlyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy0mZ3Q7a3ZtLCBjb250ZXh0LmYsIGFzY2UucnN0bywgYXNjZS50bCAmIzQzOyAxLCBmYWxzZSk7CmBgYAoKWWVwLCBpdCYjMzk7cyB0aGF0IGRpcmVjdCBmdW5jdGlvbmFsIGNvcnJlY3Rpb24uCgpUaGlzIGlzIGEgZGVmaW5pdGVseSBhIGBXb3J0aEZ1enppbmc6IHRydWVgIHNpdHVhdGlvbi4gVGhlIHJlbGV2YW50IGBFbmFibGVDb25maWdzYCBpcyBqdXN0ICYjMzQ7S1ZNLiYjMzQ7IEFuZCBteSBmb2N1c2VkIHN5bWJvbHMgYXJlIGBbJiMzNDtnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwmIzM0OywgJiMzNDtnbWFwX2NyZWF0ZV9zaGFkb3cmIzM0OywgJiMzNDthY3F1aXJlX2dtYXBfc2hhZG93JiMzNDssICYjMzQ7dnNpZV9ydW4mIzM0OywgJiMzNDtrdm1fczM5MF9oYW5kbGVfdnNpZSYjMzQ7XWAuCgpNeSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBjb3JyZWN0cyBhbiBpc3N1ZSB3aXRoaW4gczM5MCBLVk0mIzM5O3MgbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSwgc3BlY2lmaWNhbGx5IGEgbWlzdGFrZSBpbiB0aGUgQVNDRSBmaWVsZCB1c2VkIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRvIHJldHJpZXZlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBhZGp1c3RtZW50IHdpdGhpbiByZWFjaGFibGUgS1ZNIGNvZGUuCk9oLCBhcyBhbiBhc2lkZSwgd2hpbGUgYGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlc2AgaXMgY2VydGFpbmx5IHJlbGV2YW50LCBpdOKAmXMgYWxzbyBhIG1vcmUgZ2VuZXJpYyBLVk0gZnVuY3Rpb24gYW5kIGNvdWxkIGJlIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9mYXVsdGluLmg9NTM9c3RhdGljIGlubGluZSBib29sIGt2bV9zMzkwX211bHRpcGxlX2ZhdWx0c19uZWVkX3JldHJ5KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBzZXEsXG4tLVxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmgtNjktXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uaDo3MDpzdGF0aWMgaW5saW5lIGludCBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgZ3Vlc3RfZmF1bHQgKmd1ZXN0X2ZhdWx0cyxcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5oLTcxLVx0XHRcdFx0XHQgICBnZm5fdCBzdGFydCwgaW50IG5fcGFnZXMsIGJvb2wgd3JpdGVfYXR0ZW1wdClcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAuYz0xMjc4PXN0YXRpYyBpbnQgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqc2cpXG4tLVxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTI4OS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyOTA6XHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cdTAwM2Vrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLnRsICYjNDM7IDEsIGZhbHNlKTtcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyOTEtXHRpZiAocmMgXHUwMDNlIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODgyCgkJCQkJCQlvdXRwdXQ6IDEzNAoJCQkJCQkJdGhvdWdodHM6IDQzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBGb2N1cyBTeW1ib2xzIGFuZCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGNvZGUgYW5kIGZpZ3VyaW5nIG91dCB0aGUgcmVsZXZhbnQgc3ltYm9scyBhbmQgY29uZmlndXJhdGlvbnMuIEkgc2VlIGBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXNgIGlzIGFuIGlubGluZSBmdW5jdGlvbiBpbiBgZmF1bHRpbi5oYCwgc28gdGhhdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgYSBnb29kIGZvY3VzIHBvaW50IGZvciBhbmFseXNpcy4gSXQmIzM5O3MgdG9vIHNwZWNpZmljIGFuZCBlbWJlZGRlZC4KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBhbHRlcm5hdGl2ZXMuIEkmIzM5O3ZlIGZvdW5kIGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgLCB3aGljaCBpcyBzdGF0aWMsIGFuZCB0aGVuIGBnbWFwX2NyZWF0ZV9zaGFkb3dgLCB3aGljaCBzZWVtcyBleHBvcnRlZC4gYGFjcXVpcmVfZ21hcF9zaGFkb3dgIGFuZCBgdnNpZV9ydW5gIGFyZSBzdGF0aWMuIFRoZW4gdGhlcmUmIzM5O3MgYGt2bV9zMzkwX2hhbmRsZV92c2llYCwgd2hpY2ggaXMgbm9uLXN0YXRpYy4gVGhvc2UgbGFzdCBmaXZlIHNlZW0gbGlrZSBiZXR0ZXIgY2hvaWNlcywgc28gSSYjMzk7bGwgZm9jdXMgb24gdGhlc2U6IGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgLCBgZ21hcF9jcmVhdGVfc2hhZG93YCwgYGFjcXVpcmVfZ21hcF9zaGFkb3dgLCBgdnNpZV9ydW5gLCBhbmQgYGt2bV9zMzkwX2hhbmRsZV92c2llYC4KCk5vdywgcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCB0aGUgcHJvbXB0IGFkdmlzZXMgbWUgdG8gYmUgc3BlY2lmaWMuIEl0IHNheXMgdG8gYXZvaWQgZ2VuZXJpYyBjb25maWdzLCBhbmQgdGhhdCB3ZSBoYXZlIHRoZW0gYWxyZWFkeSBlbmFibGVkLiBUaGUgbm90ZSBoZXJlIHNheXMgdGhhdCBgS1ZNYCBpcyBhbHJlYWR5IGVuYWJsZWQuIFRoZSBwcm9tcHQgYWxzbyBzdGF0ZXM6ICYjMzQ7RG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0IHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4mIzM0OyBgS1ZNYCBzZWVtcyB0byBjb3ZlciB0aGUgY29kZSBidXQgaXMgaXQgZ2VuZXJpYz8gSSYjMzk7bSBnb2luZyB0byBpbmNsdWRlIGBLVk1gIHNpbmNlIGl0IGlzIHNwZWNpZmljIHRvIHRoZSBzdWJzeXN0ZW0gSSYjMzk7bSB3b3JraW5nIGluLgoKSSYjMzk7bSBjaGVja2luZyBmb3Igb3RoZXIgY29uZmlncyB0b28uIGBDT05GSUdfS1ZNX1MzOTBfVUNPTlRST0xgIGV4aXN0cywgYnV0IHRoYXQmIzM5O3MgZm9yIHVzZXItY29udHJvbGxlZCBWTXMsIHdoaWNoIG1pZ2h0IG5vdCBiZSByZWxldmFudCBoZXJlLgpBbHJpZ2h0LCBJIHRoaW5rIEkgaGF2ZSBldmVyeXRoaW5nLiBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGUgcmVzdWx0cyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwmIzM0OywKICAgICYjMzQ7Z21hcF9jcmVhdGVfc2hhZG93JiMzNDssCiAgICAmIzM0O2FjcXVpcmVfZ21hcF9zaGFkb3cmIzM0OywKICAgICYjMzQ7dnNpZV9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfaGFuZGxlX3ZzaWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gczM5MCBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSB3aGVyZSB0aGUgd3JvbmcgQVNDRSBmaWVsZCB3YXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBwYWdlcyB0byBnZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgS1ZNIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbCYjMzQ7LAogICAgJiMzNDtnbWFwX2NyZWF0ZV9zaGFkb3cmIzM0OywKICAgICYjMzQ7YWNxdWlyZV9nbWFwX3NoYWRvdyYjMzQ7LAogICAgJiMzNDt2c2llX3J1biYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfdnNpZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBzMzkwIEtWTSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gKHZTSUUpIHdoZXJlIHRoZSB3cm9uZyBBU0NFIGZpZWxkIHdhcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGdldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBLVk0gY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEyOjI5LjU4OTEyNDY5N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMDk5MzI2NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbFwiLFxuICAgIFwiZ21hcF9jcmVhdGVfc2hhZG93XCIsXG4gICAgXCJhY3F1aXJlX2dtYXBfc2hhZG93XCIsXG4gICAgXCJ2c2llX3J1blwiLFxuICAgIFwia3ZtX3MzOTBfaGFuZGxlX3ZzaWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBzMzkwIEtWTSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gKHZTSUUpIHdoZXJlIHRoZSB3cm9uZyBBU0NFIGZpZWxkIHdhcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGdldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBLVk0gY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6MjkuNTg5MTMxMzc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDM3NzQ2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2MjAzYjZhYzdkZmZlODVhZTA4OTY2ODBlNDNmN2E5ODY5ZGY5ZWE4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVuIDIzIDE3OjEyOjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vZ21hcC5jIGIvYXJjaC9zMzkwL2t2bS9nbWFwLmNcXG5pbmRleCA3NzgyOWY3ODdkYzc4MS4uZTFlNzM0Y2JjMGNjZGEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9nbWFwLmNcXG4rKysgYi9hcmNoL3MzOTAva3ZtL2dtYXAuY1xcbkBAIC0xMjg3LDcgKzEyODcsNyBAQCBzdGF0aWMgaW50IGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYVxcbiBcXHQvKiBQYWlycyB3aXRoIHRoZSBzbXBfd21iKCkgaW4ga3ZtX21tdV9pbnZhbGlkYXRlX2VuZCgpLiAqL1xcbiBcXHRzbXBfcm1iKCk7XFxuIFxcbi1cXHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cXHUwMDNla3ZtLCBjb250ZXh0LmYsIGFzY2UucnN0bywgYXNjZS5kdCArIDEsIGZhbHNlKTtcXG4rXFx0cmMgPSBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc2ctXFx1MDAzZWt2bSwgY29udGV4dC5mLCBhc2NlLnJzdG8sIGFzY2UudGwgKyAxLCBmYWxzZSk7XFxuIFxcdGlmIChyYyBcXHUwMDNlIDApXFxuIFxcdFxcdHJjID0gLUVGQVVMVDtcXG4gXFx0aWYgKCFyYylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6MzAuMDkzNzAxOTczWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTU5NDczNzc3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxcIixcbiAgICBcImdtYXBfY3JlYXRlX3NoYWRvd1wiLFxuICAgIFwiYWNxdWlyZV9nbWFwX3NoYWRvd1wiLFxuICAgIFwidnNpZV9ydW5cIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV92c2llXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gczM5MCBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSB3aGVyZSB0aGUgd3JvbmcgQVNDRSBmaWVsZCB3YXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBwYWdlcyB0byBnZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgS1ZNIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjIwM2I2YWM3ZGZmZTg1YWUwODk2NjgwZTQzZjdhOTg2OWRmOWVhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDE3OjEyOjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9nbWFwLmMgYi9hcmNoL3MzOTAva3ZtL2dtYXAuY1xuaW5kZXggNzc4MjlmNzg3ZGM3ODEuLmUxZTczNGNiYzBjY2RhIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9nbWFwLmNcbisrKyBiL2FyY2gvczM5MC9rdm0vZ21hcC5jXG5AQCAtMTI4Nyw3ICsxMjg3LDcgQEAgc3RhdGljIGludCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBnbWFcbiBcdC8qIFBhaXJzIHdpdGggdGhlIHNtcF93bWIoKSBpbiBrdm1fbW11X2ludmFsaWRhdGVfZW5kKCkuICovXG4gXHRzbXBfcm1iKCk7XG4gXG4tXHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cdTAwM2Vrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLmR0ICsgMSwgZmFsc2UpO1xuK1x0cmMgPSBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc2ctXHUwMDNla3ZtLCBjb250ZXh0LmYsIGFzY2UucnN0bywgYXNjZS50bCArIDEsIGZhbHNlKTtcbiBcdGlmIChyYyBcdTAwM2UgMClcbiBcdFx0cmMgPSAtRUZBVUxUO1xuIFx0aWYgKCFyYylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEyOjMwLjA5MzcwMzg0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDYxMjA3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIFBhdGNoIGZvciBzMzkwKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGFyY2gvczM5MC9rdm0vZ21hcC5jYC4gVGhlIGNoYW5nZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCdzIHJlcGxhY2luZyBgYXNjZS5kdCArIDFgIHdpdGggYGFzY2UudGwgKyAxYCBpbiBgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gS1ZNIGZvciBzMzkwLCBubyBxdWVzdGlvbiBhYm91dCBpdC5cblxuTm93LCB0aGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBmdXp6ZWFibGUgaW4gb3VyIGVudmlyb25tZW50LiBXZSB1c3VhbGx5IGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB4ODZfNjQgb3IgYXJtNjQsIGJ1dCBpZiB3ZSdyZSBydW5uaW5nIHMzOTB4LCB0aGVuIHRoaXMgY291bGQgb3BlbiB1cCBhIG5ldyBhdmVudWUuXG5cbkxldCdzIHBhdXNlLCB0aGUgcHJvbXB0IG1lbnRpb25zIHNvbWV0aGluZyBhYm91dCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gR2l2ZW4gdGhpcyBpcyBLVk0sIHRoaXMgZG9lcyBnaXZlIG1lIHBhdXNlLCBpdCBtYWtlcyBtZSB0aGluay4gQXJlIHRoZXJlIGNvbmZpZ3VyYXRpb25zIHdlIGFyZSBtaXNzaW5nP1xuXG5CdXQgd2FpdC4gSWYgd2UncmUgcnVubmluZyBzeXprYWxsZXIgb24gczM5MHgsIHRoZW4gdGhpcyBzMzkwIEtWTSBjb2RlIGlzICpkZWZpbml0ZWx5KiByZWFjaGFibGUuIFRoYXQncyB0aGUga2V5LiBTbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBhcmNoL3MzOTAva3ZtL2dtYXAuY2AgZmlsZSBhbmQgc2VlIHdoYXQgS1ZNLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcHBseSB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUuIFdlIG5lZWQgdG8gZmluZCB3aGF0IGFsbG93cyB0aGlzIHBhdGggdG8gYmUgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyOCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEyOjM2LjE5OTgyNjgxOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI5OTk1NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vZ21hcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vZ21hcC5jPTEyMDU9c3RhdGljIHN0cnVjdCBnbWFwICpnbWFwX2ZpbmRfc2hhZG93KHN0cnVjdCBnbWFwICpwYXJlbnQsIHVuaW9uIGFzY2UgYXNjZSwgaW50IGVkYXRfbGV2ZWwpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjE4LSNkZWZpbmUgQ1JTVF9UQUJMRV9QQUdFUyAoX0NSU1RfVEFCTEVfU0laRSAvIFBBR0VfU0laRSlcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjE5OnN0cnVjdCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwge1xcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyMjAtXFx0dW5zaWduZWQgbG9uZyBzZXE7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjIzLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyMjQ6c3RhdGljIGlubGluZSBpbnQgX19nbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBnbWFwICpzZyxcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjI1OlxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwgKmNvbnRleHQpXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTIyNi17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjU2LVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyNTc6c3RhdGljIGlubGluZSBpbnQgX2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnNnLFxcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyNTg6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwgKmNvbnRleHQpXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTI1OS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjcwLVxcdFxcdFxcdHJldHVybiByYztcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjcxOlxcdFxcdHJjID0gX19nbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwobWMsIHNnLCBjb250ZXh0KTtcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjcyLVxcdFxcdHJhZGl4X3RyZWVfcHJlbG9hZF9lbmQoKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyNzctXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTI3ODpzdGF0aWMgaW50IGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnNnKVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyNzkte1xcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyODA6XFx0c3RydWN0IGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbCBjb250ZXh0ID0ge307XFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTI4MS1cXHR1bmlvbiBhc2NlIGFzY2UgPSBzZy1cXHUwMDNlZ3Vlc3RfYXNjZTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyOTMtXFx0aWYgKCFyYylcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjk0OlxcdFxcdHJjID0gX2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChtYywgc2csIFxcdTAwMjZjb250ZXh0KTtcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjk1LVxcdGlmIChyYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jPTEzMTg9c3RydWN0IGdtYXAgKmdtYXBfY3JlYXRlX3NoYWRvdyhzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnBhcmVudCxcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzNjgtXFx0LyogUHJvdGVjdCB3aGlsZSBpbnNlcnRpbmcsIHByb3RlY3RzIGFnYWluc3QgaW52YWxpZGF0aW9uIHJhY2VzLiAqL1xcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEzNjk6XFx0cmMgPSBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwobWMsIG5ldyk7XFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTM3MC1cXHRpZiAocmMpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6MzYuNDUyODMyOTUzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwMTcxMjE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgQ2FsbCBTdGFjayBhbmQgUG90ZW50aWFsIE9wdGltaXphdGlvbioqXG5cbkFscmlnaHQsIHNvIGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBnbWFwX2NyZWF0ZV9zaGFkb3dgLiBUaGF0J3MgYSBrZXkgcG9pbnQgdG8gbm90ZSDigJMgaXQgZ2l2ZXMgbWUgYSBjbGVhciBpZGVhIG9mIHRoZSBjYWxsIGZsb3cuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB3aGV0aGVyIHRoZXJlJ3MgYW55dGhpbmcgcGxhdGZvcm0tc3BlY2lmaWMgaW52b2x2ZWQuIEdpdmVuIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIHRoZSBicm9hZGVyIG1lbW9yeSBtYW5hZ2VtZW50IG9yIHZpcnR1YWwgbWVtb3J5IHNldHVwLCBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgb3Igd29ya2Fyb3VuZHMgZm9yIHMzOTAgS1ZNLCBzcGVjaWZpY2FsbHkuIEFyZSB0aGVyZSBhbnkga25vd24gcXVpcmtzLCBhcmNoaXRlY3R1cmFsIG51YW5jZXMsIG9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGluIHRoZSBzMzkwIEtWTSBlbnZpcm9ubWVudCB0aGF0IG1pZ2h0IGJlIGltcGFjdGluZyB0aGlzIGNvZGUgcGF0aD8gUGVyaGFwcyB0aGVyZSdzIGEgZGlmZmVyZW50IHdheSB3ZSBjYW4gaGFuZGxlIHRoZSBBU0NFIChBZGRyZXNzIFNwYWNlIENvbnRyb2wgRW50cnkpIHByb3RlY3Rpb24gZm9yIHRoaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljYWxseS4gVGltZSB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgcGF0aHMgYXNzb2NpYXRlZCB3aXRoIHMzOTAgS1ZNIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHRhcmdldHMgZm9yIHJldmlldyBvciBlbmhhbmNlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYyMSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEyOjM5LjY1NDU0NzMxNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk5NTA1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlPTEyPWt2bS15ICs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEzLVxcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGU6MTQ6a3ZtLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSArPSBwY2kub1xcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6MzkuNzEyNTQ5NTM0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM4MTIyMjYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHMzOTAgS1ZNIEZ1enppbmcgUG9zc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGUgY29yZSBjb25maWcgdG8gY29uc2lkZXIgaXMgZGVmaW5pdGVseSBgQ09ORklHX0tWTWAuIEJ1dCBoZXJlJ3MgdGhlIHF1ZXN0aW9uOiBpcyBzMzkwIEtWTSBldmVuICphY2Nlc3NpYmxlKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVT8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoYXQsIGJlY2F1c2UgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocy4gRm9ydHVuYXRlbHksIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgc3VwcG9ydHMgczM5MHggYW5kIGlzIGtub3duIHRvIGZ1enogS1ZNIG9uIHRoYXQgdmVyeSBhcmNoaXRlY3R1cmUuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cbkJ1dCBob2xkIG9uLCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi5cIiBpbmNsdWRpbmcgdGhvc2UgZW11bGF0ZWQgYnkgc29mdHdhcmUgbGlrZSBVU0IgZ2FkZ2V0cywgbWFjODAyMTFfaHdzaW0uIE9rYXksIHNvIGlzIHMzOTAgS1ZNIHJlYWNoYWJsZSBpbiB4ODZfNjQgR0NFPyBEZWZpbml0ZWx5IG5vdC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGlzIG5vdCB0aGUgY2FzZS5cblxuSG93ZXZlciwgc2luY2UgSSBrbm93IHN5emthbGxlciBydW5zIG9uIHMzOTB4IFFFTVUsIHRoYXQgb3BlbnMgdXAgcG9zc2liaWxpdGllcy4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGJlY29tZXMsIGlzIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGU/IElmIHNvLCB0aGVuIGl0IHdhcnJhbnRzIGRlZXBlciBpbnZlc3RpZ2F0aW9uIGFuZCBmdXp6aW5nLCB3aGljaCBtZWFucyB5ZXMsIHdlIHNob3VsZCBkZWZpbml0ZWx5IGV4cGxvcmUgdGhpcy4gU3l6a2FsbGVyJ3MgbXVsdGktYXJjaGl0ZWN0dXJlIHN1cHBvcnQgaXMgYSBzaWduaWZpY2FudCBmYWN0b3IgaGVyZS4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgZm9yIG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3MsIHRob3VnaCwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuUmlnaHQsIGBDT05GSUdfS1ZNYCBpcyB0aGUgcHJpbWFyeSBvbmUsIG9mIGNvdXJzZS4gVG8gemVybyBpbiBvbiB0aGUgY3JpdGljYWwgY29kZSBhcmVhcywgSSBuZWVkIHRvIGxvb2sgYXQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBjb25maWcuIExldCdzIHN0YXJ0IHdpdGggYGdtYXBfY3JlYXRlX3NoYWRvd2AgdG8gcGlucG9pbnQgd2hpY2ggc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSByZWxldmFudCBoZXJlLiBUaGF0IHNob3VsZCBndWlkZSBteSBuZXh0IHN0ZXBzIGluIGFzc2Vzc2luZyBpdHMgZnV6emluZyBwb3RlbnRpYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNDQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6NDUuMDkzNzc0ODFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA1NjE0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ21hcF9jcmVhdGVfc2hhZG93XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vZ21hcC5jPTEyNzg9c3RhdGljIGludCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBnbWFwICpzZylcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMDAtLyoqXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTMwMTogKiBnbWFwX2NyZWF0ZV9zaGFkb3coKSAtIENyZWF0ZS9maW5kIGEgc2hhZG93IGd1ZXN0IGFkZHJlc3Mgc3BhY2UuXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTMwMi0gKiBAbWM6IFRoZSBjYWNoZSB0byB1c2UgdG8gYWxsb2NhdGUgZGF0IHRhYmxlcy5cXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMTctICovXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTMxODpzdHJ1Y3QgZ21hcCAqZ21hcF9jcmVhdGVfc2hhZG93KHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqcGFyZW50LFxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMTktXFx0XFx0XFx0XFx0dW5pb24gYXNjZSBhc2NlLCBpbnQgZWRhdF9sZXZlbClcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5oPTEwOD12b2lkIF9nbWFwX2hhbmRsZV92c2llX3Vuc2hhZG93X2V2ZW50KHN0cnVjdCBnbWFwICpwYXJlbnQsIGdmbl90IGdmbik7XFxuYXJjaC9zMzkwL2t2bS9nbWFwLmg6MTA5OnN0cnVjdCBnbWFwICpnbWFwX2NyZWF0ZV9zaGFkb3coc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBnbWFwICpnbWFwLFxcbmFyY2gvczM5MC9rdm0vZ21hcC5oLTExMC1cXHRcXHRcXHRcXHR1bmlvbiBhc2NlIGFzY2UsIGludCBlZGF0X2xldmVsKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jPTEzMDA9c3RhdGljIHN0cnVjdCBnbWFwICphY3F1aXJlX2dtYXBfc2hhZG93KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTMyOS1hZ2FpbjpcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxMzMwOlxcdGdtYXAgPSBnbWFwX2NyZWF0ZV9zaGFkb3codmNwdS1cXHUwMDNlYXJjaC5tYywgdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmdtYXAsIGFzY2UsIGVkYXQpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTEzMzEtXFx0aWYgKElTX0VSUihnbWFwKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6NDUuMTU0MzQzNDg4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyNTM0OTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIFN0YWNrOiBgYWNxdWlyZV9nbWFwX3NoYWRvd2AqKlxuXG5SaWdodCwgYGFjcXVpcmVfZ21hcF9zaGFkb3dgIGlzIGZsYWdnZWQgYXMgY29taW5nIGZyb20gYHZzaWUuY2AuIFRoYXQgaW1tZWRpYXRlbHkgc3BhcmtzIG15IGludGVyZXN0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIGNvbnRleHQuIE15IG5leHQgc3RlcCwgbmF0dXJhbGx5LCBpcyB0byB0cmFjZSB0aG9zZSBjYWxscy4gSSB3YW50IHRvIHNlZSAqZXhhY3RseSogd2hlcmUgYW5kIGhvdyBgYWNxdWlyZV9nbWFwX3NoYWRvd2AgaXMgaW52b2tlZC4gV2hhdCBhcmUgdGhlIGNhbGxpbmcgYXJndW1lbnRzPyBXaGF0IGlzIHRoZSBleGVjdXRpb24gZmxvdyBpbW1lZGlhdGVseSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBmdW5jdGlvbiBjYWxsPyBUaGF0IGluZm9ybWF0aW9uIHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gZGV0ZXJtaW5lIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIHN5c3RlbSBiZWhhdmlvci4gSXQncyB0aW1lIHRvIGRpdmUgaW50byB0aGUgY2FsbCBncmFwaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIzNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEyOjQ4LjE3OTY5NjY5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5MDM2MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWNxdWlyZV9nbWFwX3NoYWRvd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL3ZzaWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3ZzaWUuYz0xMjg0PXN0YXRpYyB2b2lkIHJlbGVhc2VfZ21hcF9zaGFkb3coc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTI5OS1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxMzAwOnN0YXRpYyBzdHJ1Y3QgZ21hcCAqYWNxdWlyZV9nbWFwX3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSlcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMzAxLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jPTEzOTY9c3RhdGljIGludCB2c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE0MDItXFx0d2hpbGUgKDEpIHtcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxNDAzOlxcdFxcdHNnID0gYWNxdWlyZV9nbWFwX3NoYWRvdyh2Y3B1LCB2c2llX3BhZ2UpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE0MDQtXFx0XFx0aWYgKElTX0VSUihzZykpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6NDguMjM3NjA3Njg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0ODU1NDY3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjo1MTEzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzoxMjo1Ny43MjMxNTgxNjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MzkyMTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZzaWVfcnVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vdnNpZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vdnNpZS5jPTExMDc9c3RhdGljIGludCB2c2llX2hhbmRsZV9tdnBnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlLCBzdHJ1Y3QgZ21hcCAqc2cpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMTg2LSAqL1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjExODc6c3RhdGljIGludCBkb192c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSwgc3RydWN0IGdtYXAgKnNnKVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTExODgtXFx0X19yZWxlYXNlcyh2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZXNyY3UpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0xMzgyPXN0YXRpYyB2b2lkIHVucmVnaXN0ZXJfc2hhZG93X3NjYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMzk1LSAqL1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjEzOTY6c3RhdGljIGludCB2c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSlcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMzk3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE0MTEtXFx0XFx0XFx0dXBkYXRlX2ludGVydmVudGlvbl9yZXF1ZXN0cyh2c2llX3BhZ2UpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjE0MTI6XFx0XFx0XFx0cmMgPSBkb192c2llX3J1bih2Y3B1LCB2c2llX3BhZ2UsIHNnKTtcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNDEzLVxcdFxcdH1cXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jPTE1NTY9aW50IGt2bV9zMzkwX2hhbmRsZV92c2llKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE1OTgtXFx0cmVnaXN0ZXJfc2hhZG93X3NjYih2Y3B1LCB2c2llX3BhZ2UpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjE1OTk6XFx0cmMgPSB2c2llX3J1bih2Y3B1LCB2c2llX3BhZ2UpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE2MDAtXFx0dW5yZWdpc3Rlcl9zaGFkb3dfc2NiKHZjcHUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzoxMjo1Ny43ODE1NTU4OTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE5Mjc4NTIzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjU3MjcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEzOjA1Ljk3NDM0Mzk3OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMzNzE4OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfaGFuZGxlX3ZzaWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTQ0Mj1pbnQga3ZtX3MzOTBfc2tleV9jaGVja19lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC00NDQtLyogaW1wbGVtZW50ZWQgaW4gdnNpZS5jICovXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjQ0NTppbnQga3ZtX3MzOTBfaGFuZGxlX3ZzaWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtNDQ2LXZvaWQga3ZtX3MzOTBfdnNpZV9raWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz05NTY9aW50IGt2bV9zMzkwX2hhbmRsZV9iMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy05NjktXFx0Y2FzZSAweDE0OlxcbmFyY2gvczM5MC9rdm0vcHJpdi5jOjk3MDpcXHRcXHRyZXR1cm4ga3ZtX3MzOTBfaGFuZGxlX3ZzaWUodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtOTcxLVxcdGNhc2UgMHgyMTpcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jPTE0ODM9c3RhdGljIHN0cnVjdCB2c2llX3BhZ2UgKmdldF92c2llX3BhZ2Uoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNTU1LVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjE1NTY6aW50IGt2bV9zMzkwX2hhbmRsZV92c2llKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNTU3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTM6MDYuMDM3NzIxMzU3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3OTg0NDE0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB2U0lFIEhhbmRsaW5nIGluIEtWTS9zMzkwKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoIGhlcmUgZm9yIHZTSUUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBJIHNlZSB0aGF0IGBrdm1fczM5MF9oYW5kbGVfdnNpZWAgaXMgdGhlIGVudHJ5IHBvaW50LCBjYWxsZWQgYnkgYGt2bV9zMzkwX2hhbmRsZV9iMmAgd2hpY2gsIGluIHR1cm4sIGRlYWxzIHdpdGggdGhlIFNJRSBpbnN0cnVjdGlvbiAoMHhiMjE0KS4gVGhpcyBpcyB0aGUgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGJpdCwgdGhlIHZTSUUgY29tcG9uZW50LlxuXG5Ob3csIG15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgc3ltYm9scyBpbiB0aGlzIGZsb3cuIGBrdm1fczM5MF9oYW5kbGVfdnNpZWAga2lja3MgdGhpbmdzIG9mZiwgaXQgbGVhZHMgdG8gYHZzaWVfcnVuYCwgdGhlbiB0byBgYWNxdWlyZV9nbWFwX3NoYWRvd2AsIGBnbWFwX2NyZWF0ZV9zaGFkb3dgLCBhbmQgZmluYWxseSwgd2UgYXJyaXZlIGF0IGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgLiBJdCdzIGEgY2xlYXIgY2hhaW4gb2YgY2FsbHMgcmVwcmVzZW50aW5nIHRoZSBwcm9jZXNzLlxuXG5XYWl0IGEgc2Vjb25kLi4uIEkgc2VlIHRoYXQgYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGltZSB0byB6ZXJvIGluIG9uIHRoYXQgb25lLiBUaGlzIHdob2xlIHNlcXVlbmNlIGlzIHdvcnRoIGludmVzdGlnYXRpbmcsIGxldCdzIGV4cGxvcmUgdGhpcyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIHZTSUUgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg5MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzoxMzoxMC44MzYxNjUzNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzMTM1NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnNpZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTA9a3ZtLXkgKz0ga3ZtLXMzOTAubyBpbnRlcmNlcHQubyBpbnRlcnJ1cHQubyBwcml2Lm8gc2lncC5vXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxMTprdm0teSArPSBkaWFnLm8gZ2FjY2Vzcy5vIGd1ZXN0ZGJnLm8gdnNpZS5vIHB2Lm9cXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEyLWt2bS15ICs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTM6MTAuODk3NDg1MjA4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODA0MjI0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKktWTSBJbnRlZ3JhdGlvbiDigJMgTGV0J3MgRGlnIERlZXBlcioqXG5cblJpZ2h0LCBzbyBLVk0gaXMgYXV0b21hdGljYWxseSBpbmNsdWRlZCB3aGVuIGBDT05GSUdfS1ZNYCBpcyBlbmFibGVkLiBUaGF0J3MgZ29vZCB0byBrbm93LCBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBCdXQgSSdtIGN1cmlvdXMsIGFyZSB0aGVyZSAqYW55KiBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgbnVhbmNlcyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmU/IEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuIEkgY2FuJ3QganVzdCBhc3N1bWUgdGhpcyBpcyBhbGwgdGhlcmUgaXMuIFRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZS4gTGV0IG1lIGdldCByaWdodCB0byBgS2NvbmZpZ2AgaW4gdGhlIGBhcmNoL3MzOTAva3ZtL2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgYW55dGhpbmcgdW5pcXVlIG9yIHMzOTAtc3BlY2lmaWMuIEknbSBleHBlY3RpbmcgdG8gZmluZCBkZXRhaWxzIGFyb3VuZCBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzIHNwZWNpZmljIHRvIHRoaXMgcGxhdGZvcm0uIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTQ4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTM6MTQuMzc3OTEwMTk0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzI2OTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXFx0ZGVmX3RyaXN0YXRlIHlcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEzOjE0LjQzNTE4NzU3M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODk0MDQ4OTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIEtWTSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgcG9pbnRpbmcgbWUgdG93YXJkcyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoZSBtb2RpZmllZCBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYEtWTWAg4oCTIHRoYXQncyB0aGUgYmlnIG9uZSwgdGhlIG1haW4gY29uZmlndXJhdGlvbi4gQnV0IHRoZW4gSSdtIHN0cnVjayBieSB0aGF0IGNhdmVhdDogXCJEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzLlwiIEkgaW1tZWRpYXRlbHkgc3RhcnQgcXVlc3Rpb25pbmcgaWYgYEtWTWAgZmFsbHMgaW50byB0aGF0IFwiZ2VuZXJpY1wiIGNhdGVnb3J5LiBBZnRlciBhbGwsIGl0ICppcyogc3BlY2lmaWMgdG8gS1ZNLCBidXQgaXMgdGhhdCBzcGVjaWZpYyAqZW5vdWdoKj9cblxuVGhlIHByb21wdCdzIHdvcmRpbmcga2VlcHMgZWNob2luZyBpbiBteSBtaW5kLiBJZiBgS1ZNYCBpcywgaW4gZmFjdCwgYWxyZWFkeSBlbmFibGVkLCBhbSBJIGp1c3QgYWRkaW5nIG5vaXNlIGJ5IGluY2x1ZGluZyBpdD8gSXQncyBhIHJpc2suIE9uIHRoZSBvbmUgaGFuZCwgaXQncyBzYWZlciB0byBsaXN0IGl0LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2xlYXIuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBtYWtlcyBtZSBmZWVsIGxhenkuXG5cblRoZW4sIGEgbmV3IHF1ZXN0aW9uIGVtZXJnZXM6IElzIHRoZXJlIGEgbW9yZSAqc3BlY2lmaWMqIGNvbmZpZ3VyYXRpb24gZm9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgcGFydGljdWxhcmx5IG9uIHRoZSBzMzkwIGFyY2hpdGVjdHVyZT8gSSBuZWVkIHRvIGtub3cuIFRpbWUgdG8gZGl2ZSBpbnRvIGBhcmNoL3MzOTAva3ZtL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTc4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEzOjE5LjMyOTI0MDM1MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9zMzkwL2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgS1ZNIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdHNvdXJjZSBcXFwidmlydC9rdm0vS2NvbmZpZ1xcXCJcXG4gICA2OlxcdFxcbiAgIDc6XFx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbiAgIDg6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgIDk6XFx0XFx0cHJvbXB0IFxcXCJLVk1cXFwiXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuIG90aGVyXFxuICAxMjpcXHRcXHQgIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmQgZGlzYWJsZWQuXFxuICAxNjpcXHRcXG4gIDE3OlxcdGlmIFZJUlRVQUxJWkFUSU9OXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBLVk1cXG4gIDIwOlxcdFxcdGRlZl90cmlzdGF0ZSB5XFxuICAyMTpcXHRcXHRwcm9tcHQgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXFxuICAyMzpcXHRcXHRzZWxlY3QgS1ZNX0FTWU5DX1BGXFxuICAyNDpcXHRcXHRzZWxlY3QgS1ZNX0FTWU5DX1BGX1NZTkNcXG4gIDI1OlxcdFxcdHNlbGVjdCBLVk1fQ09NTU9OXFxuICAyNjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxcbiAgMjc6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAyODpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSU5WQUxJRF9XQUtFVVBTXFxuICAyOTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fTk9fUE9MTFxcbiAgMzA6XFx0XFx0c2VsZWN0IEtWTV9WRklPXFxuICAzMTpcXHRcXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcXG4gIDMyOlxcdFxcdHNlbGVjdCBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXFxuICAzMzpcXHRcXHRzZWxlY3QgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxcbiAgMzQ6XFx0XFx0aGVscFxcbiAgMzU6XFx0XFx0ICBTdXBwb3J0IGhvc3RpbmcgcGFyYXZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzIHVzaW5nIHRoZSBTSUVcXG4gIDM2OlxcdFxcdCAgdmlydHVhbGl6YXRpb24gY2FwYWJpbGl0eSBvbiB0aGUgbWFpbmZyYW1lLiBUaGlzIHNob3VsZCB3b3JrXFxuICAzNzpcXHRcXHQgIG9uIGFueSA2NGJpdCBtYWNoaW5lLlxcbiAgMzg6XFx0XFxuICAzOTpcXHRcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzIHRocm91Z2hcXG4gIDQwOlxcdFxcdCAgYSBjaGFyYWN0ZXIgZGV2aWNlIG5vZGUgbmFtZWQgL2Rldi9rdm0uXFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICA0MzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGt2bS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIEtWTVxcbiAgNTA6XFx0XFx0aGVscFxcbiAgNTE6XFx0XFx0ICBBbGxvdyBDQVBfU1lTX0FETUlOIHVzZXJzIHRvIGNyZWF0ZSBLVk0gdmlydHVhbCBtYWNoaW5lcyB0aGF0IGFyZVxcbiAgNTI6XFx0XFx0ICBjb250cm9sbGVkIGJ5IHVzZXJzcGFjZS5cXG4gIDUzOlxcdFxcbiAgNTQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRlbmRpZiAjIFZJUlRVQUxJWkFUSU9OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEzOjE5LjMyOTM5OTg4MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzcyNDcxNzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGlzIHMzOTAgS1ZNIFBhdGNoKipcblxuT2theSwgc28gdGhlcmUncyBubyBkZWRpY2F0ZWQgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAodlNJRSkgb24gczM5MDsgaXQncyBqdXN0IHBhcnQgb2YgdGhlIHN0YW5kYXJkIEtWTSBzZXR1cC4gVGhlcmVmb3JlLCBcIktWTVwiIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZyBoZXJlLlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIGEgYnVnIGZpeCBpbiBgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsYC4gVGhpcyBmdW5jdGlvbiBjb21lcyBpbnRvIHBsYXkgd2hlbiB3ZSdyZSBjcmVhdGluZyBhIHNoYWRvdyBnbWFwIGZvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIFRoZSBpc3N1ZSBpcyBhIHNpbXBsZSB0eXBvOiB0aGUgY29kZSB3YXMgaW5jb3JyZWN0bHkgdXNpbmcgYGFzY2UuZHQgKyAxYCBpbnN0ZWFkIG9mIGBhc2NlLnRsICsgMWAuIGBhc2NlLmR0YCByZWZlcnMgdG8gdGhlIGRhdGEgdGFibGUgdHlwZSwgd2hpbGUgYGFzY2UudGxgIGNvcnJlY3RseSBkZW5vdGVzIHRoZSB0YWJsZSBsZW5ndGguIEl0J3MgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0ZXJpbmcgdGhlIGZ1bmRhbWVudGFsIGJlaGF2aW9yIG9mIGhvdyBndWVzdCBtZW1vcnkgaXMgaGFuZGxlZC5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gc29tZSBmb2N1cyBzeW1ib2xzLiBgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsYCBpcyBkZWZpbml0ZWx5IG9uZS4gVGhlbiB3ZSBoYXZlIGBnbWFwX2NyZWF0ZV9zaGFkb3dgLCBgYWNxdWlyZV9nbWFwX3NoYWRvd2AsIGB2c2llX3J1bmAsIGFuZCBga3ZtX3MzOTBfaGFuZGxlX3ZzaWVgLlxuXG5BcmUgdGhlc2UgaG90LXBhdGggZnVuY3Rpb25zPyBga3ZtX3MzOTBfaGFuZGxlX3ZzaWVgIGlzIGNydWNpYWw7IGl0J3MgaW52b2tlZCB3aGVuIHRoZSBndWVzdCBleGVjdXRlcyB0aGUgU0lFIGluc3RydWN0aW9uLCBhY3RpbmcgYXMgdGhlIGVudHJ5IHBvaW50IGZvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIGB2c2llX3J1bmAgYWN0dWFsbHkgcnVucyB0aGUgbmVzdGVkIGd1ZXN0LiBgYWNxdWlyZV9nbWFwX3NoYWRvd2AgZmluZHMgb3IgY3JlYXRlcyBhIHNoYWRvdyBnbWFwLCBhbmQgYGdtYXBfY3JlYXRlX3NoYWRvd2AgZG9lcyB0aGUgY3JlYXRpb24uIGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgIHByb3RlY3RzIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIEFTQ0UuIFRoZXNlIGFyZW4ndCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyBsaWtlIHNjaGVkdWxpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24uIFRoZXkncmUgc3BlY2lmaWNhbGx5IHRpZWQgdG8gczM5MCBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBzbyB0aGV5J3JlIGV4Y2VsbGVudCBmb2N1cyBzeW1ib2xzLlxuXG5MZXQncyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgcGF0Y2ggaXRzZWxmOlxuXG5gYGBjXG4tXHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cdTAwM2Vrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLmR0ICsgMSwgZmFsc2UpO1xuK1x0cmMgPSBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc2ctXHUwMDNla3ZtLCBjb250ZXh0LmYsIGFzY2UucnN0bywgYXNjZS50bCArIDEsIGZhbHNlKTtcbmBgYFxuXG5ZZXAsIGl0J3MgdGhhdCBkaXJlY3QgZnVuY3Rpb25hbCBjb3JyZWN0aW9uLlxuXG5UaGlzIGlzIGEgZGVmaW5pdGVseSBhIGBXb3J0aEZ1enppbmc6IHRydWVgIHNpdHVhdGlvbi4gVGhlIHJlbGV2YW50IGBFbmFibGVDb25maWdzYCBpcyBqdXN0IFwiS1ZNLlwiIEFuZCBteSBmb2N1c2VkIHN5bWJvbHMgYXJlIGBbXCJnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxcIiwgXCJnbWFwX2NyZWF0ZV9zaGFkb3dcIiwgXCJhY3F1aXJlX2dtYXBfc2hhZG93XCIsIFwidnNpZV9ydW5cIiwgXCJrdm1fczM5MF9oYW5kbGVfdnNpZVwiXWAuXG5cbk15IHJlYXNvbmluZyBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIGNvcnJlY3RzIGFuIGlzc3VlIHdpdGhpbiBzMzkwIEtWTSdzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAodlNJRSksIHNwZWNpZmljYWxseSBhIG1pc3Rha2UgaW4gdGhlIEFTQ0UgZmllbGQgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBwYWdlcyB0byByZXRyaWV2ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWRqdXN0bWVudCB3aXRoaW4gcmVhY2hhYmxlIEtWTSBjb2RlLlxuT2gsIGFzIGFuIGFzaWRlLCB3aGlsZSBga3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzYCBpcyBjZXJ0YWlubHkgcmVsZXZhbnQsIGl04oCZcyBhbHNvIGEgbW9yZSBnZW5lcmljIEtWTSBmdW5jdGlvbiBhbmQgY291bGQgYmUgY2FsbGVkIGZyb20gZWxzZXdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTY2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTM6MzMuMDU0MTIwNDAxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc1NjA4OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vZmF1bHRpbi5oPTUzPXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fczM5MF9tdWx0aXBsZV9mYXVsdHNfbmVlZF9yZXRyeShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgc2VxLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmgtNjktXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmg6NzA6c3RhdGljIGlubGluZSBpbnQga3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGd1ZXN0X2ZhdWx0ICpndWVzdF9mYXVsdHMsXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmgtNzEtXFx0XFx0XFx0XFx0XFx0ICAgZ2ZuX3Qgc3RhcnQsIGludCBuX3BhZ2VzLCBib29sIHdyaXRlX2F0dGVtcHQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYz0xMjc4PXN0YXRpYyBpbnQgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqc2cpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjg5LVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyOTA6XFx0cmMgPSBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc2ctXFx1MDAzZWt2bSwgY29udGV4dC5mLCBhc2NlLnJzdG8sIGFzY2UudGwgKyAxLCBmYWxzZSk7XFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTI5MS1cXHRpZiAocmMgXFx1MDAzZSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzoxMzozMy4zMDE2ODY3NzRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODMwMDIzNzYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBGb2N1cyBTeW1ib2xzIGFuZCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBjb2RlIGFuZCBmaWd1cmluZyBvdXQgdGhlIHJlbGV2YW50IHN5bWJvbHMgYW5kIGNvbmZpZ3VyYXRpb25zLiBJIHNlZSBga3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzYCBpcyBhbiBpbmxpbmUgZnVuY3Rpb24gaW4gYGZhdWx0aW4uaGAsIHNvIHRoYXQncyBub3QgZ29pbmcgdG8gYmUgYSBnb29kIGZvY3VzIHBvaW50IGZvciBhbmFseXNpcy4gSXQncyB0b28gc3BlY2lmaWMgYW5kIGVtYmVkZGVkLlxuXG5MZXQncyBsb29rIGF0IHRoZSBhbHRlcm5hdGl2ZXMuIEkndmUgZm91bmQgYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAsIHdoaWNoIGlzIHN0YXRpYywgYW5kIHRoZW4gYGdtYXBfY3JlYXRlX3NoYWRvd2AsIHdoaWNoIHNlZW1zIGV4cG9ydGVkLiBgYWNxdWlyZV9nbWFwX3NoYWRvd2AgYW5kIGB2c2llX3J1bmAgYXJlIHN0YXRpYy4gVGhlbiB0aGVyZSdzIGBrdm1fczM5MF9oYW5kbGVfdnNpZWAsIHdoaWNoIGlzIG5vbi1zdGF0aWMuIFRob3NlIGxhc3QgZml2ZSBzZWVtIGxpa2UgYmV0dGVyIGNob2ljZXMsIHNvIEknbGwgZm9jdXMgb24gdGhlc2U6IGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgLCBgZ21hcF9jcmVhdGVfc2hhZG93YCwgYGFjcXVpcmVfZ21hcF9zaGFkb3dgLCBgdnNpZV9ydW5gLCBhbmQgYGt2bV9zMzkwX2hhbmRsZV92c2llYC5cblxuTm93LCByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMsIHRoZSBwcm9tcHQgYWR2aXNlcyBtZSB0byBiZSBzcGVjaWZpYy4gSXQgc2F5cyB0byBhdm9pZCBnZW5lcmljIGNvbmZpZ3MsIGFuZCB0aGF0IHdlIGhhdmUgdGhlbSBhbHJlYWR5IGVuYWJsZWQuIFRoZSBub3RlIGhlcmUgc2F5cyB0aGF0IGBLVk1gIGlzIGFscmVhZHkgZW5hYmxlZC4gVGhlIHByb21wdCBhbHNvIHN0YXRlczogXCJEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cIiBgS1ZNYCBzZWVtcyB0byBjb3ZlciB0aGUgY29kZSBidXQgaXMgaXQgZ2VuZXJpYz8gSSdtIGdvaW5nIHRvIGluY2x1ZGUgYEtWTWAgc2luY2UgaXQgaXMgc3BlY2lmaWMgdG8gdGhlIHN1YnN5c3RlbSBJJ20gd29ya2luZyBpbi5cblxuSSdtIGNoZWNraW5nIGZvciBvdGhlciBjb25maWdzIHRvby4gYENPTkZJR19LVk1fUzM5MF9VQ09OVFJPTGAgZXhpc3RzLCBidXQgdGhhdCdzIGZvciB1c2VyLWNvbnRyb2xsZWQgVk1zLCB3aGljaCBtaWdodCBub3QgYmUgcmVsZXZhbnQgaGVyZS5cbkFscmlnaHQsIEkgdGhpbmsgSSBoYXZlIGV2ZXJ5dGhpbmcuIEknbSBnb2luZyB0byBzZXQgdGhlIHJlc3VsdHMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg4MiwiT3V0cHV0VG9rZW5zIjoxMzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTM6NDEuNjAxOTI3NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NTA3NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxcIixcbiAgICBcImdtYXBfY3JlYXRlX3NoYWRvd1wiLFxuICAgIFwiYWNxdWlyZV9nbWFwX3NoYWRvd1wiLFxuICAgIFwidnNpZV9ydW5cIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV92c2llXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gczM5MCBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSB3aGVyZSB0aGUgd3JvbmcgQVNDRSBmaWVsZCB3YXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBwYWdlcyB0byBnZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgS1ZNIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsXCIsXG4gICAgXCJnbWFwX2NyZWF0ZV9zaGFkb3dcIixcbiAgICBcImFjcXVpcmVfZ21hcF9zaGFkb3dcIixcbiAgICBcInZzaWVfcnVuXCIsXG4gICAgXCJrdm1fczM5MF9oYW5kbGVfdnNpZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHMzOTAgS1ZNIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAodlNJRSkgd2hlcmUgdGhlIHdyb25nIEFTQ0UgZmllbGQgd2FzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgcGFnZXMgdG8gZ2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowxx5b7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 17:00:36 +0000 UTC FinishedAt: 2026-06-23 17:13:42 +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": "ef057cbf825e03b63f6edf5980f96abf3c53089d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "ef057cbf825e03b63f6edf5980f96abf3c53089d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "c7b90b24-1e78-4575-9389-3f59fa9d482d" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "gmap_protect_asce_top_level", "gmap_create_shadow", "acquire_gmap_shadow", "vsie_run", "kvm_s390_handle_vsie" ], "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+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbCYjMzQ7LAogICAgJiMzNDtnbWFwX2NyZWF0ZV9zaGFkb3cmIzM0OywKICAgICYjMzQ7YWNxdWlyZV9nbWFwX3NoYWRvdyYjMzQ7LAogICAgJiMzNDt2c2llX3J1biYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfdnNpZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBzMzkwIEtWTSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gKHZTSUUpIHdoZXJlIHRoZSB3cm9uZyBBU0NFIGZpZWxkIHdhcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGdldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBLVk0gY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDYyMDNiNmFjN2RmZmU4NWFlMDg5NjY4MGU0M2Y3YTk4NjlkZjllYThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAyMyAxNzoxMjoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2dtYXAuYyBiL2FyY2gvczM5MC9rdm0vZ21hcC5jXG5pbmRleCA3NzgyOWY3ODdkYzc4MS4uZTFlNzM0Y2JjMGNjZGEgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL2dtYXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9nbWFwLmNcbkBAIC0xMjg3LDcgJiM0MzsxMjg3LDcgQEAgc3RhdGljIGludCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBnbWFcbiBcdC8qIFBhaXJzIHdpdGggdGhlIHNtcF93bWIoKSBpbiBrdm1fbW11X2ludmFsaWRhdGVfZW5kKCkuICovXG4gXHRzbXBfcm1iKCk7XG4gXG4tXHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cdTAwM2Vrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLmR0ICYjNDM7IDEsIGZhbHNlKTtcbiYjNDM7XHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cdTAwM2Vrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLnRsICYjNDM7IDEsIGZhbHNlKTtcbiBcdGlmIChyYyBcdTAwM2UgMClcbiBcdFx0cmMgPSAtRUZBVUxUO1xuIFx0aWYgKCFyYylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwmIzM0OywKICAgICYjMzQ7Z21hcF9jcmVhdGVfc2hhZG93JiMzNDssCiAgICAmIzM0O2FjcXVpcmVfZ21hcF9zaGFkb3cmIzM0OywKICAgICYjMzQ7dnNpZV9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfaGFuZGxlX3ZzaWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gczM5MCBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSB3aGVyZSB0aGUgd3JvbmcgQVNDRSBmaWVsZCB3YXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBwYWdlcyB0byBnZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgS1ZNIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYyMDNiNmFjN2RmZmU4NWFlMDg5NjY4MGU0M2Y3YTk4NjlkZjllYTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAyMyAxNzoxMjoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vZ21hcC5jIGIvYXJjaC9zMzkwL2t2bS9nbWFwLmMKaW5kZXggNzc4MjlmNzg3ZGM3ODEuLmUxZTczNGNiYzBjY2RhIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva3ZtL2dtYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL2dtYXAuYwpAQCAtMTI4Nyw3ICYjNDM7MTI4Nyw3IEBAIHN0YXRpYyBpbnQgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hCiAJLyogUGFpcnMgd2l0aCB0aGUgc21wX3dtYigpIGluIGt2bV9tbXVfaW52YWxpZGF0ZV9lbmQoKS4gKi8KIAlzbXBfcm1iKCk7CiAKLQlyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy0mZ3Q7a3ZtLCBjb250ZXh0LmYsIGFzY2UucnN0bywgYXNjZS5kdCAmIzQzOyAxLCBmYWxzZSk7CiYjNDM7CXJjID0ga3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzKHNnLSZndDtrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLnRsICYjNDM7IDEsIGZhbHNlKTsKIAlpZiAocmMgJmd0OyAwKQogCQlyYyA9IC1FRkFVTFQ7CiAJaWYgKCFyYykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkyOAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDM0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0gUGF0Y2ggZm9yIHMzOTAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBhcmNoL3MzOTAva3ZtL2dtYXAuY2AuIFRoZSBjaGFuZ2UgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgcmVwbGFjaW5nIGBhc2NlLmR0ICYjNDM7IDFgIHdpdGggYGFzY2UudGwgJiM0MzsgMWAgaW4gYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIEtWTSBmb3IgczM5MCwgbm8gcXVlc3Rpb24gYWJvdXQgaXQuCgpOb3csIHRoZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkLCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGZ1enplYWJsZSBpbiBvdXIgZW52aXJvbm1lbnQuIFdlIHVzdWFsbHkgZm9jdXMgZnV6emluZyBlZmZvcnRzIG9uIHg4Nl82NCBvciBhcm02NCwgYnV0IGlmIHdlJiMzOTtyZSBydW5uaW5nIHMzOTB4LCB0aGVuIHRoaXMgY291bGQgb3BlbiB1cCBhIG5ldyBhdmVudWUuCgpMZXQmIzM5O3MgcGF1c2UsIHRoZSBwcm9tcHQgbWVudGlvbnMgc29tZXRoaW5nIGFib3V0IHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHaXZlbiB0aGlzIGlzIEtWTSwgdGhpcyBkb2VzIGdpdmUgbWUgcGF1c2UsIGl0IG1ha2VzIG1lIHRoaW5rLiBBcmUgdGhlcmUgY29uZmlndXJhdGlvbnMgd2UgYXJlIG1pc3Npbmc/CgpCdXQgd2FpdC4gSWYgd2UmIzM5O3JlIHJ1bm5pbmcgc3l6a2FsbGVyIG9uIHMzOTB4LCB0aGVuIHRoaXMgczM5MCBLVk0gY29kZSBpcyAqZGVmaW5pdGVseSogcmVhY2hhYmxlLiBUaGF0JiMzOTtzIHRoZSBrZXkuIFNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGltZSB0byBkaWcgaW50byB0aGUgYGFyY2gvczM5MC9rdm0vZ21hcC5jYCBmaWxlIGFuZCBzZWUgd2hhdCBLVk0tc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGFwcGx5IHRvIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gV2UgbmVlZCB0byBmaW5kIHdoYXQgYWxsb3dzIHRoaXMgcGF0aCB0byBiZSBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vZ21hcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vZ21hcC5jPTEyMDU9c3RhdGljIHN0cnVjdCBnbWFwICpnbWFwX2ZpbmRfc2hhZG93KHN0cnVjdCBnbWFwICpwYXJlbnQsIHVuaW9uIGFzY2UgYXNjZSwgaW50IGVkYXRfbGV2ZWwpXG4tLVxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTIxOC0jZGVmaW5lIENSU1RfVEFCTEVfUEFHRVMgKF9DUlNUX1RBQkxFX1NJWkUgLyBQQUdFX1NJWkUpXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjE5OnN0cnVjdCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwge1xuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTIyMC1cdHVuc2lnbmVkIGxvbmcgc2VxO1xuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyMjMtXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjI0OnN0YXRpYyBpbmxpbmUgaW50IF9fZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqc2csXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjI1Olx0XHRcdFx0XHRcdHN0cnVjdCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwgKmNvbnRleHQpXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjI2LXtcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjU2LVxuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTI1NzpzdGF0aWMgaW5saW5lIGludCBfZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqc2csXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjU4Olx0XHRcdFx0XHQgICAgICAgc3RydWN0IGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbCAqY29udGV4dClcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyNTkte1xuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyNzAtXHRcdFx0cmV0dXJuIHJjO1xuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTI3MTpcdFx0cmMgPSBfX2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChtYywgc2csIGNvbnRleHQpO1xuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTI3Mi1cdFx0cmFkaXhfdHJlZV9wcmVsb2FkX2VuZCgpO1xuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyNzctXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjc4OnN0YXRpYyBpbnQgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqc2cpXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjc5LXtcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyODA6XHRzdHJ1Y3QgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsIGNvbnRleHQgPSB7fTtcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyODEtXHR1bmlvbiBhc2NlIGFzY2UgPSBzZy1cdTAwM2VndWVzdF9hc2NlO1xuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyOTMtXHRpZiAoIXJjKVxuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTI5NDpcdFx0cmMgPSBfZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKG1jLCBzZywgXHUwMDI2Y29udGV4dCk7XG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjk1LVx0aWYgKHJjKVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jPTEzMTg9c3RydWN0IGdtYXAgKmdtYXBfY3JlYXRlX3NoYWRvdyhzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnBhcmVudCxcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMzY4LVx0LyogUHJvdGVjdCB3aGlsZSBpbnNlcnRpbmcsIHByb3RlY3RzIGFnYWluc3QgaW52YWxpZGF0aW9uIHJhY2VzLiAqL1xuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTM2OTpcdHJjID0gZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKG1jLCBuZXcpO1xuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTM3MC1cdGlmIChyYykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqQW5hbHl6aW5nIHRoZSBDYWxsIFN0YWNrIGFuZCBQb3RlbnRpYWwgT3B0aW1pemF0aW9uKioKCkFscmlnaHQsIHNvIGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBnbWFwX2NyZWF0ZV9zaGFkb3dgLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50IHRvIG5vdGUg4oCTIGl0IGdpdmVzIG1lIGEgY2xlYXIgaWRlYSBvZiB0aGUgY2FsbCBmbG93LiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdGhpbmsgYWJvdXQgd2hldGhlciB0aGVyZSYjMzk7cyBhbnl0aGluZyBwbGF0Zm9ybS1zcGVjaWZpYyBpbnZvbHZlZC4gR2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIGJyb2FkZXIgbWVtb3J5IG1hbmFnZW1lbnQgb3IgdmlydHVhbCBtZW1vcnkgc2V0dXAsIEkgbmVlZCB0byBjb25zaWRlciBwb3RlbnRpYWwgb3B0aW1pemF0aW9ucyBvciB3b3JrYXJvdW5kcyBmb3IgczM5MCBLVk0sIHNwZWNpZmljYWxseS4gQXJlIHRoZXJlIGFueSBrbm93biBxdWlya3MsIGFyY2hpdGVjdHVyYWwgbnVhbmNlcywgb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgaW4gdGhlIHMzOTAgS1ZNIGVudmlyb25tZW50IHRoYXQgbWlnaHQgYmUgaW1wYWN0aW5nIHRoaXMgY29kZSBwYXRoPyBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgZGlmZmVyZW50IHdheSB3ZSBjYW4gaGFuZGxlIHRoZSBBU0NFIChBZGRyZXNzIFNwYWNlIENvbnRyb2wgRW50cnkpIHByb3RlY3Rpb24gZm9yIHRoaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljYWxseS4gVGltZSB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgcGF0aHMgYXNzb2NpYXRlZCB3aXRoIHMzOTAgS1ZNIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHRhcmdldHMgZm9yIHJldmlldyBvciBlbmhhbmNlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTI9a3ZtLXkgJiM0Mzs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTMtXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlOjE0Omt2bS0kKENPTkZJR19WRklPX1BDSV9aREVWX0tWTSkgJiM0Mzs9IHBjaS5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlOjE1Om9iai0kKENPTkZJR19LVk0pICYjNDM7PSBrdm0ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNDQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBzMzkwIEtWTSBGdXp6aW5nIFBvc3NpYmlsaXR5KioKCk9rYXksIHNvIHRoZSBjb3JlIGNvbmZpZyB0byBjb25zaWRlciBpcyBkZWZpbml0ZWx5IGBDT05GSUdfS1ZNYC4gQnV0IGhlcmUmIzM5O3MgdGhlIHF1ZXN0aW9uOiBpcyBzMzkwIEtWTSBldmVuICphY2Nlc3NpYmxlKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVT8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoYXQsIGJlY2F1c2UgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocy4gRm9ydHVuYXRlbHksIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgc3VwcG9ydHMgczM5MHggYW5kIGlzIGtub3duIHRvIGZ1enogS1ZNIG9uIHRoYXQgdmVyeSBhcmNoaXRlY3R1cmUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKQnV0IGhvbGQgb24sIHRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgJiMzNDtpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4uLiYjMzQ7IGluY2x1ZGluZyB0aG9zZSBlbXVsYXRlZCBieSBzb2Z0d2FyZSBsaWtlIFVTQiBnYWRnZXRzLCBtYWM4MDIxMV9od3NpbS4gT2theSwgc28gaXMgczM5MCBLVk0gcmVhY2hhYmxlIGluIHg4Nl82NCBHQ0U/IERlZmluaXRlbHkgbm90LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXMgbm90IHRoZSBjYXNlLgoKSG93ZXZlciwgc2luY2UgSSBrbm93IHN5emthbGxlciBydW5zIG9uIHMzOTB4IFFFTVUsIHRoYXQgb3BlbnMgdXAgcG9zc2liaWxpdGllcy4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGJlY29tZXMsIGlzIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGU/IElmIHNvLCB0aGVuIGl0IHdhcnJhbnRzIGRlZXBlciBpbnZlc3RpZ2F0aW9uIGFuZCBmdXp6aW5nLCB3aGljaCBtZWFucyB5ZXMsIHdlIHNob3VsZCBkZWZpbml0ZWx5IGV4cGxvcmUgdGhpcy4gU3l6a2FsbGVyJiMzOTtzIG11bHRpLWFyY2hpdGVjdHVyZSBzdXBwb3J0IGlzIGEgc2lnbmlmaWNhbnQgZmFjdG9yIGhlcmUuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGZvciBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWdzLCB0aG91Z2gsIGp1c3QgdG8gYmUgdGhvcm91Z2guCgpSaWdodCwgYENPTkZJR19LVk1gIGlzIHRoZSBwcmltYXJ5IG9uZSwgb2YgY291cnNlLiBUbyB6ZXJvIGluIG9uIHRoZSBjcml0aWNhbCBjb2RlIGFyZWFzLCBJIG5lZWQgdG8gbG9vayBhdCBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIGNvbmZpZy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGdtYXBfY3JlYXRlX3NoYWRvd2AgdG8gcGlucG9pbnQgd2hpY2ggc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSByZWxldmFudCBoZXJlLiBUaGF0IHNob3VsZCBndWlkZSBteSBuZXh0IHN0ZXBzIGluIGFzc2Vzc2luZyBpdHMgZnV6emluZyBwb3RlbnRpYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z21hcF9jcmVhdGVfc2hhZG93JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9nbWFwLmM9MTI3OD1zdGF0aWMgaW50IGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnNnKVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMDAtLyoqXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMzAxOiAqIGdtYXBfY3JlYXRlX3NoYWRvdygpIC0gQ3JlYXRlL2ZpbmQgYSBzaGFkb3cgZ3Vlc3QgYWRkcmVzcyBzcGFjZS5cbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMDItICogQG1jOiBUaGUgY2FjaGUgdG8gdXNlIHRvIGFsbG9jYXRlIGRhdCB0YWJsZXMuXG4tLVxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTMxNy0gKi9cbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEzMTg6c3RydWN0IGdtYXAgKmdtYXBfY3JlYXRlX3NoYWRvdyhzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnBhcmVudCxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMTktXHRcdFx0XHR1bmlvbiBhc2NlIGFzY2UsIGludCBlZGF0X2xldmVsKVxuLS1cbmFyY2gvczM5MC9rdm0vZ21hcC5oPTEwOD12b2lkIF9nbWFwX2hhbmRsZV92c2llX3Vuc2hhZG93X2V2ZW50KHN0cnVjdCBnbWFwICpwYXJlbnQsIGdmbl90IGdmbik7XG5hcmNoL3MzOTAva3ZtL2dtYXAuaDoxMDk6c3RydWN0IGdtYXAgKmdtYXBfY3JlYXRlX3NoYWRvdyhzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKmdtYXAsXG5hcmNoL3MzOTAva3ZtL2dtYXAuaC0xMTAtXHRcdFx0XHR1bmlvbiBhc2NlIGFzY2UsIGludCBlZGF0X2xldmVsKTtcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0xMzAwPXN0YXRpYyBzdHJ1Y3QgZ21hcCAqYWNxdWlyZV9nbWFwX3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSlcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMzI5LWFnYWluOlxuYXJjaC9zMzkwL2t2bS92c2llLmM6MTMzMDpcdGdtYXAgPSBnbWFwX2NyZWF0ZV9zaGFkb3codmNwdS1cdTAwM2VhcmNoLm1jLCB2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmdtYXAsIGFzY2UsIGVkYXQpO1xuYXJjaC9zMzkwL2t2bS92c2llLmMtMTMzMS1cdGlmIChJU19FUlIoZ21hcCkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTIzNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQ2FsbCBTdGFjazogYGFjcXVpcmVfZ21hcF9zaGFkb3dgKioKClJpZ2h0LCBgYWNxdWlyZV9nbWFwX3NoYWRvd2AgaXMgZmxhZ2dlZCBhcyBjb21pbmcgZnJvbSBgdnNpZS5jYC4gVGhhdCBpbW1lZGlhdGVseSBzcGFya3MgbXkgaW50ZXJlc3Q7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoaXMgY29udGV4dC4gTXkgbmV4dCBzdGVwLCBuYXR1cmFsbHksIGlzIHRvIHRyYWNlIHRob3NlIGNhbGxzLiBJIHdhbnQgdG8gc2VlICpleGFjdGx5KiB3aGVyZSBhbmQgaG93IGBhY3F1aXJlX2dtYXBfc2hhZG93YCBpcyBpbnZva2VkLiBXaGF0IGFyZSB0aGUgY2FsbGluZyBhcmd1bWVudHM/IFdoYXQgaXMgdGhlIGV4ZWN1dGlvbiBmbG93IGltbWVkaWF0ZWx5IGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGZ1bmN0aW9uIGNhbGw/IFRoYXQgaW5mb3JtYXRpb24gd2lsbCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBkZXRlcm1pbmUgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3Qgb24gc3lzdGVtIGJlaGF2aW9yLiBJdCYjMzk7cyB0aW1lIHRvIGRpdmUgaW50byB0aGUgY2FsbCBncmFwaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWNxdWlyZV9nbWFwX3NoYWRvdyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vdnNpZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vdnNpZS5jPTEyODQ9c3RhdGljIHZvaWQgcmVsZWFzZV9nbWFwX3NoYWRvdyhzdHJ1Y3QgdnNpZV9wYWdlICp2c2llX3BhZ2UpXG4tLVxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTI5OS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jOjEzMDA6c3RhdGljIHN0cnVjdCBnbWFwICphY3F1aXJlX2dtYXBfc2hhZG93KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlKVxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTMwMS17XG4tLVxuYXJjaC9zMzkwL2t2bS92c2llLmM9MTM5Nj1zdGF0aWMgaW50IHZzaWVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlKVxuLS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE0MDItXHR3aGlsZSAoMSkge1xuYXJjaC9zMzkwL2t2bS92c2llLmM6MTQwMzpcdFx0c2cgPSBhY3F1aXJlX2dtYXBfc2hhZG93KHZjcHUsIHZzaWVfcGFnZSk7XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNDA0LVx0XHRpZiAoSVNfRVJSKHNnKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTEzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnNpZV9ydW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3ZzaWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3ZzaWUuYz0xMTA3PXN0YXRpYyBpbnQgdnNpZV9oYW5kbGVfbXZwZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSwgc3RydWN0IGdtYXAgKnNnKVxuLS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jLTExODYtICovXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxMTg3OnN0YXRpYyBpbnQgZG9fdnNpZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdnNpZV9wYWdlICp2c2llX3BhZ2UsIHN0cnVjdCBnbWFwICpzZylcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTExODgtXHRfX3JlbGVhc2VzKHZjcHUtXHUwMDNla3ZtLVx1MDAzZXNyY3UpXG4tLVxuYXJjaC9zMzkwL2t2bS92c2llLmM9MTM4Mj1zdGF0aWMgdm9pZCB1bnJlZ2lzdGVyX3NoYWRvd19zY2Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jLTEzOTUtICovXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxMzk2OnN0YXRpYyBpbnQgdnNpZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgdnNpZV9wYWdlICp2c2llX3BhZ2UpXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMzk3LXtcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNDExLVx0XHRcdHVwZGF0ZV9pbnRlcnZlbnRpb25fcmVxdWVzdHModnNpZV9wYWdlKTtcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjE0MTI6XHRcdFx0cmMgPSBkb192c2llX3J1bih2Y3B1LCB2c2llX3BhZ2UsIHNnKTtcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE0MTMtXHRcdH1cbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0xNTU2PWludCBrdm1fczM5MF9oYW5kbGVfdnNpZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTU5OC1cdHJlZ2lzdGVyX3NoYWRvd19zY2IodmNwdSwgdnNpZV9wYWdlKTtcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjE1OTk6XHRyYyA9IHZzaWVfcnVuKHZjcHUsIHZzaWVfcGFnZSk7XG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNjAwLVx0dW5yZWdpc3Rlcl9zaGFkb3dfc2NiKHZjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzI3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfaGFuZGxlX3ZzaWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg9NDQyPWludCBrdm1fczM5MF9za2V5X2NoZWNrX2VuYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC00NDQtLyogaW1wbGVtZW50ZWQgaW4gdnNpZS5jICovXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmg6NDQ1OmludCBrdm1fczM5MF9oYW5kbGVfdnNpZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oLTQ0Ni12b2lkIGt2bV9zMzkwX3ZzaWVfa2ljayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gvczM5MC9rdm0vcHJpdi5jPTk1Nj1pbnQga3ZtX3MzOTBfaGFuZGxlX2IyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy05NjktXHRjYXNlIDB4MTQ6XG5hcmNoL3MzOTAva3ZtL3ByaXYuYzo5NzA6XHRcdHJldHVybiBrdm1fczM5MF9oYW5kbGVfdnNpZSh2Y3B1KTtcbmFyY2gvczM5MC9rdm0vcHJpdi5jLTk3MS1cdGNhc2UgMHgyMTpcbi0tXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0xNDgzPXN0YXRpYyBzdHJ1Y3QgdnNpZV9wYWdlICpnZXRfdnNpZV9wYWdlKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE1NTUtXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxNTU2OmludCBrdm1fczM5MF9oYW5kbGVfdnNpZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNTU3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg5MgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHZTSUUgSGFuZGxpbmcgaW4gS1ZNL3MzOTAqKgoKT2theSwgc28gSSYjMzk7bSB0cmFjaW5nIHRoZSBleGVjdXRpb24gcGF0aCBoZXJlIGZvciB2U0lFLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBzMzkwIGFyY2hpdGVjdHVyZS4gSSBzZWUgdGhhdCBga3ZtX3MzOTBfaGFuZGxlX3ZzaWVgIGlzIHRoZSBlbnRyeSBwb2ludCwgY2FsbGVkIGJ5IGBrdm1fczM5MF9oYW5kbGVfYjJgIHdoaWNoLCBpbiB0dXJuLCBkZWFscyB3aXRoIHRoZSBTSUUgaW5zdHJ1Y3Rpb24gKDB4YjIxNCkuIFRoaXMgaXMgdGhlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBiaXQsIHRoZSB2U0lFIGNvbXBvbmVudC4KCk5vdywgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBjcml0aWNhbCBzeW1ib2xzIGluIHRoaXMgZmxvdy4gYGt2bV9zMzkwX2hhbmRsZV92c2llYCBraWNrcyB0aGluZ3Mgb2ZmLCBpdCBsZWFkcyB0byBgdnNpZV9ydW5gLCB0aGVuIHRvIGBhY3F1aXJlX2dtYXBfc2hhZG93YCwgYGdtYXBfY3JlYXRlX3NoYWRvd2AsIGFuZCBmaW5hbGx5LCB3ZSBhcnJpdmUgYXQgYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAuIEl0JiMzOTtzIGEgY2xlYXIgY2hhaW4gb2YgY2FsbHMgcmVwcmVzZW50aW5nIHRoZSBwcm9jZXNzLgoKV2FpdCBhIHNlY29uZC4uLiBJIHNlZSB0aGF0IGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgIGlzIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaW1lIHRvIHplcm8gaW4gb24gdGhhdCBvbmUuIFRoaXMgd2hvbGUgc2VxdWVuY2UgaXMgd29ydGggaW52ZXN0aWdhdGluZywgbGV0JiMzOTtzIGV4cGxvcmUgdGhpcyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIHZTSUUgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIG1vZGlmaWNhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnNpZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9NYWtlZmlsZT0xMD1rdm0teSAmIzQzOz0ga3ZtLXMzOTAubyBpbnRlcmNlcHQubyBpbnRlcnJ1cHQubyBwcml2Lm8gc2lncC5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlOjExOmt2bS15ICYjNDM7PSBkaWFnLm8gZ2FjY2Vzcy5vIGd1ZXN0ZGJnLm8gdnNpZS5vIHB2Lm9cbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTIta3ZtLXkgJiM0Mzs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU0OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKktWTSBJbnRlZ3JhdGlvbiDigJMgTGV0JiMzOTtzIERpZyBEZWVwZXIqKgoKUmlnaHQsIHNvIEtWTSBpcyBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkIHdoZW4gYENPTkZJR19LVk1gIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LCBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBCdXQgSSYjMzk7bSBjdXJpb3VzLCBhcmUgdGhlcmUgKmFueSogb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIG51YW5jZXMgc3BlY2lmaWMgdG8gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlPyBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLiBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZSB0aGlzIGlzIGFsbCB0aGVyZSBpcy4gVGltZSB0byBjaGVjayB0aGUgc291cmNlLiBMZXQgbWUgZ2V0IHJpZ2h0IHRvIGBLY29uZmlnYCBpbiB0aGUgYGFyY2gvczM5MC9rdm0vYCBkaXJlY3RvcnkuIFRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgYW55dGhpbmcgdW5pcXVlIG9yIHMzOTAtc3BlY2lmaWMuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBhcm91bmQgZmVhdHVyZXMgYW5kIGRlcGVuZGVuY2llcyBzcGVjaWZpYyB0byB0aGlzIHBsYXRmb3JtLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXHRkZWZfdHJpc3RhdGUgeVxuLS1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxNzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTc4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIEtWTSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyB0aGUgcHJvbXB0IGlzIHBvaW50aW5nIG1lIHRvd2FyZHMgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGUgbW9kaWZpZWQgY29kZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGBLVk1gIOKAkyB0aGF0JiMzOTtzIHRoZSBiaWcgb25lLCB0aGUgbWFpbiBjb25maWd1cmF0aW9uLiBCdXQgdGhlbiBJJiMzOTttIHN0cnVjayBieSB0aGF0IGNhdmVhdDogJiMzNDtEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzLiYjMzQ7IEkgaW1tZWRpYXRlbHkgc3RhcnQgcXVlc3Rpb25pbmcgaWYgYEtWTWAgZmFsbHMgaW50byB0aGF0ICYjMzQ7Z2VuZXJpYyYjMzQ7IGNhdGVnb3J5LiBBZnRlciBhbGwsIGl0ICppcyogc3BlY2lmaWMgdG8gS1ZNLCBidXQgaXMgdGhhdCBzcGVjaWZpYyAqZW5vdWdoKj8KClRoZSBwcm9tcHQmIzM5O3Mgd29yZGluZyBrZWVwcyBlY2hvaW5nIGluIG15IG1pbmQuIElmIGBLVk1gIGlzLCBpbiBmYWN0LCBhbHJlYWR5IGVuYWJsZWQsIGFtIEkganVzdCBhZGRpbmcgbm9pc2UgYnkgaW5jbHVkaW5nIGl0PyBJdCYjMzk7cyBhIHJpc2suIE9uIHRoZSBvbmUgaGFuZCwgaXQmIzM5O3Mgc2FmZXIgdG8gbGlzdCBpdCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNsZWFyLiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgbWFrZXMgbWUgZmVlbCBsYXp5LgoKVGhlbiwgYSBuZXcgcXVlc3Rpb24gZW1lcmdlczogSXMgdGhlcmUgYSBtb3JlICpzcGVjaWZpYyogY29uZmlndXJhdGlvbiBmb3IgbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBwYXJ0aWN1bGFybHkgb24gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlPyBJIG5lZWQgdG8ga25vdy4gVGltZSB0byBkaXZlIGludG8gYGFyY2gvczM5MC9rdm0vS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBLVk0gY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRzb3VyY2UgXCYjMzQ7dmlydC9rdm0vS2NvbmZpZ1wmIzM0O1xuICAgNjpcdFxuICAgNzpcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cbiAgIDg6XHRcdGRlZl9ib29sIHlcbiAgIDk6XHRcdHByb21wdCBcJiMzNDtLVk1cJiMzNDtcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW4gb3RoZXJcbiAgMTI6XHRcdCAgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXG4gIDEzOlx0XHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmQgZGlzYWJsZWQuXG4gIDE2Olx0XG4gIDE3Olx0aWYgVklSVFVBTElaQVRJT05cbiAgMTg6XHRcbiAgMTk6XHRjb25maWcgS1ZNXG4gIDIwOlx0XHRkZWZfdHJpc3RhdGUgeVxuICAyMTpcdFx0cHJvbXB0IFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcbiAgMjM6XHRcdHNlbGVjdCBLVk1fQVNZTkNfUEZcbiAgMjQ6XHRcdHNlbGVjdCBLVk1fQVNZTkNfUEZfU1lOQ1xuICAyNTpcdFx0c2VsZWN0IEtWTV9DT01NT05cbiAgMjY6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXG4gIDI3Olx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcbiAgMjg6XHRcdHNlbGVjdCBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcbiAgMjk6XHRcdHNlbGVjdCBIQVZFX0tWTV9OT19QT0xMXG4gIDMwOlx0XHRzZWxlY3QgS1ZNX1ZGSU9cbiAgMzE6XHRcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuICAzMjpcdFx0c2VsZWN0IEtWTV9NTVVfTE9DS0xFU1NfQUdJTkdcbiAgMzM6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19QUkVfRkFVTFRfTUVNT1JZXG4gIDM0Olx0XHRoZWxwXG4gIDM1Olx0XHQgIFN1cHBvcnQgaG9zdGluZyBwYXJhdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMgdXNpbmcgdGhlIFNJRVxuICAzNjpcdFx0ICB2aXJ0dWFsaXphdGlvbiBjYXBhYmlsaXR5IG9uIHRoZSBtYWluZnJhbWUuIFRoaXMgc2hvdWxkIHdvcmtcbiAgMzc6XHRcdCAgb24gYW55IDY0Yml0IG1hY2hpbmUuXG4gIDM4Olx0XG4gIDM5Olx0XHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzIHRocm91Z2hcbiAgNDA6XHRcdCAgYSBjaGFyYWN0ZXIgZGV2aWNlIG5vZGUgbmFtZWQgL2Rldi9rdm0uXG4gIDQxOlx0XG4gIDQyOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuICA0MzpcdFx0ICB3aWxsIGJlIGNhbGxlZCBrdm0uXG4gIDQ0Olx0XG4gIDQ1Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDQ2Olx0XG4gIDQ3Olx0Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXG4gIDQ4Olx0XHRib29sIFwmIzM0O1VzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcJiMzNDtcbiAgNDk6XHRcdGRlcGVuZHMgb24gS1ZNXG4gIDUwOlx0XHRoZWxwXG4gIDUxOlx0XHQgIEFsbG93IENBUF9TWVNfQURNSU4gdXNlcnMgdG8gY3JlYXRlIEtWTSB2aXJ0dWFsIG1hY2hpbmVzIHRoYXQgYXJlXG4gIDUyOlx0XHQgIGNvbnRyb2xsZWQgYnkgdXNlcnNwYWNlLlxuICA1MzpcdFxuICA1NDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICA1NTpcdFxuICA1NjpcdGVuZGlmICMgVklSVFVBTElaQVRJT05cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTE2NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDYyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGlzIHMzOTAgS1ZNIFBhdGNoKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSBvbiBzMzkwOyBpdCYjMzk7cyBqdXN0IHBhcnQgb2YgdGhlIHN0YW5kYXJkIEtWTSBzZXR1cC4gVGhlcmVmb3JlLCAmIzM0O0tWTSYjMzQ7IGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZyBoZXJlLgoKVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpcyBhIGJ1ZyBmaXggaW4gYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAuIFRoaXMgZnVuY3Rpb24gY29tZXMgaW50byBwbGF5IHdoZW4gd2UmIzM5O3JlIGNyZWF0aW5nIGEgc2hhZG93IGdtYXAgZm9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gVGhlIGlzc3VlIGlzIGEgc2ltcGxlIHR5cG86IHRoZSBjb2RlIHdhcyBpbmNvcnJlY3RseSB1c2luZyBgYXNjZS5kdCAmIzQzOyAxYCBpbnN0ZWFkIG9mIGBhc2NlLnRsICYjNDM7IDFgLiBgYXNjZS5kdGAgcmVmZXJzIHRvIHRoZSBkYXRhIHRhYmxlIHR5cGUsIHdoaWxlIGBhc2NlLnRsYCBjb3JyZWN0bHkgZGVub3RlcyB0aGUgdGFibGUgbGVuZ3RoLiBJdCYjMzk7cyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbHRlcmluZyB0aGUgZnVuZGFtZW50YWwgYmVoYXZpb3Igb2YgaG93IGd1ZXN0IG1lbW9yeSBpcyBoYW5kbGVkLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHNvbWUgZm9jdXMgc3ltYm9scy4gYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAgaXMgZGVmaW5pdGVseSBvbmUuIFRoZW4gd2UgaGF2ZSBgZ21hcF9jcmVhdGVfc2hhZG93YCwgYGFjcXVpcmVfZ21hcF9zaGFkb3dgLCBgdnNpZV9ydW5gLCBhbmQgYGt2bV9zMzkwX2hhbmRsZV92c2llYC4KCkFyZSB0aGVzZSBob3QtcGF0aCBmdW5jdGlvbnM/IGBrdm1fczM5MF9oYW5kbGVfdnNpZWAgaXMgY3J1Y2lhbDsgaXQmIzM5O3MgaW52b2tlZCB3aGVuIHRoZSBndWVzdCBleGVjdXRlcyB0aGUgU0lFIGluc3RydWN0aW9uLCBhY3RpbmcgYXMgdGhlIGVudHJ5IHBvaW50IGZvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIGB2c2llX3J1bmAgYWN0dWFsbHkgcnVucyB0aGUgbmVzdGVkIGd1ZXN0LiBgYWNxdWlyZV9nbWFwX3NoYWRvd2AgZmluZHMgb3IgY3JlYXRlcyBhIHNoYWRvdyBnbWFwLCBhbmQgYGdtYXBfY3JlYXRlX3NoYWRvd2AgZG9lcyB0aGUgY3JlYXRpb24uIGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgIHByb3RlY3RzIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIEFTQ0UuIFRoZXNlIGFyZW4mIzM5O3QgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgbGlrZSBzY2hlZHVsaW5nIG9yIG1lbW9yeSBhbGxvY2F0aW9uLiBUaGV5JiMzOTtyZSBzcGVjaWZpY2FsbHkgdGllZCB0byBzMzkwIEtWTSBuZXN0ZWQgdmlydHVhbGl6YXRpb24sIHNvIHRoZXkmIzM5O3JlIGV4Y2VsbGVudCBmb2N1cyBzeW1ib2xzLgoKTGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBpdHNlbGY6CgpgYGBjCi0JcmMgPSBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc2ctJmd0O2t2bSwgY29udGV4dC5mLCBhc2NlLnJzdG8sIGFzY2UuZHQgJiM0MzsgMSwgZmFsc2UpOwomIzQzOwlyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy0mZ3Q7a3ZtLCBjb250ZXh0LmYsIGFzY2UucnN0bywgYXNjZS50bCAmIzQzOyAxLCBmYWxzZSk7CmBgYAoKWWVwLCBpdCYjMzk7cyB0aGF0IGRpcmVjdCBmdW5jdGlvbmFsIGNvcnJlY3Rpb24uCgpUaGlzIGlzIGEgZGVmaW5pdGVseSBhIGBXb3J0aEZ1enppbmc6IHRydWVgIHNpdHVhdGlvbi4gVGhlIHJlbGV2YW50IGBFbmFibGVDb25maWdzYCBpcyBqdXN0ICYjMzQ7S1ZNLiYjMzQ7IEFuZCBteSBmb2N1c2VkIHN5bWJvbHMgYXJlIGBbJiMzNDtnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwmIzM0OywgJiMzNDtnbWFwX2NyZWF0ZV9zaGFkb3cmIzM0OywgJiMzNDthY3F1aXJlX2dtYXBfc2hhZG93JiMzNDssICYjMzQ7dnNpZV9ydW4mIzM0OywgJiMzNDtrdm1fczM5MF9oYW5kbGVfdnNpZSYjMzQ7XWAuCgpNeSByZWFzb25pbmcgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBjb3JyZWN0cyBhbiBpc3N1ZSB3aXRoaW4gczM5MCBLVk0mIzM5O3MgbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSwgc3BlY2lmaWNhbGx5IGEgbWlzdGFrZSBpbiB0aGUgQVNDRSBmaWVsZCB1c2VkIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRvIHJldHJpZXZlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBhZGp1c3RtZW50IHdpdGhpbiByZWFjaGFibGUgS1ZNIGNvZGUuCk9oLCBhcyBhbiBhc2lkZSwgd2hpbGUgYGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlc2AgaXMgY2VydGFpbmx5IHJlbGV2YW50LCBpdOKAmXMgYWxzbyBhIG1vcmUgZ2VuZXJpYyBLVk0gZnVuY3Rpb24gYW5kIGNvdWxkIGJlIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTc6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9mYXVsdGluLmg9NTM9c3RhdGljIGlubGluZSBib29sIGt2bV9zMzkwX211bHRpcGxlX2ZhdWx0c19uZWVkX3JldHJ5KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBzZXEsXG4tLVxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmgtNjktXG5hcmNoL3MzOTAva3ZtL2ZhdWx0aW4uaDo3MDpzdGF0aWMgaW5saW5lIGludCBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgZ3Vlc3RfZmF1bHQgKmd1ZXN0X2ZhdWx0cyxcbmFyY2gvczM5MC9rdm0vZmF1bHRpbi5oLTcxLVx0XHRcdFx0XHQgICBnZm5fdCBzdGFydCwgaW50IG5fcGFnZXMsIGJvb2wgd3JpdGVfYXR0ZW1wdClcbi0tXG5hcmNoL3MzOTAva3ZtL2dtYXAuYz0xMjc4PXN0YXRpYyBpbnQgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqc2cpXG4tLVxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTI4OS1cbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyOTA6XHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cdTAwM2Vrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLnRsICYjNDM7IDEsIGZhbHNlKTtcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyOTEtXHRpZiAocmMgXHUwMDNlIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODgyCgkJCQkJCQlvdXRwdXQ6IDEzNAoJCQkJCQkJdGhvdWdodHM6IDQzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBGb2N1cyBTeW1ib2xzIGFuZCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGNvZGUgYW5kIGZpZ3VyaW5nIG91dCB0aGUgcmVsZXZhbnQgc3ltYm9scyBhbmQgY29uZmlndXJhdGlvbnMuIEkgc2VlIGBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXNgIGlzIGFuIGlubGluZSBmdW5jdGlvbiBpbiBgZmF1bHRpbi5oYCwgc28gdGhhdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgYSBnb29kIGZvY3VzIHBvaW50IGZvciBhbmFseXNpcy4gSXQmIzM5O3MgdG9vIHNwZWNpZmljIGFuZCBlbWJlZGRlZC4KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBhbHRlcm5hdGl2ZXMuIEkmIzM5O3ZlIGZvdW5kIGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgLCB3aGljaCBpcyBzdGF0aWMsIGFuZCB0aGVuIGBnbWFwX2NyZWF0ZV9zaGFkb3dgLCB3aGljaCBzZWVtcyBleHBvcnRlZC4gYGFjcXVpcmVfZ21hcF9zaGFkb3dgIGFuZCBgdnNpZV9ydW5gIGFyZSBzdGF0aWMuIFRoZW4gdGhlcmUmIzM5O3MgYGt2bV9zMzkwX2hhbmRsZV92c2llYCwgd2hpY2ggaXMgbm9uLXN0YXRpYy4gVGhvc2UgbGFzdCBmaXZlIHNlZW0gbGlrZSBiZXR0ZXIgY2hvaWNlcywgc28gSSYjMzk7bGwgZm9jdXMgb24gdGhlc2U6IGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgLCBgZ21hcF9jcmVhdGVfc2hhZG93YCwgYGFjcXVpcmVfZ21hcF9zaGFkb3dgLCBgdnNpZV9ydW5gLCBhbmQgYGt2bV9zMzkwX2hhbmRsZV92c2llYC4KCk5vdywgcmVnYXJkaW5nIGNvbmZpZ3VyYXRpb25zLCB0aGUgcHJvbXB0IGFkdmlzZXMgbWUgdG8gYmUgc3BlY2lmaWMuIEl0IHNheXMgdG8gYXZvaWQgZ2VuZXJpYyBjb25maWdzLCBhbmQgdGhhdCB3ZSBoYXZlIHRoZW0gYWxyZWFkeSBlbmFibGVkLiBUaGUgbm90ZSBoZXJlIHNheXMgdGhhdCBgS1ZNYCBpcyBhbHJlYWR5IGVuYWJsZWQuIFRoZSBwcm9tcHQgYWxzbyBzdGF0ZXM6ICYjMzQ7RG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0IHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4mIzM0OyBgS1ZNYCBzZWVtcyB0byBjb3ZlciB0aGUgY29kZSBidXQgaXMgaXQgZ2VuZXJpYz8gSSYjMzk7bSBnb2luZyB0byBpbmNsdWRlIGBLVk1gIHNpbmNlIGl0IGlzIHNwZWNpZmljIHRvIHRoZSBzdWJzeXN0ZW0gSSYjMzk7bSB3b3JraW5nIGluLgoKSSYjMzk7bSBjaGVja2luZyBmb3Igb3RoZXIgY29uZmlncyB0b28uIGBDT05GSUdfS1ZNX1MzOTBfVUNPTlRST0xgIGV4aXN0cywgYnV0IHRoYXQmIzM5O3MgZm9yIHVzZXItY29udHJvbGxlZCBWTXMsIHdoaWNoIG1pZ2h0IG5vdCBiZSByZWxldmFudCBoZXJlLgpBbHJpZ2h0LCBJIHRoaW5rIEkgaGF2ZSBldmVyeXRoaW5nLiBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGUgcmVzdWx0cyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE3OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwmIzM0OywKICAgICYjMzQ7Z21hcF9jcmVhdGVfc2hhZG93JiMzNDssCiAgICAmIzM0O2FjcXVpcmVfZ21hcF9zaGFkb3cmIzM0OywKICAgICYjMzQ7dnNpZV9ydW4mIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfaGFuZGxlX3ZzaWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gczM5MCBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSB3aGVyZSB0aGUgd3JvbmcgQVNDRSBmaWVsZCB3YXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBwYWdlcyB0byBnZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgS1ZNIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbCYjMzQ7LAogICAgJiMzNDtnbWFwX2NyZWF0ZV9zaGFkb3cmIzM0OywKICAgICYjMzQ7YWNxdWlyZV9nbWFwX3NoYWRvdyYjMzQ7LAogICAgJiMzNDt2c2llX3J1biYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9oYW5kbGVfdnNpZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBzMzkwIEtWTSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gKHZTSUUpIHdoZXJlIHRoZSB3cm9uZyBBU0NFIGZpZWxkIHdhcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGdldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBLVk0gY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEyOjI5LjU4OTEyNDY5N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMDk5MzI2NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbFwiLFxuICAgIFwiZ21hcF9jcmVhdGVfc2hhZG93XCIsXG4gICAgXCJhY3F1aXJlX2dtYXBfc2hhZG93XCIsXG4gICAgXCJ2c2llX3J1blwiLFxuICAgIFwia3ZtX3MzOTBfaGFuZGxlX3ZzaWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBzMzkwIEtWTSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gKHZTSUUpIHdoZXJlIHRoZSB3cm9uZyBBU0NFIGZpZWxkIHdhcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGdldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBLVk0gY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6MjkuNTg5MTMxMzc3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDM3NzQ2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2MjAzYjZhYzdkZmZlODVhZTA4OTY2ODBlNDNmN2E5ODY5ZGY5ZWE4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVuIDIzIDE3OjEyOjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vZ21hcC5jIGIvYXJjaC9zMzkwL2t2bS9nbWFwLmNcXG5pbmRleCA3NzgyOWY3ODdkYzc4MS4uZTFlNzM0Y2JjMGNjZGEgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9nbWFwLmNcXG4rKysgYi9hcmNoL3MzOTAva3ZtL2dtYXAuY1xcbkBAIC0xMjg3LDcgKzEyODcsNyBAQCBzdGF0aWMgaW50IGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYVxcbiBcXHQvKiBQYWlycyB3aXRoIHRoZSBzbXBfd21iKCkgaW4ga3ZtX21tdV9pbnZhbGlkYXRlX2VuZCgpLiAqL1xcbiBcXHRzbXBfcm1iKCk7XFxuIFxcbi1cXHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cXHUwMDNla3ZtLCBjb250ZXh0LmYsIGFzY2UucnN0bywgYXNjZS5kdCArIDEsIGZhbHNlKTtcXG4rXFx0cmMgPSBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc2ctXFx1MDAzZWt2bSwgY29udGV4dC5mLCBhc2NlLnJzdG8sIGFzY2UudGwgKyAxLCBmYWxzZSk7XFxuIFxcdGlmIChyYyBcXHUwMDNlIDApXFxuIFxcdFxcdHJjID0gLUVGQVVMVDtcXG4gXFx0aWYgKCFyYylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6MzAuMDkzNzAxOTczWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTU5NDczNzc3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxcIixcbiAgICBcImdtYXBfY3JlYXRlX3NoYWRvd1wiLFxuICAgIFwiYWNxdWlyZV9nbWFwX3NoYWRvd1wiLFxuICAgIFwidnNpZV9ydW5cIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV92c2llXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gczM5MCBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSB3aGVyZSB0aGUgd3JvbmcgQVNDRSBmaWVsZCB3YXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBwYWdlcyB0byBnZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgS1ZNIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjIwM2I2YWM3ZGZmZTg1YWUwODk2NjgwZTQzZjdhOTg2OWRmOWVhOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDE3OjEyOjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9nbWFwLmMgYi9hcmNoL3MzOTAva3ZtL2dtYXAuY1xuaW5kZXggNzc4MjlmNzg3ZGM3ODEuLmUxZTczNGNiYzBjY2RhIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9nbWFwLmNcbisrKyBiL2FyY2gvczM5MC9rdm0vZ21hcC5jXG5AQCAtMTI4Nyw3ICsxMjg3LDcgQEAgc3RhdGljIGludCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBnbWFcbiBcdC8qIFBhaXJzIHdpdGggdGhlIHNtcF93bWIoKSBpbiBrdm1fbW11X2ludmFsaWRhdGVfZW5kKCkuICovXG4gXHRzbXBfcm1iKCk7XG4gXG4tXHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cdTAwM2Vrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLmR0ICsgMSwgZmFsc2UpO1xuK1x0cmMgPSBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc2ctXHUwMDNla3ZtLCBjb250ZXh0LmYsIGFzY2UucnN0bywgYXNjZS50bCArIDEsIGZhbHNlKTtcbiBcdGlmIChyYyBcdTAwM2UgMClcbiBcdFx0cmMgPSAtRUZBVUxUO1xuIFx0aWYgKCFyYylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEyOjMwLjA5MzcwMzg0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDYxMjA3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIFBhdGNoIGZvciBzMzkwKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGFyY2gvczM5MC9rdm0vZ21hcC5jYC4gVGhlIGNoYW5nZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCdzIHJlcGxhY2luZyBgYXNjZS5kdCArIDFgIHdpdGggYGFzY2UudGwgKyAxYCBpbiBgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gS1ZNIGZvciBzMzkwLCBubyBxdWVzdGlvbiBhYm91dCBpdC5cblxuTm93LCB0aGUgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyBmdXp6ZWFibGUgaW4gb3VyIGVudmlyb25tZW50LiBXZSB1c3VhbGx5IGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiB4ODZfNjQgb3IgYXJtNjQsIGJ1dCBpZiB3ZSdyZSBydW5uaW5nIHMzOTB4LCB0aGVuIHRoaXMgY291bGQgb3BlbiB1cCBhIG5ldyBhdmVudWUuXG5cbkxldCdzIHBhdXNlLCB0aGUgcHJvbXB0IG1lbnRpb25zIHNvbWV0aGluZyBhYm91dCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gR2l2ZW4gdGhpcyBpcyBLVk0sIHRoaXMgZG9lcyBnaXZlIG1lIHBhdXNlLCBpdCBtYWtlcyBtZSB0aGluay4gQXJlIHRoZXJlIGNvbmZpZ3VyYXRpb25zIHdlIGFyZSBtaXNzaW5nP1xuXG5CdXQgd2FpdC4gSWYgd2UncmUgcnVubmluZyBzeXprYWxsZXIgb24gczM5MHgsIHRoZW4gdGhpcyBzMzkwIEtWTSBjb2RlIGlzICpkZWZpbml0ZWx5KiByZWFjaGFibGUuIFRoYXQncyB0aGUga2V5LiBTbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBhcmNoL3MzOTAva3ZtL2dtYXAuY2AgZmlsZSBhbmQgc2VlIHdoYXQgS1ZNLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcHBseSB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmUuIFdlIG5lZWQgdG8gZmluZCB3aGF0IGFsbG93cyB0aGlzIHBhdGggdG8gYmUgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkyOCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEyOjM2LjE5OTgyNjgxOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI5OTk1NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vZ21hcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vZ21hcC5jPTEyMDU9c3RhdGljIHN0cnVjdCBnbWFwICpnbWFwX2ZpbmRfc2hhZG93KHN0cnVjdCBnbWFwICpwYXJlbnQsIHVuaW9uIGFzY2UgYXNjZSwgaW50IGVkYXRfbGV2ZWwpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjE4LSNkZWZpbmUgQ1JTVF9UQUJMRV9QQUdFUyAoX0NSU1RfVEFCTEVfU0laRSAvIFBBR0VfU0laRSlcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjE5OnN0cnVjdCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwge1xcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyMjAtXFx0dW5zaWduZWQgbG9uZyBzZXE7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjIzLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyMjQ6c3RhdGljIGlubGluZSBpbnQgX19nbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBnbWFwICpzZyxcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjI1OlxcdFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwgKmNvbnRleHQpXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTIyNi17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjU2LVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyNTc6c3RhdGljIGlubGluZSBpbnQgX2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnNnLFxcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyNTg6XFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwgKmNvbnRleHQpXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTI1OS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjcwLVxcdFxcdFxcdHJldHVybiByYztcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjcxOlxcdFxcdHJjID0gX19nbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwobWMsIHNnLCBjb250ZXh0KTtcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjcyLVxcdFxcdHJhZGl4X3RyZWVfcHJlbG9hZF9lbmQoKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyNzctXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTI3ODpzdGF0aWMgaW50IGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnNnKVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyNzkte1xcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyODA6XFx0c3RydWN0IGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbCBjb250ZXh0ID0ge307XFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTI4MS1cXHR1bmlvbiBhc2NlIGFzY2UgPSBzZy1cXHUwMDNlZ3Vlc3RfYXNjZTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEyOTMtXFx0aWYgKCFyYylcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYzoxMjk0OlxcdFxcdHJjID0gX2dtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbChtYywgc2csIFxcdTAwMjZjb250ZXh0KTtcXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjk1LVxcdGlmIChyYylcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jPTEzMTg9c3RydWN0IGdtYXAgKmdtYXBfY3JlYXRlX3NoYWRvdyhzdHJ1Y3Qga3ZtX3MzOTBfbW11X2NhY2hlICptYywgc3RydWN0IGdtYXAgKnBhcmVudCxcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzNjgtXFx0LyogUHJvdGVjdCB3aGlsZSBpbnNlcnRpbmcsIHByb3RlY3RzIGFnYWluc3QgaW52YWxpZGF0aW9uIHJhY2VzLiAqL1xcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEzNjk6XFx0cmMgPSBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwobWMsIG5ldyk7XFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTM3MC1cXHRpZiAocmMpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6MzYuNDUyODMyOTUzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwMTcxMjE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgQ2FsbCBTdGFjayBhbmQgUG90ZW50aWFsIE9wdGltaXphdGlvbioqXG5cbkFscmlnaHQsIHNvIGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGBnbWFwX2NyZWF0ZV9zaGFkb3dgLiBUaGF0J3MgYSBrZXkgcG9pbnQgdG8gbm90ZSDigJMgaXQgZ2l2ZXMgbWUgYSBjbGVhciBpZGVhIG9mIHRoZSBjYWxsIGZsb3cuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB3aGV0aGVyIHRoZXJlJ3MgYW55dGhpbmcgcGxhdGZvcm0tc3BlY2lmaWMgaW52b2x2ZWQuIEdpdmVuIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIHRoZSBicm9hZGVyIG1lbW9yeSBtYW5hZ2VtZW50IG9yIHZpcnR1YWwgbWVtb3J5IHNldHVwLCBJIG5lZWQgdG8gY29uc2lkZXIgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgb3Igd29ya2Fyb3VuZHMgZm9yIHMzOTAgS1ZNLCBzcGVjaWZpY2FsbHkuIEFyZSB0aGVyZSBhbnkga25vd24gcXVpcmtzLCBhcmNoaXRlY3R1cmFsIG51YW5jZXMsIG9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGluIHRoZSBzMzkwIEtWTSBlbnZpcm9ubWVudCB0aGF0IG1pZ2h0IGJlIGltcGFjdGluZyB0aGlzIGNvZGUgcGF0aD8gUGVyaGFwcyB0aGVyZSdzIGEgZGlmZmVyZW50IHdheSB3ZSBjYW4gaGFuZGxlIHRoZSBBU0NFIChBZGRyZXNzIFNwYWNlIENvbnRyb2wgRW50cnkpIHByb3RlY3Rpb24gZm9yIHRoaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljYWxseS4gVGltZSB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgcGF0aHMgYXNzb2NpYXRlZCB3aXRoIHMzOTAgS1ZNIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHRhcmdldHMgZm9yIHJldmlldyBvciBlbmhhbmNlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYyMSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEyOjM5LjY1NDU0NzMxNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk5NTA1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlPTEyPWt2bS15ICs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEzLVxcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGU6MTQ6a3ZtLSQoQ09ORklHX1ZGSU9fUENJX1pERVZfS1ZNKSArPSBwY2kub1xcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGU6MTU6b2JqLSQoQ09ORklHX0tWTSkgKz0ga3ZtLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6MzkuNzEyNTQ5NTM0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM4MTIyMjYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHMzOTAgS1ZNIEZ1enppbmcgUG9zc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyB0aGUgY29yZSBjb25maWcgdG8gY29uc2lkZXIgaXMgZGVmaW5pdGVseSBgQ09ORklHX0tWTWAuIEJ1dCBoZXJlJ3MgdGhlIHF1ZXN0aW9uOiBpcyBzMzkwIEtWTSBldmVuICphY2Nlc3NpYmxlKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVT8gSSBoYXZlIHRvIGNvbnNpZGVyIHRoYXQsIGJlY2F1c2UgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocy4gRm9ydHVuYXRlbHksIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgc3VwcG9ydHMgczM5MHggYW5kIGlzIGtub3duIHRvIGZ1enogS1ZNIG9uIHRoYXQgdmVyeSBhcmNoaXRlY3R1cmUuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cbkJ1dCBob2xkIG9uLCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIFwiaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuLi5cIiBpbmNsdWRpbmcgdGhvc2UgZW11bGF0ZWQgYnkgc29mdHdhcmUgbGlrZSBVU0IgZ2FkZ2V0cywgbWFjODAyMTFfaHdzaW0uIE9rYXksIHNvIGlzIHMzOTAgS1ZNIHJlYWNoYWJsZSBpbiB4ODZfNjQgR0NFPyBEZWZpbml0ZWx5IG5vdC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGlzIG5vdCB0aGUgY2FzZS5cblxuSG93ZXZlciwgc2luY2UgSSBrbm93IHN5emthbGxlciBydW5zIG9uIHMzOTB4IFFFTVUsIHRoYXQgb3BlbnMgdXAgcG9zc2liaWxpdGllcy4gTm93LCB0aGUga2V5IHF1ZXN0aW9uIGJlY29tZXMsIGlzIHRoaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGU/IElmIHNvLCB0aGVuIGl0IHdhcnJhbnRzIGRlZXBlciBpbnZlc3RpZ2F0aW9uIGFuZCBmdXp6aW5nLCB3aGljaCBtZWFucyB5ZXMsIHdlIHNob3VsZCBkZWZpbml0ZWx5IGV4cGxvcmUgdGhpcy4gU3l6a2FsbGVyJ3MgbXVsdGktYXJjaGl0ZWN0dXJlIHN1cHBvcnQgaXMgYSBzaWduaWZpY2FudCBmYWN0b3IgaGVyZS4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgZm9yIG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IGNvbmZpZ3MsIHRob3VnaCwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuUmlnaHQsIGBDT05GSUdfS1ZNYCBpcyB0aGUgcHJpbWFyeSBvbmUsIG9mIGNvdXJzZS4gVG8gemVybyBpbiBvbiB0aGUgY3JpdGljYWwgY29kZSBhcmVhcywgSSBuZWVkIHRvIGxvb2sgYXQgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBjb25maWcuIExldCdzIHN0YXJ0IHdpdGggYGdtYXBfY3JlYXRlX3NoYWRvd2AgdG8gcGlucG9pbnQgd2hpY2ggc3BlY2lmaWMgZnVuY3Rpb25zIGFyZSByZWxldmFudCBoZXJlLiBUaGF0IHNob3VsZCBndWlkZSBteSBuZXh0IHN0ZXBzIGluIGFzc2Vzc2luZyBpdHMgZnV6emluZyBwb3RlbnRpYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwNDQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6NDUuMDkzNzc0ODFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA1NjE0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ21hcF9jcmVhdGVfc2hhZG93XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vZ21hcC5jPTEyNzg9c3RhdGljIGludCBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWwoc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBnbWFwICpzZylcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMDAtLyoqXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTMwMTogKiBnbWFwX2NyZWF0ZV9zaGFkb3coKSAtIENyZWF0ZS9maW5kIGEgc2hhZG93IGd1ZXN0IGFkZHJlc3Mgc3BhY2UuXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTMwMi0gKiBAbWM6IFRoZSBjYWNoZSB0byB1c2UgdG8gYWxsb2NhdGUgZGF0IHRhYmxlcy5cXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMTctICovXFxuYXJjaC9zMzkwL2t2bS9nbWFwLmM6MTMxODpzdHJ1Y3QgZ21hcCAqZ21hcF9jcmVhdGVfc2hhZG93KHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqcGFyZW50LFxcbmFyY2gvczM5MC9rdm0vZ21hcC5jLTEzMTktXFx0XFx0XFx0XFx0dW5pb24gYXNjZSBhc2NlLCBpbnQgZWRhdF9sZXZlbClcXG4tLVxcbmFyY2gvczM5MC9rdm0vZ21hcC5oPTEwOD12b2lkIF9nbWFwX2hhbmRsZV92c2llX3Vuc2hhZG93X2V2ZW50KHN0cnVjdCBnbWFwICpwYXJlbnQsIGdmbl90IGdmbik7XFxuYXJjaC9zMzkwL2t2bS9nbWFwLmg6MTA5OnN0cnVjdCBnbWFwICpnbWFwX2NyZWF0ZV9zaGFkb3coc3RydWN0IGt2bV9zMzkwX21tdV9jYWNoZSAqbWMsIHN0cnVjdCBnbWFwICpnbWFwLFxcbmFyY2gvczM5MC9rdm0vZ21hcC5oLTExMC1cXHRcXHRcXHRcXHR1bmlvbiBhc2NlIGFzY2UsIGludCBlZGF0X2xldmVsKTtcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jPTEzMDA9c3RhdGljIHN0cnVjdCBnbWFwICphY3F1aXJlX2dtYXBfc2hhZG93KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTMyOS1hZ2FpbjpcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxMzMwOlxcdGdtYXAgPSBnbWFwX2NyZWF0ZV9zaGFkb3codmNwdS1cXHUwMDNlYXJjaC5tYywgdmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLmdtYXAsIGFzY2UsIGVkYXQpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTEzMzEtXFx0aWYgKElTX0VSUihnbWFwKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6NDUuMTU0MzQzNDg4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyNTM0OTMwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIFN0YWNrOiBgYWNxdWlyZV9nbWFwX3NoYWRvd2AqKlxuXG5SaWdodCwgYGFjcXVpcmVfZ21hcF9zaGFkb3dgIGlzIGZsYWdnZWQgYXMgY29taW5nIGZyb20gYHZzaWUuY2AuIFRoYXQgaW1tZWRpYXRlbHkgc3BhcmtzIG15IGludGVyZXN0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGlzIGNvbnRleHQuIE15IG5leHQgc3RlcCwgbmF0dXJhbGx5LCBpcyB0byB0cmFjZSB0aG9zZSBjYWxscy4gSSB3YW50IHRvIHNlZSAqZXhhY3RseSogd2hlcmUgYW5kIGhvdyBgYWNxdWlyZV9nbWFwX3NoYWRvd2AgaXMgaW52b2tlZC4gV2hhdCBhcmUgdGhlIGNhbGxpbmcgYXJndW1lbnRzPyBXaGF0IGlzIHRoZSBleGVjdXRpb24gZmxvdyBpbW1lZGlhdGVseSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBmdW5jdGlvbiBjYWxsPyBUaGF0IGluZm9ybWF0aW9uIHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gZGV0ZXJtaW5lIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IG9uIHN5c3RlbSBiZWhhdmlvci4gSXQncyB0aW1lIHRvIGRpdmUgaW50byB0aGUgY2FsbCBncmFwaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTIzNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEyOjQ4LjE3OTY5NjY5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5MDM2MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWNxdWlyZV9nbWFwX3NoYWRvd1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL3ZzaWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3ZzaWUuYz0xMjg0PXN0YXRpYyB2b2lkIHJlbGVhc2VfZ21hcF9zaGFkb3coc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS92c2llLmMtMTI5OS1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxMzAwOnN0YXRpYyBzdHJ1Y3QgZ21hcCAqYWNxdWlyZV9nbWFwX3NoYWRvdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSlcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMzAxLXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jPTEzOTY9c3RhdGljIGludCB2c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE0MDItXFx0d2hpbGUgKDEpIHtcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYzoxNDAzOlxcdFxcdHNnID0gYWNxdWlyZV9nbWFwX3NoYWRvdyh2Y3B1LCB2c2llX3BhZ2UpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE0MDQtXFx0XFx0aWYgKElTX0VSUihzZykpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTI6NDguMjM3NjA3Njg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0ODU1NDY3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjo1MTEzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzoxMjo1Ny43MjMxNTgxNjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MzkyMTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZzaWVfcnVuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vdnNpZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vdnNpZS5jPTExMDc9c3RhdGljIGludCB2c2llX2hhbmRsZV9tdnBnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IHZzaWVfcGFnZSAqdnNpZV9wYWdlLCBzdHJ1Y3QgZ21hcCAqc2cpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMTg2LSAqL1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjExODc6c3RhdGljIGludCBkb192c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSwgc3RydWN0IGdtYXAgKnNnKVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTExODgtXFx0X19yZWxlYXNlcyh2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZXNyY3UpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYz0xMzgyPXN0YXRpYyB2b2lkIHVucmVnaXN0ZXJfc2hhZG93X3NjYihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMzk1LSAqL1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjEzOTY6c3RhdGljIGludCB2c2llX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCB2c2llX3BhZ2UgKnZzaWVfcGFnZSlcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xMzk3LXtcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE0MTEtXFx0XFx0XFx0dXBkYXRlX2ludGVydmVudGlvbl9yZXF1ZXN0cyh2c2llX3BhZ2UpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjE0MTI6XFx0XFx0XFx0cmMgPSBkb192c2llX3J1bih2Y3B1LCB2c2llX3BhZ2UsIHNnKTtcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNDEzLVxcdFxcdH1cXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jPTE1NTY9aW50IGt2bV9zMzkwX2hhbmRsZV92c2llKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE1OTgtXFx0cmVnaXN0ZXJfc2hhZG93X3NjYih2Y3B1LCB2c2llX3BhZ2UpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjE1OTk6XFx0cmMgPSB2c2llX3J1bih2Y3B1LCB2c2llX3BhZ2UpO1xcbmFyY2gvczM5MC9rdm0vdnNpZS5jLTE2MDAtXFx0dW5yZWdpc3Rlcl9zaGFkb3dfc2NiKHZjcHUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzoxMjo1Ny43ODE1NTU4OTJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE5Mjc4NTIzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjU3MjcsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEzOjA1Ljk3NDM0Mzk3OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMzNzE4OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfaGFuZGxlX3ZzaWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9zMzkwL2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oPTQ0Mj1pbnQga3ZtX3MzOTBfc2tleV9jaGVja19lbmFibGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuaC00NDQtLyogaW1wbGVtZW50ZWQgaW4gdnNpZS5jICovXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5oOjQ0NTppbnQga3ZtX3MzOTBfaGFuZGxlX3ZzaWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmgtNDQ2LXZvaWQga3ZtX3MzOTBfdnNpZV9raWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYz05NTY9aW50IGt2bV9zMzkwX2hhbmRsZV9iMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ByaXYuYy05NjktXFx0Y2FzZSAweDE0OlxcbmFyY2gvczM5MC9rdm0vcHJpdi5jOjk3MDpcXHRcXHRyZXR1cm4ga3ZtX3MzOTBfaGFuZGxlX3ZzaWUodmNwdSk7XFxuYXJjaC9zMzkwL2t2bS9wcml2LmMtOTcxLVxcdGNhc2UgMHgyMTpcXG4tLVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jPTE0ODM9c3RhdGljIHN0cnVjdCB2c2llX3BhZ2UgKmdldF92c2llX3BhZ2Uoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGFkZHIpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNTU1LVxcbmFyY2gvczM5MC9rdm0vdnNpZS5jOjE1NTY6aW50IGt2bV9zMzkwX2hhbmRsZV92c2llKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3MzOTAva3ZtL3ZzaWUuYy0xNTU3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTM6MDYuMDM3NzIxMzU3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3OTg0NDE0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB2U0lFIEhhbmRsaW5nIGluIEtWTS9zMzkwKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoIGhlcmUgZm9yIHZTSUUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIHMzOTAgYXJjaGl0ZWN0dXJlLiBJIHNlZSB0aGF0IGBrdm1fczM5MF9oYW5kbGVfdnNpZWAgaXMgdGhlIGVudHJ5IHBvaW50LCBjYWxsZWQgYnkgYGt2bV9zMzkwX2hhbmRsZV9iMmAgd2hpY2gsIGluIHR1cm4sIGRlYWxzIHdpdGggdGhlIFNJRSBpbnN0cnVjdGlvbiAoMHhiMjE0KS4gVGhpcyBpcyB0aGUgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGJpdCwgdGhlIHZTSUUgY29tcG9uZW50LlxuXG5Ob3csIG15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgc3ltYm9scyBpbiB0aGlzIGZsb3cuIGBrdm1fczM5MF9oYW5kbGVfdnNpZWAga2lja3MgdGhpbmdzIG9mZiwgaXQgbGVhZHMgdG8gYHZzaWVfcnVuYCwgdGhlbiB0byBgYWNxdWlyZV9nbWFwX3NoYWRvd2AsIGBnbWFwX2NyZWF0ZV9zaGFkb3dgLCBhbmQgZmluYWxseSwgd2UgYXJyaXZlIGF0IGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgLiBJdCdzIGEgY2xlYXIgY2hhaW4gb2YgY2FsbHMgcmVwcmVzZW50aW5nIHRoZSBwcm9jZXNzLlxuXG5XYWl0IGEgc2Vjb25kLi4uIEkgc2VlIHRoYXQgYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyBiZWVuIG1vZGlmaWVkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGltZSB0byB6ZXJvIGluIG9uIHRoYXQgb25lLiBUaGlzIHdob2xlIHNlcXVlbmNlIGlzIHdvcnRoIGludmVzdGlnYXRpbmcsIGxldCdzIGV4cGxvcmUgdGhpcyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIHZTSUUgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg5MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzoxMzoxMC44MzYxNjUzNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzMTM1NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnNpZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTA9a3ZtLXkgKz0ga3ZtLXMzOTAubyBpbnRlcmNlcHQubyBpbnRlcnJ1cHQubyBwcml2Lm8gc2lncC5vXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxMTprdm0teSArPSBkaWFnLm8gZ2FjY2Vzcy5vIGd1ZXN0ZGJnLm8gdnNpZS5vIHB2Lm9cXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEyLWt2bS15ICs9IGRhdC5vIGdtYXAubyBmYXVsdGluLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTM6MTAuODk3NDg1MjA4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODA0MjI0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKktWTSBJbnRlZ3JhdGlvbiDigJMgTGV0J3MgRGlnIERlZXBlcioqXG5cblJpZ2h0LCBzbyBLVk0gaXMgYXV0b21hdGljYWxseSBpbmNsdWRlZCB3aGVuIGBDT05GSUdfS1ZNYCBpcyBlbmFibGVkLiBUaGF0J3MgZ29vZCB0byBrbm93LCBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBCdXQgSSdtIGN1cmlvdXMsIGFyZSB0aGVyZSAqYW55KiBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgbnVhbmNlcyBzcGVjaWZpYyB0byB0aGUgczM5MCBhcmNoaXRlY3R1cmU/IEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuIEkgY2FuJ3QganVzdCBhc3N1bWUgdGhpcyBpcyBhbGwgdGhlcmUgaXMuIFRpbWUgdG8gY2hlY2sgdGhlIHNvdXJjZS4gTGV0IG1lIGdldCByaWdodCB0byBgS2NvbmZpZ2AgaW4gdGhlIGBhcmNoL3MzOTAva3ZtL2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgYW55dGhpbmcgdW5pcXVlIG9yIHMzOTAtc3BlY2lmaWMuIEknbSBleHBlY3RpbmcgdG8gZmluZCBkZXRhaWxzIGFyb3VuZCBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzIHNwZWNpZmljIHRvIHRoaXMgcGxhdGZvcm0uIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTQ4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTM6MTQuMzc3OTEwMTk0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzI2OTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXFx0ZGVmX3RyaXN0YXRlIHlcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEzOjE0LjQzNTE4NzU3M1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODk0MDQ4OTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5hdmlnYXRpbmcgdGhlIEtWTSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqXG5cbk9rYXksIHNvIHRoZSBwcm9tcHQgaXMgcG9pbnRpbmcgbWUgdG93YXJkcyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIHRoZSBtb2RpZmllZCBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYEtWTWAg4oCTIHRoYXQncyB0aGUgYmlnIG9uZSwgdGhlIG1haW4gY29uZmlndXJhdGlvbi4gQnV0IHRoZW4gSSdtIHN0cnVjayBieSB0aGF0IGNhdmVhdDogXCJEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzLlwiIEkgaW1tZWRpYXRlbHkgc3RhcnQgcXVlc3Rpb25pbmcgaWYgYEtWTWAgZmFsbHMgaW50byB0aGF0IFwiZ2VuZXJpY1wiIGNhdGVnb3J5LiBBZnRlciBhbGwsIGl0ICppcyogc3BlY2lmaWMgdG8gS1ZNLCBidXQgaXMgdGhhdCBzcGVjaWZpYyAqZW5vdWdoKj9cblxuVGhlIHByb21wdCdzIHdvcmRpbmcga2VlcHMgZWNob2luZyBpbiBteSBtaW5kLiBJZiBgS1ZNYCBpcywgaW4gZmFjdCwgYWxyZWFkeSBlbmFibGVkLCBhbSBJIGp1c3QgYWRkaW5nIG5vaXNlIGJ5IGluY2x1ZGluZyBpdD8gSXQncyBhIHJpc2suIE9uIHRoZSBvbmUgaGFuZCwgaXQncyBzYWZlciB0byBsaXN0IGl0LCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2xlYXIuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBtYWtlcyBtZSBmZWVsIGxhenkuXG5cblRoZW4sIGEgbmV3IHF1ZXN0aW9uIGVtZXJnZXM6IElzIHRoZXJlIGEgbW9yZSAqc3BlY2lmaWMqIGNvbmZpZ3VyYXRpb24gZm9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgcGFydGljdWxhcmx5IG9uIHRoZSBzMzkwIGFyY2hpdGVjdHVyZT8gSSBuZWVkIHRvIGtub3cuIFRpbWUgdG8gZGl2ZSBpbnRvIGBhcmNoL3MzOTAva3ZtL0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTc4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEzOjE5LjMyOTI0MDM1MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc0NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9zMzkwL2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgS1ZNIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdHNvdXJjZSBcXFwidmlydC9rdm0vS2NvbmZpZ1xcXCJcXG4gICA2OlxcdFxcbiAgIDc6XFx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbiAgIDg6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgIDk6XFx0XFx0cHJvbXB0IFxcXCJLVk1cXFwiXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gZ2V0IHRvIHNlZSBvcHRpb25zIGZvciB1c2luZyB5b3VyIExpbnV4IGhvc3QgdG8gcnVuIG90aGVyXFxuICAxMjpcXHRcXHQgIG9wZXJhdGluZyBzeXN0ZW1zIGluc2lkZSB2aXJ0dWFsIG1hY2hpbmVzIChndWVzdHMpLlxcbiAgMTM6XFx0XFx0ICBUaGlzIG9wdGlvbiBhbG9uZSBkb2VzIG5vdCBhZGQgYW55IGtlcm5lbCBjb2RlLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmQgZGlzYWJsZWQuXFxuICAxNjpcXHRcXG4gIDE3OlxcdGlmIFZJUlRVQUxJWkFUSU9OXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBLVk1cXG4gIDIwOlxcdFxcdGRlZl90cmlzdGF0ZSB5XFxuICAyMTpcXHRcXHRwcm9tcHQgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXFxuICAyMzpcXHRcXHRzZWxlY3QgS1ZNX0FTWU5DX1BGXFxuICAyNDpcXHRcXHRzZWxlY3QgS1ZNX0FTWU5DX1BGX1NZTkNcXG4gIDI1OlxcdFxcdHNlbGVjdCBLVk1fQ09NTU9OXFxuICAyNjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxcbiAgMjc6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAyODpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSU5WQUxJRF9XQUtFVVBTXFxuICAyOTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fTk9fUE9MTFxcbiAgMzA6XFx0XFx0c2VsZWN0IEtWTV9WRklPXFxuICAzMTpcXHRcXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcXG4gIDMyOlxcdFxcdHNlbGVjdCBLVk1fTU1VX0xPQ0tMRVNTX0FHSU5HXFxuICAzMzpcXHRcXHRzZWxlY3QgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxcbiAgMzQ6XFx0XFx0aGVscFxcbiAgMzU6XFx0XFx0ICBTdXBwb3J0IGhvc3RpbmcgcGFyYXZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzIHVzaW5nIHRoZSBTSUVcXG4gIDM2OlxcdFxcdCAgdmlydHVhbGl6YXRpb24gY2FwYWJpbGl0eSBvbiB0aGUgbWFpbmZyYW1lLiBUaGlzIHNob3VsZCB3b3JrXFxuICAzNzpcXHRcXHQgIG9uIGFueSA2NGJpdCBtYWNoaW5lLlxcbiAgMzg6XFx0XFxuICAzOTpcXHRcXHQgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzIHRocm91Z2hcXG4gIDQwOlxcdFxcdCAgYSBjaGFyYWN0ZXIgZGV2aWNlIG5vZGUgbmFtZWQgL2Rldi9rdm0uXFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICA0MzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGt2bS5cXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDY6XFx0XFxuICA0NzpcXHRjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcXG4gIDQ4OlxcdFxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuICA0OTpcXHRcXHRkZXBlbmRzIG9uIEtWTVxcbiAgNTA6XFx0XFx0aGVscFxcbiAgNTE6XFx0XFx0ICBBbGxvdyBDQVBfU1lTX0FETUlOIHVzZXJzIHRvIGNyZWF0ZSBLVk0gdmlydHVhbCBtYWNoaW5lcyB0aGF0IGFyZVxcbiAgNTI6XFx0XFx0ICBjb250cm9sbGVkIGJ5IHVzZXJzcGFjZS5cXG4gIDUzOlxcdFxcbiAgNTQ6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNTU6XFx0XFxuICA1NjpcXHRlbmRpZiAjIFZJUlRVQUxJWkFUSU9OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE3OjEzOjE5LjMyOTM5OTg4MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzcyNDcxNzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGlzIHMzOTAgS1ZNIFBhdGNoKipcblxuT2theSwgc28gdGhlcmUncyBubyBkZWRpY2F0ZWQgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAodlNJRSkgb24gczM5MDsgaXQncyBqdXN0IHBhcnQgb2YgdGhlIHN0YW5kYXJkIEtWTSBzZXR1cC4gVGhlcmVmb3JlLCBcIktWTVwiIGlzIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZyBoZXJlLlxuXG5UaGUgY29yZSBvZiB0aGlzIHBhdGNoIGlzIGEgYnVnIGZpeCBpbiBgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsYC4gVGhpcyBmdW5jdGlvbiBjb21lcyBpbnRvIHBsYXkgd2hlbiB3ZSdyZSBjcmVhdGluZyBhIHNoYWRvdyBnbWFwIGZvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIFRoZSBpc3N1ZSBpcyBhIHNpbXBsZSB0eXBvOiB0aGUgY29kZSB3YXMgaW5jb3JyZWN0bHkgdXNpbmcgYGFzY2UuZHQgKyAxYCBpbnN0ZWFkIG9mIGBhc2NlLnRsICsgMWAuIGBhc2NlLmR0YCByZWZlcnMgdG8gdGhlIGRhdGEgdGFibGUgdHlwZSwgd2hpbGUgYGFzY2UudGxgIGNvcnJlY3RseSBkZW5vdGVzIHRoZSB0YWJsZSBsZW5ndGguIEl0J3MgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSwgYWx0ZXJpbmcgdGhlIGZ1bmRhbWVudGFsIGJlaGF2aW9yIG9mIGhvdyBndWVzdCBtZW1vcnkgaXMgaGFuZGxlZC5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gc29tZSBmb2N1cyBzeW1ib2xzLiBgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsYCBpcyBkZWZpbml0ZWx5IG9uZS4gVGhlbiB3ZSBoYXZlIGBnbWFwX2NyZWF0ZV9zaGFkb3dgLCBgYWNxdWlyZV9nbWFwX3NoYWRvd2AsIGB2c2llX3J1bmAsIGFuZCBga3ZtX3MzOTBfaGFuZGxlX3ZzaWVgLlxuXG5BcmUgdGhlc2UgaG90LXBhdGggZnVuY3Rpb25zPyBga3ZtX3MzOTBfaGFuZGxlX3ZzaWVgIGlzIGNydWNpYWw7IGl0J3MgaW52b2tlZCB3aGVuIHRoZSBndWVzdCBleGVjdXRlcyB0aGUgU0lFIGluc3RydWN0aW9uLCBhY3RpbmcgYXMgdGhlIGVudHJ5IHBvaW50IGZvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIGB2c2llX3J1bmAgYWN0dWFsbHkgcnVucyB0aGUgbmVzdGVkIGd1ZXN0LiBgYWNxdWlyZV9nbWFwX3NoYWRvd2AgZmluZHMgb3IgY3JlYXRlcyBhIHNoYWRvdyBnbWFwLCBhbmQgYGdtYXBfY3JlYXRlX3NoYWRvd2AgZG9lcyB0aGUgY3JlYXRpb24uIGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgIHByb3RlY3RzIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIEFTQ0UuIFRoZXNlIGFyZW4ndCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyBsaWtlIHNjaGVkdWxpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24uIFRoZXkncmUgc3BlY2lmaWNhbGx5IHRpZWQgdG8gczM5MCBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBzbyB0aGV5J3JlIGV4Y2VsbGVudCBmb2N1cyBzeW1ib2xzLlxuXG5MZXQncyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgcGF0Y2ggaXRzZWxmOlxuXG5gYGBjXG4tXHRyYyA9IGt2bV9zMzkwX2dldF9ndWVzdF9wYWdlcyhzZy1cdTAwM2Vrdm0sIGNvbnRleHQuZiwgYXNjZS5yc3RvLCBhc2NlLmR0ICsgMSwgZmFsc2UpO1xuK1x0cmMgPSBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc2ctXHUwMDNla3ZtLCBjb250ZXh0LmYsIGFzY2UucnN0bywgYXNjZS50bCArIDEsIGZhbHNlKTtcbmBgYFxuXG5ZZXAsIGl0J3MgdGhhdCBkaXJlY3QgZnVuY3Rpb25hbCBjb3JyZWN0aW9uLlxuXG5UaGlzIGlzIGEgZGVmaW5pdGVseSBhIGBXb3J0aEZ1enppbmc6IHRydWVgIHNpdHVhdGlvbi4gVGhlIHJlbGV2YW50IGBFbmFibGVDb25maWdzYCBpcyBqdXN0IFwiS1ZNLlwiIEFuZCBteSBmb2N1c2VkIHN5bWJvbHMgYXJlIGBbXCJnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxcIiwgXCJnbWFwX2NyZWF0ZV9zaGFkb3dcIiwgXCJhY3F1aXJlX2dtYXBfc2hhZG93XCIsIFwidnNpZV9ydW5cIiwgXCJrdm1fczM5MF9oYW5kbGVfdnNpZVwiXWAuXG5cbk15IHJlYXNvbmluZyBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIGNvcnJlY3RzIGFuIGlzc3VlIHdpdGhpbiBzMzkwIEtWTSdzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAodlNJRSksIHNwZWNpZmljYWxseSBhIG1pc3Rha2UgaW4gdGhlIEFTQ0UgZmllbGQgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBwYWdlcyB0byByZXRyaWV2ZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWRqdXN0bWVudCB3aXRoaW4gcmVhY2hhYmxlIEtWTSBjb2RlLlxuT2gsIGFzIGFuIGFzaWRlLCB3aGlsZSBga3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzYCBpcyBjZXJ0YWlubHkgcmVsZXZhbnQsIGl04oCZcyBhbHNvIGEgbW9yZSBnZW5lcmljIEtWTSBmdW5jdGlvbiBhbmQgY291bGQgYmUgY2FsbGVkIGZyb20gZWxzZXdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTY2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTM6MzMuMDU0MTIwNDAxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDc1NjA4OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvczM5MC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vZmF1bHRpbi5oPTUzPXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fczM5MF9tdWx0aXBsZV9mYXVsdHNfbmVlZF9yZXRyeShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgc2VxLFxcbi0tXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmgtNjktXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmg6NzA6c3RhdGljIGlubGluZSBpbnQga3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGd1ZXN0X2ZhdWx0ICpndWVzdF9mYXVsdHMsXFxuYXJjaC9zMzkwL2t2bS9mYXVsdGluLmgtNzEtXFx0XFx0XFx0XFx0XFx0ICAgZ2ZuX3Qgc3RhcnQsIGludCBuX3BhZ2VzLCBib29sIHdyaXRlX2F0dGVtcHQpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYz0xMjc4PXN0YXRpYyBpbnQgZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsKHN0cnVjdCBrdm1fczM5MF9tbXVfY2FjaGUgKm1jLCBzdHJ1Y3QgZ21hcCAqc2cpXFxuLS1cXG5hcmNoL3MzOTAva3ZtL2dtYXAuYy0xMjg5LVxcbmFyY2gvczM5MC9rdm0vZ21hcC5jOjEyOTA6XFx0cmMgPSBrdm1fczM5MF9nZXRfZ3Vlc3RfcGFnZXMoc2ctXFx1MDAzZWt2bSwgY29udGV4dC5mLCBhc2NlLnJzdG8sIGFzY2UudGwgKyAxLCBmYWxzZSk7XFxuYXJjaC9zMzkwL2t2bS9nbWFwLmMtMTI5MS1cXHRpZiAocmMgXFx1MDAzZSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxNzoxMzozMy4zMDE2ODY3NzRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODMwMDIzNzYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBGb2N1cyBTeW1ib2xzIGFuZCBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBjb2RlIGFuZCBmaWd1cmluZyBvdXQgdGhlIHJlbGV2YW50IHN5bWJvbHMgYW5kIGNvbmZpZ3VyYXRpb25zLiBJIHNlZSBga3ZtX3MzOTBfZ2V0X2d1ZXN0X3BhZ2VzYCBpcyBhbiBpbmxpbmUgZnVuY3Rpb24gaW4gYGZhdWx0aW4uaGAsIHNvIHRoYXQncyBub3QgZ29pbmcgdG8gYmUgYSBnb29kIGZvY3VzIHBvaW50IGZvciBhbmFseXNpcy4gSXQncyB0b28gc3BlY2lmaWMgYW5kIGVtYmVkZGVkLlxuXG5MZXQncyBsb29rIGF0IHRoZSBhbHRlcm5hdGl2ZXMuIEkndmUgZm91bmQgYGdtYXBfcHJvdGVjdF9hc2NlX3RvcF9sZXZlbGAsIHdoaWNoIGlzIHN0YXRpYywgYW5kIHRoZW4gYGdtYXBfY3JlYXRlX3NoYWRvd2AsIHdoaWNoIHNlZW1zIGV4cG9ydGVkLiBgYWNxdWlyZV9nbWFwX3NoYWRvd2AgYW5kIGB2c2llX3J1bmAgYXJlIHN0YXRpYy4gVGhlbiB0aGVyZSdzIGBrdm1fczM5MF9oYW5kbGVfdnNpZWAsIHdoaWNoIGlzIG5vbi1zdGF0aWMuIFRob3NlIGxhc3QgZml2ZSBzZWVtIGxpa2UgYmV0dGVyIGNob2ljZXMsIHNvIEknbGwgZm9jdXMgb24gdGhlc2U6IGBnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxgLCBgZ21hcF9jcmVhdGVfc2hhZG93YCwgYGFjcXVpcmVfZ21hcF9zaGFkb3dgLCBgdnNpZV9ydW5gLCBhbmQgYGt2bV9zMzkwX2hhbmRsZV92c2llYC5cblxuTm93LCByZWdhcmRpbmcgY29uZmlndXJhdGlvbnMsIHRoZSBwcm9tcHQgYWR2aXNlcyBtZSB0byBiZSBzcGVjaWZpYy4gSXQgc2F5cyB0byBhdm9pZCBnZW5lcmljIGNvbmZpZ3MsIGFuZCB0aGF0IHdlIGhhdmUgdGhlbSBhbHJlYWR5IGVuYWJsZWQuIFRoZSBub3RlIGhlcmUgc2F5cyB0aGF0IGBLVk1gIGlzIGFscmVhZHkgZW5hYmxlZC4gVGhlIHByb21wdCBhbHNvIHN0YXRlczogXCJEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cIiBgS1ZNYCBzZWVtcyB0byBjb3ZlciB0aGUgY29kZSBidXQgaXMgaXQgZ2VuZXJpYz8gSSdtIGdvaW5nIHRvIGluY2x1ZGUgYEtWTWAgc2luY2UgaXQgaXMgc3BlY2lmaWMgdG8gdGhlIHN1YnN5c3RlbSBJJ20gd29ya2luZyBpbi5cblxuSSdtIGNoZWNraW5nIGZvciBvdGhlciBjb25maWdzIHRvby4gYENPTkZJR19LVk1fUzM5MF9VQ09OVFJPTGAgZXhpc3RzLCBidXQgdGhhdCdzIGZvciB1c2VyLWNvbnRyb2xsZWQgVk1zLCB3aGljaCBtaWdodCBub3QgYmUgcmVsZXZhbnQgaGVyZS5cbkFscmlnaHQsIEkgdGhpbmsgSSBoYXZlIGV2ZXJ5dGhpbmcuIEknbSBnb2luZyB0byBzZXQgdGhlIHJlc3VsdHMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg4MiwiT3V0cHV0VG9rZW5zIjoxMzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTc6MTM6NDEuNjAxOTI3NFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2NTA3NDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnbWFwX3Byb3RlY3RfYXNjZV90b3BfbGV2ZWxcIixcbiAgICBcImdtYXBfY3JlYXRlX3NoYWRvd1wiLFxuICAgIFwiYWNxdWlyZV9nbWFwX3NoYWRvd1wiLFxuICAgIFwidnNpZV9ydW5cIixcbiAgICBcImt2bV9zMzkwX2hhbmRsZV92c2llXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gczM5MCBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uICh2U0lFKSB3aGVyZSB0aGUgd3JvbmcgQVNDRSBmaWVsZCB3YXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBwYWdlcyB0byBnZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgS1ZNIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ21hcF9wcm90ZWN0X2FzY2VfdG9wX2xldmVsXCIsXG4gICAgXCJnbWFwX2NyZWF0ZV9zaGFkb3dcIixcbiAgICBcImFjcXVpcmVfZ21hcF9zaGFkb3dcIixcbiAgICBcInZzaWVfcnVuXCIsXG4gICAgXCJrdm1fczM5MF9oYW5kbGVfdnNpZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHMzOTAgS1ZNIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiAodlNJRSkgd2hlcmUgdGhlIHdyb25nIEFTQ0UgZmllbGQgd2FzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgcGFnZXMgdG8gZ2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowxx5b7[1] Phase: Succeeded StartedAt: 2026-06-23 17:13:52 +0000 UTC FinishedAt: 2026-06-23 17:13:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 17:13:52 +0000 UTC FinishedAt: 2026-06-23 17:13:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2] Phase: Succeeded StartedAt: 2026-06-23 17:13:52 +0000 UTC FinishedAt: 2026-06-23 18:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-23 17:13:52 +0000 UTC FinishedAt: 2026-06-23 18:09:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-23 17:13:52 +0000 UTC FinishedAt: 2026-06-23 17:14:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 17:13:52 +0000 UTC FinishedAt: 2026-06-23 17:14:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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-workflowxx5b7/series-workflowxx5b7-convert-artifact-1710749633/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-23 17:14:24 +0000 UTC FinishedAt: 2026-06-23 17:35:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 17:14:24 +0000 UTC FinishedAt: 2026-06-23 17:35:57 +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:*9b0b465a-424a-439e-8b9c-c5a54b81af3b,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-workflowxx5b7/series-workflowxx5b7-convert-artifact-1710749633/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": "08d401f2-63a9-472d-8427-5fa9f5b39941", "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-workflowxx5b7/series-workflowxx5b7-build-action-537206255/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 17:14:24 +0000 UTC FinishedAt: 2026-06-23 17:35:47 +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:*9b0b465a-424a-439e-8b9c-c5a54b81af3b,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-workflowxx5b7/series-workflowxx5b7-convert-artifact-1710749633/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": "08d401f2-63a9-472d-8427-5fa9f5b39941", "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-workflowxx5b7/series-workflowxx5b7-build-action-537206255/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-23 17:35:57 +0000 UTC FinishedAt: 2026-06-23 17:35:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 17:35:57 +0000 UTC FinishedAt: 2026-06-23 17:35:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-23 17:35:57 +0000 UTC FinishedAt: 2026-06-23 17:36:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 17:35:57 +0000 UTC FinishedAt: 2026-06-23 17:36:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-workflowxx5b7/series-workflowxx5b7-convert-artifact-2616900244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-23 17:36:07 +0000 UTC FinishedAt: 2026-06-23 17:38:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 17:36:07 +0000 UTC FinishedAt: 2026-06-23 17:38:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*08d401f2-63a9-472d-8427-5fa9f5b39941,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-workflowxx5b7/series-workflowxx5b7-build-action-537206255/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-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-23 17:38:10 +0000 UTC FinishedAt: 2026-06-23 17:38:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 17:38:10 +0000 UTC FinishedAt: 2026-06-23 17:38:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-23 17:38:10 +0000 UTC FinishedAt: 2026-06-23 18:02:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 17:38:10 +0000 UTC FinishedAt: 2026-06-23 18:02:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9b0b465a-424a-439e-8b9c-c5a54b81af3b,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-workflowxx5b7/series-workflowxx5b7-convert-artifact-2616900244/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": "e494332c-f587-48c3-8f3f-5e14fe25a72b", "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-workflowxx5b7/series-workflowxx5b7-build-action-289612640/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 17:38:10 +0000 UTC FinishedAt: 2026-06-23 17:59:50 +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:*9b0b465a-424a-439e-8b9c-c5a54b81af3b,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-workflowxx5b7/series-workflowxx5b7-convert-artifact-2616900244/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": "e494332c-f587-48c3-8f3f-5e14fe25a72b", "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-workflowxx5b7/series-workflowxx5b7-build-action-289612640/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-23 18:02:35 +0000 UTC FinishedAt: 2026-06-23 18:02:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 18:02:35 +0000 UTC FinishedAt: 2026-06-23 18:02:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-23 18:02:35 +0000 UTC FinishedAt: 2026-06-23 18:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 18:02:35 +0000 UTC FinishedAt: 2026-06-23 18:04:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e494332c-f587-48c3-8f3f-5e14fe25a72b,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-workflowxx5b7/series-workflowxx5b7-build-action-289612640/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-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-23 18:04:36 +0000 UTC FinishedAt: 2026-06-23 18:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 18:04:36 +0000 UTC FinishedAt: 2026-06-23 18:09:39 +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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"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:*08d401f2-63a9-472d-8427-5fa9f5b39941,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e494332c-f587-48c3-8f3f-5e14fe25a72b,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-workflowxx5b7/series-workflowxx5b7-build-action-537206255/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-workflowxx5b7/series-workflowxx5b7-build-action-289612640/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 18:04:36 +0000 UTC FinishedAt: 2026-06-23 18:08:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 18:04:36 +0000 UTC FinishedAt: 2026-06-23 18:05:42 +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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"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-workflowxx5b7/series-workflowxx5b7-convert-artifact-3113506237/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-23 18:04:36 +0000 UTC FinishedAt: 2026-06-23 18:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 18:04:36 +0000 UTC FinishedAt: 2026-06-23 18:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 18:04:37 +0000 UTC FinishedAt: 2026-06-23 18:04:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 18:08:23 +0000 UTC FinishedAt: 2026-06-23 18:09:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxx5b7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["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":["gmap_protect_asce_top_level","gmap_create_shadow","acquire_gmap_shadow","vsie_run","kvm_s390_handle_vsie"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ef057cbf825e03b63f6edf5980f96abf3c53089d","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"c7b90b24-1e78-4575-9389-3f59fa9d482d","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-06-23 18:08:23 +0000 UTC FinishedAt: 2026-06-23 18:09:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*08d401f2-63a9-472d-8427-5fa9f5b39941,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e494332c-f587-48c3-8f3f-5e14fe25a72b,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-workflowxx5b7/series-workflowxx5b7-build-action-537206255/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-workflowxx5b7/series-workflowxx5b7-build-action-289612640/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-workflowxx5b7/series-workflowxx5b7-convert-artifact-3113506237/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,}