Name: series-workflowzknzt Phase: Succeeded StartedAt: 2026-08-17 07:38:21 +0000 UTC FinishedAt: 2026-08-17 08:23:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[0] Phase: Succeeded StartedAt: 2026-08-17 07:38:21 +0000 UTC FinishedAt: 2026-08-17 07:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[0].run-triage Phase: Succeeded StartedAt: 2026-08-17 07:38:21 +0000 UTC FinishedAt: 2026-08-17 07:40:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b5060a4aa33d7d78a8c1837ab08ef0c81ea96650", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTUALIZATION", "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b5060a4aa33d7d78a8c1837ab08ef0c81ea96650", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTUALIZATION", "KVM" ], "series_id": "255ffcd9-dc1b-4803-bbf0-4352e5431e44" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_enable_virtualization_cpu" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDssCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiAoY2xlYXJpbmcgdGhlIEhTVEFUVVNfSFUgYml0IGluIHRoZSBDU1JfSFNUQVRVUyByZWdpc3RlcikgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiBvbiBSSVNDLVYuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaHlwZXJ2aXNvciBDU1JzIGluIFJJU0MtViBLVk0gYnkgY2xlYXJpbmcgdGhlIEhTVEFUVVMuSFUgYml0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEtWTSBleGVjdXRpb24gb24gUklTQy1WIGFuZCBpcyByZWFjaGFibGUgd2hlbiBLVk0gaXMgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBmZTM0OGQxMWVkOTk1MTY2ZGMzOWQwNGQyMWJlNTVjNjNlNDI4NDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwNzozOTozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbmluZGV4IDg1ZTc3MjU4OGZhZDYuLmU4MGE5OWU5M2Q1NjkgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuQEAgLTQ3LDYgJiM0Mzs0Nyw5IEBAIHN0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfaW5pdCh2b2lkKVxuIFx0Y3NyX3dyaXRlKENTUl9IQ09VTlRFUkVOLCAweDAyKTtcbiBcbiBcdGNzcl93cml0ZShDU1JfSFZJUCwgMCk7XG4mIzQzO1xuJiM0MztcdC8qIGNsZWFyIEhTVEFUVVMuSFUgKi9cbiYjNDM7XHRjc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpO1xuIH1cbiBcbiAvKiBDbGVhciBoeXBlcnZpc29yIENTUnMgLSBjYWxsZWQgZHVyaW5nIENQVSBvZmZsaW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgZW50cnkgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OywKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaHlwZXJ2aXNvciBDU1JzIGluIFJJU0MtViBLVk0gYnkgY2xlYXJpbmcgdGhlIEhTVEFUVVMuSFUgYml0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEtWTSBleGVjdXRpb24gb24gUklTQy1WIGFuZCBpcyByZWFjaGFibGUgd2hlbiBLVk0gaXMgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBmZTM0OGQxMWVkOTk1MTY2ZGMzOWQwNGQyMWJlNTVjNjNlNDI4NDEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAwNzozOTozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uYwppbmRleCA4NWU3NzI1ODhmYWQ2Li5lODBhOTllOTNkNTY5IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jCkBAIC00Nyw2ICYjNDM7NDcsOSBAQCBzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2luaXQodm9pZCkKIAljc3Jfd3JpdGUoQ1NSX0hDT1VOVEVSRU4sIDB4MDIpOwogCiAJY3NyX3dyaXRlKENTUl9IVklQLCAwKTsKJiM0MzsKJiM0MzsJLyogY2xlYXIgSFNUQVRVUy5IVSAqLwomIzQzOwljc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpOwogfQogCiAvKiBDbGVhciBoeXBlcnZpc29yIENTUnMgLSBjYWxsZWQgZHVyaW5nIENQVSBvZmZsaW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgZW50cnkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBSSVNDLVYgS1ZNIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBhIHNtYWxsIG9uZSwgaXQgc2VlbXMsIGp1c3QgdHdlYWtpbmcgYGFyY2gvcmlzY3Yva3ZtL21haW4uY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkaW5nIGBjc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpYCB0byBga3ZtX3Jpc2N2X2Nzcl9pbml0KClgLiBUaGlzIGlzIGEgUklTQy1WIEtWTSBjaGFuZ2UsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGZ1enphYmxlPyYjMzQ7IEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgc28gdGhhdCBhbG9uZSBtYWtlcyBpdCBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuIEl0IGNoYW5nZXMgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhpbmdzLCBzbyBpdCBjb3VsZCBpbnRyb2R1Y2Ugc29tZSB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIHVzZWQgaW5jb3JyZWN0bHkuCgpBbHJpZ2h0LCBSSVNDLVYgS1ZNICppcyogdGVzdGFibGUgd2l0aGluIFFFTVUsIHRoYXQgbXVjaCBpcyBjbGVhciwgc28gZ2V0dGluZyB0ZXN0IGNvdmVyYWdlIHNob3VsZG4mIzM5O3QgYmUgYSBwcm9ibGVtLiBXYWl0IGEgc2Vjb25kLCBJIHJlY2FsbCB0aGF0IHN5emthbGxlciAqZG9lcyogZnV6eiBLVk0gb24gUklTQy1WLCB3aGljaCBtYWtlcyB0aGlzIGV2ZW4gbW9yZSBwcm9taXNpbmcuIEJlZm9yZSBJIGRpdmUgaW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBmdW5jdGlvbi4gTGV0JiMzOTtzIGdvIHRocm91Z2ggYGt2bV9yaXNjdl9jc3JfaW5pdGAgYW5kIG1hcCBvdXQgYWxsIG9mIGl0cyBjYWxsZXJzLCB0byBrbm93IHdoZXJlIHRoaXMgY2hhbmdlIHdpbGwgYWZmZWN0IHRoZSBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9jc3JfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tYWluLmM9MzQ9bG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTQwLS8qIEluaXRpYWxpemUgaHlwZXJ2aXNvciBDU1JzIC0gY2FsbGVkIGR1cmluZyBDUFUgb25saW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgcmVzdW1lICovXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6NDE6c3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9pbml0KHZvaWQpXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtNDIte1xuLS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYz03Mj1pbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYy03OS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYzo4MDpcdGt2bV9yaXNjdl9jc3JfaW5pdCgpO1xuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTgxLVx0a3ZtX3Jpc2N2X2FpYV9lbmFibGUoKTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM9OTc9c3RhdGljIGludCBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqc2VsZiwgdW5zaWduZWQgbG9uZyBjbWQsIHZvaWQgKnYpXG4tLVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTEwNy1cdFx0aWYgKF9fdGhpc19jcHVfcmVhZChrdm1fcmlzY3ZfdmlydHVhbGl6YXRpb25fZW5hYmxlZCkpIHtcbmFyY2gvcmlzY3Yva3ZtL21haW4uYzoxMDg6XHRcdFx0a3ZtX3Jpc2N2X2Nzcl9pbml0KCk7XG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMTA5LVx0XHRcdGt2bV9yaXNjdl9haWFfcG1fZXhpdCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MDIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEtWTSBDUFUgVmlydHVhbGl6YXRpb24gRW5hYmxlbWVudCoqCgpSaWdodCwgc28gYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIOKAkyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2hlbiBLVk0gZ2V0cyB0aGUgZ3JlZW4gbGlnaHQgb24gYSBDUFUuIEl0JiMzOTtzIGEgbWlub3IgbW9kaWZpY2F0aW9uIG9uIHRoZSBzdXJmYWNlLCBidXQgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50LiBNeSBmaXJzdCBtb3ZlIHdvdWxkIGJlIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBjb250ZXh0LiBHaXZlbiB0aGUgY2FsbCB0byB0aGF0IGZ1bmN0aW9uLCBpcyBgS1ZNYCB0aGUgc29sZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpbiBwbGF5PyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biBhbmQgbWFrZSBzdXJlIHRoYXQgdGhpcyBpcyB0aGUgb25seSBpbmZsdWVuY2luZyBmYWN0b3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTcKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIGEgS1ZNIGNvbmZpZ3VyYXRpb24sIHRoYXQgbXVjaCBpcyBjbGVhci4gTXkgZm9jdXMgaXMgb24gdGhlIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBzeW1ib2wuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcyB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmNhbGxlZCouIElzIGl0IHB1cmVseSBkdXJpbmcgdGhlIGluaXRpYWwgS1ZNIHNldHVwLCBvciBkb2VzIGl0IGFsc28gZ2V0IGludm9rZWQgZXZlcnkgdGltZSBhIG5ldyB2aXJ0dWFsIG1hY2hpbmUgaXMgc3B1biB1cD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjb250ZXh0IGlzIGNydWNpYWwgZm9yIHRyYWNpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgbG9jYXRpb25zIHdoZXJlIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBpbnZva2VkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdobyYjMzk7cyBjYWxsaW5nIHdoby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL2FybS5jPTIyODg9c3RhdGljIHZvaWQgY3B1X2h5cF91bmluaXQodm9pZCAqZGlzY2FyZClcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yMjk1LVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MjI5NjppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMjI5Ny17XG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MjUzMz1zdGF0aWMgaW50IF9faW5pdCBkb19wa3ZtX2luaXQodTMyIGh5cF92YV9iaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTI1NDYtXHQgKiBUaGUgc3R1YiBoeXBlcmNhbGxzIGFyZSBub3cgZGlzYWJsZWQsIHNvIHNldCBvdXIgbG9jYWwgZmxhZyB0b1xuYXJjaC9hcm02NC9rdm0vYXJtLmM6MjU0NzpcdCAqIHByZXZlbnQgYSBsYXRlciByZS1pbml0IGF0dGVtcHQgaW4ga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpLlxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMjU0OC1cdCAqL1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9Mjg3PWxvbmcga3ZtX2FyY2hfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMjkyLVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzoyOTM6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMjk0LXtcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz0xMjM9aW50IGt2bV9hcmNoX3ZjcHVfc2hvdWxkX2tpY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEyNy1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjEyODppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTI5LXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM9NTY9c3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9jbGVhbnVwKHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTcxLVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jOjcyOmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtNzMte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMzExNj12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMxMjAtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTMxMjE6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbmFyY2gveDg2L2t2bS94ODYuYy0xMzEyMi17XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTE2NTI9dm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpO1xuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjU4LSAqL1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE2NTk6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTY2MC12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTU5ND1zdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01NTk4LVxudmlydC9rdm0va3ZtX21haW4uYzo1NTk5Olx0aWYgKGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUoKSkge1xudmlydC9rdm0va3ZtX21haW4uYy01NjAwLVx0XHRwcl9pbmZvKFwmIzM0O2t2bTogZW5hYmxpbmcgdmlydHVhbGl6YXRpb24gb24gQ1BVJWQgZmFpbGVkXFxuXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyOTMKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gS1ZNIFZpcnR1YWxpemF0aW9uIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGUgcGF0aCBvZiBDUFUgdmlydHVhbGl6YXRpb24gZW5hYmxlbWVudCB3aXRoaW4gS1ZNLiBTcGVjaWZpY2FsbHksIEkgc2VlIHRoYXQgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCBmcm9tIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAuIFRoZSBsYXR0ZXIsIGluIHR1cm4sIGlzIGJlaW5nIHRyaWdnZXJlZCBlaXRoZXIgZHVyaW5nIEtWTSYjMzk7cyBvdmVyYWxsIGluaXRpYWxpemF0aW9uIHBoYXNlLCBvciB3aGVuIGEgbmV3IHZpcnR1YWwgbWFjaGluZSBpcyBicm91Z2h0IHRvIGxpZmUuIFRoYXQgbWFrZXMgc2Vuc2U7IHdlIG5lZWQgdG8gc2V0IHVwIHRoZSBuZWNlc3NhcnkgQ1BVIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdGllcyBhdCB0aGVzZSBrZXkgcG9pbnRzLgoKTm93LCBteSBmb2N1cyBzaGlmdHMgdG8gdW5kZXJzdGFuZGluZyB0aGUgZW50cnkgcG9pbnQsIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAuIEkgbmVlZCB0byBwZWVsIGJhY2sgaXRzIGxheWVycy4gSSB3YW50IHRvIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmRvaW5nKiB0byBwcmVwYXJlIHRoZSBDUFUgZm9yIHZpcnR1YWxpemF0aW9uLCB3aGF0IHNwZWNpZmljIGFyY2hpdGVjdHVyYWwgZmVhdHVyZXMgYXJlIGJlaW5nIGNvbmZpZ3VyZWQsIGFuZCBob3cgaXTigJlzIGhhbmRsaW5nIHRoZSB0cmFuc2l0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIG1hbmlwdWxhdGVkLCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY2hlY2tzLCBhbmQgdGhlIGNvbnRyb2wgZmxvdyB3aXRoaW4uIFVuZGVyc3RhbmRpbmcgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYXQgdGhlIHBvaW50IHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlZXBlciBhcmNoaXRlY3R1cmFsIGxldmVsIG9mIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYz01NTg5PV9fd2VhayB2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU1OTMtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU1OTQ6c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxudmlydC9rdm0va3ZtX21haW4uYy01NTk1LXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MDk9c3RhdGljIGludCBrdm1fb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYxNS1cdCAqL1xudmlydC9rdm0va3ZtX21haW4uYzo1NjE2Olx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MTctfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTY2OD1zdGF0aWMgdm9pZCBrdm1fcmVzdW1lKHZvaWQgKmRhdGEpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01NjcyLVxudmlydC9rdm0va3ZtX21haW4uYzo1NjczOlx0V0FSTl9PTl9PTkNFKGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkpO1xudmlydC9rdm0va3ZtX21haW4uYy01Njc0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEFuYWx5c2lzOiBDUFUgT25saW5lL1Jlc3VtZSBhbmQgQ1NSIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIHRyaWdnZXJlZCBieSBgY3B1IG9ubGluZWAgYW5kIGByZXN1bWVgIGV2ZW50cywgcmlnaHQ/IEFuZCBJIHNlZSB0aGF0IGBrdm1fcmlzY3ZfY3NyX2luaXRgIGdldHMgY2FsbGVkIHZpYSBga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcmAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsICYjMzQ7SXMgdGhpcyBmdXp6LXdvcnRoeT8mIzM0OyBJdCBzZWVtcyB0byBiZSBjbGVhcmluZyBhIENTUiBiaXQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbi4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsLCBubyBkb3VidCwgYnV0IHRoZSBrZXkgaXMgdGhhdCBpdCYjMzk7cyBleGVjdXRlZCAqdW5jb25kaXRpb25hbGx5KiBkdXJpbmcgdGhhdCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBGdXp6aW5nICp0aGlzIHNwZWNpZmljIGZ1bmN0aW9uKiBtaWdodCBub3QgYmUgdGhlIGJlc3QgdXNlIG9mIHJlc291cmNlcyBiZWNhdXNlIGl0JiMzOTtzIGEgb25lLXRpbWUgdGhpbmcuIEJ1dCwgaXQgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIEtWTSwgc28gSSBoYXZlIHRvIGtlZXAgdGhhdCBpbiBtaW5kLgoKTGV0IG1lIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGFmZmVjdGVkIGluIHRoaXMgcGF0Y2guIE5vcGUuIEl0IGxvb2tzIGxpa2UgYGt2bV9yaXNjdl9jc3JfaW5pdGAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gbW9kaWZpZWQgZGlyZWN0bHkuCgpXYWl0LCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGJpZ2dlciBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLCBidXQgSSYjMzk7bSBnb2luZyB0byBhZGQgYSBGb2N1c1N5bWJvbHMgZGVzaWduYXRpb24gdG8gbWFrZSBzdXJlIHRoYXQgSSBoaWdobGlnaHQgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGJlY2F1c2UsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGF0IG1pZ2h0IGJlIG1vcmUgaW1wb3J0YW50LiBIb2xkIG9uLiBJIHNlZSB0aGF0IGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBhICpnZW5lcmljKiBLVk0gZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBpbXBsZW1lbnRlZCBpbiBgYXJjaC9yaXNjdi9rdm0vbWFpbi5jYC4gTGV0IG1lIGRpZyBpbnRvIGBhcmNoL3Jpc2N2L2t2bS9tYWluLmNgIGFuZCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBpbiB0aGF0IGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vbWFpbi5jPTU2PXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfY2xlYW51cCh2b2lkKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYy03MS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYzo3MjppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTczLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcwNgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJJU0MtViBLVk0gUGF0Y2gqKgoKT2theSwgSSYjMzk7dmUgY29uZmlybWVkIGl0LiBUaGUgY2hhbmdlIGlzIHByZXNlbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaHlwZXJ2aXNvciBDU1JzIHdpdGhpbiB0aGUgUklTQy1WIEtWTSBjb250ZXh0LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGludm9sdmVzIGNsZWFyaW5nIHRoZSBgSFNUQVRVUy5IVWAgYml0LiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBhbHRlcmF0aW9uIHdpdGggY2xlYXIgaW1wbGljYXRpb25zIGZvciBLVk0gZXhlY3V0aW9uIG9uIFJJU0MtViBzeXN0ZW1zLgoKTGV0JiMzOTtzIHF1aWNrbHkgZW5zdXJlIHRoaXMgaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBvcHRpb24gYWZmZWN0ZWQuIFdoaWxlIGBDT05GSUdfS1ZNYCBpcyBjbGVhcmx5IHRoZSBwcmltYXJ5IG9uZSBpbmZsdWVuY2luZyB0aGlzIGJlaGF2aW9yLCBpdCYjMzk7cyB3aXNlIHRvIHJ1bGUgb3V0IGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIG9yIHNlY29uZGFyeSBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGltcGFjdGVkLiBKdXN0IGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIGF0IHBsYXkgaGVyZS4gQWxyaWdodCwgZG91YmxlLWNoZWNrIGNvbXBsZXRlOyBsb29rcyBsaWtlIGBDT05GSUdfS1ZNYCBpcyB0aGUgcHJpbWFyeSBhbmQgb25seSByZWxldmFudCBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEwOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IEltbWVkaWF0ZSBBc3Nlc3NtZW50KioKCkFscmlnaHQsIHRoZSBjcnV4IG9mIHRoaXMgc2l0dWF0aW9uLCB3aGF0ZXZlciBpdCBpcywgaGluZ2VzIGVudGlyZWx5IG9uIHRoZSBjb25jZXB0IG9mIGBWSVJUVUFMSVpBVElPTmAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCAqa2luZCogb2YgdmlydHVhbGl6YXRpb24gYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IElzIGl0IGF0IHRoZSBoYXJkd2FyZSBsZXZlbCAoaHlwZXJ2aXNvcnMsIGJhcmUtbWV0YWwpLCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBsZXZlbCAoY29udGFpbmVycywgcHJvY2Vzc2VzKSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkgKG5ldHdvcmsgdmlydHVhbGl6YXRpb24sIHN0b3JhZ2UgdmlydHVhbGl6YXRpb24pPyBUaGUgc3BlY2lmaWMgY29udGV4dCBpcyBwYXJhbW91bnQuIFVuZGVyc3RhbmRpbmcgdGhlICp0eXBlKiBvZiB2aXJ0dWFsaXphdGlvbiB3aWxsIGRyaXZlIHRoZSByZXN0IG9mIG15IGFuYWx5c2lzLiBUaGUgaW1wbGljYXRpb25zIGFyZSB2YXN0IGFuZCB2YXJ5IHdpZGVseSBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgdHlwZS4gSSBuZWVkIHRvIGtub3cgdGhlIHBsYXlpbmcgZmllbGQgYmVmb3JlIEkgZXZlbiBjb25zaWRlciB3aGF0IG15IG5leHQgdGhvdWdodCBtaWdodCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZJUlRVQUxJWkFUSU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTY9c291cmNlIFwmIzM0O3ZpcnQva3ZtL0tjb25maWdcJiMzNDtcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctNy1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6ODptZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTktXHRib29sIFwmIzM0O1ZpcnR1YWxpemF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MTIKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVmlydHVhbGl6YXRpb24sIEtWTSwgYW5kIHRoZSBOZXh0IFN0ZXAqKgoKT2theSwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYFZJUlRVQUxJWkFUSU9OYCBoZXJlLCBhbmQgc3BlY2lmaWNhbGx5LCBgS1ZNYC4gR290IGl0LiBUaGF0IGltbWVkaWF0ZWx5IGZvY3VzZXMgbXkgYXR0ZW50aW9uIG9uIHRoZSBoeXBlcnZpc29yIGFuZCB0aGUgdW5kZXJseWluZyB0ZWNobm9sb2d5LiBOb3csIHdoZXJlIGRvIHdlIGdvIGZyb20gdGhlcmU/IFdoYXQmIzM5O3MgdGhlIHByYWN0aWNhbCBhcHBsaWNhdGlvbiBvciBuZXh0IGxvZ2ljYWwgc3RlcD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgZGVzaXJlZCBvdXRjb21lIGlzIGluIHRoaXMgY29udGV4dC4gSXQgZmVlbHMgbGlrZSB3ZSBhcmUgb24gb3VyIHdheSB0byBgc2V0LXJlc3VsdHNgLiBMZXQmIzM5O3MgYXNzdW1lIHRoZXJlIGFyZSBtdWx0aXBsZSBkaWZmZXJlbnQgcmVzdWx0cywgZGVwZW5kaW5nIG9uIHRoZSB2aXJ0dWFsaXphdGlvbiBjb25maWd1cmF0aW9uLiBXZSBuZWVkIHRvIHdvcmsgdG93YXJkIGRlZmluaW5nIHdoYXQgb3VyIHBlcmZvcm1hbmNlIG1ldHJpY3Mgc2hvdWxkIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OywKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaHlwZXJ2aXNvciBDU1JzIGluIFJJU0MtViBLVk0gYnkgY2xlYXJpbmcgdGhlIEhTVEFUVVMuSFUgYml0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEtWTSBleGVjdXRpb24gb24gUklTQy1WIGFuZCBpcyByZWFjaGFibGUgd2hlbiBLVk0gaXMgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OywKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaHlwZXJ2aXNvciBDU1JzIGluIFJJU0MtViBLVk0gYnkgY2xlYXJpbmcgdGhlIEhTVEFUVVMuSFUgYml0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEtWTSBleGVjdXRpb24gb24gUklTQy1WIGFuZCBpcyByZWFjaGFibGUgd2hlbiBLVk0gaXMgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiAoY2xlYXJpbmcgdGhlIEhTVEFUVVNfSFUgYml0IGluIHRoZSBDU1JfSFNUQVRVUyByZWdpc3RlcikgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiBvbiBSSVNDLVYuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwZmUzNDhkMTFlZDk5NTE2NmRjMzlkMDRkMjFiZTU1YzYzZTQyODQxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMDc6Mzk6MzUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKaW5kZXggODVlNzcyNTg4ZmFkNi4uZTgwYTk5ZTkzZDU2OSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uYwpAQCAtNDcsNiAmIzQzOzQ3LDkgQEAgc3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9pbml0KHZvaWQpCiAJY3NyX3dyaXRlKENTUl9IQ09VTlRFUkVOLCAweDAyKTsKIAogCWNzcl93cml0ZShDU1JfSFZJUCwgMCk7CiYjNDM7CiYjNDM7CS8qIGNsZWFyIEhTVEFUVVMuSFUgKi8KJiM0MzsJY3NyX2NsZWFyKENTUl9IU1RBVFVTLCBIU1RBVFVTX0hVKTsKIH0KIAogLyogQ2xlYXIgaHlwZXJ2aXNvciBDU1JzIC0gY2FsbGVkIGR1cmluZyBDUFUgb2ZmbGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIGVudHJ5ICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTg4CgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDI2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIG1vZGlmaWNhdGlvbiB0byBgYXJjaC9yaXNjdi9rdm0vbWFpbi5jYC4gU3BlY2lmaWNhbGx5LCBpdCBhZGRzIGBjc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpO2Agd2l0aGluIHRoZSBga3ZtX3Jpc2N2X2Nzcl9pbml0KHZvaWQpYCBmdW5jdGlvbi4gVGhpcyBpcyBjbGVhcmx5IGEgaGFyZHdhcmUgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb24gc3RlcC4gSXQmIzM5O3MgdGFyZ2V0aW5nIHRoZSBgSFNUQVRVU19IVWAgYml0IHdpdGhpbiB0aGUgYENTUl9IU1RBVFVTYCByZWdpc3RlciwgY2xlYXJpbmcgaXQuCgpNeSBpbW1lZGlhdGUgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgKm5vdCogc29tZXRoaW5nIHRoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBzaG91bGQgYmUgY29uY2VybmVkIGFib3V0LiBUaGlzIGlzbiYjMzk7dCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBvbiB0aGUgaGVhcCBvciBzdGFjay4gSXQmIzM5O3Mgbm90IGFib3V0IGNvcHlpbmcgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXIgc3BhY2UuIEl0JiMzOTtzIGEgZGlyZWN0IG1hbmlwdWxhdGlvbiBvZiBhIGhhcmR3YXJlIGNvbnRyb2wgcmVnaXN0ZXIuIEl0JiMzOTtzIHNpbXBseSBjb25maWd1cmluZyB0aGUgaGFyZHdhcmUuIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzbiYjMzk7dCBldmVuIHJlYWxseSBhcHBsaWNhYmxlIGhlcmUsIGJ1dCBLTVNBTiBpcyBkZWZpbml0ZWx5IG5vdC4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IHVuZGVyc3RhbmRpbmcuIExldCYjMzk7cyBzZWUuLi4gYGt2bV9yaXNjdl9jc3JfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBDUFUgaW5pdGlhbGl6YXRpb24gd2l0aGluIEtWTSwgcmlnaHQ/IFllcCwgdGhhdCBjaGVja3Mgb3V0LiBJdCYjMzk7cyB3cml0aW5nIHRvIENTUnMsIHdoaWNoIGNvbmZpcm1zIG15IGluaXRpYWwgdGhvdWdodC4gTm8gbWVtb3J5IGFsbG9jYXRpb24sIG5vIHVzZXItc3BhY2UgZGF0YSB0cmFuc2Zlci4uLiBqdXN0IGhhcmR3YXJlIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24uCgpUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLiBNeSByZWFzb25pbmcgaXMgc29saWQ6IHRoZSBwYXRjaCBzb2xlbHkgZGVhbHMgd2l0aCBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiAoc3BlY2lmaWNhbGx5LCBjbGVhcmluZyBhIGJpdCBpbiBhIENTUikgZHVyaW5nIFJJU0MtViBLVk0gaW5pdGlhbGl6YXRpb24uIEl0IGludHJvZHVjZXMgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYW5kIG5vIGNvcGllcyB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgbGVhZCB0byB0aGUgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGFueSBraW5kIG9mIGluZm9ybWF0aW9uIGxlYWsuIEtNU0FOIGlzIG5vdCByZWxldmFudCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiAoY2xlYXJpbmcgdGhlIEhTVEFUVVNfSFUgYml0IGluIHRoZSBDU1JfSFNUQVRVUyByZWdpc3RlcikgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiBvbiBSSVNDLVYuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgaGFyZHdhcmUgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb24gKGNsZWFyaW5nIHRoZSBIU1RBVFVTX0hVIGJpdCBpbiB0aGUgQ1NSX0hTVEFUVVMgcmVnaXN0ZXIpIGR1cmluZyBLVk0gaW5pdGlhbGl6YXRpb24gb24gUklTQy1WLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmVzLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6Mzk6MzcuMzk5NTIxMDIzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ5NDU1ODM1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVFVBTElaQVRJT05cIixcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGhhcmR3YXJlIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIChjbGVhcmluZyB0aGUgSFNUQVRVU19IVSBiaXQgaW4gdGhlIENTUl9IU1RBVFVTIHJlZ2lzdGVyKSBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uIG9uIFJJU0MtVi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGh5cGVydmlzb3IgQ1NScyBpbiBSSVNDLVYgS1ZNIGJ5IGNsZWFyaW5nIHRoZSBIU1RBVFVTLkhVIGJpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBLVk0gZXhlY3V0aW9uIG9uIFJJU0MtViBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gS1ZNIGlzIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjM5OjM3LjM5OTUyODAwM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzNzIwMzMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBmZTM0OGQxMWVkOTk1MTY2ZGMzOWQwNGQyMWJlNTVjNjNlNDI4NDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDc6Mzk6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXFxuaW5kZXggODVlNzcyNTg4ZmFkNi4uZTgwYTk5ZTkzZDU2OSAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcXG5AQCAtNDcsNiArNDcsOSBAQCBzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2luaXQodm9pZClcXG4gXFx0Y3NyX3dyaXRlKENTUl9IQ09VTlRFUkVOLCAweDAyKTtcXG4gXFxuIFxcdGNzcl93cml0ZShDU1JfSFZJUCwgMCk7XFxuK1xcbitcXHQvKiBjbGVhciBIU1RBVFVTLkhVICovXFxuK1xcdGNzcl9jbGVhcihDU1JfSFNUQVRVUywgSFNUQVRVU19IVSk7XFxuIH1cXG4gXFxuIC8qIENsZWFyIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9mZmxpbmUgYW5kIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTozOC43Mzc2NTEzODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNjgwNjY2NDUwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiLFxuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBoeXBlcnZpc29yIENTUnMgaW4gUklTQy1WIEtWTSBieSBjbGVhcmluZyB0aGUgSFNUQVRVUy5IVSBiaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgS1ZNIGV4ZWN1dGlvbiBvbiBSSVNDLVYgYW5kIGlzIHJlYWNoYWJsZSB3aGVuIEtWTSBpcyBlbmFibGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZmUzNDhkMTFlZDk5NTE2NmRjMzlkMDRkMjFiZTU1YzYzZTQyODQxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDc6Mzk6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbmluZGV4IDg1ZTc3MjU4OGZhZDYuLmU4MGE5OWU5M2Q1NjkgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuQEAgLTQ3LDYgKzQ3LDkgQEAgc3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9pbml0KHZvaWQpXG4gXHRjc3Jfd3JpdGUoQ1NSX0hDT1VOVEVSRU4sIDB4MDIpO1xuIFxuIFx0Y3NyX3dyaXRlKENTUl9IVklQLCAwKTtcbitcbitcdC8qIGNsZWFyIEhTVEFUVVMuSFUgKi9cbitcdGNzcl9jbGVhcihDU1JfSFNUQVRVUywgSFNUQVRVU19IVSk7XG4gfVxuIFxuIC8qIENsZWFyIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9mZmxpbmUgYW5kIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6Mzk6MzguNzM3NjUzMDI1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg1MzQxOTA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBSSVNDLVYgS1ZNIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgYSBzbWFsbCBvbmUsIGl0IHNlZW1zLCBqdXN0IHR3ZWFraW5nIGBhcmNoL3Jpc2N2L2t2bS9tYWluLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGBjc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpYCB0byBga3ZtX3Jpc2N2X2Nzcl9pbml0KClgLiBUaGlzIGlzIGEgUklTQy1WIEtWTSBjaGFuZ2UsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJJcyB0aGlzIGZ1enphYmxlP1wiIEl0J3MgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uLCBzbyB0aGF0IGFsb25lIG1ha2VzIGl0IGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gSXQgY2hhbmdlcyB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGluZ3MsIHNvIGl0IGNvdWxkIGludHJvZHVjZSBzb21lIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaWYgdXNlZCBpbmNvcnJlY3RseS5cblxuQWxyaWdodCwgUklTQy1WIEtWTSAqaXMqIHRlc3RhYmxlIHdpdGhpbiBRRU1VLCB0aGF0IG11Y2ggaXMgY2xlYXIsIHNvIGdldHRpbmcgdGVzdCBjb3ZlcmFnZSBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtLiBXYWl0IGEgc2Vjb25kLCBJIHJlY2FsbCB0aGF0IHN5emthbGxlciAqZG9lcyogZnV6eiBLVk0gb24gUklTQy1WLCB3aGljaCBtYWtlcyB0aGlzIGV2ZW4gbW9yZSBwcm9taXNpbmcuIEJlZm9yZSBJIGRpdmUgaW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBmdW5jdGlvbi4gTGV0J3MgZ28gdGhyb3VnaCBga3ZtX3Jpc2N2X2Nzcl9pbml0YCBhbmQgbWFwIG91dCBhbGwgb2YgaXRzIGNhbGxlcnMsIHRvIGtub3cgd2hlcmUgdGhpcyBjaGFuZ2Ugd2lsbCBhZmZlY3QgdGhlIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTo0My41OTEwNzQ4OTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1OTk0NDY0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfY3NyX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vbWFpbi5jPTM0PWxvbmcga3ZtX2FyY2hfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTQwLS8qIEluaXRpYWxpemUgaHlwZXJ2aXNvciBDU1JzIC0gY2FsbGVkIGR1cmluZyBDUFUgb25saW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgcmVzdW1lICovXFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jOjQxOnN0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfaW5pdCh2b2lkKVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy00Mi17XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM9NzI9aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy03OS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6ODA6XFx0a3ZtX3Jpc2N2X2Nzcl9pbml0KCk7XFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTgxLVxcdGt2bV9yaXNjdl9haWFfZW5hYmxlKCk7XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM9OTc9c3RhdGljIGludCBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqc2VsZiwgdW5zaWduZWQgbG9uZyBjbWQsIHZvaWQgKnYpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMTA3LVxcdFxcdGlmIChfX3RoaXNfY3B1X3JlYWQoa3ZtX3Jpc2N2X3ZpcnR1YWxpemF0aW9uX2VuYWJsZWQpKSB7XFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jOjEwODpcXHRcXHRcXHRrdm1fcmlzY3ZfY3NyX2luaXQoKTtcXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMTA5LVxcdFxcdFxcdGt2bV9yaXNjdl9haWFfcG1fZXhpdCgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTo0NS4xNTEwMjM3OTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTgwNzU5MjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEtWTSBDUFUgVmlydHVhbGl6YXRpb24gRW5hYmxlbWVudCoqXG5cblJpZ2h0LCBzbyBga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAg4oCTIHRoYXQncyB0aGUgZnVuY3Rpb24gY2FsbGVkIHdoZW4gS1ZNIGdldHMgdGhlIGdyZWVuIGxpZ2h0IG9uIGEgQ1BVLiBJdCdzIGEgbWlub3IgbW9kaWZpY2F0aW9uIG9uIHRoZSBzdXJmYWNlLCBidXQgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50LiBNeSBmaXJzdCBtb3ZlIHdvdWxkIGJlIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBjb250ZXh0LiBHaXZlbiB0aGUgY2FsbCB0byB0aGF0IGZ1bmN0aW9uLCBpcyBgS1ZNYCB0aGUgc29sZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpbiBwbGF5PyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IGluZmx1ZW5jaW5nIGZhY3Rvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjM5OjQ4LjMzMTc4NjA3OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTk0MzgwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTo0OC4zODE3MzI5MzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI1NDk4NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0gSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGVhbGluZyB3aXRoIGEgS1ZNIGNvbmZpZ3VyYXRpb24sIHRoYXQgbXVjaCBpcyBjbGVhci4gTXkgZm9jdXMgaXMgb24gdGhlIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBzeW1ib2wuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcyB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmNhbGxlZCouIElzIGl0IHB1cmVseSBkdXJpbmcgdGhlIGluaXRpYWwgS1ZNIHNldHVwLCBvciBkb2VzIGl0IGFsc28gZ2V0IGludm9rZWQgZXZlcnkgdGltZSBhIG5ldyB2aXJ0dWFsIG1hY2hpbmUgaXMgc3B1biB1cD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjb250ZXh0IGlzIGNydWNpYWwgZm9yIHRyYWNpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgbG9jYXRpb25zIHdoZXJlIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBpbnZva2VkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdobydzIGNhbGxpbmcgd2hvLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6Mzk6NTIuNDA3MjMzOTc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTM5OTc3MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9hcm0uYz0yMjg4PXN0YXRpYyB2b2lkIGNwdV9oeXBfdW5pbml0KHZvaWQgKmRpc2NhcmQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yMjk1LVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjIyOTY6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yMjk3LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTI1MzM9c3RhdGljIGludCBfX2luaXQgZG9fcGt2bV9pbml0KHUzMiBoeXBfdmFfYml0cylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTI1NDYtXFx0ICogVGhlIHN0dWIgaHlwZXJjYWxscyBhcmUgbm93IGRpc2FibGVkLCBzbyBzZXQgb3VyIGxvY2FsIGZsYWcgdG9cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoyNTQ3OlxcdCAqIHByZXZlbnQgYSBsYXRlciByZS1pbml0IGF0dGVtcHQgaW4ga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpLlxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTI1NDgtXFx0ICovXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jPTI4Nz1sb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMjkyLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM6MjkzOmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0yOTQte1xcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmM9MTIzPWludCBrdm1fYXJjaF92Y3B1X3Nob3VsZF9raWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEyNy1cXG5hcmNoL21pcHMva3ZtL21pcHMuYzoxMjg6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMjkte1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jPTU2PXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfY2xlYW51cCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTcxLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYzo3MjppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy03My17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTMxMTY9dm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMxMjAtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzMTIxOmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzMTIyLXtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNjUyPXZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKTtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjU4LSAqL1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNjU5OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpO1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjYwLXZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU1OTQ9c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NTk4LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTU5OTpcXHRpZiAoa3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpKSB7XFxudmlydC9rdm0va3ZtX21haW4uYy01NjAwLVxcdFxcdHByX2luZm8oXFxcImt2bTogZW5hYmxpbmcgdmlydHVhbGl6YXRpb24gb24gQ1BVJWQgZmFpbGVkXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTo1NC4wMDEyMzY3NzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTMwNzI0MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gS1ZNIFZpcnR1YWxpemF0aW9uIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhlIHBhdGggb2YgQ1BVIHZpcnR1YWxpemF0aW9uIGVuYWJsZW1lbnQgd2l0aGluIEtWTS4gU3BlY2lmaWNhbGx5LCBJIHNlZSB0aGF0IGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgYW5kIGl0J3MgYmVpbmcgaW52b2tlZCBmcm9tIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAuIFRoZSBsYXR0ZXIsIGluIHR1cm4sIGlzIGJlaW5nIHRyaWdnZXJlZCBlaXRoZXIgZHVyaW5nIEtWTSdzIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gcGhhc2UsIG9yIHdoZW4gYSBuZXcgdmlydHVhbCBtYWNoaW5lIGlzIGJyb3VnaHQgdG8gbGlmZS4gVGhhdCBtYWtlcyBzZW5zZTsgd2UgbmVlZCB0byBzZXQgdXAgdGhlIG5lY2Vzc2FyeSBDUFUgdmlydHVhbGl6YXRpb24gY2FwYWJpbGl0aWVzIGF0IHRoZXNlIGtleSBwb2ludHMuXG5cbk5vdywgbXkgZm9jdXMgc2hpZnRzIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGVudHJ5IHBvaW50LCBga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLiBJIG5lZWQgdG8gcGVlbCBiYWNrIGl0cyBsYXllcnMuIEkgd2FudCB0byBzZWUgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICpkb2luZyogdG8gcHJlcGFyZSB0aGUgQ1BVIGZvciB2aXJ0dWFsaXphdGlvbiwgd2hhdCBzcGVjaWZpYyBhcmNoaXRlY3R1cmFsIGZlYXR1cmVzIGFyZSBiZWluZyBjb25maWd1cmVkLCBhbmQgaG93IGl04oCZcyBoYW5kbGluZyB0aGUgdHJhbnNpdGlvbi4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIG1hbmlwdWxhdGVkLCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY2hlY2tzLCBhbmQgdGhlIGNvbnRyb2wgZmxvdyB3aXRoaW4uIFVuZGVyc3RhbmRpbmcgd2hhdCdzIGhhcHBlbmluZyBhdCB0aGUgcG9pbnQgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGVlcGVyIGFyY2hpdGVjdHVyYWwgbGV2ZWwgb2YgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjkzLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6Mzk6NTcuNTMxOTYzMTU3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU0MTM0NjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9NTU4OT1fX3dlYWsgdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU1OTMtXFxudmlydC9rdm0va3ZtX21haW4uYzo1NTk0OnN0YXRpYyBpbnQga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU1OTUte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01NjA5PXN0YXRpYyBpbnQga3ZtX29ubGluZV9jcHUodW5zaWduZWQgaW50IGNwdSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYxNS1cXHQgKi9cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU2MTY6XFx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCk7XFxudmlydC9rdm0va3ZtX21haW4uYy01NjE3LX1cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NTY2OD1zdGF0aWMgdm9pZCBrdm1fcmVzdW1lKHZvaWQgKmRhdGEpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2NzItXFxudmlydC9rdm0va3ZtX21haW4uYzo1NjczOlxcdFdBUk5fT05fT05DRShrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2NzQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTo1OC45ODYxMDUxODlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY5Nzc4OTY4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEFuYWx5c2lzOiBDUFUgT25saW5lL1Jlc3VtZSBhbmQgQ1NSIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCdzIHRyaWdnZXJlZCBieSBgY3B1IG9ubGluZWAgYW5kIGByZXN1bWVgIGV2ZW50cywgcmlnaHQ/IEFuZCBJIHNlZSB0aGF0IGBrdm1fcmlzY3ZfY3NyX2luaXRgIGdldHMgY2FsbGVkIHZpYSBga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcmAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIFwiSXMgdGhpcyBmdXp6LXdvcnRoeT9cIiBJdCBzZWVtcyB0byBiZSBjbGVhcmluZyBhIENTUiBiaXQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbi4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsLCBubyBkb3VidCwgYnV0IHRoZSBrZXkgaXMgdGhhdCBpdCdzIGV4ZWN1dGVkICp1bmNvbmRpdGlvbmFsbHkqIGR1cmluZyB0aGF0IGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEZ1enppbmcgKnRoaXMgc3BlY2lmaWMgZnVuY3Rpb24qIG1pZ2h0IG5vdCBiZSB0aGUgYmVzdCB1c2Ugb2YgcmVzb3VyY2VzIGJlY2F1c2UgaXQncyBhIG9uZS10aW1lIHRoaW5nLiBCdXQsIGl0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBLVk0sIHNvIEkgaGF2ZSB0byBrZWVwIHRoYXQgaW4gbWluZC5cblxuTGV0IG1lIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGFmZmVjdGVkIGluIHRoaXMgcGF0Y2guIE5vcGUuIEl0IGxvb2tzIGxpa2UgYGt2bV9yaXNjdl9jc3JfaW5pdGAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gbW9kaWZpZWQgZGlyZWN0bHkuXG5cbldhaXQsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgYmlnZ2VyIHBpY3R1cmUuIEknbSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYCwgYnV0IEknbSBnb2luZyB0byBhZGQgYSBGb2N1c1N5bWJvbHMgZGVzaWduYXRpb24gdG8gbWFrZSBzdXJlIHRoYXQgSSBoaWdobGlnaHQgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGJlY2F1c2UsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGF0IG1pZ2h0IGJlIG1vcmUgaW1wb3J0YW50LiBIb2xkIG9uLiBJIHNlZSB0aGF0IGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBhICpnZW5lcmljKiBLVk0gZnVuY3Rpb24sIGJ1dCBpdCdzIGltcGxlbWVudGVkIGluIGBhcmNoL3Jpc2N2L2t2bS9tYWluLmNgLiBMZXQgbWUgZGlnIGludG8gYGFyY2gvcmlzY3Yva3ZtL21haW4uY2AgYW5kIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIGluIHRoYXQgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzo0MDowNC42ODM4OTc0ODZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMTU0Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL21haW4uYz01Nj1zdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2NsZWFudXAodm9pZClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy03MS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6NzI6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtNzMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzo0MDowNC43MjcwNTcyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE1NTY3NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJJU0MtViBLVk0gUGF0Y2gqKlxuXG5Pa2F5LCBJJ3ZlIGNvbmZpcm1lZCBpdC4gVGhlIGNoYW5nZSBpcyBwcmVzZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGh5cGVydmlzb3IgQ1NScyB3aXRoaW4gdGhlIFJJU0MtViBLVk0gY29udGV4dC4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpbnZvbHZlcyBjbGVhcmluZyB0aGUgYEhTVEFUVVMuSFVgIGJpdC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBhbHRlcmF0aW9uIHdpdGggY2xlYXIgaW1wbGljYXRpb25zIGZvciBLVk0gZXhlY3V0aW9uIG9uIFJJU0MtViBzeXN0ZW1zLlxuXG5MZXQncyBxdWlja2x5IGVuc3VyZSB0aGlzIGlzIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFmZmVjdGVkLiBXaGlsZSBgQ09ORklHX0tWTWAgaXMgY2xlYXJseSB0aGUgcHJpbWFyeSBvbmUgaW5mbHVlbmNpbmcgdGhpcyBiZWhhdmlvciwgaXQncyB3aXNlIHRvIHJ1bGUgb3V0IGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIG9yIHNlY29uZGFyeSBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGltcGFjdGVkLiBKdXN0IGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIGF0IHBsYXkgaGVyZS4gQWxyaWdodCwgZG91YmxlLWNoZWNrIGNvbXBsZXRlOyBsb29rcyBsaWtlIGBDT05GSUdfS1ZNYCBpcyB0aGUgcHJpbWFyeSBhbmQgb25seSByZWxldmFudCBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MDYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzo0MDowOC4xNDI2MjgyMTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDQzMzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjQwOjA4LjE4NjY4MjUyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzEzMjk2MDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCB0aGUgY3J1eCBvZiB0aGlzIHNpdHVhdGlvbiwgd2hhdGV2ZXIgaXQgaXMsIGhpbmdlcyBlbnRpcmVseSBvbiB0aGUgY29uY2VwdCBvZiBgVklSVFVBTElaQVRJT05gLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCAqa2luZCogb2YgdmlydHVhbGl6YXRpb24gYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IElzIGl0IGF0IHRoZSBoYXJkd2FyZSBsZXZlbCAoaHlwZXJ2aXNvcnMsIGJhcmUtbWV0YWwpLCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBsZXZlbCAoY29udGFpbmVycywgcHJvY2Vzc2VzKSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkgKG5ldHdvcmsgdmlydHVhbGl6YXRpb24sIHN0b3JhZ2UgdmlydHVhbGl6YXRpb24pPyBUaGUgc3BlY2lmaWMgY29udGV4dCBpcyBwYXJhbW91bnQuIFVuZGVyc3RhbmRpbmcgdGhlICp0eXBlKiBvZiB2aXJ0dWFsaXphdGlvbiB3aWxsIGRyaXZlIHRoZSByZXN0IG9mIG15IGFuYWx5c2lzLiBUaGUgaW1wbGljYXRpb25zIGFyZSB2YXN0IGFuZCB2YXJ5IHdpZGVseSBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgdHlwZS4gSSBuZWVkIHRvIGtub3cgdGhlIHBsYXlpbmcgZmllbGQgYmVmb3JlIEkgZXZlbiBjb25zaWRlciB3aGF0IG15IG5leHQgdGhvdWdodCBtaWdodCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEwOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6NDA6MTEuNDk5OTgxMjUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDg5MDIyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklSVFVBTElaQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTY9c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctNy1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjg6bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctOS1cXHRib29sIFxcXCJWaXJ0dWFsaXphdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6NDA6MTEuNTQ0ODczODk2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MjE2Mjg1ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlZpcnR1YWxpemF0aW9uLCBLVk0sIGFuZCB0aGUgTmV4dCBTdGVwKipcblxuT2theSwgc28gd2UncmUgdGFsa2luZyBgVklSVFVBTElaQVRJT05gIGhlcmUsIGFuZCBzcGVjaWZpY2FsbHksIGBLVk1gLiBHb3QgaXQuIFRoYXQgaW1tZWRpYXRlbHkgZm9jdXNlcyBteSBhdHRlbnRpb24gb24gdGhlIGh5cGVydmlzb3IgYW5kIHRoZSB1bmRlcmx5aW5nIHRlY2hub2xvZ3kuIE5vdywgd2hlcmUgZG8gd2UgZ28gZnJvbSB0aGVyZT8gV2hhdCdzIHRoZSBwcmFjdGljYWwgYXBwbGljYXRpb24gb3IgbmV4dCBsb2dpY2FsIHN0ZXA/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGRlc2lyZWQgb3V0Y29tZSBpcyBpbiB0aGlzIGNvbnRleHQuIEl0IGZlZWxzIGxpa2Ugd2UgYXJlIG9uIG91ciB3YXkgdG8gYHNldC1yZXN1bHRzYC4gTGV0J3MgYXNzdW1lIHRoZXJlIGFyZSBtdWx0aXBsZSBkaWZmZXJlbnQgcmVzdWx0cywgZGVwZW5kaW5nIG9uIHRoZSB2aXJ0dWFsaXphdGlvbiBjb25maWd1cmF0aW9uLiBXZSBuZWVkIHRvIHdvcmsgdG93YXJkIGRlZmluaW5nIHdoYXQgb3VyIHBlcmZvcm1hbmNlIG1ldHJpY3Mgc2hvdWxkIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDEyLCJPdXRwdXRUb2tlbnMiOjEwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjQwOjE1LjQ2NjUwNTI1OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODA4MTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiLFxuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBoeXBlcnZpc29yIENTUnMgaW4gUklTQy1WIEtWTSBieSBjbGVhcmluZyB0aGUgSFNUQVRVUy5IVSBiaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgS1ZNIGV4ZWN1dGlvbiBvbiBSSVNDLVYgYW5kIGlzIHJlYWNoYWJsZSB3aGVuIEtWTSBpcyBlbmFibGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCIsXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGh5cGVydmlzb3IgQ1NScyBpbiBSSVNDLVYgS1ZNIGJ5IGNsZWFyaW5nIHRoZSBIU1RBVFVTLkhVIGJpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBLVk0gZXhlY3V0aW9uIG9uIFJJU0MtViBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gS1ZNIGlzIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjQwOjE1LjU0NDMxODk0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MDA3NzUzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzo0MDoxNS41NDQ3NjI3MjdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjY4MDAzMjcwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGhhcmR3YXJlIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIChjbGVhcmluZyB0aGUgSFNUQVRVU19IVSBiaXQgaW4gdGhlIENTUl9IU1RBVFVTIHJlZ2lzdGVyKSBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uIG9uIFJJU0MtVi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGZlMzQ4ZDExZWQ5OTUxNjZkYzM5ZDA0ZDIxYmU1NWM2M2U0Mjg0MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDA3OjM5OjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG5pbmRleCA4NWU3NzI1ODhmYWQ2Li5lODBhOTllOTNkNTY5IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbkBAIC00Nyw2ICs0Nyw5IEBAIHN0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfaW5pdCh2b2lkKVxuIFx0Y3NyX3dyaXRlKENTUl9IQ09VTlRFUkVOLCAweDAyKTtcbiBcbiBcdGNzcl93cml0ZShDU1JfSFZJUCwgMCk7XG4rXG4rXHQvKiBjbGVhciBIU1RBVFVTLkhVICovXG4rXHRjc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpO1xuIH1cbiBcbiAvKiBDbGVhciBoeXBlcnZpc29yIENTUnMgLSBjYWxsZWQgZHVyaW5nIENQVSBvZmZsaW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgZW50cnkgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjQwOjE1LjU0NDc2MzQ0N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjgwMDI5NzI2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgbW9kaWZpY2F0aW9uIHRvIGBhcmNoL3Jpc2N2L2t2bS9tYWluLmNgLiBTcGVjaWZpY2FsbHksIGl0IGFkZHMgYGNzcl9jbGVhcihDU1JfSFNUQVRVUywgSFNUQVRVU19IVSk7YCB3aXRoaW4gdGhlIGBrdm1fcmlzY3ZfY3NyX2luaXQodm9pZClgIGZ1bmN0aW9uLiBUaGlzIGlzIGNsZWFybHkgYSBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiBzdGVwLiBJdCdzIHRhcmdldGluZyB0aGUgYEhTVEFUVVNfSFVgIGJpdCB3aXRoaW4gdGhlIGBDU1JfSFNUQVRVU2AgcmVnaXN0ZXIsIGNsZWFyaW5nIGl0LlxuXG5NeSBpbW1lZGlhdGUgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgKm5vdCogc29tZXRoaW5nIHRoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBzaG91bGQgYmUgY29uY2VybmVkIGFib3V0LiBUaGlzIGlzbid0IGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9uIHRoZSBoZWFwIG9yIHN0YWNrLiBJdCdzIG5vdCBhYm91dCBjb3B5aW5nIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBJdCdzIGEgZGlyZWN0IG1hbmlwdWxhdGlvbiBvZiBhIGhhcmR3YXJlIGNvbnRyb2wgcmVnaXN0ZXIuIEl0J3Mgc2ltcGx5IGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZS4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXNuJ3QgZXZlbiByZWFsbHkgYXBwbGljYWJsZSBoZXJlLCBidXQgS01TQU4gaXMgZGVmaW5pdGVseSBub3QuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IHVuZGVyc3RhbmRpbmcuIExldCdzIHNlZS4uLiBga3ZtX3Jpc2N2X2Nzcl9pbml0YCBpcyBjYWxsZWQgZHVyaW5nIENQVSBpbml0aWFsaXphdGlvbiB3aXRoaW4gS1ZNLCByaWdodD8gWWVwLCB0aGF0IGNoZWNrcyBvdXQuIEl0J3Mgd3JpdGluZyB0byBDU1JzLCB3aGljaCBjb25maXJtcyBteSBpbml0aWFsIHRob3VnaHQuIE5vIG1lbW9yeSBhbGxvY2F0aW9uLCBubyB1c2VyLXNwYWNlIGRhdGEgdHJhbnNmZXIuLi4ganVzdCBoYXJkd2FyZSByZWdpc3RlciBjb25maWd1cmF0aW9uLlxuXG5UaGVyZWZvcmUsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIE15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhlIHBhdGNoIHNvbGVseSBkZWFscyB3aXRoIGhhcmR3YXJlIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIChzcGVjaWZpY2FsbHksIGNsZWFyaW5nIGEgYml0IGluIGEgQ1NSKSBkdXJpbmcgUklTQy1WIEtWTSBpbml0aWFsaXphdGlvbi4gSXQgaW50cm9kdWNlcyBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgbm8gY29waWVzIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFkIHRvIHRoZSB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgYW55IGtpbmQgb2YgaW5mb3JtYXRpb24gbGVhay4gS01TQU4gaXMgbm90IHJlbGV2YW50IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODgsIk91dHB1dFRva2VucyI6MTA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6NDA6NDIuMzQ1MDY0NTc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiAoY2xlYXJpbmcgdGhlIEhTVEFUVVNfSFUgYml0IGluIHRoZSBDU1JfSFNUQVRVUyByZWdpc3RlcikgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiBvbiBSSVNDLVYuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGhhcmR3YXJlIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIChjbGVhcmluZyB0aGUgSFNUQVRVU19IVSBiaXQgaW4gdGhlIENTUl9IU1RBVFVTIHJlZ2lzdGVyKSBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uIG9uIFJJU0MtVi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzknzt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-17 07:38:21 +0000 UTC FinishedAt: 2026-08-17 07:40:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b5060a4aa33d7d78a8c1837ab08ef0c81ea96650", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTUALIZATION", "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "b5060a4aa33d7d78a8c1837ab08ef0c81ea96650", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTUALIZATION", "KVM" ], "series_id": "255ffcd9-dc1b-4803-bbf0-4352e5431e44" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_enable_virtualization_cpu" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDssCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiAoY2xlYXJpbmcgdGhlIEhTVEFUVVNfSFUgYml0IGluIHRoZSBDU1JfSFNUQVRVUyByZWdpc3RlcikgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiBvbiBSSVNDLVYuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaHlwZXJ2aXNvciBDU1JzIGluIFJJU0MtViBLVk0gYnkgY2xlYXJpbmcgdGhlIEhTVEFUVVMuSFUgYml0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEtWTSBleGVjdXRpb24gb24gUklTQy1WIGFuZCBpcyByZWFjaGFibGUgd2hlbiBLVk0gaXMgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBmZTM0OGQxMWVkOTk1MTY2ZGMzOWQwNGQyMWJlNTVjNjNlNDI4NDFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwNzozOTozNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbmluZGV4IDg1ZTc3MjU4OGZhZDYuLmU4MGE5OWU5M2Q1NjkgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuQEAgLTQ3LDYgJiM0Mzs0Nyw5IEBAIHN0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfaW5pdCh2b2lkKVxuIFx0Y3NyX3dyaXRlKENTUl9IQ09VTlRFUkVOLCAweDAyKTtcbiBcbiBcdGNzcl93cml0ZShDU1JfSFZJUCwgMCk7XG4mIzQzO1xuJiM0MztcdC8qIGNsZWFyIEhTVEFUVVMuSFUgKi9cbiYjNDM7XHRjc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpO1xuIH1cbiBcbiAvKiBDbGVhciBoeXBlcnZpc29yIENTUnMgLSBjYWxsZWQgZHVyaW5nIENQVSBvZmZsaW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgZW50cnkgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OywKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaHlwZXJ2aXNvciBDU1JzIGluIFJJU0MtViBLVk0gYnkgY2xlYXJpbmcgdGhlIEhTVEFUVVMuSFUgYml0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEtWTSBleGVjdXRpb24gb24gUklTQy1WIGFuZCBpcyByZWFjaGFibGUgd2hlbiBLVk0gaXMgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBmZTM0OGQxMWVkOTk1MTY2ZGMzOWQwNGQyMWJlNTVjNjNlNDI4NDEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAwNzozOTozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uYwppbmRleCA4NWU3NzI1ODhmYWQ2Li5lODBhOTllOTNkNTY5IDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jCkBAIC00Nyw2ICYjNDM7NDcsOSBAQCBzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2luaXQodm9pZCkKIAljc3Jfd3JpdGUoQ1NSX0hDT1VOVEVSRU4sIDB4MDIpOwogCiAJY3NyX3dyaXRlKENTUl9IVklQLCAwKTsKJiM0MzsKJiM0MzsJLyogY2xlYXIgSFNUQVRVUy5IVSAqLwomIzQzOwljc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpOwogfQogCiAvKiBDbGVhciBoeXBlcnZpc29yIENTUnMgLSBjYWxsZWQgZHVyaW5nIENQVSBvZmZsaW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgZW50cnkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBSSVNDLVYgS1ZNIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBhIHNtYWxsIG9uZSwgaXQgc2VlbXMsIGp1c3QgdHdlYWtpbmcgYGFyY2gvcmlzY3Yva3ZtL21haW4uY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkaW5nIGBjc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpYCB0byBga3ZtX3Jpc2N2X2Nzcl9pbml0KClgLiBUaGlzIGlzIGEgUklTQy1WIEtWTSBjaGFuZ2UsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGZ1enphYmxlPyYjMzQ7IEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgc28gdGhhdCBhbG9uZSBtYWtlcyBpdCBpbnRlcmVzdGluZyBmcm9tIGEgc2VjdXJpdHkgcGVyc3BlY3RpdmUuIEl0IGNoYW5nZXMgdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhpbmdzLCBzbyBpdCBjb3VsZCBpbnRyb2R1Y2Ugc29tZSB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIHVzZWQgaW5jb3JyZWN0bHkuCgpBbHJpZ2h0LCBSSVNDLVYgS1ZNICppcyogdGVzdGFibGUgd2l0aGluIFFFTVUsIHRoYXQgbXVjaCBpcyBjbGVhciwgc28gZ2V0dGluZyB0ZXN0IGNvdmVyYWdlIHNob3VsZG4mIzM5O3QgYmUgYSBwcm9ibGVtLiBXYWl0IGEgc2Vjb25kLCBJIHJlY2FsbCB0aGF0IHN5emthbGxlciAqZG9lcyogZnV6eiBLVk0gb24gUklTQy1WLCB3aGljaCBtYWtlcyB0aGlzIGV2ZW4gbW9yZSBwcm9taXNpbmcuIEJlZm9yZSBJIGRpdmUgaW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBmdW5jdGlvbi4gTGV0JiMzOTtzIGdvIHRocm91Z2ggYGt2bV9yaXNjdl9jc3JfaW5pdGAgYW5kIG1hcCBvdXQgYWxsIG9mIGl0cyBjYWxsZXJzLCB0byBrbm93IHdoZXJlIHRoaXMgY2hhbmdlIHdpbGwgYWZmZWN0IHRoZSBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9jc3JfaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tYWluLmM9MzQ9bG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4tLVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTQwLS8qIEluaXRpYWxpemUgaHlwZXJ2aXNvciBDU1JzIC0gY2FsbGVkIGR1cmluZyBDUFUgb25saW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgcmVzdW1lICovXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6NDE6c3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9pbml0KHZvaWQpXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtNDIte1xuLS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYz03Mj1pbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYy03OS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYzo4MDpcdGt2bV9yaXNjdl9jc3JfaW5pdCgpO1xuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTgxLVx0a3ZtX3Jpc2N2X2FpYV9lbmFibGUoKTtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM9OTc9c3RhdGljIGludCBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqc2VsZiwgdW5zaWduZWQgbG9uZyBjbWQsIHZvaWQgKnYpXG4tLVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTEwNy1cdFx0aWYgKF9fdGhpc19jcHVfcmVhZChrdm1fcmlzY3ZfdmlydHVhbGl6YXRpb25fZW5hYmxlZCkpIHtcbmFyY2gvcmlzY3Yva3ZtL21haW4uYzoxMDg6XHRcdFx0a3ZtX3Jpc2N2X2Nzcl9pbml0KCk7XG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMTA5LVx0XHRcdGt2bV9yaXNjdl9haWFfcG1fZXhpdCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MDIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgdGhlIEtWTSBDUFUgVmlydHVhbGl6YXRpb24gRW5hYmxlbWVudCoqCgpSaWdodCwgc28gYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIOKAkyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2hlbiBLVk0gZ2V0cyB0aGUgZ3JlZW4gbGlnaHQgb24gYSBDUFUuIEl0JiMzOTtzIGEgbWlub3IgbW9kaWZpY2F0aW9uIG9uIHRoZSBzdXJmYWNlLCBidXQgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50LiBNeSBmaXJzdCBtb3ZlIHdvdWxkIGJlIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBjb250ZXh0LiBHaXZlbiB0aGUgY2FsbCB0byB0aGF0IGZ1bmN0aW9uLCBpcyBgS1ZNYCB0aGUgc29sZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpbiBwbGF5PyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biBhbmQgbWFrZSBzdXJlIHRoYXQgdGhpcyBpcyB0aGUgb25seSBpbmZsdWVuY2luZyBmYWN0b3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTcKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgS1ZNIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIGEgS1ZNIGNvbmZpZ3VyYXRpb24sIHRoYXQgbXVjaCBpcyBjbGVhci4gTXkgZm9jdXMgaXMgb24gdGhlIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBzeW1ib2wuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcyB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmNhbGxlZCouIElzIGl0IHB1cmVseSBkdXJpbmcgdGhlIGluaXRpYWwgS1ZNIHNldHVwLCBvciBkb2VzIGl0IGFsc28gZ2V0IGludm9rZWQgZXZlcnkgdGltZSBhIG5ldyB2aXJ0dWFsIG1hY2hpbmUgaXMgc3B1biB1cD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjb250ZXh0IGlzIGNydWNpYWwgZm9yIHRyYWNpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgbG9jYXRpb25zIHdoZXJlIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBpbnZva2VkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdobyYjMzk7cyBjYWxsaW5nIHdoby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL2FybS5jPTIyODg9c3RhdGljIHZvaWQgY3B1X2h5cF91bmluaXQodm9pZCAqZGlzY2FyZClcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yMjk1LVxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MjI5NjppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMjI5Ny17XG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmM9MjUzMz1zdGF0aWMgaW50IF9faW5pdCBkb19wa3ZtX2luaXQodTMyIGh5cF92YV9iaXRzKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTI1NDYtXHQgKiBUaGUgc3R1YiBoeXBlcmNhbGxzIGFyZSBub3cgZGlzYWJsZWQsIHNvIHNldCBvdXIgbG9jYWwgZmxhZyB0b1xuYXJjaC9hcm02NC9rdm0vYXJtLmM6MjU0NzpcdCAqIHByZXZlbnQgYSBsYXRlciByZS1pbml0IGF0dGVtcHQgaW4ga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpLlxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMjU0OC1cdCAqL1xuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM9Mjg3PWxvbmcga3ZtX2FyY2hfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMjkyLVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYzoyOTM6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMjk0LXtcbi0tXG5hcmNoL21pcHMva3ZtL21pcHMuYz0xMjM9aW50IGt2bV9hcmNoX3ZjcHVfc2hvdWxkX2tpY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEyNy1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jOjEyODppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTI5LXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM9NTY9c3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9jbGVhbnVwKHZvaWQpXG4tLVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTcxLVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jOjcyOmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtNzMte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0xMzExNj12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMxMjAtXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTMxMjE6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbmFyY2gveDg2L2t2bS94ODYuYy0xMzEyMi17XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTE2NTI9dm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpO1xuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjU4LSAqL1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE2NTk6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTY2MC12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTU5ND1zdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01NTk4LVxudmlydC9rdm0va3ZtX21haW4uYzo1NTk5Olx0aWYgKGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUoKSkge1xudmlydC9rdm0va3ZtX21haW4uYy01NjAwLVx0XHRwcl9pbmZvKFwmIzM0O2t2bTogZW5hYmxpbmcgdmlydHVhbGl6YXRpb24gb24gQ1BVJWQgZmFpbGVkXFxuXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyOTMKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gS1ZNIFZpcnR1YWxpemF0aW9uIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGUgcGF0aCBvZiBDUFUgdmlydHVhbGl6YXRpb24gZW5hYmxlbWVudCB3aXRoaW4gS1ZNLiBTcGVjaWZpY2FsbHksIEkgc2VlIHRoYXQgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGlzIHRoZSBjcnVjaWFsIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgaW52b2tlZCBmcm9tIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAuIFRoZSBsYXR0ZXIsIGluIHR1cm4sIGlzIGJlaW5nIHRyaWdnZXJlZCBlaXRoZXIgZHVyaW5nIEtWTSYjMzk7cyBvdmVyYWxsIGluaXRpYWxpemF0aW9uIHBoYXNlLCBvciB3aGVuIGEgbmV3IHZpcnR1YWwgbWFjaGluZSBpcyBicm91Z2h0IHRvIGxpZmUuIFRoYXQgbWFrZXMgc2Vuc2U7IHdlIG5lZWQgdG8gc2V0IHVwIHRoZSBuZWNlc3NhcnkgQ1BVIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdGllcyBhdCB0aGVzZSBrZXkgcG9pbnRzLgoKTm93LCBteSBmb2N1cyBzaGlmdHMgdG8gdW5kZXJzdGFuZGluZyB0aGUgZW50cnkgcG9pbnQsIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAuIEkgbmVlZCB0byBwZWVsIGJhY2sgaXRzIGxheWVycy4gSSB3YW50IHRvIHNlZSB3aGF0IHRoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmRvaW5nKiB0byBwcmVwYXJlIHRoZSBDUFUgZm9yIHZpcnR1YWxpemF0aW9uLCB3aGF0IHNwZWNpZmljIGFyY2hpdGVjdHVyYWwgZmVhdHVyZXMgYXJlIGJlaW5nIGNvbmZpZ3VyZWQsIGFuZCBob3cgaXTigJlzIGhhbmRsaW5nIHRoZSB0cmFuc2l0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIG1hbmlwdWxhdGVkLCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY2hlY2tzLCBhbmQgdGhlIGNvbnRyb2wgZmxvdyB3aXRoaW4uIFVuZGVyc3RhbmRpbmcgd2hhdCYjMzk7cyBoYXBwZW5pbmcgYXQgdGhlIHBvaW50IHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGRlZXBlciBhcmNoaXRlY3R1cmFsIGxldmVsIG9mIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYz01NTg5PV9fd2VhayB2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU1OTMtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU1OTQ6c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxudmlydC9rdm0va3ZtX21haW4uYy01NTk1LXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MDk9c3RhdGljIGludCBrdm1fb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYxNS1cdCAqL1xudmlydC9rdm0va3ZtX21haW4uYzo1NjE2Olx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MTctfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTY2OD1zdGF0aWMgdm9pZCBrdm1fcmVzdW1lKHZvaWQgKmRhdGEpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01NjcyLVxudmlydC9rdm0va3ZtX21haW4uYzo1NjczOlx0V0FSTl9PTl9PTkNFKGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkpO1xudmlydC9rdm0va3ZtX21haW4uYy01Njc0LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1NAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEFuYWx5c2lzOiBDUFUgT25saW5lL1Jlc3VtZSBhbmQgQ1NSIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIHRyaWdnZXJlZCBieSBgY3B1IG9ubGluZWAgYW5kIGByZXN1bWVgIGV2ZW50cywgcmlnaHQ/IEFuZCBJIHNlZSB0aGF0IGBrdm1fcmlzY3ZfY3NyX2luaXRgIGdldHMgY2FsbGVkIHZpYSBga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcmAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsICYjMzQ7SXMgdGhpcyBmdXp6LXdvcnRoeT8mIzM0OyBJdCBzZWVtcyB0byBiZSBjbGVhcmluZyBhIENTUiBiaXQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbi4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsLCBubyBkb3VidCwgYnV0IHRoZSBrZXkgaXMgdGhhdCBpdCYjMzk7cyBleGVjdXRlZCAqdW5jb25kaXRpb25hbGx5KiBkdXJpbmcgdGhhdCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBGdXp6aW5nICp0aGlzIHNwZWNpZmljIGZ1bmN0aW9uKiBtaWdodCBub3QgYmUgdGhlIGJlc3QgdXNlIG9mIHJlc291cmNlcyBiZWNhdXNlIGl0JiMzOTtzIGEgb25lLXRpbWUgdGhpbmcuIEJ1dCwgaXQgKmlzKiBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIEtWTSwgc28gSSBoYXZlIHRvIGtlZXAgdGhhdCBpbiBtaW5kLgoKTGV0IG1lIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGFmZmVjdGVkIGluIHRoaXMgcGF0Y2guIE5vcGUuIEl0IGxvb2tzIGxpa2UgYGt2bV9yaXNjdl9jc3JfaW5pdGAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gbW9kaWZpZWQgZGlyZWN0bHkuCgpXYWl0LCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgY29uc2lkZXIgdGhlIGJpZ2dlciBwaWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLCBidXQgSSYjMzk7bSBnb2luZyB0byBhZGQgYSBGb2N1c1N5bWJvbHMgZGVzaWduYXRpb24gdG8gbWFrZSBzdXJlIHRoYXQgSSBoaWdobGlnaHQgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGJlY2F1c2UsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGF0IG1pZ2h0IGJlIG1vcmUgaW1wb3J0YW50LiBIb2xkIG9uLiBJIHNlZSB0aGF0IGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBhICpnZW5lcmljKiBLVk0gZnVuY3Rpb24sIGJ1dCBpdCYjMzk7cyBpbXBsZW1lbnRlZCBpbiBgYXJjaC9yaXNjdi9rdm0vbWFpbi5jYC4gTGV0IG1lIGRpZyBpbnRvIGBhcmNoL3Jpc2N2L2t2bS9tYWluLmNgIGFuZCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBpbiB0aGF0IGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vbWFpbi5jPTU2PXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfY2xlYW51cCh2b2lkKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYy03MS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYzo3MjppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTczLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcwNgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJJU0MtViBLVk0gUGF0Y2gqKgoKT2theSwgSSYjMzk7dmUgY29uZmlybWVkIGl0LiBUaGUgY2hhbmdlIGlzIHByZXNlbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaHlwZXJ2aXNvciBDU1JzIHdpdGhpbiB0aGUgUklTQy1WIEtWTSBjb250ZXh0LiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGludm9sdmVzIGNsZWFyaW5nIHRoZSBgSFNUQVRVUy5IVWAgYml0LiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBhbHRlcmF0aW9uIHdpdGggY2xlYXIgaW1wbGljYXRpb25zIGZvciBLVk0gZXhlY3V0aW9uIG9uIFJJU0MtViBzeXN0ZW1zLgoKTGV0JiMzOTtzIHF1aWNrbHkgZW5zdXJlIHRoaXMgaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBvcHRpb24gYWZmZWN0ZWQuIFdoaWxlIGBDT05GSUdfS1ZNYCBpcyBjbGVhcmx5IHRoZSBwcmltYXJ5IG9uZSBpbmZsdWVuY2luZyB0aGlzIGJlaGF2aW9yLCBpdCYjMzk7cyB3aXNlIHRvIHJ1bGUgb3V0IGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIG9yIHNlY29uZGFyeSBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGltcGFjdGVkLiBKdXN0IGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIGF0IHBsYXkgaGVyZS4gQWxyaWdodCwgZG91YmxlLWNoZWNrIGNvbXBsZXRlOyBsb29rcyBsaWtlIGBDT05GSUdfS1ZNYCBpcyB0aGUgcHJpbWFyeSBhbmQgb25seSByZWxldmFudCBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEwOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IEltbWVkaWF0ZSBBc3Nlc3NtZW50KioKCkFscmlnaHQsIHRoZSBjcnV4IG9mIHRoaXMgc2l0dWF0aW9uLCB3aGF0ZXZlciBpdCBpcywgaGluZ2VzIGVudGlyZWx5IG9uIHRoZSBjb25jZXB0IG9mIGBWSVJUVUFMSVpBVElPTmAuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCAqa2luZCogb2YgdmlydHVhbGl6YXRpb24gYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IElzIGl0IGF0IHRoZSBoYXJkd2FyZSBsZXZlbCAoaHlwZXJ2aXNvcnMsIGJhcmUtbWV0YWwpLCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBsZXZlbCAoY29udGFpbmVycywgcHJvY2Vzc2VzKSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkgKG5ldHdvcmsgdmlydHVhbGl6YXRpb24sIHN0b3JhZ2UgdmlydHVhbGl6YXRpb24pPyBUaGUgc3BlY2lmaWMgY29udGV4dCBpcyBwYXJhbW91bnQuIFVuZGVyc3RhbmRpbmcgdGhlICp0eXBlKiBvZiB2aXJ0dWFsaXphdGlvbiB3aWxsIGRyaXZlIHRoZSByZXN0IG9mIG15IGFuYWx5c2lzLiBUaGUgaW1wbGljYXRpb25zIGFyZSB2YXN0IGFuZCB2YXJ5IHdpZGVseSBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgdHlwZS4gSSBuZWVkIHRvIGtub3cgdGhlIHBsYXlpbmcgZmllbGQgYmVmb3JlIEkgZXZlbiBjb25zaWRlciB3aGF0IG15IG5leHQgdGhvdWdodCBtaWdodCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZJUlRVQUxJWkFUSU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTY9c291cmNlIFwmIzM0O3ZpcnQva3ZtL0tjb25maWdcJiMzNDtcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctNy1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6ODptZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTktXHRib29sIFwmIzM0O1ZpcnR1YWxpemF0aW9uXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA3OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MTIKCQkJCQkJCW91dHB1dDogMTA1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVmlydHVhbGl6YXRpb24sIEtWTSwgYW5kIHRoZSBOZXh0IFN0ZXAqKgoKT2theSwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYFZJUlRVQUxJWkFUSU9OYCBoZXJlLCBhbmQgc3BlY2lmaWNhbGx5LCBgS1ZNYC4gR290IGl0LiBUaGF0IGltbWVkaWF0ZWx5IGZvY3VzZXMgbXkgYXR0ZW50aW9uIG9uIHRoZSBoeXBlcnZpc29yIGFuZCB0aGUgdW5kZXJseWluZyB0ZWNobm9sb2d5LiBOb3csIHdoZXJlIGRvIHdlIGdvIGZyb20gdGhlcmU/IFdoYXQmIzM5O3MgdGhlIHByYWN0aWNhbCBhcHBsaWNhdGlvbiBvciBuZXh0IGxvZ2ljYWwgc3RlcD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGUgZGVzaXJlZCBvdXRjb21lIGlzIGluIHRoaXMgY29udGV4dC4gSXQgZmVlbHMgbGlrZSB3ZSBhcmUgb24gb3VyIHdheSB0byBgc2V0LXJlc3VsdHNgLiBMZXQmIzM5O3MgYXNzdW1lIHRoZXJlIGFyZSBtdWx0aXBsZSBkaWZmZXJlbnQgcmVzdWx0cywgZGVwZW5kaW5nIG9uIHRoZSB2aXJ0dWFsaXphdGlvbiBjb25maWd1cmF0aW9uLiBXZSBuZWVkIHRvIHdvcmsgdG93YXJkIGRlZmluaW5nIHdoYXQgb3VyIHBlcmZvcm1hbmNlIG1ldHJpY3Mgc2hvdWxkIGJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OywKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaHlwZXJ2aXNvciBDU1JzIGluIFJJU0MtViBLVk0gYnkgY2xlYXJpbmcgdGhlIEhTVEFUVVMuSFUgYml0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEtWTSBleGVjdXRpb24gb24gUklTQy1WIGFuZCBpcyByZWFjaGFibGUgd2hlbiBLVk0gaXMgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OywKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaHlwZXJ2aXNvciBDU1JzIGluIFJJU0MtViBLVk0gYnkgY2xlYXJpbmcgdGhlIEhTVEFUVVMuSFUgYml0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEtWTSBleGVjdXRpb24gb24gUklTQy1WIGFuZCBpcyByZWFjaGFibGUgd2hlbiBLVk0gaXMgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDc6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiAoY2xlYXJpbmcgdGhlIEhTVEFUVVNfSFUgYml0IGluIHRoZSBDU1JfSFNUQVRVUyByZWdpc3RlcikgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiBvbiBSSVNDLVYuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwZmUzNDhkMTFlZDk5NTE2NmRjMzlkMDRkMjFiZTU1YzYzZTQyODQxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMDc6Mzk6MzUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKaW5kZXggODVlNzcyNTg4ZmFkNi4uZTgwYTk5ZTkzZDU2OSAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uYwpAQCAtNDcsNiAmIzQzOzQ3LDkgQEAgc3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9pbml0KHZvaWQpCiAJY3NyX3dyaXRlKENTUl9IQ09VTlRFUkVOLCAweDAyKTsKIAogCWNzcl93cml0ZShDU1JfSFZJUCwgMCk7CiYjNDM7CiYjNDM7CS8qIGNsZWFyIEhTVEFUVVMuSFUgKi8KJiM0MzsJY3NyX2NsZWFyKENTUl9IU1RBVFVTLCBIU1RBVFVTX0hVKTsKIH0KIAogLyogQ2xlYXIgaHlwZXJ2aXNvciBDU1JzIC0gY2FsbGVkIGR1cmluZyBDUFUgb2ZmbGluZSBhbmQgbm9uLXJldGVudGlvbiBpZGxlIGVudHJ5ICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTg4CgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDI2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIG1vZGlmaWNhdGlvbiB0byBgYXJjaC9yaXNjdi9rdm0vbWFpbi5jYC4gU3BlY2lmaWNhbGx5LCBpdCBhZGRzIGBjc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpO2Agd2l0aGluIHRoZSBga3ZtX3Jpc2N2X2Nzcl9pbml0KHZvaWQpYCBmdW5jdGlvbi4gVGhpcyBpcyBjbGVhcmx5IGEgaGFyZHdhcmUgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb24gc3RlcC4gSXQmIzM5O3MgdGFyZ2V0aW5nIHRoZSBgSFNUQVRVU19IVWAgYml0IHdpdGhpbiB0aGUgYENTUl9IU1RBVFVTYCByZWdpc3RlciwgY2xlYXJpbmcgaXQuCgpNeSBpbW1lZGlhdGUgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgKm5vdCogc29tZXRoaW5nIHRoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBzaG91bGQgYmUgY29uY2VybmVkIGFib3V0LiBUaGlzIGlzbiYjMzk7dCBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeSBvbiB0aGUgaGVhcCBvciBzdGFjay4gSXQmIzM5O3Mgbm90IGFib3V0IGNvcHlpbmcgdW5pbml0aWFsaXplZCBkYXRhIHRvIHVzZXIgc3BhY2UuIEl0JiMzOTtzIGEgZGlyZWN0IG1hbmlwdWxhdGlvbiBvZiBhIGhhcmR3YXJlIGNvbnRyb2wgcmVnaXN0ZXIuIEl0JiMzOTtzIHNpbXBseSBjb25maWd1cmluZyB0aGUgaGFyZHdhcmUuIEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzbiYjMzk7dCBldmVuIHJlYWxseSBhcHBsaWNhYmxlIGhlcmUsIGJ1dCBLTVNBTiBpcyBkZWZpbml0ZWx5IG5vdC4KCkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IHVuZGVyc3RhbmRpbmcuIExldCYjMzk7cyBzZWUuLi4gYGt2bV9yaXNjdl9jc3JfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyBDUFUgaW5pdGlhbGl6YXRpb24gd2l0aGluIEtWTSwgcmlnaHQ/IFllcCwgdGhhdCBjaGVja3Mgb3V0LiBJdCYjMzk7cyB3cml0aW5nIHRvIENTUnMsIHdoaWNoIGNvbmZpcm1zIG15IGluaXRpYWwgdGhvdWdodC4gTm8gbWVtb3J5IGFsbG9jYXRpb24sIG5vIHVzZXItc3BhY2UgZGF0YSB0cmFuc2Zlci4uLiBqdXN0IGhhcmR3YXJlIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24uCgpUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgLiBNeSByZWFzb25pbmcgaXMgc29saWQ6IHRoZSBwYXRjaCBzb2xlbHkgZGVhbHMgd2l0aCBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiAoc3BlY2lmaWNhbGx5LCBjbGVhcmluZyBhIGJpdCBpbiBhIENTUikgZHVyaW5nIFJJU0MtViBLVk0gaW5pdGlhbGl6YXRpb24uIEl0IGludHJvZHVjZXMgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgbm8gbmV3IGRhdGEgc3RydWN0dXJlcywgYW5kIG5vIGNvcGllcyB0byB1c2VyIHNwYWNlIHRoYXQgY291bGQgbGVhZCB0byB0aGUgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGFueSBraW5kIG9mIGluZm9ybWF0aW9uIGxlYWsuIEtNU0FOIGlzIG5vdCByZWxldmFudCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwNzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYSBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiAoY2xlYXJpbmcgdGhlIEhTVEFUVVNfSFUgYml0IGluIHRoZSBDU1JfSFNUQVRVUyByZWdpc3RlcikgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiBvbiBSSVNDLVYuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgaGFyZHdhcmUgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb24gKGNsZWFyaW5nIHRoZSBIU1RBVFVTX0hVIGJpdCBpbiB0aGUgQ1NSX0hTVEFUVVMgcmVnaXN0ZXIpIGR1cmluZyBLVk0gaW5pdGlhbGl6YXRpb24gb24gUklTQy1WLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgZGF0YSBzdHJ1Y3R1cmVzLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6Mzk6MzcuMzk5NTIxMDIzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ5NDU1ODM1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVFVBTElaQVRJT05cIixcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGhhcmR3YXJlIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIChjbGVhcmluZyB0aGUgSFNUQVRVU19IVSBiaXQgaW4gdGhlIENTUl9IU1RBVFVTIHJlZ2lzdGVyKSBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uIG9uIFJJU0MtVi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGh5cGVydmlzb3IgQ1NScyBpbiBSSVNDLVYgS1ZNIGJ5IGNsZWFyaW5nIHRoZSBIU1RBVFVTLkhVIGJpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBLVk0gZXhlY3V0aW9uIG9uIFJJU0MtViBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gS1ZNIGlzIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjM5OjM3LjM5OTUyODAwM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzNzIwMzMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBmZTM0OGQxMWVkOTk1MTY2ZGMzOWQwNGQyMWJlNTVjNjNlNDI4NDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDc6Mzk6MzUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXFxuaW5kZXggODVlNzcyNTg4ZmFkNi4uZTgwYTk5ZTkzZDU2OSAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcXG5AQCAtNDcsNiArNDcsOSBAQCBzdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2luaXQodm9pZClcXG4gXFx0Y3NyX3dyaXRlKENTUl9IQ09VTlRFUkVOLCAweDAyKTtcXG4gXFxuIFxcdGNzcl93cml0ZShDU1JfSFZJUCwgMCk7XFxuK1xcbitcXHQvKiBjbGVhciBIU1RBVFVTLkhVICovXFxuK1xcdGNzcl9jbGVhcihDU1JfSFNUQVRVUywgSFNUQVRVU19IVSk7XFxuIH1cXG4gXFxuIC8qIENsZWFyIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9mZmxpbmUgYW5kIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTozOC43Mzc2NTEzODVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozNjgwNjY2NDUwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiLFxuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBoeXBlcnZpc29yIENTUnMgaW4gUklTQy1WIEtWTSBieSBjbGVhcmluZyB0aGUgSFNUQVRVUy5IVSBiaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgS1ZNIGV4ZWN1dGlvbiBvbiBSSVNDLVYgYW5kIGlzIHJlYWNoYWJsZSB3aGVuIEtWTSBpcyBlbmFibGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZmUzNDhkMTFlZDk5NTE2NmRjMzlkMDRkMjFiZTU1YzYzZTQyODQxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDc6Mzk6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbmluZGV4IDg1ZTc3MjU4OGZhZDYuLmU4MGE5OWU5M2Q1NjkgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuQEAgLTQ3LDYgKzQ3LDkgQEAgc3RhdGljIHZvaWQga3ZtX3Jpc2N2X2Nzcl9pbml0KHZvaWQpXG4gXHRjc3Jfd3JpdGUoQ1NSX0hDT1VOVEVSRU4sIDB4MDIpO1xuIFxuIFx0Y3NyX3dyaXRlKENTUl9IVklQLCAwKTtcbitcbitcdC8qIGNsZWFyIEhTVEFUVVMuSFUgKi9cbitcdGNzcl9jbGVhcihDU1JfSFNUQVRVUywgSFNUQVRVU19IVSk7XG4gfVxuIFxuIC8qIENsZWFyIGh5cGVydmlzb3IgQ1NScyAtIGNhbGxlZCBkdXJpbmcgQ1BVIG9mZmxpbmUgYW5kIG5vbi1yZXRlbnRpb24gaWRsZSBlbnRyeSAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6Mzk6MzguNzM3NjUzMDI1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg1MzQxOTA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBSSVNDLVYgS1ZNIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCDigJMgYSBzbWFsbCBvbmUsIGl0IHNlZW1zLCBqdXN0IHR3ZWFraW5nIGBhcmNoL3Jpc2N2L2t2bS9tYWluLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGBjc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpYCB0byBga3ZtX3Jpc2N2X2Nzcl9pbml0KClgLiBUaGlzIGlzIGEgUklTQy1WIEtWTSBjaGFuZ2UsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJJcyB0aGlzIGZ1enphYmxlP1wiIEl0J3MgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uLCBzbyB0aGF0IGFsb25lIG1ha2VzIGl0IGludGVyZXN0aW5nIGZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZS4gSXQgY2hhbmdlcyB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGluZ3MsIHNvIGl0IGNvdWxkIGludHJvZHVjZSBzb21lIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaWYgdXNlZCBpbmNvcnJlY3RseS5cblxuQWxyaWdodCwgUklTQy1WIEtWTSAqaXMqIHRlc3RhYmxlIHdpdGhpbiBRRU1VLCB0aGF0IG11Y2ggaXMgY2xlYXIsIHNvIGdldHRpbmcgdGVzdCBjb3ZlcmFnZSBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtLiBXYWl0IGEgc2Vjb25kLCBJIHJlY2FsbCB0aGF0IHN5emthbGxlciAqZG9lcyogZnV6eiBLVk0gb24gUklTQy1WLCB3aGljaCBtYWtlcyB0aGlzIGV2ZW4gbW9yZSBwcm9taXNpbmcuIEJlZm9yZSBJIGRpdmUgaW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBmdW5jdGlvbi4gTGV0J3MgZ28gdGhyb3VnaCBga3ZtX3Jpc2N2X2Nzcl9pbml0YCBhbmQgbWFwIG91dCBhbGwgb2YgaXRzIGNhbGxlcnMsIHRvIGtub3cgd2hlcmUgdGhpcyBjaGFuZ2Ugd2lsbCBhZmZlY3QgdGhlIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTo0My41OTEwNzQ4OTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1OTk0NDY0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfY3NyX2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vbWFpbi5jPTM0PWxvbmcga3ZtX2FyY2hfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTQwLS8qIEluaXRpYWxpemUgaHlwZXJ2aXNvciBDU1JzIC0gY2FsbGVkIGR1cmluZyBDUFUgb25saW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgcmVzdW1lICovXFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jOjQxOnN0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfaW5pdCh2b2lkKVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy00Mi17XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM9NzI9aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy03OS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6ODA6XFx0a3ZtX3Jpc2N2X2Nzcl9pbml0KCk7XFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTgxLVxcdGt2bV9yaXNjdl9haWFfZW5hYmxlKCk7XFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM9OTc9c3RhdGljIGludCBrdm1fcmlzY3ZfY3B1X3BtX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqc2VsZiwgdW5zaWduZWQgbG9uZyBjbWQsIHZvaWQgKnYpXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMTA3LVxcdFxcdGlmIChfX3RoaXNfY3B1X3JlYWQoa3ZtX3Jpc2N2X3ZpcnR1YWxpemF0aW9uX2VuYWJsZWQpKSB7XFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jOjEwODpcXHRcXHRcXHRrdm1fcmlzY3ZfY3NyX2luaXQoKTtcXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMTA5LVxcdFxcdFxcdGt2bV9yaXNjdl9haWFfcG1fZXhpdCgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTo0NS4xNTEwMjM3OTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTgwNzU5MjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIEtWTSBDUFUgVmlydHVhbGl6YXRpb24gRW5hYmxlbWVudCoqXG5cblJpZ2h0LCBzbyBga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAg4oCTIHRoYXQncyB0aGUgZnVuY3Rpb24gY2FsbGVkIHdoZW4gS1ZNIGdldHMgdGhlIGdyZWVuIGxpZ2h0IG9uIGEgQ1BVLiBJdCdzIGEgbWlub3IgbW9kaWZpY2F0aW9uIG9uIHRoZSBzdXJmYWNlLCBidXQgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50LiBNeSBmaXJzdCBtb3ZlIHdvdWxkIGJlIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBjb250ZXh0LiBHaXZlbiB0aGUgY2FsbCB0byB0aGF0IGZ1bmN0aW9uLCBpcyBgS1ZNYCB0aGUgc29sZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpbiBwbGF5PyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGlzIGlzIHRoZSBvbmx5IGluZmx1ZW5jaW5nIGZhY3Rvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjM5OjQ4LjMzMTc4NjA3OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTk0MzgwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTo0OC4zODE3MzI5MzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI1NDk4NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0gSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGVhbGluZyB3aXRoIGEgS1ZNIGNvbmZpZ3VyYXRpb24sIHRoYXQgbXVjaCBpcyBjbGVhci4gTXkgZm9jdXMgaXMgb24gdGhlIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBzeW1ib2wuIE5vdywgdGhlIGtleSBxdWVzdGlvbiBpcyB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmNhbGxlZCouIElzIGl0IHB1cmVseSBkdXJpbmcgdGhlIGluaXRpYWwgS1ZNIHNldHVwLCBvciBkb2VzIGl0IGFsc28gZ2V0IGludm9rZWQgZXZlcnkgdGltZSBhIG5ldyB2aXJ0dWFsIG1hY2hpbmUgaXMgc3B1biB1cD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBjb250ZXh0IGlzIGNydWNpYWwgZm9yIHRyYWNpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFuZCBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgbG9jYXRpb25zIHdoZXJlIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBpbnZva2VkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY2FsbCBncmFwaCBhbmQgc2VlIHdobydzIGNhbGxpbmcgd2hvLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE3LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6Mzk6NTIuNDA3MjMzOTc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTM5OTc3MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9hcm0uYz0yMjg4PXN0YXRpYyB2b2lkIGNwdV9oeXBfdW5pbml0KHZvaWQgKmRpc2NhcmQpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yMjk1LVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jOjIyOTY6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yMjk3LXtcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jPTI1MzM9c3RhdGljIGludCBfX2luaXQgZG9fcGt2bV9pbml0KHUzMiBoeXBfdmFfYml0cylcXG4tLVxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTI1NDYtXFx0ICogVGhlIHN0dWIgaHlwZXJjYWxscyBhcmUgbm93IGRpc2FibGVkLCBzbyBzZXQgb3VyIGxvY2FsIGZsYWcgdG9cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoyNTQ3OlxcdCAqIHByZXZlbnQgYSBsYXRlciByZS1pbml0IGF0dGVtcHQgaW4ga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpLlxcbmFyY2gvYXJtNjQva3ZtL2FybS5jLTI1NDgtXFx0ICovXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jPTI4Nz1sb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMjkyLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmM6MjkzOmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0yOTQte1xcbi0tXFxuYXJjaC9taXBzL2t2bS9taXBzLmM9MTIzPWludCBrdm1fYXJjaF92Y3B1X3Nob3VsZF9raWNrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jLTEyNy1cXG5hcmNoL21pcHMva3ZtL21pcHMuYzoxMjg6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMjkte1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jPTU2PXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfY2xlYW51cCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbWFpbi5jLTcxLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYzo3MjppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy03My17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MTMxMTY9dm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTMxMjAtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjEzMTIxOmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTEzMTIyLXtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNjUyPXZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKTtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjU4LSAqL1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNjU5OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpO1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjYwLXZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU1OTQ9c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NTk4LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTU5OTpcXHRpZiAoa3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpKSB7XFxudmlydC9rdm0va3ZtX21haW4uYy01NjAwLVxcdFxcdHByX2luZm8oXFxcImt2bTogZW5hYmxpbmcgdmlydHVhbGl6YXRpb24gb24gQ1BVJWQgZmFpbGVkXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTo1NC4wMDEyMzY3NzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTMwNzI0MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gS1ZNIFZpcnR1YWxpemF0aW9uIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhlIHBhdGggb2YgQ1BVIHZpcnR1YWxpemF0aW9uIGVuYWJsZW1lbnQgd2l0aGluIEtWTS4gU3BlY2lmaWNhbGx5LCBJIHNlZSB0aGF0IGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgYW5kIGl0J3MgYmVpbmcgaW52b2tlZCBmcm9tIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAuIFRoZSBsYXR0ZXIsIGluIHR1cm4sIGlzIGJlaW5nIHRyaWdnZXJlZCBlaXRoZXIgZHVyaW5nIEtWTSdzIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gcGhhc2UsIG9yIHdoZW4gYSBuZXcgdmlydHVhbCBtYWNoaW5lIGlzIGJyb3VnaHQgdG8gbGlmZS4gVGhhdCBtYWtlcyBzZW5zZTsgd2UgbmVlZCB0byBzZXQgdXAgdGhlIG5lY2Vzc2FyeSBDUFUgdmlydHVhbGl6YXRpb24gY2FwYWJpbGl0aWVzIGF0IHRoZXNlIGtleSBwb2ludHMuXG5cbk5vdywgbXkgZm9jdXMgc2hpZnRzIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGVudHJ5IHBvaW50LCBga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLiBJIG5lZWQgdG8gcGVlbCBiYWNrIGl0cyBsYXllcnMuIEkgd2FudCB0byBzZWUgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5ICpkb2luZyogdG8gcHJlcGFyZSB0aGUgQ1BVIGZvciB2aXJ0dWFsaXphdGlvbiwgd2hhdCBzcGVjaWZpYyBhcmNoaXRlY3R1cmFsIGZlYXR1cmVzIGFyZSBiZWluZyBjb25maWd1cmVkLCBhbmQgaG93IGl04oCZcyBoYW5kbGluZyB0aGUgdHJhbnNpdGlvbi4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIGJlaW5nIG1hbmlwdWxhdGVkLCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY2hlY2tzLCBhbmQgdGhlIGNvbnRyb2wgZmxvdyB3aXRoaW4uIFVuZGVyc3RhbmRpbmcgd2hhdCdzIGhhcHBlbmluZyBhdCB0aGUgcG9pbnQgd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGVlcGVyIGFyY2hpdGVjdHVyYWwgbGV2ZWwgb2YgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjkzLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6Mzk6NTcuNTMxOTYzMTU3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU0MTM0NjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9NTU4OT1fX3dlYWsgdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU1OTMtXFxudmlydC9rdm0va3ZtX21haW4uYzo1NTk0OnN0YXRpYyBpbnQga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU1OTUte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01NjA5PXN0YXRpYyBpbnQga3ZtX29ubGluZV9jcHUodW5zaWduZWQgaW50IGNwdSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYxNS1cXHQgKi9cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU2MTY6XFx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCk7XFxudmlydC9rdm0va3ZtX21haW4uYy01NjE3LX1cXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NTY2OD1zdGF0aWMgdm9pZCBrdm1fcmVzdW1lKHZvaWQgKmRhdGEpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2NzItXFxudmlydC9rdm0va3ZtX21haW4uYzo1NjczOlxcdFdBUk5fT05fT05DRShrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2NzQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzozOTo1OC45ODYxMDUxODlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY5Nzc4OTY4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEFuYWx5c2lzOiBDUFUgT25saW5lL1Jlc3VtZSBhbmQgQ1NSIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpdCdzIHRyaWdnZXJlZCBieSBgY3B1IG9ubGluZWAgYW5kIGByZXN1bWVgIGV2ZW50cywgcmlnaHQ/IEFuZCBJIHNlZSB0aGF0IGBrdm1fcmlzY3ZfY3NyX2luaXRgIGdldHMgY2FsbGVkIHZpYSBga3ZtX3Jpc2N2X2NwdV9wbV9ub3RpZmllcmAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIFwiSXMgdGhpcyBmdXp6LXdvcnRoeT9cIiBJdCBzZWVtcyB0byBiZSBjbGVhcmluZyBhIENTUiBiaXQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbi4gVGhlIGNoYW5nZSBpcyBmdW5jdGlvbmFsLCBubyBkb3VidCwgYnV0IHRoZSBrZXkgaXMgdGhhdCBpdCdzIGV4ZWN1dGVkICp1bmNvbmRpdGlvbmFsbHkqIGR1cmluZyB0aGF0IGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEZ1enppbmcgKnRoaXMgc3BlY2lmaWMgZnVuY3Rpb24qIG1pZ2h0IG5vdCBiZSB0aGUgYmVzdCB1c2Ugb2YgcmVzb3VyY2VzIGJlY2F1c2UgaXQncyBhIG9uZS10aW1lIHRoaW5nLiBCdXQsIGl0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBLVk0sIHNvIEkgaGF2ZSB0byBrZWVwIHRoYXQgaW4gbWluZC5cblxuTGV0IG1lIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGFmZmVjdGVkIGluIHRoaXMgcGF0Y2guIE5vcGUuIEl0IGxvb2tzIGxpa2UgYGt2bV9yaXNjdl9jc3JfaW5pdGAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gbW9kaWZpZWQgZGlyZWN0bHkuXG5cbldhaXQsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgYmlnZ2VyIHBpY3R1cmUuIEknbSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYCwgYnV0IEknbSBnb2luZyB0byBhZGQgYSBGb2N1c1N5bWJvbHMgZGVzaWduYXRpb24gdG8gbWFrZSBzdXJlIHRoYXQgSSBoaWdobGlnaHQgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGJlY2F1c2UsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCB0aGF0IG1pZ2h0IGJlIG1vcmUgaW1wb3J0YW50LiBIb2xkIG9uLiBJIHNlZSB0aGF0IGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBhICpnZW5lcmljKiBLVk0gZnVuY3Rpb24sIGJ1dCBpdCdzIGltcGxlbWVudGVkIGluIGBhcmNoL3Jpc2N2L2t2bS9tYWluLmNgLiBMZXQgbWUgZGlnIGludG8gYGFyY2gvcmlzY3Yva3ZtL21haW4uY2AgYW5kIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIGluIHRoYXQgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1NCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzo0MDowNC42ODM4OTc0ODZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMTU0Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3Yva3ZtL21haW4uYz01Nj1zdGF0aWMgdm9pZCBrdm1fcmlzY3ZfY3NyX2NsZWFudXAodm9pZClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy03MS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6NzI6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtNzMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzo0MDowNC43MjcwNTcyM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDE1NTY3NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFJJU0MtViBLVk0gUGF0Y2gqKlxuXG5Pa2F5LCBJJ3ZlIGNvbmZpcm1lZCBpdC4gVGhlIGNoYW5nZSBpcyBwcmVzZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGh5cGVydmlzb3IgQ1NScyB3aXRoaW4gdGhlIFJJU0MtViBLVk0gY29udGV4dC4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBpbnZvbHZlcyBjbGVhcmluZyB0aGUgYEhTVEFUVVMuSFVgIGJpdC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBhbHRlcmF0aW9uIHdpdGggY2xlYXIgaW1wbGljYXRpb25zIGZvciBLVk0gZXhlY3V0aW9uIG9uIFJJU0MtViBzeXN0ZW1zLlxuXG5MZXQncyBxdWlja2x5IGVuc3VyZSB0aGlzIGlzIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGFmZmVjdGVkLiBXaGlsZSBgQ09ORklHX0tWTWAgaXMgY2xlYXJseSB0aGUgcHJpbWFyeSBvbmUgaW5mbHVlbmNpbmcgdGhpcyBiZWhhdmlvciwgaXQncyB3aXNlIHRvIHJ1bGUgb3V0IGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIG9yIHNlY29uZGFyeSBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIGltcGFjdGVkLiBKdXN0IGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIGF0IHBsYXkgaGVyZS4gQWxyaWdodCwgZG91YmxlLWNoZWNrIGNvbXBsZXRlOyBsb29rcyBsaWtlIGBDT05GSUdfS1ZNYCBpcyB0aGUgcHJpbWFyeSBhbmQgb25seSByZWxldmFudCBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MDYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzo0MDowOC4xNDI2MjgyMTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDQzMzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjQwOjA4LjE4NjY4MjUyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzEzMjk2MDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTXkgSW1tZWRpYXRlIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCB0aGUgY3J1eCBvZiB0aGlzIHNpdHVhdGlvbiwgd2hhdGV2ZXIgaXQgaXMsIGhpbmdlcyBlbnRpcmVseSBvbiB0aGUgY29uY2VwdCBvZiBgVklSVFVBTElaQVRJT05gLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCAqa2luZCogb2YgdmlydHVhbGl6YXRpb24gYXJlIHdlIHRhbGtpbmcgYWJvdXQ/IElzIGl0IGF0IHRoZSBoYXJkd2FyZSBsZXZlbCAoaHlwZXJ2aXNvcnMsIGJhcmUtbWV0YWwpLCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBsZXZlbCAoY29udGFpbmVycywgcHJvY2Vzc2VzKSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHkgKG5ldHdvcmsgdmlydHVhbGl6YXRpb24sIHN0b3JhZ2UgdmlydHVhbGl6YXRpb24pPyBUaGUgc3BlY2lmaWMgY29udGV4dCBpcyBwYXJhbW91bnQuIFVuZGVyc3RhbmRpbmcgdGhlICp0eXBlKiBvZiB2aXJ0dWFsaXphdGlvbiB3aWxsIGRyaXZlIHRoZSByZXN0IG9mIG15IGFuYWx5c2lzLiBUaGUgaW1wbGljYXRpb25zIGFyZSB2YXN0IGFuZCB2YXJ5IHdpZGVseSBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgdHlwZS4gSSBuZWVkIHRvIGtub3cgdGhlIHBsYXlpbmcgZmllbGQgYmVmb3JlIEkgZXZlbiBjb25zaWRlciB3aGF0IG15IG5leHQgdGhvdWdodCBtaWdodCBiZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEwOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6NDA6MTEuNDk5OTgxMjUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDg5MDIyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklSVFVBTElaQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTY9c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctNy1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjg6bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctOS1cXHRib29sIFxcXCJWaXJ0dWFsaXphdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6NDA6MTEuNTQ0ODczODk2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MjE2Mjg1ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlZpcnR1YWxpemF0aW9uLCBLVk0sIGFuZCB0aGUgTmV4dCBTdGVwKipcblxuT2theSwgc28gd2UncmUgdGFsa2luZyBgVklSVFVBTElaQVRJT05gIGhlcmUsIGFuZCBzcGVjaWZpY2FsbHksIGBLVk1gLiBHb3QgaXQuIFRoYXQgaW1tZWRpYXRlbHkgZm9jdXNlcyBteSBhdHRlbnRpb24gb24gdGhlIGh5cGVydmlzb3IgYW5kIHRoZSB1bmRlcmx5aW5nIHRlY2hub2xvZ3kuIE5vdywgd2hlcmUgZG8gd2UgZ28gZnJvbSB0aGVyZT8gV2hhdCdzIHRoZSBwcmFjdGljYWwgYXBwbGljYXRpb24gb3IgbmV4dCBsb2dpY2FsIHN0ZXA/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGRlc2lyZWQgb3V0Y29tZSBpcyBpbiB0aGlzIGNvbnRleHQuIEl0IGZlZWxzIGxpa2Ugd2UgYXJlIG9uIG91ciB3YXkgdG8gYHNldC1yZXN1bHRzYC4gTGV0J3MgYXNzdW1lIHRoZXJlIGFyZSBtdWx0aXBsZSBkaWZmZXJlbnQgcmVzdWx0cywgZGVwZW5kaW5nIG9uIHRoZSB2aXJ0dWFsaXphdGlvbiBjb25maWd1cmF0aW9uLiBXZSBuZWVkIHRvIHdvcmsgdG93YXJkIGRlZmluaW5nIHdoYXQgb3VyIHBlcmZvcm1hbmNlIG1ldHJpY3Mgc2hvdWxkIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDEyLCJPdXRwdXRUb2tlbnMiOjEwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjQwOjE1LjQ2NjUwNTI1OVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODA4MTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiLFxuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBoeXBlcnZpc29yIENTUnMgaW4gUklTQy1WIEtWTSBieSBjbGVhcmluZyB0aGUgSFNUQVRVUy5IVSBiaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgS1ZNIGV4ZWN1dGlvbiBvbiBSSVNDLVYgYW5kIGlzIHJlYWNoYWJsZSB3aGVuIEtWTSBpcyBlbmFibGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRVQUxJWkFUSU9OXCIsXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGh5cGVydmlzb3IgQ1NScyBpbiBSSVNDLVYgS1ZNIGJ5IGNsZWFyaW5nIHRoZSBIU1RBVFVTLkhVIGJpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBLVk0gZXhlY3V0aW9uIG9uIFJJU0MtViBhbmQgaXMgcmVhY2hhYmxlIHdoZW4gS1ZNIGlzIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjQwOjE1LjU0NDMxODk0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4MDA3NzUzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwNzo0MDoxNS41NDQ3NjI3MjdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjY4MDAzMjcwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGhhcmR3YXJlIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIChjbGVhcmluZyB0aGUgSFNUQVRVU19IVSBiaXQgaW4gdGhlIENTUl9IU1RBVFVTIHJlZ2lzdGVyKSBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uIG9uIFJJU0MtVi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGZlMzQ4ZDExZWQ5OTUxNjZkYzM5ZDA0ZDIxYmU1NWM2M2U0Mjg0MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDA3OjM5OjM1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG5pbmRleCA4NWU3NzI1ODhmYWQ2Li5lODBhOTllOTNkNTY5IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbkBAIC00Nyw2ICs0Nyw5IEBAIHN0YXRpYyB2b2lkIGt2bV9yaXNjdl9jc3JfaW5pdCh2b2lkKVxuIFx0Y3NyX3dyaXRlKENTUl9IQ09VTlRFUkVOLCAweDAyKTtcbiBcbiBcdGNzcl93cml0ZShDU1JfSFZJUCwgMCk7XG4rXG4rXHQvKiBjbGVhciBIU1RBVFVTLkhVICovXG4rXHRjc3JfY2xlYXIoQ1NSX0hTVEFUVVMsIEhTVEFUVVNfSFUpO1xuIH1cbiBcbiAvKiBDbGVhciBoeXBlcnZpc29yIENTUnMgLSBjYWxsZWQgZHVyaW5nIENQVSBvZmZsaW5lIGFuZCBub24tcmV0ZW50aW9uIGlkbGUgZW50cnkgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA3OjQwOjE1LjU0NDc2MzQ0N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjgwMDI5NzI2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBzdHJhaWdodGZvcndhcmQgbW9kaWZpY2F0aW9uIHRvIGBhcmNoL3Jpc2N2L2t2bS9tYWluLmNgLiBTcGVjaWZpY2FsbHksIGl0IGFkZHMgYGNzcl9jbGVhcihDU1JfSFNUQVRVUywgSFNUQVRVU19IVSk7YCB3aXRoaW4gdGhlIGBrdm1fcmlzY3ZfY3NyX2luaXQodm9pZClgIGZ1bmN0aW9uLiBUaGlzIGlzIGNsZWFybHkgYSBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiBzdGVwLiBJdCdzIHRhcmdldGluZyB0aGUgYEhTVEFUVVNfSFVgIGJpdCB3aXRoaW4gdGhlIGBDU1JfSFNUQVRVU2AgcmVnaXN0ZXIsIGNsZWFyaW5nIGl0LlxuXG5NeSBpbW1lZGlhdGUgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgKm5vdCogc29tZXRoaW5nIHRoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBzaG91bGQgYmUgY29uY2VybmVkIGFib3V0LiBUaGlzIGlzbid0IGFib3V0IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9uIHRoZSBoZWFwIG9yIHN0YWNrLiBJdCdzIG5vdCBhYm91dCBjb3B5aW5nIHVuaW5pdGlhbGl6ZWQgZGF0YSB0byB1c2VyIHNwYWNlLiBJdCdzIGEgZGlyZWN0IG1hbmlwdWxhdGlvbiBvZiBhIGhhcmR3YXJlIGNvbnRyb2wgcmVnaXN0ZXIuIEl0J3Mgc2ltcGx5IGNvbmZpZ3VyaW5nIHRoZSBoYXJkd2FyZS4gS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXNuJ3QgZXZlbiByZWFsbHkgYXBwbGljYWJsZSBoZXJlLCBidXQgS01TQU4gaXMgZGVmaW5pdGVseSBub3QuXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IHVuZGVyc3RhbmRpbmcuIExldCdzIHNlZS4uLiBga3ZtX3Jpc2N2X2Nzcl9pbml0YCBpcyBjYWxsZWQgZHVyaW5nIENQVSBpbml0aWFsaXphdGlvbiB3aXRoaW4gS1ZNLCByaWdodD8gWWVwLCB0aGF0IGNoZWNrcyBvdXQuIEl0J3Mgd3JpdGluZyB0byBDU1JzLCB3aGljaCBjb25maXJtcyBteSBpbml0aWFsIHRob3VnaHQuIE5vIG1lbW9yeSBhbGxvY2F0aW9uLCBubyB1c2VyLXNwYWNlIGRhdGEgdHJhbnNmZXIuLi4ganVzdCBoYXJkd2FyZSByZWdpc3RlciBjb25maWd1cmF0aW9uLlxuXG5UaGVyZWZvcmUsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIE15IHJlYXNvbmluZyBpcyBzb2xpZDogdGhlIHBhdGNoIHNvbGVseSBkZWFscyB3aXRoIGhhcmR3YXJlIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIChzcGVjaWZpY2FsbHksIGNsZWFyaW5nIGEgYml0IGluIGEgQ1NSKSBkdXJpbmcgUklTQy1WIEtWTSBpbml0aWFsaXphdGlvbi4gSXQgaW50cm9kdWNlcyBubyBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgbm8gY29waWVzIHRvIHVzZXIgc3BhY2UgdGhhdCBjb3VsZCBsZWFkIHRvIHRoZSB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgYW55IGtpbmQgb2YgaW5mb3JtYXRpb24gbGVhay4gS01TQU4gaXMgbm90IHJlbGV2YW50IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODgsIk91dHB1dFRva2VucyI6MTA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDc6NDA6NDIuMzQ1MDY0NTc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYSBoYXJkd2FyZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiAoY2xlYXJpbmcgdGhlIEhTVEFUVVNfSFUgYml0IGluIHRoZSBDU1JfSFNUQVRVUyByZWdpc3RlcikgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiBvbiBSSVNDLVYuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCBkYXRhIHN0cnVjdHVyZXMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIGhhcmR3YXJlIHJlZ2lzdGVyIGluaXRpYWxpemF0aW9uIChjbGVhcmluZyB0aGUgSFNUQVRVU19IVSBiaXQgaW4gdGhlIENTUl9IU1RBVFVTIHJlZ2lzdGVyKSBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uIG9uIFJJU0MtVi4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIGRhdGEgc3RydWN0dXJlcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowzknzt[1] Phase: Succeeded StartedAt: 2026-08-17 07:40:53 +0000 UTC FinishedAt: 2026-08-17 07:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-17 07:40:53 +0000 UTC FinishedAt: 2026-08-17 07:40:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2] Phase: Succeeded StartedAt: 2026-08-17 07:40:53 +0000 UTC FinishedAt: 2026-08-17 08:23:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-17 07:40:53 +0000 UTC FinishedAt: 2026-08-17 08:23:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-17 07:40:53 +0000 UTC FinishedAt: 2026-08-17 07:41:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-17 07:40:53 +0000 UTC FinishedAt: 2026-08-17 07:40:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowzknzt/series-workflowzknzt-convert-artifact-4078836292/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-17 07:41:03 +0000 UTC FinishedAt: 2026-08-17 07:57:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-17 07:41:03 +0000 UTC FinishedAt: 2026-08-17 07:57:29 +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:*2ab0863f-7a01-400e-a879-230e41af7257,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-workflowzknzt/series-workflowzknzt-convert-artifact-4078836292/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": "6e7f96ee-928f-440a-beb9-3ce29ded6093", "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-workflowzknzt/series-workflowzknzt-build-action-3732168066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-17 07:41:03 +0000 UTC FinishedAt: 2026-08-17 07:57:19 +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:*2ab0863f-7a01-400e-a879-230e41af7257,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-workflowzknzt/series-workflowzknzt-convert-artifact-4078836292/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": "6e7f96ee-928f-440a-beb9-3ce29ded6093", "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-workflowzknzt/series-workflowzknzt-build-action-3732168066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-17 07:57:29 +0000 UTC FinishedAt: 2026-08-17 07:57:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-17 07:57:29 +0000 UTC FinishedAt: 2026-08-17 07:57:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-17 07:57:29 +0000 UTC FinishedAt: 2026-08-17 07:57:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-17 07:57:29 +0000 UTC FinishedAt: 2026-08-17 07:57:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowzknzt/series-workflowzknzt-convert-artifact-3274183875/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-17 07:57:39 +0000 UTC FinishedAt: 2026-08-17 07:59:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-17 07:57:39 +0000 UTC FinishedAt: 2026-08-17 07:59:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6e7f96ee-928f-440a-beb9-3ce29ded6093,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-workflowzknzt/series-workflowzknzt-build-action-3732168066/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-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-17 07:59:45 +0000 UTC FinishedAt: 2026-08-17 07:59:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-17 07:59:45 +0000 UTC FinishedAt: 2026-08-17 07:59:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-17 07:59:45 +0000 UTC FinishedAt: 2026-08-17 08:19:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-17 07:59:45 +0000 UTC FinishedAt: 2026-08-17 08:19:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2ab0863f-7a01-400e-a879-230e41af7257,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-workflowzknzt/series-workflowzknzt-convert-artifact-3274183875/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": "fe97f7fc-a83e-4b42-a9fe-3031618a92f9", "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-workflowzknzt/series-workflowzknzt-build-action-333938551/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-17 07:59:45 +0000 UTC FinishedAt: 2026-08-17 08:18:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2ab0863f-7a01-400e-a879-230e41af7257,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-workflowzknzt/series-workflowzknzt-convert-artifact-3274183875/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": "fe97f7fc-a83e-4b42-a9fe-3031618a92f9", "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-workflowzknzt/series-workflowzknzt-build-action-333938551/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-17 08:19:07 +0000 UTC FinishedAt: 2026-08-17 08:19:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-17 08:19:07 +0000 UTC FinishedAt: 2026-08-17 08:19:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-17 08:19:07 +0000 UTC FinishedAt: 2026-08-17 08:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-17 08:19:07 +0000 UTC FinishedAt: 2026-08-17 08:20:59 +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:*fe97f7fc-a83e-4b42-a9fe-3031618a92f9,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-workflowzknzt/series-workflowzknzt-build-action-333938551/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-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-17 08:21:09 +0000 UTC FinishedAt: 2026-08-17 08:23:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-17 08:21:09 +0000 UTC FinishedAt: 2026-08-17 08:23:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"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:*6e7f96ee-928f-440a-beb9-3ce29ded6093,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fe97f7fc-a83e-4b42-a9fe-3031618a92f9,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-workflowzknzt/series-workflowzknzt-build-action-3732168066/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-workflowzknzt/series-workflowzknzt-build-action-333938551/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-17 08:21:09 +0000 UTC FinishedAt: 2026-08-17 08:21:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-17 08:21:09 +0000 UTC FinishedAt: 2026-08-17 08:21:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"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-workflowzknzt/series-workflowzknzt-convert-artifact-1818435036/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-17 08:21:09 +0000 UTC FinishedAt: 2026-08-17 08:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-17 08:21:09 +0000 UTC FinishedAt: 2026-08-17 08:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-17 08:21:09 +0000 UTC FinishedAt: 2026-08-17 08:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-17 08:21:19 +0000 UTC FinishedAt: 2026-08-17 08:23:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzknzt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b5060a4aa33d7d78a8c1837ab08ef0c81ea96650","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"255ffcd9-dc1b-4803-bbf0-4352e5431e44","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-17 08:21:19 +0000 UTC FinishedAt: 2026-08-17 08:23:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6e7f96ee-928f-440a-beb9-3ce29ded6093,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fe97f7fc-a83e-4b42-a9fe-3031618a92f9,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-workflowzknzt/series-workflowzknzt-build-action-3732168066/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-workflowzknzt/series-workflowzknzt-build-action-333938551/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-workflowzknzt/series-workflowzknzt-convert-artifact-1818435036/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,}