Name: series-workflowsxrzf Phase: Succeeded StartedAt: 2026-07-30 13:31:31 +0000 UTC FinishedAt: 2026-07-30 14:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[0] Phase: Succeeded StartedAt: 2026-07-30 13:31:31 +0000 UTC FinishedAt: 2026-07-30 13:53:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 13:31:31 +0000 UTC FinishedAt: 2026-07-30 13:53:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTUALIZATION", "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTUALIZATION", "KVM" ], "series_id": "c244399b-7d6b-455a-a5d8-22e0891a5fca" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_mmu_map", "kvm_riscv_vcpu_exit" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDssCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9tbXVfbWFwJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYnVncyBpbiBSSVNDLVYgS1ZNIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBpbmNsdWRpbmcgdHlwZSBmaXhlcyBmb3IgZmF1bHQgYWRkcmVzc2VzIGFuZCBwcm9wZXIgaGFuZGxpbmcgb2YgLUVFWElTVCBlcnJvcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTQ3N2E1ODIzZDRjYzZlYTQxYjdiNmZhN2E4ZjBkMmU1YTEwOTQzOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDEzOjUxOjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21tdS5jIGIvYXJjaC9yaXNjdi9rdm0vbW11LmNcbmluZGV4IDhhMGFhNWUwZTIxNmUuLmQyYTA2YTU0YmUxNzQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbW11LmNcbkBAIC01NDEsNyAmIzQzOzU0MSw3IEBAIGludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG4gXHRrdm1fcGZuX3QgaGZuO1xuIFx0Ym9vbCBpc19odWdldGxiO1xuIFx0Ym9vbCB3cml0YWJsZTtcbi1cdHNob3J0IHZtYV9wYWdlc2hpZnQ7XG4mIzQzO1x0dW5zaWduZWQgaW50IHZtYV9wYWdlc2hpZnQ7XG4gXHRnZm5fdCBnZm4gPSBncGEgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4gXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTtcbiBcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXHUwMDNla3ZtO1xuQEAgLTY1MiwxMSAmIzQzOzY1MiwxMyBAQCBpbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxuIFx0XHRcdFx0XHRcdHZtYV9wYWdlc2l6ZSwgdHJ1ZSwgdHJ1ZSwgb3V0X21hcCk7XG4gXHR9XG4gXG4tXHRpZiAocmV0KVxuJiM0MztcdGlmIChyZXQgPT0gLUVFWElTVClcbiYjNDM7XHRcdHJldCA9IDA7XG4mIzQzO1x0ZWxzZSBpZiAocmV0KVxuIFx0XHRrdm1fZXJyKFwmIzM0O0ZhaWxlZCB0byBtYXAgaW4gRy1zdGFnZVxcblwmIzM0Oyk7XG4gXG4gb3V0X3VubG9jazpcbi1cdGt2bV9yZWxlYXNlX2ZhdWx0aW5fcGFnZShrdm0sIHBhZ2UsIHJldCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FRVhJU1QsIHdyaXRhYmxlKTtcbiYjNDM7XHRrdm1fcmVsZWFzZV9mYXVsdGluX3BhZ2Uoa3ZtLCBwYWdlLCByZXQsIHdyaXRhYmxlKTtcbiBcdHdyaXRlX3VubG9jayhcdTAwMjZrdm0tXHUwMDNlbW11X2xvY2spO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuY1xuaW5kZXggNmM4NTMwYjlmMjllZC4uNzZjY2VlY2VlNWFiYSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuY1xuQEAgLTE3LDcgJiM0MzsxNyw4IEBAIHN0YXRpYyBpbnQgZ3N0YWdlX3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxuIHtcbiBcdHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgaG9zdF9tYXA7XG4gXHRzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90O1xuLVx0dW5zaWduZWQgbG9uZyBodmEsIGZhdWx0X2FkZHI7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBodmE7XG4mIzQzO1x0Z3BhX3QgZmF1bHRfYWRkcjtcbiBcdGJvb2wgd3JpdGFibGU7XG4gXHRnZm5fdCBnZm47XG4gXHRpbnQgcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7LAogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfbW11X21hcCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9leGl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGJ1Z3MgaW4gUklTQy1WIEtWTSBNTVUgbWFwcGluZyBhbmQgcGFnZSBmYXVsdCBoYW5kbGluZywgaW5jbHVkaW5nIHR5cGUgZml4ZXMgZm9yIGZhdWx0IGFkZHJlc3NlcyBhbmQgcHJvcGVyIGhhbmRsaW5nIG9mIC1FRVhJU1QgZXJyb3JzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBLVk0gY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE0NzdhNTgyM2Q0Y2M2ZWE0MWI3YjZmYTdhOGYwZDJlNWExMDk0MzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAxMzo1MTo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21tdS5jIGIvYXJjaC9yaXNjdi9rdm0vbW11LmMKaW5kZXggOGEwYWE1ZTBlMjE2ZS4uZDJhMDZhNTRiZTE3NCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vbW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbW11LmMKQEAgLTU0MSw3ICYjNDM7NTQxLDcgQEAgaW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCwKIAlrdm1fcGZuX3QgaGZuOwogCWJvb2wgaXNfaHVnZXRsYjsKIAlib29sIHdyaXRhYmxlOwotCXNob3J0IHZtYV9wYWdlc2hpZnQ7CiYjNDM7CXVuc2lnbmVkIGludCB2bWFfcGFnZXNoaWZ0OwogCWdmbl90IGdmbiA9IGdwYSAmZ3Q7Jmd0OyBQQUdFX1NISUZUOwogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwogCXN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtJmd0O2t2bTsKQEAgLTY1MiwxMSAmIzQzOzY1MiwxMyBAQCBpbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LAogCQkJCQkJdm1hX3BhZ2VzaXplLCB0cnVlLCB0cnVlLCBvdXRfbWFwKTsKIAl9CiAKLQlpZiAocmV0KQomIzQzOwlpZiAocmV0ID09IC1FRVhJU1QpCiYjNDM7CQlyZXQgPSAwOwomIzQzOwllbHNlIGlmIChyZXQpCiAJCWt2bV9lcnIoJiMzNDtGYWlsZWQgdG8gbWFwIGluIEctc3RhZ2VcbiYjMzQ7KTsKIAogb3V0X3VubG9jazoKLQlrdm1fcmVsZWFzZV9mYXVsdGluX3BhZ2Uoa3ZtLCBwYWdlLCByZXQgJmFtcDsmYW1wOyByZXQgIT0gLUVFWElTVCwgd3JpdGFibGUpOwomIzQzOwlrdm1fcmVsZWFzZV9mYXVsdGluX3BhZ2Uoa3ZtLCBwYWdlLCByZXQsIHdyaXRhYmxlKTsKIAl3cml0ZV91bmxvY2soJmFtcDtrdm0tJmd0O21tdV9sb2NrKTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYwppbmRleCA2Yzg1MzBiOWYyOWVkLi43NmNjZWVjZWU1YWJhIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYwpAQCAtMTcsNyAmIzQzOzE3LDggQEAgc3RhdGljIGludCBnc3RhZ2VfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sCiB7CiAJc3RydWN0IGt2bV9nc3RhZ2VfbWFwcGluZyBob3N0X21hcDsKIAlzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90OwotCXVuc2lnbmVkIGxvbmcgaHZhLCBmYXVsdF9hZGRyOwomIzQzOwl1bnNpZ25lZCBsb25nIGh2YTsKJiM0MzsJZ3BhX3QgZmF1bHRfYWRkcjsKIAlib29sIHdyaXRhYmxlOwogCWdmbl90IGdmbjsKIAlpbnQgcmV0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBhcmNoL3Jpc2N2L2t2bS9tbXUuY2AgYW5kIGBhcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuY2AuIExldCYjMzk7cyBicmVhayBpdCBkb3duLiBJbiBgbW11LmNgLCBpdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzb21lIHR5cGUgY2hhbmdlcywgZnJvbSBgc2hvcnRgIHRvIGB1bnNpZ25lZCBpbnRgIGZvciBgdm1hX3BhZ2VzaGlmdGAgYW5kIHNvbWUgYWRqdXN0bWVudHMgdG8gdGhlIGVycm9yIGhhbmRsaW5nIGluIGBrdm1fcmlzY3ZfbW11X21hcGAuIFNwZWNpZmljYWxseSwgaG93IGAtRUVYSVNUYCBpcyBoYW5kbGVkLiBBbmQgYSBzdWJ0bGUgY2hhbmdlIHRvIHRoZSBga3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlYCBjYWxsIHdoaWNoIGxvb2tzIGxpa2UgaXQgY2hhbmdlcyB0aGUgY29uZGl0aW9uIHRoYXQgZ2V0cyBwYXNzZWQuIGB2Y3B1X2V4aXQuY2AgaXMgY2hhbmdpbmcgaG93IGBnc3RhZ2VfcGFnZV9mYXVsdGAgaGFuZGxlcyB0aGUgYGZhdWx0X2FkZHJgLCBjaGFuZ2luZyB0aGUgdHlwZSBmcm9tIGFuIGB1bnNpZ25lZCBsb25nYCB0byBhIGBncGFfdGAuCgpGdW5jdGlvbmFsbHksIHRoZXNlIGFyZSBLVk0gY2hhbmdlcyBzcGVjaWZpYyB0byB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlzIHRoaXMgZnV6emFibGU/IEFic29sdXRlbHksIGl0JiMzOTtzIEtWTSBjb2RlLiBBIHZ1bG5lcmFiaWxpdHkgaW4gS1ZNIGNvdWxkIGJlIHJlYWxseSBiYWQuIE5vdywgY2FuIHN5emthbGxlciBhY3R1YWxseSBmdXp6IGl0PyBEb2VzIHN5emthbGxlciBzdXBwb3J0IFJJU0MtViBLVk0/IFdlbGwsIGl0IGRlcGVuZHMuIElmIGl0JiMzOTtzIHJ1bm5pbmcgb24gUklTQy1WLCB5ZXMuIEV2ZW4gaWYgbm90LCB3ZSBjYW4gY2VydGFpbmx5IG1hcmsgaXQgYXMgd29ydGggZnV6emluZy4KClRoZSBwcm9tcHQgaXMgY2xlYXI6IElmIGl0IHRvdWNoZXMgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMgdGhhdCBhcmUgcmVhY2hhYmxlLCBpdCYjMzk7cyB3b3J0aCBjaGVja2luZy4gQW5kIGhlcmUgd2UgYXJlLiBJdCBtb2RpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgS1ZNIGNvZGUuIFRoYXQgc2VlbXMgbGlrZSBhIGNsZWFyIHllcy4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgS2NvbmZpZyB0byB2ZXJpZnkgS1ZNIGlzIGVuYWJsZWQgb24gUklTQy1WLiBMb29raW5nIGZvciBhIGBDT05GSUdfS1ZNYCBpbiBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2Agc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDE3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqS2NvbmZpZyBEZXBlbmRlbmN5IENoZWNrKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBjb250cm9sbGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gS1ZNIHdpdGhpbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUuIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYC4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgS1ZNIGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCB3aGF0IGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQuIEkgZXhwZWN0IHRoaXMgZmlsZSB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCBvdGhlciBmZWF0dXJlcyBvciBzZXR0aW5ncyB3aXRoaW4gdGhlIGtlcm5lbCBtdXN0IGJlIHByZXNlbnQgZm9yIEtWTSBzdXBwb3J0IHRvIGJlIGF2YWlsYWJsZSBvbiBSSVNDLVYuIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIHByb2JhYmx5IHBvaW50IG1lIHRvIHJlbGF0ZWQgS2NvbmZpZyBmaWxlcyBhbmQgb3RoZXIgYXJlYXMgdG8gY29uZmlybSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA3Olx0XG4gICA4Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgOTpcdFx0Ym9vbCBcJiMzNDtWaXJ0dWFsaXphdGlvblwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxuICAxMjpcdFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZFxuICAxNjpcdFx0ICBkaXNhYmxlZC5cbiAgMTc6XHRcbiAgMTg6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBLVk1cbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBSSVNDVl9TQkkgXHUwMDI2XHUwMDI2IE1NVVxuICAyMzpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjQ6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyNTpcdFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxuICAyNzpcdFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxuICAyODpcdFx0c2VsZWN0IEtWTV9DT01NT05cbiAgMjk6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbiAgMzA6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xuICAzMTpcdFx0c2VsZWN0IEtWTV9NTUlPXG4gIDMyOlx0XHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiAgMzM6XHRcdHNlbGVjdCBTQ0hFRF9JTkZPXG4gIDM0Olx0XHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAzOTpcdFxuICA0MDpcdGVuZGlmICMgVklSVFVBTElaQVRJT05cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTQ1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipBbmFseXNpcyBvZiBSSVNDLVYgS1ZNIE1NVSBNYXBwaW5nKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgVW5pdCAoTU1VKSBpbnRlcmFjdGlvbi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGNlbnRlcnMgb24gYSBmZXcga2V5IGRlcGVuZGVuY2llczogYFZJUlRVQUxJWkFUSU9OYCwgYEtWTWAsIGBSSVNDVl9TQklgLCBhbmQgY3J1Y2lhbGx5LCB0aGUgYE1NVWAgaXRzZWxmLiBUaG9zZSBhcmUgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBwcm9wZXIgdmlydHVhbCBtYWNoaW5lIHNldHVwLCBvZiBjb3Vyc2UuIFdlIGFyZSBkaWdnaW5nIGludG8gdGhhdCBNTVUgZnVuY3Rpb25hbGl0eS4KClRoZSBtZWF0IG9mIHRoZSBtYXR0ZXIgYXBwZWFycyB0byBiZSBtb2RpZmljYXRpb25zIHdpdGhpbiB0aGUgYGt2bV9yaXNjdl9tbXVfbWFwYCBhbmQgYGdzdGFnZV9wYWdlX2ZhdWx0YCBmdW5jdGlvbnMuIENsZWFybHksIHdlJiMzOTtyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGNoYW5nZXMgdG8gaG93IGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3NlcyBhcmUgbWFwcGVkIHRvIGhvc3QgcGh5c2ljYWwgYWRkcmVzc2VzLCBwb3NzaWJseSByZWxhdGVkIHRvIGd1ZXN0IHN0YWdlIHBhZ2UgdGFibGVzLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgYGt2bV9yaXNjdl9tbXVfbWFwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIHdvdWxkIGxpbWl0IGl0cyB2aXNpYmlsaXR5IGFuZCBzY29wZS4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IG1vZHVsYXIgdGhpcyBtb2RpZmljYXRpb24gaXMsIGFuZCBpZiBpdCBjb3VsZCBwb3RlbnRpYWxseSBoYXZlIGJyb2FkZXIgcmFtaWZpY2F0aW9ucy4gVGhlIGNvZGUgdG8gZXhhbWluZSBpcyBgYXJjaC9yaXNjdi9rdm0vbW11LmNgLiBUaW1lIHRvIHNlZSB3aGF0IHRoYXQgYG1tdS5jYCBmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X21tdV9tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tbXUuYz00NjU9c3RhdGljIGJvb2wga3ZtX3Jpc2N2X21tdV9kaXJ0eV9sb2dfd3JpdGVfZmF1bHRfZmFzdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTM1LVxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NTM2OmludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy01MzctXHRcdCAgICAgIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyBodmEsIGJvb2wgaXNfd3JpdGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyMQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKk1NVSBNYXBwaW5nIENvbmNlcm5zIGluIEtWTS9SSVNDLVYqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBrdm1fcmlzY3ZfbW11X21hcGAgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0JiMzOTtzICpub3QqIHN0YXRpYy4gVGhpcyBoYXMgaW1tZWRpYXRlIGltcGxpY2F0aW9ucyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbmQgdGhlIG92ZXJhbGwgY29tcGxleGl0eSBvZiBtZW1vcnkgbWFuYWdlbWVudC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIGFzIEkgZGlnIGRlZXBlci4gTXkgdGhvdWdodHMgaW1tZWRpYXRlbHkgdHVybiB0byB0aGUgcG9zc2liaWxpdHkgb2YgY29uZmxpY3RzIG9yIGluY29uc2lzdGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgbGlmZWN5Y2xlIGFuZCBhbnkgYXNzb2NpYXRlZCBsb2NraW5nIHRoYXQmIzM5O3MgaW4gcGxhY2UuCgpUaGVuLCB0aGUgb3RoZXIgdGhpbmcgdGhhdCBJ4oCZbSBub3cgdGhpbmtpbmcgb2YgaXMgdGhlIGBnc3RhZ2VfcGFnZV9mYXVsdGAgZnVuY3Rpb24uIElzIGl0IHdvcmtpbmcgaW4gY29uanVuY3Rpb24gd2l0aCBga3ZtX3Jpc2N2X21tdV9tYXBgPyBEb2VzIGl0IGNhbGwgaXQgZGlyZWN0bHkgb3IgYXJlIHRoZXkgcmVsYXRlZCBzb21lIG90aGVyIHdheT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW50ZXJhY3Rpb25zLiBBcmUgcGFnZSBmYXVsdHMgaGFuZGxlZCBkaXJlY3RseSBieSB0aGUgTU1VIG1hcHBpbmcgcHJvY2Vzcywgb3IgaXMgdGhlcmUgYSBzZXBhcmF0ZSByb3V0aW5lPyBLbm93aW5nIGhvdyB0aGV5IHdvcmsgdG9nZXRoZXIgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJiMzOTtzIHJvYnVzdG5lc3MgYW5kIHBlcmZvcm1hbmNlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgYW5kIHVuZGVyc3RhbmQgdGhlIGVycm9yIGhhbmRsaW5nLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGd1ZXN0JiMzOTtzIHZpZXcgb2YgbWVtb3J5IGlzIHRyYW5zbGF0ZWQgdG8gdGhlIGhvc3QmIzM5O3MsIGFuZCBob3cgcGFnZSBmYXVsdHMgcGxheSBpbnRvIHRoYXQgdHJhbnNsYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dzdGFnZV9wYWdlX2ZhdWx0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtMTQtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYzoxNTpzdGF0aWMgaW50IGdzdGFnZV9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTE2LVx0XHRcdCAgICAgc3RydWN0IGt2bV9jcHVfdHJhcCAqdHJhcClcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYz0yMDc9aW50IGt2bV9yaXNjdl92Y3B1X2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTI1NS1cdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5ndWVzdF9jb250ZXh0LmhzdGF0dXMgXHUwMDI2IEhTVEFUVVNfU1BWKVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6MjU2Olx0XHRcdHJldCA9IGdzdGFnZV9wYWdlX2ZhdWx0KHZjcHUsIHJ1biwgdHJhcCk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy0yNTctXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzIzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBQYWdlIEZhdWx0IEhhbmRsaW5nKioKCk9rYXksIHNvIGBnc3RhZ2VfcGFnZV9mYXVsdGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBub3QgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGV4dGVybmFsIGludGVyYWN0aW9uLiBUaGVyZWZvcmUsIG15IGF0dGVudGlvbiBuYXR1cmFsbHkgc2hpZnRzIHRvIHRoZSBub24tc3RhdGljIGZ1bmN0aW9uIGBrdm1fcmlzY3ZfbW11X21hcGAuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIG1hcHBpbmcgcHJvY2Vzcy4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBwaWVjZXMgb2YgdGhlIHB1enpsZS4gSXQgYXBwZWFycyBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAgY2FsbHMgYGdzdGFnZV9wYWdlX2ZhdWx0YC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGBrdm1fcmlzY3ZfdmNwdV9leGl0YCAqaXMqIG5vbi1zdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGlzIGFuIGFjY2VzcyBwb2ludCB0byB0aGUgcGFnZSBmYXVsdCBoYW5kbGluZy4gSXMgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGEgYmV0dGVyIHN5bWJvbCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gaW5zdGVhZD8gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgZXhhbWluaW5nIHRoYXQgZnVuY3Rpb24gbW9yZSBjbG9zZWx5IHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIHBhZ2UgZmF1bHQgaGFuZGxpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl92Y3B1X2V4aXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYz0xOTI9c3RhdGljIGlubGluZSBpbnQgdmNwdV9yZWRpcmVjdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fY3B1X3RyYXAgKnRyYXApXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtMjA2LSAqL1xuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6MjA3OmludCBrdm1fcmlzY3ZfdmNwdV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTIwOC1cdFx0XHRzdHJ1Y3Qga3ZtX2NwdV90cmFwICp0cmFwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODM1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIEtWTS9SSVNDLVYgU3ltYm9scyoqCgpSaWdodCwgc28gYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGlzbiYjMzk7dCBzdGF0aWMsIHRoYXQmIzM5O3MgZ29vZCB0byBrbm93IG9mZiB0aGUgYmF0LiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlIHdoZXJlIGVsc2Ugd2UgbWlnaHQgZmluZCBpdC4KCk5vdywgbGV0IG1lIGNoZWNrIGludG8gYGt2bV9yaXNjdl9tbXVfbWFwYC4gSXMgdGhpcyBmdW5jdGlvbiBleHBvcnRlZCBhcyB3ZWxsLCBvciBpcyBpdCBpc29sYXRlZCB0byB0aGlzIG1vZHVsZT8gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgdmlzaWJsZSBpbiB0aGUgbGFyZ2VyIEtWTSBlY29zeXN0ZW0uIEtub3dpbmcgaXRzIHNjb3BlIHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIGFueSBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucyBvciBpbnRlZ3JhdGlvbnMgaW52b2x2aW5nIHRoYXQgZnVuY3Rpb24uIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZGVwZW5kZW5jeSB0cmFjaW5nIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzLCBvZiBjb3Vyc2UuIFdlIG5lZWQgdG8gYmUgYWJsZSB0byB1c2UgdGhlIEtWTSBzb3VyY2UgY29ycmVjdGx5IHRvIHRyb3VibGVzaG9vdCBwcm9ibGVtcywgYW5kIHBvdGVudGlhbGx5IGludGVncmF0ZSB3aXRoIG90aGVyIGFyY2hpdGVjdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9tbXVfbWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL21tdS5jPTQ2NT1zdGF0aWMgYm9vbCBrdm1fcmlzY3ZfbW11X2RpcnR5X2xvZ193cml0ZV9mYXVsdF9mYXN0KHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy01MzUtXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo1MzY6aW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTUzNy1cdFx0ICAgICAgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGh2YSwgYm9vbCBpc193cml0ZSxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYz0xNT1zdGF0aWMgaW50IGdzdGFnZV9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy02NS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jOjY2Olx0cmV0ID0ga3ZtX3Jpc2N2X21tdV9tYXAodmNwdSwgbWVtc2xvdCwgZmF1bHRfYWRkciwgaHZhLFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtNjctXHRcdFx0XHQodHJhcC1cdTAwM2VzY2F1c2UgPT0gRVhDX1NUT1JFX0dVRVNUX1BBR0VfRkFVTFQpID8gdHJ1ZSA6IGZhbHNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDI1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgSW5xdWlyeSBpbnRvIFJJU0MtViBLVk0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlIFJJU0MtViBLVk0gc3R1ZmYgaXMgc2V0IHVwLiBJIHNlZSB0aGF0IGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgdXNlZCB3aXRoaW4gYGdzdGFnZV9wYWdlX2ZhdWx0YCwgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoYXQsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAsIHNlZW0gbGlrZSBzb2xpZCBmb2N1cyBzeW1ib2xzLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEluaXRpYWxseSwgSSB0aG91Z2h0IEkmIzM5O2QgbmVlZCBib3RoIGBWSVJUVUFMSVpBVElPTmAgYW5kIGBLVk1gLiBCdXQgd2FpdCwgZG9lc24mIzM5O3QgYEtWTWAgbGl2ZSAqd2l0aGluKiBgVklSVFVBTElaQVRJT05gPyBMZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQuLi4gcmlnaHQsIGBWSVJUVUFMSVpBVElPTmAgaXMgYSBtZW51Y29uZmlnIHRoYXQgY29udGFpbnMgYEtWTWAuIEJ1dCwgZG9lcyBgS1ZNYCBzZWxlY3QgYFZJUlRVQUxJWkFUSU9OYCBhdXRvbWF0aWNhbGx5PyBOby4KClNvLCBJIG5lZWQgdG8gYmUgKmV4cGxpY2l0KiBhbmQgbWFrZSBzdXJlIGBWSVJUVUFMSVpBVElPTmAgaXMgZW5hYmxlZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZS4gT2theSwgbGV0JiMzOTtzIGxvb2sgYXQgYGFyY2gvcmlzY3Yva3ZtL0tjb25maWdgOgoKYGBgCmlmIFZJUlRVQUxJWkFUSU9OCmNvbmZpZyBLVk0KYGBgCgpBaCwgdGhlcmUgaXQgaXMhIGBWSVJUVUFMSVpBVElPTmAgbXVzdCBiZSBlbmFibGVkIHRvIGV2ZW4gKnNlZSogYEtWTWAuIFRoZXJlZm9yZSwgYm90aCBgVklSVFVBTElaQVRJT05gIGFuZCBgS1ZNYCBhcmUgcmVxdWlyZWQuIEV4Y2VsbGVudC4gTm93LCB3aGF0IGVsc2U/IGBLVk1gIGRlcGVuZHMgb24gYFJJU0NWX1NCSWAgYW5kIGBNTVVgLiBPa2F5LCBgTU1VYCBpcyB1c3VhbGx5IGVuYWJsZWQsIHNvIEkmIzM5O20gbm90IHRvbyB3b3JyaWVkIGFib3V0IHRoYXQuIGBSSVNDVl9TQklgLi4uIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gbW9zdCBSSVNDLVYgc2V0dXBzLCBidXQgSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSB0aGF0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJJU0NWX1NCSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvS2NvbmZpZz0yNzg9Y29uZmlnIFJJU0NWX01fTU9ERVxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZy0yODYtIyBzZXQgaWYgd2UgYXJlIHJ1bm5pbmcgaW4gUy1tb2RlIGFuZCBjYW4gdXNlIFNCSSBjYWxsc1xuYXJjaC9yaXNjdi9LY29uZmlnOjI4Nzpjb25maWcgUklTQ1ZfU0JJXG5hcmNoL3Jpc2N2L0tjb25maWctMjg4LVx0Ym9vbFxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZz05MzI9Y29uZmlnIFJJU0NWX1ZFQ1RPUl9NSVNBTElHTkVEXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTkzOC1cbmFyY2gvcmlzY3YvS2NvbmZpZzo5Mzk6Y29uZmlnIFJJU0NWX1NCSV9GV0ZUX0RFTEVHQVRFX01JU0FMSUdORURcbmFyY2gvcmlzY3YvS2NvbmZpZy05NDAtXHRib29sIFwmIzM0O1JlcXVlc3QgZmlybXdhcmUgZGVsZWdhdGlvbiBvZiB1bmFsaWduZWQgYWNjZXNzIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWc9MTA1Nz1zb3VyY2UgXCYjMzQ7a2VybmVsL0tjb25maWcuaHpcJiMzNDtcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMDU4LVxuYXJjaC9yaXNjdi9LY29uZmlnOjEwNTk6Y29uZmlnIFJJU0NWX1NCSV9WMDFcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMDYwLVx0Ym9vbCBcJiMzNDtTQkkgdjAuMSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNDQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBSSVNDVl9TQkkgTWFjcm8qKgoKT2theSwgc28gYFJJU0NWX1NCSWAuLi4gdGhhdCYjMzk7cyBsaWtlbHkgYSBoaWRkZW4gYm9vbGVhbiwgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiBkaXNndWlzZS4gSXQmIzM5O3MgcHJvYmFibHkgYmVpbmcgc2V0IGJhc2VkIG9uIHNvbWUgb3RoZXIgY29uZGl0aW9uIG9yIHNlcmllcyBvZiBjb25kaXRpb25zIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0JiMzOTtzIGRyaXZpbmcgdGhpcz8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGZpbmQgdGhlIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCBleGFjdGx5IHdoYXQmIzM5O3MgcHVsbGluZyB0aGUgc3RyaW5ncyB0aGF0IHNldCB0aGlzIHBhcnRpY3VsYXIgbWFjcm8uIFRoaXMgaXNuJiMzOTt0IHdoZXJlIHRoZSBpbnRlcmVzdGluZyBsb2dpYyBpczsgaXQmIzM5O3MganVzdCBhIGdhdGUsIHNvIGxldCYjMzk7cyBmaW5kIHRoZSBsZXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFJJU0NWX1NCSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvS2NvbmZpZz0xMTgxPWNvbmZpZyBSSVNDVl9VU0VSX0NGSVxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZy0xMTg2LVx0ZGVwZW5kcyBvbiBSSVNDVl9BTFRFUk5BVElWRVxuYXJjaC9yaXNjdi9LY29uZmlnOjExODc6XHRzZWxlY3QgUklTQ1ZfU0JJXG5hcmNoL3Jpc2N2L0tjb25maWctMTE4OC1cdHNlbGVjdCBBUkNIX0hBU19VU0VSX1NIQURPV19TVEFDS1xuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZy5zb2NzPTkzPWNvbmZpZyBBUkNIX1ZJUlRcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWcuc29jcy0xMDEtXHRzZWxlY3QgUE1fR0VORVJJQ19ET01BSU5TX09GIGlmIFBNIFx1MDAyNlx1MDAyNiBPRlxuYXJjaC9yaXNjdi9LY29uZmlnLnNvY3M6MTAyOlx0c2VsZWN0IFJJU0NWX1NCSV9DUFVJRExFIGlmIENQVV9JRExFIFx1MDAyNlx1MDAyNiBSSVNDVl9TQklcbmFyY2gvcmlzY3YvS2NvbmZpZy5zb2NzLTEwMy1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc1NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJJU0MtViBTQkkgQ29uZmlndXJhdGlvbiBDb25mdXNpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFJJU0NWX1NCSWAgdGhpbmcgYW5kLCBob2xkIG9uIGEgc2Vjb25kLi4uIHdoYXQgKmlzKiB0aGlzIGV4YWN0bHk/IExldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gdGhlIGxvb2tzIG9mIGl0OiBgUklTQ1ZfU0JJYCBpcyBhIGJvb2xlYW4sIHRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBJdCYjMzk7cyBkZXBlbmRlbnQgb24gbm90IHJ1bm5pbmcgaW4gbWFjaGluZSBtb2RlLCB3aGljaCBtYWtlcyBzZW5zZTsgU0JJIGlzIHVzdWFsbHkgZm9yIHN1cGVydmlzb3Igb3IgdXNlciBtb2RlIGludGVyZmFjZXMuIEFuZCB0aGUgZGVmYXVsdCBpcyBlbmFibGVkPyBBbHJpZ2h0LCBnb29kIHRvIGtub3cuIEJ1dCwgSSBuZWVkIG1vcmUgY29udGV4dC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGluIGBhcmNoL3Jpc2N2L0tjb25maWdgIHRvIHNlZSB0aGUgZnVsbGVyIHBpY3R1cmUuIEkgYmV0IGl0IHNwZWxscyBvdXQgcHJlY2lzZWx5IHdoYXQgdGhlIHJhbWlmaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgYXJlLiBJIGtub3cgd2hlcmUgdG8gbG9vay4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzYXkgYWJvdXQgYFJJU0NWX1NCSWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyODA6XHRcdGRlcGVuZHMgb24gIU1NVVxuIDI4MTpcdFx0ZGVmYXVsdCB5XG4gMjgyOlx0XHRoZWxwXG4gMjgzOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gdGhlIGtlcm5lbCBpbiBNLW1vZGUsXG4gMjg0Olx0XHQgIHdpdGhvdXQgdGhlIGFzc2lzdGFuY2Ugb2YgYW55IG90aGVyIGZpcm13YXJlLlxuIDI4NTpcdFxuIDI4NjpcdCMgc2V0IGlmIHdlIGFyZSBydW5uaW5nIGluIFMtbW9kZSBhbmQgY2FuIHVzZSBTQkkgY2FsbHNcbiAyODc6XHRjb25maWcgUklTQ1ZfU0JJXG4gMjg4Olx0XHRib29sXG4gMjg5Olx0XHRkZXBlbmRzIG9uICFSSVNDVl9NX01PREVcbiAyOTA6XHRcdGRlZmF1bHQgeVxuIDI5MTpcdFxuIDI5MjpcdGNvbmZpZyBNTVVcbiAyOTM6XHRcdGJvb2wgXCYjMzQ7TU1VLWJhc2VkIFBhZ2VkIE1lbW9yeSBNYW5hZ2VtZW50IFN1cHBvcnRcJiMzNDtcbiAyOTQ6XHRcdGRlZmF1bHQgeVxuIDI5NTpcdFx0aGVscFxuIDI5NjpcdFx0ICBTZWxlY3QgaWYgeW91IHdhbnQgTU1VLWJhc2VkIHZpcnR1YWxpc2VkIGFkZHJlc3Npbmcgc3BhY2VcbiAyOTc6XHRcdCAgc3VwcG9ydCBieSBwYWdlZCBtZW1vcnkgbWFuYWdlbWVudC4gSWYgdW5zdXJlLCBzYXkgJiMzOTtZJiMzOTsuXG4gMjk4Olx0XG4gMjk5Olx0Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI5NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDUyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBSZXZpZXcgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gdGhlIGBSSVNDVl9TQklgIGJlaW5nIGVuYWJsZWQgYnkgZGVmYXVsdCB3aGVuIG5vdCBpbiBgUklTQ1ZfTV9NT0RFYCBtYWtlcyBzZW5zZS4gV2l0aCB0aGlzIGluIG1pbmQsIHRoZSByZXF1aXJlbWVudHMgYm9pbCBkb3duIHRvIGBWSVJUVUFMSVpBVElPTmAgYW5kIGBLVk1gIGJlaW5nIGVuYWJsZWQuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMuCgpUaGUgZmlyc3QgY2hhbmdlIHVwZGF0ZXMgYHZtYV9wYWdlc2hpZnRgIGZyb20gYHNob3J0YCB0byBgdW5zaWduZWQgaW50YCwgZ29vZCwgdGhhdCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgYnVnIHJlbGF0ZWQgdG8gbmVnYXRpdmUgdmFsdWVzIG9yIG92ZXJmbG93LCB3aGljaCBjb3VsZCBiZSBwcm9ibGVtYXRpYy4KCk5leHQsIGhhbmRsaW5nIG9mIGAtRUVYSVNUYCBmcm9tIGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgaW1wcm92ZWQuICBJbnN0ZWFkIG9mIGp1c3QgcHJvcGFnYXRpbmcgdGhlIGVycm9yLCBpdCYjMzk7cyBleHBsaWNpdGx5IGNoZWNraW5nIGZvciBgLUVFWElTVGAgYW5kIHRyZWF0aW5nIGl0IGFzIGEgbm9uLWVycm9yLiBUaGlzIGlzIGxpa2VseSBmaXhpbmcgYSByZWFsIGlzc3VlLCBhbmQgaXMgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZCB3aGVuIGNoZWNraW5nIGlmIHRoZSB0ZXN0IGNhc2VzIHdvcmsuCgpUaGUgcmVsZWFzZSBsb2dpYywgZXNwZWNpYWxseSByZWdhcmRpbmcgdGhlIGBrdm1fcmVsZWFzZV9mYXVsdGluX3BhZ2VgLCBoYXMgYmVlbiB0d2Vha2VkLiBUaGlzIG5lZWRzIG1vcmUgYXR0ZW50aW9uIGR1cmluZyByZXZpZXcsIGJ1dCB0aGUgZml4IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4KClRoZSBjcnVjaWFsIGZpeCBpbnZvbHZlcyB0aGUgYGZhdWx0X2FkZHJgIHR5cGUuIENoYW5naW5nIGl0IGZyb20gYHVuc2lnbmVkIGxvbmdgIHRvIGBncGFfdGAgKHdoaWNoIGlzIGEgYHU2NGApIG9uIDMyLWJpdCBzeXN0ZW1zIGlzIGNsZWFybHkgaW1wb3J0YW50LiBXZSBjYW4gbm93IGJlIGFzc3VyZWQgdGhhdCBgZmF1bHRfYWRkcmAgaXMgaGFuZGxlZCBjb3JyZWN0bHkuCgpHaXZlbiB0aGVzZSBmaXhlcywgdGhpcyBwYXRjaCBsb29rcyBmdW5jdGlvbmFsIGFuZCBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLgoKTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgYGt2bV9yaXNjdl9tbXVfbWFwYCBhbmQgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIHN5bWJvbHMsIGVzcGVjaWFsbHkgd2l0aCBgVklSVFVBTElaQVRJT05gIGFuZCBgS1ZNYCBlbmFibGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZnV6emluZyB0aGlzIHNldHVwLgoKTm93LCBiZWZvcmUgSSBzdGFydCwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAgaXMgdGhlIGJlc3QgZW50cnkgcG9pbnQgZm9yIHRoZSBmdXp6ZXIuIEl0IGhhbmRsZXMgYWxsIGV4aXRzLCBzbyBpdCBzZWVtcyBsaWtlIGEgZ2VuZXJhbCBjaG9pY2UuIElzIHRoZXJlIGEgbW9yZSBzcGVjaWZpYyBlbnRyeSBwb2ludD8gYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyBub3QgZXhwb3J0ZWQsIHNvIGl0IGlzIHByb2JhYmx5IGdsb2JhbCwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSBjYWxsZWQgbGVzcyBvZnRlbi4KCkxldCYjMzk7cyBkb3VibGUgY2hlY2sgaWYgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGlzIHRoZSBvbmx5IGNhbGxlciBvZiBgZ3N0YWdlX3BhZ2VfZmF1bHRgLCBzaW5jZSB0aGF0IHdvdWxkIG1ha2UgaXQgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBZZXMsIGl0IGlzIHRoZSBvbmx5IGNhbGxlciEgIFRoZXJlZm9yZSwgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIHNlZW1zIHRvIGJlIGEgc29saWQgY2hvaWNlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBjYWxsZXJzIG9mIGBrdm1fcmlzY3ZfbW11X21hcGAgdG8gc2VlIHdoYXQgSSBjYW4gaG9vaywgYnV0IHRoaXMgc2VlbXMgbGlrZSB0aGUgYmVzdCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X21tdV9tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vbW11LmM9NDY1PXN0YXRpYyBib29sIGt2bV9yaXNjdl9tbXVfZGlydHlfbG9nX3dyaXRlX2ZhdWx0X2Zhc3Qoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTUzNS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjUzNjppbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTM3LVx0XHQgICAgICBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgaHZhLCBib29sIGlzX3dyaXRlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jPTE1PXN0YXRpYyBpbnQgZ3N0YWdlX3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTY1LVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6NjY6XHRyZXQgPSBrdm1fcmlzY3ZfbW11X21hcCh2Y3B1LCBtZW1zbG90LCBmYXVsdF9hZGRyLCBodmEsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy02Ny1cdFx0XHRcdCh0cmFwLVx1MDAzZXNjYXVzZSA9PSBFWENfU1RPUkVfR1VFU1RfUEFHRV9GQVVMVCkgPyB0cnVlIDogZmFsc2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NDMKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBSSVNDLVYgS1ZNIFBhdGNoKioKCk9rYXksIHNvIHRoZSBpbnZlc3RpZ2F0aW9uIHBvaW50cyBkaXJlY3RseSB0byBgZ3N0YWdlX3BhZ2VfZmF1bHRgIGFzIHRoZSBvcmlnaW4uIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRvIHplcm8gaW4gb24uIEl0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgY29udGV4dC4KCk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHRoYXQgSSYjMzk7dmUgbWlzc2VkLiBDaGVja2luZy4uLiBub3BlLCBgS1ZNYCBhbG9uZSBzZWVtcyB0byBiZSBzdWZmaWNpZW50OyBub3RoaW5nIGVsc2UganVtcHMgb3V0LiBFeGNlbGxlbnQuCgpSaWdodCwgdGltZSB0byBmb3JtYWxpemUgdGhpcyBhbmFseXNpcyBpbnRvIGEgcmVzcG9uc2UuIEJhc2VkIG9uIHRoZSBwYXRjaCwgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBpbmNsdWRlIGBrdm1fcmlzY3ZfbW11X21hcGAgYW5kLCBzaW5jZSBpdCBkZWFscyB3aXRoIHBhZ2UgZmF1bHRzLCBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAgYXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9scy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIGltcGFjdHMgZnVuY3Rpb25hbCBjb2RlIGluIEtWTSByZWxhdGVkIHRvIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLiBXZSBoYXZlIGEgc29saWQgY2FzZSB0byBmdXp6IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OywKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X21tdV9tYXAmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBidWdzIGluIFJJU0MtViBLVk0gTU1VIG1hcHBpbmcgYW5kIHBhZ2UgZmF1bHQgaGFuZGxpbmcsIGluY2x1ZGluZyB0eXBlIGZpeGVzIGZvciBmYXVsdCBhZGRyZXNzZXMgYW5kIHByb3BlciBoYW5kbGluZyBvZiAtRUVYSVNUIGVycm9ycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgS1ZNIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDssCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9tbXVfbWFwJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYnVncyBpbiBSSVNDLVYgS1ZNIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBpbmNsdWRpbmcgdHlwZSBmaXhlcyBmb3IgZmF1bHQgYWRkcmVzc2VzIGFuZCBwcm9wZXIgaGFuZGxpbmcgb2YgLUVFWElTVCBlcnJvcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTE6NDguMDA5NDI4MDMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU3OTkwMjgzMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVFVBTElaQVRJT05cIixcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9tbXVfbWFwXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9leGl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYnVncyBpbiBSSVNDLVYgS1ZNIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBpbmNsdWRpbmcgdHlwZSBmaXhlcyBmb3IgZmF1bHQgYWRkcmVzc2VzIGFuZCBwcm9wZXIgaGFuZGxpbmcgb2YgLUVFWElTVCBlcnJvcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxMzo1MTo0OC4wMDk0MzI0NzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTE3NjQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE0NzdhNTgyM2Q0Y2M2ZWE0MWI3YjZmYTdhOGYwZDJlNWExMDk0MzhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMzAgMTM6NTE6NDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbW11LmMgYi9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xcbmluZGV4IDhhMGFhNWUwZTIxNmUuLmQyYTA2YTU0YmUxNzQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbW11LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xcbkBAIC01NDEsNyArNTQxLDcgQEAgaW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcXG4gXFx0a3ZtX3Bmbl90IGhmbjtcXG4gXFx0Ym9vbCBpc19odWdldGxiO1xcbiBcXHRib29sIHdyaXRhYmxlO1xcbi1cXHRzaG9ydCB2bWFfcGFnZXNoaWZ0O1xcbitcXHR1bnNpZ25lZCBpbnQgdm1hX3BhZ2VzaGlmdDtcXG4gXFx0Z2ZuX3QgZ2ZuID0gZ3BhIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQ7XFxuIFxcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xcbiBcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuQEAgLTY1MiwxMSArNjUyLDEzIEBAIGludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdHZtYV9wYWdlc2l6ZSwgdHJ1ZSwgdHJ1ZSwgb3V0X21hcCk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChyZXQpXFxuK1xcdGlmIChyZXQgPT0gLUVFWElTVClcXG4rXFx0XFx0cmV0ID0gMDtcXG4rXFx0ZWxzZSBpZiAocmV0KVxcbiBcXHRcXHRrdm1fZXJyKFxcXCJGYWlsZWQgdG8gbWFwIGluIEctc3RhZ2VcXFxcblxcXCIpO1xcbiBcXG4gb3V0X3VubG9jazpcXG4tXFx0a3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlKGt2bSwgcGFnZSwgcmV0IFxcdTAwMjZcXHUwMDI2IHJldCAhPSAtRUVYSVNULCB3cml0YWJsZSk7XFxuK1xcdGt2bV9yZWxlYXNlX2ZhdWx0aW5fcGFnZShrdm0sIHBhZ2UsIHJldCwgd3JpdGFibGUpO1xcbiBcXHR3cml0ZV91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlbW11X2xvY2spO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNcXG5pbmRleCA2Yzg1MzBiOWYyOWVkLi43NmNjZWVjZWU1YWJhIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNcXG5AQCAtMTcsNyArMTcsOCBAQCBzdGF0aWMgaW50IGdzdGFnZV9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4ge1xcbiBcXHRzdHJ1Y3Qga3ZtX2dzdGFnZV9tYXBwaW5nIGhvc3RfbWFwO1xcbiBcXHRzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90O1xcbi1cXHR1bnNpZ25lZCBsb25nIGh2YSwgZmF1bHRfYWRkcjtcXG4rXFx0dW5zaWduZWQgbG9uZyBodmE7XFxuK1xcdGdwYV90IGZhdWx0X2FkZHI7XFxuIFxcdGJvb2wgd3JpdGFibGU7XFxuIFxcdGdmbl90IGdmbjtcXG4gXFx0aW50IHJldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTE6NDguNDUxNjAzNTA3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTUzNTY4NDQxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVFVBTElaQVRJT05cIixcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9tbXVfbWFwXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9leGl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYnVncyBpbiBSSVNDLVYgS1ZNIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBpbmNsdWRpbmcgdHlwZSBmaXhlcyBmb3IgZmF1bHQgYWRkcmVzc2VzIGFuZCBwcm9wZXIgaGFuZGxpbmcgb2YgLUVFWElTVCBlcnJvcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNDc3YTU4MjNkNGNjNmVhNDFiN2I2ZmE3YThmMGQyZTVhMTA5NDM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMTM6NTE6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jXG5pbmRleCA4YTBhYTVlMGUyMTZlLi5kMmEwNmE1NGJlMTc0IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbW11LmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jXG5AQCAtNTQxLDcgKzU0MSw3IEBAIGludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG4gXHRrdm1fcGZuX3QgaGZuO1xuIFx0Ym9vbCBpc19odWdldGxiO1xuIFx0Ym9vbCB3cml0YWJsZTtcbi1cdHNob3J0IHZtYV9wYWdlc2hpZnQ7XG4rXHR1bnNpZ25lZCBpbnQgdm1hX3BhZ2VzaGlmdDtcbiBcdGdmbl90IGdmbiA9IGdwYSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVDtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xuIFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG5AQCAtNjUyLDExICs2NTIsMTMgQEAgaW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcbiBcdFx0XHRcdFx0XHR2bWFfcGFnZXNpemUsIHRydWUsIHRydWUsIG91dF9tYXApO1xuIFx0fVxuIFxuLVx0aWYgKHJldClcbitcdGlmIChyZXQgPT0gLUVFWElTVClcbitcdFx0cmV0ID0gMDtcbitcdGVsc2UgaWYgKHJldClcbiBcdFx0a3ZtX2VycihcIkZhaWxlZCB0byBtYXAgaW4gRy1zdGFnZVxcblwiKTtcbiBcbiBvdXRfdW5sb2NrOlxuLVx0a3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlKGt2bSwgcGFnZSwgcmV0IFx1MDAyNlx1MDAyNiByZXQgIT0gLUVFWElTVCwgd3JpdGFibGUpO1xuK1x0a3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlKGt2bSwgcGFnZSwgcmV0LCB3cml0YWJsZSk7XG4gXHR3cml0ZV91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZW1tdV9sb2NrKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNcbmluZGV4IDZjODUzMGI5ZjI5ZWQuLjc2Y2NlZWNlZTVhYmEgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNcbkBAIC0xNyw3ICsxNyw4IEBAIHN0YXRpYyBpbnQgZ3N0YWdlX3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxuIHtcbiBcdHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgaG9zdF9tYXA7XG4gXHRzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90O1xuLVx0dW5zaWduZWQgbG9uZyBodmEsIGZhdWx0X2FkZHI7XG4rXHR1bnNpZ25lZCBsb25nIGh2YTtcbitcdGdwYV90IGZhdWx0X2FkZHI7XG4gXHRib29sIHdyaXRhYmxlO1xuIFx0Z2ZuX3QgZ2ZuO1xuIFx0aW50IHJldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUxOjQ4LjQ1MTYwNjAyN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2OTk1MjA3NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSSVNDLVYgS1ZNIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYXJjaC9yaXNjdi9rdm0vbW11LmNgIGFuZCBgYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNgLiBMZXQncyBicmVhayBpdCBkb3duLiBJbiBgbW11LmNgLCBpdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzb21lIHR5cGUgY2hhbmdlcywgZnJvbSBgc2hvcnRgIHRvIGB1bnNpZ25lZCBpbnRgIGZvciBgdm1hX3BhZ2VzaGlmdGAgYW5kIHNvbWUgYWRqdXN0bWVudHMgdG8gdGhlIGVycm9yIGhhbmRsaW5nIGluIGBrdm1fcmlzY3ZfbW11X21hcGAuIFNwZWNpZmljYWxseSwgaG93IGAtRUVYSVNUYCBpcyBoYW5kbGVkLiBBbmQgYSBzdWJ0bGUgY2hhbmdlIHRvIHRoZSBga3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlYCBjYWxsIHdoaWNoIGxvb2tzIGxpa2UgaXQgY2hhbmdlcyB0aGUgY29uZGl0aW9uIHRoYXQgZ2V0cyBwYXNzZWQuIGB2Y3B1X2V4aXQuY2AgaXMgY2hhbmdpbmcgaG93IGBnc3RhZ2VfcGFnZV9mYXVsdGAgaGFuZGxlcyB0aGUgYGZhdWx0X2FkZHJgLCBjaGFuZ2luZyB0aGUgdHlwZSBmcm9tIGFuIGB1bnNpZ25lZCBsb25nYCB0byBhIGBncGFfdGAuXG5cbkZ1bmN0aW9uYWxseSwgdGhlc2UgYXJlIEtWTSBjaGFuZ2VzIHNwZWNpZmljIHRvIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaXMgdGhpcyBmdXp6YWJsZT8gQWJzb2x1dGVseSwgaXQncyBLVk0gY29kZS4gQSB2dWxuZXJhYmlsaXR5IGluIEtWTSBjb3VsZCBiZSByZWFsbHkgYmFkLiBOb3csIGNhbiBzeXprYWxsZXIgYWN0dWFsbHkgZnV6eiBpdD8gRG9lcyBzeXprYWxsZXIgc3VwcG9ydCBSSVNDLVYgS1ZNPyBXZWxsLCBpdCBkZXBlbmRzLiBJZiBpdCdzIHJ1bm5pbmcgb24gUklTQy1WLCB5ZXMuIEV2ZW4gaWYgbm90LCB3ZSBjYW4gY2VydGFpbmx5IG1hcmsgaXQgYXMgd29ydGggZnV6emluZy5cblxuVGhlIHByb21wdCBpcyBjbGVhcjogSWYgaXQgdG91Y2hlcyBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGFyZSByZWFjaGFibGUsIGl0J3Mgd29ydGggY2hlY2tpbmcuIEFuZCBoZXJlIHdlIGFyZS4gSXQgbW9kaWZpZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtWTSBjb2RlLiBUaGF0IHNlZW1zIGxpa2UgYSBjbGVhciB5ZXMuIFNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIEtjb25maWcgdG8gdmVyaWZ5IEtWTSBpcyBlbmFibGVkIG9uIFJJU0MtVi4gTG9va2luZyBmb3IgYSBgQ09ORklHX0tWTWAgaW4gYGFyY2gvcmlzY3Yva3ZtL0tjb25maWdgIHNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUxNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUxOjU1LjE1MTEyOTk4NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk4MjM3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxMzo1MTo1NS4yMjIxMTY5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMDQ2NDcyODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKktjb25maWcgRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGNvbnRyb2xsaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBLVk0gd2l0aGluIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gSSdsbCBzdGFydCBieSBjaGVja2luZyBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AuIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgS1ZNIGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCB3aGF0IGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQuIEkgZXhwZWN0IHRoaXMgZmlsZSB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCBvdGhlciBmZWF0dXJlcyBvciBzZXR0aW5ncyB3aXRoaW4gdGhlIGtlcm5lbCBtdXN0IGJlIHByZXNlbnQgZm9yIEtWTSBzdXBwb3J0IHRvIGJlIGF2YWlsYWJsZSBvbiBSSVNDLVYuIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIHByb2JhYmx5IHBvaW50IG1lIHRvIHJlbGF0ZWQgS2NvbmZpZyBmaWxlcyBhbmQgb3RoZXIgYXJlYXMgdG8gY29uZmlybSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxMzo1MTo1OC4yMjY3NjU5MzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBLVk0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRzb3VyY2UgXFxcInZpcnQva3ZtL0tjb25maWdcXFwiXFxuICAgNzpcXHRcXG4gICA4OlxcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cXG4gICA5OlxcdFxcdGJvb2wgXFxcIlZpcnR1YWxpemF0aW9uXFxcIlxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxcbiAgMTI6XFx0XFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kXFxuICAxNjpcXHRcXHQgIGRpc2FibGVkLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgS1ZNXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBSSVNDVl9TQkkgXFx1MDAyNlxcdTAwMjYgTU1VXFxuICAyMzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxcbiAgMjQ6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAyNTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fTVNJXFxuICAyNjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXFxuICAyNzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19BQ1FfUkVMXFxuICAyODpcXHRcXHRzZWxlY3QgS1ZNX0NPTU1PTlxcbiAgMjk6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxcbiAgMzA6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXFxuICAzMTpcXHRcXHRzZWxlY3QgS1ZNX01NSU9cXG4gIDMyOlxcdFxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiAgMzM6XFx0XFx0c2VsZWN0IFNDSEVEX0lORk9cXG4gIDM0OlxcdFxcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UUyBpZiBQRVJGX0VWRU5UU1xcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTdXBwb3J0IGhvc3RpbmcgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxMzo1MTo1OC4yMjY4MjIwMzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjUxOTE4MzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkFuYWx5c2lzIG9mIFJJU0MtViBLVk0gTU1VIE1hcHBpbmcqKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBhIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgVW5pdCAoTU1VKSBpbnRlcmFjdGlvbi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGNlbnRlcnMgb24gYSBmZXcga2V5IGRlcGVuZGVuY2llczogYFZJUlRVQUxJWkFUSU9OYCwgYEtWTWAsIGBSSVNDVl9TQklgLCBhbmQgY3J1Y2lhbGx5LCB0aGUgYE1NVWAgaXRzZWxmLiBUaG9zZSBhcmUgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBwcm9wZXIgdmlydHVhbCBtYWNoaW5lIHNldHVwLCBvZiBjb3Vyc2UuIFdlIGFyZSBkaWdnaW5nIGludG8gdGhhdCBNTVUgZnVuY3Rpb25hbGl0eS5cblxuVGhlIG1lYXQgb2YgdGhlIG1hdHRlciBhcHBlYXJzIHRvIGJlIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBga3ZtX3Jpc2N2X21tdV9tYXBgIGFuZCBgZ3N0YWdlX3BhZ2VfZmF1bHRgIGZ1bmN0aW9ucy4gQ2xlYXJseSwgd2UncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBjaGFuZ2VzIHRvIGhvdyBndWVzdCBwaHlzaWNhbCBhZGRyZXNzZXMgYXJlIG1hcHBlZCB0byBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcywgcG9zc2libHkgcmVsYXRlZCB0byBndWVzdCBzdGFnZSBwYWdlIHRhYmxlcy4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIGBrdm1fcmlzY3ZfbW11X21hcGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIHdvdWxkIGxpbWl0IGl0cyB2aXNpYmlsaXR5IGFuZCBzY29wZS4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IG1vZHVsYXIgdGhpcyBtb2RpZmljYXRpb24gaXMsIGFuZCBpZiBpdCBjb3VsZCBwb3RlbnRpYWxseSBoYXZlIGJyb2FkZXIgcmFtaWZpY2F0aW9ucy4gVGhlIGNvZGUgdG8gZXhhbWluZSBpcyBgYXJjaC9yaXNjdi9rdm0vbW11LmNgLiBUaW1lIHRvIHNlZSB3aGF0IHRoYXQgYG1tdS5jYCBmaWxlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjAyLjQ3ODc0NDE2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDQ2MTI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfbW11X21hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9tbXUuYz00NjU9c3RhdGljIGJvb2wga3ZtX3Jpc2N2X21tdV9kaXJ0eV9sb2dfd3JpdGVfZmF1bHRfZmFzdChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy01MzUtXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NTM2OmludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTM3LVxcdFxcdCAgICAgIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyBodmEsIGJvb2wgaXNfd3JpdGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjAyLjUzMzIwODk5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODQzMjQ3MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqTU1VIE1hcHBpbmcgQ29uY2VybnMgaW4gS1ZNL1JJU0MtVioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBrdm1fcmlzY3ZfbW11X21hcGAgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0J3MgKm5vdCogc3RhdGljLiBUaGlzIGhhcyBpbW1lZGlhdGUgaW1wbGljYXRpb25zIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCB0aGUgb3ZlcmFsbCBjb21wbGV4aXR5IG9mIG1lbW9yeSBtYW5hZ2VtZW50LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgYXMgSSBkaWcgZGVlcGVyLiBNeSB0aG91Z2h0cyBpbW1lZGlhdGVseSB0dXJuIHRvIHRoZSBwb3NzaWJpbGl0eSBvZiBjb25mbGljdHMgb3IgaW5jb25zaXN0ZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBsaWZlY3ljbGUgYW5kIGFueSBhc3NvY2lhdGVkIGxvY2tpbmcgdGhhdCdzIGluIHBsYWNlLlxuXG5UaGVuLCB0aGUgb3RoZXIgdGhpbmcgdGhhdCBJ4oCZbSBub3cgdGhpbmtpbmcgb2YgaXMgdGhlIGBnc3RhZ2VfcGFnZV9mYXVsdGAgZnVuY3Rpb24uIElzIGl0IHdvcmtpbmcgaW4gY29uanVuY3Rpb24gd2l0aCBga3ZtX3Jpc2N2X21tdV9tYXBgPyBEb2VzIGl0IGNhbGwgaXQgZGlyZWN0bHkgb3IgYXJlIHRoZXkgcmVsYXRlZCBzb21lIG90aGVyIHdheT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW50ZXJhY3Rpb25zLiBBcmUgcGFnZSBmYXVsdHMgaGFuZGxlZCBkaXJlY3RseSBieSB0aGUgTU1VIG1hcHBpbmcgcHJvY2Vzcywgb3IgaXMgdGhlcmUgYSBzZXBhcmF0ZSByb3V0aW5lPyBLbm93aW5nIGhvdyB0aGV5IHdvcmsgdG9nZXRoZXIgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJ3Mgcm9idXN0bmVzcyBhbmQgcGVyZm9ybWFuY2UuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyBhbmQgdW5kZXJzdGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBndWVzdCdzIHZpZXcgb2YgbWVtb3J5IGlzIHRyYW5zbGF0ZWQgdG8gdGhlIGhvc3QncywgYW5kIGhvdyBwYWdlIGZhdWx0cyBwbGF5IGludG8gdGhhdCB0cmFuc2xhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyMSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjA2LjExNzUzNTE4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg0MzE4MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3N0YWdlX3BhZ2VfZmF1bHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtMTQtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6MTU6c3RhdGljIGludCBnc3RhZ2VfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtMTYtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qga3ZtX2NwdV90cmFwICp0cmFwKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM9MjA3PWludCBrdm1fcmlzY3ZfdmNwdV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTI1NS1cXHRcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5ndWVzdF9jb250ZXh0LmhzdGF0dXMgXFx1MDAyNiBIU1RBVFVTX1NQVilcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYzoyNTY6XFx0XFx0XFx0cmV0ID0gZ3N0YWdlX3BhZ2VfZmF1bHQodmNwdSwgcnVuLCB0cmFwKTtcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy0yNTctXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjA2LjIwNTk3NDIyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTM3OTE0NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBQYWdlIEZhdWx0IEhhbmRsaW5nKipcblxuT2theSwgc28gYGdzdGFnZV9wYWdlX2ZhdWx0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQncyBsaWtlbHkgbm90IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbi4gVGhlcmVmb3JlLCBteSBhdHRlbnRpb24gbmF0dXJhbGx5IHNoaWZ0cyB0byB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiBga3ZtX3Jpc2N2X21tdV9tYXBgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBtYXBwaW5nIHByb2Nlc3MuIEhvd2V2ZXIsIHdhaXQgYSBtaW51dGUuLi4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgcGllY2VzIG9mIHRoZSBwdXp6bGUuIEl0IGFwcGVhcnMgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGNhbGxzIGBnc3RhZ2VfcGFnZV9mYXVsdGAuIFRoaXMgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAgKmlzKiBub24tc3RhdGljLCB3aGljaCBtZWFucyBpdCBpcyBhbiBhY2Nlc3MgcG9pbnQgdG8gdGhlIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIElzIGBrdm1fcmlzY3ZfdmNwdV9leGl0YCBhIGJldHRlciBzeW1ib2wgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGluc3RlYWQ/IEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGV4YW1pbmluZyB0aGF0IGZ1bmN0aW9uIG1vcmUgY2xvc2VseSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBwYWdlIGZhdWx0IGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzIzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjEwLjc0Mzg5MTYwNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5NjUzNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X3ZjcHVfZXhpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYz0xOTI9c3RhdGljIGlubGluZSBpbnQgdmNwdV9yZWRpcmVjdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fY3B1X3RyYXAgKnRyYXApXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy0yMDYtICovXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6MjA3OmludCBrdm1fcmlzY3ZfdmNwdV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy0yMDgtXFx0XFx0XFx0c3RydWN0IGt2bV9jcHVfdHJhcCAqdHJhcClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTI6MTAuODIxODYwODQ4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzI4Njc4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyBLVk0vUklTQy1WIFN5bWJvbHMqKlxuXG5SaWdodCwgc28gYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGlzbid0IHN0YXRpYywgdGhhdCdzIGdvb2QgdG8ga25vdyBvZmYgdGhlIGJhdC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSB3aGVyZSBlbHNlIHdlIG1pZ2h0IGZpbmQgaXQuXG5cbk5vdywgbGV0IG1lIGNoZWNrIGludG8gYGt2bV9yaXNjdl9tbXVfbWFwYC4gSXMgdGhpcyBmdW5jdGlvbiBleHBvcnRlZCBhcyB3ZWxsLCBvciBpcyBpdCBpc29sYXRlZCB0byB0aGlzIG1vZHVsZT8gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQncyB2aXNpYmxlIGluIHRoZSBsYXJnZXIgS1ZNIGVjb3N5c3RlbS4gS25vd2luZyBpdHMgc2NvcGUgd2lsbCBpbmZsdWVuY2UgaG93IEkgYXBwcm9hY2ggYW55IHBvdGVudGlhbCBtb2RpZmljYXRpb25zIG9yIGludGVncmF0aW9ucyBpbnZvbHZpbmcgdGhhdCBmdW5jdGlvbi4gSSdtIHRoaW5raW5nIGFib3V0IGRlcGVuZGVuY3kgdHJhY2luZyBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cywgb2YgY291cnNlLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gdXNlIHRoZSBLVk0gc291cmNlIGNvcnJlY3RseSB0byB0cm91Ymxlc2hvb3QgcHJvYmxlbXMsIGFuZCBwb3RlbnRpYWxseSBpbnRlZ3JhdGUgd2l0aCBvdGhlciBhcmNoaXRlY3R1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODM1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTI6MTQuNDk0NzMxMDUyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTQ1NzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfbW11X21hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vbW11LmM9NDY1PXN0YXRpYyBib29sIGt2bV9yaXNjdl9tbXVfZGlydHlfbG9nX3dyaXRlX2ZhdWx0X2Zhc3Qoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTM1LVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjUzNjppbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTUzNy1cXHRcXHQgICAgICBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgaHZhLCBib29sIGlzX3dyaXRlLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM9MTU9c3RhdGljIGludCBnc3RhZ2VfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy02NS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYzo2NjpcXHRyZXQgPSBrdm1fcmlzY3ZfbW11X21hcCh2Y3B1LCBtZW1zbG90LCBmYXVsdF9hZGRyLCBodmEsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtNjctXFx0XFx0XFx0XFx0KHRyYXAtXFx1MDAzZXNjYXVzZSA9PSBFWENfU1RPUkVfR1VFU1RfUEFHRV9GQVVMVCkgPyB0cnVlIDogZmFsc2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjE0LjU4NjE5MzcyMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODA5Nzc2MTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgSW5xdWlyeSBpbnRvIFJJU0MtViBLVk0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZSBSSVNDLVYgS1ZNIHN0dWZmIGlzIHNldCB1cC4gSSBzZWUgdGhhdCBga3ZtX3Jpc2N2X21tdV9tYXBgIGlzIHVzZWQgd2l0aGluIGBnc3RhZ2VfcGFnZV9mYXVsdGAsIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoYXQsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAsIHNlZW0gbGlrZSBzb2xpZCBmb2N1cyBzeW1ib2xzLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEluaXRpYWxseSwgSSB0aG91Z2h0IEknZCBuZWVkIGJvdGggYFZJUlRVQUxJWkFUSU9OYCBhbmQgYEtWTWAuIEJ1dCB3YWl0LCBkb2Vzbid0IGBLVk1gIGxpdmUgKndpdGhpbiogYFZJUlRVQUxJWkFUSU9OYD8gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0Li4uIHJpZ2h0LCBgVklSVFVBTElaQVRJT05gIGlzIGEgbWVudWNvbmZpZyB0aGF0IGNvbnRhaW5zIGBLVk1gLiBCdXQsIGRvZXMgYEtWTWAgc2VsZWN0IGBWSVJUVUFMSVpBVElPTmAgYXV0b21hdGljYWxseT8gTm8uXG5cblNvLCBJIG5lZWQgdG8gYmUgKmV4cGxpY2l0KiBhbmQgbWFrZSBzdXJlIGBWSVJUVUFMSVpBVElPTmAgaXMgZW5hYmxlZC4gTGV0J3MgbWFrZSBzdXJlLiBPa2F5LCBsZXQncyBsb29rIGF0IGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYDpcblxuYGBgXG5pZiBWSVJUVUFMSVpBVElPTlxuY29uZmlnIEtWTVxuYGBgXG5cbkFoLCB0aGVyZSBpdCBpcyEgYFZJUlRVQUxJWkFUSU9OYCBtdXN0IGJlIGVuYWJsZWQgdG8gZXZlbiAqc2VlKiBgS1ZNYC4gVGhlcmVmb3JlLCBib3RoIGBWSVJUVUFMSVpBVElPTmAgYW5kIGBLVk1gIGFyZSByZXF1aXJlZC4gRXhjZWxsZW50LiBOb3csIHdoYXQgZWxzZT8gYEtWTWAgZGVwZW5kcyBvbiBgUklTQ1ZfU0JJYCBhbmQgYE1NVWAuIE9rYXksIGBNTVVgIGlzIHVzdWFsbHkgZW5hYmxlZCwgc28gSSdtIG5vdCB0b28gd29ycmllZCBhYm91dCB0aGF0LiBgUklTQ1ZfU0JJYC4uLiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBtb3N0IFJJU0MtViBzZXR1cHMsIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIHRoYXQgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDI1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjIwLjM5NTk3Mzk5M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMDExNTI5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfU0JJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvS2NvbmZpZz0yNzg9Y29uZmlnIFJJU0NWX01fTU9ERVxcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnLTI4Ni0jIHNldCBpZiB3ZSBhcmUgcnVubmluZyBpbiBTLW1vZGUgYW5kIGNhbiB1c2UgU0JJIGNhbGxzXFxuYXJjaC9yaXNjdi9LY29uZmlnOjI4Nzpjb25maWcgUklTQ1ZfU0JJXFxuYXJjaC9yaXNjdi9LY29uZmlnLTI4OC1cXHRib29sXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWc9OTMyPWNvbmZpZyBSSVNDVl9WRUNUT1JfTUlTQUxJR05FRFxcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnLTkzOC1cXG5hcmNoL3Jpc2N2L0tjb25maWc6OTM5OmNvbmZpZyBSSVNDVl9TQklfRldGVF9ERUxFR0FURV9NSVNBTElHTkVEXFxuYXJjaC9yaXNjdi9LY29uZmlnLTk0MC1cXHRib29sIFxcXCJSZXF1ZXN0IGZpcm13YXJlIGRlbGVnYXRpb24gb2YgdW5hbGlnbmVkIGFjY2VzcyBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnPTEwNTc9c291cmNlIFxcXCJrZXJuZWwvS2NvbmZpZy5oelxcXCJcXG5hcmNoL3Jpc2N2L0tjb25maWctMTA1OC1cXG5hcmNoL3Jpc2N2L0tjb25maWc6MTA1OTpjb25maWcgUklTQ1ZfU0JJX1YwMVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMDYwLVxcdGJvb2wgXFxcIlNCSSB2MC4xIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjIxLjgxNjA5MzAzNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzg2NDA0NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBSSVNDVl9TQkkgTWFjcm8qKlxuXG5Pa2F5LCBzbyBgUklTQ1ZfU0JJYC4uLiB0aGF0J3MgbGlrZWx5IGEgaGlkZGVuIGJvb2xlYW4sIGEgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gZGlzZ3Vpc2UuIEl0J3MgcHJvYmFibHkgYmVpbmcgc2V0IGJhc2VkIG9uIHNvbWUgb3RoZXIgY29uZGl0aW9uIG9yIHNlcmllcyBvZiBjb25kaXRpb25zIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0J3MgZHJpdmluZyB0aGlzPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBhbmQgZmluZCB0aGUgZGVwZW5kZW5jaWVzLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0J3MgcHVsbGluZyB0aGUgc3RyaW5ncyB0aGF0IHNldCB0aGlzIHBhcnRpY3VsYXIgbWFjcm8uIFRoaXMgaXNuJ3Qgd2hlcmUgdGhlIGludGVyZXN0aW5nIGxvZ2ljIGlzOyBpdCdzIGp1c3QgYSBnYXRlLCBzbyBsZXQncyBmaW5kIHRoZSBsZXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM0NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjI1LjYwMjUwMDExNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI3MjY2NTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBSSVNDVl9TQklcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9LY29uZmlnPTExODE9Y29uZmlnIFJJU0NWX1VTRVJfQ0ZJXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWctMTE4Ni1cXHRkZXBlbmRzIG9uIFJJU0NWX0FMVEVSTkFUSVZFXFxuYXJjaC9yaXNjdi9LY29uZmlnOjExODc6XFx0c2VsZWN0IFJJU0NWX1NCSVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMTg4LVxcdHNlbGVjdCBBUkNIX0hBU19VU0VSX1NIQURPV19TVEFDS1xcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnLnNvY3M9OTM9Y29uZmlnIEFSQ0hfVklSVFxcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnLnNvY3MtMTAxLVxcdHNlbGVjdCBQTV9HRU5FUklDX0RPTUFJTlNfT0YgaWYgUE0gXFx1MDAyNlxcdTAwMjYgT0ZcXG5hcmNoL3Jpc2N2L0tjb25maWcuc29jczoxMDI6XFx0c2VsZWN0IFJJU0NWX1NCSV9DUFVJRExFIGlmIENQVV9JRExFIFxcdTAwMjZcXHUwMDI2IFJJU0NWX1NCSVxcbmFyY2gvcmlzY3YvS2NvbmZpZy5zb2NzLTEwMy1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjI2LjAyOTc3MzUwMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjc0Njc4NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJJU0MtViBTQkkgQ29uZmlndXJhdGlvbiBDb25mdXNpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBSSVNDVl9TQklgIHRoaW5nIGFuZCwgaG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0ICppcyogdGhpcyBleGFjdGx5PyBMZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gdGhlIGxvb2tzIG9mIGl0OiBgUklTQ1ZfU0JJYCBpcyBhIGJvb2xlYW4sIHRoYXQncyBzdHJhaWdodGZvcndhcmQuIEl0J3MgZGVwZW5kZW50IG9uIG5vdCBydW5uaW5nIGluIG1hY2hpbmUgbW9kZSwgd2hpY2ggbWFrZXMgc2Vuc2U7IFNCSSBpcyB1c3VhbGx5IGZvciBzdXBlcnZpc29yIG9yIHVzZXIgbW9kZSBpbnRlcmZhY2VzLiBBbmQgdGhlIGRlZmF1bHQgaXMgZW5hYmxlZD8gQWxyaWdodCwgZ29vZCB0byBrbm93LiBCdXQsIEkgbmVlZCBtb3JlIGNvbnRleHQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGluIGBhcmNoL3Jpc2N2L0tjb25maWdgIHRvIHNlZSB0aGUgZnVsbGVyIHBpY3R1cmUuIEkgYmV0IGl0IHNwZWxscyBvdXQgcHJlY2lzZWx5IHdoYXQgdGhlIHJhbWlmaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgYXJlLiBJIGtub3cgd2hlcmUgdG8gbG9vay4gTGV0J3Mgc2VlIHdoYXQgdGhlIGJyb2FkZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHNheSBhYm91dCBgUklTQ1ZfU0JJYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc1NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjI5LjMwNDQ1NTI0MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9yaXNjdi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI4MDpcXHRcXHRkZXBlbmRzIG9uICFNTVVcXG4gMjgxOlxcdFxcdGRlZmF1bHQgeVxcbiAyODI6XFx0XFx0aGVscFxcbiAyODM6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIHRoZSBrZXJuZWwgaW4gTS1tb2RlLFxcbiAyODQ6XFx0XFx0ICB3aXRob3V0IHRoZSBhc3Npc3RhbmNlIG9mIGFueSBvdGhlciBmaXJtd2FyZS5cXG4gMjg1OlxcdFxcbiAyODY6XFx0IyBzZXQgaWYgd2UgYXJlIHJ1bm5pbmcgaW4gUy1tb2RlIGFuZCBjYW4gdXNlIFNCSSBjYWxsc1xcbiAyODc6XFx0Y29uZmlnIFJJU0NWX1NCSVxcbiAyODg6XFx0XFx0Ym9vbFxcbiAyODk6XFx0XFx0ZGVwZW5kcyBvbiAhUklTQ1ZfTV9NT0RFXFxuIDI5MDpcXHRcXHRkZWZhdWx0IHlcXG4gMjkxOlxcdFxcbiAyOTI6XFx0Y29uZmlnIE1NVVxcbiAyOTM6XFx0XFx0Ym9vbCBcXFwiTU1VLWJhc2VkIFBhZ2VkIE1lbW9yeSBNYW5hZ2VtZW50IFN1cHBvcnRcXFwiXFxuIDI5NDpcXHRcXHRkZWZhdWx0IHlcXG4gMjk1OlxcdFxcdGhlbHBcXG4gMjk2OlxcdFxcdCAgU2VsZWN0IGlmIHlvdSB3YW50IE1NVS1iYXNlZCB2aXJ0dWFsaXNlZCBhZGRyZXNzaW5nIHNwYWNlXFxuIDI5NzpcXHRcXHQgIHN1cHBvcnQgYnkgcGFnZWQgbWVtb3J5IG1hbmFnZW1lbnQuIElmIHVuc3VyZSwgc2F5ICdZJy5cXG4gMjk4OlxcdFxcbiAyOTk6XFx0Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTI6MjkuMzA0NTkyMDYyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1MDUzODAxODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggUmV2aWV3IGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gdGhlIGBSSVNDVl9TQklgIGJlaW5nIGVuYWJsZWQgYnkgZGVmYXVsdCB3aGVuIG5vdCBpbiBgUklTQ1ZfTV9NT0RFYCBtYWtlcyBzZW5zZS4gV2l0aCB0aGlzIGluIG1pbmQsIHRoZSByZXF1aXJlbWVudHMgYm9pbCBkb3duIHRvIGBWSVJUVUFMSVpBVElPTmAgYW5kIGBLVk1gIGJlaW5nIGVuYWJsZWQuIExldCdzIGRlbHZlIGludG8gdGhpcyBwYXRjaCBhbmQgdW5kZXJzdGFuZCB0aGUgZGV0YWlscy5cblxuVGhlIGZpcnN0IGNoYW5nZSB1cGRhdGVzIGB2bWFfcGFnZXNoaWZ0YCBmcm9tIGBzaG9ydGAgdG8gYHVuc2lnbmVkIGludGAsIGdvb2QsIHRoYXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIGJ1ZyByZWxhdGVkIHRvIG5lZ2F0aXZlIHZhbHVlcyBvciBvdmVyZmxvdywgd2hpY2ggY291bGQgYmUgcHJvYmxlbWF0aWMuXG5cbk5leHQsIGhhbmRsaW5nIG9mIGAtRUVYSVNUYCBmcm9tIGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgaW1wcm92ZWQuICBJbnN0ZWFkIG9mIGp1c3QgcHJvcGFnYXRpbmcgdGhlIGVycm9yLCBpdCdzIGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9yIGAtRUVYSVNUYCBhbmQgdHJlYXRpbmcgaXQgYXMgYSBub24tZXJyb3IuIFRoaXMgaXMgbGlrZWx5IGZpeGluZyBhIHJlYWwgaXNzdWUsIGFuZCBpcyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIHdoZW4gY2hlY2tpbmcgaWYgdGhlIHRlc3QgY2FzZXMgd29yay5cblxuVGhlIHJlbGVhc2UgbG9naWMsIGVzcGVjaWFsbHkgcmVnYXJkaW5nIHRoZSBga3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlYCwgaGFzIGJlZW4gdHdlYWtlZC4gVGhpcyBuZWVkcyBtb3JlIGF0dGVudGlvbiBkdXJpbmcgcmV2aWV3LCBidXQgdGhlIGZpeCBzZWVtcyBzdHJhaWdodGZvcndhcmQuXG5cblRoZSBjcnVjaWFsIGZpeCBpbnZvbHZlcyB0aGUgYGZhdWx0X2FkZHJgIHR5cGUuIENoYW5naW5nIGl0IGZyb20gYHVuc2lnbmVkIGxvbmdgIHRvIGBncGFfdGAgKHdoaWNoIGlzIGEgYHU2NGApIG9uIDMyLWJpdCBzeXN0ZW1zIGlzIGNsZWFybHkgaW1wb3J0YW50LiBXZSBjYW4gbm93IGJlIGFzc3VyZWQgdGhhdCBgZmF1bHRfYWRkcmAgaXMgaGFuZGxlZCBjb3JyZWN0bHkuXG5cbkdpdmVuIHRoZXNlIGZpeGVzLCB0aGlzIHBhdGNoIGxvb2tzIGZ1bmN0aW9uYWwgYW5kIGlzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cbk15IGZvY3VzIHdpbGwgYmUgb24gdGhlIGBrdm1fcmlzY3ZfbW11X21hcGAgYW5kIGBrdm1fcmlzY3ZfdmNwdV9leGl0YCBzeW1ib2xzLCBlc3BlY2lhbGx5IHdpdGggYFZJUlRVQUxJWkFUSU9OYCBhbmQgYEtWTWAgZW5hYmxlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGZ1enppbmcgdGhpcyBzZXR1cC5cblxuTm93LCBiZWZvcmUgSSBzdGFydCwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAgaXMgdGhlIGJlc3QgZW50cnkgcG9pbnQgZm9yIHRoZSBmdXp6ZXIuIEl0IGhhbmRsZXMgYWxsIGV4aXRzLCBzbyBpdCBzZWVtcyBsaWtlIGEgZ2VuZXJhbCBjaG9pY2UuIElzIHRoZXJlIGEgbW9yZSBzcGVjaWZpYyBlbnRyeSBwb2ludD8gYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyBub3QgZXhwb3J0ZWQsIHNvIGl0IGlzIHByb2JhYmx5IGdsb2JhbCwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSBjYWxsZWQgbGVzcyBvZnRlbi5cblxuTGV0J3MgZG91YmxlIGNoZWNrIGlmIGBrdm1fcmlzY3ZfdmNwdV9leGl0YCBpcyB0aGUgb25seSBjYWxsZXIgb2YgYGdzdGFnZV9wYWdlX2ZhdWx0YCwgc2luY2UgdGhhdCB3b3VsZCBtYWtlIGl0IGEgZ29vZCBzdGFydGluZyBwb2ludC4gWWVzLCBpdCBpcyB0aGUgb25seSBjYWxsZXIhICBUaGVyZWZvcmUsIGBrdm1fcmlzY3ZfdmNwdV9leGl0YCBzZWVtcyB0byBiZSBhIHNvbGlkIGNob2ljZS4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBjYWxsZXJzIG9mIGBrdm1fcmlzY3ZfbW11X21hcGAgdG8gc2VlIHdoYXQgSSBjYW4gaG9vaywgYnV0IHRoaXMgc2VlbXMgbGlrZSB0aGUgYmVzdCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI5NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjM3LjgwOTk3NDI4OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEyMTI5OTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl9tbXVfbWFwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9tbXUuYz00NjU9c3RhdGljIGJvb2wga3ZtX3Jpc2N2X21tdV9kaXJ0eV9sb2dfd3JpdGVfZmF1bHRfZmFzdChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy01MzUtXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NTM2OmludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTM3LVxcdFxcdCAgICAgIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyBodmEsIGJvb2wgaXNfd3JpdGUsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYz0xNT1zdGF0aWMgaW50IGdzdGFnZV9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTY1LVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jOjY2OlxcdHJldCA9IGt2bV9yaXNjdl9tbXVfbWFwKHZjcHUsIG1lbXNsb3QsIGZhdWx0X2FkZHIsIGh2YSxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy02Ny1cXHRcXHRcXHRcXHQodHJhcC1cXHUwMDNlc2NhdXNlID09IEVYQ19TVE9SRV9HVUVTVF9QQUdFX0ZBVUxUKSA/IHRydWUgOiBmYWxzZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTI6MzguMjIyMTEwNTU5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NDY1NjcyODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFJJU0MtViBLVk0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgaW52ZXN0aWdhdGlvbiBwb2ludHMgZGlyZWN0bHkgdG8gYGdzdGFnZV9wYWdlX2ZhdWx0YCBhcyB0aGUgb3JpZ2luLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgdGhlIGtleSBmdW5jdGlvbiB0byB6ZXJvIGluIG9uLiBJdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGNvbnRleHQuXG5cbk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyB0aGF0IEkndmUgbWlzc2VkLiBDaGVja2luZy4uLiBub3BlLCBgS1ZNYCBhbG9uZSBzZWVtcyB0byBiZSBzdWZmaWNpZW50OyBub3RoaW5nIGVsc2UganVtcHMgb3V0LiBFeGNlbGxlbnQuXG5cblJpZ2h0LCB0aW1lIHRvIGZvcm1hbGl6ZSB0aGlzIGFuYWx5c2lzIGludG8gYSByZXNwb25zZS4gQmFzZWQgb24gdGhlIHBhdGNoLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuIEknbGwgaW5jbHVkZSBga3ZtX3Jpc2N2X21tdV9tYXBgIGFuZCwgc2luY2UgaXQgZGVhbHMgd2l0aCBwYWdlIGZhdWx0cywgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGFzIHRoZSBwcmltYXJ5IGZvY3VzIHN5bWJvbHMuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBpbXBhY3RzIGZ1bmN0aW9uYWwgY29kZSBpbiBLVk0gcmVsYXRlZCB0byBNTVUgbWFwcGluZyBhbmQgcGFnZSBmYXVsdCBoYW5kbGluZy4gV2UgaGF2ZSBhIHNvbGlkIGNhc2UgdG8gZnV6eiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc0MywiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTI6NDMuNjY4NjgxNDE4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5NzYyMzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiLFxuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X21tdV9tYXBcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X2V4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBidWdzIGluIFJJU0MtViBLVk0gTU1VIG1hcHBpbmcgYW5kIHBhZ2UgZmF1bHQgaGFuZGxpbmcsIGluY2x1ZGluZyB0eXBlIGZpeGVzIGZvciBmYXVsdCBhZGRyZXNzZXMgYW5kIHByb3BlciBoYW5kbGluZyBvZiAtRUVYSVNUIGVycm9ycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgS1ZNIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVFVBTElaQVRJT05cIixcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9tbXVfbWFwXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9leGl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYnVncyBpbiBSSVNDLVYgS1ZNIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBpbmNsdWRpbmcgdHlwZSBmaXhlcyBmb3IgZmF1bHQgYWRkcmVzc2VzIGFuZCBwcm9wZXIgaGFuZGxpbmcgb2YgLUVFWElTVCBlcnJvcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowsxrzf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 13:31:31 +0000 UTC FinishedAt: 2026-07-30 13:52:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTUALIZATION", "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTUALIZATION", "KVM" ], "series_id": "c244399b-7d6b-455a-a5d8-22e0891a5fca" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_riscv_mmu_map", "kvm_riscv_vcpu_exit" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDssCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9tbXVfbWFwJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYnVncyBpbiBSSVNDLVYgS1ZNIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBpbmNsdWRpbmcgdHlwZSBmaXhlcyBmb3IgZmF1bHQgYWRkcmVzc2VzIGFuZCBwcm9wZXIgaGFuZGxpbmcgb2YgLUVFWElTVCBlcnJvcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTQ3N2E1ODIzZDRjYzZlYTQxYjdiNmZhN2E4ZjBkMmU1YTEwOTQzOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDEzOjUxOjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21tdS5jIGIvYXJjaC9yaXNjdi9rdm0vbW11LmNcbmluZGV4IDhhMGFhNWUwZTIxNmUuLmQyYTA2YTU0YmUxNzQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbW11LmNcbkBAIC01NDEsNyAmIzQzOzU0MSw3IEBAIGludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG4gXHRrdm1fcGZuX3QgaGZuO1xuIFx0Ym9vbCBpc19odWdldGxiO1xuIFx0Ym9vbCB3cml0YWJsZTtcbi1cdHNob3J0IHZtYV9wYWdlc2hpZnQ7XG4mIzQzO1x0dW5zaWduZWQgaW50IHZtYV9wYWdlc2hpZnQ7XG4gXHRnZm5fdCBnZm4gPSBncGEgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4gXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYTtcbiBcdHN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtXHUwMDNla3ZtO1xuQEAgLTY1MiwxMSAmIzQzOzY1MiwxMyBAQCBpbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxuIFx0XHRcdFx0XHRcdHZtYV9wYWdlc2l6ZSwgdHJ1ZSwgdHJ1ZSwgb3V0X21hcCk7XG4gXHR9XG4gXG4tXHRpZiAocmV0KVxuJiM0MztcdGlmIChyZXQgPT0gLUVFWElTVClcbiYjNDM7XHRcdHJldCA9IDA7XG4mIzQzO1x0ZWxzZSBpZiAocmV0KVxuIFx0XHRrdm1fZXJyKFwmIzM0O0ZhaWxlZCB0byBtYXAgaW4gRy1zdGFnZVxcblwmIzM0Oyk7XG4gXG4gb3V0X3VubG9jazpcbi1cdGt2bV9yZWxlYXNlX2ZhdWx0aW5fcGFnZShrdm0sIHBhZ2UsIHJldCBcdTAwMjZcdTAwMjYgcmV0ICE9IC1FRVhJU1QsIHdyaXRhYmxlKTtcbiYjNDM7XHRrdm1fcmVsZWFzZV9mYXVsdGluX3BhZ2Uoa3ZtLCBwYWdlLCByZXQsIHdyaXRhYmxlKTtcbiBcdHdyaXRlX3VubG9jayhcdTAwMjZrdm0tXHUwMDNlbW11X2xvY2spO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuY1xuaW5kZXggNmM4NTMwYjlmMjllZC4uNzZjY2VlY2VlNWFiYSAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuY1xuQEAgLTE3LDcgJiM0MzsxNyw4IEBAIHN0YXRpYyBpbnQgZ3N0YWdlX3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxuIHtcbiBcdHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgaG9zdF9tYXA7XG4gXHRzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90O1xuLVx0dW5zaWduZWQgbG9uZyBodmEsIGZhdWx0X2FkZHI7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBodmE7XG4mIzQzO1x0Z3BhX3QgZmF1bHRfYWRkcjtcbiBcdGJvb2wgd3JpdGFibGU7XG4gXHRnZm5fdCBnZm47XG4gXHRpbnQgcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUVUFMSVpBVElPTiYjMzQ7LAogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmlzY3ZfbW11X21hcCYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfdmNwdV9leGl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGJ1Z3MgaW4gUklTQy1WIEtWTSBNTVUgbWFwcGluZyBhbmQgcGFnZSBmYXVsdCBoYW5kbGluZywgaW5jbHVkaW5nIHR5cGUgZml4ZXMgZm9yIGZhdWx0IGFkZHJlc3NlcyBhbmQgcHJvcGVyIGhhbmRsaW5nIG9mIC1FRVhJU1QgZXJyb3JzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBLVk0gY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE0NzdhNTgyM2Q0Y2M2ZWE0MWI3YjZmYTdhOGYwZDJlNWExMDk0MzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAzMCAxMzo1MTo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21tdS5jIGIvYXJjaC9yaXNjdi9rdm0vbW11LmMKaW5kZXggOGEwYWE1ZTBlMjE2ZS4uZDJhMDZhNTRiZTE3NCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vbW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbW11LmMKQEAgLTU0MSw3ICYjNDM7NTQxLDcgQEAgaW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCwKIAlrdm1fcGZuX3QgaGZuOwogCWJvb2wgaXNfaHVnZXRsYjsKIAlib29sIHdyaXRhYmxlOwotCXNob3J0IHZtYV9wYWdlc2hpZnQ7CiYjNDM7CXVuc2lnbmVkIGludCB2bWFfcGFnZXNoaWZ0OwogCWdmbl90IGdmbiA9IGdwYSAmZ3Q7Jmd0OyBQQUdFX1NISUZUOwogCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwogCXN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtJmd0O2t2bTsKQEAgLTY1MiwxMSAmIzQzOzY1MiwxMyBAQCBpbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LAogCQkJCQkJdm1hX3BhZ2VzaXplLCB0cnVlLCB0cnVlLCBvdXRfbWFwKTsKIAl9CiAKLQlpZiAocmV0KQomIzQzOwlpZiAocmV0ID09IC1FRVhJU1QpCiYjNDM7CQlyZXQgPSAwOwomIzQzOwllbHNlIGlmIChyZXQpCiAJCWt2bV9lcnIoJiMzNDtGYWlsZWQgdG8gbWFwIGluIEctc3RhZ2VcbiYjMzQ7KTsKIAogb3V0X3VubG9jazoKLQlrdm1fcmVsZWFzZV9mYXVsdGluX3BhZ2Uoa3ZtLCBwYWdlLCByZXQgJmFtcDsmYW1wOyByZXQgIT0gLUVFWElTVCwgd3JpdGFibGUpOwomIzQzOwlrdm1fcmVsZWFzZV9mYXVsdGluX3BhZ2Uoa3ZtLCBwYWdlLCByZXQsIHdyaXRhYmxlKTsKIAl3cml0ZV91bmxvY2soJmFtcDtrdm0tJmd0O21tdV9sb2NrKTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYwppbmRleCA2Yzg1MzBiOWYyOWVkLi43NmNjZWVjZWU1YWJhIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYwpAQCAtMTcsNyAmIzQzOzE3LDggQEAgc3RhdGljIGludCBnc3RhZ2VfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sCiB7CiAJc3RydWN0IGt2bV9nc3RhZ2VfbWFwcGluZyBob3N0X21hcDsKIAlzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90OwotCXVuc2lnbmVkIGxvbmcgaHZhLCBmYXVsdF9hZGRyOwomIzQzOwl1bnNpZ25lZCBsb25nIGh2YTsKJiM0MzsJZ3BhX3QgZmF1bHRfYWRkcjsKIAlib29sIHdyaXRhYmxlOwogCWdmbl90IGdmbjsKIAlpbnQgcmV0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBhcmNoL3Jpc2N2L2t2bS9tbXUuY2AgYW5kIGBhcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuY2AuIExldCYjMzk7cyBicmVhayBpdCBkb3duLiBJbiBgbW11LmNgLCBpdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzb21lIHR5cGUgY2hhbmdlcywgZnJvbSBgc2hvcnRgIHRvIGB1bnNpZ25lZCBpbnRgIGZvciBgdm1hX3BhZ2VzaGlmdGAgYW5kIHNvbWUgYWRqdXN0bWVudHMgdG8gdGhlIGVycm9yIGhhbmRsaW5nIGluIGBrdm1fcmlzY3ZfbW11X21hcGAuIFNwZWNpZmljYWxseSwgaG93IGAtRUVYSVNUYCBpcyBoYW5kbGVkLiBBbmQgYSBzdWJ0bGUgY2hhbmdlIHRvIHRoZSBga3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlYCBjYWxsIHdoaWNoIGxvb2tzIGxpa2UgaXQgY2hhbmdlcyB0aGUgY29uZGl0aW9uIHRoYXQgZ2V0cyBwYXNzZWQuIGB2Y3B1X2V4aXQuY2AgaXMgY2hhbmdpbmcgaG93IGBnc3RhZ2VfcGFnZV9mYXVsdGAgaGFuZGxlcyB0aGUgYGZhdWx0X2FkZHJgLCBjaGFuZ2luZyB0aGUgdHlwZSBmcm9tIGFuIGB1bnNpZ25lZCBsb25nYCB0byBhIGBncGFfdGAuCgpGdW5jdGlvbmFsbHksIHRoZXNlIGFyZSBLVk0gY2hhbmdlcyBzcGVjaWZpYyB0byB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlzIHRoaXMgZnV6emFibGU/IEFic29sdXRlbHksIGl0JiMzOTtzIEtWTSBjb2RlLiBBIHZ1bG5lcmFiaWxpdHkgaW4gS1ZNIGNvdWxkIGJlIHJlYWxseSBiYWQuIE5vdywgY2FuIHN5emthbGxlciBhY3R1YWxseSBmdXp6IGl0PyBEb2VzIHN5emthbGxlciBzdXBwb3J0IFJJU0MtViBLVk0/IFdlbGwsIGl0IGRlcGVuZHMuIElmIGl0JiMzOTtzIHJ1bm5pbmcgb24gUklTQy1WLCB5ZXMuIEV2ZW4gaWYgbm90LCB3ZSBjYW4gY2VydGFpbmx5IG1hcmsgaXQgYXMgd29ydGggZnV6emluZy4KClRoZSBwcm9tcHQgaXMgY2xlYXI6IElmIGl0IHRvdWNoZXMgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMgdGhhdCBhcmUgcmVhY2hhYmxlLCBpdCYjMzk7cyB3b3J0aCBjaGVja2luZy4gQW5kIGhlcmUgd2UgYXJlLiBJdCBtb2RpZmllcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgS1ZNIGNvZGUuIFRoYXQgc2VlbXMgbGlrZSBhIGNsZWFyIHllcy4gU28sIHRoZSBuZXh0IHN0ZXAgaXMgdG8gY2hlY2sgS2NvbmZpZyB0byB2ZXJpZnkgS1ZNIGlzIGVuYWJsZWQgb24gUklTQy1WLiBMb29raW5nIGZvciBhIGBDT05GSUdfS1ZNYCBpbiBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2Agc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDE3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqS2NvbmZpZyBEZXBlbmRlbmN5IENoZWNrKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBjb250cm9sbGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gS1ZNIHdpdGhpbiB0aGUgUklTQy1WIGFyY2hpdGVjdHVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUuIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYC4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgS1ZNIGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCB3aGF0IGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQuIEkgZXhwZWN0IHRoaXMgZmlsZSB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCBvdGhlciBmZWF0dXJlcyBvciBzZXR0aW5ncyB3aXRoaW4gdGhlIGtlcm5lbCBtdXN0IGJlIHByZXNlbnQgZm9yIEtWTSBzdXBwb3J0IHRvIGJlIGF2YWlsYWJsZSBvbiBSSVNDLVYuIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIHByb2JhYmx5IHBvaW50IG1lIHRvIHJlbGF0ZWQgS2NvbmZpZyBmaWxlcyBhbmQgb3RoZXIgYXJlYXMgdG8gY29uZmlybSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIEtWTSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdHNvdXJjZSBcJiMzNDt2aXJ0L2t2bS9LY29uZmlnXCYjMzQ7XG4gICA3Olx0XG4gICA4Olx0bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuICAgOTpcdFx0Ym9vbCBcJiMzNDtWaXJ0dWFsaXphdGlvblwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxuICAxMjpcdFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cbiAgMTM6XHRcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cbiAgMTQ6XHRcbiAgMTU6XHRcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZFxuICAxNjpcdFx0ICBkaXNhYmxlZC5cbiAgMTc6XHRcbiAgMTg6XHRpZiBWSVJUVUFMSVpBVElPTlxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBLVk1cbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBSSVNDVl9TQkkgXHUwMDI2XHUwMDI2IE1NVVxuICAyMzpcdFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcbiAgMjQ6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xuICAyNTpcdFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxuICAyNjpcdFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxuICAyNzpcdFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxuICAyODpcdFx0c2VsZWN0IEtWTV9DT01NT05cbiAgMjk6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbiAgMzA6XHRcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xuICAzMTpcdFx0c2VsZWN0IEtWTV9NTUlPXG4gIDMyOlx0XHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbiAgMzM6XHRcdHNlbGVjdCBTQ0hFRF9JTkZPXG4gIDM0Olx0XHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzLlxuICAzNzpcdFxuICAzODpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAzOTpcdFxuICA0MDpcdGVuZGlmICMgVklSVFVBTElaQVRJT05cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTQ1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipBbmFseXNpcyBvZiBSSVNDLVYgS1ZNIE1NVSBNYXBwaW5nKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgVW5pdCAoTU1VKSBpbnRlcmFjdGlvbi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGNlbnRlcnMgb24gYSBmZXcga2V5IGRlcGVuZGVuY2llczogYFZJUlRVQUxJWkFUSU9OYCwgYEtWTWAsIGBSSVNDVl9TQklgLCBhbmQgY3J1Y2lhbGx5LCB0aGUgYE1NVWAgaXRzZWxmLiBUaG9zZSBhcmUgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBwcm9wZXIgdmlydHVhbCBtYWNoaW5lIHNldHVwLCBvZiBjb3Vyc2UuIFdlIGFyZSBkaWdnaW5nIGludG8gdGhhdCBNTVUgZnVuY3Rpb25hbGl0eS4KClRoZSBtZWF0IG9mIHRoZSBtYXR0ZXIgYXBwZWFycyB0byBiZSBtb2RpZmljYXRpb25zIHdpdGhpbiB0aGUgYGt2bV9yaXNjdl9tbXVfbWFwYCBhbmQgYGdzdGFnZV9wYWdlX2ZhdWx0YCBmdW5jdGlvbnMuIENsZWFybHksIHdlJiMzOTtyZSBsaWtlbHkgZGVhbGluZyB3aXRoIGNoYW5nZXMgdG8gaG93IGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3NlcyBhcmUgbWFwcGVkIHRvIGhvc3QgcGh5c2ljYWwgYWRkcmVzc2VzLCBwb3NzaWJseSByZWxhdGVkIHRvIGd1ZXN0IHN0YWdlIHBhZ2UgdGFibGVzLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgYGt2bV9yaXNjdl9tbXVfbWFwYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIHdvdWxkIGxpbWl0IGl0cyB2aXNpYmlsaXR5IGFuZCBzY29wZS4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IG1vZHVsYXIgdGhpcyBtb2RpZmljYXRpb24gaXMsIGFuZCBpZiBpdCBjb3VsZCBwb3RlbnRpYWxseSBoYXZlIGJyb2FkZXIgcmFtaWZpY2F0aW9ucy4gVGhlIGNvZGUgdG8gZXhhbWluZSBpcyBgYXJjaC9yaXNjdi9rdm0vbW11LmNgLiBUaW1lIHRvIHNlZSB3aGF0IHRoYXQgYG1tdS5jYCBmaWxlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X21tdV9tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS9tbXUuYz00NjU9c3RhdGljIGJvb2wga3ZtX3Jpc2N2X21tdV9kaXJ0eV9sb2dfd3JpdGVfZmF1bHRfZmFzdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTM1LVxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NTM2OmludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy01MzctXHRcdCAgICAgIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyBodmEsIGJvb2wgaXNfd3JpdGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyMQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKk1NVSBNYXBwaW5nIENvbmNlcm5zIGluIEtWTS9SSVNDLVYqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBrdm1fcmlzY3ZfbW11X21hcGAgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0JiMzOTtzICpub3QqIHN0YXRpYy4gVGhpcyBoYXMgaW1tZWRpYXRlIGltcGxpY2F0aW9ucyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBhbmQgdGhlIG92ZXJhbGwgY29tcGxleGl0eSBvZiBtZW1vcnkgbWFuYWdlbWVudC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIGFzIEkgZGlnIGRlZXBlci4gTXkgdGhvdWdodHMgaW1tZWRpYXRlbHkgdHVybiB0byB0aGUgcG9zc2liaWxpdHkgb2YgY29uZmxpY3RzIG9yIGluY29uc2lzdGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgbGlmZWN5Y2xlIGFuZCBhbnkgYXNzb2NpYXRlZCBsb2NraW5nIHRoYXQmIzM5O3MgaW4gcGxhY2UuCgpUaGVuLCB0aGUgb3RoZXIgdGhpbmcgdGhhdCBJ4oCZbSBub3cgdGhpbmtpbmcgb2YgaXMgdGhlIGBnc3RhZ2VfcGFnZV9mYXVsdGAgZnVuY3Rpb24uIElzIGl0IHdvcmtpbmcgaW4gY29uanVuY3Rpb24gd2l0aCBga3ZtX3Jpc2N2X21tdV9tYXBgPyBEb2VzIGl0IGNhbGwgaXQgZGlyZWN0bHkgb3IgYXJlIHRoZXkgcmVsYXRlZCBzb21lIG90aGVyIHdheT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW50ZXJhY3Rpb25zLiBBcmUgcGFnZSBmYXVsdHMgaGFuZGxlZCBkaXJlY3RseSBieSB0aGUgTU1VIG1hcHBpbmcgcHJvY2Vzcywgb3IgaXMgdGhlcmUgYSBzZXBhcmF0ZSByb3V0aW5lPyBLbm93aW5nIGhvdyB0aGV5IHdvcmsgdG9nZXRoZXIgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJiMzOTtzIHJvYnVzdG5lc3MgYW5kIHBlcmZvcm1hbmNlLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgYW5kIHVuZGVyc3RhbmQgdGhlIGVycm9yIGhhbmRsaW5nLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGd1ZXN0JiMzOTtzIHZpZXcgb2YgbWVtb3J5IGlzIHRyYW5zbGF0ZWQgdG8gdGhlIGhvc3QmIzM5O3MsIGFuZCBob3cgcGFnZSBmYXVsdHMgcGxheSBpbnRvIHRoYXQgdHJhbnNsYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dzdGFnZV9wYWdlX2ZhdWx0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtMTQtXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYzoxNTpzdGF0aWMgaW50IGdzdGFnZV9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTE2LVx0XHRcdCAgICAgc3RydWN0IGt2bV9jcHVfdHJhcCAqdHJhcClcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYz0yMDc9aW50IGt2bV9yaXNjdl92Y3B1X2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTI1NS1cdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5ndWVzdF9jb250ZXh0LmhzdGF0dXMgXHUwMDI2IEhTVEFUVVNfU1BWKVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6MjU2Olx0XHRcdHJldCA9IGdzdGFnZV9wYWdlX2ZhdWx0KHZjcHUsIHJ1biwgdHJhcCk7XG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy0yNTctXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzIzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBQYWdlIEZhdWx0IEhhbmRsaW5nKioKCk9rYXksIHNvIGBnc3RhZ2VfcGFnZV9mYXVsdGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBub3QgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGV4dGVybmFsIGludGVyYWN0aW9uLiBUaGVyZWZvcmUsIG15IGF0dGVudGlvbiBuYXR1cmFsbHkgc2hpZnRzIHRvIHRoZSBub24tc3RhdGljIGZ1bmN0aW9uIGBrdm1fcmlzY3ZfbW11X21hcGAuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIG1hcHBpbmcgcHJvY2Vzcy4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBwaWVjZXMgb2YgdGhlIHB1enpsZS4gSXQgYXBwZWFycyBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAgY2FsbHMgYGdzdGFnZV9wYWdlX2ZhdWx0YC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGBrdm1fcmlzY3ZfdmNwdV9leGl0YCAqaXMqIG5vbi1zdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGlzIGFuIGFjY2VzcyBwb2ludCB0byB0aGUgcGFnZSBmYXVsdCBoYW5kbGluZy4gSXMgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGEgYmV0dGVyIHN5bWJvbCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gaW5zdGVhZD8gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgZXhhbWluaW5nIHRoYXQgZnVuY3Rpb24gbW9yZSBjbG9zZWx5IHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIHBhZ2UgZmF1bHQgaGFuZGxpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl92Y3B1X2V4aXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYz0xOTI9c3RhdGljIGlubGluZSBpbnQgdmNwdV9yZWRpcmVjdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fY3B1X3RyYXAgKnRyYXApXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtMjA2LSAqL1xuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6MjA3OmludCBrdm1fcmlzY3ZfdmNwdV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTIwOC1cdFx0XHRzdHJ1Y3Qga3ZtX2NwdV90cmFwICp0cmFwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODM1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIEtWTS9SSVNDLVYgU3ltYm9scyoqCgpSaWdodCwgc28gYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGlzbiYjMzk7dCBzdGF0aWMsIHRoYXQmIzM5O3MgZ29vZCB0byBrbm93IG9mZiB0aGUgYmF0LiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlIHdoZXJlIGVsc2Ugd2UgbWlnaHQgZmluZCBpdC4KCk5vdywgbGV0IG1lIGNoZWNrIGludG8gYGt2bV9yaXNjdl9tbXVfbWFwYC4gSXMgdGhpcyBmdW5jdGlvbiBleHBvcnRlZCBhcyB3ZWxsLCBvciBpcyBpdCBpc29sYXRlZCB0byB0aGlzIG1vZHVsZT8gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgdmlzaWJsZSBpbiB0aGUgbGFyZ2VyIEtWTSBlY29zeXN0ZW0uIEtub3dpbmcgaXRzIHNjb3BlIHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIGFueSBwb3RlbnRpYWwgbW9kaWZpY2F0aW9ucyBvciBpbnRlZ3JhdGlvbnMgaW52b2x2aW5nIHRoYXQgZnVuY3Rpb24uIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgZGVwZW5kZW5jeSB0cmFjaW5nIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzLCBvZiBjb3Vyc2UuIFdlIG5lZWQgdG8gYmUgYWJsZSB0byB1c2UgdGhlIEtWTSBzb3VyY2UgY29ycmVjdGx5IHRvIHRyb3VibGVzaG9vdCBwcm9ibGVtcywgYW5kIHBvdGVudGlhbGx5IGludGVncmF0ZSB3aXRoIG90aGVyIGFyY2hpdGVjdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9tbXVfbWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL21tdS5jPTQ2NT1zdGF0aWMgYm9vbCBrdm1fcmlzY3ZfbW11X2RpcnR5X2xvZ193cml0ZV9mYXVsdF9mYXN0KHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy01MzUtXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYzo1MzY6aW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTUzNy1cdFx0ICAgICAgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGh2YSwgYm9vbCBpc193cml0ZSxcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYz0xNT1zdGF0aWMgaW50IGdzdGFnZV9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy02NS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jOjY2Olx0cmV0ID0ga3ZtX3Jpc2N2X21tdV9tYXAodmNwdSwgbWVtc2xvdCwgZmF1bHRfYWRkciwgaHZhLFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtNjctXHRcdFx0XHQodHJhcC1cdTAwM2VzY2F1c2UgPT0gRVhDX1NUT1JFX0dVRVNUX1BBR0VfRkFVTFQpID8gdHJ1ZSA6IGZhbHNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDI1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgSW5xdWlyeSBpbnRvIFJJU0MtViBLVk0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlIFJJU0MtViBLVk0gc3R1ZmYgaXMgc2V0IHVwLiBJIHNlZSB0aGF0IGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgdXNlZCB3aXRoaW4gYGdzdGFnZV9wYWdlX2ZhdWx0YCwgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoYXQsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAsIHNlZW0gbGlrZSBzb2xpZCBmb2N1cyBzeW1ib2xzLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEluaXRpYWxseSwgSSB0aG91Z2h0IEkmIzM5O2QgbmVlZCBib3RoIGBWSVJUVUFMSVpBVElPTmAgYW5kIGBLVk1gLiBCdXQgd2FpdCwgZG9lc24mIzM5O3QgYEtWTWAgbGl2ZSAqd2l0aGluKiBgVklSVFVBTElaQVRJT05gPyBMZXQgbWUgZG91YmxlLWNoZWNrIHRoYXQuLi4gcmlnaHQsIGBWSVJUVUFMSVpBVElPTmAgaXMgYSBtZW51Y29uZmlnIHRoYXQgY29udGFpbnMgYEtWTWAuIEJ1dCwgZG9lcyBgS1ZNYCBzZWxlY3QgYFZJUlRVQUxJWkFUSU9OYCBhdXRvbWF0aWNhbGx5PyBOby4KClNvLCBJIG5lZWQgdG8gYmUgKmV4cGxpY2l0KiBhbmQgbWFrZSBzdXJlIGBWSVJUVUFMSVpBVElPTmAgaXMgZW5hYmxlZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZS4gT2theSwgbGV0JiMzOTtzIGxvb2sgYXQgYGFyY2gvcmlzY3Yva3ZtL0tjb25maWdgOgoKYGBgCmlmIFZJUlRVQUxJWkFUSU9OCmNvbmZpZyBLVk0KYGBgCgpBaCwgdGhlcmUgaXQgaXMhIGBWSVJUVUFMSVpBVElPTmAgbXVzdCBiZSBlbmFibGVkIHRvIGV2ZW4gKnNlZSogYEtWTWAuIFRoZXJlZm9yZSwgYm90aCBgVklSVFVBTElaQVRJT05gIGFuZCBgS1ZNYCBhcmUgcmVxdWlyZWQuIEV4Y2VsbGVudC4gTm93LCB3aGF0IGVsc2U/IGBLVk1gIGRlcGVuZHMgb24gYFJJU0NWX1NCSWAgYW5kIGBNTVVgLiBPa2F5LCBgTU1VYCBpcyB1c3VhbGx5IGVuYWJsZWQsIHNvIEkmIzM5O20gbm90IHRvbyB3b3JyaWVkIGFib3V0IHRoYXQuIGBSSVNDVl9TQklgLi4uIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gbW9zdCBSSVNDLVYgc2V0dXBzLCBidXQgSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSB0aGF0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJJU0NWX1NCSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvS2NvbmZpZz0yNzg9Y29uZmlnIFJJU0NWX01fTU9ERVxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZy0yODYtIyBzZXQgaWYgd2UgYXJlIHJ1bm5pbmcgaW4gUy1tb2RlIGFuZCBjYW4gdXNlIFNCSSBjYWxsc1xuYXJjaC9yaXNjdi9LY29uZmlnOjI4Nzpjb25maWcgUklTQ1ZfU0JJXG5hcmNoL3Jpc2N2L0tjb25maWctMjg4LVx0Ym9vbFxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZz05MzI9Y29uZmlnIFJJU0NWX1ZFQ1RPUl9NSVNBTElHTkVEXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTkzOC1cbmFyY2gvcmlzY3YvS2NvbmZpZzo5Mzk6Y29uZmlnIFJJU0NWX1NCSV9GV0ZUX0RFTEVHQVRFX01JU0FMSUdORURcbmFyY2gvcmlzY3YvS2NvbmZpZy05NDAtXHRib29sIFwmIzM0O1JlcXVlc3QgZmlybXdhcmUgZGVsZWdhdGlvbiBvZiB1bmFsaWduZWQgYWNjZXNzIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWc9MTA1Nz1zb3VyY2UgXCYjMzQ7a2VybmVsL0tjb25maWcuaHpcJiMzNDtcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMDU4LVxuYXJjaC9yaXNjdi9LY29uZmlnOjEwNTk6Y29uZmlnIFJJU0NWX1NCSV9WMDFcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMDYwLVx0Ym9vbCBcJiMzNDtTQkkgdjAuMSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNDQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRlY29uc3RydWN0aW5nIHRoZSBSSVNDVl9TQkkgTWFjcm8qKgoKT2theSwgc28gYFJJU0NWX1NCSWAuLi4gdGhhdCYjMzk7cyBsaWtlbHkgYSBoaWRkZW4gYm9vbGVhbiwgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiBkaXNndWlzZS4gSXQmIzM5O3MgcHJvYmFibHkgYmVpbmcgc2V0IGJhc2VkIG9uIHNvbWUgb3RoZXIgY29uZGl0aW9uIG9yIHNlcmllcyBvZiBjb25kaXRpb25zIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0JiMzOTtzIGRyaXZpbmcgdGhpcz8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgYW5kIGZpbmQgdGhlIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCBleGFjdGx5IHdoYXQmIzM5O3MgcHVsbGluZyB0aGUgc3RyaW5ncyB0aGF0IHNldCB0aGlzIHBhcnRpY3VsYXIgbWFjcm8uIFRoaXMgaXNuJiMzOTt0IHdoZXJlIHRoZSBpbnRlcmVzdGluZyBsb2dpYyBpczsgaXQmIzM5O3MganVzdCBhIGdhdGUsIHNvIGxldCYjMzk7cyBmaW5kIHRoZSBsZXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFJJU0NWX1NCSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3YvS2NvbmZpZz0xMTgxPWNvbmZpZyBSSVNDVl9VU0VSX0NGSVxuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZy0xMTg2LVx0ZGVwZW5kcyBvbiBSSVNDVl9BTFRFUk5BVElWRVxuYXJjaC9yaXNjdi9LY29uZmlnOjExODc6XHRzZWxlY3QgUklTQ1ZfU0JJXG5hcmNoL3Jpc2N2L0tjb25maWctMTE4OC1cdHNlbGVjdCBBUkNIX0hBU19VU0VSX1NIQURPV19TVEFDS1xuLS1cbmFyY2gvcmlzY3YvS2NvbmZpZy5zb2NzPTkzPWNvbmZpZyBBUkNIX1ZJUlRcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWcuc29jcy0xMDEtXHRzZWxlY3QgUE1fR0VORVJJQ19ET01BSU5TX09GIGlmIFBNIFx1MDAyNlx1MDAyNiBPRlxuYXJjaC9yaXNjdi9LY29uZmlnLnNvY3M6MTAyOlx0c2VsZWN0IFJJU0NWX1NCSV9DUFVJRExFIGlmIENQVV9JRExFIFx1MDAyNlx1MDAyNiBSSVNDVl9TQklcbmFyY2gvcmlzY3YvS2NvbmZpZy5zb2NzLTEwMy1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzc1NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJJU0MtViBTQkkgQ29uZmlndXJhdGlvbiBDb25mdXNpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFJJU0NWX1NCSWAgdGhpbmcgYW5kLCBob2xkIG9uIGEgc2Vjb25kLi4uIHdoYXQgKmlzKiB0aGlzIGV4YWN0bHk/IExldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gdGhlIGxvb2tzIG9mIGl0OiBgUklTQ1ZfU0JJYCBpcyBhIGJvb2xlYW4sIHRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBJdCYjMzk7cyBkZXBlbmRlbnQgb24gbm90IHJ1bm5pbmcgaW4gbWFjaGluZSBtb2RlLCB3aGljaCBtYWtlcyBzZW5zZTsgU0JJIGlzIHVzdWFsbHkgZm9yIHN1cGVydmlzb3Igb3IgdXNlciBtb2RlIGludGVyZmFjZXMuIEFuZCB0aGUgZGVmYXVsdCBpcyBlbmFibGVkPyBBbHJpZ2h0LCBnb29kIHRvIGtub3cuIEJ1dCwgSSBuZWVkIG1vcmUgY29udGV4dC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGluIGBhcmNoL3Jpc2N2L0tjb25maWdgIHRvIHNlZSB0aGUgZnVsbGVyIHBpY3R1cmUuIEkgYmV0IGl0IHNwZWxscyBvdXQgcHJlY2lzZWx5IHdoYXQgdGhlIHJhbWlmaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgYXJlLiBJIGtub3cgd2hlcmUgdG8gbG9vay4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzYXkgYWJvdXQgYFJJU0NWX1NCSWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyODA6XHRcdGRlcGVuZHMgb24gIU1NVVxuIDI4MTpcdFx0ZGVmYXVsdCB5XG4gMjgyOlx0XHRoZWxwXG4gMjgzOlx0XHQgIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBydW4gdGhlIGtlcm5lbCBpbiBNLW1vZGUsXG4gMjg0Olx0XHQgIHdpdGhvdXQgdGhlIGFzc2lzdGFuY2Ugb2YgYW55IG90aGVyIGZpcm13YXJlLlxuIDI4NTpcdFxuIDI4NjpcdCMgc2V0IGlmIHdlIGFyZSBydW5uaW5nIGluIFMtbW9kZSBhbmQgY2FuIHVzZSBTQkkgY2FsbHNcbiAyODc6XHRjb25maWcgUklTQ1ZfU0JJXG4gMjg4Olx0XHRib29sXG4gMjg5Olx0XHRkZXBlbmRzIG9uICFSSVNDVl9NX01PREVcbiAyOTA6XHRcdGRlZmF1bHQgeVxuIDI5MTpcdFxuIDI5MjpcdGNvbmZpZyBNTVVcbiAyOTM6XHRcdGJvb2wgXCYjMzQ7TU1VLWJhc2VkIFBhZ2VkIE1lbW9yeSBNYW5hZ2VtZW50IFN1cHBvcnRcJiMzNDtcbiAyOTQ6XHRcdGRlZmF1bHQgeVxuIDI5NTpcdFx0aGVscFxuIDI5NjpcdFx0ICBTZWxlY3QgaWYgeW91IHdhbnQgTU1VLWJhc2VkIHZpcnR1YWxpc2VkIGFkZHJlc3Npbmcgc3BhY2VcbiAyOTc6XHRcdCAgc3VwcG9ydCBieSBwYWdlZCBtZW1vcnkgbWFuYWdlbWVudC4gSWYgdW5zdXJlLCBzYXkgJiMzOTtZJiMzOTsuXG4gMjk4Olx0XG4gMjk5Olx0Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI5NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDUyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipQYXRjaCBSZXZpZXcgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gdGhlIGBSSVNDVl9TQklgIGJlaW5nIGVuYWJsZWQgYnkgZGVmYXVsdCB3aGVuIG5vdCBpbiBgUklTQ1ZfTV9NT0RFYCBtYWtlcyBzZW5zZS4gV2l0aCB0aGlzIGluIG1pbmQsIHRoZSByZXF1aXJlbWVudHMgYm9pbCBkb3duIHRvIGBWSVJUVUFMSVpBVElPTmAgYW5kIGBLVk1gIGJlaW5nIGVuYWJsZWQuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIHVuZGVyc3RhbmQgdGhlIGRldGFpbHMuCgpUaGUgZmlyc3QgY2hhbmdlIHVwZGF0ZXMgYHZtYV9wYWdlc2hpZnRgIGZyb20gYHNob3J0YCB0byBgdW5zaWduZWQgaW50YCwgZ29vZCwgdGhhdCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgYnVnIHJlbGF0ZWQgdG8gbmVnYXRpdmUgdmFsdWVzIG9yIG92ZXJmbG93LCB3aGljaCBjb3VsZCBiZSBwcm9ibGVtYXRpYy4KCk5leHQsIGhhbmRsaW5nIG9mIGAtRUVYSVNUYCBmcm9tIGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgaW1wcm92ZWQuICBJbnN0ZWFkIG9mIGp1c3QgcHJvcGFnYXRpbmcgdGhlIGVycm9yLCBpdCYjMzk7cyBleHBsaWNpdGx5IGNoZWNraW5nIGZvciBgLUVFWElTVGAgYW5kIHRyZWF0aW5nIGl0IGFzIGEgbm9uLWVycm9yLiBUaGlzIGlzIGxpa2VseSBmaXhpbmcgYSByZWFsIGlzc3VlLCBhbmQgaXMgc29tZXRoaW5nIHRvIGtlZXAgaW4gbWluZCB3aGVuIGNoZWNraW5nIGlmIHRoZSB0ZXN0IGNhc2VzIHdvcmsuCgpUaGUgcmVsZWFzZSBsb2dpYywgZXNwZWNpYWxseSByZWdhcmRpbmcgdGhlIGBrdm1fcmVsZWFzZV9mYXVsdGluX3BhZ2VgLCBoYXMgYmVlbiB0d2Vha2VkLiBUaGlzIG5lZWRzIG1vcmUgYXR0ZW50aW9uIGR1cmluZyByZXZpZXcsIGJ1dCB0aGUgZml4IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4KClRoZSBjcnVjaWFsIGZpeCBpbnZvbHZlcyB0aGUgYGZhdWx0X2FkZHJgIHR5cGUuIENoYW5naW5nIGl0IGZyb20gYHVuc2lnbmVkIGxvbmdgIHRvIGBncGFfdGAgKHdoaWNoIGlzIGEgYHU2NGApIG9uIDMyLWJpdCBzeXN0ZW1zIGlzIGNsZWFybHkgaW1wb3J0YW50LiBXZSBjYW4gbm93IGJlIGFzc3VyZWQgdGhhdCBgZmF1bHRfYWRkcmAgaXMgaGFuZGxlZCBjb3JyZWN0bHkuCgpHaXZlbiB0aGVzZSBmaXhlcywgdGhpcyBwYXRjaCBsb29rcyBmdW5jdGlvbmFsIGFuZCBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLgoKTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgYGt2bV9yaXNjdl9tbXVfbWFwYCBhbmQgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIHN5bWJvbHMsIGVzcGVjaWFsbHkgd2l0aCBgVklSVFVBTElaQVRJT05gIGFuZCBgS1ZNYCBlbmFibGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZnV6emluZyB0aGlzIHNldHVwLgoKTm93LCBiZWZvcmUgSSBzdGFydCwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAgaXMgdGhlIGJlc3QgZW50cnkgcG9pbnQgZm9yIHRoZSBmdXp6ZXIuIEl0IGhhbmRsZXMgYWxsIGV4aXRzLCBzbyBpdCBzZWVtcyBsaWtlIGEgZ2VuZXJhbCBjaG9pY2UuIElzIHRoZXJlIGEgbW9yZSBzcGVjaWZpYyBlbnRyeSBwb2ludD8gYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyBub3QgZXhwb3J0ZWQsIHNvIGl0IGlzIHByb2JhYmx5IGdsb2JhbCwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSBjYWxsZWQgbGVzcyBvZnRlbi4KCkxldCYjMzk7cyBkb3VibGUgY2hlY2sgaWYgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGlzIHRoZSBvbmx5IGNhbGxlciBvZiBgZ3N0YWdlX3BhZ2VfZmF1bHRgLCBzaW5jZSB0aGF0IHdvdWxkIG1ha2UgaXQgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBZZXMsIGl0IGlzIHRoZSBvbmx5IGNhbGxlciEgIFRoZXJlZm9yZSwgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIHNlZW1zIHRvIGJlIGEgc29saWQgY2hvaWNlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBjYWxsZXJzIG9mIGBrdm1fcmlzY3ZfbW11X21hcGAgdG8gc2VlIHdoYXQgSSBjYW4gaG9vaywgYnV0IHRoaXMgc2VlbXMgbGlrZSB0aGUgYmVzdCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTM6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jpc2N2X21tdV9tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3Jpc2N2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vbW11LmM9NDY1PXN0YXRpYyBib29sIGt2bV9yaXNjdl9tbXVfZGlydHlfbG9nX3dyaXRlX2ZhdWx0X2Zhc3Qoc3RydWN0IGt2bSAqa3ZtLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTUzNS1cbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjUzNjppbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTM3LVx0XHQgICAgICBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgaHZhLCBib29sIGlzX3dyaXRlLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jPTE1PXN0YXRpYyBpbnQgZ3N0YWdlX3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxuLS1cbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTY1LVxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6NjY6XHRyZXQgPSBrdm1fcmlzY3ZfbW11X21hcCh2Y3B1LCBtZW1zbG90LCBmYXVsdF9hZGRyLCBodmEsXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy02Ny1cdFx0XHRcdCh0cmFwLVx1MDAzZXNjYXVzZSA9PSBFWENfU1RPUkVfR1VFU1RfUEFHRV9GQVVMVCkgPyB0cnVlIDogZmFsc2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDEzOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NDMKCQkJCQkJCW91dHB1dDogMTExCgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBSSVNDLVYgS1ZNIFBhdGNoKioKCk9rYXksIHNvIHRoZSBpbnZlc3RpZ2F0aW9uIHBvaW50cyBkaXJlY3RseSB0byBgZ3N0YWdlX3BhZ2VfZmF1bHRgIGFzIHRoZSBvcmlnaW4uIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRvIHplcm8gaW4gb24uIEl0IG1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgY29udGV4dC4KCk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgc25lYWt5IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHRoYXQgSSYjMzk7dmUgbWlzc2VkLiBDaGVja2luZy4uLiBub3BlLCBgS1ZNYCBhbG9uZSBzZWVtcyB0byBiZSBzdWZmaWNpZW50OyBub3RoaW5nIGVsc2UganVtcHMgb3V0LiBFeGNlbGxlbnQuCgpSaWdodCwgdGltZSB0byBmb3JtYWxpemUgdGhpcyBhbmFseXNpcyBpbnRvIGEgcmVzcG9uc2UuIEJhc2VkIG9uIHRoZSBwYXRjaCwgdGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBpbmNsdWRlIGBrdm1fcmlzY3ZfbW11X21hcGAgYW5kLCBzaW5jZSBpdCBkZWFscyB3aXRoIHBhZ2UgZmF1bHRzLCBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAgYXMgdGhlIHByaW1hcnkgZm9jdXMgc3ltYm9scy4gVGhlIGtleSBoZXJlIGlzIHRoYXQgdGhlIHBhdGNoIGltcGFjdHMgZnVuY3Rpb25hbCBjb2RlIGluIEtWTSByZWxhdGVkIHRvIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLiBXZSBoYXZlIGEgc29saWQgY2FzZSB0byBmdXp6IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxMzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVFVBTElaQVRJT04mIzM0OywKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jpc2N2X21tdV9tYXAmIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X3ZjcHVfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBidWdzIGluIFJJU0MtViBLVk0gTU1VIG1hcHBpbmcgYW5kIHBhZ2UgZmF1bHQgaGFuZGxpbmcsIGluY2x1ZGluZyB0eXBlIGZpeGVzIGZvciBmYXVsdCBhZGRyZXNzZXMgYW5kIHByb3BlciBoYW5kbGluZyBvZiAtRUVYSVNUIGVycm9ycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgS1ZNIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRVQUxJWkFUSU9OJiMzNDssCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yaXNjdl9tbXVfbWFwJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl92Y3B1X2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYnVncyBpbiBSSVNDLVYgS1ZNIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBpbmNsdWRpbmcgdHlwZSBmaXhlcyBmb3IgZmF1bHQgYWRkcmVzc2VzIGFuZCBwcm9wZXIgaGFuZGxpbmcgb2YgLUVFWElTVCBlcnJvcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTE6NDguMDA5NDI4MDMzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU3OTkwMjgzMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVFVBTElaQVRJT05cIixcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9tbXVfbWFwXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9leGl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYnVncyBpbiBSSVNDLVYgS1ZNIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBpbmNsdWRpbmcgdHlwZSBmaXhlcyBmb3IgZmF1bHQgYWRkcmVzc2VzIGFuZCBwcm9wZXIgaGFuZGxpbmcgb2YgLUVFWElTVCBlcnJvcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxMzo1MTo0OC4wMDk0MzI0NzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MTE3NjQ4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE0NzdhNTgyM2Q0Y2M2ZWE0MWI3YjZmYTdhOGYwZDJlNWExMDk0MzhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMzAgMTM6NTE6NDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbW11LmMgYi9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xcbmluZGV4IDhhMGFhNWUwZTIxNmUuLmQyYTA2YTU0YmUxNzQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbW11LmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9tbXUuY1xcbkBAIC01NDEsNyArNTQxLDcgQEAgaW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcXG4gXFx0a3ZtX3Bmbl90IGhmbjtcXG4gXFx0Ym9vbCBpc19odWdldGxiO1xcbiBcXHRib29sIHdyaXRhYmxlO1xcbi1cXHRzaG9ydCB2bWFfcGFnZXNoaWZ0O1xcbitcXHR1bnNpZ25lZCBpbnQgdm1hX3BhZ2VzaGlmdDtcXG4gXFx0Z2ZuX3QgZ2ZuID0gZ3BhIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQ7XFxuIFxcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xcbiBcXHRzdHJ1Y3Qga3ZtICprdm0gPSB2Y3B1LVxcdTAwM2Vrdm07XFxuQEAgLTY1MiwxMSArNjUyLDEzIEBAIGludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdHZtYV9wYWdlc2l6ZSwgdHJ1ZSwgdHJ1ZSwgb3V0X21hcCk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChyZXQpXFxuK1xcdGlmIChyZXQgPT0gLUVFWElTVClcXG4rXFx0XFx0cmV0ID0gMDtcXG4rXFx0ZWxzZSBpZiAocmV0KVxcbiBcXHRcXHRrdm1fZXJyKFxcXCJGYWlsZWQgdG8gbWFwIGluIEctc3RhZ2VcXFxcblxcXCIpO1xcbiBcXG4gb3V0X3VubG9jazpcXG4tXFx0a3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlKGt2bSwgcGFnZSwgcmV0IFxcdTAwMjZcXHUwMDI2IHJldCAhPSAtRUVYSVNULCB3cml0YWJsZSk7XFxuK1xcdGt2bV9yZWxlYXNlX2ZhdWx0aW5fcGFnZShrdm0sIHBhZ2UsIHJldCwgd3JpdGFibGUpO1xcbiBcXHR3cml0ZV91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlbW11X2xvY2spO1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNcXG5pbmRleCA2Yzg1MzBiOWYyOWVkLi43NmNjZWVjZWU1YWJhIDEwMDY0NFxcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNcXG5AQCAtMTcsNyArMTcsOCBAQCBzdGF0aWMgaW50IGdzdGFnZV9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4ge1xcbiBcXHRzdHJ1Y3Qga3ZtX2dzdGFnZV9tYXBwaW5nIGhvc3RfbWFwO1xcbiBcXHRzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90O1xcbi1cXHR1bnNpZ25lZCBsb25nIGh2YSwgZmF1bHRfYWRkcjtcXG4rXFx0dW5zaWduZWQgbG9uZyBodmE7XFxuK1xcdGdwYV90IGZhdWx0X2FkZHI7XFxuIFxcdGJvb2wgd3JpdGFibGU7XFxuIFxcdGdmbl90IGdmbjtcXG4gXFx0aW50IHJldDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTE6NDguNDUxNjAzNTA3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTUzNTY4NDQxMzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVFVBTElaQVRJT05cIixcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9tbXVfbWFwXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9leGl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYnVncyBpbiBSSVNDLVYgS1ZNIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBpbmNsdWRpbmcgdHlwZSBmaXhlcyBmb3IgZmF1bHQgYWRkcmVzc2VzIGFuZCBwcm9wZXIgaGFuZGxpbmcgb2YgLUVFWElTVCBlcnJvcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxNDc3YTU4MjNkNGNjNmVhNDFiN2I2ZmE3YThmMGQyZTVhMTA5NDM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMTM6NTE6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jXG5pbmRleCA4YTBhYTVlMGUyMTZlLi5kMmEwNmE1NGJlMTc0IDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbW11LmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jXG5AQCAtNTQxLDcgKzU0MSw3IEBAIGludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXG4gXHRrdm1fcGZuX3QgaGZuO1xuIFx0Ym9vbCBpc19odWdldGxiO1xuIFx0Ym9vbCB3cml0YWJsZTtcbi1cdHNob3J0IHZtYV9wYWdlc2hpZnQ7XG4rXHR1bnNpZ25lZCBpbnQgdm1hX3BhZ2VzaGlmdDtcbiBcdGdmbl90IGdmbiA9IGdwYSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVDtcbiBcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xuIFx0c3RydWN0IGt2bSAqa3ZtID0gdmNwdS1cdTAwM2Vrdm07XG5AQCAtNjUyLDExICs2NTIsMTMgQEAgaW50IGt2bV9yaXNjdl9tbXVfbWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqbWVtc2xvdCxcbiBcdFx0XHRcdFx0XHR2bWFfcGFnZXNpemUsIHRydWUsIHRydWUsIG91dF9tYXApO1xuIFx0fVxuIFxuLVx0aWYgKHJldClcbitcdGlmIChyZXQgPT0gLUVFWElTVClcbitcdFx0cmV0ID0gMDtcbitcdGVsc2UgaWYgKHJldClcbiBcdFx0a3ZtX2VycihcIkZhaWxlZCB0byBtYXAgaW4gRy1zdGFnZVxcblwiKTtcbiBcbiBvdXRfdW5sb2NrOlxuLVx0a3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlKGt2bSwgcGFnZSwgcmV0IFx1MDAyNlx1MDAyNiByZXQgIT0gLUVFWElTVCwgd3JpdGFibGUpO1xuK1x0a3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlKGt2bSwgcGFnZSwgcmV0LCB3cml0YWJsZSk7XG4gXHR3cml0ZV91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZW1tdV9sb2NrKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNcbmluZGV4IDZjODUzMGI5ZjI5ZWQuLjc2Y2NlZWNlZTVhYmEgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNcbkBAIC0xNyw3ICsxNyw4IEBAIHN0YXRpYyBpbnQgZ3N0YWdlX3BhZ2VfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLFxuIHtcbiBcdHN0cnVjdCBrdm1fZ3N0YWdlX21hcHBpbmcgaG9zdF9tYXA7XG4gXHRzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90O1xuLVx0dW5zaWduZWQgbG9uZyBodmEsIGZhdWx0X2FkZHI7XG4rXHR1bnNpZ25lZCBsb25nIGh2YTtcbitcdGdwYV90IGZhdWx0X2FkZHI7XG4gXHRib29sIHdyaXRhYmxlO1xuIFx0Z2ZuX3QgZ2ZuO1xuIFx0aW50IHJldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUxOjQ4LjQ1MTYwNjAyN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2OTk1MjA3NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSSVNDLVYgS1ZNIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYXJjaC9yaXNjdi9rdm0vbW11LmNgIGFuZCBgYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNgLiBMZXQncyBicmVhayBpdCBkb3duLiBJbiBgbW11LmNgLCBpdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzb21lIHR5cGUgY2hhbmdlcywgZnJvbSBgc2hvcnRgIHRvIGB1bnNpZ25lZCBpbnRgIGZvciBgdm1hX3BhZ2VzaGlmdGAgYW5kIHNvbWUgYWRqdXN0bWVudHMgdG8gdGhlIGVycm9yIGhhbmRsaW5nIGluIGBrdm1fcmlzY3ZfbW11X21hcGAuIFNwZWNpZmljYWxseSwgaG93IGAtRUVYSVNUYCBpcyBoYW5kbGVkLiBBbmQgYSBzdWJ0bGUgY2hhbmdlIHRvIHRoZSBga3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlYCBjYWxsIHdoaWNoIGxvb2tzIGxpa2UgaXQgY2hhbmdlcyB0aGUgY29uZGl0aW9uIHRoYXQgZ2V0cyBwYXNzZWQuIGB2Y3B1X2V4aXQuY2AgaXMgY2hhbmdpbmcgaG93IGBnc3RhZ2VfcGFnZV9mYXVsdGAgaGFuZGxlcyB0aGUgYGZhdWx0X2FkZHJgLCBjaGFuZ2luZyB0aGUgdHlwZSBmcm9tIGFuIGB1bnNpZ25lZCBsb25nYCB0byBhIGBncGFfdGAuXG5cbkZ1bmN0aW9uYWxseSwgdGhlc2UgYXJlIEtWTSBjaGFuZ2VzIHNwZWNpZmljIHRvIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgaXMgdGhpcyBmdXp6YWJsZT8gQWJzb2x1dGVseSwgaXQncyBLVk0gY29kZS4gQSB2dWxuZXJhYmlsaXR5IGluIEtWTSBjb3VsZCBiZSByZWFsbHkgYmFkLiBOb3csIGNhbiBzeXprYWxsZXIgYWN0dWFsbHkgZnV6eiBpdD8gRG9lcyBzeXprYWxsZXIgc3VwcG9ydCBSSVNDLVYgS1ZNPyBXZWxsLCBpdCBkZXBlbmRzLiBJZiBpdCdzIHJ1bm5pbmcgb24gUklTQy1WLCB5ZXMuIEV2ZW4gaWYgbm90LCB3ZSBjYW4gY2VydGFpbmx5IG1hcmsgaXQgYXMgd29ydGggZnV6emluZy5cblxuVGhlIHByb21wdCBpcyBjbGVhcjogSWYgaXQgdG91Y2hlcyBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGFyZSByZWFjaGFibGUsIGl0J3Mgd29ydGggY2hlY2tpbmcuIEFuZCBoZXJlIHdlIGFyZS4gSXQgbW9kaWZpZXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEtWTSBjb2RlLiBUaGF0IHNlZW1zIGxpa2UgYSBjbGVhciB5ZXMuIFNvLCB0aGUgbmV4dCBzdGVwIGlzIHRvIGNoZWNrIEtjb25maWcgdG8gdmVyaWZ5IEtWTSBpcyBlbmFibGVkIG9uIFJJU0MtVi4gTG9va2luZyBmb3IgYSBgQ09ORklHX0tWTWAgaW4gYGFyY2gvcmlzY3Yva3ZtL0tjb25maWdgIHNlZW1zIGxpa2UgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUxNywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUxOjU1LjE1MTEyOTk4NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk4MjM3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxMzo1MTo1NS4yMjIxMTY5MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMDQ2NDcyODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKktjb25maWcgRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGNvbnRyb2xsaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBLVk0gd2l0aGluIHRoZSBSSVNDLVYgYXJjaGl0ZWN0dXJlLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZS4gSSdsbCBzdGFydCBieSBjaGVja2luZyBgYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ2AuIFRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlc2UgS1ZNIGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCB3aGF0IGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQuIEkgZXhwZWN0IHRoaXMgZmlsZSB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCBvdGhlciBmZWF0dXJlcyBvciBzZXR0aW5ncyB3aXRoaW4gdGhlIGtlcm5lbCBtdXN0IGJlIHByZXNlbnQgZm9yIEtWTSBzdXBwb3J0IHRvIGJlIGF2YWlsYWJsZSBvbiBSSVNDLVYuIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIHByb2JhYmx5IHBvaW50IG1lIHRvIHJlbGF0ZWQgS2NvbmZpZyBmaWxlcyBhbmQgb3RoZXIgYXJlYXMgdG8gY29uZmlybSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxMzo1MTo1OC4yMjY3NjU5MzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBLVk0gY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRzb3VyY2UgXFxcInZpcnQva3ZtL0tjb25maWdcXFwiXFxuICAgNzpcXHRcXG4gICA4OlxcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cXG4gICA5OlxcdFxcdGJvb2wgXFxcIlZpcnR1YWxpemF0aW9uXFxcIlxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGdldCB0byBzZWUgb3B0aW9ucyBmb3IgdXNpbmcgeW91ciBMaW51eCBob3N0IHRvIHJ1blxcbiAgMTI6XFx0XFx0ICBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBpbnNpZGUgdmlydHVhbCBtYWNoaW5lcyAoZ3Vlc3RzKS5cXG4gIDEzOlxcdFxcdCAgVGhpcyBvcHRpb24gYWxvbmUgZG9lcyBub3QgYWRkIGFueSBrZXJuZWwgY29kZS5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0XFx0ICBJZiB5b3Ugc2F5IE4sIGFsbCBvcHRpb25zIGluIHRoaXMgc3VibWVudSB3aWxsIGJlIHNraXBwZWQgYW5kXFxuICAxNjpcXHRcXHQgIGRpc2FibGVkLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBWSVJUVUFMSVpBVElPTlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgS1ZNXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbiAgMjI6XFx0XFx0ZGVwZW5kcyBvbiBSSVNDVl9TQkkgXFx1MDAyNlxcdTAwMjYgTU1VXFxuICAyMzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fSVJRQ0hJUFxcbiAgMjQ6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUV9ST1VUSU5HXFxuICAyNTpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fTVNJXFxuICAyNjpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fUkVBRE9OTFlfTUVNXFxuICAyNzpcXHRcXHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19BQ1FfUkVMXFxuICAyODpcXHRcXHRzZWxlY3QgS1ZNX0NPTU1PTlxcbiAgMjk6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxcbiAgMzA6XFx0XFx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXFxuICAzMTpcXHRcXHRzZWxlY3QgS1ZNX01NSU9cXG4gIDMyOlxcdFxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbiAgMzM6XFx0XFx0c2VsZWN0IFNDSEVEX0lORk9cXG4gIDM0OlxcdFxcdHNlbGVjdCBHVUVTVF9QRVJGX0VWRU5UUyBpZiBQRVJGX0VWRU5UU1xcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTdXBwb3J0IGhvc3RpbmcgdmlydHVhbGl6ZWQgZ3Vlc3QgbWFjaGluZXMuXFxuICAzNzpcXHRcXG4gIDM4OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDM5OlxcdFxcbiAgNDA6XFx0ZW5kaWYgIyBWSVJUVUFMSVpBVElPTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxMzo1MTo1OC4yMjY4MjIwMzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjUxOTE4MzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkFuYWx5c2lzIG9mIFJJU0MtViBLVk0gTU1VIE1hcHBpbmcqKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBhIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgVW5pdCAoTU1VKSBpbnRlcmFjdGlvbi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGNlbnRlcnMgb24gYSBmZXcga2V5IGRlcGVuZGVuY2llczogYFZJUlRVQUxJWkFUSU9OYCwgYEtWTWAsIGBSSVNDVl9TQklgLCBhbmQgY3J1Y2lhbGx5LCB0aGUgYE1NVWAgaXRzZWxmLiBUaG9zZSBhcmUgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBwcm9wZXIgdmlydHVhbCBtYWNoaW5lIHNldHVwLCBvZiBjb3Vyc2UuIFdlIGFyZSBkaWdnaW5nIGludG8gdGhhdCBNTVUgZnVuY3Rpb25hbGl0eS5cblxuVGhlIG1lYXQgb2YgdGhlIG1hdHRlciBhcHBlYXJzIHRvIGJlIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBga3ZtX3Jpc2N2X21tdV9tYXBgIGFuZCBgZ3N0YWdlX3BhZ2VfZmF1bHRgIGZ1bmN0aW9ucy4gQ2xlYXJseSwgd2UncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBjaGFuZ2VzIHRvIGhvdyBndWVzdCBwaHlzaWNhbCBhZGRyZXNzZXMgYXJlIG1hcHBlZCB0byBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcywgcG9zc2libHkgcmVsYXRlZCB0byBndWVzdCBzdGFnZSBwYWdlIHRhYmxlcy4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIGBrdm1fcmlzY3ZfbW11X21hcGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIHdvdWxkIGxpbWl0IGl0cyB2aXNpYmlsaXR5IGFuZCBzY29wZS4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IG1vZHVsYXIgdGhpcyBtb2RpZmljYXRpb24gaXMsIGFuZCBpZiBpdCBjb3VsZCBwb3RlbnRpYWxseSBoYXZlIGJyb2FkZXIgcmFtaWZpY2F0aW9ucy4gVGhlIGNvZGUgdG8gZXhhbWluZSBpcyBgYXJjaC9yaXNjdi9rdm0vbW11LmNgLiBUaW1lIHRvIHNlZSB3aGF0IHRoYXQgYG1tdS5jYCBmaWxlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjAyLjQ3ODc0NDE2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDQ2MTI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfbW11X21hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9tbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9tbXUuYz00NjU9c3RhdGljIGJvb2wga3ZtX3Jpc2N2X21tdV9kaXJ0eV9sb2dfd3JpdGVfZmF1bHRfZmFzdChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy01MzUtXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NTM2OmludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTM3LVxcdFxcdCAgICAgIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyBodmEsIGJvb2wgaXNfd3JpdGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjAyLjUzMzIwODk5NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1ODQzMjQ3MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqTU1VIE1hcHBpbmcgQ29uY2VybnMgaW4gS1ZNL1JJU0MtVioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBrdm1fcmlzY3ZfbW11X21hcGAgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0J3MgKm5vdCogc3RhdGljLiBUaGlzIGhhcyBpbW1lZGlhdGUgaW1wbGljYXRpb25zIGZvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIGFuZCB0aGUgb3ZlcmFsbCBjb21wbGV4aXR5IG9mIG1lbW9yeSBtYW5hZ2VtZW50LiBJIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgYXMgSSBkaWcgZGVlcGVyLiBNeSB0aG91Z2h0cyBpbW1lZGlhdGVseSB0dXJuIHRvIHRoZSBwb3NzaWJpbGl0eSBvZiBjb25mbGljdHMgb3IgaW5jb25zaXN0ZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBsaWZlY3ljbGUgYW5kIGFueSBhc3NvY2lhdGVkIGxvY2tpbmcgdGhhdCdzIGluIHBsYWNlLlxuXG5UaGVuLCB0aGUgb3RoZXIgdGhpbmcgdGhhdCBJ4oCZbSBub3cgdGhpbmtpbmcgb2YgaXMgdGhlIGBnc3RhZ2VfcGFnZV9mYXVsdGAgZnVuY3Rpb24uIElzIGl0IHdvcmtpbmcgaW4gY29uanVuY3Rpb24gd2l0aCBga3ZtX3Jpc2N2X21tdV9tYXBgPyBEb2VzIGl0IGNhbGwgaXQgZGlyZWN0bHkgb3IgYXJlIHRoZXkgcmVsYXRlZCBzb21lIG90aGVyIHdheT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW50ZXJhY3Rpb25zLiBBcmUgcGFnZSBmYXVsdHMgaGFuZGxlZCBkaXJlY3RseSBieSB0aGUgTU1VIG1hcHBpbmcgcHJvY2Vzcywgb3IgaXMgdGhlcmUgYSBzZXBhcmF0ZSByb3V0aW5lPyBLbm93aW5nIGhvdyB0aGV5IHdvcmsgdG9nZXRoZXIgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtJ3Mgcm9idXN0bmVzcyBhbmQgcGVyZm9ybWFuY2UuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyBhbmQgdW5kZXJzdGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBndWVzdCdzIHZpZXcgb2YgbWVtb3J5IGlzIHRyYW5zbGF0ZWQgdG8gdGhlIGhvc3QncywgYW5kIGhvdyBwYWdlIGZhdWx0cyBwbGF5IGludG8gdGhhdCB0cmFuc2xhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcyMSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjA2LjExNzUzNTE4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg0MzE4MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3N0YWdlX3BhZ2VfZmF1bHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtMTQtXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6MTU6c3RhdGljIGludCBnc3RhZ2VfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtMTYtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qga3ZtX2NwdV90cmFwICp0cmFwKVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM9MjA3PWludCBrdm1fcmlzY3ZfdmNwdV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTI1NS1cXHRcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5ndWVzdF9jb250ZXh0LmhzdGF0dXMgXFx1MDAyNiBIU1RBVFVTX1NQVilcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYzoyNTY6XFx0XFx0XFx0cmV0ID0gZ3N0YWdlX3BhZ2VfZmF1bHQodmNwdSwgcnVuLCB0cmFwKTtcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy0yNTctXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjA2LjIwNTk3NDIyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTM3OTE0NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUklTQy1WIEtWTSBQYWdlIEZhdWx0IEhhbmRsaW5nKipcblxuT2theSwgc28gYGdzdGFnZV9wYWdlX2ZhdWx0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgaXQncyBsaWtlbHkgbm90IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbi4gVGhlcmVmb3JlLCBteSBhdHRlbnRpb24gbmF0dXJhbGx5IHNoaWZ0cyB0byB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiBga3ZtX3Jpc2N2X21tdV9tYXBgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoZSBtYXBwaW5nIHByb2Nlc3MuIEhvd2V2ZXIsIHdhaXQgYSBtaW51dGUuLi4gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgcGllY2VzIG9mIHRoZSBwdXp6bGUuIEl0IGFwcGVhcnMgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGNhbGxzIGBnc3RhZ2VfcGFnZV9mYXVsdGAuIFRoaXMgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAgKmlzKiBub24tc3RhdGljLCB3aGljaCBtZWFucyBpdCBpcyBhbiBhY2Nlc3MgcG9pbnQgdG8gdGhlIHBhZ2UgZmF1bHQgaGFuZGxpbmcuIElzIGBrdm1fcmlzY3ZfdmNwdV9leGl0YCBhIGJldHRlciBzeW1ib2wgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGluc3RlYWQ/IEkgc2hvdWxkIHByb2JhYmx5IHN0YXJ0IGV4YW1pbmluZyB0aGF0IGZ1bmN0aW9uIG1vcmUgY2xvc2VseSB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZSBwYWdlIGZhdWx0IGhhbmRsaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzIzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjEwLjc0Mzg5MTYwNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc5NjUzNzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jpc2N2X3ZjcHVfZXhpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYz0xOTI9c3RhdGljIGlubGluZSBpbnQgdmNwdV9yZWRpcmVjdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fY3B1X3RyYXAgKnRyYXApXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy0yMDYtICovXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM6MjA3OmludCBrdm1fcmlzY3ZfdmNwdV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy0yMDgtXFx0XFx0XFx0c3RydWN0IGt2bV9jcHVfdHJhcCAqdHJhcClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTI6MTAuODIxODYwODQ4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzI4Njc4MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyBLVk0vUklTQy1WIFN5bWJvbHMqKlxuXG5SaWdodCwgc28gYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGlzbid0IHN0YXRpYywgdGhhdCdzIGdvb2QgdG8ga25vdyBvZmYgdGhlIGJhdC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSB3aGVyZSBlbHNlIHdlIG1pZ2h0IGZpbmQgaXQuXG5cbk5vdywgbGV0IG1lIGNoZWNrIGludG8gYGt2bV9yaXNjdl9tbXVfbWFwYC4gSXMgdGhpcyBmdW5jdGlvbiBleHBvcnRlZCBhcyB3ZWxsLCBvciBpcyBpdCBpc29sYXRlZCB0byB0aGlzIG1vZHVsZT8gSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQncyB2aXNpYmxlIGluIHRoZSBsYXJnZXIgS1ZNIGVjb3N5c3RlbS4gS25vd2luZyBpdHMgc2NvcGUgd2lsbCBpbmZsdWVuY2UgaG93IEkgYXBwcm9hY2ggYW55IHBvdGVudGlhbCBtb2RpZmljYXRpb25zIG9yIGludGVncmF0aW9ucyBpbnZvbHZpbmcgdGhhdCBmdW5jdGlvbi4gSSdtIHRoaW5raW5nIGFib3V0IGRlcGVuZGVuY3kgdHJhY2luZyBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cywgb2YgY291cnNlLiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gdXNlIHRoZSBLVk0gc291cmNlIGNvcnJlY3RseSB0byB0cm91Ymxlc2hvb3QgcHJvYmxlbXMsIGFuZCBwb3RlbnRpYWxseSBpbnRlZ3JhdGUgd2l0aCBvdGhlciBhcmNoaXRlY3R1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODM1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTI6MTQuNDk0NzMxMDUyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTQ1NzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fcmlzY3ZfbW11X21hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3Jpc2N2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9rdm0vbW11LmM9NDY1PXN0YXRpYyBib29sIGt2bV9yaXNjdl9tbXVfZGlydHlfbG9nX3dyaXRlX2ZhdWx0X2Zhc3Qoc3RydWN0IGt2bSAqa3ZtLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTM1LVxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jOjUzNjppbnQga3ZtX3Jpc2N2X21tdV9tYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICptZW1zbG90LFxcbmFyY2gvcmlzY3Yva3ZtL21tdS5jLTUzNy1cXHRcXHQgICAgICBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgaHZhLCBib29sIGlzX3dyaXRlLFxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmM9MTU9c3RhdGljIGludCBnc3RhZ2VfcGFnZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4sXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy02NS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYzo2NjpcXHRyZXQgPSBrdm1fcmlzY3ZfbW11X21hcCh2Y3B1LCBtZW1zbG90LCBmYXVsdF9hZGRyLCBodmEsXFxuYXJjaC9yaXNjdi9rdm0vdmNwdV9leGl0LmMtNjctXFx0XFx0XFx0XFx0KHRyYXAtXFx1MDAzZXNjYXVzZSA9PSBFWENfU1RPUkVfR1VFU1RfUEFHRV9GQVVMVCkgPyB0cnVlIDogZmFsc2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjE0LjU4NjE5MzcyMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODA5Nzc2MTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgSW5xdWlyeSBpbnRvIFJJU0MtViBLVk0gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZSBSSVNDLVYgS1ZNIHN0dWZmIGlzIHNldCB1cC4gSSBzZWUgdGhhdCBga3ZtX3Jpc2N2X21tdV9tYXBgIGlzIHVzZWQgd2l0aGluIGBnc3RhZ2VfcGFnZV9mYXVsdGAsIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoYXQsIGFuZCBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAsIHNlZW0gbGlrZSBzb2xpZCBmb2N1cyBzeW1ib2xzLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEluaXRpYWxseSwgSSB0aG91Z2h0IEknZCBuZWVkIGJvdGggYFZJUlRVQUxJWkFUSU9OYCBhbmQgYEtWTWAuIEJ1dCB3YWl0LCBkb2Vzbid0IGBLVk1gIGxpdmUgKndpdGhpbiogYFZJUlRVQUxJWkFUSU9OYD8gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0Li4uIHJpZ2h0LCBgVklSVFVBTElaQVRJT05gIGlzIGEgbWVudWNvbmZpZyB0aGF0IGNvbnRhaW5zIGBLVk1gLiBCdXQsIGRvZXMgYEtWTWAgc2VsZWN0IGBWSVJUVUFMSVpBVElPTmAgYXV0b21hdGljYWxseT8gTm8uXG5cblNvLCBJIG5lZWQgdG8gYmUgKmV4cGxpY2l0KiBhbmQgbWFrZSBzdXJlIGBWSVJUVUFMSVpBVElPTmAgaXMgZW5hYmxlZC4gTGV0J3MgbWFrZSBzdXJlLiBPa2F5LCBsZXQncyBsb29rIGF0IGBhcmNoL3Jpc2N2L2t2bS9LY29uZmlnYDpcblxuYGBgXG5pZiBWSVJUVUFMSVpBVElPTlxuY29uZmlnIEtWTVxuYGBgXG5cbkFoLCB0aGVyZSBpdCBpcyEgYFZJUlRVQUxJWkFUSU9OYCBtdXN0IGJlIGVuYWJsZWQgdG8gZXZlbiAqc2VlKiBgS1ZNYC4gVGhlcmVmb3JlLCBib3RoIGBWSVJUVUFMSVpBVElPTmAgYW5kIGBLVk1gIGFyZSByZXF1aXJlZC4gRXhjZWxsZW50LiBOb3csIHdoYXQgZWxzZT8gYEtWTWAgZGVwZW5kcyBvbiBgUklTQ1ZfU0JJYCBhbmQgYE1NVWAuIE9rYXksIGBNTVVgIGlzIHVzdWFsbHkgZW5hYmxlZCwgc28gSSdtIG5vdCB0b28gd29ycmllZCBhYm91dCB0aGF0LiBgUklTQ1ZfU0JJYC4uLiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBtb3N0IFJJU0MtViBzZXR1cHMsIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBjb25maXJtIHRoYXQgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDI1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjIwLjM5NTk3Mzk5M1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMDExNTI5MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUklTQ1ZfU0JJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3YvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvcmlzY3YvS2NvbmZpZz0yNzg9Y29uZmlnIFJJU0NWX01fTU9ERVxcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnLTI4Ni0jIHNldCBpZiB3ZSBhcmUgcnVubmluZyBpbiBTLW1vZGUgYW5kIGNhbiB1c2UgU0JJIGNhbGxzXFxuYXJjaC9yaXNjdi9LY29uZmlnOjI4Nzpjb25maWcgUklTQ1ZfU0JJXFxuYXJjaC9yaXNjdi9LY29uZmlnLTI4OC1cXHRib29sXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWc9OTMyPWNvbmZpZyBSSVNDVl9WRUNUT1JfTUlTQUxJR05FRFxcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnLTkzOC1cXG5hcmNoL3Jpc2N2L0tjb25maWc6OTM5OmNvbmZpZyBSSVNDVl9TQklfRldGVF9ERUxFR0FURV9NSVNBTElHTkVEXFxuYXJjaC9yaXNjdi9LY29uZmlnLTk0MC1cXHRib29sIFxcXCJSZXF1ZXN0IGZpcm13YXJlIGRlbGVnYXRpb24gb2YgdW5hbGlnbmVkIGFjY2VzcyBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnPTEwNTc9c291cmNlIFxcXCJrZXJuZWwvS2NvbmZpZy5oelxcXCJcXG5hcmNoL3Jpc2N2L0tjb25maWctMTA1OC1cXG5hcmNoL3Jpc2N2L0tjb25maWc6MTA1OTpjb25maWcgUklTQ1ZfU0JJX1YwMVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMDYwLVxcdGJvb2wgXFxcIlNCSSB2MC4xIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjIxLjgxNjA5MzAzNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzg2NDA0NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBSSVNDVl9TQkkgTWFjcm8qKlxuXG5Pa2F5LCBzbyBgUklTQ1ZfU0JJYC4uLiB0aGF0J3MgbGlrZWx5IGEgaGlkZGVuIGJvb2xlYW4sIGEgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gZGlzZ3Vpc2UuIEl0J3MgcHJvYmFibHkgYmVpbmcgc2V0IGJhc2VkIG9uIHNvbWUgb3RoZXIgY29uZGl0aW9uIG9yIHNlcmllcyBvZiBjb25kaXRpb25zIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0uIFRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0J3MgZHJpdmluZyB0aGlzPyBJIG5lZWQgdG8gdHJhY2UgYmFjayBhbmQgZmluZCB0aGUgZGVwZW5kZW5jaWVzLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0J3MgcHVsbGluZyB0aGUgc3RyaW5ncyB0aGF0IHNldCB0aGlzIHBhcnRpY3VsYXIgbWFjcm8uIFRoaXMgaXNuJ3Qgd2hlcmUgdGhlIGludGVyZXN0aW5nIGxvZ2ljIGlzOyBpdCdzIGp1c3QgYSBnYXRlLCBzbyBsZXQncyBmaW5kIHRoZSBsZXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM0NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjI1LjYwMjUwMDExNFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI3MjY2NTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBSSVNDVl9TQklcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9LY29uZmlnPTExODE9Y29uZmlnIFJJU0NWX1VTRVJfQ0ZJXFxuLS1cXG5hcmNoL3Jpc2N2L0tjb25maWctMTE4Ni1cXHRkZXBlbmRzIG9uIFJJU0NWX0FMVEVSTkFUSVZFXFxuYXJjaC9yaXNjdi9LY29uZmlnOjExODc6XFx0c2VsZWN0IFJJU0NWX1NCSVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0xMTg4LVxcdHNlbGVjdCBBUkNIX0hBU19VU0VSX1NIQURPV19TVEFDS1xcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnLnNvY3M9OTM9Y29uZmlnIEFSQ0hfVklSVFxcbi0tXFxuYXJjaC9yaXNjdi9LY29uZmlnLnNvY3MtMTAxLVxcdHNlbGVjdCBQTV9HRU5FUklDX0RPTUFJTlNfT0YgaWYgUE0gXFx1MDAyNlxcdTAwMjYgT0ZcXG5hcmNoL3Jpc2N2L0tjb25maWcuc29jczoxMDI6XFx0c2VsZWN0IFJJU0NWX1NCSV9DUFVJRExFIGlmIENQVV9JRExFIFxcdTAwMjZcXHUwMDI2IFJJU0NWX1NCSVxcbmFyY2gvcmlzY3YvS2NvbmZpZy5zb2NzLTEwMy1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjI2LjAyOTc3MzUwMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjc0Njc4NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJJU0MtViBTQkkgQ29uZmlndXJhdGlvbiBDb25mdXNpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBSSVNDVl9TQklgIHRoaW5nIGFuZCwgaG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0ICppcyogdGhpcyBleGFjdGx5PyBMZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gdGhlIGxvb2tzIG9mIGl0OiBgUklTQ1ZfU0JJYCBpcyBhIGJvb2xlYW4sIHRoYXQncyBzdHJhaWdodGZvcndhcmQuIEl0J3MgZGVwZW5kZW50IG9uIG5vdCBydW5uaW5nIGluIG1hY2hpbmUgbW9kZSwgd2hpY2ggbWFrZXMgc2Vuc2U7IFNCSSBpcyB1c3VhbGx5IGZvciBzdXBlcnZpc29yIG9yIHVzZXIgbW9kZSBpbnRlcmZhY2VzLiBBbmQgdGhlIGRlZmF1bHQgaXMgZW5hYmxlZD8gQWxyaWdodCwgZ29vZCB0byBrbm93LiBCdXQsIEkgbmVlZCBtb3JlIGNvbnRleHQuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGluIGBhcmNoL3Jpc2N2L0tjb25maWdgIHRvIHNlZSB0aGUgZnVsbGVyIHBpY3R1cmUuIEkgYmV0IGl0IHNwZWxscyBvdXQgcHJlY2lzZWx5IHdoYXQgdGhlIHJhbWlmaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgYXJlLiBJIGtub3cgd2hlcmUgdG8gbG9vay4gTGV0J3Mgc2VlIHdoYXQgdGhlIGJyb2FkZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHNheSBhYm91dCBgUklTQ1ZfU0JJYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc1NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjI5LjMwNDQ1NTI0MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9yaXNjdi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI4MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI4MDpcXHRcXHRkZXBlbmRzIG9uICFNTVVcXG4gMjgxOlxcdFxcdGRlZmF1bHQgeVxcbiAyODI6XFx0XFx0aGVscFxcbiAyODM6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gcnVuIHRoZSBrZXJuZWwgaW4gTS1tb2RlLFxcbiAyODQ6XFx0XFx0ICB3aXRob3V0IHRoZSBhc3Npc3RhbmNlIG9mIGFueSBvdGhlciBmaXJtd2FyZS5cXG4gMjg1OlxcdFxcbiAyODY6XFx0IyBzZXQgaWYgd2UgYXJlIHJ1bm5pbmcgaW4gUy1tb2RlIGFuZCBjYW4gdXNlIFNCSSBjYWxsc1xcbiAyODc6XFx0Y29uZmlnIFJJU0NWX1NCSVxcbiAyODg6XFx0XFx0Ym9vbFxcbiAyODk6XFx0XFx0ZGVwZW5kcyBvbiAhUklTQ1ZfTV9NT0RFXFxuIDI5MDpcXHRcXHRkZWZhdWx0IHlcXG4gMjkxOlxcdFxcbiAyOTI6XFx0Y29uZmlnIE1NVVxcbiAyOTM6XFx0XFx0Ym9vbCBcXFwiTU1VLWJhc2VkIFBhZ2VkIE1lbW9yeSBNYW5hZ2VtZW50IFN1cHBvcnRcXFwiXFxuIDI5NDpcXHRcXHRkZWZhdWx0IHlcXG4gMjk1OlxcdFxcdGhlbHBcXG4gMjk2OlxcdFxcdCAgU2VsZWN0IGlmIHlvdSB3YW50IE1NVS1iYXNlZCB2aXJ0dWFsaXNlZCBhZGRyZXNzaW5nIHNwYWNlXFxuIDI5NzpcXHRcXHQgIHN1cHBvcnQgYnkgcGFnZWQgbWVtb3J5IG1hbmFnZW1lbnQuIElmIHVuc3VyZSwgc2F5ICdZJy5cXG4gMjk4OlxcdFxcbiAyOTk6XFx0Y29uZmlnIEtBU0FOX1NIQURPV19PRkZTRVRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTI6MjkuMzA0NTkyMDYyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1MDUzODAxODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggUmV2aWV3IGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gdGhlIGBSSVNDVl9TQklgIGJlaW5nIGVuYWJsZWQgYnkgZGVmYXVsdCB3aGVuIG5vdCBpbiBgUklTQ1ZfTV9NT0RFYCBtYWtlcyBzZW5zZS4gV2l0aCB0aGlzIGluIG1pbmQsIHRoZSByZXF1aXJlbWVudHMgYm9pbCBkb3duIHRvIGBWSVJUVUFMSVpBVElPTmAgYW5kIGBLVk1gIGJlaW5nIGVuYWJsZWQuIExldCdzIGRlbHZlIGludG8gdGhpcyBwYXRjaCBhbmQgdW5kZXJzdGFuZCB0aGUgZGV0YWlscy5cblxuVGhlIGZpcnN0IGNoYW5nZSB1cGRhdGVzIGB2bWFfcGFnZXNoaWZ0YCBmcm9tIGBzaG9ydGAgdG8gYHVuc2lnbmVkIGludGAsIGdvb2QsIHRoYXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIGJ1ZyByZWxhdGVkIHRvIG5lZ2F0aXZlIHZhbHVlcyBvciBvdmVyZmxvdywgd2hpY2ggY291bGQgYmUgcHJvYmxlbWF0aWMuXG5cbk5leHQsIGhhbmRsaW5nIG9mIGAtRUVYSVNUYCBmcm9tIGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgaW1wcm92ZWQuICBJbnN0ZWFkIG9mIGp1c3QgcHJvcGFnYXRpbmcgdGhlIGVycm9yLCBpdCdzIGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9yIGAtRUVYSVNUYCBhbmQgdHJlYXRpbmcgaXQgYXMgYSBub24tZXJyb3IuIFRoaXMgaXMgbGlrZWx5IGZpeGluZyBhIHJlYWwgaXNzdWUsIGFuZCBpcyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kIHdoZW4gY2hlY2tpbmcgaWYgdGhlIHRlc3QgY2FzZXMgd29yay5cblxuVGhlIHJlbGVhc2UgbG9naWMsIGVzcGVjaWFsbHkgcmVnYXJkaW5nIHRoZSBga3ZtX3JlbGVhc2VfZmF1bHRpbl9wYWdlYCwgaGFzIGJlZW4gdHdlYWtlZC4gVGhpcyBuZWVkcyBtb3JlIGF0dGVudGlvbiBkdXJpbmcgcmV2aWV3LCBidXQgdGhlIGZpeCBzZWVtcyBzdHJhaWdodGZvcndhcmQuXG5cblRoZSBjcnVjaWFsIGZpeCBpbnZvbHZlcyB0aGUgYGZhdWx0X2FkZHJgIHR5cGUuIENoYW5naW5nIGl0IGZyb20gYHVuc2lnbmVkIGxvbmdgIHRvIGBncGFfdGAgKHdoaWNoIGlzIGEgYHU2NGApIG9uIDMyLWJpdCBzeXN0ZW1zIGlzIGNsZWFybHkgaW1wb3J0YW50LiBXZSBjYW4gbm93IGJlIGFzc3VyZWQgdGhhdCBgZmF1bHRfYWRkcmAgaXMgaGFuZGxlZCBjb3JyZWN0bHkuXG5cbkdpdmVuIHRoZXNlIGZpeGVzLCB0aGlzIHBhdGNoIGxvb2tzIGZ1bmN0aW9uYWwgYW5kIGlzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXG5cbk15IGZvY3VzIHdpbGwgYmUgb24gdGhlIGBrdm1fcmlzY3ZfbW11X21hcGAgYW5kIGBrdm1fcmlzY3ZfdmNwdV9leGl0YCBzeW1ib2xzLCBlc3BlY2lhbGx5IHdpdGggYFZJUlRVQUxJWkFUSU9OYCBhbmQgYEtWTWAgZW5hYmxlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGZ1enppbmcgdGhpcyBzZXR1cC5cblxuTm93LCBiZWZvcmUgSSBzdGFydCwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBga3ZtX3Jpc2N2X3ZjcHVfZXhpdGAgaXMgdGhlIGJlc3QgZW50cnkgcG9pbnQgZm9yIHRoZSBmdXp6ZXIuIEl0IGhhbmRsZXMgYWxsIGV4aXRzLCBzbyBpdCBzZWVtcyBsaWtlIGEgZ2VuZXJhbCBjaG9pY2UuIElzIHRoZXJlIGEgbW9yZSBzcGVjaWZpYyBlbnRyeSBwb2ludD8gYGt2bV9yaXNjdl9tbXVfbWFwYCBpcyBub3QgZXhwb3J0ZWQsIHNvIGl0IGlzIHByb2JhYmx5IGdsb2JhbCwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSBjYWxsZWQgbGVzcyBvZnRlbi5cblxuTGV0J3MgZG91YmxlIGNoZWNrIGlmIGBrdm1fcmlzY3ZfdmNwdV9leGl0YCBpcyB0aGUgb25seSBjYWxsZXIgb2YgYGdzdGFnZV9wYWdlX2ZhdWx0YCwgc2luY2UgdGhhdCB3b3VsZCBtYWtlIGl0IGEgZ29vZCBzdGFydGluZyBwb2ludC4gWWVzLCBpdCBpcyB0aGUgb25seSBjYWxsZXIhICBUaGVyZWZvcmUsIGBrdm1fcmlzY3ZfdmNwdV9leGl0YCBzZWVtcyB0byBiZSBhIHNvbGlkIGNob2ljZS4gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciBjYWxsZXJzIG9mIGBrdm1fcmlzY3ZfbW11X21hcGAgdG8gc2VlIHdoYXQgSSBjYW4gaG9vaywgYnV0IHRoaXMgc2VlbXMgbGlrZSB0aGUgYmVzdCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODI5NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDEzOjUyOjM3LjgwOTk3NDI4OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEyMTI5OTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl9tbXVfbWFwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvcmlzY3Yva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9tbXUuYz00NjU9c3RhdGljIGJvb2wga3ZtX3Jpc2N2X21tdV9kaXJ0eV9sb2dfd3JpdGVfZmF1bHRfZmFzdChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9tbXUuYy01MzUtXFxuYXJjaC9yaXNjdi9rdm0vbW11LmM6NTM2OmludCBrdm1fcmlzY3ZfbW11X21hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm1lbXNsb3QsXFxuYXJjaC9yaXNjdi9rdm0vbW11LmMtNTM3LVxcdFxcdCAgICAgIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyBodmEsIGJvb2wgaXNfd3JpdGUsXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYz0xNT1zdGF0aWMgaW50IGdzdGFnZV9wYWdlX2ZhdWx0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bixcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jLTY1LVxcbmFyY2gvcmlzY3Yva3ZtL3ZjcHVfZXhpdC5jOjY2OlxcdHJldCA9IGt2bV9yaXNjdl9tbXVfbWFwKHZjcHUsIG1lbXNsb3QsIGZhdWx0X2FkZHIsIGh2YSxcXG5hcmNoL3Jpc2N2L2t2bS92Y3B1X2V4aXQuYy02Ny1cXHRcXHRcXHRcXHQodHJhcC1cXHUwMDNlc2NhdXNlID09IEVYQ19TVE9SRV9HVUVTVF9QQUdFX0ZBVUxUKSA/IHRydWUgOiBmYWxzZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTI6MzguMjIyMTEwNTU5WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NDY1NjcyODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFJJU0MtViBLVk0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgaW52ZXN0aWdhdGlvbiBwb2ludHMgZGlyZWN0bHkgdG8gYGdzdGFnZV9wYWdlX2ZhdWx0YCBhcyB0aGUgb3JpZ2luLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGBrdm1fcmlzY3ZfbW11X21hcGAgaXMgdGhlIGtleSBmdW5jdGlvbiB0byB6ZXJvIGluIG9uLiBJdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGNvbnRleHQuXG5cbk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyB0aGF0IEkndmUgbWlzc2VkLiBDaGVja2luZy4uLiBub3BlLCBgS1ZNYCBhbG9uZSBzZWVtcyB0byBiZSBzdWZmaWNpZW50OyBub3RoaW5nIGVsc2UganVtcHMgb3V0LiBFeGNlbGxlbnQuXG5cblJpZ2h0LCB0aW1lIHRvIGZvcm1hbGl6ZSB0aGlzIGFuYWx5c2lzIGludG8gYSByZXNwb25zZS4gQmFzZWQgb24gdGhlIHBhdGNoLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdvcnRoIGZ1enppbmcuIEknbGwgaW5jbHVkZSBga3ZtX3Jpc2N2X21tdV9tYXBgIGFuZCwgc2luY2UgaXQgZGVhbHMgd2l0aCBwYWdlIGZhdWx0cywgYGt2bV9yaXNjdl92Y3B1X2V4aXRgIGFzIHRoZSBwcmltYXJ5IGZvY3VzIHN5bWJvbHMuIFRoZSBrZXkgaGVyZSBpcyB0aGF0IHRoZSBwYXRjaCBpbXBhY3RzIGZ1bmN0aW9uYWwgY29kZSBpbiBLVk0gcmVsYXRlZCB0byBNTVUgbWFwcGluZyBhbmQgcGFnZSBmYXVsdCBoYW5kbGluZy4gV2UgaGF2ZSBhIHNvbGlkIGNhc2UgdG8gZnV6eiBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc0MywiT3V0cHV0VG9rZW5zIjoxMTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTM6NTI6NDMuNjY4NjgxNDE4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5NzYyMzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUVUFMSVpBVElPTlwiLFxuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jpc2N2X21tdV9tYXBcIixcbiAgICBcImt2bV9yaXNjdl92Y3B1X2V4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBidWdzIGluIFJJU0MtViBLVk0gTU1VIG1hcHBpbmcgYW5kIHBhZ2UgZmF1bHQgaGFuZGxpbmcsIGluY2x1ZGluZyB0eXBlIGZpeGVzIGZvciBmYXVsdCBhZGRyZXNzZXMgYW5kIHByb3BlciBoYW5kbGluZyBvZiAtRUVYSVNUIGVycm9ycy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgS1ZNIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVFVBTElaQVRJT05cIixcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yaXNjdl9tbXVfbWFwXCIsXG4gICAgXCJrdm1fcmlzY3ZfdmNwdV9leGl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYnVncyBpbiBSSVNDLVYgS1ZNIE1NVSBtYXBwaW5nIGFuZCBwYWdlIGZhdWx0IGhhbmRsaW5nLCBpbmNsdWRpbmcgdHlwZSBmaXhlcyBmb3IgZmF1bHQgYWRkcmVzc2VzIGFuZCBwcm9wZXIgaGFuZGxpbmcgb2YgLUVFWElTVCBlcnJvcnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIEtWTSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowsxrzf[1] Phase: Succeeded StartedAt: 2026-07-30 13:53:16 +0000 UTC FinishedAt: 2026-07-30 13:53:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 13:53:16 +0000 UTC FinishedAt: 2026-07-30 13:53:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2] Phase: Succeeded StartedAt: 2026-07-30 13:53:16 +0000 UTC FinishedAt: 2026-07-30 14:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-30 13:53:16 +0000 UTC FinishedAt: 2026-07-30 14:40:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-30 13:53:16 +0000 UTC FinishedAt: 2026-07-30 13:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-30 13:53:16 +0000 UTC FinishedAt: 2026-07-30 13:53:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsxrzf/series-workflowsxrzf-convert-artifact-1885016742/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 13:53:37 +0000 UTC FinishedAt: 2026-07-30 14:16:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 13:53:37 +0000 UTC FinishedAt: 2026-07-30 14:16:56 +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:*280a9a8c-3c73-44be-86d7-273cbcabd562,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-workflowsxrzf/series-workflowsxrzf-convert-artifact-1885016742/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": "b3b080cf-00e6-4aaa-8548-a2aba0ecf4ee", "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-workflowsxrzf/series-workflowsxrzf-build-action-2720084796/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 13:53:37 +0000 UTC FinishedAt: 2026-07-30 14:16:46 +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:*280a9a8c-3c73-44be-86d7-273cbcabd562,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-workflowsxrzf/series-workflowsxrzf-convert-artifact-1885016742/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": "b3b080cf-00e6-4aaa-8548-a2aba0ecf4ee", "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-workflowsxrzf/series-workflowsxrzf-build-action-2720084796/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 14:16:56 +0000 UTC FinishedAt: 2026-07-30 14:16:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 14:16:56 +0000 UTC FinishedAt: 2026-07-30 14:16:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 14:16:56 +0000 UTC FinishedAt: 2026-07-30 14:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 14:16:56 +0000 UTC FinishedAt: 2026-07-30 14:17:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsxrzf/series-workflowsxrzf-convert-artifact-1313090297/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 14:17:06 +0000 UTC FinishedAt: 2026-07-30 14:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 14:17:06 +0000 UTC FinishedAt: 2026-07-30 14:19:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b3b080cf-00e6-4aaa-8548-a2aba0ecf4ee,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-workflowsxrzf/series-workflowsxrzf-build-action-2720084796/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-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 14:19:12 +0000 UTC FinishedAt: 2026-07-30 14:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 14:19:12 +0000 UTC FinishedAt: 2026-07-30 14:19:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 14:19:12 +0000 UTC FinishedAt: 2026-07-30 14:37:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 14:19:12 +0000 UTC FinishedAt: 2026-07-30 14:37:23 +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:*280a9a8c-3c73-44be-86d7-273cbcabd562,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-workflowsxrzf/series-workflowsxrzf-convert-artifact-1313090297/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": "d1456ff8-8a8f-4571-9e4a-8ddfd1df9703", "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-workflowsxrzf/series-workflowsxrzf-build-action-295693525/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 14:19:12 +0000 UTC FinishedAt: 2026-07-30 14:37:13 +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:*280a9a8c-3c73-44be-86d7-273cbcabd562,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-workflowsxrzf/series-workflowsxrzf-convert-artifact-1313090297/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": "d1456ff8-8a8f-4571-9e4a-8ddfd1df9703", "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-workflowsxrzf/series-workflowsxrzf-build-action-295693525/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 14:37:23 +0000 UTC FinishedAt: 2026-07-30 14:37:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 14:37:23 +0000 UTC FinishedAt: 2026-07-30 14:37:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 14:37:23 +0000 UTC FinishedAt: 2026-07-30 14:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 14:37:23 +0000 UTC FinishedAt: 2026-07-30 14:39:04 +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:*d1456ff8-8a8f-4571-9e4a-8ddfd1df9703,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-workflowsxrzf/series-workflowsxrzf-build-action-295693525/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-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-30 14:39:14 +0000 UTC FinishedAt: 2026-07-30 14:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-30 14:39:14 +0000 UTC FinishedAt: 2026-07-30 14:40:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"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:*b3b080cf-00e6-4aaa-8548-a2aba0ecf4ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d1456ff8-8a8f-4571-9e4a-8ddfd1df9703,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-workflowsxrzf/series-workflowsxrzf-build-action-2720084796/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-workflowsxrzf/series-workflowsxrzf-build-action-295693525/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 14:39:14 +0000 UTC FinishedAt: 2026-07-30 14:39:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 14:39:14 +0000 UTC FinishedAt: 2026-07-30 14:39:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"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-workflowsxrzf/series-workflowsxrzf-convert-artifact-1911449198/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 14:39:14 +0000 UTC FinishedAt: 2026-07-30 14:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 14:39:14 +0000 UTC FinishedAt: 2026-07-30 14:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 14:39:14 +0000 UTC FinishedAt: 2026-07-30 14:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-30 14:39:24 +0000 UTC FinishedAt: 2026-07-30 14:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsxrzf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_riscv_mmu_map","kvm_riscv_vcpu_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTUALIZATION","KVM"],"series_id":"c244399b-7d6b-455a-a5d8-22e0891a5fca","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-30 14:39:24 +0000 UTC FinishedAt: 2026-07-30 14:40:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b3b080cf-00e6-4aaa-8548-a2aba0ecf4ee,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d1456ff8-8a8f-4571-9e4a-8ddfd1df9703,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-workflowsxrzf/series-workflowsxrzf-build-action-2720084796/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-workflowsxrzf/series-workflowsxrzf-build-action-295693525/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-workflowsxrzf/series-workflowsxrzf-convert-artifact-1911449198/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,}