Name: series-workflowbzwfn Phase: Succeeded StartedAt: 2026-07-15 11:41:07 +0000 UTC FinishedAt: 2026-07-15 13:49:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[0] Phase: Succeeded StartedAt: 2026-07-15 11:41:07 +0000 UTC FinishedAt: 2026-07-15 12:13:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 11:41:07 +0000 UTC FinishedAt: 2026-07-15 12:13:33 +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": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "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": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "series_id": "bf0ed846-297d-488e-94e1-315cfe0e5b52" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "svm_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+CgkJCTx0ZD4yMDI2LzA3LzE1IDEyOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGluIHRoZSBLVk0gQU1EIFNWTSBkcml2ZXIgdG8gaW5jcmVtZW50IHRoZSBgYXNpZF9nZW5lcmF0aW9uYCBpbnN0ZWFkIG9mIHJlc2V0dGluZyBpdCB0byAxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBBU0lEIGNvbGxpc2lvbnMgd2hlbiB2aXJ0dWFsaXphdGlvbiBpcyBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCAoZS5nLiwgZHVyaW5nIENQVSBob3RwbHVnIG9yIHN1c3BlbmQvcmVzdW1lKS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGNyZWF0aW5nIEtWTSBWTXMgb24gQU1EIHByb2Nlc3NvcnMgb3IgaW4gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYmMwNTViMGNkYmRlNGJmYzljNzBlNTE3NjFhMTkyZGQwOTZjOWZmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTI6MTI6MzUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbmluZGV4IDkxMjg2ZDQ2ZDEzYWRiLi5jMmM2NDg3YmQ1YmQxZiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbkBAIC01NzEsNyAmIzQzOzU3MSwxMiBAQCBzdGF0aWMgaW50IHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4gXHRcdHJldHVybiByO1xuIFxuIFx0c2QgPSBwZXJfY3B1X3B0cihcdTAwMjZzdm1fZGF0YSwgbWUpO1xuLVx0c2QtXHUwMDNlYXNpZF9nZW5lcmF0aW9uID0gMTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEJ1bXAgdGhlIGN1cnJlbnQgYXNpZF9nZW5lcmF0aW9uIHZhbHVlIHRvIGVuc3VyZSBhbnkgdkNQVSB0aGF0XG4mIzQzO1x0ICogcHJldmlvdXNseSByYW4gb24gdGhpcyBDUFUgc2VlcyBhIHN0YWxlIGdlbmVyYXRpb24gYW5kIGlzIGZvcmNlZFxuJiM0MztcdCAqIHRvIGFjcXVpcmUgYSBuZXcgQVNJRCwgcHJldmVudGluZyBhIGxhdGVudCBBU0lEIGNvbGxpc2lvbi5cbiYjNDM7XHQgKi9cbiYjNDM7XHRzZC1cdTAwM2Vhc2lkX2dlbmVyYXRpb24mIzQzOyYjNDM7O1xuIFx0c2QtXHUwMDNlbWF4X2FzaWQgPSBjcHVpZF9lYngoU1ZNX0NQVUlEX0ZVTkMpIC0gMTtcbiBcdHNkLVx1MDAzZW5leHRfYXNpZCA9IHNkLVx1MDAzZW1heF9hc2lkICYjNDM7IDE7XG4gXHRzZC1cdTAwM2VtaW5fYXNpZCA9IG1heF9zZXZfYXNpZCAmIzQzOyAxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEyOjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGluIHRoZSBLVk0gQU1EIFNWTSBkcml2ZXIgdG8gaW5jcmVtZW50IHRoZSBgYXNpZF9nZW5lcmF0aW9uYCBpbnN0ZWFkIG9mIHJlc2V0dGluZyBpdCB0byAxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBBU0lEIGNvbGxpc2lvbnMgd2hlbiB2aXJ0dWFsaXphdGlvbiBpcyBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCAoZS5nLiwgZHVyaW5nIENQVSBob3RwbHVnIG9yIHN1c3BlbmQvcmVzdW1lKS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGNyZWF0aW5nIEtWTSBWTXMgb24gQU1EIHByb2Nlc3NvcnMgb3IgaW4gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZiYzA1NWIwY2RiZGU0YmZjOWM3MGU1MTc2MWExOTJkZDA5NmM5ZmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAxMjoxMjozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCmluZGV4IDkxMjg2ZDQ2ZDEzYWRiLi5jMmM2NDg3YmQ1YmQxZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCkBAIC01NzEsNyAmIzQzOzU3MSwxMiBAQCBzdGF0aWMgaW50IHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpCiAJCXJldHVybiByOwogCiAJc2QgPSBwZXJfY3B1X3B0cigmYW1wO3N2bV9kYXRhLCBtZSk7Ci0Jc2QtJmd0O2FzaWRfZ2VuZXJhdGlvbiA9IDE7CiYjNDM7CS8qCiYjNDM7CSAqIEJ1bXAgdGhlIGN1cnJlbnQgYXNpZF9nZW5lcmF0aW9uIHZhbHVlIHRvIGVuc3VyZSBhbnkgdkNQVSB0aGF0CiYjNDM7CSAqIHByZXZpb3VzbHkgcmFuIG9uIHRoaXMgQ1BVIHNlZXMgYSBzdGFsZSBnZW5lcmF0aW9uIGFuZCBpcyBmb3JjZWQKJiM0MzsJICogdG8gYWNxdWlyZSBhIG5ldyBBU0lELCBwcmV2ZW50aW5nIGEgbGF0ZW50IEFTSUQgY29sbGlzaW9uLgomIzQzOwkgKi8KJiM0MzsJc2QtJmd0O2FzaWRfZ2VuZXJhdGlvbiYjNDM7JiM0Mzs7CiAJc2QtJmd0O21heF9hc2lkID0gY3B1aWRfZWJ4KFNWTV9DUFVJRF9GVU5DKSAtIDE7CiAJc2QtJmd0O25leHRfYXNpZCA9IHNkLSZndDttYXhfYXNpZCAmIzQzOyAxOwogCXNkLSZndDttaW5fYXNpZCA9IG1heF9zZXZfYXNpZCAmIzQzOyAxOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTMxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtWTSBTVk0gUGF0Y2gqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgdGhpcyBwYXRjaCwgcmlnaHQ/IEl0JiMzOTtzIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyB0aGlzIGluY3JlbWVudCB0byBgc2QtJmd0O2FzaWRfZ2VuZXJhdGlvbmA6IGl0IGdvZXMgZnJvbSBhc3NpZ25pbmcgMSB0byBzaW1wbHkgaW5jcmVtZW50aW5nIGl0LiBBIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIEtWTSBTVk0sIGRlYWxpbmcgd2l0aCBBTUQgdmlydHVhbGl6YXRpb24uCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZXZlbiByZWxldmFudCB0byBteSB3b3JrPyBJcyB0aGlzIGNvZGUgcGF0aCByZWFjaGFibGUsIGVzcGVjaWFsbHkgd2l0aGluIGVudmlyb25tZW50cyBJJiMzOTttIGludGVyZXN0ZWQgaW4sIGxpa2UgR0NFL1FFTVUgc2V0dXBzPyBTaW5jZSBJIGZvY3VzIGEgbG90IG9uIHN5emthbGxlciwgd2hpY2ggZnJlcXVlbnRseSBydW5zIG9uIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2hpY2gsIGFzIEkgcmVjYWxsLCBwcm92aWRlcyBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIEFuZCB0aGF0IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudCBpcyAqc29tZXRpbWVzKiBBTUQgYmFzZWQsIHRodXMgYWxsb3dpbmcgZm9yIEtWTSBTVk0gdG8gYmUgcmVsZXZhbnQuCgpUaGVyZWZvcmUsIHNpbmNlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBpcyB1c3VhbGx5IHJ1bm5pbmcsIHRoaXMgYEtWTSBTVk1gIGNvZGUgaXMgcHJvYmFibHkgcmVhY2hhYmxlLgoKTmV4dCwgSSBuZWVkIHRvIGRpZyBpbnRvIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaXRzZWxmIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXJ0aWN1bGFyIG1vZGlmaWNhdGlvbiwga25vd2luZyBub3cgdGhhdCBpdCYjMzk7cyBsaWtlbHkgYSBwYXRoIEkgc2hvdWxkIGJlIHBheWluZyBhdHRlbnRpb24gdG8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTUwPXN0YXRpYyB2b2lkIHN2bV9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTYxLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NjI6c3RhdGljIGludCBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NjMte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMxOT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzMjQtXHQuaGFyZHdhcmVfdW5zZXR1cCA9IHN2bV9oYXJkd2FyZV91bnNldHVwLFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1MzI1Olx0LmVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUgPSBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTMyNi1cdC5kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSA9IHN2bV9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSB1bmRlcnN0YW5kIGl0OgoKKipLVk0gQ1BVIFZpcnR1YWxpemF0aW9uIEFjdGl2YXRpb24gTG9naWMqKgoKT2theSwgc28gYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCB3aGVuZXZlciBLVk0gdmlydHVhbGl6YXRpb24gb24gdGhlIENQVSBpcyBhY3RpdmF0ZWQuIFRoYXQmIzM5O3MgdHJpZ2dlcmVkIHdoZW4gS1ZNIGl0c2VsZiBnZXRzIGxvYWRlZCwgb3IsIHBlcmhhcHMgbW9yZSBpbXBvcnRhbnRseSwgd2hlbiBhIHZpcnR1YWwgbWFjaGluZSBpcyBzcHVuIHVwIGFuZCBuZWVkcyB0byB1c2UgS1ZNLiBBIGtleSBwYXJ0IG9mIHRoZSBmbG93LgoKSGFuZyBvbiBhIHNlY29uZOKApiBJJiMzOTttIHJlbWVtYmVyaW5nIGBlbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBhY3R1YWxseSBkZWZpbmVkIHdpdGhpbiB0aGUgYGt2bV94ODZfb3BzYCBzdHJ1Y3R1cmUuIFRoYXQgdGVsbHMgbWUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgeDg2IGFyY2hpdGVjdHVyZSBhbmQgZGVlcGx5IHRpZWQgaW50byB0aGUgY29yZSBLVk0gb3BlcmF0aW9ucy4KClJpZ2h0LiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWNhbGx5IGZvciBTVk0gc3VwcG9ydCB0byBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIGNvcnJlY3QuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlnIHNheXMgYWJvdXQgU2VjdXJlIFZpcnR1YWwgTWFjaGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNX0FNRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNLUFNRCBWaXJ0dWFsaXphdGlvbiBFbmFibGVtZW50KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgS1ZNLUFNRCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdmlydHVhbGl6YXRpb24gaXMgZW5hYmxlZC4gVGhlIGNvbmZpZyBpcyBjbGVhcmx5IHNldCB0byBgS1ZNX0FNRGAsIHdoaWNoIGlzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmb2N1cyBvbiB0aGUgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBmdW5jdGlvbiBhcyBhIGtleSBzeW1ib2wsIGFuZCBpdCYjMzk7cyBsb2dpY2FsIGdpdmVuIHRoYXQgaXRzIG5hbWUgaXMgcHJldHR5IGluZGljYXRpdmUgb2Ygd2hhdCB3ZSYjMzk7cmUgYWZ0ZXIsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBpdHMgdXN1YWxseSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9yIHdoZW4gdGhlIHN5c3RlbSBpcyBjaGFuZ2luZyBDUFVzLCBlaXRoZXIgZHVlIHRvIGhvdHBsdWdnaW5nLCBvciBzdXNwZW5kL3Jlc3VtZSBldmVudHMuCgpBaCwgaGFuZyBvbiwgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSB0cmlnZ2VyZWQgZnJvbSB0aGUgS1ZNIGNvcmUg4oCTIHNwZWNpZmljYWxseSwgYGhhcmR3YXJlX2VuYWJsZV9hbGxgLCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2l0aGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLiBNYWtlcyBzZW5zZS4gU28sIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLCB0aGUgYmVzdCBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byB0cmFjZSB3aGVyZSBgZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaXMgYWN0dWFsbHkgYmVpbmcgaW52b2tlZCBmcm9tIHdpdGhpbiB0aGUgbGFyZ2VyIEtWTSBjb2RlYmFzZS4gVGhhdCB3aWxsIHByb3ZpZGUgdGhlIGNyaXRpY2FsIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zdm0uYz01NTA9c3RhdGljIHZvaWQgc3ZtX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NjEtXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU2MjpzdGF0aWMgaW50IHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU2My17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE5PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTMyNC1cdC5oYXJkd2FyZV91bnNldHVwID0gc3ZtX2hhcmR3YXJlX3Vuc2V0dXAsXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUzMjU6XHQuZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSA9IHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1LFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MzI2LVx0LmRpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gc3ZtX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1LFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg4MD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgdnRfeDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTg4Ni1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjg4NzpcdC5lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gdm14X2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUsXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04ODgtXHQuZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUgPSB2dF9vcChkaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSksXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0yOTY3PWludCB2bXhfY2hlY2tfcHJvY2Vzc29yX2NvbXBhdCh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzAwMy1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzAwNDppbnQgdm14X2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzAwNS17XG4tLVxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9MTY9aW50IHZteF9jaGVja19wcm9jZXNzb3JfY29tcGF0KHZvaWQpO1xuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg6MTc6aW50IHZteF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpO1xuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtMTgtdm9pZCB2bXhfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTY5ODc9aW50IGt2bV94ODZfdmVuZG9yX2luaXQoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjk5My1cbmFyY2gveDg2L2t2bS94ODYuYzo2OTk0Olx0aWYgKGt2bV94ODZfb3BzLmVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpIHtcbmFyY2gveDg2L2t2bS94ODYuYy02OTk1LVx0XHRwcl9lcnIoXCYjMzQ7YWxyZWFkeSBsb2FkZWQgdmVuZG9yIG1vZHVsZSAmIzM5OyVzJiMzOTtcXG5cJiMzNDssIGt2bV94ODZfb3BzLm5hbWUpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03MTM0LW91dF91bndpbmRfb3BzOlxuYXJjaC94ODYva3ZtL3g4Ni5jOjcxMzU6XHRrdm1feDg2X29wcy5lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gTlVMTDtcbmFyY2gveDg2L2t2bS94ODYuYy03MTM2LVx0a3ZtX3g4Nl9jYWxsKGhhcmR3YXJlX3Vuc2V0dXApKCk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTcxNDY9dm9pZCBrdm1feDg2X3ZlbmRvcl9leGl0KHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTcxNzQtXHRtdXRleF9sb2NrKFx1MDAyNnZlbmRvcl9tb2R1bGVfbG9jayk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzE3NTpcdGt2bV94ODZfb3BzLmVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUgPSBOVUxMO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTcxNzYtXHRtdXRleF91bmxvY2soXHUwMDI2dmVuZG9yX21vZHVsZV9sb2NrKTtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9OTY2MT12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTY2NS1cbmFyY2gveDg2L2t2bS94ODYuYzo5NjY2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTY2Ny17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2ODEtXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTY4MjpcdHJldCA9IGt2bV94ODZfY2FsbChlbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KSgpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTk2ODMtXHRpZiAocmV0ICE9IDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc0MAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNIENQVSBWaXJ0dWFsaXphdGlvbiBFbmFibGVtZW50IFBhdGgqKgoKUmlnaHQsIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YC4uLiB0aGF0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIHdpdGhpbiBLVk0sIHRoZSBjb3JlIHZpcnR1YWxpemF0aW9uIGluZnJhc3RydWN0dXJlLiBJdOKAmXMgcmVzcG9uc2libGUgZm9yLCB3ZWxsLCBlbmFibGluZyB0aGUgQ1BVIGZvciB2aXJ0dWFsaXphdGlvbi4gTmF0dXJhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBncmFwaC4gS25vd2luZyB3aGVyZSB0aGlzIGlzIGludm9rZWQgaXMgY3J1Y2lhbCBmb3IgZGVidWdnaW5nLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3Igc2ltcGx5IHVuZGVyc3RhbmRpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBTbywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAuIExldCYjMzk7cyBzZWUgd2hlcmUgdGhhdCBnZXRzIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgS1ZNIGNvcmUuIFRoaXMgd2lsbCBpbmZvcm0gbWUgYWJvdXQgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGFuZCB0aGUgY29udGV4dHMgdW5kZXIgd2hpY2ggQ1BVIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdGllcyBhcmUgYnJvdWdodCBvbmxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vYXJtLmM9MjI4OD1zdGF0aWMgdm9pZCBjcHVfaHlwX3VuaW5pdCh2b2lkICpkaXNjYXJkKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTIyOTUtXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoyMjk2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yMjk3LXtcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0yNTMzPXN0YXRpYyBpbnQgX19pbml0IGRvX3Brdm1faW5pdCh1MzIgaHlwX3ZhX2JpdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMjU0Ni1cdCAqIFRoZSBzdHViIGh5cGVyY2FsbHMgYXJlIG5vdyBkaXNhYmxlZCwgc28gc2V0IG91ciBsb2NhbCBmbGFnIHRvXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoyNTQ3Olx0ICogcHJldmVudCBhIGxhdGVyIHJlLWluaXQgYXR0ZW1wdCBpbiBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkuXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yNTQ4LVx0ICovXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYz0yODc9bG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0yOTItXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjI5MzppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0yOTQte1xuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTEyMz1pbnQga3ZtX2FyY2hfdmNwdV9zaG91bGRfa2ljayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTI3LVxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTI4OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMjkte1xuLS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYz0zMD1sb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMzUtXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MzY6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0zNy17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTk2NjE9dm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2NjUtXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTY2NjppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2Njcte1xuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNjU5PXZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTY2NS0gKi9cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNjY2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpO1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE2Njctdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MDI9c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYwNi1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NTYwNzpcdGlmIChrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkpIHtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYwOC1cdFx0cHJfaW5mbyhcJiMzNDtrdm06IGVuYWJsaW5nIHZpcnR1YWxpemF0aW9uIG9uIENQVSVkIGZhaWxlZFxcblwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkxNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB2aXJ0dWFsaXphdGlvbiBhbmQga2VybmVsIGludGVybmFsczoKCioqQW5hbHl6aW5nIHRoZSBWaXJ0dWFsaXphdGlvbiBFbnRyeSBQb2ludCoqCgpSaWdodCwgYGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YC4uLiB0aGF0JiMzOTtzIGEga2V5IGZ1bmN0aW9uLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGZsYXNoZXMgdG8gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGF0IHRlbGxzIG1lICpleGFjdGx5KiB3aGVyZSB0aGlzIGNydWNpYWwgcGllY2Ugb2YgY29kZSBsaXZlcywgd2hpY2ggaXMgaW5jcmVkaWJseSBoZWxwZnVsIGZvciBkZWJ1Z2dpbmcgb3IgdW5kZXJzdGFuZGluZyB0aGUgaW5pdGlhbCBzZXR1cC4gSSBrbm93IGBrdm1fbWFpbi5jYCBpcyB0aGUgaGVhcnQgb2YgS1ZNJiMzOTtzIGluaXRpYWxpemF0aW9uLCB0aGUgY29yZSBmaWxlIHNldHRpbmcgdXAgdGhlIHZpcnR1YWxpemF0aW9uIGluZnJhc3RydWN0dXJlIGZvciBhIHNwZWNpZmljIENQVS4gU28sIHRoaXMgZnVuY3Rpb24mIzM5O3MgbmFtZSBhbmQgaXRzIGZpbGUgbG9jYXRpb24gZ2l2ZSBtZSBhIHZlcnkgaGlnaC1sZXZlbCBjb250ZXh0IGltbWVkaWF0ZWx5LiBJJiMzOTttIHRoaW5raW5nLCAmIzM0O09rYXksIHRoaXMgaXMgd2hlcmUgYSBzcGVjaWZpYyBDUFUgaXMgYmVpbmcgcHJlcGFyZWQgdG8gcnVuIHZpcnR1YWwgbWFjaGluZXMgdXNpbmcgS1ZNLiYjMzQ7IEl04oCZcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBzcHJpbmdib2FyZCBmb3IgdGhlIHZpcnR1YWxpemF0aW9uIGpvdXJuZXkgZm9yIHRoYXQgY29yZS4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0IHdoZW4gdGhpbmtpbmcgYWJvdXQgZW5hYmxpbmcgS1ZNLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYz01NTk3PV9fd2VhayB2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MDEtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU2MDI6c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxudmlydC9rdm0va3ZtX21haW4uYy01NjAzLXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MTc9c3RhdGljIGludCBrdm1fb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYyMy1cdCAqL1xudmlydC9rdm0va3ZtX21haW4uYzo1NjI0Olx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MjUtfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTY3Nj1zdGF0aWMgdm9pZCBrdm1fcmVzdW1lKHZvaWQgKmRhdGEpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01NjgwLVxudmlydC9rdm0va3ZtX21haW4uYzo1NjgxOlx0V0FSTl9PTl9PTkNFKGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkpO1xudmlydC9rdm0va3ZtX21haW4uYy01NjgyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUxNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIENQVSBWaXJ0dWFsaXphdGlvbiBJbml0aWFsaXphdGlvbioqCgpIbW0sIHNvIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaXMgdHJpZ2dlcmVkLiBHb3QgaXQsIHRoYXQmIzM5O3Mgd2hhdCBJJiMzOTtkIGV4cGVjdCBvbiBDUFUgYnJpbmctdXAgb3IgcmVzdW1lLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGFsc28gZ2V0cyBjYWxsZWQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgYSBiaXQgZGlmZmVyZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvLCB0aGUgY2FsbCBzdGFjaywgYW5kIHRoZSBvdmVyYWxsIGNvbnRleHQuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgb3ZlcmxhcCBvciByZWR1bmRhbmN5LiBMZXQgbWUgc2VlIHdoZXJlIGBrdm1fb25saW5lX2NwdWAgZml0cyBpbnRvIHRoaXMgcGljdHVyZS4gVGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgY2xhcmlmeSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9vbmxpbmVfY3B1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MDI9c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYxNi1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NTYxNzpzdGF0aWMgaW50IGt2bV9vbmxpbmVfY3B1KHVuc2lnbmVkIGludCBjcHUpXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MTgte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTY5ND1zdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3MDUtXHRyID0gY3B1aHBfc2V0dXBfc3RhdGUoQ1BVSFBfQVBfS1ZNX09OTElORSwgXCYjMzQ7a3ZtL2NwdTpvbmxpbmVcJiMzNDssXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU3MDY6XHRcdFx0ICAgICAga3ZtX29ubGluZV9jcHUsIGt2bV9vZmZsaW5lX2NwdSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3MDctXHRpZiAocilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAwMwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBLVk0gSW5pdGlhbGl6YXRpb24gVGhvdWdodHMqKgoKT2theSwgc28gYGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25gIGlzIHRoZSBmdW5jdGlvbiB0aGF0IHJlYWxseSBnZXRzIHRoaW5ncyBnb2luZyB3aXRoIENQVSBob3RwbHVnZ2luZywgaXNuJiMzOTt0IGl0PyBJdCYjMzk7cyB0aGUgb25lIHRoYXQga2lja3Mgb2ZmIGBrdm1fb25saW5lX2NwdWAgZm9yICpldmVyeSogb25saW5lIENQVS4gSSYjMzk7bSB2aXN1YWxpemluZyB0aGUgd2hvbGUgcHJvY2VzcyBub3cuLi5pdCYjMzk7cyBjYWxsZWQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgaGF2ZSB0byBiZSBjbGVhciwgaXQgaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBWTSBpcyBicm91Z2h0IG9ubGluZSwgb3IgZXZlbiB3aGVuIHRoZSBtb2R1bGUgbG9hZHMsIGRlcGVuZGluZyBvbiB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gYmVpbmcgdXNlZC4KCk5vdywgSSYjMzk7bSB0cnlpbmcgdG8gbmFpbCBkb3duIHRoZSAqZXhhY3QqIGNhbGwgY2hhaW4uIElzIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uYCBjYWxsZWQgZGlyZWN0bHkgZnJvbSBga3ZtX2luaXRgLCB0aGUgbW9kdWxlJiMzOTtzIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCBvciBpcyBpdCBjb21pbmcgZnJvbSBga3ZtX2Rldl9pb2N0bF9jcmVhdGVfdm1gPyBHb3R0YSBjb25maXJtIHRoYXQgdG8gYmUgY29tcGxldGVseSBhY2N1cmF0ZSBhYm91dCB0aGUgc2V0dXAgc2VxdWVuY2UuIEl0JiMzOTtzIGEga2V5IGRldGFpbCBmb3IgZGVidWdnaW5nIG9yIHVuZGVyc3RhbmRpbmcgdGhlIHN0YXRlIHRyYW5zaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTEwODg9c3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2lvX2J1cyAqa3ZtX2dldF9idXNfZm9yX2Rlc3RydWN0aW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEwOTQtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjEwOTU6c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpO1xudmlydC9rdm0va3ZtX21haW4uYy0xMDk2LXN0YXRpYyB2b2lkIGt2bV9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MTA5OD1zdGF0aWMgc3RydWN0IGt2bSAqa3ZtX2NyZWF0ZV92bSh1bnNpZ25lZCBsb25nIHR5cGUsIGNvbnN0IGNoYXIgKmZkbmFtZSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTExNzktXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjExODA6XHRyID0ga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbigpO1xudmlydC9rdm0va3ZtX21haW4uYy0xMTgxLVx0aWYgKHIpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz01NTk3PV9fd2VhayB2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MDEtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU2MDI6c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxudmlydC9rdm0va3ZtX21haW4uYy01NjAzLXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MTc9c3RhdGljIGludCBrdm1fb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYyMy1cdCAqL1xudmlydC9rdm0va3ZtX21haW4uYzo1NjI0Olx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MjUtfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTY3Nj1zdGF0aWMgdm9pZCBrdm1fcmVzdW1lKHZvaWQgKmRhdGEpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01NjgwLVxudmlydC9rdm0va3ZtX21haW4uYzo1NjgxOlx0V0FSTl9PTl9PTkNFKGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkpO1xudmlydC9rdm0va3ZtX21haW4uYy01NjgyLX1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2OTA9c3RhdGljIHN0cnVjdCBzeXNjb3JlIGt2bV9zeXNjb3JlID0ge1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTY5My1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NTY5NDpzdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24odm9pZClcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTY5NS17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYz01NzUyPXN0YXRpYyBpbnQga3ZtX2luaXRfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3NTQtXHRpZiAoZW5hYmxlX3ZpcnRfYXRfbG9hZClcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTc1NTpcdFx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24oKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTc1Ni1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU3NjA9c3RhdGljIHZvaWQga3ZtX3VuaW5pdF92aXJ0dWFsaXphdGlvbih2b2lkKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTc2NS0jZWxzZSAvKiBDT05GSUdfS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkcgKi9cbnZpcnQva3ZtL2t2bV9tYWluLmM6NTc2NjpzdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24odm9pZClcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTc2Ny17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNDAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gQVNJRCBHZW5lcmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEtWTSBwYXRjaCBhbmQgaG93IGl0IGltcGFjdHMgQVNJRCBnZW5lcmF0aW9uLiBJdCBsb29rcyBsaWtlIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uYCBpcyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludCwgY2FsbGVkIGVpdGhlciBkdXJpbmcgVk0gY3JlYXRpb24gKGBrdm1fY3JlYXRlX3ZtYCkgb3IsIGltcG9ydGFudGx5LCBhdCBtb2R1bGUgbG9hZCBpZiBgZW5hYmxlX3ZpcnRfYXRfbG9hZGAgaXMgc2V0LiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHNpbXBsZTogdGhlIHBhdGNoIGluY3JlbWVudHMgYHNkLSZndDthc2lkX2dlbmVyYXRpb25gIGluc3RlYWQgb2YganVzdCBzZXR0aW5nIGl0IHRvIDEuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGJpZyBkZWFsOyBpdCBwcmV2ZW50cyBBU0lEIGNvbGxpc2lvbnMsIHdoaWNoIGlzIGVzc2VudGlhbCB3aGVuIHZpcnR1YWxpemF0aW9uIGlzIHRvZ2dsZWQgb3Igd2hlbiBDUFVzIGFyZSBob3RwbHVnZ2VkLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBzcG90IHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHN0YWJpbGl0eS4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIHdvdWxkIGJlIHRoZSBmdW5jdGlvbiB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZy4gQnV0IEkgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoaXMgZnVuY3Rpb24gaXNuJiMzOTt0IGluIGEgaG90IHBhdGg7IGl0JiMzOTtzIHRyaWdnZXJlZCBkdXJpbmcgVk0gY3JlYXRpb24gb3IgQ1BVIGhvdHBsdWcgZXZlbnRzLiBIbW0sIHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCwgc28gdGhhdCYjMzk7cyB0aGUgb25seSBmb2N1cyBzeW1ib2wgYXZhaWxhYmxlLgoKTm93IEkgbmVlZCB0byB0aGluayBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4gU2luY2UgdGhpcyBwYXRjaCBzZWVtcyBzcGVjaWZpYyB0byBBTUQmIzM5O3MgU1ZNLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBLVk1fQU1EYCBpcyBlbmFibGVkLiBMZXQgbWUgcXVpY2tseSBjaGVjayBpZiB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgc3VmZmljaWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTV9BTUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTYxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBpbml0aWFsIHRob3VnaHRzOgoKKipDb25maWd1cmluZyBLVk0gb24gYW4gQU1EIFN5c3RlbSoqCgpBbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB0aGF0IGBLVk1fQU1EYCBpcyBkZWZpbml0ZWx5IHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtLiBCdXQgaG9sZCBvbiwgSSBhbHNvIGtub3cgdGhhdCBgS1ZNYCBpdHNlbGYgaXMgYSBwcmVyZXF1aXNpdGUuIFRoaXMgbWVhbnMgSSYjMzk7dmUgZ290IGEgZGVwZW5kZW5jeSBpc3N1ZSB0byBzb3J0IG91dC4gTmF0dXJhbGx5LCBgS1ZNX0FNRGAgcmVsaWVzIG9uIGBLVk1gIHRvIGJlIGVuYWJsZWQgZmlyc3QuIExldCBtZSBqdXN0IHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBgYXJjaC94ODYva3ZtL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgcGxhY2UgdG8gZmluZCB0aGUgZGV0YWlsZWQgZGVwZW5kZW5jaWVzIGFuZCByZWxldmFudCBkZXNjcmlwdGlvbnMgZm9yIG9wdGlvbnMgbGlrZSBgS1ZNX0FNRGAuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgS1ZNX0FNRGAgaXMgbGlua2VkIHRvIGBLVk1gIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDA6XHRcdGhlbHBcbiAxNDE6XHRcdCAgUHJvdmlkZXMgc3VwcG9ydCBmb3IgbGF1bmNoaW5nIEludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpXG4gMTQyOlx0XHQgIGNvbmZpZGVudGlhbCBWTXMgb24gSW50ZWwgcHJvY2Vzc29ycy5cbiAxNDM6XHRcbiAxNDQ6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxNDU6XHRcbiAxNDY6XHRjb25maWcgS1ZNX0FNRFxuIDE0NzpcdFx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4gMTQ4Olx0XHRkZXBlbmRzIG9uIEtWTSBcdTAwMjZcdTAwMjYgKENQVV9TVVBfQU1EIHx8IENQVV9TVVBfSFlHT04pXG4gMTQ5Olx0XHRoZWxwXG4gMTUwOlx0XHQgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIEtWTSBvbiBBTUQgcHJvY2Vzc29ycyBlcXVpcHBlZCB3aXRoIHRoZSBBTUQtVlxuIDE1MTpcdFx0ICAoU1ZNKSBleHRlbnNpb25zLlxuIDE1MjpcdFxuIDE1MzpcdFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxNTQ6XHRcdCAgd2lsbCBiZSBjYWxsZWQga3ZtLWFtZC5cbiAxNTU6XHRcbiAxNTY6XHRjb25maWcgS1ZNX0FNRF9TRVZcbiAxNTc6XHRcdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuIDE1ODpcdFx0ZGVmYXVsdCB5XG4gMTU5Olx0XHRkZXBlbmRzIG9uIEtWTV9BTUQgXHUwMDI2XHUwMDI2IFg4Nl82NFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTI3CgkJCQkJCQlvdXRwdXQ6IDE0MAoJCQkJCQkJdGhvdWdodHM6IDQ0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIEFNRCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgY2hhbmdlIEkmIzM5O20gbG9va2luZyBhdCBmb2N1c2VzIG9uIGBLVk1fQU1EYCwgc3BlY2lmaWNhbGx5IHRoZSBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHNjYW4gY29uZmlybXMgdGhhdCB0aGlzIGlzIHRoZSBzb2xlIGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2gsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBUaGUgZnVuY3Rpb24mIzM5O3MgcmVhY2hhYmxlLCBuYXR1cmFsbHksIHRocm91Z2ggS1ZNIFZNIGNyZWF0aW9uIG9uIEFNRCBoYXJkd2FyZSwgb3IgaW4gbmVzdGVkIHZpcnR1YWxpemF0aW9uIHNldHVwcywgYW5kIHRoYXQgYWxvbmUgbWFrZXMgaXQgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuCgpMZXQmIzM5O3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9uJiMzOTtzIG5hbWUgYW5kIHNpZ25hdHVyZSDigJMgeWVwLCBpdOKAmXMgYHN0YXRpYyBpbnQgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClgLiBHb29kLgoKTm93IGZvciB0aGUgcmVhc29uaW5nLiBUaGUgcGF0Y2gmIzM5O3MgY29yZSBpcyBpbmNyZW1lbnRpbmcgYGFzaWRfZ2VuZXJhdGlvbmAgd2l0aGluIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaW5zdGVhZCBvZiByZXNldHRpbmcgaXQgdG8gMS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbjsgaXQmIzM5O3MgZGVzaWduZWQgdG8gc3RvcCBBU0lEIGNvbGxpc2lvbnMgZnJvbSBwb3BwaW5nIHVwIHdoZW4gdmlydHVhbGl6YXRpb24gZ2V0cyBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCwgYSBzY2VuYXJpbyB5b3UgbWlnaHQgc2VlIHdpdGggdGhpbmdzIGxpa2UgQ1BVIGhvdHBsdWdnaW5nIG9yIGR1cmluZyBzdXNwZW5kL3Jlc3VtZSBjeWNsZXMuIEJlY2F1c2UgdGhpcyBjb2RlIGdldHMgdXNlZCB3aGVuIGNyZWF0aW5nIEtWTSBWTXMgb24gQU1EIHN5c3RlbXMgb3IgbmVzdGVkIFZNcywgaXQgbWFrZXMgZnV6emluZyB0aGlzIGNvZGUgYSBwcmlvcml0eS4KClRoZSBrZXkgZm9jdXMgaXMgZGVmaW5pdGVseSBvbiBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLiBUaGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGlzIGBLVk1fQU1EYC4gSG9sZCBvbiwgSSBzaG91bGQgY2hlY2sg4oCTIGlzIHRoZXJlIGFub3RoZXIgcmVsZXZhbnQgY29uZmlnPyBBaCwgYENQVV9TVVBfQU1EYCBpcyBvZnRlbiBvbiBieSBkZWZhdWx0IG9uIHg4Nl82NCBzeXN0ZW1zLiBCdXQgYWN0dWFsbHksIGBLVk1fQU1EYCBhbHNvIGRlcGVuZHMgb24gYEtWTWAsIHNvIGp1c3QgYEtWTV9BTURgIGlzIHN1ZmZpY2llbnQuCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSBwYXRjaCBpdHNlbGYgYWdhaW4gZm9yIGNsYXJpdHk6CgpgYGBjCiAJc2QgPSBwZXJfY3B1X3B0cigmYW1wO3N2bV9kYXRhLCBtZSk7Ci0Jc2QtJmd0O2FzaWRfZ2VuZXJhdGlvbiA9IDE7CiYjNDM7CS8qCiYjNDM7CSAqIEJ1bXAgdGhlIGN1cnJlbnQgYXNpZF9nZW5lcmF0aW9uIHZhbHVlIHRvIGVuc3VyZSBhbnkgdkNQVSB0aGF0CiYjNDM7CSAqIHByZXZpb3VzbHkgcmFuIG9uIHRoaXMgQ1BVIHNlZXMgYSBzdGFsZSBnZW5lcmF0aW9uIGFuZCBpcyBmb3JjZWQKJiM0MzsJICogdG8gYWNxdWlyZSBhIG5ldyBBU0lELCBwcmV2ZW50aW5nIGEgbGF0ZW50IEFTSUQgY29sbGlzaW9uLgomIzQzOwkgKi8KJiM0MzsJc2QtJmd0O2FzaWRfZ2VuZXJhdGlvbiYjNDM7JiM0Mzs7CiAJc2QtJmd0O21heF9hc2lkID0gY3B1aWRfZWJ4KFNWTV9DUFVJRF9GVU5DKSAtIDE7CmBgYAoKSXQmIzM5O3MgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaW4gdGhlIEtWTSBBTUQgU1ZNIGRyaXZlciB0byBpbmNyZW1lbnQgdGhlIGBhc2lkX2dlbmVyYXRpb25gIGluc3RlYWQgb2YgcmVzZXR0aW5nIGl0IHRvIDEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIEFTSUQgY29sbGlzaW9ucyB3aGVuIHZpcnR1YWxpemF0aW9uIGlzIGRpc2FibGVkIGFuZCByZS1lbmFibGVkIChlLmcuLCBkdXJpbmcgQ1BVIGhvdHBsdWcgb3Igc3VzcGVuZC9yZXN1bWUpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gY3JlYXRpbmcgS1ZNIFZNcyBvbiBBTUQgcHJvY2Vzc29ycyBvciBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaW4gdGhlIEtWTSBBTUQgU1ZNIGRyaXZlciB0byBpbmNyZW1lbnQgdGhlIGBhc2lkX2dlbmVyYXRpb25gIGluc3RlYWQgb2YgcmVzZXR0aW5nIGl0IHRvIDEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIEFTSUQgY29sbGlzaW9ucyB3aGVuIHZpcnR1YWxpemF0aW9uIGlzIGRpc2FibGVkIGFuZCByZS1lbmFibGVkIChlLmcuLCBkdXJpbmcgQ1BVIGhvdHBsdWcgb3Igc3VzcGVuZC9yZXN1bWUpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gY3JlYXRpbmcgS1ZNIFZNcyBvbiBBTUQgcHJvY2Vzc29ycyBvciBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEyOjM3LjI2NTYxMDU0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDM0Njk0OTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaW4gdGhlIEtWTSBBTUQgU1ZNIGRyaXZlciB0byBpbmNyZW1lbnQgdGhlIGBhc2lkX2dlbmVyYXRpb25gIGluc3RlYWQgb2YgcmVzZXR0aW5nIGl0IHRvIDEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIEFTSUQgY29sbGlzaW9ucyB3aGVuIHZpcnR1YWxpemF0aW9uIGlzIGRpc2FibGVkIGFuZCByZS1lbmFibGVkIChlLmcuLCBkdXJpbmcgQ1BVIGhvdHBsdWcgb3Igc3VzcGVuZC9yZXN1bWUpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gY3JlYXRpbmcgS1ZNIFZNcyBvbiBBTUQgcHJvY2Vzc29ycyBvciBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTI6MzcuMjY1NjE5MDgzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTMwNDgzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmYmMwNTViMGNkYmRlNGJmYzljNzBlNTE3NjFhMTkyZGQwOTZjOWZmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDEyOjEyOjM1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuaW5kZXggOTEyODZkNDZkMTNhZGIuLmMyYzY0ODdiZDViZDFmIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuQEAgLTU3MSw3ICs1NzEsMTIgQEAgc3RhdGljIGludCBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbiBcXHRcXHRyZXR1cm4gcjtcXG4gXFxuIFxcdHNkID0gcGVyX2NwdV9wdHIoXFx1MDAyNnN2bV9kYXRhLCBtZSk7XFxuLVxcdHNkLVxcdTAwM2Vhc2lkX2dlbmVyYXRpb24gPSAxO1xcbitcXHQvKlxcbitcXHQgKiBCdW1wIHRoZSBjdXJyZW50IGFzaWRfZ2VuZXJhdGlvbiB2YWx1ZSB0byBlbnN1cmUgYW55IHZDUFUgdGhhdFxcbitcXHQgKiBwcmV2aW91c2x5IHJhbiBvbiB0aGlzIENQVSBzZWVzIGEgc3RhbGUgZ2VuZXJhdGlvbiBhbmQgaXMgZm9yY2VkXFxuK1xcdCAqIHRvIGFjcXVpcmUgYSBuZXcgQVNJRCwgcHJldmVudGluZyBhIGxhdGVudCBBU0lEIGNvbGxpc2lvbi5cXG4rXFx0ICovXFxuK1xcdHNkLVxcdTAwM2Vhc2lkX2dlbmVyYXRpb24rKztcXG4gXFx0c2QtXFx1MDAzZW1heF9hc2lkID0gY3B1aWRfZWJ4KFNWTV9DUFVJRF9GVU5DKSAtIDE7XFxuIFxcdHNkLVxcdTAwM2VuZXh0X2FzaWQgPSBzZC1cXHUwMDNlbWF4X2FzaWQgKyAxO1xcbiBcXHRzZC1cXHUwMDNlbWluX2FzaWQgPSBtYXhfc2V2X2FzaWQgKyAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjozNy44Nzk1MTYwMTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDIwNzc4MDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaW4gdGhlIEtWTSBBTUQgU1ZNIGRyaXZlciB0byBpbmNyZW1lbnQgdGhlIGBhc2lkX2dlbmVyYXRpb25gIGluc3RlYWQgb2YgcmVzZXR0aW5nIGl0IHRvIDEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIEFTSUQgY29sbGlzaW9ucyB3aGVuIHZpcnR1YWxpemF0aW9uIGlzIGRpc2FibGVkIGFuZCByZS1lbmFibGVkIChlLmcuLCBkdXJpbmcgQ1BVIGhvdHBsdWcgb3Igc3VzcGVuZC9yZXN1bWUpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gY3JlYXRpbmcgS1ZNIFZNcyBvbiBBTUQgcHJvY2Vzc29ycyBvciBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYmMwNTViMGNkYmRlNGJmYzljNzBlNTE3NjFhMTkyZGQwOTZjOWZmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTI6MTI6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuaW5kZXggOTEyODZkNDZkMTNhZGIuLmMyYzY0ODdiZDViZDFmIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuQEAgLTU3MSw3ICs1NzEsMTIgQEAgc3RhdGljIGludCBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuIFx0XHRyZXR1cm4gcjtcbiBcbiBcdHNkID0gcGVyX2NwdV9wdHIoXHUwMDI2c3ZtX2RhdGEsIG1lKTtcbi1cdHNkLVx1MDAzZWFzaWRfZ2VuZXJhdGlvbiA9IDE7XG4rXHQvKlxuK1x0ICogQnVtcCB0aGUgY3VycmVudCBhc2lkX2dlbmVyYXRpb24gdmFsdWUgdG8gZW5zdXJlIGFueSB2Q1BVIHRoYXRcbitcdCAqIHByZXZpb3VzbHkgcmFuIG9uIHRoaXMgQ1BVIHNlZXMgYSBzdGFsZSBnZW5lcmF0aW9uIGFuZCBpcyBmb3JjZWRcbitcdCAqIHRvIGFjcXVpcmUgYSBuZXcgQVNJRCwgcHJldmVudGluZyBhIGxhdGVudCBBU0lEIGNvbGxpc2lvbi5cbitcdCAqL1xuK1x0c2QtXHUwMDNlYXNpZF9nZW5lcmF0aW9uKys7XG4gXHRzZC1cdTAwM2VtYXhfYXNpZCA9IGNwdWlkX2VieChTVk1fQ1BVSURfRlVOQykgLSAxO1xuIFx0c2QtXHUwMDNlbmV4dF9hc2lkID0gc2QtXHUwMDNlbWF4X2FzaWQgKyAxO1xuIFx0c2QtXHUwMDNlbWluX2FzaWQgPSBtYXhfc2V2X2FzaWQgKyAxO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTI6MzcuODc5NTIwMjM1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE1NjMzMTA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gU1ZNIFBhdGNoKipcblxuT2theSwgc28gdGhlcmUncyB0aGlzIHBhdGNoLCByaWdodD8gSXQncyBpbiBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgdGhpcyBpbmNyZW1lbnQgdG8gYHNkLVx1MDAzZWFzaWRfZ2VuZXJhdGlvbmA6IGl0IGdvZXMgZnJvbSBhc3NpZ25pbmcgMSB0byBzaW1wbHkgaW5jcmVtZW50aW5nIGl0LiBBIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIEtWTSBTVk0sIGRlYWxpbmcgd2l0aCBBTUQgdmlydHVhbGl6YXRpb24uXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogaXMgdGhpcyBldmVuIHJlbGV2YW50IHRvIG15IHdvcms/IElzIHRoaXMgY29kZSBwYXRoIHJlYWNoYWJsZSwgZXNwZWNpYWxseSB3aXRoaW4gZW52aXJvbm1lbnRzIEknbSBpbnRlcmVzdGVkIGluLCBsaWtlIEdDRS9RRU1VIHNldHVwcz8gU2luY2UgSSBmb2N1cyBhIGxvdCBvbiBzeXprYWxsZXIsIHdoaWNoIGZyZXF1ZW50bHkgcnVucyBvbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoLCBhcyBJIHJlY2FsbCwgcHJvdmlkZXMgbmVzdGVkIHZpcnR1YWxpemF0aW9uLiBBbmQgdGhhdCBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQgaXMgKnNvbWV0aW1lcyogQU1EIGJhc2VkLCB0aHVzIGFsbG93aW5nIGZvciBLVk0gU1ZNIHRvIGJlIHJlbGV2YW50LlxuXG5UaGVyZWZvcmUsIHNpbmNlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBpcyB1c3VhbGx5IHJ1bm5pbmcsIHRoaXMgYEtWTSBTVk1gIGNvZGUgaXMgcHJvYmFibHkgcmVhY2hhYmxlLlxuXG5OZXh0LCBJIG5lZWQgdG8gZGlnIGludG8gYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpdHNlbGYgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhcnRpY3VsYXIgbW9kaWZpY2F0aW9uLCBrbm93aW5nIG5vdyB0aGF0IGl0J3MgbGlrZWx5IGEgcGF0aCBJIHNob3VsZCBiZSBwYXlpbmcgYXR0ZW50aW9uIHRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTMxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTI6NDMuMDM1ODUzNTk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Mzc3NDU3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTUwPXN0YXRpYyB2b2lkIHN2bV9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NjEtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NjI6c3RhdGljIGludCBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTYzLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMxOT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTMyNC1cXHQuaGFyZHdhcmVfdW5zZXR1cCA9IHN2bV9oYXJkd2FyZV91bnNldHVwLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTMyNTpcXHQuZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSA9IHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1LFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTMyNi1cXHQuZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUgPSBzdm1fZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEyOjQzLjUwOTYzMjYwM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDkxOTQ2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHVuZGVyc3RhbmQgaXQ6XG5cbioqS1ZNIENQVSBWaXJ0dWFsaXphdGlvbiBBY3RpdmF0aW9uIExvZ2ljKipcblxuT2theSwgc28gYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCB3aGVuZXZlciBLVk0gdmlydHVhbGl6YXRpb24gb24gdGhlIENQVSBpcyBhY3RpdmF0ZWQuIFRoYXQncyB0cmlnZ2VyZWQgd2hlbiBLVk0gaXRzZWxmIGdldHMgbG9hZGVkLCBvciwgcGVyaGFwcyBtb3JlIGltcG9ydGFudGx5LCB3aGVuIGEgdmlydHVhbCBtYWNoaW5lIGlzIHNwdW4gdXAgYW5kIG5lZWRzIHRvIHVzZSBLVk0uIEEga2V5IHBhcnQgb2YgdGhlIGZsb3cuXG5cbkhhbmcgb24gYSBzZWNvbmTigKYgSSdtIHJlbWVtYmVyaW5nIGBlbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBhY3R1YWxseSBkZWZpbmVkIHdpdGhpbiB0aGUgYGt2bV94ODZfb3BzYCBzdHJ1Y3R1cmUuIFRoYXQgdGVsbHMgbWUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgeDg2IGFyY2hpdGVjdHVyZSBhbmQgZGVlcGx5IHRpZWQgaW50byB0aGUgY29yZSBLVk0gb3BlcmF0aW9ucy5cblxuUmlnaHQuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBLVk0gY29uZmlndXJhdGlvbiBzcGVjaWZpY2FsbHkgZm9yIFNWTSBzdXBwb3J0IHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgY29ycmVjdC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZyBzYXlzIGFib3V0IFNlY3VyZSBWaXJ0dWFsIE1hY2hpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NDMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjo0Ni42MTg4Mjk2NDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM4NTU1MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTV9BTURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTM0PWNvbmZpZyBLVk1fSU5URUxfVERYXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjo0Ni43MTI2OTAwNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTc1NTAwMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0tQU1EIFZpcnR1YWxpemF0aW9uIEVuYWJsZW1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgS1ZNLUFNRCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdmlydHVhbGl6YXRpb24gaXMgZW5hYmxlZC4gVGhlIGNvbmZpZyBpcyBjbGVhcmx5IHNldCB0byBgS1ZNX0FNRGAsIHdoaWNoIGlzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmb2N1cyBvbiB0aGUgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBmdW5jdGlvbiBhcyBhIGtleSBzeW1ib2wsIGFuZCBpdCdzIGxvZ2ljYWwgZ2l2ZW4gdGhhdCBpdHMgbmFtZSBpcyBwcmV0dHkgaW5kaWNhdGl2ZSBvZiB3aGF0IHdlJ3JlIGFmdGVyLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgaXRzIHVzdWFsbHkgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciB3aGVuIHRoZSBzeXN0ZW0gaXMgY2hhbmdpbmcgQ1BVcywgZWl0aGVyIGR1ZSB0byBob3RwbHVnZ2luZywgb3Igc3VzcGVuZC9yZXN1bWUgZXZlbnRzLlxuXG5BaCwgaGFuZyBvbiwgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSB0cmlnZ2VyZWQgZnJvbSB0aGUgS1ZNIGNvcmUg4oCTIHNwZWNpZmljYWxseSwgYGhhcmR3YXJlX2VuYWJsZV9hbGxgLCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2l0aGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLiBNYWtlcyBzZW5zZS4gU28sIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgZ29pbmcgb24sIHRoZSBiZXN0IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIHRyYWNlIHdoZXJlIGBlbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBhY3R1YWxseSBiZWluZyBpbnZva2VkIGZyb20gd2l0aGluIHRoZSBsYXJnZXIgS1ZNIGNvZGViYXNlLiBUaGF0IHdpbGwgcHJvdmlkZSB0aGUgY3JpdGljYWwgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEyOjUwLjExMDI0MTcyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2OTg1MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTU1MD1zdGF0aWMgdm9pZCBzdm1fZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTYxLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTYyOnN0YXRpYyBpbnQgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU2My17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTk9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzMjQtXFx0LmhhcmR3YXJlX3Vuc2V0dXAgPSBzdm1faGFyZHdhcmVfdW5zZXR1cCxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUzMjU6XFx0LmVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUgPSBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzMjYtXFx0LmRpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gc3ZtX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04ODYtXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6ODg3OlxcdC5lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gdm14X2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUsXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtODg4LVxcdC5kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSA9IHZ0X29wKGRpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9Mjk2Nz1pbnQgdm14X2NoZWNrX3Byb2Nlc3Nvcl9jb21wYXQodm9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzAwMy1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMwMDQ6aW50IHZteF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMDA1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oPTE2PWludCB2bXhfY2hlY2tfcHJvY2Vzc29yX2NvbXBhdCh2b2lkKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaDoxNzppbnQgdm14X2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtMTgtdm9pZCB2bXhfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9Njk4Nz1pbnQga3ZtX3g4Nl92ZW5kb3JfaW5pdChzdHJ1Y3Qga3ZtX3g4Nl9pbml0X29wcyAqb3BzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5OTMtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjY5OTQ6XFx0aWYgKGt2bV94ODZfb3BzLmVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpIHtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjk5NS1cXHRcXHRwcl9lcnIoXFxcImFscmVhZHkgbG9hZGVkIHZlbmRvciBtb2R1bGUgJyVzJ1xcXFxuXFxcIiwga3ZtX3g4Nl9vcHMubmFtZSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzEzNC1vdXRfdW53aW5kX29wczpcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzEzNTpcXHRrdm1feDg2X29wcy5lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gTlVMTDtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzEzNi1cXHRrdm1feDg2X2NhbGwoaGFyZHdhcmVfdW5zZXR1cCkoKTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz03MTQ2PXZvaWQga3ZtX3g4Nl92ZW5kb3JfZXhpdCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTcxNzQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2dmVuZG9yX21vZHVsZV9sb2NrKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzE3NTpcXHRrdm1feDg2X29wcy5lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gTlVMTDtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzE3Ni1cXHRtdXRleF91bmxvY2soXFx1MDAyNnZlbmRvcl9tb2R1bGVfbG9jayk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9OTY2MT12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy05NjY1LVxcbmFyY2gveDg2L2t2bS94ODYuYzo5NjY2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2Njcte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2ODEtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjk2ODI6XFx0cmV0ID0ga3ZtX3g4Nl9jYWxsKGVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpKCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2ODMtXFx0aWYgKHJldCAhPSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjo1MC4yMDcyMzMyMTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTMzNDAyMDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNIENQVSBWaXJ0dWFsaXphdGlvbiBFbmFibGVtZW50IFBhdGgqKlxuXG5SaWdodCwgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLi4uIHRoYXQncyBhIGtleSBmdW5jdGlvbiB3aXRoaW4gS1ZNLCB0aGUgY29yZSB2aXJ0dWFsaXphdGlvbiBpbmZyYXN0cnVjdHVyZS4gSXTigJlzIHJlc3BvbnNpYmxlIGZvciwgd2VsbCwgZW5hYmxpbmcgdGhlIENQVSBmb3IgdmlydHVhbGl6YXRpb24uIE5hdHVyYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgZ3JhcGguIEtub3dpbmcgd2hlcmUgdGhpcyBpcyBpbnZva2VkIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIG9yIHNpbXBseSB1bmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gU28sIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLiBMZXQncyBzZWUgd2hlcmUgdGhhdCBnZXRzIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgS1ZNIGNvcmUuIFRoaXMgd2lsbCBpbmZvcm0gbWUgYWJvdXQgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGFuZCB0aGUgY29udGV4dHMgdW5kZXIgd2hpY2ggQ1BVIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdGllcyBhcmUgYnJvdWdodCBvbmxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NDAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjo1My4zNDA2Mzc3NzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTc4NzYzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vYXJtLmM9MjI4OD1zdGF0aWMgdm9pZCBjcHVfaHlwX3VuaW5pdCh2b2lkICpkaXNjYXJkKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMjI5NS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoyMjk2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMjI5Ny17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0yNTMzPXN0YXRpYyBpbnQgX19pbml0IGRvX3Brdm1faW5pdCh1MzIgaHlwX3ZhX2JpdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yNTQ2LVxcdCAqIFRoZSBzdHViIGh5cGVyY2FsbHMgYXJlIG5vdyBkaXNhYmxlZCwgc28gc2V0IG91ciBsb2NhbCBmbGFnIHRvXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MjU0NzpcXHQgKiBwcmV2ZW50IGEgbGF0ZXIgcmUtaW5pdCBhdHRlbXB0IGluIGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUoKS5cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yNTQ4LVxcdCAqL1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYz0yODc9bG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTI5Mi1cXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjI5MzppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMjk0LXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTEyMz1pbnQga3ZtX2FyY2hfdmNwdV9zaG91bGRfa2ljayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMjctXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTI4OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTI5LXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYz0zMD1sb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0zNS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MzY6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMzcte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTk2NjE9dm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTY2NS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTY2NjppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbmFyY2gveDg2L2t2bS94ODYuYy05NjY3LXtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNjU5PXZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKTtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjY1LSAqL1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNjY2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpO1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjY3LXZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MDI9c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NjA2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTYwNzpcXHRpZiAoa3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpKSB7XFxudmlydC9rdm0va3ZtX21haW4uYy01NjA4LVxcdFxcdHByX2luZm8oXFxcImt2bTogZW5hYmxpbmcgdmlydHVhbGl6YXRpb24gb24gQ1BVJWQgZmFpbGVkXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjo1NS42NTg1MjE2NTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzMzgxODc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHZpcnR1YWxpemF0aW9uIGFuZCBrZXJuZWwgaW50ZXJuYWxzOlxuXG4qKkFuYWx5emluZyB0aGUgVmlydHVhbGl6YXRpb24gRW50cnkgUG9pbnQqKlxuXG5SaWdodCwgYGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YC4uLiB0aGF0J3MgYSBrZXkgZnVuY3Rpb24uIE15IG1pbmQgaW1tZWRpYXRlbHkgZmxhc2hlcyB0byBgdmlydC9rdm0va3ZtX21haW4uY2AuIFRoYXQgdGVsbHMgbWUgKmV4YWN0bHkqIHdoZXJlIHRoaXMgY3J1Y2lhbCBwaWVjZSBvZiBjb2RlIGxpdmVzLCB3aGljaCBpcyBpbmNyZWRpYmx5IGhlbHBmdWwgZm9yIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsIHNldHVwLiBJIGtub3cgYGt2bV9tYWluLmNgIGlzIHRoZSBoZWFydCBvZiBLVk0ncyBpbml0aWFsaXphdGlvbiwgdGhlIGNvcmUgZmlsZSBzZXR0aW5nIHVwIHRoZSB2aXJ0dWFsaXphdGlvbiBpbmZyYXN0cnVjdHVyZSBmb3IgYSBzcGVjaWZpYyBDUFUuIFNvLCB0aGlzIGZ1bmN0aW9uJ3MgbmFtZSBhbmQgaXRzIGZpbGUgbG9jYXRpb24gZ2l2ZSBtZSBhIHZlcnkgaGlnaC1sZXZlbCBjb250ZXh0IGltbWVkaWF0ZWx5LiBJJ20gdGhpbmtpbmcsIFwiT2theSwgdGhpcyBpcyB3aGVyZSBhIHNwZWNpZmljIENQVSBpcyBiZWluZyBwcmVwYXJlZCB0byBydW4gdmlydHVhbCBtYWNoaW5lcyB1c2luZyBLVk0uXCIgSXTigJlzIHRoZSBlbnRyeSBwb2ludCwgdGhlIHNwcmluZ2JvYXJkIGZvciB0aGUgdmlydHVhbGl6YXRpb24gam91cm5leSBmb3IgdGhhdCBjb3JlLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB3aGVuIHRoaW5raW5nIGFib3V0IGVuYWJsaW5nIEtWTS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkxNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEyOjU4Ljg5MjM0MjMyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc1NDAyNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTU1OTc9X193ZWFrIHZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NjAxLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTYwMjpzdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxudmlydC9rdm0va3ZtX21haW4uYy01NjAzLXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NTYxNz1zdGF0aWMgaW50IGt2bV9vbmxpbmVfY3B1KHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MjMtXFx0ICovXFxudmlydC9rdm0va3ZtX21haW4uYzo1NjI0OlxcdHJldHVybiBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYyNS19XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2NzY9c3RhdGljIHZvaWQga3ZtX3Jlc3VtZSh2b2lkICpkYXRhKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NjgwLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTY4MTpcXHRXQVJOX09OX09OQ0Uoa3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUoKSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01NjgyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTI6NTguOTg5OTAyMjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0OTU1MDYwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgQ1BVIFZpcnR1YWxpemF0aW9uIEluaXRpYWxpemF0aW9uKipcblxuSG1tLCBzbyBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGlzIHRyaWdnZXJlZC4gR290IGl0LCB0aGF0J3Mgd2hhdCBJJ2QgZXhwZWN0IG9uIENQVSBicmluZy11cCBvciByZXN1bWUuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgYWxzbyBnZXRzIGNhbGxlZCBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uLCB3aGljaCBpcyBhIGJpdCBkaWZmZXJlbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28sIHRoZSBjYWxsIHN0YWNrLCBhbmQgdGhlIG92ZXJhbGwgY29udGV4dC4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBvdmVybGFwIG9yIHJlZHVuZGFuY3kuIExldCBtZSBzZWUgd2hlcmUgYGt2bV9vbmxpbmVfY3B1YCBmaXRzIGludG8gdGhpcyBwaWN0dXJlLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBjbGFyaWZ5IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUxNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEzOjAxLjkzOTQ1NTg5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODA0NTU5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fb25saW5lX2NwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9NTYwMj1zdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MTYtXFxudmlydC9rdm0va3ZtX21haW4uYzo1NjE3OnN0YXRpYyBpbnQga3ZtX29ubGluZV9jcHUodW5zaWduZWQgaW50IGNwdSlcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MTgte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01Njk0PXN0YXRpYyBpbnQga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NzA1LVxcdHIgPSBjcHVocF9zZXR1cF9zdGF0ZShDUFVIUF9BUF9LVk1fT05MSU5FLCBcXFwia3ZtL2NwdTpvbmxpbmVcXFwiLFxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTcwNjpcXHRcXHRcXHQgICAgICBrdm1fb25saW5lX2NwdSwga3ZtX29mZmxpbmVfY3B1KTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3MDctXFx0aWYgKHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEzOjAyLjAxNzUwNTQzMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzAxMDYzNjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEtWTSBJbml0aWFsaXphdGlvbiBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCByZWFsbHkgZ2V0cyB0aGluZ3MgZ29pbmcgd2l0aCBDUFUgaG90cGx1Z2dpbmcsIGlzbid0IGl0PyBJdCdzIHRoZSBvbmUgdGhhdCBraWNrcyBvZmYgYGt2bV9vbmxpbmVfY3B1YCBmb3IgKmV2ZXJ5KiBvbmxpbmUgQ1BVLiBJJ20gdmlzdWFsaXppbmcgdGhlIHdob2xlIHByb2Nlc3Mgbm93Li4uaXQncyBjYWxsZWQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgaGF2ZSB0byBiZSBjbGVhciwgaXQgaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBWTSBpcyBicm91Z2h0IG9ubGluZSwgb3IgZXZlbiB3aGVuIHRoZSBtb2R1bGUgbG9hZHMsIGRlcGVuZGluZyBvbiB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gYmVpbmcgdXNlZC5cblxuTm93LCBJJ20gdHJ5aW5nIHRvIG5haWwgZG93biB0aGUgKmV4YWN0KiBjYWxsIGNoYWluLiBJcyBga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbmAgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGt2bV9pbml0YCwgdGhlIG1vZHVsZSdzIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCBvciBpcyBpdCBjb21pbmcgZnJvbSBga3ZtX2Rldl9pb2N0bF9jcmVhdGVfdm1gPyBHb3R0YSBjb25maXJtIHRoYXQgdG8gYmUgY29tcGxldGVseSBhY2N1cmF0ZSBhYm91dCB0aGUgc2V0dXAgc2VxdWVuY2UuIEl0J3MgYSBrZXkgZGV0YWlsIGZvciBkZWJ1Z2dpbmcgb3IgdW5kZXJzdGFuZGluZyB0aGUgc3RhdGUgdHJhbnNpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMDMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTM6MDUuNzE4NTcwNjYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjUxMjQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0xMDg4PXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9pb19idXMgKmt2bV9nZXRfYnVzX2Zvcl9kZXN0cnVjdGlvbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEwOTQtXFxudmlydC9rdm0va3ZtX21haW4uYzoxMDk1OnN0YXRpYyBpbnQga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEwOTYtc3RhdGljIHZvaWQga3ZtX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZCk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTEwOTg9c3RhdGljIHN0cnVjdCBrdm0gKmt2bV9jcmVhdGVfdm0odW5zaWduZWQgbG9uZyB0eXBlLCBjb25zdCBjaGFyICpmZG5hbWUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTExNzktXFxudmlydC9rdm0va3ZtX21haW4uYzoxMTgwOlxcdHIgPSBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uKCk7XFxudmlydC9rdm0va3ZtX21haW4uYy0xMTgxLVxcdGlmIChyKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01NTk3PV9fd2VhayB2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYwMS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU2MDI6c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYwMy17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MTc9c3RhdGljIGludCBrdm1fb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NjIzLVxcdCAqL1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTYyNDpcXHRyZXR1cm4ga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUoKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MjUtfVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01Njc2PXN0YXRpYyB2b2lkIGt2bV9yZXN1bWUodm9pZCAqZGF0YSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTY4MC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU2ODE6XFx0V0FSTl9PTl9PTkNFKGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTY4Mi19XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2OTA9c3RhdGljIHN0cnVjdCBzeXNjb3JlIGt2bV9zeXNjb3JlID0ge1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NjkzLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTY5NDpzdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24odm9pZClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2OTUte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01NzUyPXN0YXRpYyBpbnQga3ZtX2luaXRfdmlydHVhbGl6YXRpb24odm9pZClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTc1NC1cXHRpZiAoZW5hYmxlX3ZpcnRfYXRfbG9hZClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU3NTU6XFx0XFx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24oKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3NTYtXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU3NjA9c3RhdGljIHZvaWQga3ZtX3VuaW5pdF92aXJ0dWFsaXphdGlvbih2b2lkKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NzY1LSNlbHNlIC8qIENPTkZJR19LVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElORyAqL1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTc2NjpzdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24odm9pZClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3Njcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMzowNS44MTUwOTA0NTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIzMjAwMDY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTSBBU0lEIEdlbmVyYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEtWTSBwYXRjaCBhbmQgaG93IGl0IGltcGFjdHMgQVNJRCBnZW5lcmF0aW9uLiBJdCBsb29rcyBsaWtlIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uYCBpcyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludCwgY2FsbGVkIGVpdGhlciBkdXJpbmcgVk0gY3JlYXRpb24gKGBrdm1fY3JlYXRlX3ZtYCkgb3IsIGltcG9ydGFudGx5LCBhdCBtb2R1bGUgbG9hZCBpZiBgZW5hYmxlX3ZpcnRfYXRfbG9hZGAgaXMgc2V0LiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHNpbXBsZTogdGhlIHBhdGNoIGluY3JlbWVudHMgYHNkLVx1MDAzZWFzaWRfZ2VuZXJhdGlvbmAgaW5zdGVhZCBvZiBqdXN0IHNldHRpbmcgaXQgdG8gMS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgYmlnIGRlYWw7IGl0IHByZXZlbnRzIEFTSUQgY29sbGlzaW9ucywgd2hpY2ggaXMgZXNzZW50aWFsIHdoZW4gdmlydHVhbGl6YXRpb24gaXMgdG9nZ2xlZCBvciB3aGVuIENQVXMgYXJlIGhvdHBsdWdnZWQuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHNwb3Qgd29ydGggZnV6emluZyB0byBlbnN1cmUgc3RhYmlsaXR5LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCB3b3VsZCBiZSB0aGUgZnVuY3Rpb24gdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcuIEJ1dCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzbid0IGluIGEgaG90IHBhdGg7IGl0J3MgdHJpZ2dlcmVkIGR1cmluZyBWTSBjcmVhdGlvbiBvciBDUFUgaG90cGx1ZyBldmVudHMuIEhtbSwgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLCBzbyB0aGF0J3MgdGhlIG9ubHkgZm9jdXMgc3ltYm9sIGF2YWlsYWJsZS5cblxuTm93IEkgbmVlZCB0byB0aGluayBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4gU2luY2UgdGhpcyBwYXRjaCBzZWVtcyBzcGVjaWZpYyB0byBBTUQncyBTVk0sIEkgbmVlZCB0byBtYWtlIHN1cmUgYEtWTV9BTURgIGlzIGVuYWJsZWQuIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIHRoYXQgY29uZmlndXJhdGlvbiBpcyBzdWZmaWNpZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjQwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEzOjExLjA0NzA5MzQ5NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk1NTQ2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTV9BTURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTM0PWNvbmZpZyBLVk1fSU5URUxfVERYXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMzoxMS4xNDY2NTk3NTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NTc0MjY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0czpcblxuKipDb25maWd1cmluZyBLVk0gb24gYW4gQU1EIFN5c3RlbSoqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRoYXQgYEtWTV9BTURgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0uIEJ1dCBob2xkIG9uLCBJIGFsc28ga25vdyB0aGF0IGBLVk1gIGl0c2VsZiBpcyBhIHByZXJlcXVpc2l0ZS4gVGhpcyBtZWFucyBJJ3ZlIGdvdCBhIGRlcGVuZGVuY3kgaXNzdWUgdG8gc29ydCBvdXQuIE5hdHVyYWxseSwgYEtWTV9BTURgIHJlbGllcyBvbiBgS1ZNYCB0byBiZSBlbmFibGVkIGZpcnN0LiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgYGFyY2gveDg2L2t2bS9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdXN1YWxseSB0aGUgcGxhY2UgdG8gZmluZCB0aGUgZGV0YWlsZWQgZGVwZW5kZW5jaWVzIGFuZCByZWxldmFudCBkZXNjcmlwdGlvbnMgZm9yIG9wdGlvbnMgbGlrZSBgS1ZNX0FNRGAuIEknbGwgY29uZmlybSB0aGF0IGBLVk1fQU1EYCBpcyBsaW5rZWQgdG8gYEtWTWAgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5NjEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMzoxNC41MzI0MDUwNDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0MDpcXHRcXHRoZWxwXFxuIDE0MTpcXHRcXHQgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIGxhdW5jaGluZyBJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKVxcbiAxNDI6XFx0XFx0ICBjb25maWRlbnRpYWwgVk1zIG9uIEludGVsIHByb2Nlc3NvcnMuXFxuIDE0MzpcXHRcXG4gMTQ0OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTQ1OlxcdFxcbiAxNDY6XFx0Y29uZmlnIEtWTV9BTURcXG4gMTQ3OlxcdFxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuIDE0ODpcXHRcXHRkZXBlbmRzIG9uIEtWTSBcXHUwMDI2XFx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcXG4gMTQ5OlxcdFxcdGhlbHBcXG4gMTUwOlxcdFxcdCAgUHJvdmlkZXMgc3VwcG9ydCBmb3IgS1ZNIG9uIEFNRCBwcm9jZXNzb3JzIGVxdWlwcGVkIHdpdGggdGhlIEFNRC1WXFxuIDE1MTpcXHRcXHQgIChTVk0pIGV4dGVuc2lvbnMuXFxuIDE1MjpcXHRcXG4gMTUzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDE1NDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGt2bS1hbWQuXFxuIDE1NTpcXHRcXG4gMTU2OlxcdGNvbmZpZyBLVk1fQU1EX1NFVlxcbiAxNTc6XFx0XFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4gMTU4OlxcdFxcdGRlZmF1bHQgeVxcbiAxNTk6XFx0XFx0ZGVwZW5kcyBvbiBLVk1fQU1EIFxcdTAwMjZcXHUwMDI2IFg4Nl82NFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMzoxNC41MzI1NTY5NjZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYxMDY0MDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIEFNRCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjaGFuZ2UgSSdtIGxvb2tpbmcgYXQgZm9jdXNlcyBvbiBgS1ZNX0FNRGAsIHNwZWNpZmljYWxseSB0aGUgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBzY2FuIGNvbmZpcm1zIHRoYXQgdGhpcyBpcyB0aGUgc29sZSBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCBieSB0aGlzIHBhdGNoLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhlIGZ1bmN0aW9uJ3MgcmVhY2hhYmxlLCBuYXR1cmFsbHksIHRocm91Z2ggS1ZNIFZNIGNyZWF0aW9uIG9uIEFNRCBoYXJkd2FyZSwgb3IgaW4gbmVzdGVkIHZpcnR1YWxpemF0aW9uIHNldHVwcywgYW5kIHRoYXQgYWxvbmUgbWFrZXMgaXQgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cbkxldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBmdW5jdGlvbidzIG5hbWUgYW5kIHNpZ25hdHVyZSDigJMgeWVwLCBpdOKAmXMgYHN0YXRpYyBpbnQgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClgLiBHb29kLlxuXG5Ob3cgZm9yIHRoZSByZWFzb25pbmcuIFRoZSBwYXRjaCdzIGNvcmUgaXMgaW5jcmVtZW50aW5nIGBhc2lkX2dlbmVyYXRpb25gIHdpdGhpbiBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGluc3RlYWQgb2YgcmVzZXR0aW5nIGl0IHRvIDEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb247IGl0J3MgZGVzaWduZWQgdG8gc3RvcCBBU0lEIGNvbGxpc2lvbnMgZnJvbSBwb3BwaW5nIHVwIHdoZW4gdmlydHVhbGl6YXRpb24gZ2V0cyBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCwgYSBzY2VuYXJpbyB5b3UgbWlnaHQgc2VlIHdpdGggdGhpbmdzIGxpa2UgQ1BVIGhvdHBsdWdnaW5nIG9yIGR1cmluZyBzdXNwZW5kL3Jlc3VtZSBjeWNsZXMuIEJlY2F1c2UgdGhpcyBjb2RlIGdldHMgdXNlZCB3aGVuIGNyZWF0aW5nIEtWTSBWTXMgb24gQU1EIHN5c3RlbXMgb3IgbmVzdGVkIFZNcywgaXQgbWFrZXMgZnV6emluZyB0aGlzIGNvZGUgYSBwcmlvcml0eS5cblxuVGhlIGtleSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAuIFRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXMgYEtWTV9BTURgLiBIb2xkIG9uLCBJIHNob3VsZCBjaGVjayDigJMgaXMgdGhlcmUgYW5vdGhlciByZWxldmFudCBjb25maWc/IEFoLCBgQ1BVX1NVUF9BTURgIGlzIG9mdGVuIG9uIGJ5IGRlZmF1bHQgb24geDg2XzY0IHN5c3RlbXMuIEJ1dCBhY3R1YWxseSwgYEtWTV9BTURgIGFsc28gZGVwZW5kcyBvbiBgS1ZNYCwgc28ganVzdCBgS1ZNX0FNRGAgaXMgc3VmZmljaWVudC5cblxuTGV0J3MgcmV2aWV3IHRoZSBwYXRjaCBpdHNlbGYgYWdhaW4gZm9yIGNsYXJpdHk6XG5cbmBgYGNcbiBcdHNkID0gcGVyX2NwdV9wdHIoXHUwMDI2c3ZtX2RhdGEsIG1lKTtcbi1cdHNkLVx1MDAzZWFzaWRfZ2VuZXJhdGlvbiA9IDE7XG4rXHQvKlxuK1x0ICogQnVtcCB0aGUgY3VycmVudCBhc2lkX2dlbmVyYXRpb24gdmFsdWUgdG8gZW5zdXJlIGFueSB2Q1BVIHRoYXRcbitcdCAqIHByZXZpb3VzbHkgcmFuIG9uIHRoaXMgQ1BVIHNlZXMgYSBzdGFsZSBnZW5lcmF0aW9uIGFuZCBpcyBmb3JjZWRcbitcdCAqIHRvIGFjcXVpcmUgYSBuZXcgQVNJRCwgcHJldmVudGluZyBhIGxhdGVudCBBU0lEIGNvbGxpc2lvbi5cbitcdCAqL1xuK1x0c2QtXHUwMDNlYXNpZF9nZW5lcmF0aW9uKys7XG4gXHRzZC1cdTAwM2VtYXhfYXNpZCA9IGNwdWlkX2VieChTVk1fQ1BVSURfRlVOQykgLSAxO1xuYGBgXG5cbkl0J3MgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gQWxyaWdodCwgSSdtIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MjcsIk91dHB1dFRva2VucyI6MTQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTM6MjIuMTQzMjAwNjE1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3MDg3OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGluIHRoZSBLVk0gQU1EIFNWTSBkcml2ZXIgdG8gaW5jcmVtZW50IHRoZSBgYXNpZF9nZW5lcmF0aW9uYCBpbnN0ZWFkIG9mIHJlc2V0dGluZyBpdCB0byAxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBBU0lEIGNvbGxpc2lvbnMgd2hlbiB2aXJ0dWFsaXphdGlvbiBpcyBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCAoZS5nLiwgZHVyaW5nIENQVSBob3RwbHVnIG9yIHN1c3BlbmQvcmVzdW1lKS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGNyZWF0aW5nIEtWTSBWTXMgb24gQU1EIHByb2Nlc3NvcnMgb3IgaW4gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpbiB0aGUgS1ZNIEFNRCBTVk0gZHJpdmVyIHRvIGluY3JlbWVudCB0aGUgYGFzaWRfZ2VuZXJhdGlvbmAgaW5zdGVhZCBvZiByZXNldHRpbmcgaXQgdG8gMS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgQVNJRCBjb2xsaXNpb25zIHdoZW4gdmlydHVhbGl6YXRpb24gaXMgZGlzYWJsZWQgYW5kIHJlLWVuYWJsZWQgKGUuZy4sIGR1cmluZyBDUFUgaG90cGx1ZyBvciBzdXNwZW5kL3Jlc3VtZSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgd2hlbiBjcmVhdGluZyBLVk0gVk1zIG9uIEFNRCBwcm9jZXNzb3JzIG9yIGluIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzwfn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 11:41:07 +0000 UTC FinishedAt: 2026-07-15 12:13:23 +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": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "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": "3aec122bdcaf6f8c4ecfc7f6adf6773015ced676", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "series_id": "bf0ed846-297d-488e-94e1-315cfe0e5b52" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "svm_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+CgkJCTx0ZD4yMDI2LzA3LzE1IDEyOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGluIHRoZSBLVk0gQU1EIFNWTSBkcml2ZXIgdG8gaW5jcmVtZW50IHRoZSBgYXNpZF9nZW5lcmF0aW9uYCBpbnN0ZWFkIG9mIHJlc2V0dGluZyBpdCB0byAxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBBU0lEIGNvbGxpc2lvbnMgd2hlbiB2aXJ0dWFsaXphdGlvbiBpcyBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCAoZS5nLiwgZHVyaW5nIENQVSBob3RwbHVnIG9yIHN1c3BlbmQvcmVzdW1lKS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGNyZWF0aW5nIEtWTSBWTXMgb24gQU1EIHByb2Nlc3NvcnMgb3IgaW4gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYmMwNTViMGNkYmRlNGJmYzljNzBlNTE3NjFhMTkyZGQwOTZjOWZmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTI6MTI6MzUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbmluZGV4IDkxMjg2ZDQ2ZDEzYWRiLi5jMmM2NDg3YmQ1YmQxZiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbkBAIC01NzEsNyAmIzQzOzU3MSwxMiBAQCBzdGF0aWMgaW50IHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4gXHRcdHJldHVybiByO1xuIFxuIFx0c2QgPSBwZXJfY3B1X3B0cihcdTAwMjZzdm1fZGF0YSwgbWUpO1xuLVx0c2QtXHUwMDNlYXNpZF9nZW5lcmF0aW9uID0gMTtcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEJ1bXAgdGhlIGN1cnJlbnQgYXNpZF9nZW5lcmF0aW9uIHZhbHVlIHRvIGVuc3VyZSBhbnkgdkNQVSB0aGF0XG4mIzQzO1x0ICogcHJldmlvdXNseSByYW4gb24gdGhpcyBDUFUgc2VlcyBhIHN0YWxlIGdlbmVyYXRpb24gYW5kIGlzIGZvcmNlZFxuJiM0MztcdCAqIHRvIGFjcXVpcmUgYSBuZXcgQVNJRCwgcHJldmVudGluZyBhIGxhdGVudCBBU0lEIGNvbGxpc2lvbi5cbiYjNDM7XHQgKi9cbiYjNDM7XHRzZC1cdTAwM2Vhc2lkX2dlbmVyYXRpb24mIzQzOyYjNDM7O1xuIFx0c2QtXHUwMDNlbWF4X2FzaWQgPSBjcHVpZF9lYngoU1ZNX0NQVUlEX0ZVTkMpIC0gMTtcbiBcdHNkLVx1MDAzZW5leHRfYXNpZCA9IHNkLVx1MDAzZW1heF9hc2lkICYjNDM7IDE7XG4gXHRzZC1cdTAwM2VtaW5fYXNpZCA9IG1heF9zZXZfYXNpZCAmIzQzOyAxO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEyOjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGluIHRoZSBLVk0gQU1EIFNWTSBkcml2ZXIgdG8gaW5jcmVtZW50IHRoZSBgYXNpZF9nZW5lcmF0aW9uYCBpbnN0ZWFkIG9mIHJlc2V0dGluZyBpdCB0byAxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBBU0lEIGNvbGxpc2lvbnMgd2hlbiB2aXJ0dWFsaXphdGlvbiBpcyBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCAoZS5nLiwgZHVyaW5nIENQVSBob3RwbHVnIG9yIHN1c3BlbmQvcmVzdW1lKS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGNyZWF0aW5nIEtWTSBWTXMgb24gQU1EIHByb2Nlc3NvcnMgb3IgaW4gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZiYzA1NWIwY2RiZGU0YmZjOWM3MGU1MTc2MWExOTJkZDA5NmM5ZmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxNSAxMjoxMjozNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCmluZGV4IDkxMjg2ZDQ2ZDEzYWRiLi5jMmM2NDg3YmQ1YmQxZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jCkBAIC01NzEsNyAmIzQzOzU3MSwxMiBAQCBzdGF0aWMgaW50IHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpCiAJCXJldHVybiByOwogCiAJc2QgPSBwZXJfY3B1X3B0cigmYW1wO3N2bV9kYXRhLCBtZSk7Ci0Jc2QtJmd0O2FzaWRfZ2VuZXJhdGlvbiA9IDE7CiYjNDM7CS8qCiYjNDM7CSAqIEJ1bXAgdGhlIGN1cnJlbnQgYXNpZF9nZW5lcmF0aW9uIHZhbHVlIHRvIGVuc3VyZSBhbnkgdkNQVSB0aGF0CiYjNDM7CSAqIHByZXZpb3VzbHkgcmFuIG9uIHRoaXMgQ1BVIHNlZXMgYSBzdGFsZSBnZW5lcmF0aW9uIGFuZCBpcyBmb3JjZWQKJiM0MzsJICogdG8gYWNxdWlyZSBhIG5ldyBBU0lELCBwcmV2ZW50aW5nIGEgbGF0ZW50IEFTSUQgY29sbGlzaW9uLgomIzQzOwkgKi8KJiM0MzsJc2QtJmd0O2FzaWRfZ2VuZXJhdGlvbiYjNDM7JiM0Mzs7CiAJc2QtJmd0O21heF9hc2lkID0gY3B1aWRfZWJ4KFNWTV9DUFVJRF9GVU5DKSAtIDE7CiAJc2QtJmd0O25leHRfYXNpZCA9IHNkLSZndDttYXhfYXNpZCAmIzQzOyAxOwogCXNkLSZndDttaW5fYXNpZCA9IG1heF9zZXZfYXNpZCAmIzQzOyAxOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTMxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtWTSBTVk0gUGF0Y2gqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgdGhpcyBwYXRjaCwgcmlnaHQ/IEl0JiMzOTtzIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyB0aGlzIGluY3JlbWVudCB0byBgc2QtJmd0O2FzaWRfZ2VuZXJhdGlvbmA6IGl0IGdvZXMgZnJvbSBhc3NpZ25pbmcgMSB0byBzaW1wbHkgaW5jcmVtZW50aW5nIGl0LiBBIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIEtWTSBTVk0sIGRlYWxpbmcgd2l0aCBBTUQgdmlydHVhbGl6YXRpb24uCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgZXZlbiByZWxldmFudCB0byBteSB3b3JrPyBJcyB0aGlzIGNvZGUgcGF0aCByZWFjaGFibGUsIGVzcGVjaWFsbHkgd2l0aGluIGVudmlyb25tZW50cyBJJiMzOTttIGludGVyZXN0ZWQgaW4sIGxpa2UgR0NFL1FFTVUgc2V0dXBzPyBTaW5jZSBJIGZvY3VzIGEgbG90IG9uIHN5emthbGxlciwgd2hpY2ggZnJlcXVlbnRseSBydW5zIG9uIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2hpY2gsIGFzIEkgcmVjYWxsLCBwcm92aWRlcyBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIEFuZCB0aGF0IG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudCBpcyAqc29tZXRpbWVzKiBBTUQgYmFzZWQsIHRodXMgYWxsb3dpbmcgZm9yIEtWTSBTVk0gdG8gYmUgcmVsZXZhbnQuCgpUaGVyZWZvcmUsIHNpbmNlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBpcyB1c3VhbGx5IHJ1bm5pbmcsIHRoaXMgYEtWTSBTVk1gIGNvZGUgaXMgcHJvYmFibHkgcmVhY2hhYmxlLgoKTmV4dCwgSSBuZWVkIHRvIGRpZyBpbnRvIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaXRzZWxmIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXJ0aWN1bGFyIG1vZGlmaWNhdGlvbiwga25vd2luZyBub3cgdGhhdCBpdCYjMzk7cyBsaWtlbHkgYSBwYXRoIEkgc2hvdWxkIGJlIHBheWluZyBhdHRlbnRpb24gdG8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTUwPXN0YXRpYyB2b2lkIHN2bV9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTYxLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NjI6c3RhdGljIGludCBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NjMte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMxOT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzMjQtXHQuaGFyZHdhcmVfdW5zZXR1cCA9IHN2bV9oYXJkd2FyZV91bnNldHVwLFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1MzI1Olx0LmVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUgPSBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTMyNi1cdC5kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSA9IHN2bV9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSB1bmRlcnN0YW5kIGl0OgoKKipLVk0gQ1BVIFZpcnR1YWxpemF0aW9uIEFjdGl2YXRpb24gTG9naWMqKgoKT2theSwgc28gYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCB3aGVuZXZlciBLVk0gdmlydHVhbGl6YXRpb24gb24gdGhlIENQVSBpcyBhY3RpdmF0ZWQuIFRoYXQmIzM5O3MgdHJpZ2dlcmVkIHdoZW4gS1ZNIGl0c2VsZiBnZXRzIGxvYWRlZCwgb3IsIHBlcmhhcHMgbW9yZSBpbXBvcnRhbnRseSwgd2hlbiBhIHZpcnR1YWwgbWFjaGluZSBpcyBzcHVuIHVwIGFuZCBuZWVkcyB0byB1c2UgS1ZNLiBBIGtleSBwYXJ0IG9mIHRoZSBmbG93LgoKSGFuZyBvbiBhIHNlY29uZOKApiBJJiMzOTttIHJlbWVtYmVyaW5nIGBlbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBhY3R1YWxseSBkZWZpbmVkIHdpdGhpbiB0aGUgYGt2bV94ODZfb3BzYCBzdHJ1Y3R1cmUuIFRoYXQgdGVsbHMgbWUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgeDg2IGFyY2hpdGVjdHVyZSBhbmQgZGVlcGx5IHRpZWQgaW50byB0aGUgY29yZSBLVk0gb3BlcmF0aW9ucy4KClJpZ2h0LiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWNhbGx5IGZvciBTVk0gc3VwcG9ydCB0byBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIGNvcnJlY3QuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlnIHNheXMgYWJvdXQgU2VjdXJlIFZpcnR1YWwgTWFjaGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNX0FNRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzExOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNLUFNRCBWaXJ0dWFsaXphdGlvbiBFbmFibGVtZW50KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgS1ZNLUFNRCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdmlydHVhbGl6YXRpb24gaXMgZW5hYmxlZC4gVGhlIGNvbmZpZyBpcyBjbGVhcmx5IHNldCB0byBgS1ZNX0FNRGAsIHdoaWNoIGlzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmb2N1cyBvbiB0aGUgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBmdW5jdGlvbiBhcyBhIGtleSBzeW1ib2wsIGFuZCBpdCYjMzk7cyBsb2dpY2FsIGdpdmVuIHRoYXQgaXRzIG5hbWUgaXMgcHJldHR5IGluZGljYXRpdmUgb2Ygd2hhdCB3ZSYjMzk7cmUgYWZ0ZXIsIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBpdHMgdXN1YWxseSBjYWxsZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9yIHdoZW4gdGhlIHN5c3RlbSBpcyBjaGFuZ2luZyBDUFVzLCBlaXRoZXIgZHVlIHRvIGhvdHBsdWdnaW5nLCBvciBzdXNwZW5kL3Jlc3VtZSBldmVudHMuCgpBaCwgaGFuZyBvbiwgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSB0cmlnZ2VyZWQgZnJvbSB0aGUgS1ZNIGNvcmUg4oCTIHNwZWNpZmljYWxseSwgYGhhcmR3YXJlX2VuYWJsZV9hbGxgLCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2l0aGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLiBNYWtlcyBzZW5zZS4gU28sIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLCB0aGUgYmVzdCBuZXh0IHN0ZXAgaXMgZGVmaW5pdGVseSB0byB0cmFjZSB3aGVyZSBgZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaXMgYWN0dWFsbHkgYmVpbmcgaW52b2tlZCBmcm9tIHdpdGhpbiB0aGUgbGFyZ2VyIEtWTSBjb2RlYmFzZS4gVGhhdCB3aWxsIHByb3ZpZGUgdGhlIGNyaXRpY2FsIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9zdm0uYz01NTA9c3RhdGljIHZvaWQgc3ZtX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NjEtXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjU2MjpzdGF0aWMgaW50IHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU2My17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01MzE5PXN0cnVjdCBrdm1feDg2X29wcyBzdm1feDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTMyNC1cdC5oYXJkd2FyZV91bnNldHVwID0gc3ZtX2hhcmR3YXJlX3Vuc2V0dXAsXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUzMjU6XHQuZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSA9IHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1LFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MzI2LVx0LmRpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gc3ZtX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1LFxuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jPTg4MD1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgdnRfeDg2X29wcyBfX2luaXRkYXRhID0ge1xuLS1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jLTg4Ni1cbmFyY2gveDg2L2t2bS92bXgvbWFpbi5jOjg4NzpcdC5lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gdm14X2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUsXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04ODgtXHQuZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUgPSB2dF9vcChkaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSksXG4tLVxuYXJjaC94ODYva3ZtL3ZteC92bXguYz0yOTY3PWludCB2bXhfY2hlY2tfcHJvY2Vzc29yX2NvbXBhdCh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzAwMy1cbmFyY2gveDg2L2t2bS92bXgvdm14LmM6MzAwNDppbnQgdm14X2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzAwNS17XG4tLVxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg9MTY9aW50IHZteF9jaGVja19wcm9jZXNzb3JfY29tcGF0KHZvaWQpO1xuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmg6MTc6aW50IHZteF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpO1xuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtMTgtdm9pZCB2bXhfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTY5ODc9aW50IGt2bV94ODZfdmVuZG9yX2luaXQoc3RydWN0IGt2bV94ODZfaW5pdF9vcHMgKm9wcylcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjk5My1cbmFyY2gveDg2L2t2bS94ODYuYzo2OTk0Olx0aWYgKGt2bV94ODZfb3BzLmVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpIHtcbmFyY2gveDg2L2t2bS94ODYuYy02OTk1LVx0XHRwcl9lcnIoXCYjMzQ7YWxyZWFkeSBsb2FkZWQgdmVuZG9yIG1vZHVsZSAmIzM5OyVzJiMzOTtcXG5cJiMzNDssIGt2bV94ODZfb3BzLm5hbWUpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03MTM0LW91dF91bndpbmRfb3BzOlxuYXJjaC94ODYva3ZtL3g4Ni5jOjcxMzU6XHRrdm1feDg2X29wcy5lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gTlVMTDtcbmFyY2gveDg2L2t2bS94ODYuYy03MTM2LVx0a3ZtX3g4Nl9jYWxsKGhhcmR3YXJlX3Vuc2V0dXApKCk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTcxNDY9dm9pZCBrdm1feDg2X3ZlbmRvcl9leGl0KHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTcxNzQtXHRtdXRleF9sb2NrKFx1MDAyNnZlbmRvcl9tb2R1bGVfbG9jayk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzE3NTpcdGt2bV94ODZfb3BzLmVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUgPSBOVUxMO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTcxNzYtXHRtdXRleF91bmxvY2soXHUwMDI2dmVuZG9yX21vZHVsZV9sb2NrKTtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9OTY2MT12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTY2NS1cbmFyY2gveDg2L2t2bS94ODYuYzo5NjY2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTY2Ny17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2ODEtXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTY4MjpcdHJldCA9IGt2bV94ODZfY2FsbChlbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KSgpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTk2ODMtXHRpZiAocmV0ICE9IDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc0MAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNIENQVSBWaXJ0dWFsaXphdGlvbiBFbmFibGVtZW50IFBhdGgqKgoKUmlnaHQsIGBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YC4uLiB0aGF0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIHdpdGhpbiBLVk0sIHRoZSBjb3JlIHZpcnR1YWxpemF0aW9uIGluZnJhc3RydWN0dXJlLiBJdOKAmXMgcmVzcG9uc2libGUgZm9yLCB3ZWxsLCBlbmFibGluZyB0aGUgQ1BVIGZvciB2aXJ0dWFsaXphdGlvbi4gTmF0dXJhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBpdHMgY2FsbCBncmFwaC4gS25vd2luZyB3aGVyZSB0aGlzIGlzIGludm9rZWQgaXMgY3J1Y2lhbCBmb3IgZGVidWdnaW5nLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3Igc2ltcGx5IHVuZGVyc3RhbmRpbmcgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBTbywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAuIExldCYjMzk7cyBzZWUgd2hlcmUgdGhhdCBnZXRzIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgS1ZNIGNvcmUuIFRoaXMgd2lsbCBpbmZvcm0gbWUgYWJvdXQgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGFuZCB0aGUgY29udGV4dHMgdW5kZXIgd2hpY2ggQ1BVIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdGllcyBhcmUgYnJvdWdodCBvbmxpbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9rdm0vYXJtLmM9MjI4OD1zdGF0aWMgdm9pZCBjcHVfaHlwX3VuaW5pdCh2b2lkICpkaXNjYXJkKVxuLS1cbmFyY2gvYXJtNjQva3ZtL2FybS5jLTIyOTUtXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoyMjk2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yMjk3LXtcbi0tXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0yNTMzPXN0YXRpYyBpbnQgX19pbml0IGRvX3Brdm1faW5pdCh1MzIgaHlwX3ZhX2JpdHMpXG4tLVxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMjU0Ni1cdCAqIFRoZSBzdHViIGh5cGVyY2FsbHMgYXJlIG5vdyBkaXNhYmxlZCwgc28gc2V0IG91ciBsb2NhbCBmbGFnIHRvXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoyNTQ3Olx0ICogcHJldmVudCBhIGxhdGVyIHJlLWluaXQgYXR0ZW1wdCBpbiBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkuXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yNTQ4LVx0ICovXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYz0yODc9bG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0yOTItXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjI5MzppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYy0yOTQte1xuLS1cbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTEyMz1pbnQga3ZtX2FyY2hfdmNwdV9zaG91bGRfa2ljayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTI3LVxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTI4OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMjkte1xuLS1cbmFyY2gvcmlzY3Yva3ZtL21haW4uYz0zMD1sb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMzUtXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MzY6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0zNy17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTk2NjE9dm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2NjUtXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTY2NjppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2Njcte1xuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNjU5PXZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTY2NS0gKi9cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNjY2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpO1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE2Njctdm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MDI9c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYwNi1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NTYwNzpcdGlmIChrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkpIHtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYwOC1cdFx0cHJfaW5mbyhcJiMzNDtrdm06IGVuYWJsaW5nIHZpcnR1YWxpemF0aW9uIG9uIENQVSVkIGZhaWxlZFxcblwmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkxNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBpbiB2aXJ0dWFsaXphdGlvbiBhbmQga2VybmVsIGludGVybmFsczoKCioqQW5hbHl6aW5nIHRoZSBWaXJ0dWFsaXphdGlvbiBFbnRyeSBQb2ludCoqCgpSaWdodCwgYGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YC4uLiB0aGF0JiMzOTtzIGEga2V5IGZ1bmN0aW9uLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGZsYXNoZXMgdG8gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGF0IHRlbGxzIG1lICpleGFjdGx5KiB3aGVyZSB0aGlzIGNydWNpYWwgcGllY2Ugb2YgY29kZSBsaXZlcywgd2hpY2ggaXMgaW5jcmVkaWJseSBoZWxwZnVsIGZvciBkZWJ1Z2dpbmcgb3IgdW5kZXJzdGFuZGluZyB0aGUgaW5pdGlhbCBzZXR1cC4gSSBrbm93IGBrdm1fbWFpbi5jYCBpcyB0aGUgaGVhcnQgb2YgS1ZNJiMzOTtzIGluaXRpYWxpemF0aW9uLCB0aGUgY29yZSBmaWxlIHNldHRpbmcgdXAgdGhlIHZpcnR1YWxpemF0aW9uIGluZnJhc3RydWN0dXJlIGZvciBhIHNwZWNpZmljIENQVS4gU28sIHRoaXMgZnVuY3Rpb24mIzM5O3MgbmFtZSBhbmQgaXRzIGZpbGUgbG9jYXRpb24gZ2l2ZSBtZSBhIHZlcnkgaGlnaC1sZXZlbCBjb250ZXh0IGltbWVkaWF0ZWx5LiBJJiMzOTttIHRoaW5raW5nLCAmIzM0O09rYXksIHRoaXMgaXMgd2hlcmUgYSBzcGVjaWZpYyBDUFUgaXMgYmVpbmcgcHJlcGFyZWQgdG8gcnVuIHZpcnR1YWwgbWFjaGluZXMgdXNpbmcgS1ZNLiYjMzQ7IEl04oCZcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBzcHJpbmdib2FyZCBmb3IgdGhlIHZpcnR1YWxpemF0aW9uIGpvdXJuZXkgZm9yIHRoYXQgY29yZS4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGF0IHdoZW4gdGhpbmtpbmcgYWJvdXQgZW5hYmxpbmcgS1ZNLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYz01NTk3PV9fd2VhayB2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MDEtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU2MDI6c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxudmlydC9rdm0va3ZtX21haW4uYy01NjAzLXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MTc9c3RhdGljIGludCBrdm1fb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYyMy1cdCAqL1xudmlydC9rdm0va3ZtX21haW4uYzo1NjI0Olx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MjUtfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTY3Nj1zdGF0aWMgdm9pZCBrdm1fcmVzdW1lKHZvaWQgKmRhdGEpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01NjgwLVxudmlydC9rdm0va3ZtX21haW4uYzo1NjgxOlx0V0FSTl9PTl9PTkNFKGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkpO1xudmlydC9rdm0va3ZtX21haW4uYy01NjgyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUxNQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIENQVSBWaXJ0dWFsaXphdGlvbiBJbml0aWFsaXphdGlvbioqCgpIbW0sIHNvIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaXMgdHJpZ2dlcmVkLiBHb3QgaXQsIHRoYXQmIzM5O3Mgd2hhdCBJJiMzOTtkIGV4cGVjdCBvbiBDUFUgYnJpbmctdXAgb3IgcmVzdW1lLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGFsc28gZ2V0cyBjYWxsZWQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgd2hpY2ggaXMgYSBiaXQgZGlmZmVyZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvLCB0aGUgY2FsbCBzdGFjaywgYW5kIHRoZSBvdmVyYWxsIGNvbnRleHQuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgb3ZlcmxhcCBvciByZWR1bmRhbmN5LiBMZXQgbWUgc2VlIHdoZXJlIGBrdm1fb25saW5lX2NwdWAgZml0cyBpbnRvIHRoaXMgcGljdHVyZS4gVGltZSB0byBkaWcgaW50byB0aGUgY29kZSBhbmQgY2xhcmlmeSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9vbmxpbmVfY3B1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MDI9c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYxNi1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NTYxNzpzdGF0aWMgaW50IGt2bV9vbmxpbmVfY3B1KHVuc2lnbmVkIGludCBjcHUpXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MTgte1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTY5ND1zdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3MDUtXHRyID0gY3B1aHBfc2V0dXBfc3RhdGUoQ1BVSFBfQVBfS1ZNX09OTElORSwgXCYjMzQ7a3ZtL2NwdTpvbmxpbmVcJiMzNDssXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU3MDY6XHRcdFx0ICAgICAga3ZtX29ubGluZV9jcHUsIGt2bV9vZmZsaW5lX2NwdSk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3MDctXHRpZiAocilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAwMwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBLVk0gSW5pdGlhbGl6YXRpb24gVGhvdWdodHMqKgoKT2theSwgc28gYGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25gIGlzIHRoZSBmdW5jdGlvbiB0aGF0IHJlYWxseSBnZXRzIHRoaW5ncyBnb2luZyB3aXRoIENQVSBob3RwbHVnZ2luZywgaXNuJiMzOTt0IGl0PyBJdCYjMzk7cyB0aGUgb25lIHRoYXQga2lja3Mgb2ZmIGBrdm1fb25saW5lX2NwdWAgZm9yICpldmVyeSogb25saW5lIENQVS4gSSYjMzk7bSB2aXN1YWxpemluZyB0aGUgd2hvbGUgcHJvY2VzcyBub3cuLi5pdCYjMzk7cyBjYWxsZWQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgaGF2ZSB0byBiZSBjbGVhciwgaXQgaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBWTSBpcyBicm91Z2h0IG9ubGluZSwgb3IgZXZlbiB3aGVuIHRoZSBtb2R1bGUgbG9hZHMsIGRlcGVuZGluZyBvbiB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gYmVpbmcgdXNlZC4KCk5vdywgSSYjMzk7bSB0cnlpbmcgdG8gbmFpbCBkb3duIHRoZSAqZXhhY3QqIGNhbGwgY2hhaW4uIElzIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uYCBjYWxsZWQgZGlyZWN0bHkgZnJvbSBga3ZtX2luaXRgLCB0aGUgbW9kdWxlJiMzOTtzIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCBvciBpcyBpdCBjb21pbmcgZnJvbSBga3ZtX2Rldl9pb2N0bF9jcmVhdGVfdm1gPyBHb3R0YSBjb25maXJtIHRoYXQgdG8gYmUgY29tcGxldGVseSBhY2N1cmF0ZSBhYm91dCB0aGUgc2V0dXAgc2VxdWVuY2UuIEl0JiMzOTtzIGEga2V5IGRldGFpbCBmb3IgZGVidWdnaW5nIG9yIHVuZGVyc3RhbmRpbmcgdGhlIHN0YXRlIHRyYW5zaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0va3ZtX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9rdm1fbWFpbi5jPTEwODg9c3RhdGljIGlubGluZSBzdHJ1Y3Qga3ZtX2lvX2J1cyAqa3ZtX2dldF9idXNfZm9yX2Rlc3RydWN0aW9uKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEwOTQtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjEwOTU6c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpO1xudmlydC9rdm0va3ZtX21haW4uYy0xMDk2LXN0YXRpYyB2b2lkIGt2bV9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpO1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9MTA5OD1zdGF0aWMgc3RydWN0IGt2bSAqa3ZtX2NyZWF0ZV92bSh1bnNpZ25lZCBsb25nIHR5cGUsIGNvbnN0IGNoYXIgKmZkbmFtZSlcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTExNzktXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjExODA6XHRyID0ga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbigpO1xudmlydC9rdm0va3ZtX21haW4uYy0xMTgxLVx0aWYgKHIpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYz01NTk3PV9fd2VhayB2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MDEtXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU2MDI6c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxudmlydC9rdm0va3ZtX21haW4uYy01NjAzLXtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MTc9c3RhdGljIGludCBrdm1fb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYyMy1cdCAqL1xudmlydC9rdm0va3ZtX21haW4uYzo1NjI0Olx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCk7XG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MjUtfVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmM9NTY3Nj1zdGF0aWMgdm9pZCBrdm1fcmVzdW1lKHZvaWQgKmRhdGEpXG4tLVxudmlydC9rdm0va3ZtX21haW4uYy01NjgwLVxudmlydC9rdm0va3ZtX21haW4uYzo1NjgxOlx0V0FSTl9PTl9PTkNFKGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkpO1xudmlydC9rdm0va3ZtX21haW4uYy01NjgyLX1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2OTA9c3RhdGljIHN0cnVjdCBzeXNjb3JlIGt2bV9zeXNjb3JlID0ge1xuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTY5My1cbnZpcnQva3ZtL2t2bV9tYWluLmM6NTY5NDpzdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24odm9pZClcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTY5NS17XG4tLVxudmlydC9rdm0va3ZtX21haW4uYz01NzUyPXN0YXRpYyBpbnQga3ZtX2luaXRfdmlydHVhbGl6YXRpb24odm9pZClcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3NTQtXHRpZiAoZW5hYmxlX3ZpcnRfYXRfbG9hZClcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTc1NTpcdFx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24oKTtcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTc1Ni1cbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU3NjA9c3RhdGljIHZvaWQga3ZtX3VuaW5pdF92aXJ0dWFsaXphdGlvbih2b2lkKVxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTc2NS0jZWxzZSAvKiBDT05GSUdfS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkcgKi9cbnZpcnQva3ZtL2t2bV9tYWluLmM6NTc2NjpzdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24odm9pZClcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTc2Ny17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDEyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyNDAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gQVNJRCBHZW5lcmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEtWTSBwYXRjaCBhbmQgaG93IGl0IGltcGFjdHMgQVNJRCBnZW5lcmF0aW9uLiBJdCBsb29rcyBsaWtlIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uYCBpcyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludCwgY2FsbGVkIGVpdGhlciBkdXJpbmcgVk0gY3JlYXRpb24gKGBrdm1fY3JlYXRlX3ZtYCkgb3IsIGltcG9ydGFudGx5LCBhdCBtb2R1bGUgbG9hZCBpZiBgZW5hYmxlX3ZpcnRfYXRfbG9hZGAgaXMgc2V0LiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHNpbXBsZTogdGhlIHBhdGNoIGluY3JlbWVudHMgYHNkLSZndDthc2lkX2dlbmVyYXRpb25gIGluc3RlYWQgb2YganVzdCBzZXR0aW5nIGl0IHRvIDEuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGJpZyBkZWFsOyBpdCBwcmV2ZW50cyBBU0lEIGNvbGxpc2lvbnMsIHdoaWNoIGlzIGVzc2VudGlhbCB3aGVuIHZpcnR1YWxpemF0aW9uIGlzIHRvZ2dsZWQgb3Igd2hlbiBDUFVzIGFyZSBob3RwbHVnZ2VkLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBzcG90IHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHN0YWJpbGl0eS4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIHdvdWxkIGJlIHRoZSBmdW5jdGlvbiB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZy4gQnV0IEkgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoaXMgZnVuY3Rpb24gaXNuJiMzOTt0IGluIGEgaG90IHBhdGg7IGl0JiMzOTtzIHRyaWdnZXJlZCBkdXJpbmcgVk0gY3JlYXRpb24gb3IgQ1BVIGhvdHBsdWcgZXZlbnRzLiBIbW0sIHRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCwgc28gdGhhdCYjMzk7cyB0aGUgb25seSBmb2N1cyBzeW1ib2wgYXZhaWxhYmxlLgoKTm93IEkgbmVlZCB0byB0aGluayBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4gU2luY2UgdGhpcyBwYXRjaCBzZWVtcyBzcGVjaWZpYyB0byBBTUQmIzM5O3MgU1ZNLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBLVk1fQU1EYCBpcyBlbmFibGVkLiBMZXQgbWUgcXVpY2tseSBjaGVjayBpZiB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgc3VmZmljaWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTV9BTUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTYxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBpbml0aWFsIHRob3VnaHRzOgoKKipDb25maWd1cmluZyBLVk0gb24gYW4gQU1EIFN5c3RlbSoqCgpBbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB0aGF0IGBLVk1fQU1EYCBpcyBkZWZpbml0ZWx5IHRoZSBrZXkgY29uZmlndXJhdGlvbiBpdGVtLiBCdXQgaG9sZCBvbiwgSSBhbHNvIGtub3cgdGhhdCBgS1ZNYCBpdHNlbGYgaXMgYSBwcmVyZXF1aXNpdGUuIFRoaXMgbWVhbnMgSSYjMzk7dmUgZ290IGEgZGVwZW5kZW5jeSBpc3N1ZSB0byBzb3J0IG91dC4gTmF0dXJhbGx5LCBgS1ZNX0FNRGAgcmVsaWVzIG9uIGBLVk1gIHRvIGJlIGVuYWJsZWQgZmlyc3QuIExldCBtZSBqdXN0IHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBgYXJjaC94ODYva3ZtL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgcGxhY2UgdG8gZmluZCB0aGUgZGV0YWlsZWQgZGVwZW5kZW5jaWVzIGFuZCByZWxldmFudCBkZXNjcmlwdGlvbnMgZm9yIG9wdGlvbnMgbGlrZSBgS1ZNX0FNRGAuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgS1ZNX0FNRGAgaXMgbGlua2VkIHRvIGBLVk1gIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDA6XHRcdGhlbHBcbiAxNDE6XHRcdCAgUHJvdmlkZXMgc3VwcG9ydCBmb3IgbGF1bmNoaW5nIEludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpXG4gMTQyOlx0XHQgIGNvbmZpZGVudGlhbCBWTXMgb24gSW50ZWwgcHJvY2Vzc29ycy5cbiAxNDM6XHRcbiAxNDQ6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxNDU6XHRcbiAxNDY6XHRjb25maWcgS1ZNX0FNRFxuIDE0NzpcdFx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4gMTQ4Olx0XHRkZXBlbmRzIG9uIEtWTSBcdTAwMjZcdTAwMjYgKENQVV9TVVBfQU1EIHx8IENQVV9TVVBfSFlHT04pXG4gMTQ5Olx0XHRoZWxwXG4gMTUwOlx0XHQgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIEtWTSBvbiBBTUQgcHJvY2Vzc29ycyBlcXVpcHBlZCB3aXRoIHRoZSBBTUQtVlxuIDE1MTpcdFx0ICAoU1ZNKSBleHRlbnNpb25zLlxuIDE1MjpcdFxuIDE1MzpcdFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxNTQ6XHRcdCAgd2lsbCBiZSBjYWxsZWQga3ZtLWFtZC5cbiAxNTU6XHRcbiAxNTY6XHRjb25maWcgS1ZNX0FNRF9TRVZcbiAxNTc6XHRcdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuIDE1ODpcdFx0ZGVmYXVsdCB5XG4gMTU5Olx0XHRkZXBlbmRzIG9uIEtWTV9BTUQgXHUwMDI2XHUwMDI2IFg4Nl82NFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTI3CgkJCQkJCQlvdXRwdXQ6IDE0MAoJCQkJCQkJdGhvdWdodHM6IDQ0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIEFNRCBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgY2hhbmdlIEkmIzM5O20gbG9va2luZyBhdCBmb2N1c2VzIG9uIGBLVk1fQU1EYCwgc3BlY2lmaWNhbGx5IHRoZSBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHNjYW4gY29uZmlybXMgdGhhdCB0aGlzIGlzIHRoZSBzb2xlIGZ1bmN0aW9uIGJlaW5nIG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2gsIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBUaGUgZnVuY3Rpb24mIzM5O3MgcmVhY2hhYmxlLCBuYXR1cmFsbHksIHRocm91Z2ggS1ZNIFZNIGNyZWF0aW9uIG9uIEFNRCBoYXJkd2FyZSwgb3IgaW4gbmVzdGVkIHZpcnR1YWxpemF0aW9uIHNldHVwcywgYW5kIHRoYXQgYWxvbmUgbWFrZXMgaXQgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuCgpMZXQmIzM5O3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGZ1bmN0aW9uJiMzOTtzIG5hbWUgYW5kIHNpZ25hdHVyZSDigJMgeWVwLCBpdOKAmXMgYHN0YXRpYyBpbnQgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClgLiBHb29kLgoKTm93IGZvciB0aGUgcmVhc29uaW5nLiBUaGUgcGF0Y2gmIzM5O3MgY29yZSBpcyBpbmNyZW1lbnRpbmcgYGFzaWRfZ2VuZXJhdGlvbmAgd2l0aGluIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaW5zdGVhZCBvZiByZXNldHRpbmcgaXQgdG8gMS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbjsgaXQmIzM5O3MgZGVzaWduZWQgdG8gc3RvcCBBU0lEIGNvbGxpc2lvbnMgZnJvbSBwb3BwaW5nIHVwIHdoZW4gdmlydHVhbGl6YXRpb24gZ2V0cyBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCwgYSBzY2VuYXJpbyB5b3UgbWlnaHQgc2VlIHdpdGggdGhpbmdzIGxpa2UgQ1BVIGhvdHBsdWdnaW5nIG9yIGR1cmluZyBzdXNwZW5kL3Jlc3VtZSBjeWNsZXMuIEJlY2F1c2UgdGhpcyBjb2RlIGdldHMgdXNlZCB3aGVuIGNyZWF0aW5nIEtWTSBWTXMgb24gQU1EIHN5c3RlbXMgb3IgbmVzdGVkIFZNcywgaXQgbWFrZXMgZnV6emluZyB0aGlzIGNvZGUgYSBwcmlvcml0eS4KClRoZSBrZXkgZm9jdXMgaXMgZGVmaW5pdGVseSBvbiBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLiBUaGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGlzIGBLVk1fQU1EYC4gSG9sZCBvbiwgSSBzaG91bGQgY2hlY2sg4oCTIGlzIHRoZXJlIGFub3RoZXIgcmVsZXZhbnQgY29uZmlnPyBBaCwgYENQVV9TVVBfQU1EYCBpcyBvZnRlbiBvbiBieSBkZWZhdWx0IG9uIHg4Nl82NCBzeXN0ZW1zLiBCdXQgYWN0dWFsbHksIGBLVk1fQU1EYCBhbHNvIGRlcGVuZHMgb24gYEtWTWAsIHNvIGp1c3QgYEtWTV9BTURgIGlzIHN1ZmZpY2llbnQuCgpMZXQmIzM5O3MgcmV2aWV3IHRoZSBwYXRjaCBpdHNlbGYgYWdhaW4gZm9yIGNsYXJpdHk6CgpgYGBjCiAJc2QgPSBwZXJfY3B1X3B0cigmYW1wO3N2bV9kYXRhLCBtZSk7Ci0Jc2QtJmd0O2FzaWRfZ2VuZXJhdGlvbiA9IDE7CiYjNDM7CS8qCiYjNDM7CSAqIEJ1bXAgdGhlIGN1cnJlbnQgYXNpZF9nZW5lcmF0aW9uIHZhbHVlIHRvIGVuc3VyZSBhbnkgdkNQVSB0aGF0CiYjNDM7CSAqIHByZXZpb3VzbHkgcmFuIG9uIHRoaXMgQ1BVIHNlZXMgYSBzdGFsZSBnZW5lcmF0aW9uIGFuZCBpcyBmb3JjZWQKJiM0MzsJICogdG8gYWNxdWlyZSBhIG5ldyBBU0lELCBwcmV2ZW50aW5nIGEgbGF0ZW50IEFTSUQgY29sbGlzaW9uLgomIzQzOwkgKi8KJiM0MzsJc2QtJmd0O2FzaWRfZ2VuZXJhdGlvbiYjNDM7JiM0Mzs7CiAJc2QtJmd0O21heF9hc2lkID0gY3B1aWRfZWJ4KFNWTV9DUFVJRF9GVU5DKSAtIDE7CmBgYAoKSXQmIzM5O3MgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaW4gdGhlIEtWTSBBTUQgU1ZNIGRyaXZlciB0byBpbmNyZW1lbnQgdGhlIGBhc2lkX2dlbmVyYXRpb25gIGluc3RlYWQgb2YgcmVzZXR0aW5nIGl0IHRvIDEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIEFTSUQgY29sbGlzaW9ucyB3aGVuIHZpcnR1YWxpemF0aW9uIGlzIGRpc2FibGVkIGFuZCByZS1lbmFibGVkIChlLmcuLCBkdXJpbmcgQ1BVIGhvdHBsdWcgb3Igc3VzcGVuZC9yZXN1bWUpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gY3JlYXRpbmcgS1ZNIFZNcyBvbiBBTUQgcHJvY2Vzc29ycyBvciBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaW4gdGhlIEtWTSBBTUQgU1ZNIGRyaXZlciB0byBpbmNyZW1lbnQgdGhlIGBhc2lkX2dlbmVyYXRpb25gIGluc3RlYWQgb2YgcmVzZXR0aW5nIGl0IHRvIDEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIEFTSUQgY29sbGlzaW9ucyB3aGVuIHZpcnR1YWxpemF0aW9uIGlzIGRpc2FibGVkIGFuZCByZS1lbmFibGVkIChlLmcuLCBkdXJpbmcgQ1BVIGhvdHBsdWcgb3Igc3VzcGVuZC9yZXN1bWUpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gY3JlYXRpbmcgS1ZNIFZNcyBvbiBBTUQgcHJvY2Vzc29ycyBvciBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEyOjM3LjI2NTYxMDU0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDM0Njk0OTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaW4gdGhlIEtWTSBBTUQgU1ZNIGRyaXZlciB0byBpbmNyZW1lbnQgdGhlIGBhc2lkX2dlbmVyYXRpb25gIGluc3RlYWQgb2YgcmVzZXR0aW5nIGl0IHRvIDEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIEFTSUQgY29sbGlzaW9ucyB3aGVuIHZpcnR1YWxpemF0aW9uIGlzIGRpc2FibGVkIGFuZCByZS1lbmFibGVkIChlLmcuLCBkdXJpbmcgQ1BVIGhvdHBsdWcgb3Igc3VzcGVuZC9yZXN1bWUpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gY3JlYXRpbmcgS1ZNIFZNcyBvbiBBTUQgcHJvY2Vzc29ycyBvciBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTI6MzcuMjY1NjE5MDgzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTMwNDgzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmYmMwNTViMGNkYmRlNGJmYzljNzBlNTE3NjFhMTkyZGQwOTZjOWZmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDEyOjEyOjM1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuaW5kZXggOTEyODZkNDZkMTNhZGIuLmMyYzY0ODdiZDViZDFmIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuQEAgLTU3MSw3ICs1NzEsMTIgQEAgc3RhdGljIGludCBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbiBcXHRcXHRyZXR1cm4gcjtcXG4gXFxuIFxcdHNkID0gcGVyX2NwdV9wdHIoXFx1MDAyNnN2bV9kYXRhLCBtZSk7XFxuLVxcdHNkLVxcdTAwM2Vhc2lkX2dlbmVyYXRpb24gPSAxO1xcbitcXHQvKlxcbitcXHQgKiBCdW1wIHRoZSBjdXJyZW50IGFzaWRfZ2VuZXJhdGlvbiB2YWx1ZSB0byBlbnN1cmUgYW55IHZDUFUgdGhhdFxcbitcXHQgKiBwcmV2aW91c2x5IHJhbiBvbiB0aGlzIENQVSBzZWVzIGEgc3RhbGUgZ2VuZXJhdGlvbiBhbmQgaXMgZm9yY2VkXFxuK1xcdCAqIHRvIGFjcXVpcmUgYSBuZXcgQVNJRCwgcHJldmVudGluZyBhIGxhdGVudCBBU0lEIGNvbGxpc2lvbi5cXG4rXFx0ICovXFxuK1xcdHNkLVxcdTAwM2Vhc2lkX2dlbmVyYXRpb24rKztcXG4gXFx0c2QtXFx1MDAzZW1heF9hc2lkID0gY3B1aWRfZWJ4KFNWTV9DUFVJRF9GVU5DKSAtIDE7XFxuIFxcdHNkLVxcdTAwM2VuZXh0X2FzaWQgPSBzZC1cXHUwMDNlbWF4X2FzaWQgKyAxO1xcbiBcXHRzZC1cXHUwMDNlbWluX2FzaWQgPSBtYXhfc2V2X2FzaWQgKyAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjozNy44Nzk1MTYwMTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDIwNzc4MDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgaW4gdGhlIEtWTSBBTUQgU1ZNIGRyaXZlciB0byBpbmNyZW1lbnQgdGhlIGBhc2lkX2dlbmVyYXRpb25gIGluc3RlYWQgb2YgcmVzZXR0aW5nIGl0IHRvIDEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHByZXZlbnRzIEFTSUQgY29sbGlzaW9ucyB3aGVuIHZpcnR1YWxpemF0aW9uIGlzIGRpc2FibGVkIGFuZCByZS1lbmFibGVkIChlLmcuLCBkdXJpbmcgQ1BVIGhvdHBsdWcgb3Igc3VzcGVuZC9yZXN1bWUpLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHdoZW4gY3JlYXRpbmcgS1ZNIFZNcyBvbiBBTUQgcHJvY2Vzc29ycyBvciBpbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYmMwNTViMGNkYmRlNGJmYzljNzBlNTE3NjFhMTkyZGQwOTZjOWZmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTI6MTI6MzUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuaW5kZXggOTEyODZkNDZkMTNhZGIuLmMyYzY0ODdiZDViZDFmIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuQEAgLTU3MSw3ICs1NzEsMTIgQEAgc3RhdGljIGludCBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxuIFx0XHRyZXR1cm4gcjtcbiBcbiBcdHNkID0gcGVyX2NwdV9wdHIoXHUwMDI2c3ZtX2RhdGEsIG1lKTtcbi1cdHNkLVx1MDAzZWFzaWRfZ2VuZXJhdGlvbiA9IDE7XG4rXHQvKlxuK1x0ICogQnVtcCB0aGUgY3VycmVudCBhc2lkX2dlbmVyYXRpb24gdmFsdWUgdG8gZW5zdXJlIGFueSB2Q1BVIHRoYXRcbitcdCAqIHByZXZpb3VzbHkgcmFuIG9uIHRoaXMgQ1BVIHNlZXMgYSBzdGFsZSBnZW5lcmF0aW9uIGFuZCBpcyBmb3JjZWRcbitcdCAqIHRvIGFjcXVpcmUgYSBuZXcgQVNJRCwgcHJldmVudGluZyBhIGxhdGVudCBBU0lEIGNvbGxpc2lvbi5cbitcdCAqL1xuK1x0c2QtXHUwMDNlYXNpZF9nZW5lcmF0aW9uKys7XG4gXHRzZC1cdTAwM2VtYXhfYXNpZCA9IGNwdWlkX2VieChTVk1fQ1BVSURfRlVOQykgLSAxO1xuIFx0c2QtXHUwMDNlbmV4dF9hc2lkID0gc2QtXHUwMDNlbWF4X2FzaWQgKyAxO1xuIFx0c2QtXHUwMDNlbWluX2FzaWQgPSBtYXhfc2V2X2FzaWQgKyAxO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTI6MzcuODc5NTIwMjM1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE1NjMzMTA4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0gU1ZNIFBhdGNoKipcblxuT2theSwgc28gdGhlcmUncyB0aGlzIHBhdGNoLCByaWdodD8gSXQncyBpbiBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgdGhpcyBpbmNyZW1lbnQgdG8gYHNkLVx1MDAzZWFzaWRfZ2VuZXJhdGlvbmA6IGl0IGdvZXMgZnJvbSBhc3NpZ25pbmcgMSB0byBzaW1wbHkgaW5jcmVtZW50aW5nIGl0LiBBIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIEtWTSBTVk0sIGRlYWxpbmcgd2l0aCBBTUQgdmlydHVhbGl6YXRpb24uXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogaXMgdGhpcyBldmVuIHJlbGV2YW50IHRvIG15IHdvcms/IElzIHRoaXMgY29kZSBwYXRoIHJlYWNoYWJsZSwgZXNwZWNpYWxseSB3aXRoaW4gZW52aXJvbm1lbnRzIEknbSBpbnRlcmVzdGVkIGluLCBsaWtlIEdDRS9RRU1VIHNldHVwcz8gU2luY2UgSSBmb2N1cyBhIGxvdCBvbiBzeXprYWxsZXIsIHdoaWNoIGZyZXF1ZW50bHkgcnVucyBvbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUsIHdoaWNoLCBhcyBJIHJlY2FsbCwgcHJvdmlkZXMgbmVzdGVkIHZpcnR1YWxpemF0aW9uLiBBbmQgdGhhdCBuZXN0ZWQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQgaXMgKnNvbWV0aW1lcyogQU1EIGJhc2VkLCB0aHVzIGFsbG93aW5nIGZvciBLVk0gU1ZNIHRvIGJlIHJlbGV2YW50LlxuXG5UaGVyZWZvcmUsIHNpbmNlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBpcyB1c3VhbGx5IHJ1bm5pbmcsIHRoaXMgYEtWTSBTVk1gIGNvZGUgaXMgcHJvYmFibHkgcmVhY2hhYmxlLlxuXG5OZXh0LCBJIG5lZWQgdG8gZGlnIGludG8gYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpdHNlbGYgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhcnRpY3VsYXIgbW9kaWZpY2F0aW9uLCBrbm93aW5nIG5vdyB0aGF0IGl0J3MgbGlrZWx5IGEgcGF0aCBJIHNob3VsZCBiZSBwYXlpbmcgYXR0ZW50aW9uIHRvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTMxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTI6NDMuMDM1ODUzNTk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Mzc3NDU3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTUwPXN0YXRpYyB2b2lkIHN2bV9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NjEtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo1NjI6c3RhdGljIGludCBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTYzLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NTMxOT1zdHJ1Y3Qga3ZtX3g4Nl9vcHMgc3ZtX3g4Nl9vcHMgX19pbml0ZGF0YSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTMyNC1cXHQuaGFyZHdhcmVfdW5zZXR1cCA9IHN2bV9oYXJkd2FyZV91bnNldHVwLFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTMyNTpcXHQuZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSA9IHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1LFxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTMyNi1cXHQuZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUgPSBzdm1fZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEyOjQzLjUwOTYzMjYwM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDkxOTQ2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHVuZGVyc3RhbmQgaXQ6XG5cbioqS1ZNIENQVSBWaXJ0dWFsaXphdGlvbiBBY3RpdmF0aW9uIExvZ2ljKipcblxuT2theSwgc28gYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCB3aGVuZXZlciBLVk0gdmlydHVhbGl6YXRpb24gb24gdGhlIENQVSBpcyBhY3RpdmF0ZWQuIFRoYXQncyB0cmlnZ2VyZWQgd2hlbiBLVk0gaXRzZWxmIGdldHMgbG9hZGVkLCBvciwgcGVyaGFwcyBtb3JlIGltcG9ydGFudGx5LCB3aGVuIGEgdmlydHVhbCBtYWNoaW5lIGlzIHNwdW4gdXAgYW5kIG5lZWRzIHRvIHVzZSBLVk0uIEEga2V5IHBhcnQgb2YgdGhlIGZsb3cuXG5cbkhhbmcgb24gYSBzZWNvbmTigKYgSSdtIHJlbWVtYmVyaW5nIGBlbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBhY3R1YWxseSBkZWZpbmVkIHdpdGhpbiB0aGUgYGt2bV94ODZfb3BzYCBzdHJ1Y3R1cmUuIFRoYXQgdGVsbHMgbWUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgeDg2IGFyY2hpdGVjdHVyZSBhbmQgZGVlcGx5IHRpZWQgaW50byB0aGUgY29yZSBLVk0gb3BlcmF0aW9ucy5cblxuUmlnaHQuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBLVk0gY29uZmlndXJhdGlvbiBzcGVjaWZpY2FsbHkgZm9yIFNWTSBzdXBwb3J0IHRvIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgY29ycmVjdC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvbmZpZyBzYXlzIGFib3V0IFNlY3VyZSBWaXJ0dWFsIE1hY2hpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NDMsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjo0Ni42MTg4Mjk2NDlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM4NTU1MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTV9BTURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTM0PWNvbmZpZyBLVk1fSU5URUxfVERYXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjo0Ni43MTI2OTAwNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTc1NTAwMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0tQU1EIFZpcnR1YWxpemF0aW9uIEVuYWJsZW1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgS1ZNLUFNRCBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBob3cgdmlydHVhbGl6YXRpb24gaXMgZW5hYmxlZC4gVGhlIGNvbmZpZyBpcyBjbGVhcmx5IHNldCB0byBgS1ZNX0FNRGAsIHdoaWNoIGlzIHRoZSBzdGFydGluZyBwb2ludC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmb2N1cyBvbiB0aGUgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBmdW5jdGlvbiBhcyBhIGtleSBzeW1ib2wsIGFuZCBpdCdzIGxvZ2ljYWwgZ2l2ZW4gdGhhdCBpdHMgbmFtZSBpcyBwcmV0dHkgaW5kaWNhdGl2ZSBvZiB3aGF0IHdlJ3JlIGFmdGVyLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgaXRzIHVzdWFsbHkgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiBvciB3aGVuIHRoZSBzeXN0ZW0gaXMgY2hhbmdpbmcgQ1BVcywgZWl0aGVyIGR1ZSB0byBob3RwbHVnZ2luZywgb3Igc3VzcGVuZC9yZXN1bWUgZXZlbnRzLlxuXG5BaCwgaGFuZyBvbiwgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSB0cmlnZ2VyZWQgZnJvbSB0aGUgS1ZNIGNvcmUg4oCTIHNwZWNpZmljYWxseSwgYGhhcmR3YXJlX2VuYWJsZV9hbGxgLCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2l0aGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLiBNYWtlcyBzZW5zZS4gU28sIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgZ29pbmcgb24sIHRoZSBiZXN0IG5leHQgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIHRyYWNlIHdoZXJlIGBlbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpcyBhY3R1YWxseSBiZWluZyBpbnZva2VkIGZyb20gd2l0aGluIHRoZSBsYXJnZXIgS1ZNIGNvZGViYXNlLiBUaGF0IHdpbGwgcHJvdmlkZSB0aGUgY3JpdGljYWwgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExOCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEyOjUwLjExMDI0MTcyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2OTg1MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTU1MD1zdGF0aWMgdm9pZCBzdm1fZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTYxLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTYyOnN0YXRpYyBpbnQgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU2My17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTUzMTk9c3RydWN0IGt2bV94ODZfb3BzIHN2bV94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzMjQtXFx0LmhhcmR3YXJlX3Vuc2V0dXAgPSBzdm1faGFyZHdhcmVfdW5zZXR1cCxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUzMjU6XFx0LmVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUgPSBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUzMjYtXFx0LmRpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gc3ZtX2Rpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM9ODgwPXN0cnVjdCBrdm1feDg2X29wcyB2dF94ODZfb3BzIF9faW5pdGRhdGEgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L21haW4uYy04ODYtXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmM6ODg3OlxcdC5lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gdm14X2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUsXFxuYXJjaC94ODYva3ZtL3ZteC9tYWluLmMtODg4LVxcdC5kaXNhYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSA9IHZ0X29wKGRpc2FibGVfdmlydHVhbGl6YXRpb25fY3B1KSxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmM9Mjk2Nz1pbnQgdm14X2NoZWNrX3Byb2Nlc3Nvcl9jb21wYXQodm9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdm14LmMtMzAwMy1cXG5hcmNoL3g4Ni9rdm0vdm14L3ZteC5jOjMwMDQ6aW50IHZteF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC94ODYva3ZtL3ZteC92bXguYy0zMDA1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgveDg2X29wcy5oPTE2PWludCB2bXhfY2hlY2tfcHJvY2Vzc29yX2NvbXBhdCh2b2lkKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3g4Nl9vcHMuaDoxNzppbnQgdm14X2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XFxuYXJjaC94ODYva3ZtL3ZteC94ODZfb3BzLmgtMTgtdm9pZCB2bXhfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9Njk4Nz1pbnQga3ZtX3g4Nl92ZW5kb3JfaW5pdChzdHJ1Y3Qga3ZtX3g4Nl9pbml0X29wcyAqb3BzKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTY5OTMtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjY5OTQ6XFx0aWYgKGt2bV94ODZfb3BzLmVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpIHtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjk5NS1cXHRcXHRwcl9lcnIoXFxcImFscmVhZHkgbG9hZGVkIHZlbmRvciBtb2R1bGUgJyVzJ1xcXFxuXFxcIiwga3ZtX3g4Nl9vcHMubmFtZSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzEzNC1vdXRfdW53aW5kX29wczpcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzEzNTpcXHRrdm1feDg2X29wcy5lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gTlVMTDtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzEzNi1cXHRrdm1feDg2X2NhbGwoaGFyZHdhcmVfdW5zZXR1cCkoKTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz03MTQ2PXZvaWQga3ZtX3g4Nl92ZW5kb3JfZXhpdCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTcxNzQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2dmVuZG9yX21vZHVsZV9sb2NrKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzE3NTpcXHRrdm1feDg2X29wcy5lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1ID0gTlVMTDtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzE3Ni1cXHRtdXRleF91bmxvY2soXFx1MDAyNnZlbmRvcl9tb2R1bGVfbG9jayk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9OTY2MT12b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy05NjY1LVxcbmFyY2gveDg2L2t2bS94ODYuYzo5NjY2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2Njcte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2ODEtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjk2ODI6XFx0cmV0ID0ga3ZtX3g4Nl9jYWxsKGVuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUpKCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTk2ODMtXFx0aWYgKHJldCAhPSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjo1MC4yMDcyMzMyMTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTMzNDAyMDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNIENQVSBWaXJ0dWFsaXphdGlvbiBFbmFibGVtZW50IFBhdGgqKlxuXG5SaWdodCwgYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLi4uIHRoYXQncyBhIGtleSBmdW5jdGlvbiB3aXRoaW4gS1ZNLCB0aGUgY29yZSB2aXJ0dWFsaXphdGlvbiBpbmZyYXN0cnVjdHVyZS4gSXTigJlzIHJlc3BvbnNpYmxlIGZvciwgd2VsbCwgZW5hYmxpbmcgdGhlIENQVSBmb3IgdmlydHVhbGl6YXRpb24uIE5hdHVyYWxseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIGNhbGwgZ3JhcGguIEtub3dpbmcgd2hlcmUgdGhpcyBpcyBpbnZva2VkIGlzIGNydWNpYWwgZm9yIGRlYnVnZ2luZywgcGVyZm9ybWFuY2UgYW5hbHlzaXMsIG9yIHNpbXBseSB1bmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gU28sIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLiBMZXQncyBzZWUgd2hlcmUgdGhhdCBnZXRzIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgS1ZNIGNvcmUuIFRoaXMgd2lsbCBpbmZvcm0gbWUgYWJvdXQgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGFuZCB0aGUgY29udGV4dHMgdW5kZXIgd2hpY2ggQ1BVIHZpcnR1YWxpemF0aW9uIGNhcGFiaWxpdGllcyBhcmUgYnJvdWdodCBvbmxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NDAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjo1My4zNDA2Mzc3NzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTc4NzYzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9rdm0vYXJtLmM9MjI4OD1zdGF0aWMgdm9pZCBjcHVfaHlwX3VuaW5pdCh2b2lkICpkaXNjYXJkKVxcbi0tXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMjI5NS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYzoyMjk2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC9hcm02NC9rdm0vYXJtLmMtMjI5Ny17XFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYz0yNTMzPXN0YXRpYyBpbnQgX19pbml0IGRvX3Brdm1faW5pdCh1MzIgaHlwX3ZhX2JpdHMpXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yNTQ2LVxcdCAqIFRoZSBzdHViIGh5cGVyY2FsbHMgYXJlIG5vdyBkaXNhYmxlZCwgc28gc2V0IG91ciBsb2NhbCBmbGFnIHRvXFxuYXJjaC9hcm02NC9rdm0vYXJtLmM6MjU0NzpcXHQgKiBwcmV2ZW50IGEgbGF0ZXIgcmUtaW5pdCBhdHRlbXB0IGluIGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUoKS5cXG5hcmNoL2FybTY0L2t2bS9hcm0uYy0yNTQ4LVxcdCAqL1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL21haW4uYz0yODc9bG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jLTI5Mi1cXG5hcmNoL2xvb25nYXJjaC9rdm0vbWFpbi5jOjI5MzppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9tYWluLmMtMjk0LXtcXG4tLVxcbmFyY2gvbWlwcy9rdm0vbWlwcy5jPTEyMz1pbnQga3ZtX2FyY2hfdmNwdV9zaG91bGRfa2ljayhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL21pcHMva3ZtL21pcHMuYy0xMjctXFxuYXJjaC9taXBzL2t2bS9taXBzLmM6MTI4OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuYXJjaC9taXBzL2t2bS9taXBzLmMtMTI5LXtcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYz0zMD1sb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL21haW4uYy0zNS1cXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmM6MzY6aW50IGt2bV9hcmNoX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClcXG5hcmNoL3Jpc2N2L2t2bS9tYWluLmMtMzcte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTk2NjE9dm9pZCBrdm1fYXJjaF9kaXNhYmxlX3ZpcnR1YWxpemF0aW9uKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTY2NS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTY2NjppbnQga3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbmFyY2gveDg2L2t2bS94ODYuYy05NjY3LXtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNjU5PXZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKTtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjY1LSAqL1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNjY2OmludCBrdm1fYXJjaF9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpO1xcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNjY3LXZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZCk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MDI9c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NjA2LVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTYwNzpcXHRpZiAoa3ZtX2FyY2hfZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpKSB7XFxudmlydC9rdm0va3ZtX21haW4uYy01NjA4LVxcdFxcdHByX2luZm8oXFxcImt2bTogZW5hYmxpbmcgdmlydHVhbGl6YXRpb24gb24gQ1BVJWQgZmFpbGVkXFxcXG5cXFwiLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMjo1NS42NTg1MjE2NTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzMzgxODc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHZpcnR1YWxpemF0aW9uIGFuZCBrZXJuZWwgaW50ZXJuYWxzOlxuXG4qKkFuYWx5emluZyB0aGUgVmlydHVhbGl6YXRpb24gRW50cnkgUG9pbnQqKlxuXG5SaWdodCwgYGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YC4uLiB0aGF0J3MgYSBrZXkgZnVuY3Rpb24uIE15IG1pbmQgaW1tZWRpYXRlbHkgZmxhc2hlcyB0byBgdmlydC9rdm0va3ZtX21haW4uY2AuIFRoYXQgdGVsbHMgbWUgKmV4YWN0bHkqIHdoZXJlIHRoaXMgY3J1Y2lhbCBwaWVjZSBvZiBjb2RlIGxpdmVzLCB3aGljaCBpcyBpbmNyZWRpYmx5IGhlbHBmdWwgZm9yIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIHRoZSBpbml0aWFsIHNldHVwLiBJIGtub3cgYGt2bV9tYWluLmNgIGlzIHRoZSBoZWFydCBvZiBLVk0ncyBpbml0aWFsaXphdGlvbiwgdGhlIGNvcmUgZmlsZSBzZXR0aW5nIHVwIHRoZSB2aXJ0dWFsaXphdGlvbiBpbmZyYXN0cnVjdHVyZSBmb3IgYSBzcGVjaWZpYyBDUFUuIFNvLCB0aGlzIGZ1bmN0aW9uJ3MgbmFtZSBhbmQgaXRzIGZpbGUgbG9jYXRpb24gZ2l2ZSBtZSBhIHZlcnkgaGlnaC1sZXZlbCBjb250ZXh0IGltbWVkaWF0ZWx5LiBJJ20gdGhpbmtpbmcsIFwiT2theSwgdGhpcyBpcyB3aGVyZSBhIHNwZWNpZmljIENQVSBpcyBiZWluZyBwcmVwYXJlZCB0byBydW4gdmlydHVhbCBtYWNoaW5lcyB1c2luZyBLVk0uXCIgSXTigJlzIHRoZSBlbnRyeSBwb2ludCwgdGhlIHNwcmluZ2JvYXJkIGZvciB0aGUgdmlydHVhbGl6YXRpb24gam91cm5leSBmb3IgdGhhdCBjb3JlLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB3aGVuIHRoaW5raW5nIGFib3V0IGVuYWJsaW5nIEtWTS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkxNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEyOjU4Ljg5MjM0MjMyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc1NDAyNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jPTU1OTc9X193ZWFrIHZvaWQga3ZtX2FyY2hfZGlzYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NjAxLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTYwMjpzdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxudmlydC9rdm0va3ZtX21haW4uYy01NjAzLXtcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM9NTYxNz1zdGF0aWMgaW50IGt2bV9vbmxpbmVfY3B1KHVuc2lnbmVkIGludCBjcHUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MjMtXFx0ICovXFxudmlydC9rdm0va3ZtX21haW4uYzo1NjI0OlxcdHJldHVybiBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSgpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYyNS19XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2NzY9c3RhdGljIHZvaWQga3ZtX3Jlc3VtZSh2b2lkICpkYXRhKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NjgwLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTY4MTpcXHRXQVJOX09OX09OQ0Uoa3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUoKSk7XFxudmlydC9rdm0va3ZtX21haW4uYy01NjgyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTI6NTguOTg5OTAyMjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0OTU1MDYwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgQ1BVIFZpcnR1YWxpemF0aW9uIEluaXRpYWxpemF0aW9uKipcblxuSG1tLCBzbyBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGlzIHRyaWdnZXJlZC4gR290IGl0LCB0aGF0J3Mgd2hhdCBJJ2QgZXhwZWN0IG9uIENQVSBicmluZy11cCBvciByZXN1bWUuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAgYWxzbyBnZXRzIGNhbGxlZCBkdXJpbmcgS1ZNIGluaXRpYWxpemF0aW9uLCB3aGljaCBpcyBhIGJpdCBkaWZmZXJlbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28sIHRoZSBjYWxsIHN0YWNrLCBhbmQgdGhlIG92ZXJhbGwgY29udGV4dC4gVGhpcyBzdWdnZXN0cyBhIHBvdGVudGlhbCBvdmVybGFwIG9yIHJlZHVuZGFuY3kuIExldCBtZSBzZWUgd2hlcmUgYGt2bV9vbmxpbmVfY3B1YCBmaXRzIGludG8gdGhpcyBwaWN0dXJlLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBjbGFyaWZ5IHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUxNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEzOjAxLjkzOTQ1NTg5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODA0NTU5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fb25saW5lX2NwdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9rdm1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmM9NTYwMj1zdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KHZvaWQpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MTYtXFxudmlydC9rdm0va3ZtX21haW4uYzo1NjE3OnN0YXRpYyBpbnQga3ZtX29ubGluZV9jcHUodW5zaWduZWQgaW50IGNwdSlcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MTgte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01Njk0PXN0YXRpYyBpbnQga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NzA1LVxcdHIgPSBjcHVocF9zZXR1cF9zdGF0ZShDUFVIUF9BUF9LVk1fT05MSU5FLCBcXFwia3ZtL2NwdTpvbmxpbmVcXFwiLFxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTcwNjpcXHRcXHRcXHQgICAgICBrdm1fb25saW5lX2NwdSwga3ZtX29mZmxpbmVfY3B1KTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3MDctXFx0aWYgKHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEzOjAyLjAxNzUwNTQzMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzAxMDYzNjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEtWTSBJbml0aWFsaXphdGlvbiBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCByZWFsbHkgZ2V0cyB0aGluZ3MgZ29pbmcgd2l0aCBDUFUgaG90cGx1Z2dpbmcsIGlzbid0IGl0PyBJdCdzIHRoZSBvbmUgdGhhdCBraWNrcyBvZmYgYGt2bV9vbmxpbmVfY3B1YCBmb3IgKmV2ZXJ5KiBvbmxpbmUgQ1BVLiBJJ20gdmlzdWFsaXppbmcgdGhlIHdob2xlIHByb2Nlc3Mgbm93Li4uaXQncyBjYWxsZWQgZHVyaW5nIEtWTSBpbml0aWFsaXphdGlvbiwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgaGF2ZSB0byBiZSBjbGVhciwgaXQgaGFwcGVucyB3aGVuIHRoZSBmaXJzdCBWTSBpcyBicm91Z2h0IG9ubGluZSwgb3IgZXZlbiB3aGVuIHRoZSBtb2R1bGUgbG9hZHMsIGRlcGVuZGluZyBvbiB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gYmVpbmcgdXNlZC5cblxuTm93LCBJJ20gdHJ5aW5nIHRvIG5haWwgZG93biB0aGUgKmV4YWN0KiBjYWxsIGNoYWluLiBJcyBga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbmAgY2FsbGVkIGRpcmVjdGx5IGZyb20gYGt2bV9pbml0YCwgdGhlIG1vZHVsZSdzIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCBvciBpcyBpdCBjb21pbmcgZnJvbSBga3ZtX2Rldl9pb2N0bF9jcmVhdGVfdm1gPyBHb3R0YSBjb25maXJtIHRoYXQgdG8gYmUgY29tcGxldGVseSBhY2N1cmF0ZSBhYm91dCB0aGUgc2V0dXAgc2VxdWVuY2UuIEl0J3MgYSBrZXkgZGV0YWlsIGZvciBkZWJ1Z2dpbmcgb3IgdW5kZXJzdGFuZGluZyB0aGUgc3RhdGUgdHJhbnNpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMDMsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTM6MDUuNzE4NTcwNjYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjUxMjQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2t2bV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0va3ZtX21haW4uYz0xMDg4PXN0YXRpYyBpbmxpbmUgc3RydWN0IGt2bV9pb19idXMgKmt2bV9nZXRfYnVzX2Zvcl9kZXN0cnVjdGlvbihzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEwOTQtXFxudmlydC9rdm0va3ZtX21haW4uYzoxMDk1OnN0YXRpYyBpbnQga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbih2b2lkKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTEwOTYtc3RhdGljIHZvaWQga3ZtX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZCk7XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTEwOTg9c3RhdGljIHN0cnVjdCBrdm0gKmt2bV9jcmVhdGVfdm0odW5zaWduZWQgbG9uZyB0eXBlLCBjb25zdCBjaGFyICpmZG5hbWUpXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTExNzktXFxudmlydC9rdm0va3ZtX21haW4uYzoxMTgwOlxcdHIgPSBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uKCk7XFxudmlydC9rdm0va3ZtX21haW4uYy0xMTgxLVxcdGlmIChyKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01NTk3PV9fd2VhayB2b2lkIGt2bV9hcmNoX2Rpc2FibGVfdmlydHVhbGl6YXRpb24odm9pZClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYwMS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU2MDI6c3RhdGljIGludCBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdSh2b2lkKVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTYwMy17XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2MTc9c3RhdGljIGludCBrdm1fb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NjIzLVxcdCAqL1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTYyNDpcXHRyZXR1cm4ga3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUoKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2MjUtfVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01Njc2PXN0YXRpYyB2b2lkIGt2bV9yZXN1bWUodm9pZCAqZGF0YSlcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTY4MC1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU2ODE6XFx0V0FSTl9PTl9PTkNFKGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1KCkpO1xcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTY4Mi19XFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU2OTA9c3RhdGljIHN0cnVjdCBzeXNjb3JlIGt2bV9zeXNjb3JlID0ge1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NjkzLVxcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTY5NDpzdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24odm9pZClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU2OTUte1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01NzUyPXN0YXRpYyBpbnQga3ZtX2luaXRfdmlydHVhbGl6YXRpb24odm9pZClcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTc1NC1cXHRpZiAoZW5hYmxlX3ZpcnRfYXRfbG9hZClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjU3NTU6XFx0XFx0cmV0dXJuIGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24oKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3NTYtXFxuLS1cXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTU3NjA9c3RhdGljIHZvaWQga3ZtX3VuaW5pdF92aXJ0dWFsaXphdGlvbih2b2lkKVxcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYy01NzY1LSNlbHNlIC8qIENPTkZJR19LVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElORyAqL1xcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTc2NjpzdGF0aWMgaW50IGt2bV9lbmFibGVfdmlydHVhbGl6YXRpb24odm9pZClcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTU3Njcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMzowNS44MTUwOTA0NTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIzMjAwMDY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTSBBU0lEIEdlbmVyYXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEtWTSBwYXRjaCBhbmQgaG93IGl0IGltcGFjdHMgQVNJRCBnZW5lcmF0aW9uLiBJdCBsb29rcyBsaWtlIGBrdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uYCBpcyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludCwgY2FsbGVkIGVpdGhlciBkdXJpbmcgVk0gY3JlYXRpb24gKGBrdm1fY3JlYXRlX3ZtYCkgb3IsIGltcG9ydGFudGx5LCBhdCBtb2R1bGUgbG9hZCBpZiBgZW5hYmxlX3ZpcnRfYXRfbG9hZGAgaXMgc2V0LiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHNpbXBsZTogdGhlIHBhdGNoIGluY3JlbWVudHMgYHNkLVx1MDAzZWFzaWRfZ2VuZXJhdGlvbmAgaW5zdGVhZCBvZiBqdXN0IHNldHRpbmcgaXQgdG8gMS4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgYmlnIGRlYWw7IGl0IHByZXZlbnRzIEFTSUQgY29sbGlzaW9ucywgd2hpY2ggaXMgZXNzZW50aWFsIHdoZW4gdmlydHVhbGl6YXRpb24gaXMgdG9nZ2xlZCBvciB3aGVuIENQVXMgYXJlIGhvdHBsdWdnZWQuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHNwb3Qgd29ydGggZnV6emluZyB0byBlbnN1cmUgc3RhYmlsaXR5LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCB3b3VsZCBiZSB0aGUgZnVuY3Rpb24gdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcuIEJ1dCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzbid0IGluIGEgaG90IHBhdGg7IGl0J3MgdHJpZ2dlcmVkIGR1cmluZyBWTSBjcmVhdGlvbiBvciBDUFUgaG90cGx1ZyBldmVudHMuIEhtbSwgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgLCBzbyB0aGF0J3MgdGhlIG9ubHkgZm9jdXMgc3ltYm9sIGF2YWlsYWJsZS5cblxuTm93IEkgbmVlZCB0byB0aGluayBhYm91dCB0aGUgY29uZmlndXJhdGlvbi4gU2luY2UgdGhpcyBwYXRjaCBzZWVtcyBzcGVjaWZpYyB0byBBTUQncyBTVk0sIEkgbmVlZCB0byBtYWtlIHN1cmUgYEtWTV9BTURgIGlzIGVuYWJsZWQuIExldCBtZSBxdWlja2x5IGNoZWNrIGlmIHRoYXQgY29uZmlndXJhdGlvbiBpcyBzdWZmaWNpZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjQwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDEyOjEzOjExLjA0NzA5MzQ5NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk1NTQ2MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTV9BTURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTM0PWNvbmZpZyBLVk1fSU5URUxfVERYXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMzoxMS4xNDY2NTk3NTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NTc0MjY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0czpcblxuKipDb25maWd1cmluZyBLVk0gb24gYW4gQU1EIFN5c3RlbSoqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRoYXQgYEtWTV9BTURgIGlzIGRlZmluaXRlbHkgdGhlIGtleSBjb25maWd1cmF0aW9uIGl0ZW0uIEJ1dCBob2xkIG9uLCBJIGFsc28ga25vdyB0aGF0IGBLVk1gIGl0c2VsZiBpcyBhIHByZXJlcXVpc2l0ZS4gVGhpcyBtZWFucyBJJ3ZlIGdvdCBhIGRlcGVuZGVuY3kgaXNzdWUgdG8gc29ydCBvdXQuIE5hdHVyYWxseSwgYEtWTV9BTURgIHJlbGllcyBvbiBgS1ZNYCB0byBiZSBlbmFibGVkIGZpcnN0LiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgYGFyY2gveDg2L2t2bS9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdXN1YWxseSB0aGUgcGxhY2UgdG8gZmluZCB0aGUgZGV0YWlsZWQgZGVwZW5kZW5jaWVzIGFuZCByZWxldmFudCBkZXNjcmlwdGlvbnMgZm9yIG9wdGlvbnMgbGlrZSBgS1ZNX0FNRGAuIEknbGwgY29uZmlybSB0aGF0IGBLVk1fQU1EYCBpcyBsaW5rZWQgdG8gYEtWTWAgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5NjEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMzoxNC41MzI0MDUwNDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0MDpcXHRcXHRoZWxwXFxuIDE0MTpcXHRcXHQgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIGxhdW5jaGluZyBJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKVxcbiAxNDI6XFx0XFx0ICBjb25maWRlbnRpYWwgVk1zIG9uIEludGVsIHByb2Nlc3NvcnMuXFxuIDE0MzpcXHRcXG4gMTQ0OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTQ1OlxcdFxcbiAxNDY6XFx0Y29uZmlnIEtWTV9BTURcXG4gMTQ3OlxcdFxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuIDE0ODpcXHRcXHRkZXBlbmRzIG9uIEtWTSBcXHUwMDI2XFx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcXG4gMTQ5OlxcdFxcdGhlbHBcXG4gMTUwOlxcdFxcdCAgUHJvdmlkZXMgc3VwcG9ydCBmb3IgS1ZNIG9uIEFNRCBwcm9jZXNzb3JzIGVxdWlwcGVkIHdpdGggdGhlIEFNRC1WXFxuIDE1MTpcXHRcXHQgIChTVk0pIGV4dGVuc2lvbnMuXFxuIDE1MjpcXHRcXG4gMTUzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDE1NDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGt2bS1hbWQuXFxuIDE1NTpcXHRcXG4gMTU2OlxcdGNvbmZpZyBLVk1fQU1EX1NFVlxcbiAxNTc6XFx0XFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4gMTU4OlxcdFxcdGRlZmF1bHQgeVxcbiAxNTk6XFx0XFx0ZGVwZW5kcyBvbiBLVk1fQU1EIFxcdTAwMjZcXHUwMDI2IFg4Nl82NFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxMjoxMzoxNC41MzI1NTY5NjZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYxMDY0MDc0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNIEFNRCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjaGFuZ2UgSSdtIGxvb2tpbmcgYXQgZm9jdXNlcyBvbiBgS1ZNX0FNRGAsIHNwZWNpZmljYWxseSB0aGUgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBzY2FuIGNvbmZpcm1zIHRoYXQgdGhpcyBpcyB0aGUgc29sZSBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCBieSB0aGlzIHBhdGNoLCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncy4gVGhlIGZ1bmN0aW9uJ3MgcmVhY2hhYmxlLCBuYXR1cmFsbHksIHRocm91Z2ggS1ZNIFZNIGNyZWF0aW9uIG9uIEFNRCBoYXJkd2FyZSwgb3IgaW4gbmVzdGVkIHZpcnR1YWxpemF0aW9uIHNldHVwcywgYW5kIHRoYXQgYWxvbmUgbWFrZXMgaXQgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cbkxldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBmdW5jdGlvbidzIG5hbWUgYW5kIHNpZ25hdHVyZSDigJMgeWVwLCBpdOKAmXMgYHN0YXRpYyBpbnQgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHUodm9pZClgLiBHb29kLlxuXG5Ob3cgZm9yIHRoZSByZWFzb25pbmcuIFRoZSBwYXRjaCdzIGNvcmUgaXMgaW5jcmVtZW50aW5nIGBhc2lkX2dlbmVyYXRpb25gIHdpdGhpbiBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGluc3RlYWQgb2YgcmVzZXR0aW5nIGl0IHRvIDEuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb247IGl0J3MgZGVzaWduZWQgdG8gc3RvcCBBU0lEIGNvbGxpc2lvbnMgZnJvbSBwb3BwaW5nIHVwIHdoZW4gdmlydHVhbGl6YXRpb24gZ2V0cyBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCwgYSBzY2VuYXJpbyB5b3UgbWlnaHQgc2VlIHdpdGggdGhpbmdzIGxpa2UgQ1BVIGhvdHBsdWdnaW5nIG9yIGR1cmluZyBzdXNwZW5kL3Jlc3VtZSBjeWNsZXMuIEJlY2F1c2UgdGhpcyBjb2RlIGdldHMgdXNlZCB3aGVuIGNyZWF0aW5nIEtWTSBWTXMgb24gQU1EIHN5c3RlbXMgb3IgbmVzdGVkIFZNcywgaXQgbWFrZXMgZnV6emluZyB0aGlzIGNvZGUgYSBwcmlvcml0eS5cblxuVGhlIGtleSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIGBzdm1fZW5hYmxlX3ZpcnR1YWxpemF0aW9uX2NwdWAuIFRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXMgYEtWTV9BTURgLiBIb2xkIG9uLCBJIHNob3VsZCBjaGVjayDigJMgaXMgdGhlcmUgYW5vdGhlciByZWxldmFudCBjb25maWc/IEFoLCBgQ1BVX1NVUF9BTURgIGlzIG9mdGVuIG9uIGJ5IGRlZmF1bHQgb24geDg2XzY0IHN5c3RlbXMuIEJ1dCBhY3R1YWxseSwgYEtWTV9BTURgIGFsc28gZGVwZW5kcyBvbiBgS1ZNYCwgc28ganVzdCBgS1ZNX0FNRGAgaXMgc3VmZmljaWVudC5cblxuTGV0J3MgcmV2aWV3IHRoZSBwYXRjaCBpdHNlbGYgYWdhaW4gZm9yIGNsYXJpdHk6XG5cbmBgYGNcbiBcdHNkID0gcGVyX2NwdV9wdHIoXHUwMDI2c3ZtX2RhdGEsIG1lKTtcbi1cdHNkLVx1MDAzZWFzaWRfZ2VuZXJhdGlvbiA9IDE7XG4rXHQvKlxuK1x0ICogQnVtcCB0aGUgY3VycmVudCBhc2lkX2dlbmVyYXRpb24gdmFsdWUgdG8gZW5zdXJlIGFueSB2Q1BVIHRoYXRcbitcdCAqIHByZXZpb3VzbHkgcmFuIG9uIHRoaXMgQ1BVIHNlZXMgYSBzdGFsZSBnZW5lcmF0aW9uIGFuZCBpcyBmb3JjZWRcbitcdCAqIHRvIGFjcXVpcmUgYSBuZXcgQVNJRCwgcHJldmVudGluZyBhIGxhdGVudCBBU0lEIGNvbGxpc2lvbi5cbitcdCAqL1xuK1x0c2QtXHUwMDNlYXNpZF9nZW5lcmF0aW9uKys7XG4gXHRzZC1cdTAwM2VtYXhfYXNpZCA9IGNwdWlkX2VieChTVk1fQ1BVSURfRlVOQykgLSAxO1xuYGBgXG5cbkl0J3MgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gQWxyaWdodCwgSSdtIHJlYWR5IHRvIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MjcsIk91dHB1dFRva2VucyI6MTQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTI6MTM6MjIuMTQzMjAwNjE1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3MDg3OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3ZtX2VuYWJsZV92aXJ0dWFsaXphdGlvbl9jcHVgIGluIHRoZSBLVk0gQU1EIFNWTSBkcml2ZXIgdG8gaW5jcmVtZW50IHRoZSBgYXNpZF9nZW5lcmF0aW9uYCBpbnN0ZWFkIG9mIHJlc2V0dGluZyBpdCB0byAxLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBwcmV2ZW50cyBBU0lEIGNvbGxpc2lvbnMgd2hlbiB2aXJ0dWFsaXphdGlvbiBpcyBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCAoZS5nLiwgZHVyaW5nIENQVSBob3RwbHVnIG9yIHN1c3BlbmQvcmVzdW1lKS4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB3aGVuIGNyZWF0aW5nIEtWTSBWTXMgb24gQU1EIHByb2Nlc3NvcnMgb3IgaW4gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHN2bV9lbmFibGVfdmlydHVhbGl6YXRpb25fY3B1YCBpbiB0aGUgS1ZNIEFNRCBTVk0gZHJpdmVyIHRvIGluY3JlbWVudCB0aGUgYGFzaWRfZ2VuZXJhdGlvbmAgaW5zdGVhZCBvZiByZXNldHRpbmcgaXQgdG8gMS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgcHJldmVudHMgQVNJRCBjb2xsaXNpb25zIHdoZW4gdmlydHVhbGl6YXRpb24gaXMgZGlzYWJsZWQgYW5kIHJlLWVuYWJsZWQgKGUuZy4sIGR1cmluZyBDUFUgaG90cGx1ZyBvciBzdXNwZW5kL3Jlc3VtZSkuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgd2hlbiBjcmVhdGluZyBLVk0gVk1zIG9uIEFNRCBwcm9jZXNzb3JzIG9yIGluIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzwfn[1] Phase: Succeeded StartedAt: 2026-07-15 12:13:33 +0000 UTC FinishedAt: 2026-07-15 12:13:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 12:13:33 +0000 UTC FinishedAt: 2026-07-15 12:13:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2] Phase: Succeeded StartedAt: 2026-07-15 12:13:33 +0000 UTC FinishedAt: 2026-07-15 13:49:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:13:33 +0000 UTC FinishedAt: 2026-07-15 13:49:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:13:33 +0000 UTC FinishedAt: 2026-07-15 12:13:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:13:33 +0000 UTC FinishedAt: 2026-07-15 12:13:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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-workflowbzwfn/series-workflowbzwfn-convert-artifact-1151476522/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:13:43 +0000 UTC FinishedAt: 2026-07-15 12:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:13:43 +0000 UTC FinishedAt: 2026-07-15 12:35:40 +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:*ed8abe75-c202-44ae-b3f7-92d4d6fb90f6,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-workflowbzwfn/series-workflowbzwfn-convert-artifact-1151476522/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": "f4871ece-d1af-46e6-a1ef-dd46ec7dac49", "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-workflowbzwfn/series-workflowbzwfn-build-action-2833751192/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:13:43 +0000 UTC FinishedAt: 2026-07-15 12:35:30 +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:*ed8abe75-c202-44ae-b3f7-92d4d6fb90f6,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-workflowbzwfn/series-workflowbzwfn-convert-artifact-1151476522/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": "f4871ece-d1af-46e6-a1ef-dd46ec7dac49", "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-workflowbzwfn/series-workflowbzwfn-build-action-2833751192/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:35:40 +0000 UTC FinishedAt: 2026-07-15 12:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:35:40 +0000 UTC FinishedAt: 2026-07-15 12:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:35:40 +0000 UTC FinishedAt: 2026-07-15 12:35:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:35:40 +0000 UTC FinishedAt: 2026-07-15 12:35:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-workflowbzwfn/series-workflowbzwfn-convert-artifact-4208764741/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:35:50 +0000 UTC FinishedAt: 2026-07-15 12:37:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:35:50 +0000 UTC FinishedAt: 2026-07-15 12:37:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f4871ece-d1af-46e6-a1ef-dd46ec7dac49,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-workflowbzwfn/series-workflowbzwfn-build-action-2833751192/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-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:37:54 +0000 UTC FinishedAt: 2026-07-15 12:37:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:37:54 +0000 UTC FinishedAt: 2026-07-15 12:37:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:37:54 +0000 UTC FinishedAt: 2026-07-15 13:14:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:37:54 +0000 UTC FinishedAt: 2026-07-15 13:14:03 +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:*ed8abe75-c202-44ae-b3f7-92d4d6fb90f6,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-workflowbzwfn/series-workflowbzwfn-convert-artifact-4208764741/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": "27a60da2-b20e-4f5b-a4d5-9bb6d94ef4dd", "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-workflowbzwfn/series-workflowbzwfn-build-action-1755843473/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 12:37:54 +0000 UTC FinishedAt: 2026-07-15 13:13:41 +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:*ed8abe75-c202-44ae-b3f7-92d4d6fb90f6,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-workflowbzwfn/series-workflowbzwfn-convert-artifact-4208764741/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": "27a60da2-b20e-4f5b-a4d5-9bb6d94ef4dd", "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-workflowbzwfn/series-workflowbzwfn-build-action-1755843473/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:14:03 +0000 UTC FinishedAt: 2026-07-15 13:14:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:14:03 +0000 UTC FinishedAt: 2026-07-15 13:14:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:14:03 +0000 UTC FinishedAt: 2026-07-15 13:15:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:14:03 +0000 UTC FinishedAt: 2026-07-15 13:15:49 +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:*27a60da2-b20e-4f5b-a4d5-9bb6d94ef4dd,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-workflowbzwfn/series-workflowbzwfn-build-action-1755843473/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-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:15:59 +0000 UTC FinishedAt: 2026-07-15 13:49:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:15:59 +0000 UTC FinishedAt: 2026-07-15 13:49:35 +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":["svm_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:*f4871ece-d1af-46e6-a1ef-dd46ec7dac49,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*27a60da2-b20e-4f5b-a4d5-9bb6d94ef4dd,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-workflowbzwfn/series-workflowbzwfn-build-action-2833751192/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-workflowbzwfn/series-workflowbzwfn-build-action-1755843473/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:15:59 +0000 UTC FinishedAt: 2026-07-15 13:16:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:15:59 +0000 UTC FinishedAt: 2026-07-15 13:16:12 +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":["svm_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-workflowbzwfn/series-workflowbzwfn-convert-artifact-3652677578/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:15:59 +0000 UTC FinishedAt: 2026-07-15 13:15:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:15:59 +0000 UTC FinishedAt: 2026-07-15 13:15:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:15:59 +0000 UTC FinishedAt: 2026-07-15 13:15:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:16:19 +0000 UTC FinishedAt: 2026-07-15 13:49:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbzwfn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["svm_enable_virtualization_cpu"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aec122bdcaf6f8c4ecfc7f6adf6773015ced676","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"bf0ed846-297d-488e-94e1-315cfe0e5b52","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-07-15 13:16:19 +0000 UTC FinishedAt: 2026-07-15 13:49:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f4871ece-d1af-46e6-a1ef-dd46ec7dac49,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*27a60da2-b20e-4f5b-a4d5-9bb6d94ef4dd,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-workflowbzwfn/series-workflowbzwfn-build-action-2833751192/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-workflowbzwfn/series-workflowbzwfn-build-action-1755843473/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-workflowbzwfn/series-workflowbzwfn-convert-artifact-3652677578/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,}