Name: series-workflowxjjzx Phase: Succeeded StartedAt: 2026-08-04 03:07:30 +0000 UTC FinishedAt: 2026-08-04 07:12:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[0] Phase: Succeeded StartedAt: 2026-08-04 03:07:30 +0000 UTC FinishedAt: 2026-08-04 03:29:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 03:07:30 +0000 UTC FinishedAt: 2026-08-04 03:29:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5aed8f404401bfa1570cf0c3ffed7b752f568e83", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_MENU", "VHOST_NET", "VHOST_VSOCK", "VSOCKETS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5aed8f404401bfa1570cf0c3ffed7b752f568e83", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_MENU", "VHOST_NET", "VHOST_VSOCK", "VSOCKETS" ], "series_id": "0214d545-98d6-421e-bb58-71c69d756aec" }, "track": "KASAN", "fuzz": { "focus": [ "kvm", "net" ], "focus_symbols": [ "vhost_vring_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX01FTlUmIzM0OywKICAgICYjMzQ7VkhPU1RfTkVUJiMzNDssCiAgICAmIzM0O1ZIT1NUX1ZTT0NLJiMzNDssCiAgICAmIzM0O1ZTT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmhvc3RfdnJpbmdfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcmAgd2hlcmUgdGhlIG1ldGFkYXRhIGNhY2hlIGlzIG5vdCByZXNldCB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGlzIGNoYW5nZWQuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHZpYSBgdmhvc3RfdnJpbmdfaW9jdGxgIHdoaWNoIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSB2aG9zdCBkZXZpY2UgaW9jdGxzIChlLmcuIGAvZGV2L3Zob3N0LW5ldGAsIGAvZGV2L3Zob3N0LXZzb2NrYCkuIEZ1enppbmcgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aWxsIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWNlM2EwYjE0ZmI1OTJkMGNkYWIzNzliNDgyYTE2YWM1YWY5MDQ4OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDM6Mjc6MzQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92aG9zdC5jIGIvZHJpdmVycy92aG9zdC92aG9zdC5jXG5pbmRleCA0YzUyNWIzZTE2ZWFkLi43N2M5Njk5MzEwMGI1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92aG9zdC92aG9zdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcbkBAIC0yMTI2LDYgJiM0MzsyMTI2LDE0IEBAIHN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuIFx0XHRCVUcoKTtcbiBcdH1cbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSBtZXRhZGF0YSBjYWNoZSBob2xkcyB0aGUgSU9UTEIgbWFwcGluZyB0aGF0IGJhY2tlZCB0aGUgcHJldmlvdXNcbiYjNDM7XHQgKiBkZXNjL2F2YWlsL3VzZWQgYWRkcmVzc2VzIGFuZCB2cmluZyBzaXplLCBib3RoIG9mIHdoaWNoIGFyZSBiZWluZ1xuJiM0MztcdCAqIHJlcGxhY2VkIGhlcmUuICBpb3RsYl9hY2Nlc3Nfb2soKSB0YWtlcyBhIGNhY2hlIGhpdCBhcyBwcm9vZiB0aGF0IHRoZVxuJiM0MztcdCAqIHJlZ2lvbiB3YXMgdmFsaWRhdGVkLCBzbyB0aGUgc3RhbGUgZW50cmllcyBoYXZlIHRvIGdvLlxuJiM0MztcdCAqL1xuJiM0MztcdF9fdmhvc3RfdnFfbWV0YV9yZXNldCh2cSk7XG4mIzQzO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbiBcbiBcdHJldHVybiByO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9NRU5VJiMzNDssCiAgICAmIzM0O1ZIT1NUX05FVCYjMzQ7LAogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7LAogICAgJiMzNDtWU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3ZyaW5nX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgIHdoZXJlIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyBub3QgcmVzZXQgd2hlbiB0aGUgdnJpbmcgYWRkcmVzcyBpcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB2aWEgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aGljaCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdmhvc3QgZGV2aWNlIGlvY3RscyAoZS5nLiBgL2Rldi92aG9zdC1uZXRgLCBgL2Rldi92aG9zdC12c29ja2ApLiBGdXp6aW5nIGB2aG9zdF92cmluZ19pb2N0bGAgd2lsbCBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFjZTNhMGIxNGZiNTkyZDBjZGFiMzc5YjQ4MmExNmFjNWFmOTA0ODgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDAzOjI3OjM0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92aG9zdC5jIGIvZHJpdmVycy92aG9zdC92aG9zdC5jCmluZGV4IDRjNTI1YjNlMTZlYWQuLjc3Yzk2OTkzMTAwYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmMKQEAgLTIxMjYsNiAmIzQzOzIxMjYsMTQgQEAgc3RhdGljIGxvbmcgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyKHN0cnVjdCB2aG9zdF9kZXYgKmQsCiAJCUJVRygpOwogCX0KIAomIzQzOwkvKgomIzQzOwkgKiBUaGUgbWV0YWRhdGEgY2FjaGUgaG9sZHMgdGhlIElPVExCIG1hcHBpbmcgdGhhdCBiYWNrZWQgdGhlIHByZXZpb3VzCiYjNDM7CSAqIGRlc2MvYXZhaWwvdXNlZCBhZGRyZXNzZXMgYW5kIHZyaW5nIHNpemUsIGJvdGggb2Ygd2hpY2ggYXJlIGJlaW5nCiYjNDM7CSAqIHJlcGxhY2VkIGhlcmUuICBpb3RsYl9hY2Nlc3Nfb2soKSB0YWtlcyBhIGNhY2hlIGhpdCBhcyBwcm9vZiB0aGF0IHRoZQomIzQzOwkgKiByZWdpb24gd2FzIHZhbGlkYXRlZCwgc28gdGhlIHN0YWxlIGVudHJpZXMgaGF2ZSB0byBnby4KJiM0MzsJICovCiYjNDM7CV9fdmhvc3RfdnFfbWV0YV9yZXNldCh2cSk7CiYjNDM7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKIAogCXJldHVybiByOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTAxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZob3N0IERyaXZlciBQYXRjaCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgX192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKWAgd2l0aGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHIoKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZywgYW5kIGl0IGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgdmhvc3QgZHJpdmVyIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB1c2Vyc3BhY2UgdGhyb3VnaCBkZXZpY2VzIGxpa2UgYC9kZXYvdmhvc3QtbmV0YCBhbmQgYC9kZXYvdmhvc3QtdnNvY2tgLCBJ4oCZbSBhbHJlYWR5IGZsYWdnaW5nIHRoaXMgYXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEFueSBjaGFuZ2UgaW4gdGhpcyBhcmVhIGNhbiBoYXZlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4KCk5vdywgbGV0JiMzOTtzIGRpdmUgZGVlcGVyLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgLiBJcyBpdCBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gdGhlIG1vZHVsZSwgb3IgaXMgaXQgZXhwb3J0ZWQgc29tZWhvdz8gKkFoKiwgaXQmIzM5O3Mgc3RhdGljIHdpdGhpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gVGhhdCBsaW1pdHMgaXRzIGRpcmVjdCBhY2Nlc3NpYmlsaXR5LCBidXQgdGhhdCBkb2VzbiYjMzk7dCBtZWFuIGl0JiMzOTtzIHNhZmUgLSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBub3QgbmVjZXNzYXJpbHkgaW5oZXJlbnRseSBsZXNzIHZ1bG5lcmFibGUuIExldCYjMzk7cyBzZWUsIG5vdyBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdobyBjYWxscyBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCB0byBzZWUgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGUgYWRkZWQgY2FsbCB0byBgX192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKWAuIFRoaXMgbWlnaHQgcmV2ZWFsIHRoZSBhdHRhY2sgc3VyZmFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF92cmluZ19zZXRfbnVtX2FkZHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Zob3N0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92aG9zdC5jPTIwNTc9c3RhdGljIGxvbmcgdmhvc3RfdnJpbmdfc2V0X2FkZHIoc3RydWN0IHZob3N0X2RldiAqZCxcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjEwOC1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMTA5OnN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIxMTAtXHRcdFx0XHQgICAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMTQxPWxvbmcgdmhvc3RfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncClcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjE1Ny1cdCAgICBpb2N0bCA9PSBWSE9TVF9TRVRfVlJJTkdfQUREUikge1xuZHJpdmVycy92aG9zdC92aG9zdC5jOjIxNTg6XHRcdHJldHVybiB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHIoZCwgdnEsIGlvY3RsLCBhcmdwKTtcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTU5LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqVmhvc3QgUmluZyBJT0NUTCBBbmFseXNpcyoqCgpSaWdodCwgYHZob3N0X3ZyaW5nX2lvY3RsYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUuIEl0JiMzOTtzIHRoZSBvbmUgdGhhdCBjYWxscyBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYC4gQW5kIGJlY2F1c2UgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHVzZWQgYnkgYWxsIHRoZSBkaWZmZXJlbnQgdmhvc3QgZHJpdmVycyDigJMgbmV0LCB2c29jaywgc2NzaSwgYW5kIHRoZSByZXN0IOKAkyBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgc3Ryb25nIEZvY3VzU3ltYm9sLiBJdCBzZWVtcyBsaWtlIHRoaXMgYGlvY3RsYCBpcyB0aGUgY2VudHJhbCBwb2ludCBmb3IgbWFuYWdpbmcgdGhlIHZpcnR1YWwgcmluZ3MuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgY3JpdGljYWwgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGRyaXZlcnMvdmhvc3QvS2NvbmZpZ2AgdG8gc2VlIHdoYXQga25vYnMgYW5kIGxldmVycyBhcmUgYXZhaWxhYmxlLCBhbmQgaG93IHRoZXkgbWlnaHQgYWZmZWN0IHRoZSBiZWhhdmlvciBvZiBgdmhvc3RfdnJpbmdfaW9jdGxgLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFuZCBwcm9kdWN0aXZlIHBsYWNlIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSE9TVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyOmNvbmZpZyBWSE9TVF9JT1RMQlxuZHJpdmVycy92aG9zdC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy04LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjk6Y29uZmlnIFZIT1NUX1JJTkdcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0xMC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTE1LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjE2OmNvbmZpZyBWSE9TVF9UQVNLXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMTctXHRib29sXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTE5LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjIwOmNvbmZpZyBWSE9TVFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjctXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6Mjg6bWVudWNvbmZpZyBWSE9TVF9NRU5VXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjktXHRib29sIFwmIzM0O1ZIT1NUIGRyaXZlcnNcJiMzNDtcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWc9MzI9aWYgVkhPU1RfTUVOVVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTMzLVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjM0OmNvbmZpZyBWSE9TVF9ORVRcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0zNS1cdHRyaXN0YXRlIFwmIzM0O0hvc3Qga2VybmVsIGFjY2VsZXJhdG9yIGZvciB2aXJ0aW8gbmV0XCYjMzQ7XG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTQ1LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjQ2OmNvbmZpZyBWSE9TVF9TQ1NJXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNDctXHR0cmlzdGF0ZSBcJiMzNDtWSE9TVF9TQ1NJIFRDTSBmYWJyaWMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU1LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjU2OmNvbmZpZyBWSE9TVF9WU09DS1xuZHJpdmVycy92aG9zdC9LY29uZmlnLTU3LVx0dHJpc3RhdGUgXCYjMzQ7dmhvc3QgdmlydGlvLXZzb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy02OS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo3MDpjb25maWcgVkhPU1RfVkRQQVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTcxLVx0dHJpc3RhdGUgXCYjMzQ7Vmhvc3QgZHJpdmVyIGZvciB2RFBBLWJhc2VkIGJhY2tlbmRcJiMzNDtcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWctODItXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6ODM6Y29uZmlnIFZIT1NUX0NST1NTX0VORElBTl9MRUdBQ1lcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7Q3Jvc3MtZW5kaWFuIHN1cHBvcnQgZm9yIHZob3N0XCYjMzQ7XG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTk3LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjk4OmNvbmZpZyBWSE9TVF9FTkFCTEVfRk9SS19PV05FUl9DT05UUk9MXG5kcml2ZXJzL3Zob3N0L0tjb25maWctOTktXHRib29sIFwmIzM0O0VuYWJsZSBWSE9TVF9FTkFCTEVfRk9SS19PV05FUl9DT05UUk9MXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgzOQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgVmlydHVhbCBIb3N0IEFyY2hpdGVjdHVyZSoqCgpPa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGBWSE9TVGAuIFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgYnVpbGRpbmcgYmxvY2suIEJ1dCBpdCBhcHBlYXJzIHRoYXQgc3BlY2lmaWMgdmlydHVhbGl6ZWQgZnVuY3Rpb25hbGl0aWVzIGFyZSBjaG9zZW4gdmlhIG1vcmUgc3BlY2lhbGl6ZWQgb3B0aW9ucy4gUmlnaHQsIHNvIGBWSE9TVGAgaXMgdGhlIGZvdW5kYXRpb24sIGFuZCB0aGVuIHdlIGhhdmUgdGhlc2Ugc3BlY2lmaWMgZmxhdm9ycyBsaWtlIGBWSE9TVF9ORVRgIGFuZCBgVkhPU1RfVlNPQ0tgLiBNYWtlcyBzZW5zZSwgZm9yIG1vZHVsYXJpdHkuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSBob3cgYFZIT1NUX05FVGAgYW5kIGBWSE9TVF9WU09DS2AgdGllIGludG8gdGhpcyBvdmVyYWxsIHBpY3R1cmUgYW5kIHdoYXQgdGhleSBicmluZyB0byB0aGUgdGFibGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzcGVjaWZpY3MgaW50ZWdyYXRlIHdpdGggdGhhdCBjZW50cmFsIGBWSE9TVGAgY29uc3RydWN0LiBUaGlzIGFwcHJvYWNoIGlzIGNvbW1vbiwgYW5kIEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3MgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBWSE9TVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWc9OT1jb25maWcgVkhPU1RfUklOR1xuZHJpdmVycy92aG9zdC9LY29uZmlnLTEwLVx0dHJpc3RhdGVcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoxMTpcdHNlbGVjdCBWSE9TVF9JT1RMQlxuZHJpdmVycy92aG9zdC9LY29uZmlnLTEyLVx0aGVscFxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZz0yMD1jb25maWcgVkhPU1RcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6MjI6XHRzZWxlY3QgVkhPU1RfSU9UTEJcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyMzpcdHNlbGVjdCBWSE9TVF9UQVNLXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjQtXHRoZWxwXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnPTM0PWNvbmZpZyBWSE9TVF9ORVRcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMzYtXHRkZXBlbmRzIG9uIE5FVCBcdTAwMjZcdTAwMjYgRVZFTlRGRCBcdTAwMjZcdTAwMjYgKFRVTiB8fCAhVFVOKSBcdTAwMjZcdTAwMjYgKFRBUCB8fCAhVEFQKVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjM3Olx0c2VsZWN0IFZIT1NUXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMzgtXHRoZWxwXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnPTQ2PWNvbmZpZyBWSE9TVF9TQ1NJXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTQ4LVx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRSBcdTAwMjZcdTAwMjYgRVZFTlRGRFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjQ5Olx0c2VsZWN0IFZIT1NUXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTAtXHRzZWxlY3QgU0dfUE9PTFxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZz01Nj1jb25maWcgVkhPU1RfVlNPQ0tcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTgtXHRkZXBlbmRzIG9uIFZTT0NLRVRTIFx1MDAyNlx1MDAyNiBFVkVOVEZEXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NTk6XHRzZWxlY3QgVkhPU1RcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy02MC1cdHNlbGVjdCBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnPTcwPWNvbmZpZyBWSE9TVF9WRFBBXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTcyLVx0ZGVwZW5kcyBvbiBFVkVOVEZEXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NzM6XHRzZWxlY3QgVkhPU1RcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy03NC1cdHNlbGVjdCBJUlFfQllQQVNTX01BTkFHRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTUyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEtWTSBWaXJ0dWFsaXphdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCB0aGVzZSBLVk0gY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCBzZWVtcyBsaWtlIGVuYWJsaW5nIGBWSE9TVF9ORVRgIGFuZCBgVkhPU1RfVlNPQ0tgIGlzIGdlbmVyYWxseSBhIGdvb2QgaWRlYSBmb3IgcGVyZm9ybWFuY2UsIHJpZ2h0PyBUaG9zZSBhcmUgaW1wb3J0YW50IGZvciBuZXR3b3JrIGFuZCBzb2NrZXQgdmlydHVhbGl6YXRpb24sIGFuZCBJJiMzOTtkIGxpa2UgdG8gbGV2ZXJhZ2UgdGhvc2UgaW1wcm92ZW1lbnRzIHdoZXJlIHBvc3NpYmxlLiBCdXQgSSBjYW4mIzM5O3QganVzdCBlbmFibGUgdGhlbSBibGluZGx5OyBJIG5lZWQgdG8gZW5zdXJlIHRoZSBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIGlzIGluIHBsYWNlLgoKVGhlcmVmb3JlLCB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyBgVkhPU1RfTUVOVWAuIEkgbmVlZCB0aGF0IGVuYWJsZWQgdG8gZXZlbiAqc2VlKiBgVkhPU1RfTkVUYCBhbmQgYFZIT1NUX1ZTT0NLYCwgd2hpY2ggaXMgZmFpcmx5IHN0YW5kYXJkIG1lbnUtZHJpdmVuIHNldHVwLiBOb3csIGJlZm9yZSBJIGp1c3QgZmxpcCB0aGUgc3dpdGNoLCBpdCYjMzk7cyBlc3NlbnRpYWwgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llcyBvZiBgVkhPU1RfTUVOVWAuIEkgbmVlZCB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBpdCBuZWVkcyBpcyBhbHNvIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgZ2xhbmNlIGF0IHRoZSBkZXBlbmRlbmNpZXMgdG8gYXZvaWQgYW55IHVuZm9yZXNlZW4gY29uZmxpY3RzIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkhPU1RfTUVOVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWc9MjA9Y29uZmlnIFZIT1NUXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTI3LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjI4Om1lbnVjb25maWcgVkhPU1RfTUVOVVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTI5LVx0Ym9vbCBcJiMzNDtWSE9TVCBkcml2ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqVkhPU1QgTW9kdWxlIERlcGVuZGVuY3kgQXNzZXNzbWVudCoqCgpSaWdodCwgc28gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIFZIT1NULXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEZpcnN0IHRoaW5ncyBmaXJzdDogdGhlIGBWSE9TVF9NRU5VYCBvcHRpb24uIEl0IGxvb2tzIGxpa2UgYFZIT1NUX01FTlVgIGRvZXNuJiMzOTt0IGhhdmUgYW55IGRlcGVuZGVuY2llcyBsaXN0ZWQsIHdoaWNoIGlzIGEgZ29vZCBzaWduLiBUaGF0IG1lYW5zLCBhdCBsZWFzdCBpbiB0aGUgZGVwZW5kZW5jaWVzIGNvbnRleHQsIGl0JiMzOTtzIG5vdCBob2xkaW5nIGFueXRoaW5nIHVwLiBCeSBleHRlbnNpb24sIHRoYXQgc2hvdWxkIGJlIHRydWUgZm9yIGBWSE9TVF9ORVRgIGFuZCBgVkhPU1RfVlNPQ0tgIGFzIHdlbGwuIFRoYXQgaXMgYWxsIGNsZWFyIGFuZCBpbiBnb29kIG9yZGVyLiAKCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgYHZob3N0X3ZyaW5nX2lvY3RsYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBJIGFtIGdvaW5nIHRvIGZpbmQgdGhhdCBpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gSSB3aWxsIGhhdmUgdG8gc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3ZyaW5nX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92aG9zdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMTA5PXN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQwLX1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMTQxOmxvbmcgdmhvc3RfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQyLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI3OC19XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjI3OTpFWFBPUlRfU1lNQk9MX0dQTCh2aG9zdF92cmluZ19pb2N0bCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI4MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM2NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBzdW1tYXJ5IGZyb20gbXkgcGVyc3BlY3RpdmUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBWaG9zdCBJbmZyYXN0cnVjdHVyZSoqCgpSaWdodCwgc28gYHZob3N0X3ZyaW5nX2lvY3RsYCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkLCB0aGF0JiMzOTtzIGdvb2QuIE5vdywgYmVmb3JlIEkganVtcCB0b28gZGVlcCBpbnRvIHRoaXMgc3BlY2lmaWMgaXNzdWUsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB3ZSB1bmRlcnN0YW5kIHRoZSBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyB2aXJ0dWFsIHF1ZXVlIG1ldGFkYXRhLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBfX3Zob3N0X3ZxX21ldGFfcmVzZXRgIGZ1bmN0aW9uLiBJdCYjMzk7cyBjcnVjaWFsIHdlIGNvbmZpcm0gaG93IHRoYXQmIzM5O3Mgd29ya2luZy4gV2UgY2FuIHByb2JhYmx5IHRyYWNlIHRoaXMgYW5kIHRoZSBvdGhlciBjaGFuZ2VzIGJhY2t3YXJkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X192aG9zdF92cV9tZXRhX3Jlc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92aG9zdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvdmhvc3QuYz0zMzc9RVhQT1JUX1NZTUJPTF9HUEwodmhvc3RfcG9sbF9xdWV1ZSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzM4LVxuZHJpdmVycy92aG9zdC92aG9zdC5jOjMzOTpzdGF0aWMgdm9pZCBfX3Zob3N0X3ZxX21ldGFfcmVzZXQoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzQwLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MzQ3PXN0YXRpYyB2b2lkIHZob3N0X3ZxX21ldGFfcmVzZXQoc3RydWN0IHZob3N0X2RldiAqZClcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzUxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZC1cdTAwM2VudnFzOyAmIzQzOyYjNDM7aSlcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzozNTI6XHRcdF9fdmhvc3RfdnFfbWV0YV9yZXNldChkLVx1MDAzZXZxc1tpXSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzUzLX1cbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MzY3PXN0YXRpYyB2b2lkIHZob3N0X3ZxX3Jlc2V0KHN0cnVjdCB2aG9zdF9kZXYgKmRldixcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzk2LVx0dmhvc3RfdnJpbmdfY2FsbF9yZXNldChcdTAwMjZ2cS1cdTAwM2VjYWxsX2N0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6Mzk3Olx0X192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKTtcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zOTgtfVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMTA5PXN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTM0LVx0ICovXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjEzNTpcdF9fdmhvc3RfdnFfbWV0YV9yZXNldCh2cSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjEzNi1cbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjI4MT1pbnQgdmhvc3RfaW5pdF9kZXZpY2VfaW90bGIoc3RydWN0IHZob3N0X2RldiAqZClcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI5Ny1cdFx0dnEtXHUwMDNlaW90bGIgPSBuaW90bGI7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjI5ODpcdFx0X192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKTtcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMjk5LVx0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTIzCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkRpdmluZyBpbnRvIHRoZSBWaG9zdCBDb2RlKioKClJpZ2h0LCBzbyBgX192aG9zdF92cV9tZXRhX3Jlc2V0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCYjMzk7cyBsb2NhbGl6ZWQsIGFuZCBpdCYjMzk7cyBub3QgYSBwcmltYXJ5IGVudHJ5IHBvaW50LCB3aGljaCBtYWtlcyBpdCBsZXNzIGludGVyZXN0aW5nIGZyb20gYSBoaWdoLWxldmVsIHBlcnNwZWN0aXZlLiBXaXRoIHRoYXQgaW4gbWluZCwgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiBpcyBgdmhvc3RfdnJpbmdfaW9jdGxgLiBJdCBmZWVscyBsaWtlIHRoZSBiZXN0IGNhbmRpZGF0ZSBmb3IgdGhlIGNvcmUgc3ltYm9sIHdlJiMzOTtyZSBhZnRlciwgdGhlIG9uZSB0aGF0IHByb2JhYmx5IGhhbmRsZXMgdGhlIG1haW4gaW50ZXJhY3Rpb24uCgpOb3csIGJlZm9yZSBJIGdldCB0b28gaW52ZXN0ZWQsIGxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0uIElzIGB2aG9zdF92cmluZ19pb2N0bGAgYWN0dWFsbHkgY2FsbGVkIGZyb20gYSBoaWdoZXItbGV2ZWwgYGlvY3RsYCBoYW5kbGVyIGxpa2UgYHZob3N0X25ldF9pb2N0bGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBHb3R0YSB0cmFjZSB0aGUgY2FsbCBncmFwaCB0byBiZSBzdXJlIHdlIGFyZSB0cmFja2luZyB0aGUgcmlnaHQgc3BvdC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGluZGVlZCBhIG1ham9yIGVudHJ5IHBvaW50IGZvciBpb2N0bCBjYWxscyByZWxhdGVkIHRvIHRoZSB2cmluZy4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcyB0byBlbnN1cmUgdGhpcyBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF92cmluZ19pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvbmV0LmM9MTczOD1zdGF0aWMgbG9uZyB2aG9zdF9uZXRfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcbi0tXG5kcml2ZXJzL3Zob3N0L25ldC5jLTE4MjktXHRcdGlmIChyID09IC1FTk9JT0NUTENNRClcbmRyaXZlcnMvdmhvc3QvbmV0LmM6MTgzMDpcdFx0XHRyID0gdmhvc3RfdnJpbmdfaW9jdGwoXHUwMDI2bi1cdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcbmRyaXZlcnMvdmhvc3QvbmV0LmMtMTgzMS1cdFx0ZWxzZVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzNjI9dmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDMwLVx0XHRpZiAociA9PSAtRU5PSU9DVExDTUQpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDMxOlx0XHRcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcdTAwMjZ2cy1cdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0MzItXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cy1cdTAwM2VkZXYubXV0ZXgpO1xuLS1cbmRyaXZlcnMvdmhvc3QvdGVzdC5jPTMxNz1zdGF0aWMgbG9uZyB2aG9zdF90ZXN0X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4tLVxuZHJpdmVycy92aG9zdC90ZXN0LmMtMzUyLSAgICAgICAgICAgICAgICBpZiAociA9PSAtRU5PSU9DVExDTUQpXG5kcml2ZXJzL3Zob3N0L3Rlc3QuYzozNTM6ICAgICAgICAgICAgICAgICAgICAgICAgciA9IHZob3N0X3ZyaW5nX2lvY3RsKFx1MDAyNm4tXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XG5kcml2ZXJzL3Zob3N0L3Rlc3QuYy0zNTQtXHRcdHZob3N0X3Rlc3RfZmx1c2gobik7XG4tLVxuZHJpdmVycy92aG9zdC92ZHBhLmM9NjMyPXN0YXRpYyBsb25nIHZob3N0X3ZkcGFfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X3ZkcGEgKnYsIHVuc2lnbmVkIGludCBjbWQsXG4tLVxuZHJpdmVycy92aG9zdC92ZHBhLmMtNzIwLVxuZHJpdmVycy92aG9zdC92ZHBhLmM6NzIxOlx0ciA9IHZob3N0X3ZyaW5nX2lvY3RsKFx1MDAyNnYtXHUwMDNldmRldiwgY21kLCBhcmdwKTtcbmRyaXZlcnMvdmhvc3QvdmRwYS5jLTcyMi1cdGlmIChyKVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMTA5PXN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQwLX1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMTQxOmxvbmcgdmhvc3RfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQyLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI3OC19XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjI3OTpFWFBPUlRfU1lNQk9MX0dQTCh2aG9zdF92cmluZ19pb2N0bCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI4MC1cbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0Lmg9MjIyPWxvbmcgdmhvc3RfZGV2X2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKiwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0Lmg6MjIzOmxvbmcgdmhvc3RfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmgtMjI0LWxvbmcgdmhvc3Rfd29ya2VyX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYz04ODk9c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTkzNS1cdFx0aWYgKHIgPT0gLUVOT0lPQ1RMQ01EKVxuZHJpdmVycy92aG9zdC92c29jay5jOjkzNjpcdFx0XHRyID0gdmhvc3RfdnJpbmdfaW9jdGwoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTM3LVx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNDgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVmhvc3QgVnJpbmcgSW9jdGwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIGB2aG9zdF92cmluZ19pb2N0bGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyB2cmluZyBpb2N0bHMuIFRoZSBjb3JlIGlzc3VlIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGlzIHRoYXQgdGhlIG1ldGFkYXRhIGNhY2hlIGlzbiYjMzk7dCBiZWluZyByZXNldCB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGNoYW5nZXMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGJ1ZywgYW5kIHRoaXMgZml4IGFwcGVhcnMgdG8gYmUgZGlyZWN0bHkgYWRkcmVzc2luZyBpdC4gSSBjYW4gc2VlIHRoaXMgaXMgZnVuY3Rpb25hbCBhbmQsIHJlYWxpc3RpY2FsbHksIHJlYWNoYWJsZSB1bmRlciB0aGUgcmlnaHQgY2lyY3Vtc3RhbmNlcy4KClRvIHJlcHJvZHVjZSBhbmQgdGVzdCB0aGlzIGVmZmVjdGl2ZWx5LCBJJiMzOTtsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQ6IGBWSE9TVF9NRU5VYCwgYFZIT1NUX05FVGAsIGFuZCBgVkhPU1RfVlNPQ0tgLiBJJiMzOTtsbCBiZSBmb2N1c2luZyBzcGVjaWZpY2FsbHkgb24gdGhlIGB2aG9zdF92cmluZ19pb2N0bGAgc3ltYm9sIGZvciB2ZXJpZmljYXRpb24uCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgVkhPU1RfTUVOVWAgaXMgdGhlIGNvcnJlY3QgbmFtZSDigJMgeWVwLCBpdCYjMzk7cyBjb25maXJtZWQsIGBtZW51Y29uZmlnIFZIT1NUX01FTlVgLgoKTm93LCBsZXQgbWUgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IHdvdWxkIGJlIGJlbmVmaWNpYWwuIEkgc2VlIGBWSE9TVF9TQ1NJYCwgYFZIT1NUX1ZEUEFgLCBhbmQgYFZIT1NUX1RFU1RgLiBgVkhPU1RfVEVTVGAgc291bmRzIGxpa2UgaXQgbWlnaHQgYmUgYSBnb29kIG9uZSB0byBlbmFibGUgYXMgd2VsbCwgdG8gaGVscCB3aXRoIGNvbXByZWhlbnNpdmUgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkhPU1RfVEVTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MzYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZXZpZXdpbmcgdGhpczoKCioqSW52ZXN0aWdhdGluZyB0aGUgS2NvbmZpZyBQbGFjZW1lbnQgb2YgVkhPU1RfVEVTVCoqCgpPa2F5LCBob2xkIG9uIGEgbWludXRlLiBJIHdhcyBwcmV0dHkgc3VyZSBgVkhPU1RfVEVTVGAgd2FzIGEgc3RhbmRhcmQgb3B0aW9uLCBidXQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBub3Qgc2hvd2luZyB1cCBpbiB0aGUgdXN1YWwgcGxhY2UsIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgLiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgaXQmIzM5O3MgYWN0dWFsbHkgZGVmaW5lZC4gSSYjMzk7bGwgbmVlZCB0byBnbyBodW50aW5nIGZvciBpdCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBgZ3JlcGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgdG8gdHJhY2sgZG93biBpdHMgZGVmaW5pdGlvbi4gSXQmIzM5O3MgcG9zc2libGUgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBmcm9tIGVsc2V3aGVyZSwgb3IgZXZlbiBkZWZpbmVkIHdpdGhpbiBhIGRpZmZlcmVudCBkcml2ZXImIzM5O3MgS2NvbmZpZyBmaWxlIHRoYXQmIzM5O3MgcmVsYXRlZCB0byB2aG9zdCBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIGEgY29tbW9uIHRoaW5nIGluIGNvbXBsZXgga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBzbyBJIHdvbiYjMzk7dCBhc3N1bWUgaXQmIzM5O3Mgc2ltcGx5IG1pc3NpbmcuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBjYXJlZnVsbHksIGNoZWNrIGZvciBhbnkgYCNzb3VyY2VgIG9yIGBzb3VyY2VgIGRpcmVjdGl2ZXMgaW4gdGhlIHZob3N0IEtjb25maWcgdG8gc2VlIGlmIHRoZSBtaXNzaW5nIG9wdGlvbiBpcyBkZWZpbmVkIHRoZXJlLiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkhPU1RfVEVTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMzIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbXBpbGF0aW9uIENvbnRleHQgb2YgYGRyaXZlcnMvdmhvc3QvdGVzdC5jYCoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGRyaXZlcnMvdmhvc3QvdGVzdC5jYCBmaWxlIGdldHMgYnVpbHQgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgYnVpbGQgc3lzdGVtLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgdHJpZ2dlciBpdHMgY29tcGlsYXRpb24uIEkga25vdyB0aGlzIGlzbiYjMzk7dCBnb2luZyB0byBiZSBhIHNpbXBsZSAmIzM0O2dyZXAgZm9yIEtjb25maWcmIzM0OyBzZWFyY2gg4oCTIGl0JiMzOTtzIGxpa2VseSBwYXJ0IG9mIGEgbW9yZSBjb21wbGV4IGRlcGVuZGVuY3kgdHJlZSwgcG90ZW50aWFsbHkgaW52b2x2aW5nIG11bHRpcGxlIEtjb25maWcgZnJhZ21lbnRzIG9yIGV2ZW4gaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRocm91Z2ggb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSBidWlsZCBzeXN0ZW0mIzM5O3MgbG9naWMgdG8gc2VlIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGJlY2F1c2UgYSBsb3Qgb2YgdGhlc2UgdGhpbmdzIG9mdGVuIGJ1aWxkIHdoZW4gY2VydGFpbiBtb2R1bGVzIGFyZSBzZWxlY3RlZCwgd2hpY2ggdGhlbiBjYXVzZSB0aGlzIHRvIGJ1aWxkIGluZGlyZWN0bHkuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gYW5kIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzODYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSB2aG9zdCBEcml2ZXIgTWFrZWZpbGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIE15IGluc3RpbmN0IHNheXMgdG8gc3RhcnQgd2l0aCB0aGUgYGRyaXZlcnMvdmhvc3QvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhcmUgbGlrZWx5IGRlZmluZWQgZm9yIHRoZSB2aG9zdCBkcml2ZXIuIEl0JiMzOTtzIHRoZSBjZW50cmFsIGh1YiBmb3IgaG93IHRoaXMgcGFydCBvZiB0aGUga2VybmVsIG1vZHVsZSBpcyBwdXQgdG9nZXRoZXIuIFRoaXMgaXMgdGhlIHBsYWNlIHdoZXJlIEkgY2FuIGdldCBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIG1vZHVsZSYjMzk7cyBzdHJ1Y3R1cmUgYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSwgcGFydGljdWxhcmx5IGNvbmNlcm5pbmcgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJIGV4cGVjdCB0byBmaW5kIGluY2x1ZGUgcGF0aHMsIG9iamVjdCBmaWxlIGRlZmluaXRpb25zLCBhbmQgbWF5YmUgZXZlbiBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIGJhc2VkIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIG9yIGZlYXR1cmVzLiBIb3BlZnVsbHksIGl0IGlzIHdlbGwtY29tbWVudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdG9iai0kKENPTkZJR19WSE9TVF9ORVQpICYjNDM7PSB2aG9zdF9uZXQub1xuICAgMzpcdHZob3N0X25ldC15IDo9IG5ldC5vXG4gICA0Olx0XG4gICA1Olx0b2JqLSQoQ09ORklHX1ZIT1NUX1NDU0kpICYjNDM7PSB2aG9zdF9zY3NpLm9cbiAgIDY6XHR2aG9zdF9zY3NpLXkgOj0gc2NzaS5vXG4gICA3Olx0XG4gICA4Olx0b2JqLSQoQ09ORklHX1ZIT1NUX1ZTT0NLKSAmIzQzOz0gdmhvc3RfdnNvY2sub1xuICAgOTpcdHZob3N0X3Zzb2NrLXkgOj0gdnNvY2sub1xuICAxMDpcdFxuICAxMTpcdG9iai0kKENPTkZJR19WSE9TVF9SSU5HKSAmIzQzOz0gdnJpbmdoLm9cbiAgMTI6XHRcbiAgMTM6XHRvYmotJChDT05GSUdfVkhPU1RfVkRQQSkgJiM0Mzs9IHZob3N0X3ZkcGEub1xuICAxNDpcdHZob3N0X3ZkcGEteSA6PSB2ZHBhLm9cbiAgMTU6XHRcbiAgMTY6XHRvYmotJChDT05GSUdfVkhPU1QpXHQmIzQzOz0gdmhvc3Qub1xuICAxNzpcdFxuICAxODpcdG9iai0kKENPTkZJR19WSE9TVF9JT1RMQikgJiM0Mzs9IHZob3N0X2lvdGxiLm9cbiAgMTk6XHR2aG9zdF9pb3RsYi15IDo9IGlvdGxiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg5OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGxpa2UgSSB3b3VsZDoKCioqRXhhbWluaW5nIEJ1aWxkIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhpcyBwYXJ0aWN1bGFyIHRlc3QgaXNuJiMzOTt0IHJ1bm5pbmcgb3IgYmVpbmcgYnVpbHQsIG9yIG1vcmUgc3BlY2lmaWNhbGx5LCAqd2hlcmUqIHRoaXMgdGVzdCBhY3R1YWxseSBsaXZlcyBpbiB0aGUgYnVpbGQgc3RydWN0dXJlLiBGaXJzdCB0aG91Z2h0OiBtYXliZSBgdGVzdC5jYCBpc24mIzM5O3QgYnVpbHQgYnkgZGVmYXVsdCBvciBpdCYjMzk7cyBzb21ld2hlcmUgZWxzZSBpbiB0aGUgY29kZSBiYXNlLCBsaWtlbHkgYSBkaWZmZXJlbnQgYnJhbmNoLiBBIHF1aWNrIGBncmVwYCBjb25maXJtZWQgdGhhdCBgZHJpdmVycy92aG9zdC90ZXN0LmNgIGV4aXN0cy4gCgpBaCwgYW5kIGl0IGxvb2tzIGxpa2UgYHRvb2xzL3ZpcnRpby9NYWtlZmlsZWAgaGFuZGxlcyBgZHJpdmVycy92aG9zdC90ZXN0LmNgLiBOb3RlZC4KCkZvciBub3csIEkmIzM5O20gdGhpbmtpbmcgSSBvbmx5IG5lZWQgYFZIT1NUX05FVGAgYW5kIGBWSE9TVF9WU09DS2AgdG8gYmUgY29uZmlndXJlZCwgbGV0JiMzOTtzIHNlZSBhYm91dCB0aGVpciBkZXBlbmRlbmNpZXMuCgpMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgcmVxdWlyZWQgZm9yIGBWSE9TVF9ORVRgLiBUaGUgZGVwZW5kZW5jeSBleHByZXNzaW9uIGlzIGBORVQgJmFtcDsmYW1wOyBFVkVOVEZEICZhbXA7JmFtcDsgKFRVTiB8fCAhVFVOKSAmYW1wOyZhbXA7IChUQVAgfHwgIVRBUClgLiBgRVZFTlRGRGAgaXMgcHJldHR5IHN0YW5kYXJkIHRvIGhhdmUgZW5hYmxlZCwgYW5kIGBORVRgIGFsc28uICBgVFVOYCBhbmQgYFRBUGAgYXJlIGFsc28gbGlrZWx5IGVuYWJsZWQsIHNvIHRoYXQmIzM5O3Mgbm90IGEgbWFqb3IgaXNzdWUuCgpOb3cgZm9yIGBWSE9TVF9WU09DS2AuIEl0cyBkZXBlbmRlbmNpZXMgYXJlIGBWU09DS0VUUyAmYW1wOyZhbXA7IEVWRU5URkRgLiAgU28gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYFZTT0NLRVRTYCBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVlNPQ0tFVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay9LY29uZmlnLTUtXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6Njpjb25maWcgVlNPQ0tFVFNcbm5ldC92bXdfdnNvY2svS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXQgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMTgtXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6MTk6Y29uZmlnIFZTT0NLRVRTX0RJQUdcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yOC1cbm5ldC92bXdfdnNvY2svS2NvbmZpZzoyOTpjb25maWcgVlNPQ0tFVFNfTE9PUEJBQ0tcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0zMC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0cyBsb29wYmFjayB0cmFuc3BvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY0MwoJCQkJCQkJb3V0cHV0OiAxNjgKCQkJCQkJCXRob3VnaHRzOiAyNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQWRkaW5nIFZTT0NLRVRTIHRvIHRoZSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBhZGQgYFZTT0NLRVRTYCB0byB0aGUgY29uZmlndXJhdGlvbnMuIEdpdmVuIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9ucywgbmFtZWx5IGBWSE9TVF9NRU5VYCwgYFZIT1NUX05FVGAsIGFuZCBgVkhPU1RfVlNPQ0tgLCBgVlNPQ0tFVFNgIHNlZW1zIGxpa2UgYSBsb2dpY2FsIGFuZCBuZWNlc3NhcnkgYWRkaXRpb24uCgpUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZXJlJiMzOTtzIGEgYnVnIGZpeCB0aGF0IGFkZHJlc3NlcyBhIHByb2JsZW0gaW4gYHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcmAuIFNwZWNpZmljYWxseSwgdGhlIG1ldGFkYXRhIGNhY2hlIGlzbiYjMzk7dCBiZWluZyByZXNldCBwcm9wZXJseSB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGlzIGFsdGVyZWQuIE5vdywgdGhpcyBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCBmdW5jdGlvbiBpcyBhY2Nlc3NlZCB0aHJvdWdoIGB2aG9zdF92cmluZ19pb2N0bGAuIFRoaXMgaW9jdGwgaXMgaG93IHVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCB0aGUgdmhvc3QgZGV2aWNlIGlvY3RscywgbGlrZSBgL2Rldi92aG9zdC1uZXRgIGFuZCBgL2Rldi92aG9zdC12c29ja2AuIFNvLCBmdXp6aW5nIGB2aG9zdF92cmluZ19pb2N0bGAgaXMgZ29pbmcgdG8gYmUgYSBnb29kIHdheSB0byBleGVyY2lzZSBhbmQgcmV2ZWFsIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGguCgpUbyBjb25maXJtIHRoaXMsIGxldCYjMzk7cyBkbyBhIHF1aWNrIHNjYW4gb2YgdGhlIGNvZGUgdG8gbWFrZSBzdXJlIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSB2aWEgYHZob3N0X3ZyaW5nX2lvY3RsYC4gWWVzLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgdmhvc3RfdnJpbmdfaW9jdGxgIGhhbmRsZXMgYFZIT1NUX1NFVF9WUklOR19BRERSYCBhbmQgc3Vic2VxdWVudGx5IGNhbGxzIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgdmhvc3QgZHJpdmVyLCBhbmQsIHRoZXJlZm9yZSwgd2FycmFudHMgc2VyaW91cyBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9NRU5VJiMzNDssCiAgICAmIzM0O1ZIT1NUX05FVCYjMzQ7LAogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7LAogICAgJiMzNDtWU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3ZyaW5nX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgIHdoZXJlIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyBub3QgcmVzZXQgd2hlbiB0aGUgdnJpbmcgYWRkcmVzcyBpcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB2aWEgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aGljaCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdmhvc3QgZGV2aWNlIGlvY3RscyAoZS5nLiBgL2Rldi92aG9zdC1uZXRgLCBgL2Rldi92aG9zdC12c29ja2ApLiBGdXp6aW5nIGB2aG9zdF92cmluZ19pb2N0bGAgd2lsbCBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfTUVOVSYjMzQ7LAogICAgJiMzNDtWSE9TVF9ORVQmIzM0OywKICAgICYjMzQ7VkhPU1RfVlNPQ0smIzM0OywKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF92cmluZ19pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCB3aGVyZSB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgbm90IHJlc2V0IHdoZW4gdGhlIHZyaW5nIGFkZHJlc3MgaXMgY2hhbmdlZC4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdmlhIGB2aG9zdF92cmluZ19pb2N0bGAgd2hpY2ggaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHZob3N0IGRldmljZSBpb2N0bHMgKGUuZy4gYC9kZXYvdmhvc3QtbmV0YCwgYC9kZXYvdmhvc3QtdnNvY2tgKS4gRnV6emluZyBgdmhvc3RfdnJpbmdfaW9jdGxgIHdpbGwgZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzozNS4wNTIyMDEyMzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY3NjYyMzY0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfTUVOVVwiLFxuICAgIFwiVkhPU1RfTkVUXCIsXG4gICAgXCJWSE9TVF9WU09DS1wiLFxuICAgIFwiVlNPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF92cmluZ19pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgIHdoZXJlIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyBub3QgcmVzZXQgd2hlbiB0aGUgdnJpbmcgYWRkcmVzcyBpcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB2aWEgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aGljaCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdmhvc3QgZGV2aWNlIGlvY3RscyAoZS5nLiBgL2Rldi92aG9zdC1uZXRgLCBgL2Rldi92aG9zdC12c29ja2ApLiBGdXp6aW5nIGB2aG9zdF92cmluZ19pb2N0bGAgd2lsbCBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjc6MzUuMDUyMjA2MjA2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzc4MzE0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxY2UzYTBiMTRmYjU5MmQwY2RhYjM3OWI0ODJhMTZhYzVhZjkwNDg4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMDM6Mjc6MzQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92aG9zdC5jIGIvZHJpdmVycy92aG9zdC92aG9zdC5jXFxuaW5kZXggNGM1MjViM2UxNmVhZC4uNzdjOTY5OTMxMDBiNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcXG4rKysgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcXG5AQCAtMjEyNiw2ICsyMTI2LDE0IEBAIHN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxcbiBcXHRcXHRCVUcoKTtcXG4gXFx0fVxcbiBcXG4rXFx0LypcXG4rXFx0ICogVGhlIG1ldGFkYXRhIGNhY2hlIGhvbGRzIHRoZSBJT1RMQiBtYXBwaW5nIHRoYXQgYmFja2VkIHRoZSBwcmV2aW91c1xcbitcXHQgKiBkZXNjL2F2YWlsL3VzZWQgYWRkcmVzc2VzIGFuZCB2cmluZyBzaXplLCBib3RoIG9mIHdoaWNoIGFyZSBiZWluZ1xcbitcXHQgKiByZXBsYWNlZCBoZXJlLiAgaW90bGJfYWNjZXNzX29rKCkgdGFrZXMgYSBjYWNoZSBoaXQgYXMgcHJvb2YgdGhhdCB0aGVcXG4rXFx0ICogcmVnaW9uIHdhcyB2YWxpZGF0ZWQsIHNvIHRoZSBzdGFsZSBlbnRyaWVzIGhhdmUgdG8gZ28uXFxuK1xcdCAqL1xcbitcXHRfX3Zob3N0X3ZxX21ldGFfcmVzZXQodnEpO1xcbitcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2cS1cXHUwMDNlbXV0ZXgpO1xcbiBcXG4gXFx0cmV0dXJuIHI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI3OjM1LjQzMDc2NTM0OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwNjM4NzY2MjYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9NRU5VXCIsXG4gICAgXCJWSE9TVF9ORVRcIixcbiAgICBcIlZIT1NUX1ZTT0NLXCIsXG4gICAgXCJWU09DS0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3ZyaW5nX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcmAgd2hlcmUgdGhlIG1ldGFkYXRhIGNhY2hlIGlzIG5vdCByZXNldCB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGlzIGNoYW5nZWQuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHZpYSBgdmhvc3RfdnJpbmdfaW9jdGxgIHdoaWNoIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSB2aG9zdCBkZXZpY2UgaW9jdGxzIChlLmcuIGAvZGV2L3Zob3N0LW5ldGAsIGAvZGV2L3Zob3N0LXZzb2NrYCkuIEZ1enppbmcgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aWxsIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxY2UzYTBiMTRmYjU5MmQwY2RhYjM3OWI0ODJhMTZhYzVhZjkwNDg4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwMzoyNzozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYyBiL2RyaXZlcnMvdmhvc3Qvdmhvc3QuY1xuaW5kZXggNGM1MjViM2UxNmVhZC4uNzdjOTY5OTMxMDBiNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuY1xuKysrIGIvZHJpdmVycy92aG9zdC92aG9zdC5jXG5AQCAtMjEyNiw2ICsyMTI2LDE0IEBAIHN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuIFx0XHRCVUcoKTtcbiBcdH1cbiBcbitcdC8qXG4rXHQgKiBUaGUgbWV0YWRhdGEgY2FjaGUgaG9sZHMgdGhlIElPVExCIG1hcHBpbmcgdGhhdCBiYWNrZWQgdGhlIHByZXZpb3VzXG4rXHQgKiBkZXNjL2F2YWlsL3VzZWQgYWRkcmVzc2VzIGFuZCB2cmluZyBzaXplLCBib3RoIG9mIHdoaWNoIGFyZSBiZWluZ1xuK1x0ICogcmVwbGFjZWQgaGVyZS4gIGlvdGxiX2FjY2Vzc19vaygpIHRha2VzIGEgY2FjaGUgaGl0IGFzIHByb29mIHRoYXQgdGhlXG4rXHQgKiByZWdpb24gd2FzIHZhbGlkYXRlZCwgc28gdGhlIHN0YWxlIGVudHJpZXMgaGF2ZSB0byBnby5cbitcdCAqL1xuK1x0X192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKTtcbitcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4gXG4gXHRyZXR1cm4gcjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI3OjM1LjQzMDc2NzA4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NTIwNTk5MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVmhvc3QgRHJpdmVyIFBhdGNoIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgX192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKWAgd2l0aGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHIoKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZywgYW5kIGl0IGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgdmhvc3QgZHJpdmVyIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB1c2Vyc3BhY2UgdGhyb3VnaCBkZXZpY2VzIGxpa2UgYC9kZXYvdmhvc3QtbmV0YCBhbmQgYC9kZXYvdmhvc3QtdnNvY2tgLCBJ4oCZbSBhbHJlYWR5IGZsYWdnaW5nIHRoaXMgYXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEFueSBjaGFuZ2UgaW4gdGhpcyBhcmVhIGNhbiBoYXZlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy5cblxuTm93LCBsZXQncyBkaXZlIGRlZXBlci4gTXkgZmlyc3Qgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBvZiBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYC4gSXMgaXQgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIHRoZSBtb2R1bGUsIG9yIGlzIGl0IGV4cG9ydGVkIHNvbWVob3c/ICpBaCosIGl0J3Mgc3RhdGljIHdpdGhpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gVGhhdCBsaW1pdHMgaXRzIGRpcmVjdCBhY2Nlc3NpYmlsaXR5LCBidXQgdGhhdCBkb2Vzbid0IG1lYW4gaXQncyBzYWZlIC0gc3RhdGljIGZ1bmN0aW9ucyBhcmUgbm90IG5lY2Vzc2FyaWx5IGluaGVyZW50bHkgbGVzcyB2dWxuZXJhYmxlLiBMZXQncyBzZWUsIG5vdyBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdobyBjYWxscyBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCB0byBzZWUgaG93IGl0J3MgYmVpbmcgdXNlZC4gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoZSBhZGRlZCBjYWxsIHRvIGBfX3Zob3N0X3ZxX21ldGFfcmVzZXQodnEpYC4gVGhpcyBtaWdodCByZXZlYWwgdGhlIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjc6NDAuOTgyODMwMTkzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMTA3Njk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3ZyaW5nX3NldF9udW1fYWRkclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Zob3N0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC92aG9zdC5jPTIwNTc9c3RhdGljIGxvbmcgdmhvc3RfdnJpbmdfc2V0X2FkZHIoc3RydWN0IHZob3N0X2RldiAqZCxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTA4LVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMTA5OnN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTEwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjE0MT1sb25nIHZob3N0X3ZyaW5nX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjE1Ny1cXHQgICAgaW9jdGwgPT0gVkhPU1RfU0VUX1ZSSU5HX0FERFIpIHtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjE1ODpcXHRcXHRyZXR1cm4gdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyKGQsIHZxLCBpb2N0bCwgYXJncCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIxNTktXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzo0MS4wMjQ5NDM2MzJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTYyMDAwNjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqVmhvc3QgUmluZyBJT0NUTCBBbmFseXNpcyoqXG5cblJpZ2h0LCBgdmhvc3RfdnJpbmdfaW9jdGxgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZS4gSXQncyB0aGUgb25lIHRoYXQgY2FsbHMgYHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcmAuIEFuZCBiZWNhdXNlIGl0J3MgZXhwb3J0ZWQgYW5kIHVzZWQgYnkgYWxsIHRoZSBkaWZmZXJlbnQgdmhvc3QgZHJpdmVycyDigJMgbmV0LCB2c29jaywgc2NzaSwgYW5kIHRoZSByZXN0IOKAkyBpdCdzIGRlZmluaXRlbHkgYSBzdHJvbmcgRm9jdXNTeW1ib2wuIEl0IHNlZW1zIGxpa2UgdGhpcyBgaW9jdGxgIGlzIHRoZSBjZW50cmFsIHBvaW50IGZvciBtYW5hZ2luZyB0aGUgdmlydHVhbCByaW5ncy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBjcml0aWNhbCBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgIHRvIHNlZSB3aGF0IGtub2JzIGFuZCBsZXZlcnMgYXJlIGF2YWlsYWJsZSwgYW5kIGhvdyB0aGV5IG1pZ2h0IGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgYHZob3N0X3ZyaW5nX2lvY3RsYC4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBhbmQgcHJvZHVjdGl2ZSBwbGFjZSB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkxMCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI3OjQ3Ljk4Njk0NzI1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjY2NzU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkhPU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyOmNvbmZpZyBWSE9TVF9JT1RMQlxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctOC1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6OTpjb25maWcgVkhPU1RfUklOR1xcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTE1LVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoxNjpjb25maWcgVkhPU1RfVEFTS1xcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0xNy1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMTktXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjIwOmNvbmZpZyBWSE9TVFxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTI3LVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyODptZW51Y29uZmlnIFZIT1NUX01FTlVcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjktXFx0Ym9vbCBcXFwiVkhPU1QgZHJpdmVyc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZz0zMj1pZiBWSE9TVF9NRU5VXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTMzLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzozNDpjb25maWcgVkhPU1RfTkVUXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTM1LVxcdHRyaXN0YXRlIFxcXCJIb3N0IGtlcm5lbCBhY2NlbGVyYXRvciBmb3IgdmlydGlvIG5ldFxcXCJcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy00NS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NDY6Y29uZmlnIFZIT1NUX1NDU0lcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcIlZIT1NUX1NDU0kgVENNIGZhYnJpYyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTUtXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjU2OmNvbmZpZyBWSE9TVF9WU09DS1xcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01Ny1cXHR0cmlzdGF0ZSBcXFwidmhvc3QgdmlydGlvLXZzb2NrIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy02OS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NzA6Y29uZmlnIFZIT1NUX1ZEUEFcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNzEtXFx0dHJpc3RhdGUgXFxcIlZob3N0IGRyaXZlciBmb3IgdkRQQS1iYXNlZCBiYWNrZW5kXFxcIlxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTgyLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo4Mzpjb25maWcgVkhPU1RfQ1JPU1NfRU5ESUFOX0xFR0FDWVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy04NC1cXHRib29sIFxcXCJDcm9zcy1lbmRpYW4gc3VwcG9ydCBmb3Igdmhvc3RcXFwiXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctOTctXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjk4OmNvbmZpZyBWSE9TVF9FTkFCTEVfRk9SS19PV05FUl9DT05UUk9MXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTk5LVxcdGJvb2wgXFxcIkVuYWJsZSBWSE9TVF9FTkFCTEVfRk9SS19PV05FUl9DT05UUk9MXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzo0OC4wMjk2MTkyOTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQzOTExODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgVmlydHVhbCBIb3N0IEFyY2hpdGVjdHVyZSoqXG5cbk9rYXksIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYFZIT1NUYC4gVGhhdCdzIHRoZSBwcmltYXJ5IGJ1aWxkaW5nIGJsb2NrLiBCdXQgaXQgYXBwZWFycyB0aGF0IHNwZWNpZmljIHZpcnR1YWxpemVkIGZ1bmN0aW9uYWxpdGllcyBhcmUgY2hvc2VuIHZpYSBtb3JlIHNwZWNpYWxpemVkIG9wdGlvbnMuIFJpZ2h0LCBzbyBgVkhPU1RgIGlzIHRoZSBmb3VuZGF0aW9uLCBhbmQgdGhlbiB3ZSBoYXZlIHRoZXNlIHNwZWNpZmljIGZsYXZvcnMgbGlrZSBgVkhPU1RfTkVUYCBhbmQgYFZIT1NUX1ZTT0NLYC4gTWFrZXMgc2Vuc2UsIGZvciBtb2R1bGFyaXR5LiBMZXQncyBkaWcgaW4gYW5kIHNlZSBob3cgYFZIT1NUX05FVGAgYW5kIGBWSE9TVF9WU09DS2AgdGllIGludG8gdGhpcyBvdmVyYWxsIHBpY3R1cmUgYW5kIHdoYXQgdGhleSBicmluZyB0byB0aGUgdGFibGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzcGVjaWZpY3MgaW50ZWdyYXRlIHdpdGggdGhhdCBjZW50cmFsIGBWSE9TVGAgY29uc3RydWN0LiBUaGlzIGFwcHJvYWNoIGlzIGNvbW1vbiwgYW5kIEkgbmVlZCB0byBlbnN1cmUgaXQncyBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MzksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzo1MS42NzM1MzM4NTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA4ODYzODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFZIT1NUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWc9OT1jb25maWcgVkhPU1RfUklOR1xcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoxMTpcXHRzZWxlY3QgVkhPU1RfSU9UTEJcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnPTIwPWNvbmZpZyBWSE9TVFxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyMjpcXHRzZWxlY3QgVkhPU1RfSU9UTEJcXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6MjM6XFx0c2VsZWN0IFZIT1NUX1RBU0tcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnPTM0PWNvbmZpZyBWSE9TVF9ORVRcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0zNi1cXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBFVkVOVEZEIFxcdTAwMjZcXHUwMDI2IChUVU4gfHwgIVRVTikgXFx1MDAyNlxcdTAwMjYgKFRBUCB8fCAhVEFQKVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzozNzpcXHRzZWxlY3QgVkhPU1RcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnPTQ2PWNvbmZpZyBWSE9TVF9TQ1NJXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNDgtXFx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRSBcXHUwMDI2XFx1MDAyNiBFVkVOVEZEXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjQ5OlxcdHNlbGVjdCBWSE9TVFxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01MC1cXHRzZWxlY3QgU0dfUE9PTFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnPTU2PWNvbmZpZyBWSE9TVF9WU09DS1xcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU4LVxcdGRlcGVuZHMgb24gVlNPQ0tFVFMgXFx1MDAyNlxcdTAwMjYgRVZFTlRGRFxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo1OTpcXHRzZWxlY3QgVkhPU1RcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNjAtXFx0c2VsZWN0IFZJUlRJT19WU09DS0VUU19DT01NT05cXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZz03MD1jb25maWcgVkhPU1RfVkRQQVxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTcyLVxcdGRlcGVuZHMgb24gRVZFTlRGRFxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo3MzpcXHRzZWxlY3QgVkhPU1RcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNzQtXFx0c2VsZWN0IElSUV9CWVBBU1NfTUFOQUdFUlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzo1MS43MTQ0MjMzNTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTc0MzYwOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBLVk0gVmlydHVhbGl6YXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIEtWTSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0IHNlZW1zIGxpa2UgZW5hYmxpbmcgYFZIT1NUX05FVGAgYW5kIGBWSE9TVF9WU09DS2AgaXMgZ2VuZXJhbGx5IGEgZ29vZCBpZGVhIGZvciBwZXJmb3JtYW5jZSwgcmlnaHQ/IFRob3NlIGFyZSBpbXBvcnRhbnQgZm9yIG5ldHdvcmsgYW5kIHNvY2tldCB2aXJ0dWFsaXphdGlvbiwgYW5kIEknZCBsaWtlIHRvIGxldmVyYWdlIHRob3NlIGltcHJvdmVtZW50cyB3aGVyZSBwb3NzaWJsZS4gQnV0IEkgY2FuJ3QganVzdCBlbmFibGUgdGhlbSBibGluZGx5OyBJIG5lZWQgdG8gZW5zdXJlIHRoZSBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIGlzIGluIHBsYWNlLlxuXG5UaGVyZWZvcmUsIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IGlzIGBWSE9TVF9NRU5VYC4gSSBuZWVkIHRoYXQgZW5hYmxlZCB0byBldmVuICpzZWUqIGBWSE9TVF9ORVRgIGFuZCBgVkhPU1RfVlNPQ0tgLCB3aGljaCBpcyBmYWlybHkgc3RhbmRhcmQgbWVudS1kcml2ZW4gc2V0dXAuIE5vdywgYmVmb3JlIEkganVzdCBmbGlwIHRoZSBzd2l0Y2gsIGl0J3MgZXNzZW50aWFsIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFZIT1NUX01FTlVgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXQgbmVlZHMgaXMgYWxzbyBjb25maWd1cmVkIGNvcnJlY3RseS4gSSdsbCB0YWtlIGEgcXVpY2sgZ2xhbmNlIGF0IHRoZSBkZXBlbmRlbmNpZXMgdG8gYXZvaWQgYW55IHVuZm9yZXNlZW4gY29uZmxpY3RzIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTUyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjc6NTUuNjg4Nzg3NDIyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzMxMjY0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkhPU1RfTUVOVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnPTIwPWNvbmZpZyBWSE9TVFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTI3LVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyODptZW51Y29uZmlnIFZIT1NUX01FTlVcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjktXFx0Ym9vbCBcXFwiVkhPU1QgZHJpdmVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjc6NTUuNzMyMTEzNDkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjcwMjU3MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipWSE9TVCBNb2R1bGUgRGVwZW5kZW5jeSBBc3Nlc3NtZW50KipcblxuUmlnaHQsIHNvIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIFZIT1NULXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEZpcnN0IHRoaW5ncyBmaXJzdDogdGhlIGBWSE9TVF9NRU5VYCBvcHRpb24uIEl0IGxvb2tzIGxpa2UgYFZIT1NUX01FTlVgIGRvZXNuJ3QgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzIGxpc3RlZCwgd2hpY2ggaXMgYSBnb29kIHNpZ24uIFRoYXQgbWVhbnMsIGF0IGxlYXN0IGluIHRoZSBkZXBlbmRlbmNpZXMgY29udGV4dCwgaXQncyBub3QgaG9sZGluZyBhbnl0aGluZyB1cC4gQnkgZXh0ZW5zaW9uLCB0aGF0IHNob3VsZCBiZSB0cnVlIGZvciBgVkhPU1RfTkVUYCBhbmQgYFZIT1NUX1ZTT0NLYCBhcyB3ZWxsLiBUaGF0IGlzIGFsbCBjbGVhciBhbmQgaW4gZ29vZCBvcmRlci4gXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgYHZob3N0X3ZyaW5nX2lvY3RsYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBJIGFtIGdvaW5nIHRvIGZpbmQgdGhhdCBpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gSSB3aWxsIGhhdmUgdG8gc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzo1OS40NTkxNDE4NDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjE5Njk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3ZyaW5nX2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvdmhvc3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjEwOT1zdGF0aWMgbG9uZyB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHIoc3RydWN0IHZob3N0X2RldiAqZCxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQwLX1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjE0MTpsb25nIHZob3N0X3ZyaW5nX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIxNDIte1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzgtfVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMjc5OkVYUE9SVF9TWU1CT0xfR1BMKHZob3N0X3ZyaW5nX2lvY3RsKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI4MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjc6NTkuNTA0MzY2MTg3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzY2ODc4NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBmcm9tIG15IHBlcnNwZWN0aXZlLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBWaG9zdCBJbmZyYXN0cnVjdHVyZSoqXG5cblJpZ2h0LCBzbyBgdmhvc3RfdnJpbmdfaW9jdGxgIGlzIGRlZmluaXRlbHkgZXhwb3J0ZWQsIHRoYXQncyBnb29kLiBOb3csIGJlZm9yZSBJIGp1bXAgdG9vIGRlZXAgaW50byB0aGlzIHNwZWNpZmljIGlzc3VlLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB3ZSB1bmRlcnN0YW5kIHRoZSBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyB2aXJ0dWFsIHF1ZXVlIG1ldGFkYXRhLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBfX3Zob3N0X3ZxX21ldGFfcmVzZXRgIGZ1bmN0aW9uLiBJdCdzIGNydWNpYWwgd2UgY29uZmlybSBob3cgdGhhdCdzIHdvcmtpbmcuIFdlIGNhbiBwcm9iYWJseSB0cmFjZSB0aGlzIGFuZCB0aGUgb3RoZXIgY2hhbmdlcyBiYWNrd2FyZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNjcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyODowMi45ODEwNTcwOThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzMzMTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fdmhvc3RfdnFfbWV0YV9yZXNldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Zob3N0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC92aG9zdC5jPTMzNz1FWFBPUlRfU1lNQk9MX0dQTCh2aG9zdF9wb2xsX3F1ZXVlKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzM4LVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzozMzk6c3RhdGljIHZvaWQgX192aG9zdF92cV9tZXRhX3Jlc2V0KHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxKVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zNDAte1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTM0Nz1zdGF0aWMgdm9pZCB2aG9zdF92cV9tZXRhX3Jlc2V0KHN0cnVjdCB2aG9zdF9kZXYgKmQpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzUxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkLVxcdTAwM2VudnFzOyArK2kpXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjM1MjpcXHRcXHRfX3Zob3N0X3ZxX21ldGFfcmVzZXQoZC1cXHUwMDNldnFzW2ldKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzUzLX1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0zNjc9c3RhdGljIHZvaWQgdmhvc3RfdnFfcmVzZXQoc3RydWN0IHZob3N0X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTM5Ni1cXHR2aG9zdF92cmluZ19jYWxsX3Jlc2V0KFxcdTAwMjZ2cS1cXHUwMDNlY2FsbF9jdHgpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzozOTc6XFx0X192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzk4LX1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMTA5PXN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIxMzQtXFx0ICovXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjIxMzU6XFx0X192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjEzNi1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMjgxPWludCB2aG9zdF9pbml0X2RldmljZV9pb3RsYihzdHJ1Y3Qgdmhvc3RfZGV2ICpkKVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyOTctXFx0XFx0dnEtXFx1MDAzZWlvdGxiID0gbmlvdGxiO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMjk4OlxcdFxcdF9fdmhvc3RfdnFfbWV0YV9yZXNldCh2cSk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyOTktXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2cS1cXHUwMDNlbXV0ZXgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyODowMy4wMjg4MTU4MjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyODEwMzc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWaG9zdCBDb2RlKipcblxuUmlnaHQsIHNvIGBfX3Zob3N0X3ZxX21ldGFfcmVzZXRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0J3MgbG9jYWxpemVkLCBhbmQgaXQncyBub3QgYSBwcmltYXJ5IGVudHJ5IHBvaW50LCB3aGljaCBtYWtlcyBpdCBsZXNzIGludGVyZXN0aW5nIGZyb20gYSBoaWdoLWxldmVsIHBlcnNwZWN0aXZlLiBXaXRoIHRoYXQgaW4gbWluZCwgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiBpcyBgdmhvc3RfdnJpbmdfaW9jdGxgLiBJdCBmZWVscyBsaWtlIHRoZSBiZXN0IGNhbmRpZGF0ZSBmb3IgdGhlIGNvcmUgc3ltYm9sIHdlJ3JlIGFmdGVyLCB0aGUgb25lIHRoYXQgcHJvYmFibHkgaGFuZGxlcyB0aGUgbWFpbiBpbnRlcmFjdGlvbi5cblxuTm93LCBiZWZvcmUgSSBnZXQgdG9vIGludmVzdGVkLCBsZXQncyBxdWlja2x5IGNvbmZpcm0uIElzIGB2aG9zdF92cmluZ19pb2N0bGAgYWN0dWFsbHkgY2FsbGVkIGZyb20gYSBoaWdoZXItbGV2ZWwgYGlvY3RsYCBoYW5kbGVyIGxpa2UgYHZob3N0X25ldF9pb2N0bGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBHb3R0YSB0cmFjZSB0aGUgY2FsbCBncmFwaCB0byBiZSBzdXJlIHdlIGFyZSB0cmFja2luZyB0aGUgcmlnaHQgc3BvdC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGluZGVlZCBhIG1ham9yIGVudHJ5IHBvaW50IGZvciBpb2N0bCBjYWxscyByZWxhdGVkIHRvIHRoZSB2cmluZy4gSSdsbCBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSB0aGlzIGlzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyODowNy41NTY5MjE4NDVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODY2MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3ZyaW5nX2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3QvbmV0LmM9MTczOD1zdGF0aWMgbG9uZyB2aG9zdF9uZXRfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmhvc3QvbmV0LmMtMTgyOS1cXHRcXHRpZiAociA9PSAtRU5PSU9DVExDTUQpXFxuZHJpdmVycy92aG9zdC9uZXQuYzoxODMwOlxcdFxcdFxcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcXHUwMDI2bi1cXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XFxuZHJpdmVycy92aG9zdC9uZXQuYy0xODMxLVxcdFxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzNjI9dmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0MzAtXFx0XFx0aWYgKHIgPT0gLUVOT0lPQ1RMQ01EKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI0MzE6XFx0XFx0XFx0ciA9IHZob3N0X3ZyaW5nX2lvY3RsKFxcdTAwMjZ2cy1cXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQzMi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZzLVxcdTAwM2VkZXYubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy92aG9zdC90ZXN0LmM9MzE3PXN0YXRpYyBsb25nIHZob3N0X3Rlc3RfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdGVzdC5jLTM1Mi0gICAgICAgICAgICAgICAgaWYgKHIgPT0gLUVOT0lPQ1RMQ01EKVxcbmRyaXZlcnMvdmhvc3QvdGVzdC5jOjM1MzogICAgICAgICAgICAgICAgICAgICAgICByID0gdmhvc3RfdnJpbmdfaW9jdGwoXFx1MDAyNm4tXFx1MDAzZWRldiwgaW9jdGwsIGFyZ3ApO1xcbmRyaXZlcnMvdmhvc3QvdGVzdC5jLTM1NC1cXHRcXHR2aG9zdF90ZXN0X2ZsdXNoKG4pO1xcbi0tXFxuZHJpdmVycy92aG9zdC92ZHBhLmM9NjMyPXN0YXRpYyBsb25nIHZob3N0X3ZkcGFfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X3ZkcGEgKnYsIHVuc2lnbmVkIGludCBjbWQsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy03MjAtXFxuZHJpdmVycy92aG9zdC92ZHBhLmM6NzIxOlxcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcXHUwMDI2di1cXHUwMDNldmRldiwgY21kLCBhcmdwKTtcXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy03MjItXFx0aWYgKHIpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjEwOT1zdGF0aWMgbG9uZyB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHIoc3RydWN0IHZob3N0X2RldiAqZCxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQwLX1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjE0MTpsb25nIHZob3N0X3ZyaW5nX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIxNDIte1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzgtfVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMjc5OkVYUE9SVF9TWU1CT0xfR1BMKHZob3N0X3ZyaW5nX2lvY3RsKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI4MC1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuaD0yMjI9bG9uZyB2aG9zdF9kZXZfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHZvaWQgX191c2VyICphcmdwKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0Lmg6MjIzOmxvbmcgdmhvc3RfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5oLTIyNC1sb25nIHZob3N0X3dvcmtlcl9pb2N0bChzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYz04ODk9c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTM1LVxcdFxcdGlmIChyID09IC1FTk9JT0NUTENNRClcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6OTM2OlxcdFxcdFxcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgaW9jdGwsIGFyZ3ApO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05MzctXFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyODowNy41OTg4MTQ4NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc0NzQ0Njg2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVmhvc3QgVnJpbmcgSW9jdGwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgeWVzLCBgdmhvc3RfdnJpbmdfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgdnJpbmcgaW9jdGxzLiBUaGUgY29yZSBpc3N1ZSB0aGlzIHBhdGNoIGFkZHJlc3NlcyBpcyB0aGF0IHRoZSBtZXRhZGF0YSBjYWNoZSBpc24ndCBiZWluZyByZXNldCB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGNoYW5nZXMuIFRoYXQncyBhIGNsYXNzaWMgYnVnLCBhbmQgdGhpcyBmaXggYXBwZWFycyB0byBiZSBkaXJlY3RseSBhZGRyZXNzaW5nIGl0LiBJIGNhbiBzZWUgdGhpcyBpcyBmdW5jdGlvbmFsIGFuZCwgcmVhbGlzdGljYWxseSwgcmVhY2hhYmxlIHVuZGVyIHRoZSByaWdodCBjaXJjdW1zdGFuY2VzLlxuXG5UbyByZXByb2R1Y2UgYW5kIHRlc3QgdGhpcyBlZmZlY3RpdmVseSwgSSdsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQ6IGBWSE9TVF9NRU5VYCwgYFZIT1NUX05FVGAsIGFuZCBgVkhPU1RfVlNPQ0tgLiBJJ2xsIGJlIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiB0aGUgYHZob3N0X3ZyaW5nX2lvY3RsYCBzeW1ib2wgZm9yIHZlcmlmaWNhdGlvbi5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgVkhPU1RfTUVOVWAgaXMgdGhlIGNvcnJlY3QgbmFtZSDigJMgeWVwLCBpdCdzIGNvbmZpcm1lZCwgYG1lbnVjb25maWcgVkhPU1RfTUVOVWAuXG5cbk5vdywgbGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBJIHNlZSBgVkhPU1RfU0NTSWAsIGBWSE9TVF9WRFBBYCwgYW5kIGBWSE9TVF9URVNUYC4gYFZIT1NUX1RFU1RgIHNvdW5kcyBsaWtlIGl0IG1pZ2h0IGJlIGEgZ29vZCBvbmUgdG8gZW5hYmxlIGFzIHdlbGwsIHRvIGhlbHAgd2l0aCBjb21wcmVoZW5zaXZlIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjg6MzUuMDczMjg2NDc2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQzNjI2OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZIT1NUX1RFU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyODozNS4xMjM3Mjk5OTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxMTk0NjQyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyB0aGlzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEtjb25maWcgUGxhY2VtZW50IG9mIFZIT1NUX1RFU1QqKlxuXG5Pa2F5LCBob2xkIG9uIGEgbWludXRlLiBJIHdhcyBwcmV0dHkgc3VyZSBgVkhPU1RfVEVTVGAgd2FzIGEgc3RhbmRhcmQgb3B0aW9uLCBidXQgaXQgbG9va3MgbGlrZSBpdCdzIG5vdCBzaG93aW5nIHVwIGluIHRoZSB1c3VhbCBwbGFjZSwgYGRyaXZlcnMvdmhvc3QvS2NvbmZpZ2AuIFRoYXQncyBhIGJpdCBvZGQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0J3MgYWN0dWFsbHkgZGVmaW5lZC4gSSdsbCBuZWVkIHRvIGdvIGh1bnRpbmcgZm9yIGl0IHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBMZXQncyBzdGFydCB3aXRoIGEgYGdyZXBgIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRyYWNrIGRvd24gaXRzIGRlZmluaXRpb24uIEl0J3MgcG9zc2libGUgaXQncyBjb25kaXRpb25hbGx5IGluY2x1ZGVkIGZyb20gZWxzZXdoZXJlLCBvciBldmVuIGRlZmluZWQgd2l0aGluIGEgZGlmZmVyZW50IGRyaXZlcidzIEtjb25maWcgZmlsZSB0aGF0J3MgcmVsYXRlZCB0byB2aG9zdCBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIGEgY29tbW9uIHRoaW5nIGluIGNvbXBsZXgga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBzbyBJIHdvbid0IGFzc3VtZSBpdCdzIHNpbXBseSBtaXNzaW5nLiBJJ2xsIG5lZWQgdG8gbG9vayBjYXJlZnVsbHksIGNoZWNrIGZvciBhbnkgYCNzb3VyY2VgIG9yIGBzb3VyY2VgIGRpcmVjdGl2ZXMgaW4gdGhlIHZob3N0IEtjb25maWcgdG8gc2VlIGlmIHRoZSBtaXNzaW5nIG9wdGlvbiBpcyBkZWZpbmVkIHRoZXJlLiBMZXQncyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODM2LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjg6MzkuNDM1Njc4NTI4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU4MTk2NzQzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkhPU1RfVEVTVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI4OjQxLjA5Mzg4MTA2MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDI3ODY0NTAyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDb21waWxhdGlvbiBDb250ZXh0IG9mIGBkcml2ZXJzL3Zob3N0L3Rlc3QuY2AqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGRyaXZlcnMvdmhvc3QvdGVzdC5jYCBmaWxlIGdldHMgYnVpbHQgd2l0aGluIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCB0cmlnZ2VyIGl0cyBjb21waWxhdGlvbi4gSSBrbm93IHRoaXMgaXNuJ3QgZ29pbmcgdG8gYmUgYSBzaW1wbGUgXCJncmVwIGZvciBLY29uZmlnXCIgc2VhcmNoIOKAkyBpdCdzIGxpa2VseSBwYXJ0IG9mIGEgbW9yZSBjb21wbGV4IGRlcGVuZGVuY3kgdHJlZSwgcG90ZW50aWFsbHkgaW52b2x2aW5nIG11bHRpcGxlIEtjb25maWcgZnJhZ21lbnRzIG9yIGV2ZW4gaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRocm91Z2ggb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRocm91Z2ggdGhlIGJ1aWxkIHN5c3RlbSdzIGxvZ2ljIHRvIHNlZSB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBiZWNhdXNlIGEgbG90IG9mIHRoZXNlIHRoaW5ncyBvZnRlbiBidWlsZCB3aGVuIGNlcnRhaW4gbW9kdWxlcyBhcmUgc2VsZWN0ZWQsIHdoaWNoIHRoZW4gY2F1c2UgdGhpcyB0byBidWlsZCBpbmRpcmVjdGx5LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYnVpbGQgc3lzdGVtIGFuZCB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTMyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjk6MDEuMzcyNTI4MjE1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDM5MzUwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI5OjAxLjQxMjkzMDIyNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzI5NzI4NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSB2aG9zdCBEcml2ZXIgTWFrZWZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW5zdGluY3Qgc2F5cyB0byBzdGFydCB3aXRoIHRoZSBgZHJpdmVycy92aG9zdC9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGxpa2VseSBkZWZpbmVkIGZvciB0aGUgdmhvc3QgZHJpdmVyLiBJdCdzIHRoZSBjZW50cmFsIGh1YiBmb3IgaG93IHRoaXMgcGFydCBvZiB0aGUga2VybmVsIG1vZHVsZSBpcyBwdXQgdG9nZXRoZXIuIFRoaXMgaXMgdGhlIHBsYWNlIHdoZXJlIEkgY2FuIGdldCBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIG1vZHVsZSdzIHN0cnVjdHVyZSBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLCBwYXJ0aWN1bGFybHkgY29uY2VybmluZyBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkgZXhwZWN0IHRvIGZpbmQgaW5jbHVkZSBwYXRocywgb2JqZWN0IGZpbGUgZGVmaW5pdGlvbnMsIGFuZCBtYXliZSBldmVuIHNvbWUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MgYmFzZWQgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgb3IgZmVhdHVyZXMuIEhvcGVmdWxseSwgaXQgaXMgd2VsbC1jb21tZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzODYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyOTowNi43NDI2NjEyOTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92aG9zdC9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRvYmotJChDT05GSUdfVkhPU1RfTkVUKSArPSB2aG9zdF9uZXQub1xcbiAgIDM6XFx0dmhvc3RfbmV0LXkgOj0gbmV0Lm9cXG4gICA0OlxcdFxcbiAgIDU6XFx0b2JqLSQoQ09ORklHX1ZIT1NUX1NDU0kpICs9IHZob3N0X3Njc2kub1xcbiAgIDY6XFx0dmhvc3Rfc2NzaS15IDo9IHNjc2kub1xcbiAgIDc6XFx0XFxuICAgODpcXHRvYmotJChDT05GSUdfVkhPU1RfVlNPQ0spICs9IHZob3N0X3Zzb2NrLm9cXG4gICA5OlxcdHZob3N0X3Zzb2NrLXkgOj0gdnNvY2sub1xcbiAgMTA6XFx0XFxuICAxMTpcXHRvYmotJChDT05GSUdfVkhPU1RfUklORykgKz0gdnJpbmdoLm9cXG4gIDEyOlxcdFxcbiAgMTM6XFx0b2JqLSQoQ09ORklHX1ZIT1NUX1ZEUEEpICs9IHZob3N0X3ZkcGEub1xcbiAgMTQ6XFx0dmhvc3RfdmRwYS15IDo9IHZkcGEub1xcbiAgMTU6XFx0XFxuICAxNjpcXHRvYmotJChDT05GSUdfVkhPU1QpXFx0Kz0gdmhvc3Qub1xcbiAgMTc6XFx0XFxuICAxODpcXHRvYmotJChDT05GSUdfVkhPU1RfSU9UTEIpICs9IHZob3N0X2lvdGxiLm9cXG4gIDE5OlxcdHZob3N0X2lvdGxiLXkgOj0gaW90bGIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyOTowNi43NDI3MTc0NzRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI0MjY4NzkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0J3MgZ29pbmcgb24sIHRoaW5raW5nIHRocm91Z2ggdGhpcyBsaWtlIEkgd291bGQ6XG5cbioqRXhhbWluaW5nIEJ1aWxkIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIHBhcnRpY3VsYXIgdGVzdCBpc24ndCBydW5uaW5nIG9yIGJlaW5nIGJ1aWx0LCBvciBtb3JlIHNwZWNpZmljYWxseSwgKndoZXJlKiB0aGlzIHRlc3QgYWN0dWFsbHkgbGl2ZXMgaW4gdGhlIGJ1aWxkIHN0cnVjdHVyZS4gRmlyc3QgdGhvdWdodDogbWF5YmUgYHRlc3QuY2AgaXNuJ3QgYnVpbHQgYnkgZGVmYXVsdCBvciBpdCdzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBjb2RlIGJhc2UsIGxpa2VseSBhIGRpZmZlcmVudCBicmFuY2guIEEgcXVpY2sgYGdyZXBgIGNvbmZpcm1lZCB0aGF0IGBkcml2ZXJzL3Zob3N0L3Rlc3QuY2AgZXhpc3RzLiBcblxuQWgsIGFuZCBpdCBsb29rcyBsaWtlIGB0b29scy92aXJ0aW8vTWFrZWZpbGVgIGhhbmRsZXMgYGRyaXZlcnMvdmhvc3QvdGVzdC5jYC4gTm90ZWQuXG5cbkZvciBub3csIEknbSB0aGlua2luZyBJIG9ubHkgbmVlZCBgVkhPU1RfTkVUYCBhbmQgYFZIT1NUX1ZTT0NLYCB0byBiZSBjb25maWd1cmVkLCBsZXQncyBzZWUgYWJvdXQgdGhlaXIgZGVwZW5kZW5jaWVzLlxuXG5MZXQncyBzZWUgd2hhdCdzIHJlcXVpcmVkIGZvciBgVkhPU1RfTkVUYC4gVGhlIGRlcGVuZGVuY3kgZXhwcmVzc2lvbiBpcyBgTkVUIFx1MDAyNlx1MDAyNiBFVkVOVEZEIFx1MDAyNlx1MDAyNiAoVFVOIHx8ICFUVU4pIFx1MDAyNlx1MDAyNiAoVEFQIHx8ICFUQVApYC4gYEVWRU5URkRgIGlzIHByZXR0eSBzdGFuZGFyZCB0byBoYXZlIGVuYWJsZWQsIGFuZCBgTkVUYCBhbHNvLiAgYFRVTmAgYW5kIGBUQVBgIGFyZSBhbHNvIGxpa2VseSBlbmFibGVkLCBzbyB0aGF0J3Mgbm90IGEgbWFqb3IgaXNzdWUuXG5cbk5vdyBmb3IgYFZIT1NUX1ZTT0NLYC4gSXRzIGRlcGVuZGVuY2llcyBhcmUgYFZTT0NLRVRTIFx1MDAyNlx1MDAyNiBFVkVOVEZEYC4gIFNvIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYFZTT0NLRVRTYCBkZXBlbmRlbmN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODk5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjk6MTIuOTg1NDA4MTk0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTkyNTIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVlNPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svS2NvbmZpZy01LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzo2OmNvbmZpZyBWU09DS0VUU1xcbm5ldC92bXdfdnNvY2svS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldCBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0xOC1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6MTk6Y29uZmlnIFZTT0NLRVRTX0RJQUdcXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yOC1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6Mjk6Y29uZmlnIFZTT0NLRVRTX0xPT1BCQUNLXFxubmV0L3Ztd192c29jay9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldHMgbG9vcGJhY2sgdHJhbnNwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyOToxMy4wMjczMzg0ODJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcxMjA3MzQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBZGRpbmcgVlNPQ0tFVFMgdG8gdGhlIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBhZGQgYFZTT0NLRVRTYCB0byB0aGUgY29uZmlndXJhdGlvbnMuIEdpdmVuIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9ucywgbmFtZWx5IGBWSE9TVF9NRU5VYCwgYFZIT1NUX05FVGAsIGFuZCBgVkhPU1RfVlNPQ0tgLCBgVlNPQ0tFVFNgIHNlZW1zIGxpa2UgYSBsb2dpY2FsIGFuZCBuZWNlc3NhcnkgYWRkaXRpb24uXG5cblRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlcmUncyBhIGJ1ZyBmaXggdGhhdCBhZGRyZXNzZXMgYSBwcm9ibGVtIGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgLiBTcGVjaWZpY2FsbHksIHRoZSBtZXRhZGF0YSBjYWNoZSBpc24ndCBiZWluZyByZXNldCBwcm9wZXJseSB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGlzIGFsdGVyZWQuIE5vdywgdGhpcyBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCBmdW5jdGlvbiBpcyBhY2Nlc3NlZCB0aHJvdWdoIGB2aG9zdF92cmluZ19pb2N0bGAuIFRoaXMgaW9jdGwgaXMgaG93IHVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCB0aGUgdmhvc3QgZGV2aWNlIGlvY3RscywgbGlrZSBgL2Rldi92aG9zdC1uZXRgIGFuZCBgL2Rldi92aG9zdC12c29ja2AuIFNvLCBmdXp6aW5nIGB2aG9zdF92cmluZ19pb2N0bGAgaXMgZ29pbmcgdG8gYmUgYSBnb29kIHdheSB0byBleGVyY2lzZSBhbmQgcmV2ZWFsIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGguXG5cblRvIGNvbmZpcm0gdGhpcywgbGV0J3MgZG8gYSBxdWljayBzY2FuIG9mIHRoZSBjb2RlIHRvIG1ha2Ugc3VyZSBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCBpcyBhY3R1YWxseSByZWFjaGFibGUgdmlhIGB2aG9zdF92cmluZ19pb2N0bGAuIFllcywgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgdmhvc3RfdnJpbmdfaW9jdGxgIGhhbmRsZXMgYFZIT1NUX1NFVF9WUklOR19BRERSYCBhbmQgc3Vic2VxdWVudGx5IGNhbGxzIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgdmhvc3QgZHJpdmVyLCBhbmQsIHRoZXJlZm9yZSwgd2FycmFudHMgc2VyaW91cyBhdHRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NDMsIk91dHB1dFRva2VucyI6MTY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI5OjIxLjczOTQxNDA0NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MDEwMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9NRU5VXCIsXG4gICAgXCJWSE9TVF9ORVRcIixcbiAgICBcIlZIT1NUX1ZTT0NLXCIsXG4gICAgXCJWU09DS0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3ZyaW5nX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcmAgd2hlcmUgdGhlIG1ldGFkYXRhIGNhY2hlIGlzIG5vdCByZXNldCB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGlzIGNoYW5nZWQuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHZpYSBgdmhvc3RfdnJpbmdfaW9jdGxgIHdoaWNoIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSB2aG9zdCBkZXZpY2UgaW9jdGxzIChlLmcuIGAvZGV2L3Zob3N0LW5ldGAsIGAvZGV2L3Zob3N0LXZzb2NrYCkuIEZ1enppbmcgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aWxsIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX01FTlVcIixcbiAgICBcIlZIT1NUX05FVFwiLFxuICAgIFwiVkhPU1RfVlNPQ0tcIixcbiAgICBcIlZTT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3RfdnJpbmdfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCB3aGVyZSB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgbm90IHJlc2V0IHdoZW4gdGhlIHZyaW5nIGFkZHJlc3MgaXMgY2hhbmdlZC4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdmlhIGB2aG9zdF92cmluZ19pb2N0bGAgd2hpY2ggaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHZob3N0IGRldmljZSBpb2N0bHMgKGUuZy4gYC9kZXYvdmhvc3QtbmV0YCwgYC9kZXYvdmhvc3QtdnNvY2tgKS4gRnV6emluZyBgdmhvc3RfdnJpbmdfaW9jdGxgIHdpbGwgZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowxjjzx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 03:07:30 +0000 UTC FinishedAt: 2026-08-04 03:29:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5aed8f404401bfa1570cf0c3ffed7b752f568e83", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_MENU", "VHOST_NET", "VHOST_VSOCK", "VSOCKETS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5aed8f404401bfa1570cf0c3ffed7b752f568e83", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VHOST_MENU", "VHOST_NET", "VHOST_VSOCK", "VSOCKETS" ], "series_id": "0214d545-98d6-421e-bb58-71c69d756aec" }, "track": "KASAN", "fuzz": { "focus": [ "kvm", "net" ], "focus_symbols": [ "vhost_vring_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZIT1NUX01FTlUmIzM0OywKICAgICYjMzQ7VkhPU1RfTkVUJiMzNDssCiAgICAmIzM0O1ZIT1NUX1ZTT0NLJiMzNDssCiAgICAmIzM0O1ZTT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmhvc3RfdnJpbmdfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcmAgd2hlcmUgdGhlIG1ldGFkYXRhIGNhY2hlIGlzIG5vdCByZXNldCB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGlzIGNoYW5nZWQuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHZpYSBgdmhvc3RfdnJpbmdfaW9jdGxgIHdoaWNoIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSB2aG9zdCBkZXZpY2UgaW9jdGxzIChlLmcuIGAvZGV2L3Zob3N0LW5ldGAsIGAvZGV2L3Zob3N0LXZzb2NrYCkuIEZ1enppbmcgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aWxsIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWNlM2EwYjE0ZmI1OTJkMGNkYWIzNzliNDgyYTE2YWM1YWY5MDQ4OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDM6Mjc6MzQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92aG9zdC5jIGIvZHJpdmVycy92aG9zdC92aG9zdC5jXG5pbmRleCA0YzUyNWIzZTE2ZWFkLi43N2M5Njk5MzEwMGI1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92aG9zdC92aG9zdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcbkBAIC0yMTI2LDYgJiM0MzsyMTI2LDE0IEBAIHN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuIFx0XHRCVUcoKTtcbiBcdH1cbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRoZSBtZXRhZGF0YSBjYWNoZSBob2xkcyB0aGUgSU9UTEIgbWFwcGluZyB0aGF0IGJhY2tlZCB0aGUgcHJldmlvdXNcbiYjNDM7XHQgKiBkZXNjL2F2YWlsL3VzZWQgYWRkcmVzc2VzIGFuZCB2cmluZyBzaXplLCBib3RoIG9mIHdoaWNoIGFyZSBiZWluZ1xuJiM0MztcdCAqIHJlcGxhY2VkIGhlcmUuICBpb3RsYl9hY2Nlc3Nfb2soKSB0YWtlcyBhIGNhY2hlIGhpdCBhcyBwcm9vZiB0aGF0IHRoZVxuJiM0MztcdCAqIHJlZ2lvbiB3YXMgdmFsaWRhdGVkLCBzbyB0aGUgc3RhbGUgZW50cmllcyBoYXZlIHRvIGdvLlxuJiM0MztcdCAqL1xuJiM0MztcdF9fdmhvc3RfdnFfbWV0YV9yZXNldCh2cSk7XG4mIzQzO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZxLVx1MDAzZW11dGV4KTtcbiBcbiBcdHJldHVybiByO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9NRU5VJiMzNDssCiAgICAmIzM0O1ZIT1NUX05FVCYjMzQ7LAogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7LAogICAgJiMzNDtWU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3ZyaW5nX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgIHdoZXJlIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyBub3QgcmVzZXQgd2hlbiB0aGUgdnJpbmcgYWRkcmVzcyBpcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB2aWEgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aGljaCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdmhvc3QgZGV2aWNlIGlvY3RscyAoZS5nLiBgL2Rldi92aG9zdC1uZXRgLCBgL2Rldi92aG9zdC12c29ja2ApLiBGdXp6aW5nIGB2aG9zdF92cmluZ19pb2N0bGAgd2lsbCBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFjZTNhMGIxNGZiNTkyZDBjZGFiMzc5YjQ4MmExNmFjNWFmOTA0ODgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDAzOjI3OjM0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92aG9zdC5jIGIvZHJpdmVycy92aG9zdC92aG9zdC5jCmluZGV4IDRjNTI1YjNlMTZlYWQuLjc3Yzk2OTkzMTAwYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmMKQEAgLTIxMjYsNiAmIzQzOzIxMjYsMTQgQEAgc3RhdGljIGxvbmcgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyKHN0cnVjdCB2aG9zdF9kZXYgKmQsCiAJCUJVRygpOwogCX0KIAomIzQzOwkvKgomIzQzOwkgKiBUaGUgbWV0YWRhdGEgY2FjaGUgaG9sZHMgdGhlIElPVExCIG1hcHBpbmcgdGhhdCBiYWNrZWQgdGhlIHByZXZpb3VzCiYjNDM7CSAqIGRlc2MvYXZhaWwvdXNlZCBhZGRyZXNzZXMgYW5kIHZyaW5nIHNpemUsIGJvdGggb2Ygd2hpY2ggYXJlIGJlaW5nCiYjNDM7CSAqIHJlcGxhY2VkIGhlcmUuICBpb3RsYl9hY2Nlc3Nfb2soKSB0YWtlcyBhIGNhY2hlIGhpdCBhcyBwcm9vZiB0aGF0IHRoZQomIzQzOwkgKiByZWdpb24gd2FzIHZhbGlkYXRlZCwgc28gdGhlIHN0YWxlIGVudHJpZXMgaGF2ZSB0byBnby4KJiM0MzsJICovCiYjNDM7CV9fdmhvc3RfdnFfbWV0YV9yZXNldCh2cSk7CiYjNDM7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dnEtJmd0O211dGV4KTsKIAogCXJldHVybiByOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTAxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZob3N0IERyaXZlciBQYXRjaCBBbmFseXNpcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgX192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKWAgd2l0aGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHIoKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZywgYW5kIGl0IGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgdmhvc3QgZHJpdmVyIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB1c2Vyc3BhY2UgdGhyb3VnaCBkZXZpY2VzIGxpa2UgYC9kZXYvdmhvc3QtbmV0YCBhbmQgYC9kZXYvdmhvc3QtdnNvY2tgLCBJ4oCZbSBhbHJlYWR5IGZsYWdnaW5nIHRoaXMgYXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEFueSBjaGFuZ2UgaW4gdGhpcyBhcmVhIGNhbiBoYXZlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4KCk5vdywgbGV0JiMzOTtzIGRpdmUgZGVlcGVyLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgLiBJcyBpdCBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gdGhlIG1vZHVsZSwgb3IgaXMgaXQgZXhwb3J0ZWQgc29tZWhvdz8gKkFoKiwgaXQmIzM5O3Mgc3RhdGljIHdpdGhpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gVGhhdCBsaW1pdHMgaXRzIGRpcmVjdCBhY2Nlc3NpYmlsaXR5LCBidXQgdGhhdCBkb2VzbiYjMzk7dCBtZWFuIGl0JiMzOTtzIHNhZmUgLSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBub3QgbmVjZXNzYXJpbHkgaW5oZXJlbnRseSBsZXNzIHZ1bG5lcmFibGUuIExldCYjMzk7cyBzZWUsIG5vdyBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdobyBjYWxscyBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCB0byBzZWUgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGUgYWRkZWQgY2FsbCB0byBgX192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKWAuIFRoaXMgbWlnaHQgcmV2ZWFsIHRoZSBhdHRhY2sgc3VyZmFjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF92cmluZ19zZXRfbnVtX2FkZHImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L3Zob3N0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92aG9zdC5jPTIwNTc9c3RhdGljIGxvbmcgdmhvc3RfdnJpbmdfc2V0X2FkZHIoc3RydWN0IHZob3N0X2RldiAqZCxcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjEwOC1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMTA5OnN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIxMTAtXHRcdFx0XHQgICAgIHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxLFxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMTQxPWxvbmcgdmhvc3RfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncClcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjE1Ny1cdCAgICBpb2N0bCA9PSBWSE9TVF9TRVRfVlJJTkdfQUREUikge1xuZHJpdmVycy92aG9zdC92aG9zdC5jOjIxNTg6XHRcdHJldHVybiB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHIoZCwgdnEsIGlvY3RsLCBhcmdwKTtcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTU5LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqVmhvc3QgUmluZyBJT0NUTCBBbmFseXNpcyoqCgpSaWdodCwgYHZob3N0X3ZyaW5nX2lvY3RsYCBpcyB0aGUga2V5IGZ1bmN0aW9uIGhlcmUuIEl0JiMzOTtzIHRoZSBvbmUgdGhhdCBjYWxscyBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYC4gQW5kIGJlY2F1c2UgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHVzZWQgYnkgYWxsIHRoZSBkaWZmZXJlbnQgdmhvc3QgZHJpdmVycyDigJMgbmV0LCB2c29jaywgc2NzaSwgYW5kIHRoZSByZXN0IOKAkyBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgc3Ryb25nIEZvY3VzU3ltYm9sLiBJdCBzZWVtcyBsaWtlIHRoaXMgYGlvY3RsYCBpcyB0aGUgY2VudHJhbCBwb2ludCBmb3IgbWFuYWdpbmcgdGhlIHZpcnR1YWwgcmluZ3MuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgY3JpdGljYWwgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGRyaXZlcnMvdmhvc3QvS2NvbmZpZ2AgdG8gc2VlIHdoYXQga25vYnMgYW5kIGxldmVycyBhcmUgYXZhaWxhYmxlLCBhbmQgaG93IHRoZXkgbWlnaHQgYWZmZWN0IHRoZSBiZWhhdmlvciBvZiBgdmhvc3RfdnJpbmdfaW9jdGxgLiBUaGlzIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFuZCBwcm9kdWN0aXZlIHBsYWNlIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSE9TVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyOmNvbmZpZyBWSE9TVF9JT1RMQlxuZHJpdmVycy92aG9zdC9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy04LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjk6Y29uZmlnIFZIT1NUX1JJTkdcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0xMC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTE1LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjE2OmNvbmZpZyBWSE9TVF9UQVNLXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMTctXHRib29sXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTE5LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjIwOmNvbmZpZyBWSE9TVFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTIxLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjctXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6Mjg6bWVudWNvbmZpZyBWSE9TVF9NRU5VXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjktXHRib29sIFwmIzM0O1ZIT1NUIGRyaXZlcnNcJiMzNDtcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWc9MzI9aWYgVkhPU1RfTUVOVVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTMzLVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjM0OmNvbmZpZyBWSE9TVF9ORVRcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0zNS1cdHRyaXN0YXRlIFwmIzM0O0hvc3Qga2VybmVsIGFjY2VsZXJhdG9yIGZvciB2aXJ0aW8gbmV0XCYjMzQ7XG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTQ1LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjQ2OmNvbmZpZyBWSE9TVF9TQ1NJXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNDctXHR0cmlzdGF0ZSBcJiMzNDtWSE9TVF9TQ1NJIFRDTSBmYWJyaWMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU1LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjU2OmNvbmZpZyBWSE9TVF9WU09DS1xuZHJpdmVycy92aG9zdC9LY29uZmlnLTU3LVx0dHJpc3RhdGUgXCYjMzQ7dmhvc3QgdmlydGlvLXZzb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy02OS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo3MDpjb25maWcgVkhPU1RfVkRQQVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTcxLVx0dHJpc3RhdGUgXCYjMzQ7Vmhvc3QgZHJpdmVyIGZvciB2RFBBLWJhc2VkIGJhY2tlbmRcJiMzNDtcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWctODItXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6ODM6Y29uZmlnIFZIT1NUX0NST1NTX0VORElBTl9MRUdBQ1lcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7Q3Jvc3MtZW5kaWFuIHN1cHBvcnQgZm9yIHZob3N0XCYjMzQ7XG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTk3LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjk4OmNvbmZpZyBWSE9TVF9FTkFCTEVfRk9SS19PV05FUl9DT05UUk9MXG5kcml2ZXJzL3Zob3N0L0tjb25maWctOTktXHRib29sIFwmIzM0O0VuYWJsZSBWSE9TVF9FTkFCTEVfRk9SS19PV05FUl9DT05UUk9MXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgzOQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgVmlydHVhbCBIb3N0IEFyY2hpdGVjdHVyZSoqCgpPa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGBWSE9TVGAuIFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgYnVpbGRpbmcgYmxvY2suIEJ1dCBpdCBhcHBlYXJzIHRoYXQgc3BlY2lmaWMgdmlydHVhbGl6ZWQgZnVuY3Rpb25hbGl0aWVzIGFyZSBjaG9zZW4gdmlhIG1vcmUgc3BlY2lhbGl6ZWQgb3B0aW9ucy4gUmlnaHQsIHNvIGBWSE9TVGAgaXMgdGhlIGZvdW5kYXRpb24sIGFuZCB0aGVuIHdlIGhhdmUgdGhlc2Ugc3BlY2lmaWMgZmxhdm9ycyBsaWtlIGBWSE9TVF9ORVRgIGFuZCBgVkhPU1RfVlNPQ0tgLiBNYWtlcyBzZW5zZSwgZm9yIG1vZHVsYXJpdHkuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSBob3cgYFZIT1NUX05FVGAgYW5kIGBWSE9TVF9WU09DS2AgdGllIGludG8gdGhpcyBvdmVyYWxsIHBpY3R1cmUgYW5kIHdoYXQgdGhleSBicmluZyB0byB0aGUgdGFibGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzcGVjaWZpY3MgaW50ZWdyYXRlIHdpdGggdGhhdCBjZW50cmFsIGBWSE9TVGAgY29uc3RydWN0LiBUaGlzIGFwcHJvYWNoIGlzIGNvbW1vbiwgYW5kIEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3MgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBWSE9TVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWc9OT1jb25maWcgVkhPU1RfUklOR1xuZHJpdmVycy92aG9zdC9LY29uZmlnLTEwLVx0dHJpc3RhdGVcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoxMTpcdHNlbGVjdCBWSE9TVF9JT1RMQlxuZHJpdmVycy92aG9zdC9LY29uZmlnLTEyLVx0aGVscFxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZz0yMD1jb25maWcgVkhPU1RcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0yMS1cdHRyaXN0YXRlXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6MjI6XHRzZWxlY3QgVkhPU1RfSU9UTEJcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyMzpcdHNlbGVjdCBWSE9TVF9UQVNLXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjQtXHRoZWxwXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnPTM0PWNvbmZpZyBWSE9TVF9ORVRcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMzYtXHRkZXBlbmRzIG9uIE5FVCBcdTAwMjZcdTAwMjYgRVZFTlRGRCBcdTAwMjZcdTAwMjYgKFRVTiB8fCAhVFVOKSBcdTAwMjZcdTAwMjYgKFRBUCB8fCAhVEFQKVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjM3Olx0c2VsZWN0IFZIT1NUXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMzgtXHRoZWxwXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnPTQ2PWNvbmZpZyBWSE9TVF9TQ1NJXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTQ4LVx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRSBcdTAwMjZcdTAwMjYgRVZFTlRGRFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjQ5Olx0c2VsZWN0IFZIT1NUXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTAtXHRzZWxlY3QgU0dfUE9PTFxuLS1cbmRyaXZlcnMvdmhvc3QvS2NvbmZpZz01Nj1jb25maWcgVkhPU1RfVlNPQ0tcbi0tXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTgtXHRkZXBlbmRzIG9uIFZTT0NLRVRTIFx1MDAyNlx1MDAyNiBFVkVOVEZEXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NTk6XHRzZWxlY3QgVkhPU1RcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy02MC1cdHNlbGVjdCBWSVJUSU9fVlNPQ0tFVFNfQ09NTU9OXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnPTcwPWNvbmZpZyBWSE9TVF9WRFBBXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTcyLVx0ZGVwZW5kcyBvbiBFVkVOVEZEXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NzM6XHRzZWxlY3QgVkhPU1RcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy03NC1cdHNlbGVjdCBJUlFfQllQQVNTX01BTkFHRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTUyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEtWTSBWaXJ0dWFsaXphdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCB0aGVzZSBLVk0gY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCBzZWVtcyBsaWtlIGVuYWJsaW5nIGBWSE9TVF9ORVRgIGFuZCBgVkhPU1RfVlNPQ0tgIGlzIGdlbmVyYWxseSBhIGdvb2QgaWRlYSBmb3IgcGVyZm9ybWFuY2UsIHJpZ2h0PyBUaG9zZSBhcmUgaW1wb3J0YW50IGZvciBuZXR3b3JrIGFuZCBzb2NrZXQgdmlydHVhbGl6YXRpb24sIGFuZCBJJiMzOTtkIGxpa2UgdG8gbGV2ZXJhZ2UgdGhvc2UgaW1wcm92ZW1lbnRzIHdoZXJlIHBvc3NpYmxlLiBCdXQgSSBjYW4mIzM5O3QganVzdCBlbmFibGUgdGhlbSBibGluZGx5OyBJIG5lZWQgdG8gZW5zdXJlIHRoZSBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIGlzIGluIHBsYWNlLgoKVGhlcmVmb3JlLCB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBpcyBgVkhPU1RfTUVOVWAuIEkgbmVlZCB0aGF0IGVuYWJsZWQgdG8gZXZlbiAqc2VlKiBgVkhPU1RfTkVUYCBhbmQgYFZIT1NUX1ZTT0NLYCwgd2hpY2ggaXMgZmFpcmx5IHN0YW5kYXJkIG1lbnUtZHJpdmVuIHNldHVwLiBOb3csIGJlZm9yZSBJIGp1c3QgZmxpcCB0aGUgc3dpdGNoLCBpdCYjMzk7cyBlc3NlbnRpYWwgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llcyBvZiBgVkhPU1RfTUVOVWAuIEkgbmVlZCB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBpdCBuZWVkcyBpcyBhbHNvIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgZ2xhbmNlIGF0IHRoZSBkZXBlbmRlbmNpZXMgdG8gYXZvaWQgYW55IHVuZm9yZXNlZW4gY29uZmxpY3RzIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkhPU1RfTUVOVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3Zob3N0L0tjb25maWc9MjA9Y29uZmlnIFZIT1NUXG4tLVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTI3LVxuZHJpdmVycy92aG9zdC9LY29uZmlnOjI4Om1lbnVjb25maWcgVkhPU1RfTUVOVVxuZHJpdmVycy92aG9zdC9LY29uZmlnLTI5LVx0Ym9vbCBcJiMzNDtWSE9TVCBkcml2ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqVkhPU1QgTW9kdWxlIERlcGVuZGVuY3kgQXNzZXNzbWVudCoqCgpSaWdodCwgc28gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIFZIT1NULXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEZpcnN0IHRoaW5ncyBmaXJzdDogdGhlIGBWSE9TVF9NRU5VYCBvcHRpb24uIEl0IGxvb2tzIGxpa2UgYFZIT1NUX01FTlVgIGRvZXNuJiMzOTt0IGhhdmUgYW55IGRlcGVuZGVuY2llcyBsaXN0ZWQsIHdoaWNoIGlzIGEgZ29vZCBzaWduLiBUaGF0IG1lYW5zLCBhdCBsZWFzdCBpbiB0aGUgZGVwZW5kZW5jaWVzIGNvbnRleHQsIGl0JiMzOTtzIG5vdCBob2xkaW5nIGFueXRoaW5nIHVwLiBCeSBleHRlbnNpb24sIHRoYXQgc2hvdWxkIGJlIHRydWUgZm9yIGBWSE9TVF9ORVRgIGFuZCBgVkhPU1RfVlNPQ0tgIGFzIHdlbGwuIFRoYXQgaXMgYWxsIGNsZWFyIGFuZCBpbiBnb29kIG9yZGVyLiAKCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgYHZob3N0X3ZyaW5nX2lvY3RsYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBJIGFtIGdvaW5nIHRvIGZpbmQgdGhhdCBpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gSSB3aWxsIGhhdmUgdG8gc3RhcnQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zob3N0X3ZyaW5nX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92aG9zdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMTA5PXN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQwLX1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMTQxOmxvbmcgdmhvc3RfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQyLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI3OC19XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjI3OTpFWFBPUlRfU1lNQk9MX0dQTCh2aG9zdF92cmluZ19pb2N0bCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI4MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM2NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBzdW1tYXJ5IGZyb20gbXkgcGVyc3BlY3RpdmUsIGtlZXBpbmcgaW4gbWluZCBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIHRoZSBWaG9zdCBJbmZyYXN0cnVjdHVyZSoqCgpSaWdodCwgc28gYHZob3N0X3ZyaW5nX2lvY3RsYCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkLCB0aGF0JiMzOTtzIGdvb2QuIE5vdywgYmVmb3JlIEkganVtcCB0b28gZGVlcCBpbnRvIHRoaXMgc3BlY2lmaWMgaXNzdWUsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB3ZSB1bmRlcnN0YW5kIHRoZSBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyB2aXJ0dWFsIHF1ZXVlIG1ldGFkYXRhLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBfX3Zob3N0X3ZxX21ldGFfcmVzZXRgIGZ1bmN0aW9uLiBJdCYjMzk7cyBjcnVjaWFsIHdlIGNvbmZpcm0gaG93IHRoYXQmIzM5O3Mgd29ya2luZy4gV2UgY2FuIHByb2JhYmx5IHRyYWNlIHRoaXMgYW5kIHRoZSBvdGhlciBjaGFuZ2VzIGJhY2t3YXJkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X192aG9zdF92cV9tZXRhX3Jlc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC92aG9zdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3Qvdmhvc3QuYz0zMzc9RVhQT1JUX1NZTUJPTF9HUEwodmhvc3RfcG9sbF9xdWV1ZSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzM4LVxuZHJpdmVycy92aG9zdC92aG9zdC5jOjMzOTpzdGF0aWMgdm9pZCBfX3Zob3N0X3ZxX21ldGFfcmVzZXQoc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEpXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzQwLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MzQ3PXN0YXRpYyB2b2lkIHZob3N0X3ZxX21ldGFfcmVzZXQoc3RydWN0IHZob3N0X2RldiAqZClcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzUxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZC1cdTAwM2VudnFzOyAmIzQzOyYjNDM7aSlcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzozNTI6XHRcdF9fdmhvc3RfdnFfbWV0YV9yZXNldChkLVx1MDAzZXZxc1tpXSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzUzLX1cbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MzY3PXN0YXRpYyB2b2lkIHZob3N0X3ZxX3Jlc2V0KHN0cnVjdCB2aG9zdF9kZXYgKmRldixcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzk2LVx0dmhvc3RfdnJpbmdfY2FsbF9yZXNldChcdTAwMjZ2cS1cdTAwM2VjYWxsX2N0eCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6Mzk3Olx0X192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKTtcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zOTgtfVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMTA5PXN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTM0LVx0ICovXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjEzNTpcdF9fdmhvc3RfdnFfbWV0YV9yZXNldCh2cSk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjEzNi1cbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjI4MT1pbnQgdmhvc3RfaW5pdF9kZXZpY2VfaW90bGIoc3RydWN0IHZob3N0X2RldiAqZClcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI5Ny1cdFx0dnEtXHUwMDNlaW90bGIgPSBuaW90bGI7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjI5ODpcdFx0X192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKTtcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMjk5LVx0XHRtdXRleF91bmxvY2soXHUwMDI2dnEtXHUwMDNlbXV0ZXgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTIzCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkRpdmluZyBpbnRvIHRoZSBWaG9zdCBDb2RlKioKClJpZ2h0LCBzbyBgX192aG9zdF92cV9tZXRhX3Jlc2V0YCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCYjMzk7cyBsb2NhbGl6ZWQsIGFuZCBpdCYjMzk7cyBub3QgYSBwcmltYXJ5IGVudHJ5IHBvaW50LCB3aGljaCBtYWtlcyBpdCBsZXNzIGludGVyZXN0aW5nIGZyb20gYSBoaWdoLWxldmVsIHBlcnNwZWN0aXZlLiBXaXRoIHRoYXQgaW4gbWluZCwgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiBpcyBgdmhvc3RfdnJpbmdfaW9jdGxgLiBJdCBmZWVscyBsaWtlIHRoZSBiZXN0IGNhbmRpZGF0ZSBmb3IgdGhlIGNvcmUgc3ltYm9sIHdlJiMzOTtyZSBhZnRlciwgdGhlIG9uZSB0aGF0IHByb2JhYmx5IGhhbmRsZXMgdGhlIG1haW4gaW50ZXJhY3Rpb24uCgpOb3csIGJlZm9yZSBJIGdldCB0b28gaW52ZXN0ZWQsIGxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0uIElzIGB2aG9zdF92cmluZ19pb2N0bGAgYWN0dWFsbHkgY2FsbGVkIGZyb20gYSBoaWdoZXItbGV2ZWwgYGlvY3RsYCBoYW5kbGVyIGxpa2UgYHZob3N0X25ldF9pb2N0bGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBHb3R0YSB0cmFjZSB0aGUgY2FsbCBncmFwaCB0byBiZSBzdXJlIHdlIGFyZSB0cmFja2luZyB0aGUgcmlnaHQgc3BvdC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGluZGVlZCBhIG1ham9yIGVudHJ5IHBvaW50IGZvciBpb2N0bCBjYWxscyByZWxhdGVkIHRvIHRoZSB2cmluZy4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcyB0byBlbnN1cmUgdGhpcyBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aG9zdF92cmluZ19pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvbmV0LmM9MTczOD1zdGF0aWMgbG9uZyB2aG9zdF9uZXRfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcbi0tXG5kcml2ZXJzL3Zob3N0L25ldC5jLTE4MjktXHRcdGlmIChyID09IC1FTk9JT0NUTENNRClcbmRyaXZlcnMvdmhvc3QvbmV0LmM6MTgzMDpcdFx0XHRyID0gdmhvc3RfdnJpbmdfaW9jdGwoXHUwMDI2bi1cdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcbmRyaXZlcnMvdmhvc3QvbmV0LmMtMTgzMS1cdFx0ZWxzZVxuLS1cbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzNjI9dmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcbi0tXG5kcml2ZXJzL3Zob3N0L3Njc2kuYy0yNDMwLVx0XHRpZiAociA9PSAtRU5PSU9DVExDTUQpXG5kcml2ZXJzL3Zob3N0L3Njc2kuYzoyNDMxOlx0XHRcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcdTAwMjZ2cy1cdTAwM2VkZXYsIGlvY3RsLCBhcmdwKTtcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0MzItXHRcdG11dGV4X3VubG9jayhcdTAwMjZ2cy1cdTAwM2VkZXYubXV0ZXgpO1xuLS1cbmRyaXZlcnMvdmhvc3QvdGVzdC5jPTMxNz1zdGF0aWMgbG9uZyB2aG9zdF90ZXN0X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4tLVxuZHJpdmVycy92aG9zdC90ZXN0LmMtMzUyLSAgICAgICAgICAgICAgICBpZiAociA9PSAtRU5PSU9DVExDTUQpXG5kcml2ZXJzL3Zob3N0L3Rlc3QuYzozNTM6ICAgICAgICAgICAgICAgICAgICAgICAgciA9IHZob3N0X3ZyaW5nX2lvY3RsKFx1MDAyNm4tXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XG5kcml2ZXJzL3Zob3N0L3Rlc3QuYy0zNTQtXHRcdHZob3N0X3Rlc3RfZmx1c2gobik7XG4tLVxuZHJpdmVycy92aG9zdC92ZHBhLmM9NjMyPXN0YXRpYyBsb25nIHZob3N0X3ZkcGFfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X3ZkcGEgKnYsIHVuc2lnbmVkIGludCBjbWQsXG4tLVxuZHJpdmVycy92aG9zdC92ZHBhLmMtNzIwLVxuZHJpdmVycy92aG9zdC92ZHBhLmM6NzIxOlx0ciA9IHZob3N0X3ZyaW5nX2lvY3RsKFx1MDAyNnYtXHUwMDNldmRldiwgY21kLCBhcmdwKTtcbmRyaXZlcnMvdmhvc3QvdmRwYS5jLTcyMi1cdGlmIChyKVxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMTA5PXN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuLS1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQwLX1cbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMTQxOmxvbmcgdmhvc3RfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncClcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQyLXtcbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI3OC19XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjI3OTpFWFBPUlRfU1lNQk9MX0dQTCh2aG9zdF92cmluZ19pb2N0bCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI4MC1cbi0tXG5kcml2ZXJzL3Zob3N0L3Zob3N0Lmg9MjIyPWxvbmcgdmhvc3RfZGV2X2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKiwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0Lmg6MjIzOmxvbmcgdmhvc3RfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncCk7XG5kcml2ZXJzL3Zob3N0L3Zob3N0LmgtMjI0LWxvbmcgdmhvc3Rfd29ya2VyX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgdW5zaWduZWQgaW50IGlvY3RsLFxuLS1cbmRyaXZlcnMvdmhvc3QvdnNvY2suYz04ODk9c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXG4tLVxuZHJpdmVycy92aG9zdC92c29jay5jLTkzNS1cdFx0aWYgKHIgPT0gLUVOT0lPQ1RMQ01EKVxuZHJpdmVycy92aG9zdC92c29jay5jOjkzNjpcdFx0XHRyID0gdmhvc3RfdnJpbmdfaW9jdGwoXHUwMDI2dnNvY2stXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTM3LVx0XHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNDgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVmhvc3QgVnJpbmcgSW9jdGwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCB5ZXMsIGB2aG9zdF92cmluZ19pb2N0bGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyB2cmluZyBpb2N0bHMuIFRoZSBjb3JlIGlzc3VlIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGlzIHRoYXQgdGhlIG1ldGFkYXRhIGNhY2hlIGlzbiYjMzk7dCBiZWluZyByZXNldCB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGNoYW5nZXMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGJ1ZywgYW5kIHRoaXMgZml4IGFwcGVhcnMgdG8gYmUgZGlyZWN0bHkgYWRkcmVzc2luZyBpdC4gSSBjYW4gc2VlIHRoaXMgaXMgZnVuY3Rpb25hbCBhbmQsIHJlYWxpc3RpY2FsbHksIHJlYWNoYWJsZSB1bmRlciB0aGUgcmlnaHQgY2lyY3Vtc3RhbmNlcy4KClRvIHJlcHJvZHVjZSBhbmQgdGVzdCB0aGlzIGVmZmVjdGl2ZWx5LCBJJiMzOTtsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQ6IGBWSE9TVF9NRU5VYCwgYFZIT1NUX05FVGAsIGFuZCBgVkhPU1RfVlNPQ0tgLiBJJiMzOTtsbCBiZSBmb2N1c2luZyBzcGVjaWZpY2FsbHkgb24gdGhlIGB2aG9zdF92cmluZ19pb2N0bGAgc3ltYm9sIGZvciB2ZXJpZmljYXRpb24uCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgVkhPU1RfTUVOVWAgaXMgdGhlIGNvcnJlY3QgbmFtZSDigJMgeWVwLCBpdCYjMzk7cyBjb25maXJtZWQsIGBtZW51Y29uZmlnIFZIT1NUX01FTlVgLgoKTm93LCBsZXQgbWUgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IHdvdWxkIGJlIGJlbmVmaWNpYWwuIEkgc2VlIGBWSE9TVF9TQ1NJYCwgYFZIT1NUX1ZEUEFgLCBhbmQgYFZIT1NUX1RFU1RgLiBgVkhPU1RfVEVTVGAgc291bmRzIGxpa2UgaXQgbWlnaHQgYmUgYSBnb29kIG9uZSB0byBlbmFibGUgYXMgd2VsbCwgdG8gaGVscCB3aXRoIGNvbXByZWhlbnNpdmUgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkhPU1RfVEVTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MzYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSByZXZpZXdpbmcgdGhpczoKCioqSW52ZXN0aWdhdGluZyB0aGUgS2NvbmZpZyBQbGFjZW1lbnQgb2YgVkhPU1RfVEVTVCoqCgpPa2F5LCBob2xkIG9uIGEgbWludXRlLiBJIHdhcyBwcmV0dHkgc3VyZSBgVkhPU1RfVEVTVGAgd2FzIGEgc3RhbmRhcmQgb3B0aW9uLCBidXQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBub3Qgc2hvd2luZyB1cCBpbiB0aGUgdXN1YWwgcGxhY2UsIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgLiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgaXQmIzM5O3MgYWN0dWFsbHkgZGVmaW5lZC4gSSYjMzk7bGwgbmVlZCB0byBnbyBodW50aW5nIGZvciBpdCB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBgZ3JlcGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgdG8gdHJhY2sgZG93biBpdHMgZGVmaW5pdGlvbi4gSXQmIzM5O3MgcG9zc2libGUgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBpbmNsdWRlZCBmcm9tIGVsc2V3aGVyZSwgb3IgZXZlbiBkZWZpbmVkIHdpdGhpbiBhIGRpZmZlcmVudCBkcml2ZXImIzM5O3MgS2NvbmZpZyBmaWxlIHRoYXQmIzM5O3MgcmVsYXRlZCB0byB2aG9zdCBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIGEgY29tbW9uIHRoaW5nIGluIGNvbXBsZXgga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBzbyBJIHdvbiYjMzk7dCBhc3N1bWUgaXQmIzM5O3Mgc2ltcGx5IG1pc3NpbmcuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBjYXJlZnVsbHksIGNoZWNrIGZvciBhbnkgYCNzb3VyY2VgIG9yIGBzb3VyY2VgIGRpcmVjdGl2ZXMgaW4gdGhlIHZob3N0IEtjb25maWcgdG8gc2VlIGlmIHRoZSBtaXNzaW5nIG9wdGlvbiBpcyBkZWZpbmVkIHRoZXJlLiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkhPU1RfVEVTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMzIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENvbXBpbGF0aW9uIENvbnRleHQgb2YgYGRyaXZlcnMvdmhvc3QvdGVzdC5jYCoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGRyaXZlcnMvdmhvc3QvdGVzdC5jYCBmaWxlIGdldHMgYnVpbHQgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgYnVpbGQgc3lzdGVtLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgdHJpZ2dlciBpdHMgY29tcGlsYXRpb24uIEkga25vdyB0aGlzIGlzbiYjMzk7dCBnb2luZyB0byBiZSBhIHNpbXBsZSAmIzM0O2dyZXAgZm9yIEtjb25maWcmIzM0OyBzZWFyY2gg4oCTIGl0JiMzOTtzIGxpa2VseSBwYXJ0IG9mIGEgbW9yZSBjb21wbGV4IGRlcGVuZGVuY3kgdHJlZSwgcG90ZW50aWFsbHkgaW52b2x2aW5nIG11bHRpcGxlIEtjb25maWcgZnJhZ21lbnRzIG9yIGV2ZW4gaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRocm91Z2ggb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSBidWlsZCBzeXN0ZW0mIzM5O3MgbG9naWMgdG8gc2VlIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGJlY2F1c2UgYSBsb3Qgb2YgdGhlc2UgdGhpbmdzIG9mdGVuIGJ1aWxkIHdoZW4gY2VydGFpbiBtb2R1bGVzIGFyZSBzZWxlY3RlZCwgd2hpY2ggdGhlbiBjYXVzZSB0aGlzIHRvIGJ1aWxkIGluZGlyZWN0bHkuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBidWlsZCBzeXN0ZW0gYW5kIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGVzdC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aG9zdC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzODYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSB2aG9zdCBEcml2ZXIgTWFrZWZpbGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIE15IGluc3RpbmN0IHNheXMgdG8gc3RhcnQgd2l0aCB0aGUgYGRyaXZlcnMvdmhvc3QvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBhcmUgbGlrZWx5IGRlZmluZWQgZm9yIHRoZSB2aG9zdCBkcml2ZXIuIEl0JiMzOTtzIHRoZSBjZW50cmFsIGh1YiBmb3IgaG93IHRoaXMgcGFydCBvZiB0aGUga2VybmVsIG1vZHVsZSBpcyBwdXQgdG9nZXRoZXIuIFRoaXMgaXMgdGhlIHBsYWNlIHdoZXJlIEkgY2FuIGdldCBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIG1vZHVsZSYjMzk7cyBzdHJ1Y3R1cmUgYW5kIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSwgcGFydGljdWxhcmx5IGNvbmNlcm5pbmcgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBJIGV4cGVjdCB0byBmaW5kIGluY2x1ZGUgcGF0aHMsIG9iamVjdCBmaWxlIGRlZmluaXRpb25zLCBhbmQgbWF5YmUgZXZlbiBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIGJhc2VkIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIG9yIGZlYXR1cmVzLiBIb3BlZnVsbHksIGl0IGlzIHdlbGwtY29tbWVudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmhvc3QvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdG9iai0kKENPTkZJR19WSE9TVF9ORVQpICYjNDM7PSB2aG9zdF9uZXQub1xuICAgMzpcdHZob3N0X25ldC15IDo9IG5ldC5vXG4gICA0Olx0XG4gICA1Olx0b2JqLSQoQ09ORklHX1ZIT1NUX1NDU0kpICYjNDM7PSB2aG9zdF9zY3NpLm9cbiAgIDY6XHR2aG9zdF9zY3NpLXkgOj0gc2NzaS5vXG4gICA3Olx0XG4gICA4Olx0b2JqLSQoQ09ORklHX1ZIT1NUX1ZTT0NLKSAmIzQzOz0gdmhvc3RfdnNvY2sub1xuICAgOTpcdHZob3N0X3Zzb2NrLXkgOj0gdnNvY2sub1xuICAxMDpcdFxuICAxMTpcdG9iai0kKENPTkZJR19WSE9TVF9SSU5HKSAmIzQzOz0gdnJpbmdoLm9cbiAgMTI6XHRcbiAgMTM6XHRvYmotJChDT05GSUdfVkhPU1RfVkRQQSkgJiM0Mzs9IHZob3N0X3ZkcGEub1xuICAxNDpcdHZob3N0X3ZkcGEteSA6PSB2ZHBhLm9cbiAgMTU6XHRcbiAgMTY6XHRvYmotJChDT05GSUdfVkhPU1QpXHQmIzQzOz0gdmhvc3Qub1xuICAxNzpcdFxuICAxODpcdG9iai0kKENPTkZJR19WSE9TVF9JT1RMQikgJiM0Mzs9IHZob3N0X2lvdGxiLm9cbiAgMTk6XHR2aG9zdF9pb3RsYi15IDo9IGlvdGxiLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg5OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGxpa2UgSSB3b3VsZDoKCioqRXhhbWluaW5nIEJ1aWxkIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aHkgdGhpcyBwYXJ0aWN1bGFyIHRlc3QgaXNuJiMzOTt0IHJ1bm5pbmcgb3IgYmVpbmcgYnVpbHQsIG9yIG1vcmUgc3BlY2lmaWNhbGx5LCAqd2hlcmUqIHRoaXMgdGVzdCBhY3R1YWxseSBsaXZlcyBpbiB0aGUgYnVpbGQgc3RydWN0dXJlLiBGaXJzdCB0aG91Z2h0OiBtYXliZSBgdGVzdC5jYCBpc24mIzM5O3QgYnVpbHQgYnkgZGVmYXVsdCBvciBpdCYjMzk7cyBzb21ld2hlcmUgZWxzZSBpbiB0aGUgY29kZSBiYXNlLCBsaWtlbHkgYSBkaWZmZXJlbnQgYnJhbmNoLiBBIHF1aWNrIGBncmVwYCBjb25maXJtZWQgdGhhdCBgZHJpdmVycy92aG9zdC90ZXN0LmNgIGV4aXN0cy4gCgpBaCwgYW5kIGl0IGxvb2tzIGxpa2UgYHRvb2xzL3ZpcnRpby9NYWtlZmlsZWAgaGFuZGxlcyBgZHJpdmVycy92aG9zdC90ZXN0LmNgLiBOb3RlZC4KCkZvciBub3csIEkmIzM5O20gdGhpbmtpbmcgSSBvbmx5IG5lZWQgYFZIT1NUX05FVGAgYW5kIGBWSE9TVF9WU09DS2AgdG8gYmUgY29uZmlndXJlZCwgbGV0JiMzOTtzIHNlZSBhYm91dCB0aGVpciBkZXBlbmRlbmNpZXMuCgpMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgcmVxdWlyZWQgZm9yIGBWSE9TVF9ORVRgLiBUaGUgZGVwZW5kZW5jeSBleHByZXNzaW9uIGlzIGBORVQgJmFtcDsmYW1wOyBFVkVOVEZEICZhbXA7JmFtcDsgKFRVTiB8fCAhVFVOKSAmYW1wOyZhbXA7IChUQVAgfHwgIVRBUClgLiBgRVZFTlRGRGAgaXMgcHJldHR5IHN0YW5kYXJkIHRvIGhhdmUgZW5hYmxlZCwgYW5kIGBORVRgIGFsc28uICBgVFVOYCBhbmQgYFRBUGAgYXJlIGFsc28gbGlrZWx5IGVuYWJsZWQsIHNvIHRoYXQmIzM5O3Mgbm90IGEgbWFqb3IgaXNzdWUuCgpOb3cgZm9yIGBWSE9TVF9WU09DS2AuIEl0cyBkZXBlbmRlbmNpZXMgYXJlIGBWU09DS0VUUyAmYW1wOyZhbXA7IEVWRU5URkRgLiAgU28gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYFZTT0NLRVRTYCBkZXBlbmRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwMzoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVlNPQ0tFVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay9LY29uZmlnLTUtXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6Njpjb25maWcgVlNPQ0tFVFNcbm5ldC92bXdfdnNvY2svS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXQgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMTgtXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6MTk6Y29uZmlnIFZTT0NLRVRTX0RJQUdcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yOC1cbm5ldC92bXdfdnNvY2svS2NvbmZpZzoyOTpjb25maWcgVlNPQ0tFVFNfTE9PUEJBQ0tcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0zMC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0cyBsb29wYmFjayB0cmFuc3BvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDM6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY0MwoJCQkJCQkJb3V0cHV0OiAxNjgKCQkJCQkJCXRob3VnaHRzOiAyNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQWRkaW5nIFZTT0NLRVRTIHRvIHRoZSBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBhZGQgYFZTT0NLRVRTYCB0byB0aGUgY29uZmlndXJhdGlvbnMuIEdpdmVuIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9ucywgbmFtZWx5IGBWSE9TVF9NRU5VYCwgYFZIT1NUX05FVGAsIGFuZCBgVkhPU1RfVlNPQ0tgLCBgVlNPQ0tFVFNgIHNlZW1zIGxpa2UgYSBsb2dpY2FsIGFuZCBuZWNlc3NhcnkgYWRkaXRpb24uCgpUaGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZXJlJiMzOTtzIGEgYnVnIGZpeCB0aGF0IGFkZHJlc3NlcyBhIHByb2JsZW0gaW4gYHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcmAuIFNwZWNpZmljYWxseSwgdGhlIG1ldGFkYXRhIGNhY2hlIGlzbiYjMzk7dCBiZWluZyByZXNldCBwcm9wZXJseSB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGlzIGFsdGVyZWQuIE5vdywgdGhpcyBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCBmdW5jdGlvbiBpcyBhY2Nlc3NlZCB0aHJvdWdoIGB2aG9zdF92cmluZ19pb2N0bGAuIFRoaXMgaW9jdGwgaXMgaG93IHVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCB0aGUgdmhvc3QgZGV2aWNlIGlvY3RscywgbGlrZSBgL2Rldi92aG9zdC1uZXRgIGFuZCBgL2Rldi92aG9zdC12c29ja2AuIFNvLCBmdXp6aW5nIGB2aG9zdF92cmluZ19pb2N0bGAgaXMgZ29pbmcgdG8gYmUgYSBnb29kIHdheSB0byBleGVyY2lzZSBhbmQgcmV2ZWFsIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGguCgpUbyBjb25maXJtIHRoaXMsIGxldCYjMzk7cyBkbyBhIHF1aWNrIHNjYW4gb2YgdGhlIGNvZGUgdG8gbWFrZSBzdXJlIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSB2aWEgYHZob3N0X3ZyaW5nX2lvY3RsYC4gWWVzLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgdmhvc3RfdnJpbmdfaW9jdGxgIGhhbmRsZXMgYFZIT1NUX1NFVF9WUklOR19BRERSYCBhbmQgc3Vic2VxdWVudGx5IGNhbGxzIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgdmhvc3QgZHJpdmVyLCBhbmQsIHRoZXJlZm9yZSwgd2FycmFudHMgc2VyaW91cyBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDAzOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSE9TVF9NRU5VJiMzNDssCiAgICAmIzM0O1ZIT1NUX05FVCYjMzQ7LAogICAgJiMzNDtWSE9TVF9WU09DSyYjMzQ7LAogICAgJiMzNDtWU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zob3N0X3ZyaW5nX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgIHdoZXJlIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyBub3QgcmVzZXQgd2hlbiB0aGUgdnJpbmcgYWRkcmVzcyBpcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB2aWEgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aGljaCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdmhvc3QgZGV2aWNlIGlvY3RscyAoZS5nLiBgL2Rldi92aG9zdC1uZXRgLCBgL2Rldi92aG9zdC12c29ja2ApLiBGdXp6aW5nIGB2aG9zdF92cmluZ19pb2N0bGAgd2lsbCBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkhPU1RfTUVOVSYjMzQ7LAogICAgJiMzNDtWSE9TVF9ORVQmIzM0OywKICAgICYjMzQ7VkhPU1RfVlNPQ0smIzM0OywKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aG9zdF92cmluZ19pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCB3aGVyZSB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgbm90IHJlc2V0IHdoZW4gdGhlIHZyaW5nIGFkZHJlc3MgaXMgY2hhbmdlZC4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdmlhIGB2aG9zdF92cmluZ19pb2N0bGAgd2hpY2ggaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHZob3N0IGRldmljZSBpb2N0bHMgKGUuZy4gYC9kZXYvdmhvc3QtbmV0YCwgYC9kZXYvdmhvc3QtdnNvY2tgKS4gRnV6emluZyBgdmhvc3RfdnJpbmdfaW9jdGxgIHdpbGwgZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzozNS4wNTIyMDEyMzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY3NjYyMzY0OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkhPU1RfTUVOVVwiLFxuICAgIFwiVkhPU1RfTkVUXCIsXG4gICAgXCJWSE9TVF9WU09DS1wiLFxuICAgIFwiVlNPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aG9zdF92cmluZ19pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgIHdoZXJlIHRoZSBtZXRhZGF0YSBjYWNoZSBpcyBub3QgcmVzZXQgd2hlbiB0aGUgdnJpbmcgYWRkcmVzcyBpcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB2aWEgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aGljaCBpcyBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgdmhvc3QgZGV2aWNlIGlvY3RscyAoZS5nLiBgL2Rldi92aG9zdC1uZXRgLCBgL2Rldi92aG9zdC12c29ja2ApLiBGdXp6aW5nIGB2aG9zdF92cmluZ19pb2N0bGAgd2lsbCBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjc6MzUuMDUyMjA2MjA2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzc4MzE0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxY2UzYTBiMTRmYjU5MmQwY2RhYjM3OWI0ODJhMTZhYzVhZjkwNDg4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMDM6Mjc6MzQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aG9zdC92aG9zdC5jIGIvZHJpdmVycy92aG9zdC92aG9zdC5jXFxuaW5kZXggNGM1MjViM2UxNmVhZC4uNzdjOTY5OTMxMDBiNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcXG4rKysgYi9kcml2ZXJzL3Zob3N0L3Zob3N0LmNcXG5AQCAtMjEyNiw2ICsyMTI2LDE0IEBAIHN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxcbiBcXHRcXHRCVUcoKTtcXG4gXFx0fVxcbiBcXG4rXFx0LypcXG4rXFx0ICogVGhlIG1ldGFkYXRhIGNhY2hlIGhvbGRzIHRoZSBJT1RMQiBtYXBwaW5nIHRoYXQgYmFja2VkIHRoZSBwcmV2aW91c1xcbitcXHQgKiBkZXNjL2F2YWlsL3VzZWQgYWRkcmVzc2VzIGFuZCB2cmluZyBzaXplLCBib3RoIG9mIHdoaWNoIGFyZSBiZWluZ1xcbitcXHQgKiByZXBsYWNlZCBoZXJlLiAgaW90bGJfYWNjZXNzX29rKCkgdGFrZXMgYSBjYWNoZSBoaXQgYXMgcHJvb2YgdGhhdCB0aGVcXG4rXFx0ICogcmVnaW9uIHdhcyB2YWxpZGF0ZWQsIHNvIHRoZSBzdGFsZSBlbnRyaWVzIGhhdmUgdG8gZ28uXFxuK1xcdCAqL1xcbitcXHRfX3Zob3N0X3ZxX21ldGFfcmVzZXQodnEpO1xcbitcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2cS1cXHUwMDNlbXV0ZXgpO1xcbiBcXG4gXFx0cmV0dXJuIHI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI3OjM1LjQzMDc2NTM0OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwNjM4NzY2MjYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9NRU5VXCIsXG4gICAgXCJWSE9TVF9ORVRcIixcbiAgICBcIlZIT1NUX1ZTT0NLXCIsXG4gICAgXCJWU09DS0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3ZyaW5nX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcmAgd2hlcmUgdGhlIG1ldGFkYXRhIGNhY2hlIGlzIG5vdCByZXNldCB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGlzIGNoYW5nZWQuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHZpYSBgdmhvc3RfdnJpbmdfaW9jdGxgIHdoaWNoIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSB2aG9zdCBkZXZpY2UgaW9jdGxzIChlLmcuIGAvZGV2L3Zob3N0LW5ldGAsIGAvZGV2L3Zob3N0LXZzb2NrYCkuIEZ1enppbmcgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aWxsIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxY2UzYTBiMTRmYjU5MmQwY2RhYjM3OWI0ODJhMTZhYzVhZjkwNDg4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwMzoyNzozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuYyBiL2RyaXZlcnMvdmhvc3Qvdmhvc3QuY1xuaW5kZXggNGM1MjViM2UxNmVhZC4uNzdjOTY5OTMxMDBiNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmhvc3Qvdmhvc3QuY1xuKysrIGIvZHJpdmVycy92aG9zdC92aG9zdC5jXG5AQCAtMjEyNiw2ICsyMTI2LDE0IEBAIHN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxuIFx0XHRCVUcoKTtcbiBcdH1cbiBcbitcdC8qXG4rXHQgKiBUaGUgbWV0YWRhdGEgY2FjaGUgaG9sZHMgdGhlIElPVExCIG1hcHBpbmcgdGhhdCBiYWNrZWQgdGhlIHByZXZpb3VzXG4rXHQgKiBkZXNjL2F2YWlsL3VzZWQgYWRkcmVzc2VzIGFuZCB2cmluZyBzaXplLCBib3RoIG9mIHdoaWNoIGFyZSBiZWluZ1xuK1x0ICogcmVwbGFjZWQgaGVyZS4gIGlvdGxiX2FjY2Vzc19vaygpIHRha2VzIGEgY2FjaGUgaGl0IGFzIHByb29mIHRoYXQgdGhlXG4rXHQgKiByZWdpb24gd2FzIHZhbGlkYXRlZCwgc28gdGhlIHN0YWxlIGVudHJpZXMgaGF2ZSB0byBnby5cbitcdCAqL1xuK1x0X192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKTtcbitcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2cS1cdTAwM2VtdXRleCk7XG4gXG4gXHRyZXR1cm4gcjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI3OjM1LjQzMDc2NzA4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1NTIwNTk5MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVmhvc3QgRHJpdmVyIFBhdGNoIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgX192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKWAgd2l0aGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHIoKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZywgYW5kIGl0IGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgdmhvc3QgZHJpdmVyIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB1c2Vyc3BhY2UgdGhyb3VnaCBkZXZpY2VzIGxpa2UgYC9kZXYvdmhvc3QtbmV0YCBhbmQgYC9kZXYvdmhvc3QtdnNvY2tgLCBJ4oCZbSBhbHJlYWR5IGZsYWdnaW5nIHRoaXMgYXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEFueSBjaGFuZ2UgaW4gdGhpcyBhcmVhIGNhbiBoYXZlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy5cblxuTm93LCBsZXQncyBkaXZlIGRlZXBlci4gTXkgZmlyc3Qgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzY29wZSBvZiBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYC4gSXMgaXQgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIHRoZSBtb2R1bGUsIG9yIGlzIGl0IGV4cG9ydGVkIHNvbWVob3c/ICpBaCosIGl0J3Mgc3RhdGljIHdpdGhpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gVGhhdCBsaW1pdHMgaXRzIGRpcmVjdCBhY2Nlc3NpYmlsaXR5LCBidXQgdGhhdCBkb2Vzbid0IG1lYW4gaXQncyBzYWZlIC0gc3RhdGljIGZ1bmN0aW9ucyBhcmUgbm90IG5lY2Vzc2FyaWx5IGluaGVyZW50bHkgbGVzcyB2dWxuZXJhYmxlLiBMZXQncyBzZWUsIG5vdyBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdobyBjYWxscyBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCB0byBzZWUgaG93IGl0J3MgYmVpbmcgdXNlZC4gVGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoZSBhZGRlZCBjYWxsIHRvIGBfX3Zob3N0X3ZxX21ldGFfcmVzZXQodnEpYC4gVGhpcyBtaWdodCByZXZlYWwgdGhlIGF0dGFjayBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTAxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjc6NDAuOTgyODMwMTkzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMTA3Njk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3ZyaW5nX3NldF9udW1fYWRkclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Zob3N0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC92aG9zdC5jPTIwNTc9c3RhdGljIGxvbmcgdmhvc3RfdnJpbmdfc2V0X2FkZHIoc3RydWN0IHZob3N0X2RldiAqZCxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTA4LVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMTA5OnN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTEwLVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHZob3N0X3ZpcnRxdWV1ZSAqdnEsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjE0MT1sb25nIHZob3N0X3ZyaW5nX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjE1Ny1cXHQgICAgaW9jdGwgPT0gVkhPU1RfU0VUX1ZSSU5HX0FERFIpIHtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjE1ODpcXHRcXHRyZXR1cm4gdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyKGQsIHZxLCBpb2N0bCwgYXJncCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIxNTktXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzo0MS4wMjQ5NDM2MzJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTYyMDAwNjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqVmhvc3QgUmluZyBJT0NUTCBBbmFseXNpcyoqXG5cblJpZ2h0LCBgdmhvc3RfdnJpbmdfaW9jdGxgIGlzIHRoZSBrZXkgZnVuY3Rpb24gaGVyZS4gSXQncyB0aGUgb25lIHRoYXQgY2FsbHMgYHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcmAuIEFuZCBiZWNhdXNlIGl0J3MgZXhwb3J0ZWQgYW5kIHVzZWQgYnkgYWxsIHRoZSBkaWZmZXJlbnQgdmhvc3QgZHJpdmVycyDigJMgbmV0LCB2c29jaywgc2NzaSwgYW5kIHRoZSByZXN0IOKAkyBpdCdzIGRlZmluaXRlbHkgYSBzdHJvbmcgRm9jdXNTeW1ib2wuIEl0IHNlZW1zIGxpa2UgdGhpcyBgaW9jdGxgIGlzIHRoZSBjZW50cmFsIHBvaW50IGZvciBtYW5hZ2luZyB0aGUgdmlydHVhbCByaW5ncy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBjcml0aWNhbCBmdW5jdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBkcml2ZXJzL3Zob3N0L0tjb25maWdgIHRvIHNlZSB3aGF0IGtub2JzIGFuZCBsZXZlcnMgYXJlIGF2YWlsYWJsZSwgYW5kIGhvdyB0aGV5IG1pZ2h0IGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgYHZob3N0X3ZyaW5nX2lvY3RsYC4gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBhbmQgcHJvZHVjdGl2ZSBwbGFjZSB0byBzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkxMCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI3OjQ3Ljk4Njk0NzI1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjY2NzU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkhPU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyOmNvbmZpZyBWSE9TVF9JT1RMQlxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctOC1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6OTpjb25maWcgVkhPU1RfUklOR1xcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTE1LVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoxNjpjb25maWcgVkhPU1RfVEFTS1xcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0xNy1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMTktXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjIwOmNvbmZpZyBWSE9TVFxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTI3LVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyODptZW51Y29uZmlnIFZIT1NUX01FTlVcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjktXFx0Ym9vbCBcXFwiVkhPU1QgZHJpdmVyc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZz0zMj1pZiBWSE9TVF9NRU5VXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTMzLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzozNDpjb25maWcgVkhPU1RfTkVUXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTM1LVxcdHRyaXN0YXRlIFxcXCJIb3N0IGtlcm5lbCBhY2NlbGVyYXRvciBmb3IgdmlydGlvIG5ldFxcXCJcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy00NS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NDY6Y29uZmlnIFZIT1NUX1NDU0lcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcIlZIT1NUX1NDU0kgVENNIGZhYnJpYyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNTUtXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjU2OmNvbmZpZyBWSE9TVF9WU09DS1xcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01Ny1cXHR0cmlzdGF0ZSBcXFwidmhvc3QgdmlydGlvLXZzb2NrIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy02OS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6NzA6Y29uZmlnIFZIT1NUX1ZEUEFcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNzEtXFx0dHJpc3RhdGUgXFxcIlZob3N0IGRyaXZlciBmb3IgdkRQQS1iYXNlZCBiYWNrZW5kXFxcIlxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTgyLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo4Mzpjb25maWcgVkhPU1RfQ1JPU1NfRU5ESUFOX0xFR0FDWVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy04NC1cXHRib29sIFxcXCJDcm9zcy1lbmRpYW4gc3VwcG9ydCBmb3Igdmhvc3RcXFwiXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctOTctXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjk4OmNvbmZpZyBWSE9TVF9FTkFCTEVfRk9SS19PV05FUl9DT05UUk9MXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTk5LVxcdGJvb2wgXFxcIkVuYWJsZSBWSE9TVF9FTkFCTEVfRk9SS19PV05FUl9DT05UUk9MXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzo0OC4wMjk2MTkyOTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQzOTExODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgVmlydHVhbCBIb3N0IEFyY2hpdGVjdHVyZSoqXG5cbk9rYXksIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYFZIT1NUYC4gVGhhdCdzIHRoZSBwcmltYXJ5IGJ1aWxkaW5nIGJsb2NrLiBCdXQgaXQgYXBwZWFycyB0aGF0IHNwZWNpZmljIHZpcnR1YWxpemVkIGZ1bmN0aW9uYWxpdGllcyBhcmUgY2hvc2VuIHZpYSBtb3JlIHNwZWNpYWxpemVkIG9wdGlvbnMuIFJpZ2h0LCBzbyBgVkhPU1RgIGlzIHRoZSBmb3VuZGF0aW9uLCBhbmQgdGhlbiB3ZSBoYXZlIHRoZXNlIHNwZWNpZmljIGZsYXZvcnMgbGlrZSBgVkhPU1RfTkVUYCBhbmQgYFZIT1NUX1ZTT0NLYC4gTWFrZXMgc2Vuc2UsIGZvciBtb2R1bGFyaXR5LiBMZXQncyBkaWcgaW4gYW5kIHNlZSBob3cgYFZIT1NUX05FVGAgYW5kIGBWSE9TVF9WU09DS2AgdGllIGludG8gdGhpcyBvdmVyYWxsIHBpY3R1cmUgYW5kIHdoYXQgdGhleSBicmluZyB0byB0aGUgdGFibGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzcGVjaWZpY3MgaW50ZWdyYXRlIHdpdGggdGhhdCBjZW50cmFsIGBWSE9TVGAgY29uc3RydWN0LiBUaGlzIGFwcHJvYWNoIGlzIGNvbW1vbiwgYW5kIEkgbmVlZCB0byBlbnN1cmUgaXQncyBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MzksIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzo1MS42NzM1MzM4NTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA4ODYzODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFZIT1NUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWc9OT1jb25maWcgVkhPU1RfUklOR1xcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoxMTpcXHRzZWxlY3QgVkhPU1RfSU9UTEJcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnPTIwPWNvbmZpZyBWSE9TVFxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyMjpcXHRzZWxlY3QgVkhPU1RfSU9UTEJcXG5kcml2ZXJzL3Zob3N0L0tjb25maWc6MjM6XFx0c2VsZWN0IFZIT1NUX1RBU0tcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnPTM0PWNvbmZpZyBWSE9TVF9ORVRcXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy0zNi1cXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBFVkVOVEZEIFxcdTAwMjZcXHUwMDI2IChUVU4gfHwgIVRVTikgXFx1MDAyNlxcdTAwMjYgKFRBUCB8fCAhVEFQKVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzozNzpcXHRzZWxlY3QgVkhPU1RcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMzgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnPTQ2PWNvbmZpZyBWSE9TVF9TQ1NJXFxuLS1cXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNDgtXFx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRSBcXHUwMDI2XFx1MDAyNiBFVkVOVEZEXFxuZHJpdmVycy92aG9zdC9LY29uZmlnOjQ5OlxcdHNlbGVjdCBWSE9TVFxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZy01MC1cXHRzZWxlY3QgU0dfUE9PTFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnPTU2PWNvbmZpZyBWSE9TVF9WU09DS1xcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTU4LVxcdGRlcGVuZHMgb24gVlNPQ0tFVFMgXFx1MDAyNlxcdTAwMjYgRVZFTlRGRFxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo1OTpcXHRzZWxlY3QgVkhPU1RcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNjAtXFx0c2VsZWN0IFZJUlRJT19WU09DS0VUU19DT01NT05cXG4tLVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZz03MD1jb25maWcgVkhPU1RfVkRQQVxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTcyLVxcdGRlcGVuZHMgb24gRVZFTlRGRFxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzo3MzpcXHRzZWxlY3QgVkhPU1RcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctNzQtXFx0c2VsZWN0IElSUV9CWVBBU1NfTUFOQUdFUlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzo1MS43MTQ0MjMzNTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTc0MzYwOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBLVk0gVmlydHVhbGl6YXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIEtWTSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0IHNlZW1zIGxpa2UgZW5hYmxpbmcgYFZIT1NUX05FVGAgYW5kIGBWSE9TVF9WU09DS2AgaXMgZ2VuZXJhbGx5IGEgZ29vZCBpZGVhIGZvciBwZXJmb3JtYW5jZSwgcmlnaHQ/IFRob3NlIGFyZSBpbXBvcnRhbnQgZm9yIG5ldHdvcmsgYW5kIHNvY2tldCB2aXJ0dWFsaXphdGlvbiwgYW5kIEknZCBsaWtlIHRvIGxldmVyYWdlIHRob3NlIGltcHJvdmVtZW50cyB3aGVyZSBwb3NzaWJsZS4gQnV0IEkgY2FuJ3QganVzdCBlbmFibGUgdGhlbSBibGluZGx5OyBJIG5lZWQgdG8gZW5zdXJlIHRoZSBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIGlzIGluIHBsYWNlLlxuXG5UaGVyZWZvcmUsIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IGlzIGBWSE9TVF9NRU5VYC4gSSBuZWVkIHRoYXQgZW5hYmxlZCB0byBldmVuICpzZWUqIGBWSE9TVF9ORVRgIGFuZCBgVkhPU1RfVlNPQ0tgLCB3aGljaCBpcyBmYWlybHkgc3RhbmRhcmQgbWVudS1kcml2ZW4gc2V0dXAuIE5vdywgYmVmb3JlIEkganVzdCBmbGlwIHRoZSBzd2l0Y2gsIGl0J3MgZXNzZW50aWFsIHRvIHF1aWNrbHkgdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFZIT1NUX01FTlVgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXQgbmVlZHMgaXMgYWxzbyBjb25maWd1cmVkIGNvcnJlY3RseS4gSSdsbCB0YWtlIGEgcXVpY2sgZ2xhbmNlIGF0IHRoZSBkZXBlbmRlbmNpZXMgdG8gYXZvaWQgYW55IHVuZm9yZXNlZW4gY29uZmxpY3RzIGxhdGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTUyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjc6NTUuNjg4Nzg3NDIyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzMxMjY0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkhPU1RfTUVOVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnPTIwPWNvbmZpZyBWSE9TVFxcbi0tXFxuZHJpdmVycy92aG9zdC9LY29uZmlnLTI3LVxcbmRyaXZlcnMvdmhvc3QvS2NvbmZpZzoyODptZW51Y29uZmlnIFZIT1NUX01FTlVcXG5kcml2ZXJzL3Zob3N0L0tjb25maWctMjktXFx0Ym9vbCBcXFwiVkhPU1QgZHJpdmVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjc6NTUuNzMyMTEzNDkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjcwMjU3MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipWSE9TVCBNb2R1bGUgRGVwZW5kZW5jeSBBc3Nlc3NtZW50KipcblxuUmlnaHQsIHNvIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIFZIT1NULXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEZpcnN0IHRoaW5ncyBmaXJzdDogdGhlIGBWSE9TVF9NRU5VYCBvcHRpb24uIEl0IGxvb2tzIGxpa2UgYFZIT1NUX01FTlVgIGRvZXNuJ3QgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzIGxpc3RlZCwgd2hpY2ggaXMgYSBnb29kIHNpZ24uIFRoYXQgbWVhbnMsIGF0IGxlYXN0IGluIHRoZSBkZXBlbmRlbmNpZXMgY29udGV4dCwgaXQncyBub3QgaG9sZGluZyBhbnl0aGluZyB1cC4gQnkgZXh0ZW5zaW9uLCB0aGF0IHNob3VsZCBiZSB0cnVlIGZvciBgVkhPU1RfTkVUYCBhbmQgYFZIT1NUX1ZTT0NLYCBhcyB3ZWxsLiBUaGF0IGlzIGFsbCBjbGVhciBhbmQgaW4gZ29vZCBvcmRlci4gXG5cbk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgYHZob3N0X3ZyaW5nX2lvY3RsYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBJIGFtIGdvaW5nIHRvIGZpbmQgdGhhdCBpbiBgZHJpdmVycy92aG9zdC92aG9zdC5jYC4gSSB3aWxsIGhhdmUgdG8gc3RhcnQgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyNzo1OS40NTkxNDE4NDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MjE5Njk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3ZyaW5nX2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3Qvdmhvc3QuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjEwOT1zdGF0aWMgbG9uZyB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHIoc3RydWN0IHZob3N0X2RldiAqZCxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQwLX1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjE0MTpsb25nIHZob3N0X3ZyaW5nX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIxNDIte1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzgtfVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMjc5OkVYUE9SVF9TWU1CT0xfR1BMKHZob3N0X3ZyaW5nX2lvY3RsKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI4MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjc6NTkuNTA0MzY2MTg3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzY2ODc4NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBmcm9tIG15IHBlcnNwZWN0aXZlLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIHRoZSBWaG9zdCBJbmZyYXN0cnVjdHVyZSoqXG5cblJpZ2h0LCBzbyBgdmhvc3RfdnJpbmdfaW9jdGxgIGlzIGRlZmluaXRlbHkgZXhwb3J0ZWQsIHRoYXQncyBnb29kLiBOb3csIGJlZm9yZSBJIGp1bXAgdG9vIGRlZXAgaW50byB0aGlzIHNwZWNpZmljIGlzc3VlLCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB3ZSB1bmRlcnN0YW5kIHRoZSBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyB2aXJ0dWFsIHF1ZXVlIG1ldGFkYXRhLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBfX3Zob3N0X3ZxX21ldGFfcmVzZXRgIGZ1bmN0aW9uLiBJdCdzIGNydWNpYWwgd2UgY29uZmlybSBob3cgdGhhdCdzIHdvcmtpbmcuIFdlIGNhbiBwcm9iYWJseSB0cmFjZSB0aGlzIGFuZCB0aGUgb3RoZXIgY2hhbmdlcyBiYWNrd2FyZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNjcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyODowMi45ODEwNTcwOThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzMzMTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fdmhvc3RfdnFfbWV0YV9yZXNldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3Zob3N0L3Zob3N0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aG9zdC92aG9zdC5jPTMzNz1FWFBPUlRfU1lNQk9MX0dQTCh2aG9zdF9wb2xsX3F1ZXVlKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzM4LVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzozMzk6c3RhdGljIHZvaWQgX192aG9zdF92cV9tZXRhX3Jlc2V0KHN0cnVjdCB2aG9zdF92aXJ0cXVldWUgKnZxKVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0zNDAte1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jPTM0Nz1zdGF0aWMgdm9pZCB2aG9zdF92cV9tZXRhX3Jlc2V0KHN0cnVjdCB2aG9zdF9kZXYgKmQpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzUxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkLVxcdTAwM2VudnFzOyArK2kpXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjM1MjpcXHRcXHRfX3Zob3N0X3ZxX21ldGFfcmVzZXQoZC1cXHUwMDNldnFzW2ldKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzUzLX1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0zNjc9c3RhdGljIHZvaWQgdmhvc3RfdnFfcmVzZXQoc3RydWN0IHZob3N0X2RldiAqZGV2LFxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTM5Ni1cXHR2aG9zdF92cmluZ19jYWxsX3Jlc2V0KFxcdTAwMjZ2cS1cXHUwMDNlY2FsbF9jdHgpO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzozOTc6XFx0X192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMzk4LX1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMTA5PXN0YXRpYyBsb25nIHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcihzdHJ1Y3Qgdmhvc3RfZGV2ICpkLFxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIxMzQtXFx0ICovXFxuZHJpdmVycy92aG9zdC92aG9zdC5jOjIxMzU6XFx0X192aG9zdF92cV9tZXRhX3Jlc2V0KHZxKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjEzNi1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYz0yMjgxPWludCB2aG9zdF9pbml0X2RldmljZV9pb3RsYihzdHJ1Y3Qgdmhvc3RfZGV2ICpkKVxcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyOTctXFx0XFx0dnEtXFx1MDAzZWlvdGxiID0gbmlvdGxiO1xcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMjk4OlxcdFxcdF9fdmhvc3RfdnFfbWV0YV9yZXNldCh2cSk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyOTktXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2cS1cXHUwMDNlbXV0ZXgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyODowMy4wMjg4MTU4MjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyODEwMzc0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkRpdmluZyBpbnRvIHRoZSBWaG9zdCBDb2RlKipcblxuUmlnaHQsIHNvIGBfX3Zob3N0X3ZxX21ldGFfcmVzZXRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0J3MgbG9jYWxpemVkLCBhbmQgaXQncyBub3QgYSBwcmltYXJ5IGVudHJ5IHBvaW50LCB3aGljaCBtYWtlcyBpdCBsZXNzIGludGVyZXN0aW5nIGZyb20gYSBoaWdoLWxldmVsIHBlcnNwZWN0aXZlLiBXaXRoIHRoYXQgaW4gbWluZCwgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbiBpcyBgdmhvc3RfdnJpbmdfaW9jdGxgLiBJdCBmZWVscyBsaWtlIHRoZSBiZXN0IGNhbmRpZGF0ZSBmb3IgdGhlIGNvcmUgc3ltYm9sIHdlJ3JlIGFmdGVyLCB0aGUgb25lIHRoYXQgcHJvYmFibHkgaGFuZGxlcyB0aGUgbWFpbiBpbnRlcmFjdGlvbi5cblxuTm93LCBiZWZvcmUgSSBnZXQgdG9vIGludmVzdGVkLCBsZXQncyBxdWlja2x5IGNvbmZpcm0uIElzIGB2aG9zdF92cmluZ19pb2N0bGAgYWN0dWFsbHkgY2FsbGVkIGZyb20gYSBoaWdoZXItbGV2ZWwgYGlvY3RsYCBoYW5kbGVyIGxpa2UgYHZob3N0X25ldF9pb2N0bGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBHb3R0YSB0cmFjZSB0aGUgY2FsbCBncmFwaCB0byBiZSBzdXJlIHdlIGFyZSB0cmFja2luZyB0aGUgcmlnaHQgc3BvdC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGluZGVlZCBhIG1ham9yIGVudHJ5IHBvaW50IGZvciBpb2N0bCBjYWxscyByZWxhdGVkIHRvIHRoZSB2cmluZy4gSSdsbCBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSB0aGlzIGlzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyODowNy41NTY5MjE4NDVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODY2MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZob3N0X3ZyaW5nX2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmhvc3QvbmV0LmM9MTczOD1zdGF0aWMgbG9uZyB2aG9zdF9uZXRfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmhvc3QvbmV0LmMtMTgyOS1cXHRcXHRpZiAociA9PSAtRU5PSU9DVExDTUQpXFxuZHJpdmVycy92aG9zdC9uZXQuYzoxODMwOlxcdFxcdFxcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcXHUwMDI2bi1cXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XFxuZHJpdmVycy92aG9zdC9uZXQuYy0xODMxLVxcdFxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jPTIzNjI9dmhvc3Rfc2NzaV9pb2N0bChzdHJ1Y3QgZmlsZSAqZixcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jLTI0MzAtXFx0XFx0aWYgKHIgPT0gLUVOT0lPQ1RMQ01EKVxcbmRyaXZlcnMvdmhvc3Qvc2NzaS5jOjI0MzE6XFx0XFx0XFx0ciA9IHZob3N0X3ZyaW5nX2lvY3RsKFxcdTAwMjZ2cy1cXHUwMDNlZGV2LCBpb2N0bCwgYXJncCk7XFxuZHJpdmVycy92aG9zdC9zY3NpLmMtMjQzMi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnZzLVxcdTAwM2VkZXYubXV0ZXgpO1xcbi0tXFxuZHJpdmVycy92aG9zdC90ZXN0LmM9MzE3PXN0YXRpYyBsb25nIHZob3N0X3Rlc3RfaW9jdGwoc3RydWN0IGZpbGUgKmYsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdGVzdC5jLTM1Mi0gICAgICAgICAgICAgICAgaWYgKHIgPT0gLUVOT0lPQ1RMQ01EKVxcbmRyaXZlcnMvdmhvc3QvdGVzdC5jOjM1MzogICAgICAgICAgICAgICAgICAgICAgICByID0gdmhvc3RfdnJpbmdfaW9jdGwoXFx1MDAyNm4tXFx1MDAzZWRldiwgaW9jdGwsIGFyZ3ApO1xcbmRyaXZlcnMvdmhvc3QvdGVzdC5jLTM1NC1cXHRcXHR2aG9zdF90ZXN0X2ZsdXNoKG4pO1xcbi0tXFxuZHJpdmVycy92aG9zdC92ZHBhLmM9NjMyPXN0YXRpYyBsb25nIHZob3N0X3ZkcGFfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X3ZkcGEgKnYsIHVuc2lnbmVkIGludCBjbWQsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy03MjAtXFxuZHJpdmVycy92aG9zdC92ZHBhLmM6NzIxOlxcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcXHUwMDI2di1cXHUwMDNldmRldiwgY21kLCBhcmdwKTtcXG5kcml2ZXJzL3Zob3N0L3ZkcGEuYy03MjItXFx0aWYgKHIpXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM9MjEwOT1zdGF0aWMgbG9uZyB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHIoc3RydWN0IHZob3N0X2RldiAqZCxcXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYy0yMTQwLX1cXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmM6MjE0MTpsb25nIHZob3N0X3ZyaW5nX2lvY3RsKHN0cnVjdCB2aG9zdF9kZXYgKmQsIHVuc2lnbmVkIGludCBpb2N0bCwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIxNDIte1xcbi0tXFxuZHJpdmVycy92aG9zdC92aG9zdC5jLTIyNzgtfVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuYzoyMjc5OkVYUE9SVF9TWU1CT0xfR1BMKHZob3N0X3ZyaW5nX2lvY3RsKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0LmMtMjI4MC1cXG4tLVxcbmRyaXZlcnMvdmhvc3Qvdmhvc3QuaD0yMjI9bG9uZyB2aG9zdF9kZXZfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHZvaWQgX191c2VyICphcmdwKTtcXG5kcml2ZXJzL3Zob3N0L3Zob3N0Lmg6MjIzOmxvbmcgdmhvc3RfdnJpbmdfaW9jdGwoc3RydWN0IHZob3N0X2RldiAqZCwgdW5zaWduZWQgaW50IGlvY3RsLCB2b2lkIF9fdXNlciAqYXJncCk7XFxuZHJpdmVycy92aG9zdC92aG9zdC5oLTIyNC1sb25nIHZob3N0X3dvcmtlcl9pb2N0bChzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsIHVuc2lnbmVkIGludCBpb2N0bCxcXG4tLVxcbmRyaXZlcnMvdmhvc3QvdnNvY2suYz04ODk9c3RhdGljIGxvbmcgdmhvc3RfdnNvY2tfZGV2X2lvY3RsKHN0cnVjdCBmaWxlICpmLCB1bnNpZ25lZCBpbnQgaW9jdGwsXFxuLS1cXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmMtOTM1LVxcdFxcdGlmIChyID09IC1FTk9JT0NUTENNRClcXG5kcml2ZXJzL3Zob3N0L3Zzb2NrLmM6OTM2OlxcdFxcdFxcdHIgPSB2aG9zdF92cmluZ19pb2N0bChcXHUwMDI2dnNvY2stXFx1MDAzZWRldiwgaW9jdGwsIGFyZ3ApO1xcbmRyaXZlcnMvdmhvc3QvdnNvY2suYy05MzctXFx0XFx0ZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyODowNy41OTg4MTQ4NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc0NzQ0Njg2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVmhvc3QgVnJpbmcgSW9jdGwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgeWVzLCBgdmhvc3RfdnJpbmdfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgdnJpbmcgaW9jdGxzLiBUaGUgY29yZSBpc3N1ZSB0aGlzIHBhdGNoIGFkZHJlc3NlcyBpcyB0aGF0IHRoZSBtZXRhZGF0YSBjYWNoZSBpc24ndCBiZWluZyByZXNldCB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGNoYW5nZXMuIFRoYXQncyBhIGNsYXNzaWMgYnVnLCBhbmQgdGhpcyBmaXggYXBwZWFycyB0byBiZSBkaXJlY3RseSBhZGRyZXNzaW5nIGl0LiBJIGNhbiBzZWUgdGhpcyBpcyBmdW5jdGlvbmFsIGFuZCwgcmVhbGlzdGljYWxseSwgcmVhY2hhYmxlIHVuZGVyIHRoZSByaWdodCBjaXJjdW1zdGFuY2VzLlxuXG5UbyByZXByb2R1Y2UgYW5kIHRlc3QgdGhpcyBlZmZlY3RpdmVseSwgSSdsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQ6IGBWSE9TVF9NRU5VYCwgYFZIT1NUX05FVGAsIGFuZCBgVkhPU1RfVlNPQ0tgLiBJJ2xsIGJlIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiB0aGUgYHZob3N0X3ZyaW5nX2lvY3RsYCBzeW1ib2wgZm9yIHZlcmlmaWNhdGlvbi5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgVkhPU1RfTUVOVWAgaXMgdGhlIGNvcnJlY3QgbmFtZSDigJMgeWVwLCBpdCdzIGNvbmZpcm1lZCwgYG1lbnVjb25maWcgVkhPU1RfTUVOVWAuXG5cbk5vdywgbGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCB3b3VsZCBiZSBiZW5lZmljaWFsLiBJIHNlZSBgVkhPU1RfU0NTSWAsIGBWSE9TVF9WRFBBYCwgYW5kIGBWSE9TVF9URVNUYC4gYFZIT1NUX1RFU1RgIHNvdW5kcyBsaWtlIGl0IG1pZ2h0IGJlIGEgZ29vZCBvbmUgdG8gZW5hYmxlIGFzIHdlbGwsIHRvIGhlbHAgd2l0aCBjb21wcmVoZW5zaXZlIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjg6MzUuMDczMjg2NDc2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQzNjI2OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZIT1NUX1RFU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aG9zdC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyODozNS4xMjM3Mjk5OTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxMTk0NjQyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJldmlld2luZyB0aGlzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEtjb25maWcgUGxhY2VtZW50IG9mIFZIT1NUX1RFU1QqKlxuXG5Pa2F5LCBob2xkIG9uIGEgbWludXRlLiBJIHdhcyBwcmV0dHkgc3VyZSBgVkhPU1RfVEVTVGAgd2FzIGEgc3RhbmRhcmQgb3B0aW9uLCBidXQgaXQgbG9va3MgbGlrZSBpdCdzIG5vdCBzaG93aW5nIHVwIGluIHRoZSB1c3VhbCBwbGFjZSwgYGRyaXZlcnMvdmhvc3QvS2NvbmZpZ2AuIFRoYXQncyBhIGJpdCBvZGQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0J3MgYWN0dWFsbHkgZGVmaW5lZC4gSSdsbCBuZWVkIHRvIGdvIGh1bnRpbmcgZm9yIGl0IHdpdGhpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBMZXQncyBzdGFydCB3aXRoIGEgYGdyZXBgIG9yIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRyYWNrIGRvd24gaXRzIGRlZmluaXRpb24uIEl0J3MgcG9zc2libGUgaXQncyBjb25kaXRpb25hbGx5IGluY2x1ZGVkIGZyb20gZWxzZXdoZXJlLCBvciBldmVuIGRlZmluZWQgd2l0aGluIGEgZGlmZmVyZW50IGRyaXZlcidzIEtjb25maWcgZmlsZSB0aGF0J3MgcmVsYXRlZCB0byB2aG9zdCBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIGEgY29tbW9uIHRoaW5nIGluIGNvbXBsZXgga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBzbyBJIHdvbid0IGFzc3VtZSBpdCdzIHNpbXBseSBtaXNzaW5nLiBJJ2xsIG5lZWQgdG8gbG9vayBjYXJlZnVsbHksIGNoZWNrIGZvciBhbnkgYCNzb3VyY2VgIG9yIGBzb3VyY2VgIGRpcmVjdGl2ZXMgaW4gdGhlIHZob3N0IEtjb25maWcgdG8gc2VlIGlmIHRoZSBtaXNzaW5nIG9wdGlvbiBpcyBkZWZpbmVkIHRoZXJlLiBMZXQncyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODM2LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjg6MzkuNDM1Njc4NTI4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU4MTk2NzQzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVkhPU1RfVEVTVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI4OjQxLjA5Mzg4MTA2MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDI3ODY0NTAyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBDb21waWxhdGlvbiBDb250ZXh0IG9mIGBkcml2ZXJzL3Zob3N0L3Rlc3QuY2AqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGRyaXZlcnMvdmhvc3QvdGVzdC5jYCBmaWxlIGdldHMgYnVpbHQgd2l0aGluIHRoZSBrZXJuZWwncyBidWlsZCBzeXN0ZW0uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCB0cmlnZ2VyIGl0cyBjb21waWxhdGlvbi4gSSBrbm93IHRoaXMgaXNuJ3QgZ29pbmcgdG8gYmUgYSBzaW1wbGUgXCJncmVwIGZvciBLY29uZmlnXCIgc2VhcmNoIOKAkyBpdCdzIGxpa2VseSBwYXJ0IG9mIGEgbW9yZSBjb21wbGV4IGRlcGVuZGVuY3kgdHJlZSwgcG90ZW50aWFsbHkgaW52b2x2aW5nIG11bHRpcGxlIEtjb25maWcgZnJhZ21lbnRzIG9yIGV2ZW4gaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRocm91Z2ggb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRocm91Z2ggdGhlIGJ1aWxkIHN5c3RlbSdzIGxvZ2ljIHRvIHNlZSB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBiZWNhdXNlIGEgbG90IG9mIHRoZXNlIHRoaW5ncyBvZnRlbiBidWlsZCB3aGVuIGNlcnRhaW4gbW9kdWxlcyBhcmUgc2VsZWN0ZWQsIHdoaWNoIHRoZW4gY2F1c2UgdGhpcyB0byBidWlsZCBpbmRpcmVjdGx5LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYnVpbGQgc3lzdGVtIGFuZCB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTMyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjk6MDEuMzcyNTI4MjE1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDM5MzUwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmhvc3QvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI5OjAxLjQxMjkzMDIyNFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzI5NzI4NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSB2aG9zdCBEcml2ZXIgTWFrZWZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW5zdGluY3Qgc2F5cyB0byBzdGFydCB3aXRoIHRoZSBgZHJpdmVycy92aG9zdC9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGxpa2VseSBkZWZpbmVkIGZvciB0aGUgdmhvc3QgZHJpdmVyLiBJdCdzIHRoZSBjZW50cmFsIGh1YiBmb3IgaG93IHRoaXMgcGFydCBvZiB0aGUga2VybmVsIG1vZHVsZSBpcyBwdXQgdG9nZXRoZXIuIFRoaXMgaXMgdGhlIHBsYWNlIHdoZXJlIEkgY2FuIGdldCBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIG1vZHVsZSdzIHN0cnVjdHVyZSBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLCBwYXJ0aWN1bGFybHkgY29uY2VybmluZyBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIEkgZXhwZWN0IHRvIGZpbmQgaW5jbHVkZSBwYXRocywgb2JqZWN0IGZpbGUgZGVmaW5pdGlvbnMsIGFuZCBtYXliZSBldmVuIHNvbWUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gZmxhZ3MgYmFzZWQgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgb3IgZmVhdHVyZXMuIEhvcGVmdWxseSwgaXQgaXMgd2VsbC1jb21tZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzODYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyOTowNi43NDI2NjEyOTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92aG9zdC9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRvYmotJChDT05GSUdfVkhPU1RfTkVUKSArPSB2aG9zdF9uZXQub1xcbiAgIDM6XFx0dmhvc3RfbmV0LXkgOj0gbmV0Lm9cXG4gICA0OlxcdFxcbiAgIDU6XFx0b2JqLSQoQ09ORklHX1ZIT1NUX1NDU0kpICs9IHZob3N0X3Njc2kub1xcbiAgIDY6XFx0dmhvc3Rfc2NzaS15IDo9IHNjc2kub1xcbiAgIDc6XFx0XFxuICAgODpcXHRvYmotJChDT05GSUdfVkhPU1RfVlNPQ0spICs9IHZob3N0X3Zzb2NrLm9cXG4gICA5OlxcdHZob3N0X3Zzb2NrLXkgOj0gdnNvY2sub1xcbiAgMTA6XFx0XFxuICAxMTpcXHRvYmotJChDT05GSUdfVkhPU1RfUklORykgKz0gdnJpbmdoLm9cXG4gIDEyOlxcdFxcbiAgMTM6XFx0b2JqLSQoQ09ORklHX1ZIT1NUX1ZEUEEpICs9IHZob3N0X3ZkcGEub1xcbiAgMTQ6XFx0dmhvc3RfdmRwYS15IDo9IHZkcGEub1xcbiAgMTU6XFx0XFxuICAxNjpcXHRvYmotJChDT05GSUdfVkhPU1QpXFx0Kz0gdmhvc3Qub1xcbiAgMTc6XFx0XFxuICAxODpcXHRvYmotJChDT05GSUdfVkhPU1RfSU9UTEIpICs9IHZob3N0X2lvdGxiLm9cXG4gIDE5OlxcdHZob3N0X2lvdGxiLXkgOj0gaW90bGIub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyOTowNi43NDI3MTc0NzRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI0MjY4NzkzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB3aGF0J3MgZ29pbmcgb24sIHRoaW5raW5nIHRocm91Z2ggdGhpcyBsaWtlIEkgd291bGQ6XG5cbioqRXhhbWluaW5nIEJ1aWxkIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGlzIHBhcnRpY3VsYXIgdGVzdCBpc24ndCBydW5uaW5nIG9yIGJlaW5nIGJ1aWx0LCBvciBtb3JlIHNwZWNpZmljYWxseSwgKndoZXJlKiB0aGlzIHRlc3QgYWN0dWFsbHkgbGl2ZXMgaW4gdGhlIGJ1aWxkIHN0cnVjdHVyZS4gRmlyc3QgdGhvdWdodDogbWF5YmUgYHRlc3QuY2AgaXNuJ3QgYnVpbHQgYnkgZGVmYXVsdCBvciBpdCdzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBjb2RlIGJhc2UsIGxpa2VseSBhIGRpZmZlcmVudCBicmFuY2guIEEgcXVpY2sgYGdyZXBgIGNvbmZpcm1lZCB0aGF0IGBkcml2ZXJzL3Zob3N0L3Rlc3QuY2AgZXhpc3RzLiBcblxuQWgsIGFuZCBpdCBsb29rcyBsaWtlIGB0b29scy92aXJ0aW8vTWFrZWZpbGVgIGhhbmRsZXMgYGRyaXZlcnMvdmhvc3QvdGVzdC5jYC4gTm90ZWQuXG5cbkZvciBub3csIEknbSB0aGlua2luZyBJIG9ubHkgbmVlZCBgVkhPU1RfTkVUYCBhbmQgYFZIT1NUX1ZTT0NLYCB0byBiZSBjb25maWd1cmVkLCBsZXQncyBzZWUgYWJvdXQgdGhlaXIgZGVwZW5kZW5jaWVzLlxuXG5MZXQncyBzZWUgd2hhdCdzIHJlcXVpcmVkIGZvciBgVkhPU1RfTkVUYC4gVGhlIGRlcGVuZGVuY3kgZXhwcmVzc2lvbiBpcyBgTkVUIFx1MDAyNlx1MDAyNiBFVkVOVEZEIFx1MDAyNlx1MDAyNiAoVFVOIHx8ICFUVU4pIFx1MDAyNlx1MDAyNiAoVEFQIHx8ICFUQVApYC4gYEVWRU5URkRgIGlzIHByZXR0eSBzdGFuZGFyZCB0byBoYXZlIGVuYWJsZWQsIGFuZCBgTkVUYCBhbHNvLiAgYFRVTmAgYW5kIGBUQVBgIGFyZSBhbHNvIGxpa2VseSBlbmFibGVkLCBzbyB0aGF0J3Mgbm90IGEgbWFqb3IgaXNzdWUuXG5cbk5vdyBmb3IgYFZIT1NUX1ZTT0NLYC4gSXRzIGRlcGVuZGVuY2llcyBhcmUgYFZTT0NLRVRTIFx1MDAyNlx1MDAyNiBFVkVOVEZEYC4gIFNvIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYFZTT0NLRVRTYCBkZXBlbmRlbmN5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODk5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDM6Mjk6MTIuOTg1NDA4MTk0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTkyNTIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVlNPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svS2NvbmZpZy01LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzo2OmNvbmZpZyBWU09DS0VUU1xcbm5ldC92bXdfdnNvY2svS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldCBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0xOC1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6MTk6Y29uZmlnIFZTT0NLRVRTX0RJQUdcXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yOC1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6Mjk6Y29uZmlnIFZTT0NLRVRTX0xPT1BCQUNLXFxubmV0L3Ztd192c29jay9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldHMgbG9vcGJhY2sgdHJhbnNwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwMzoyOToxMy4wMjczMzg0ODJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODcxMjA3MzQ3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBZGRpbmcgVlNPQ0tFVFMgdG8gdGhlIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBhZGQgYFZTT0NLRVRTYCB0byB0aGUgY29uZmlndXJhdGlvbnMuIEdpdmVuIHRoZSBleGlzdGluZyBjb25maWd1cmF0aW9ucywgbmFtZWx5IGBWSE9TVF9NRU5VYCwgYFZIT1NUX05FVGAsIGFuZCBgVkhPU1RfVlNPQ0tgLCBgVlNPQ0tFVFNgIHNlZW1zIGxpa2UgYSBsb2dpY2FsIGFuZCBuZWNlc3NhcnkgYWRkaXRpb24uXG5cblRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhlcmUncyBhIGJ1ZyBmaXggdGhhdCBhZGRyZXNzZXMgYSBwcm9ibGVtIGluIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgLiBTcGVjaWZpY2FsbHksIHRoZSBtZXRhZGF0YSBjYWNoZSBpc24ndCBiZWluZyByZXNldCBwcm9wZXJseSB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGlzIGFsdGVyZWQuIE5vdywgdGhpcyBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCBmdW5jdGlvbiBpcyBhY2Nlc3NlZCB0aHJvdWdoIGB2aG9zdF92cmluZ19pb2N0bGAuIFRoaXMgaW9jdGwgaXMgaG93IHVzZXJzcGFjZSBpbnRlcmFjdHMgd2l0aCB0aGUgdmhvc3QgZGV2aWNlIGlvY3RscywgbGlrZSBgL2Rldi92aG9zdC1uZXRgIGFuZCBgL2Rldi92aG9zdC12c29ja2AuIFNvLCBmdXp6aW5nIGB2aG9zdF92cmluZ19pb2N0bGAgaXMgZ29pbmcgdG8gYmUgYSBnb29kIHdheSB0byBleGVyY2lzZSBhbmQgcmV2ZWFsIHRoaXMgcGFydGljdWxhciBjb2RlIHBhdGguXG5cblRvIGNvbmZpcm0gdGhpcywgbGV0J3MgZG8gYSBxdWljayBzY2FuIG9mIHRoZSBjb2RlIHRvIG1ha2Ugc3VyZSBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCBpcyBhY3R1YWxseSByZWFjaGFibGUgdmlhIGB2aG9zdF92cmluZ19pb2N0bGAuIFllcywgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgdmhvc3RfdnJpbmdfaW9jdGxgIGhhbmRsZXMgYFZIT1NUX1NFVF9WUklOR19BRERSYCBhbmQgc3Vic2VxdWVudGx5IGNhbGxzIGB2aG9zdF92cmluZ19zZXRfbnVtX2FkZHJgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgdmhvc3QgZHJpdmVyLCBhbmQsIHRoZXJlZm9yZSwgd2FycmFudHMgc2VyaW91cyBhdHRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NDMsIk91dHB1dFRva2VucyI6MTY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDAzOjI5OjIxLjczOTQxNDA0NloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MDEwMDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSE9TVF9NRU5VXCIsXG4gICAgXCJWSE9TVF9ORVRcIixcbiAgICBcIlZIT1NUX1ZTT0NLXCIsXG4gICAgXCJWU09DS0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZob3N0X3ZyaW5nX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYHZob3N0X3ZyaW5nX3NldF9udW1fYWRkcmAgd2hlcmUgdGhlIG1ldGFkYXRhIGNhY2hlIGlzIG5vdCByZXNldCB3aGVuIHRoZSB2cmluZyBhZGRyZXNzIGlzIGNoYW5nZWQuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHZpYSBgdmhvc3RfdnJpbmdfaW9jdGxgIHdoaWNoIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHZpYSB2aG9zdCBkZXZpY2UgaW9jdGxzIChlLmcuIGAvZGV2L3Zob3N0LW5ldGAsIGAvZGV2L3Zob3N0LXZzb2NrYCkuIEZ1enppbmcgYHZob3N0X3ZyaW5nX2lvY3RsYCB3aWxsIGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZIT1NUX01FTlVcIixcbiAgICBcIlZIT1NUX05FVFwiLFxuICAgIFwiVkhPU1RfVlNPQ0tcIixcbiAgICBcIlZTT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmhvc3RfdnJpbmdfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgdmhvc3RfdnJpbmdfc2V0X251bV9hZGRyYCB3aGVyZSB0aGUgbWV0YWRhdGEgY2FjaGUgaXMgbm90IHJlc2V0IHdoZW4gdGhlIHZyaW5nIGFkZHJlc3MgaXMgY2hhbmdlZC4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdmlhIGB2aG9zdF92cmluZ19pb2N0bGAgd2hpY2ggaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHZob3N0IGRldmljZSBpb2N0bHMgKGUuZy4gYC9kZXYvdmhvc3QtbmV0YCwgYC9kZXYvdmhvc3QtdnNvY2tgKS4gRnV6emluZyBgdmhvc3RfdnJpbmdfaW9jdGxgIHdpbGwgZXhlcmNpc2UgdGhpcyBjb2RlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowxjjzx[1] Phase: Succeeded StartedAt: 2026-08-04 03:29:33 +0000 UTC FinishedAt: 2026-08-04 03:29:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 03:29:33 +0000 UTC FinishedAt: 2026-08-04 03:29:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2] Phase: Succeeded StartedAt: 2026-08-04 03:29:33 +0000 UTC FinishedAt: 2026-08-04 07:12:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 03:29:33 +0000 UTC FinishedAt: 2026-08-04 07:12:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 03:29:33 +0000 UTC FinishedAt: 2026-08-04 03:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 03:29:33 +0000 UTC FinishedAt: 2026-08-04 03:29:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},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-workflowxjjzx/series-workflowxjjzx-convert-artifact-1683063794/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 03:29:43 +0000 UTC FinishedAt: 2026-08-04 03:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 03:29:43 +0000 UTC FinishedAt: 2026-08-04 03:47:34 +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:*9fa49110-545b-4b1d-8fc9-c2311cb9be54,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-workflowxjjzx/series-workflowxjjzx-convert-artifact-1683063794/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": "54d8bb15-c767-44a4-84bc-fbed17311a19", "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-workflowxjjzx/series-workflowxjjzx-build-action-4081257328/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 03:29:43 +0000 UTC FinishedAt: 2026-08-04 03:47:24 +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:*9fa49110-545b-4b1d-8fc9-c2311cb9be54,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-workflowxjjzx/series-workflowxjjzx-convert-artifact-1683063794/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": "54d8bb15-c767-44a4-84bc-fbed17311a19", "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-workflowxjjzx/series-workflowxjjzx-build-action-4081257328/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 03:47:34 +0000 UTC FinishedAt: 2026-08-04 03:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 03:47:34 +0000 UTC FinishedAt: 2026-08-04 03:47:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 03:47:34 +0000 UTC FinishedAt: 2026-08-04 03:47:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 03:47:34 +0000 UTC FinishedAt: 2026-08-04 03:47:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},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-workflowxjjzx/series-workflowxjjzx-convert-artifact-327264781/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 03:47:44 +0000 UTC FinishedAt: 2026-08-04 03:50:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 03:47:44 +0000 UTC FinishedAt: 2026-08-04 03:49:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*54d8bb15-c767-44a4-84bc-fbed17311a19,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-workflowxjjzx/series-workflowxjjzx-build-action-4081257328/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-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 03:50:08 +0000 UTC FinishedAt: 2026-08-04 03:50:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 03:50:08 +0000 UTC FinishedAt: 2026-08-04 03:50:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 03:50:08 +0000 UTC FinishedAt: 2026-08-04 04:07:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 03:50:08 +0000 UTC FinishedAt: 2026-08-04 04:07:42 +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:*9fa49110-545b-4b1d-8fc9-c2311cb9be54,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-workflowxjjzx/series-workflowxjjzx-convert-artifact-327264781/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": "9166394b-d6f8-4781-a496-fb221c5d6d99", "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-workflowxjjzx/series-workflowxjjzx-build-action-2779920361/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 03:50:08 +0000 UTC FinishedAt: 2026-08-04 04:07:32 +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:*9fa49110-545b-4b1d-8fc9-c2311cb9be54,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-workflowxjjzx/series-workflowxjjzx-convert-artifact-327264781/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": "9166394b-d6f8-4781-a496-fb221c5d6d99", "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-workflowxjjzx/series-workflowxjjzx-build-action-2779920361/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 04:07:42 +0000 UTC FinishedAt: 2026-08-04 04:07:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 04:07:42 +0000 UTC FinishedAt: 2026-08-04 04:07:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 04:07:42 +0000 UTC FinishedAt: 2026-08-04 04:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 04:07:42 +0000 UTC FinishedAt: 2026-08-04 04:09:34 +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:*9166394b-d6f8-4781-a496-fb221c5d6d99,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-workflowxjjzx/series-workflowxjjzx-build-action-2779920361/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-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 04:09:43 +0000 UTC FinishedAt: 2026-08-04 07:12:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 04:09:43 +0000 UTC FinishedAt: 2026-08-04 07:12:27 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"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:*54d8bb15-c767-44a4-84bc-fbed17311a19,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9166394b-d6f8-4781-a496-fb221c5d6d99,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-workflowxjjzx/series-workflowxjjzx-build-action-4081257328/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-workflowxjjzx/series-workflowxjjzx-build-action-2779920361/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 04:09:43 +0000 UTC FinishedAt: 2026-08-04 04:09:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 04:09:43 +0000 UTC FinishedAt: 2026-08-04 04:09:48 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"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-workflowxjjzx/series-workflowxjjzx-convert-artifact-456959474/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 04:09:43 +0000 UTC FinishedAt: 2026-08-04 04:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 04:09:43 +0000 UTC FinishedAt: 2026-08-04 04:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 04:09:43 +0000 UTC FinishedAt: 2026-08-04 04:09:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 04:09:53 +0000 UTC FinishedAt: 2026-08-04 07:12:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxjjzx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["kvm","net"],"focus_symbols":["vhost_vring_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5aed8f404401bfa1570cf0c3ffed7b752f568e83","config_name":"upstream-apparmor-kasan.config","enable_configs":["VHOST_MENU","VHOST_NET","VHOST_VSOCK","VSOCKETS"],"series_id":"0214d545-98d6-421e-bb58-71c69d756aec","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 04:09:53 +0000 UTC FinishedAt: 2026-08-04 07:12:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*54d8bb15-c767-44a4-84bc-fbed17311a19,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9166394b-d6f8-4781-a496-fb221c5d6d99,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-workflowxjjzx/series-workflowxjjzx-build-action-4081257328/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-workflowxjjzx/series-workflowxjjzx-build-action-2779920361/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-workflowxjjzx/series-workflowxjjzx-convert-artifact-456959474/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,}