Name: series-workflow5wgnk Phase: Succeeded StartedAt: 2026-06-24 10:03:00 +0000 UTC FinishedAt: 2026-06-24 11:47:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[0] Phase: Succeeded StartedAt: 2026-06-24 10:03:00 +0000 UTC FinishedAt: 2026-06-24 10:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 10:03:00 +0000 UTC FinishedAt: 2026-06-24 10:20:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "NET_IPGRE", "IPV6_GRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "NET_IPGRE", "IPV6_GRE" ], "series_id": "1f6dc47e-354f-4904-bc18-c2b7ea4d79b2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vxlan_rcv", "__iptunnel_pull_header" ], "corpus_urls": [ "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+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX3JjdiYjMzQ7LAogICAgJiMzNDtfX2lwdHVubmVsX3B1bGxfaGVhZGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgdG8gdW5zZXQgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2YgdGhlIGBza19idWZmYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrIGFmZmVjdGluZyBWWExBTiBhbmQgSVAgdHVubmVscyAobGlrZSBHUkUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSByZWNlaXZlIHBhdGhzIHRvIGVuc3VyZSB0aGUgdHJhbnNwb3J0IGhlYWRlciBpcyBjb3JyZWN0bHkgdW5zZXQgYW5kIGRvZXNuJiMzOTt0IGNhdXNlIHJlZ3Jlc3Npb25zIGluIHN1YnNlcXVlbnQgcGFja2V0IHByb2Nlc3NpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZWI3YmEzMzUyYjYxMDNhNTkzM2Y3NjBlMDUzNzNkZWQxMTQ2NWZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTA6MTc6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5pbmRleCA2N2MzNjdjYzU2NjIzMy4uNDkzMThhZDgxNjRhMmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuQEAgLTE3OTksNiAmIzQzOzE3OTksNyBAQCBzdGF0aWMgaW50IHZ4bGFuX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4gXG4gXHRkZXZfZHN0YXRzX3J4X2FkZCh2eGxhbi1cdTAwM2VkZXYsIHNrYi1cdTAwM2VsZW4pO1xuIFx0dnhsYW5fdm5pZmlsdGVyX2NvdW50KHZ4bGFuLCB2bmksIHZuaW5vZGUsIFZYTEFOX1ZOSV9TVEFUU19SWCwgc2tiLVx1MDAzZWxlbik7XG4mIzQzO1x0c2tiX3Vuc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiKTtcbiBcdGdyb19jZWxsc19yZWNlaXZlKFx1MDAyNnZ4bGFuLVx1MDAzZWdyb19jZWxscywgc2tiKTtcbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXG5pbmRleCAxMTVkYjhjNDRkYjIxMy4uZTgzMDVhMGZkMzg1N2EgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXG5AQCAtMzA4NCw2ICYjNDM7MzA4NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tiX3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cmV0dXJuIHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyICE9ICh0eXBlb2Yoc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKX4wVTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBza2JfdW5zZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0c2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgPSAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl+MFU7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfdHJhbnNwb3J0X2hlYWRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIXNrYl90cmFuc3BvcnRfaGVhZGVyX3dhc19zZXQoc2tiKSk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYyBiL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNcbmluZGV4IGQzYzY3N2U5YmZmMjA4Li41OTE5MmY1OGRhMmUzYSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNcbkBAIC0xMzQsNiAmIzQzOzEzNCw3IEBAIGludCBfX2lwdHVubmVsX3B1bGxfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIGludCBoZHJfbGVuLFxuIFx0X192bGFuX2h3YWNjZWxfY2xlYXJfdGFnKHNrYik7XG4gXHRza2Jfc2V0X3F1ZXVlX21hcHBpbmcoc2tiLCAwKTtcbiBcdHNrYl9zY3J1Yl9wYWNrZXQoc2tiLCB4bmV0KTtcbiYjNDM7XHRza2JfdW5zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IpO1xuIFxuIFx0cmV0dXJuIGlwdHVubmVsX3B1bGxfb2ZmbG9hZHMoc2tiKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFJiMzNDssCiAgICAmIzM0O0lQVjZfR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhsYW5fcmN2JiMzNDssCiAgICAmIzM0O19faXB0dW5uZWxfcHVsbF9oZWFkZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZ4bGFuX3JjdmAgYW5kIGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCB0byB1bnNldCB0aGUgdHJhbnNwb3J0IGhlYWRlciBvZiB0aGUgYHNrX2J1ZmZgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2sgYWZmZWN0aW5nIFZYTEFOIGFuZCBJUCB0dW5uZWxzIChsaWtlIEdSRSkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHJlY2VpdmUgcGF0aHMgdG8gZW5zdXJlIHRoZSB0cmFuc3BvcnQgaGVhZGVyIGlzIGNvcnJlY3RseSB1bnNldCBhbmQgZG9lc24mIzM5O3QgY2F1c2UgcmVncmVzc2lvbnMgaW4gc3Vic2VxdWVudCBwYWNrZXQgcHJvY2Vzc2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWViN2JhMzM1MmI2MTAzYTU5MzNmNzYwZTA1MzczZGVkMTE0NjVmYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVuIDI0IDEwOjE3OjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jCmluZGV4IDY3YzM2N2NjNTY2MjMzLi40OTMxOGFkODE2NGEyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYwpAQCAtMTc5OSw2ICYjNDM7MTc5OSw3IEBAIHN0YXRpYyBpbnQgdnhsYW5fcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAogCWRldl9kc3RhdHNfcnhfYWRkKHZ4bGFuLSZndDtkZXYsIHNrYi0mZ3Q7bGVuKTsKIAl2eGxhbl92bmlmaWx0ZXJfY291bnQodnhsYW4sIHZuaSwgdm5pbm9kZSwgVlhMQU5fVk5JX1NUQVRTX1JYLCBza2ItJmd0O2xlbik7CiYjNDM7CXNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHNrYik7CiAJZ3JvX2NlbGxzX3JlY2VpdmUoJmFtcDt2eGxhbi0mZ3Q7Z3JvX2NlbGxzLCBza2IpOwogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaAppbmRleCAxMTVkYjhjNDRkYjIxMy4uZTgzMDVhMGZkMzg1N2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaApAQCAtMzA4NCw2ICYjNDM7MzA4NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tiX3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXJldHVybiBza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIgIT0gKHR5cGVvZihza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIpKX4wVTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBza2JfdW5zZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJc2tiLSZndDt0cmFuc3BvcnRfaGVhZGVyID0gKHR5cGVvZihza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIpKX4wVTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKnNrYl90cmFuc3BvcnRfaGVhZGVyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJREVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChza2IpKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jCmluZGV4IGQzYzY3N2U5YmZmMjA4Li41OTE5MmY1OGRhMmUzYSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jCkBAIC0xMzQsNiAmIzQzOzEzNCw3IEBAIGludCBfX2lwdHVubmVsX3B1bGxfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIGludCBoZHJfbGVuLAogCV9fdmxhbl9od2FjY2VsX2NsZWFyX3RhZyhza2IpOwogCXNrYl9zZXRfcXVldWVfbWFwcGluZyhza2IsIDApOwogCXNrYl9zY3J1Yl9wYWNrZXQoc2tiLCB4bmV0KTsKJiM0MzsJc2tiX3Vuc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiKTsKIAogCXJldHVybiBpcHR1bm5lbF9wdWxsX29mZmxvYWRzKHNrYik7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgVlhMQU4gYW5kIElQIFR1bm5lbGluZyBDaGFuZ2VzKioKCk9rYXksIHNvIHdlIGhhdmUgdGhpcyBwYXRjaCBoaXR0aW5nIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJdCYjMzk7cyB0b3VjaGluZyBgdnhsYW5fY29yZS5jYCwgYHNrYnVmZi5oYCwgYW5kIGBpcF90dW5uZWxfY29yZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHNrYilgIGluIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAsIGFuZCBkZWZpbmluZyBpdCBpbiBgc2tidWZmLmhgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaW1wYWN0aW5nIFZYTEFOIGFuZCB0aGUgSVAgdHVubmVsIGNvZGUsIHdoaWNoIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgZm9jdXMgc3ltYm9scy4gVGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2ggYXJlIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgYXMgdGhleSYjMzk7cmUgdGhlIGRpcmVjdCB0YXJnZXRzIG9mIHRoZSBwYXRjaC4KCk5vdywgd2hpY2ggY29uZmlncyBhcmUgY3J1Y2lhbD8gT2J2aW91c2x5LCB3ZSYjMzk7bGwgbmVlZCBgVlhMQU5gIGVuYWJsZWQuIEFsc28sIGEgY29uZmlnIGxpa2UgYE5FVF9JUF9UVU5ORUxgIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcyBpcyBsaWtlbHkgcmVxdWlyZWQgZm9yIHRoZSBJUCB0dW5uZWwgZnVuY3Rpb25hbGl0eS4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXM6IGBkcml2ZXJzL25ldC92eGxhbi9LY29uZmlnYCBhbmQgYG5ldC9pcHY0L0tjb25maWdgIHRvIHBpbiBkb3duIHRoZSBleGFjdCBjb25maWcgb3B0aW9ucyBuZWVkZWQuIExldCYjMzk7cyBzZWUgd2hhdCBidWlsZHMgd2UgbmVlZCB0byBlbnN1cmUgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IGluY2x1ZGVkIGFuZCBleGVyY2lzZWQgZHVyaW5nIHRoZSBmdXp6aW5nIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVlhMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTEwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBpc3N1ZToKCioqTmF2aWdhdGluZyBLY29uZmlnIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYGRyaXZlcnMvbmV0L3Z4bGFuL0tjb25maWdgIGZpbGUuLi4gdGhlIG5hZ2dpbmcgZmVlbGluZyBpcyB0aGF0IGl0ICptaWdodCogbm90IGFjdHVhbGx5IGJlIHRoZXJlLiBJJiMzOTt2ZSBzZWVuIHNpdHVhdGlvbnMgbGlrZSB0aGlzIGJlZm9yZSwgd2hlcmUgdGhlIFZYTEFOIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZCBkaWZmZXJlbnRseSwgcGVyaGFwcyBuZXN0ZWQgd2l0aGluIGEgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIFNvLCByYXRoZXIgdGhhbiBhc3N1bWUsIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGV4aXN0ZW5jZSBhbmQgc3RydWN0dXJlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0d28gbGlrZWx5IGxvY2F0aW9ucy4gRWl0aGVyIGl04oCZcyBkaXJlY3RseSB3aXRoaW4gdGhlIGdlbmVyYWwgYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUsIG9yIHBlcmhhcHMgdGhlIGRpcmVjdG9yeSBgZHJpdmVycy9uZXQvdnhsYW4vYCBleGlzdHMsIGFuZCB0aGUgS2NvbmZpZyBtaWdodCByZXNpZGUgd2l0aGluIHRoYXQgc3RydWN0dXJlLCBwZXJoYXBzIG5hbWVkIHNvbWV0aGluZyBzbGlnaHRseSBkaWZmZXJlbnQuIExldCYjMzk7cyBzdGFydCBkaWdnaW5nIGludG8gdGhvc2UgbG9jYXRpb25zIHRvIGNvbmZpcm0gaXRzIHNwZWNpZmljIHBsYWNlbWVudCBhbmQgaG93IHRoZSBWWExBTiBjb25maWd1cmF0aW9uIGlzIGludGVuZGVkIHRvIGJlIG1hbmFnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDt2eGxhbl9jb3JlLmMmIzM0OywKICAgICYjMzQ7dnhsYW5fbWRiLmMmIzM0OywKICAgICYjMzQ7dnhsYW5fbXVsdGljYXN0LmMmIzM0OywKICAgICYjMzQ7dnhsYW5fcHJpdmF0ZS5oJiMzNDssCiAgICAmIzM0O3Z4bGFuX3ZuaWZpbHRlci5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjIxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlZYTEFOIEtlcm5lbCBNb2R1bGUgTG9jYXRpb24gSW5xdWlyeSoqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgbW9kdWxlIHN0cnVjdHVyZSwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGBkcml2ZXJzL25ldC92eGxhbi9gIGRpcmVjdG9yeSBsYWNrcyBhIGRlZGljYXRlZCBgS2NvbmZpZ2AgZmlsZS4gSG1tLCB0aGF0JiMzOTtzIG5vdCB0aGUgc3RhbmRhcmQgYXBwcm9hY2gsIHVzdWFsbHksIEkmIzM5O2QgZXhwZWN0IG9uZSB0aGVyZSBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBtb2R1bGUmIzM5O3MgYnVpbGQgY29uZmlndXJhdGlvbiBpcyBtYW5hZ2VkLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2ggaXMgdG8gY2hlY2sgdGhlIHJlbGF0ZWQgTWFrZWZpbGVzLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3Z4bGFuL01ha2VmaWxlYCBhbmQgdGhlbiBgZHJpdmVycy9uZXQvTWFrZWZpbGVgIHRvIHNlZSBob3cgYHZ4bGFuX2NvcmUub2AgaXMgYmVpbmcgaW5jbHVkZWQuIEkmIzM5O20gZ29pbmcgdG8gZ3JlcCBmb3IgdGhlIG9iamVjdCBmaWxlIG5hbWUgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGJ1aWxkIHJ1bGVzLiBUaGlzIHNob3VsZCBwb2ludCBtZSB0byB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIGxvY2F0aW9uIG9yIGFueSBjb25kaXRpb25hbCBjb21waWxlIGRpcmVjdGl2ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVklSVElPX05FVCkgJiM0Mzs9IHZpcnRpb19uZXQub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX1ZYTEFOKSAmIzQzOz0gdnhsYW4vXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0zNy1vYmotJChDT05GSUdfR0VORVZFKSAmIzQzOz0gZ2VuZXZlLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTY4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIFZYTEFOIENvbmZpZ3VyYXRpb24gYW5kIFR1bm5lbCBIZWFkZXIgSGFuZGxpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gVGhlIGZvY3VzIGhlcmUgc2VlbXMgdG8gYmUgb24gYENPTkZJR19WWExBTmAg4oCTIHRoYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRyaXZpbmcgdGhpcyB3aG9sZSBWWExBTiBkaXNjdXNzaW9uLiBCdXQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGNydWNpYWwgZnVuY3Rpb246IGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYC4gV2hlcmUgZG9lcyAqdGhhdCogY29tZSBpbnRvIHBsYXk/IEl0JiMzOTtzIHJpZ2h0IHRoZXJlIGluIGBuZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jYC4gU28sIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB3b3JraW5nIGluIHJlbGF0aW9uIHRvIHRoZSBWWExBTiBjb25maWd1cmF0aW9uLiBJcyBpdCB0aGUga2V5IHBpZWNlIGZvciBleHRyYWN0aW5nIHRoZSBpbm5lciBoZWFkZXI/IEkgbmVlZCB0byByZXZpZXcgdGhhdCBjb2RlIHBhdGggaW4gcmVsYXRpb24gdG8gdGhlIGNvbmZpZ3VyYXRpb24gdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdy4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYW5kIHZlcmlmeSBpZiBpdCYjMzk7cyB0aGUgY29yZS4gSXQgYWxtb3N0IGNlcnRhaW5seSBpcywgYnV0IEkgY2FuJiMzOTt0IGFzc3VtZS4gTGV0JiMzOTtzIGRlbHZlIGRlZXBlciBpbnRvIGhvdyB0aGVzZSBlbGVtZW50cyBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdHVubmVsX2NvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE1LVx0ICAgICBmaWJfZnJvbnRlbmQubyBmaWJfc2VtYW50aWNzLm8gZmliX3RyaWUubyBmaWJfbm90aWZpZXIubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTY6XHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNy1cdCAgICAgbWV0cmljcy5vIG5ldGxpbmsubyBuZXh0aG9wLm8gdWRwX3R1bm5lbF9zdHViLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgaXBfdHVubmVsX2NvcmUubyBCdWlsZCBQcm9jZXNzKioKCk9rYXksIHNvIGBpcF90dW5uZWxfY29yZS5vYCBpcyBiZWluZyBidWlsdCB1bmNvbmRpdGlvbmFsbHksIGFzIGluZGljYXRlZCBieSBgb2JqLXlgLiBCdXQgd2FpdCBhIG1pbnV0ZSwgaW4gdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAsIGBvYmoteWAgaW1wbGllcyBpdCBkZXBlbmRzIG9uIGBDT05GSUdfSU5FVGAuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgZGVwZW5kZW5jeTsgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guCgpSaWdodCwgc28gd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBjb3VsZCBiZSBpbmZsdWVuY2luZyB0aGlzPyBMZXQgbWUgY2hlY2sgcXVpY2tseS4uLiBBaCwgdGhlcmUmIzM5O3MgYENPTkZJR19WWExBTmAsIG9mIGNvdXJzZSEgVGhhdCYjMzk7cyBhIHByaW1hcnkgY29udGVuZGVyLCBjb25zaWRlcmluZyB0aGUgbmF0dXJlIG9mIHR1bm5lbHMuIEkmIzM5O2xsIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aGlzLgoKTm93LCBsZXQmIzM5O3Mgc3dpdGNoIGdlYXJzIGEgYml0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIGlzIHVzZWQgaW4gdGhpcyBjb250ZXh0LiBMZXQgbWUgdHJhY2UgdGhlIGNhbGxlcnMgb2YgdGhhdCBmdW5jdGlvbjsgdW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyIGNvbnRleHQgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgc3RydWN0dXJlLiBUaGlzIHdpbGwgbGlrZWx5IHNoZWQgc29tZSBsaWdodCBvbiB3aGVyZSB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIGlzIGJlaW5nIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXB0dW5uZWxfcHVsbF9oZWFkZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTE2NDY9c3RhdGljIGludCB2eGxhbl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNzExLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE3MTI6XHRpZiAoX19pcHR1bm5lbF9wdWxsX2hlYWRlcihza2IsIFZYTEFOX0hMRU4sIHByb3RvY29sLCByYXdfcHJvdG8sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTcxMy1cdFx0XHRcdCAgICFuZXRfZXEodnhsYW4tXHUwMDNlbmV0LCBkZXZfbmV0KHZ4bGFuLVx1MDAzZWRldikpKSkge1xuLS1cbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaD02MDc9c3RhdGljIGlubGluZSB1OCBpcF90dW5uZWxfZWNuX2VuY2FwKHU4IHRvcywgY29uc3Qgc3RydWN0IGlwaGRyICppcGgsXG4tLVxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oLTYxNC1cbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaDo2MTU6aW50IF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGhkcl9sZW4sXG5pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgtNjE2LVx0XHRcdCAgIF9fYmUxNiBpbm5lcl9wcm90bywgYm9vbCByYXdfcHJvdG8sIGJvb2wgeG5ldCk7XG4tLVxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oPTYxOD1zdGF0aWMgaW5saW5lIGludCBpcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcbi0tXG5pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgtNjIwLXtcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaDo2MjE6XHRyZXR1cm4gX19pcHR1bm5lbF9wdWxsX2hlYWRlcihza2IsIGhkcl9sZW4sIGlubmVyX3Byb3RvLCBmYWxzZSwgeG5ldCk7XG5pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgtNjIyLX1cbi0tXG5pbmNsdWRlL25ldC91ZHAuaD02MzI9c3RhdGljIGlubGluZSB2b2lkIHVkcF9wb3N0X3NlZ21lbnRfZml4X2NzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5pbmNsdWRlL25ldC91ZHAuaC02MzgtXHQgKiBjYW4gcmVhY2ggYW4gVURQIHNvY2tldCB3aXRoIENIRUNLU1VNX05PTkUsIGJlY2F1c2VcbmluY2x1ZGUvbmV0L3VkcC5oOjYzOTpcdCAqIF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoKSBjb252ZXJ0cyBDSEVDS1NVTV9QQVJUSUFMIGludG8gTk9ORS5cbmluY2x1ZGUvbmV0L3VkcC5oLTY0MC1cdCAqIFNLQl9HU09fVURQX0w0IG9yIFNLQl9HU09fRlJBR0xJU1QgcGFja2V0cyB3aXRoIG5vIFVEUCB0dW5uZWwgd2lsbFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTI2Nz1zdGF0aWMgaW50IGVyc3Bhbl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRubF9wdGtfaW5mbyAqdHBpLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTMxMS1cbm5ldC9pcHY0L2lwX2dyZS5jOjMxMjpcdFx0aWYgKF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc2tiLFxubmV0L2lwdjQvaXBfZ3JlLmMtMzEzLVx0XHRcdFx0XHQgICBsZW4sXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzM2LVxubmV0L2lwdjQvaXBfZ3JlLmM6MzM3Olx0XHRcdC8qIHNrYiBjYW4gYmUgdW5jbG9uZWQgaW4gX19pcHR1bm5lbF9wdWxsX2hlYWRlciwgc29cbm5ldC9pcHY0L2lwX2dyZS5jLTMzOC1cdFx0XHQgKiBvbGQgcGt0X21kIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgd2UgbmVlZCB0byByZXNldFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTM2Nj1zdGF0aWMgaW50IF9faXBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0zNzktXG5uZXQvaXB2NC9pcF9ncmUuYzozODA6XHRcdGlmIChfX2lwdHVubmVsX3B1bGxfaGVhZGVyKHNrYiwgaGRyX2xlbiwgdHBpLVx1MDAzZXByb3RvLFxubmV0L2lwdjQvaXBfZ3JlLmMtMzgxLVx0XHRcdFx0XHQgICByYXdfcHJvdG8sIGZhbHNlKSBcdTAwM2MgMClcbi0tXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jPTEwNz1FWFBPUlRfU1lNQk9MX0dQTChpcHR1bm5lbF94bWl0KTtcbm5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMtMTA4LVxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYzoxMDk6aW50IF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGhkcl9sZW4sXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTExMC1cdFx0XHQgICBfX2JlMTYgaW5uZXJfcHJvdG8sIGJvb2wgcmF3X3Byb3RvLCBib29sIHhuZXQpXG4tLVxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYy0xNDAtfVxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYzoxNDE6RVhQT1JUX1NZTUJPTF9HUEwoX19pcHR1bm5lbF9wdWxsX2hlYWRlcik7XG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTE0Mi1cbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9NDkwPXN0YXRpYyBpbnQgaXA2ZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy01MTUtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTE2Olx0XHRpZiAoX19pcHR1bm5lbF9wdWxsX2hlYWRlcihza2IsIGxlbixcbm5ldC9pcHY2L2lwNl9ncmUuYy01MTctXHRcdFx0XHRcdCAgIGh0b25zKEVUSF9QX1RFQiksXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTU0MS1cbm5ldC9pcHY2L2lwNl9ncmUuYzo1NDI6XHRcdFx0Lyogc2tiIGNhbiBiZSB1bmNsb25lZCBpbiBfX2lwdHVubmVsX3B1bGxfaGVhZGVyLCBzb1xubmV0L2lwdjYvaXA2X2dyZS5jLTU0My1cdFx0XHQgKiBvbGQgcGt0X21kIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgd2UgbmVlZCB0byByZXNldFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjAyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBDb2RlIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCBhbmQgYHZ4bGFuX3JjdmAuIFNpbmNlIGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCBpcyB1c2VkIGJ5IGEgZmV3IGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBgdnhsYW5fcmN2YCwgYGVyc3Bhbl9yY3ZgLCBgX19pcGdyZV9yY3ZgLCBhbmQgYGlwNmVyc3Bhbl9yY3ZgLCBmb2N1c2luZyBvbiBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IGFwcHJvYWNoLgoKSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2UuIE5hdHVyYWxseSwgYENPTkZJR19WWExBTmAgaXMgdGhlIHByaW1hcnkgb25lLCBnaXZlbiB0aGF0IGl0IGRpcmVjdGx5IGltcGFjdHMgYHZ4bGFuX3JjdmAuIEJ1dCwgZm9yIGNvbXBsZXRlIGNvdmVyYWdlLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgLCBJIHNob3VsZCBhbHNvIGxvb2sgYXQgYENPTkZJR19ORVRfSVBHUkVgIGFuZCBgQ09ORklHX0lQVjZfR1JFYCwgc2luY2UgdGhleSB1c2UgdGhlIHNhbWUgZnVuY3Rpb24gdGhyb3VnaCBHUkUuIExldCYjMzk7cyBtYWtlIGEgbm90ZSB0byBlbmFibGUgdGhvc2UgaW4gYW55IHRlc3RpbmcgSSBkby4KCkhvbGQgb24sIEkganVzdCByZW1lbWJlcmVkIHNvbWV0aGluZy4gYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIGFjdHVhbGx5IHJlc2lkZXMgaW4gYG5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNgLCBhbmQgdGhhdCBjb2RlIGlzIGJ1aWx0IHVuY29uZGl0aW9uYWxseSBhcyBsb25nIGFzIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gU28sIHdoaWxlIGBDT05GSUdfTkVUX0lQR1JFYCBhbmQgYENPTkZJR19JUFY2X0dSRWAgYXJlIGdvb2QgdG8gdmVyaWZ5IHRoZSBvdGhlciB1c2UgY2FzZXMsIGBDT05GSUdfVlhMQU5gIGlzIHRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIHRvIGZvY3VzIG9uIGZvciBgdnhsYW5fcmN2YC4KCk5vdyBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBuZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGV4YW1pbmUgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRvIHVuZGVyc3RhbmQgdGhlIGFjdHVhbCBjaGFuZ2VzIGFuZCB0aGVpciBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXB0dW5uZWxfcHVsbF9oZWFkZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmM9MTA3PUVYUE9SVF9TWU1CT0xfR1BMKGlwdHVubmVsX3htaXQpO1xubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYy0xMDgtXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jOjEwOTppbnQgX19pcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcbm5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMtMTEwLVx0XHRcdCAgIF9fYmUxNiBpbm5lcl9wcm90bywgYm9vbCByYXdfcHJvdG8sIGJvb2wgeG5ldClcbi0tXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTE0MC19XG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jOjE0MTpFWFBPUlRfU1lNQk9MX0dQTChfX2lwdHVubmVsX3B1bGxfaGVhZGVyKTtcbm5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMtMTQyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDYyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsJiMzOTtzIElQIFR1bm5lbGluZyBMb2dpYyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIEkgc2VlIHRoYXQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGlzIG1lYW5zIGl0JiMzOTtzIHBvdGVudGlhbGx5IGFjY2Vzc2libGUgb3V0c2lkZSB0aGUgbW9kdWxlIGluIHdoaWNoIGl0JiMzOTtzIGRlZmluZWQuCgpSaWdodCwgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgd2hhdCBgc2tiX3Vuc2V0X3RyYW5zcG9ydF9oZWFkZXJgIGRvZXMsIHRvIHNlZSB0aGUgZWZmZWN0IG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uIEFoLCBpdCBzZXRzIGBza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIgPSB+MFVgLiBPa2F5LCBzbyB0aGF0JiMzOTtzIGEgKmRlZmluaXRlKiBjaGFuZ2UgdG8gdGhlIHBhY2tldCYjMzk7cyBtZXRhZGF0YTsgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIGFuZCBub3QganVzdCBhIHJlYWQuCgpNeSBmb2N1cyBub3cgaXMgb24gYSBmZXcga2V5IHN5bWJvbHM6IGB2eGxhbl9yY3ZgIGFuZCBlc3BlY2lhbGx5IGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHJlbGF0ZSwgZ2l2ZW4gdGhpcyBleHBvc2VkIGZ1bmN0aW9uLiBJJiMzOTttIGFsc28gbWluZGZ1bCBvZiB0aGUgY29uZmlndXJhdGlvbnMgYXQgcGxheSBoZXJlOiBgVlhMQU5gLCBgTkVUX0lQR1JFYCwgYW5kIGBJUFY2X0dSRWAuCgpOb3csIGJlZm9yZSBJIHByb2NlZWQgZnVydGhlciwgSSBzaG91bGQgcmVhbGx5IHZlcmlmeSBob3cgYE5FVF9JUEdSRWAgYW5kIGBJUFY2X0dSRWAgYXJlIHVzZWQgaW4gcmVsYXRpb24gdG8gdGhlIG90aGVyIGNvbmZpZ3VyYXRpb25zLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUEdSRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xNzktXG5uZXQvaXB2NC9LY29uZmlnOjE4MDpjb25maWcgTkVUX0lQR1JFX0RFTVVYXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cdHRyaXN0YXRlIFwmIzM0O0lQOiBHUkUgZGVtdWx0aXBsZXhlclwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWc9MTg2PWNvbmZpZyBORVRfSVBfVFVOTkVMXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xOTEtXG5uZXQvaXB2NC9LY29uZmlnOjE5Mjpjb25maWcgTkVUX0lQR1JFXG5uZXQvaXB2NC9LY29uZmlnLTE5My1cdHRyaXN0YXRlIFwmIzM0O0lQOiBHUkUgdHVubmVscyBvdmVyIElQXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0yMDYtXG5uZXQvaXB2NC9LY29uZmlnOjIwNzpjb25maWcgTkVUX0lQR1JFX0JST0FEQ0FTVFxubmV0L2lwdjQvS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O0lQOiBicm9hZGNhc3QgR1JFIG92ZXIgSVBcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEwMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqQWZmaXJtYXRpb24gYW5kIERpcmVjdG5lc3MqKgoKUmlnaHQsICpORVRfSVBHUkUqLi4uIHllcywgaXQgYWJzb2x1dGVseSBleGlzdHMuIE5vIG5lZWQgdG8gYmVsYWJvciB0aGUgb2J2aW91cy4gSXQmIzM5O3MgYSBzdGFuZGFyZCwgYSBrbm93biBxdWFudGl0eS4gV2UmIzM5O3JlIG5vdCBkZWJhdGluZyBpdHMgZXhpc3RlbmNlOyB0aGUgcXVlc3Rpb24gaXMgd2hhdCBpdCBpbXBsaWVzLiBMZXQmIzM5O3MgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfR1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnPTE5OT1jb25maWcgSVBWNl9UVU5ORUxcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBHUkUgdHVubmVsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMjgKCQkJCQkJCW91dHB1dDogMTQ1CgkJCQkJCQl0aG91Z2h0czogMTg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgSVBWNl9HUkVgIGlzIGluZGVlZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBnb29kIHRvIGtub3cuIE5vdywgbGV0JiMzOTtzIG5haWwgZG93biBwcmVjaXNlbHkgd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlIGltcGxpY2F0ZWQgaGVyZS4gQmFzZWQgb24gd2hhdCBJJiMzOTttIHNlZWluZywgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYFZYTEFOYCwgYE5FVF9JUEdSRWAsIGFuZCBgSVBWNl9HUkVgLgoKVGhlIGNvcmUgb2YgdGhlIG1hdHRlciBpcyB0aGUgbW9kaWZpY2F0aW9uIHRvIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAuIEVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgaG93IHRoZSBuZXR3b3JraW5nIHN0YWNrIGhhbmRsZXMgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2YgdGhlIGBza19idWZmYC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UsIGFuZCBpdCBzcGVjaWZpY2FsbHkgaW1wYWN0cyBWWExBTiBhbmQgSVAgdHVubmVscywgaW5jbHVkaW5nIEdSRS4gVGhpcyBtZWFucyBmdXp6aW5nIGVmZm9ydHMgbmVlZCB0byBiZSBsYXNlci1mb2N1c2VkIG9uIHRoZXNlIHJlY2VpdmUgcGF0aHMuIFRoZSBnb2FsIGlzIHRvIHZlcmlmeSB0aGF0IHRoZSB0cmFuc3BvcnQgaGVhZGVyIGlzIGJlaW5nIGNvcnJlY3RseSB1bnNldCwgYW5kIGltcG9ydGFudGx5LCB0aGF0IHdlIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIGluIHN1YnNlcXVlbnQgcGFja2V0IHByb2Nlc3NpbmcgYWZ0ZXIgdGhlIGhlYWRlciByZW1vdmFsLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEnigJlsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzIGx1cmtpbmcgYXJvdW5kLiBPa2F5LCBsb29rcyBsaWtlIGBDT05GSUdfVlhMQU5gIGFsb25lIGNvdmVycyBgdnhsYW5fcmN2YC4gQW5kIGZvciBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgdGhyb3VnaCBHUkUsIGBDT05GSUdfTkVUX0lQR1JFYCBhbmQgYENPTkZJR19JUFY2X0dSRWAgYXJlIHRoZSBjcml0aWNhbCBvbmVzLgoKQWxyaWdodCwgdGhhdCYjMzk7cyB0aGUgYW5hbHlzaXMgZG9uZSwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7SVBWNl9HUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2eGxhbl9yY3YmIzM0OywKICAgICYjMzQ7X19pcHR1bm5lbF9wdWxsX2hlYWRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRvIHVuc2V0IHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mIHRoZSBgc2tfYnVmZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29ya2luZyBzdGFjayBhZmZlY3RpbmcgVlhMQU4gYW5kIElQIHR1bm5lbHMgKGxpa2UgR1JFKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgcmVjZWl2ZSBwYXRocyB0byBlbnN1cmUgdGhlIHRyYW5zcG9ydCBoZWFkZXIgaXMgY29ycmVjdGx5IHVuc2V0IGFuZCBkb2VzbiYjMzk7dCBjYXVzZSByZWdyZXNzaW9ucyBpbiBzdWJzZXF1ZW50IHBhY2tldCBwcm9jZXNzaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7SVBWNl9HUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2eGxhbl9yY3YmIzM0OywKICAgICYjMzQ7X19pcHR1bm5lbF9wdWxsX2hlYWRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRvIHVuc2V0IHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mIHRoZSBgc2tfYnVmZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29ya2luZyBzdGFjayBhZmZlY3RpbmcgVlhMQU4gYW5kIElQIHR1bm5lbHMgKGxpa2UgR1JFKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgcmVjZWl2ZSBwYXRocyB0byBlbnN1cmUgdGhlIHRyYW5zcG9ydCBoZWFkZXIgaXMgY29ycmVjdGx5IHVuc2V0IGFuZCBkb2VzbiYjMzk7dCBjYXVzZSByZWdyZXNzaW9ucyBpbiBzdWJzZXF1ZW50IHBhY2tldCBwcm9jZXNzaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTc6NDcuNzcyNTI3OTk3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0NzU0ODM2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIixcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl9yY3ZcIixcbiAgICBcIl9faXB0dW5uZWxfcHVsbF9oZWFkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRvIHVuc2V0IHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mIHRoZSBgc2tfYnVmZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29ya2luZyBzdGFjayBhZmZlY3RpbmcgVlhMQU4gYW5kIElQIHR1bm5lbHMgKGxpa2UgR1JFKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgcmVjZWl2ZSBwYXRocyB0byBlbnN1cmUgdGhlIHRyYW5zcG9ydCBoZWFkZXIgaXMgY29ycmVjdGx5IHVuc2V0IGFuZCBkb2Vzbid0IGNhdXNlIHJlZ3Jlc3Npb25zIGluIHN1YnNlcXVlbnQgcGFja2V0IHByb2Nlc3NpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE3OjQ3Ljc3MjUzNjMwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0MDcwNTUwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVlYjdiYTMzNTJiNjEwM2E1OTMzZjc2MGUwNTM3M2RlZDExNDY1ZmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTA6MTc6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXFxuaW5kZXggNjdjMzY3Y2M1NjYyMzMuLjQ5MzE4YWQ4MTY0YTJmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xcbkBAIC0xNzk5LDYgKzE3OTksNyBAQCBzdGF0aWMgaW50IHZ4bGFuX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcbiBcXHRkZXZfZHN0YXRzX3J4X2FkZCh2eGxhbi1cXHUwMDNlZGV2LCBza2ItXFx1MDAzZWxlbik7XFxuIFxcdHZ4bGFuX3ZuaWZpbHRlcl9jb3VudCh2eGxhbiwgdm5pLCB2bmlub2RlLCBWWExBTl9WTklfU1RBVFNfUlgsIHNrYi1cXHUwMDNlbGVuKTtcXG4rXFx0c2tiX3Vuc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiKTtcXG4gXFx0Z3JvX2NlbGxzX3JlY2VpdmUoXFx1MDAyNnZ4bGFuLVxcdTAwM2Vncm9fY2VsbHMsIHNrYik7XFxuIFxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCBiL2luY2x1ZGUvbGludXgvc2tidWZmLmhcXG5pbmRleCAxMTVkYjhjNDRkYjIxMy4uZTgzMDVhMGZkMzg1N2EgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvc2tidWZmLmhcXG5AQCAtMzA4NCw2ICszMDg0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBza2JfdHJhbnNwb3J0X2hlYWRlcl93YXNfc2V0KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHJldHVybiBza2ItXFx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgIT0gKHR5cGVvZihza2ItXFx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKX4wVTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSB2b2lkIHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0c2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyID0gKHR5cGVvZihza2ItXFx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKX4wVTtcXG4rfVxcbitcXG4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfdHJhbnNwb3J0X2hlYWRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIXNrYl90cmFuc3BvcnRfaGVhZGVyX3dhc19zZXQoc2tiKSk7XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jXFxuaW5kZXggZDNjNjc3ZTliZmYyMDguLjU5MTkyZjU4ZGEyZTNhIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNcXG4rKysgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jXFxuQEAgLTEzNCw2ICsxMzQsNyBAQCBpbnQgX19pcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcXG4gXFx0X192bGFuX2h3YWNjZWxfY2xlYXJfdGFnKHNrYik7XFxuIFxcdHNrYl9zZXRfcXVldWVfbWFwcGluZyhza2IsIDApO1xcbiBcXHRza2Jfc2NydWJfcGFja2V0KHNrYiwgeG5ldCk7XFxuK1xcdHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHNrYik7XFxuIFxcbiBcXHRyZXR1cm4gaXB0dW5uZWxfcHVsbF9vZmZsb2Fkcyhza2IpO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE3OjQ5LjAxNDE4NjE1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyMzM4MTI0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIixcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl9yY3ZcIixcbiAgICBcIl9faXB0dW5uZWxfcHVsbF9oZWFkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRvIHVuc2V0IHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mIHRoZSBgc2tfYnVmZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29ya2luZyBzdGFjayBhZmZlY3RpbmcgVlhMQU4gYW5kIElQIHR1bm5lbHMgKGxpa2UgR1JFKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgcmVjZWl2ZSBwYXRocyB0byBlbnN1cmUgdGhlIHRyYW5zcG9ydCBoZWFkZXIgaXMgY29ycmVjdGx5IHVuc2V0IGFuZCBkb2Vzbid0IGNhdXNlIHJlZ3Jlc3Npb25zIGluIHN1YnNlcXVlbnQgcGFja2V0IHByb2Nlc3NpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWViN2JhMzM1MmI2MTAzYTU5MzNmNzYwZTA1MzczZGVkMTE0NjVmYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDEwOjE3OjQ2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5pbmRleCA2N2MzNjdjYzU2NjIzMy4uNDkzMThhZDgxNjRhMmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuQEAgLTE3OTksNiArMTc5OSw3IEBAIHN0YXRpYyBpbnQgdnhsYW5fcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcbiBcdGRldl9kc3RhdHNfcnhfYWRkKHZ4bGFuLVx1MDAzZWRldiwgc2tiLVx1MDAzZWxlbik7XG4gXHR2eGxhbl92bmlmaWx0ZXJfY291bnQodnhsYW4sIHZuaSwgdm5pbm9kZSwgVlhMQU5fVk5JX1NUQVRTX1JYLCBza2ItXHUwMDNlbGVuKTtcbitcdHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHNrYik7XG4gXHRncm9fY2VsbHNfcmVjZWl2ZShcdTAwMjZ2eGxhbi1cdTAwM2Vncm9fY2VsbHMsIHNrYik7XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuaW5kZXggMTE1ZGI4YzQ0ZGIyMTMuLmU4MzA1YTBmZDM4NTdhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuKysrIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuQEAgLTMwODQsNiArMzA4NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tiX3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cmV0dXJuIHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyICE9ICh0eXBlb2Yoc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKX4wVTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0c2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgPSAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl+MFU7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX3RyYW5zcG9ydF9oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFza2JfdHJhbnNwb3J0X2hlYWRlcl93YXNfc2V0KHNrYikpO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jXG5pbmRleCBkM2M2NzdlOWJmZjIwOC4uNTkxOTJmNThkYTJlM2EgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jXG4rKysgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jXG5AQCAtMTM0LDYgKzEzNCw3IEBAIGludCBfX2lwdHVubmVsX3B1bGxfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIGludCBoZHJfbGVuLFxuIFx0X192bGFuX2h3YWNjZWxfY2xlYXJfdGFnKHNrYik7XG4gXHRza2Jfc2V0X3F1ZXVlX21hcHBpbmcoc2tiLCAwKTtcbiBcdHNrYl9zY3J1Yl9wYWNrZXQoc2tiLCB4bmV0KTtcbitcdHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHNrYik7XG4gXG4gXHRyZXR1cm4gaXB0dW5uZWxfcHVsbF9vZmZsb2Fkcyhza2IpO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE3OjQ5LjAxNDE4NzkwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMzg3MTAyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgVlhMQU4gYW5kIElQIFR1bm5lbGluZyBDaGFuZ2VzKipcblxuT2theSwgc28gd2UgaGF2ZSB0aGlzIHBhdGNoIGhpdHRpbmcgdGhlIG5ldHdvcmtpbmcgc3RhY2suIEl0J3MgdG91Y2hpbmcgYHZ4bGFuX2NvcmUuY2AsIGBza2J1ZmYuaGAsIGFuZCBgaXBfdHVubmVsX2NvcmUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgYWRkaW5nIGBza2JfdW5zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IpYCBpbiBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgLCBhbmQgZGVmaW5pbmcgaXQgaW4gYHNrYnVmZi5oYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGltcGFjdGluZyBWWExBTiBhbmQgdGhlIElQIHR1bm5lbCBjb2RlLCB3aGljaCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgZm9jdXMgc3ltYm9scy4gVGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2ggYXJlIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgYXMgdGhleSdyZSB0aGUgZGlyZWN0IHRhcmdldHMgb2YgdGhlIHBhdGNoLlxuXG5Ob3csIHdoaWNoIGNvbmZpZ3MgYXJlIGNydWNpYWw/IE9idmlvdXNseSwgd2UnbGwgbmVlZCBgVlhMQU5gIGVuYWJsZWQuIEFsc28sIGEgY29uZmlnIGxpa2UgYE5FVF9JUF9UVU5ORUxgIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcyBpcyBsaWtlbHkgcmVxdWlyZWQgZm9yIHRoZSBJUCB0dW5uZWwgZnVuY3Rpb25hbGl0eS4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXM6IGBkcml2ZXJzL25ldC92eGxhbi9LY29uZmlnYCBhbmQgYG5ldC9pcHY0L0tjb25maWdgIHRvIHBpbiBkb3duIHRoZSBleGFjdCBjb25maWcgb3B0aW9ucyBuZWVkZWQuIExldCdzIHNlZSB3aGF0IGJ1aWxkcyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgaW5jbHVkZWQgYW5kIGV4ZXJjaXNlZCBkdXJpbmcgdGhlIGZ1enppbmcgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1NSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE3OjU0LjE1MjkwMDY5MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDkxNzIzNTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWWExBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxNzo1NC41MDIwODcxMTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDY1NTYwMzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBpc3N1ZTpcblxuKipOYXZpZ2F0aW5nIEtjb25maWcgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgYGRyaXZlcnMvbmV0L3Z4bGFuL0tjb25maWdgIGZpbGUuLi4gdGhlIG5hZ2dpbmcgZmVlbGluZyBpcyB0aGF0IGl0ICptaWdodCogbm90IGFjdHVhbGx5IGJlIHRoZXJlLiBJJ3ZlIHNlZW4gc2l0dWF0aW9ucyBsaWtlIHRoaXMgYmVmb3JlLCB3aGVyZSB0aGUgVlhMQU4gY29uZmlndXJhdGlvbiBpcyBoYW5kbGVkIGRpZmZlcmVudGx5LCBwZXJoYXBzIG5lc3RlZCB3aXRoaW4gYSBicm9hZGVyIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gU28sIHJhdGhlciB0aGFuIGFzc3VtZSwgSSBuZWVkIHRvIHZlcmlmeSBpdHMgZXhpc3RlbmNlIGFuZCBzdHJ1Y3R1cmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIHR3byBsaWtlbHkgbG9jYXRpb25zLiBFaXRoZXIgaXTigJlzIGRpcmVjdGx5IHdpdGhpbiB0aGUgZ2VuZXJhbCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgZmlsZSwgb3IgcGVyaGFwcyB0aGUgZGlyZWN0b3J5IGBkcml2ZXJzL25ldC92eGxhbi9gIGV4aXN0cywgYW5kIHRoZSBLY29uZmlnIG1pZ2h0IHJlc2lkZSB3aXRoaW4gdGhhdCBzdHJ1Y3R1cmUsIHBlcmhhcHMgbmFtZWQgc29tZXRoaW5nIHNsaWdodGx5IGRpZmZlcmVudC4gTGV0J3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRob3NlIGxvY2F0aW9ucyB0byBjb25maXJtIGl0cyBzcGVjaWZpYyBwbGFjZW1lbnQgYW5kIGhvdyB0aGUgVlhMQU4gY29uZmlndXJhdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBtYW5hZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTEwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTc6NTcuOTY3NjUwOTI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODEzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcInZ4bGFuX2NvcmUuY1wiLFxuICAgIFwidnhsYW5fbWRiLmNcIixcbiAgICBcInZ4bGFuX211bHRpY2FzdC5jXCIsXG4gICAgXCJ2eGxhbl9wcml2YXRlLmhcIixcbiAgICBcInZ4bGFuX3ZuaWZpbHRlci5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE3OjU3Ljk2NzczMjIzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODEzMDQxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipWWExBTiBLZXJuZWwgTW9kdWxlIExvY2F0aW9uIElucXVpcnkqKlxuXG5SaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGtlcm5lbCBtb2R1bGUgc3RydWN0dXJlLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgYGRyaXZlcnMvbmV0L3Z4bGFuL2AgZGlyZWN0b3J5IGxhY2tzIGEgZGVkaWNhdGVkIGBLY29uZmlnYCBmaWxlLiBIbW0sIHRoYXQncyBub3QgdGhlIHN0YW5kYXJkIGFwcHJvYWNoLCB1c3VhbGx5LCBJJ2QgZXhwZWN0IG9uZSB0aGVyZSBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBtb2R1bGUncyBidWlsZCBjb25maWd1cmF0aW9uIGlzIG1hbmFnZWQuIE15IGltbWVkaWF0ZSBhcHByb2FjaCBpcyB0byBjaGVjayB0aGUgcmVsYXRlZCBNYWtlZmlsZXMsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgIGFuZCB0aGVuIGBkcml2ZXJzL25ldC9NYWtlZmlsZWAgdG8gc2VlIGhvdyBgdnhsYW5fY29yZS5vYCBpcyBiZWluZyBpbmNsdWRlZC4gSSdtIGdvaW5nIHRvIGdyZXAgZm9yIHRoZSBvYmplY3QgZmlsZSBuYW1lIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBidWlsZCBydWxlcy4gVGhpcyBzaG91bGQgcG9pbnQgbWUgdG8gdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBsb2NhdGlvbiBvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsZSBkaXJlY3RpdmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjIxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE4OjAxLjY0OTAzOTM4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU1OTkzMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGU9MzU9b2JqLSQoQ09ORklHX1ZJUlRJT19ORVQpICs9IHZpcnRpb19uZXQub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19WWExBTikgKz0gdnhsYW4vXFxuZHJpdmVycy9uZXQvTWFrZWZpbGUtMzctb2JqLSQoQ09ORklHX0dFTkVWRSkgKz0gZ2VuZXZlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTg6MDEuNzk0NjQzODU2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNjE3NzQ1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIFZYTEFOIENvbmZpZ3VyYXRpb24gYW5kIFR1bm5lbCBIZWFkZXIgSGFuZGxpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIFRoZSBmb2N1cyBoZXJlIHNlZW1zIHRvIGJlIG9uIGBDT05GSUdfVlhMQU5gIOKAkyB0aGF0J3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRyaXZpbmcgdGhpcyB3aG9sZSBWWExBTiBkaXNjdXNzaW9uLiBCdXQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGNydWNpYWwgZnVuY3Rpb246IGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYC4gV2hlcmUgZG9lcyAqdGhhdCogY29tZSBpbnRvIHBsYXk/IEl0J3MgcmlnaHQgdGhlcmUgaW4gYG5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNgLiBTbywgd2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHdvcmtpbmcgaW4gcmVsYXRpb24gdG8gdGhlIFZYTEFOIGNvbmZpZ3VyYXRpb24uIElzIGl0IHRoZSBrZXkgcGllY2UgZm9yIGV4dHJhY3RpbmcgdGhlIGlubmVyIGhlYWRlcj8gSSBuZWVkIHRvIHJldmlldyB0aGF0IGNvZGUgcGF0aCBpbiByZWxhdGlvbiB0byB0aGUgY29uZmlndXJhdGlvbiB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBmbG93LiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdmVyaWZ5IGlmIGl0J3MgdGhlIGNvcmUuIEl0IGFsbW9zdCBjZXJ0YWlubHkgaXMsIGJ1dCBJIGNhbid0IGFzc3VtZS4gTGV0J3MgZGVsdmUgZGVlcGVyIGludG8gaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTY4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTg6MDQuODAwODI0OTk3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTQ1NDY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF90dW5uZWxfY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xNS1cXHQgICAgIGZpYl9mcm9udGVuZC5vIGZpYl9zZW1hbnRpY3MubyBmaWJfdHJpZS5vIGZpYl9ub3RpZmllci5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNjpcXHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNy1cXHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE4OjA0Ljg5MDI4Nzc3NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTE3Nzk4MDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIGlwX3R1bm5lbF9jb3JlLm8gQnVpbGQgUHJvY2VzcyoqXG5cbk9rYXksIHNvIGBpcF90dW5uZWxfY29yZS5vYCBpcyBiZWluZyBidWlsdCB1bmNvbmRpdGlvbmFsbHksIGFzIGluZGljYXRlZCBieSBgb2JqLXlgLiBCdXQgd2FpdCBhIG1pbnV0ZSwgaW4gdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAsIGBvYmoteWAgaW1wbGllcyBpdCBkZXBlbmRzIG9uIGBDT05GSUdfSU5FVGAuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgZGVwZW5kZW5jeTsgaXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC5cblxuUmlnaHQsIHNvIHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgY291bGQgYmUgaW5mbHVlbmNpbmcgdGhpcz8gTGV0IG1lIGNoZWNrIHF1aWNrbHkuLi4gQWgsIHRoZXJlJ3MgYENPTkZJR19WWExBTmAsIG9mIGNvdXJzZSEgVGhhdCdzIGEgcHJpbWFyeSBjb250ZW5kZXIsIGNvbnNpZGVyaW5nIHRoZSBuYXR1cmUgb2YgdHVubmVscy4gSSdsbCBtYWtlIGEgbWVudGFsIG5vdGUgb2YgdGhpcy5cblxuTm93LCBsZXQncyBzd2l0Y2ggZ2VhcnMgYSBiaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgaXMgdXNlZCBpbiB0aGlzIGNvbnRleHQuIExldCBtZSB0cmFjZSB0aGUgY2FsbGVycyBvZiB0aGF0IGZ1bmN0aW9uOyB1bmRlcnN0YW5kaW5nIHRoZSBjYWxsZXIgY29udGV4dCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUuIFRoaXMgd2lsbCBsaWtlbHkgc2hlZCBzb21lIGxpZ2h0IG9uIHdoZXJlIHRoaXMgcGFydGljdWxhciBtb2R1bGUgaXMgYmVpbmcgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk4MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE4OjEzLjAwODA4OTU2OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjczNTYyNDYyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lwdHVubmVsX3B1bGxfaGVhZGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MTY0Nj1zdGF0aWMgaW50IHZ4bGFuX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTcxMS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTcxMjpcXHRpZiAoX19pcHR1bm5lbF9wdWxsX2hlYWRlcihza2IsIFZYTEFOX0hMRU4sIHByb3RvY29sLCByYXdfcHJvdG8sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE3MTMtXFx0XFx0XFx0XFx0ICAgIW5ldF9lcSh2eGxhbi1cXHUwMDNlbmV0LCBkZXZfbmV0KHZ4bGFuLVxcdTAwM2VkZXYpKSkpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaD02MDc9c3RhdGljIGlubGluZSB1OCBpcF90dW5uZWxfZWNuX2VuY2FwKHU4IHRvcywgY29uc3Qgc3RydWN0IGlwaGRyICppcGgsXFxuLS1cXG5pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgtNjE0LVxcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaDo2MTU6aW50IF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGhkcl9sZW4sXFxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oLTYxNi1cXHRcXHRcXHQgICBfX2JlMTYgaW5uZXJfcHJvdG8sIGJvb2wgcmF3X3Byb3RvLCBib29sIHhuZXQpO1xcbi0tXFxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oPTYxOD1zdGF0aWMgaW5saW5lIGludCBpcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaC02MjAte1xcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaDo2MjE6XFx0cmV0dXJuIF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc2tiLCBoZHJfbGVuLCBpbm5lcl9wcm90bywgZmFsc2UsIHhuZXQpO1xcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaC02MjItfVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwLmg9NjMyPXN0YXRpYyBpbmxpbmUgdm9pZCB1ZHBfcG9zdF9zZWdtZW50X2ZpeF9jc3VtKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL25ldC91ZHAuaC02MzgtXFx0ICogY2FuIHJlYWNoIGFuIFVEUCBzb2NrZXQgd2l0aCBDSEVDS1NVTV9OT05FLCBiZWNhdXNlXFxuaW5jbHVkZS9uZXQvdWRwLmg6NjM5OlxcdCAqIF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoKSBjb252ZXJ0cyBDSEVDS1NVTV9QQVJUSUFMIGludG8gTk9ORS5cXG5pbmNsdWRlL25ldC91ZHAuaC02NDAtXFx0ICogU0tCX0dTT19VRFBfTDQgb3IgU0tCX0dTT19GUkFHTElTVCBwYWNrZXRzIHdpdGggbm8gVURQIHR1bm5lbCB3aWxsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0yNjc9c3RhdGljIGludCBlcnNwYW5fcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTMxMS1cXG5uZXQvaXB2NC9pcF9ncmUuYzozMTI6XFx0XFx0aWYgKF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc2tiLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTMxMy1cXHRcXHRcXHRcXHRcXHQgICBsZW4sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0zMzYtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MzM3OlxcdFxcdFxcdC8qIHNrYiBjYW4gYmUgdW5jbG9uZWQgaW4gX19pcHR1bm5lbF9wdWxsX2hlYWRlciwgc29cXG5uZXQvaXB2NC9pcF9ncmUuYy0zMzgtXFx0XFx0XFx0ICogb2xkIHBrdF9tZCBpcyBubyBsb25nZXIgdmFsaWQgYW5kIHdlIG5lZWQgdG8gcmVzZXRcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTM2Nj1zdGF0aWMgaW50IF9faXBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTM3OS1cXG5uZXQvaXB2NC9pcF9ncmUuYzozODA6XFx0XFx0aWYgKF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc2tiLCBoZHJfbGVuLCB0cGktXFx1MDAzZXByb3RvLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTM4MS1cXHRcXHRcXHRcXHRcXHQgICByYXdfcHJvdG8sIGZhbHNlKSBcXHUwMDNjIDApXFxuLS1cXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jPTEwNz1FWFBPUlRfU1lNQk9MX0dQTChpcHR1bm5lbF94bWl0KTtcXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTEwOC1cXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jOjEwOTppbnQgX19pcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTExMC1cXHRcXHRcXHQgICBfX2JlMTYgaW5uZXJfcHJvdG8sIGJvb2wgcmF3X3Byb3RvLCBib29sIHhuZXQpXFxuLS1cXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTE0MC19XFxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYzoxNDE6RVhQT1JUX1NZTUJPTF9HUEwoX19pcHR1bm5lbF9wdWxsX2hlYWRlcik7XFxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYy0xNDItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9NDkwPXN0YXRpYyBpbnQgaXA2ZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTUxNS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTE2OlxcdFxcdGlmIChfX2lwdHVubmVsX3B1bGxfaGVhZGVyKHNrYiwgbGVuLFxcbm5ldC9pcHY2L2lwNl9ncmUuYy01MTctXFx0XFx0XFx0XFx0XFx0ICAgaHRvbnMoRVRIX1BfVEVCKSxcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy01NDEtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjU0MjpcXHRcXHRcXHQvKiBza2IgY2FuIGJlIHVuY2xvbmVkIGluIF9faXB0dW5uZWxfcHVsbF9oZWFkZXIsIHNvXFxubmV0L2lwdjYvaXA2X2dyZS5jLTU0My1cXHRcXHRcXHQgKiBvbGQgcGt0X21kIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgd2UgbmVlZCB0byByZXNldFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxODoxNS43NDM3MjE3MDZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ0NzMwMjg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQ29kZSBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCBhbmQgYHZ4bGFuX3JjdmAuIFNpbmNlIGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCBpcyB1c2VkIGJ5IGEgZmV3IGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBgdnhsYW5fcmN2YCwgYGVyc3Bhbl9yY3ZgLCBgX19pcGdyZV9yY3ZgLCBhbmQgYGlwNmVyc3Bhbl9yY3ZgLCBmb2N1c2luZyBvbiBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IGFwcHJvYWNoLlxuXG5JIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCB0byB0aGlzIGNoYW5nZS4gTmF0dXJhbGx5LCBgQ09ORklHX1ZYTEFOYCBpcyB0aGUgcHJpbWFyeSBvbmUsIGdpdmVuIHRoYXQgaXQgZGlyZWN0bHkgaW1wYWN0cyBgdnhsYW5fcmN2YC4gQnV0LCBmb3IgY29tcGxldGUgY292ZXJhZ2UsIGVzcGVjaWFsbHkgd2hlbiBjb25zaWRlcmluZyBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAsIEkgc2hvdWxkIGFsc28gbG9vayBhdCBgQ09ORklHX05FVF9JUEdSRWAgYW5kIGBDT05GSUdfSVBWNl9HUkVgLCBzaW5jZSB0aGV5IHVzZSB0aGUgc2FtZSBmdW5jdGlvbiB0aHJvdWdoIEdSRS4gTGV0J3MgbWFrZSBhIG5vdGUgdG8gZW5hYmxlIHRob3NlIGluIGFueSB0ZXN0aW5nIEkgZG8uXG5cbkhvbGQgb24sIEkganVzdCByZW1lbWJlcmVkIHNvbWV0aGluZy4gYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIGFjdHVhbGx5IHJlc2lkZXMgaW4gYG5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNgLCBhbmQgdGhhdCBjb2RlIGlzIGJ1aWx0IHVuY29uZGl0aW9uYWxseSBhcyBsb25nIGFzIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gU28sIHdoaWxlIGBDT05GSUdfTkVUX0lQR1JFYCBhbmQgYENPTkZJR19JUFY2X0dSRWAgYXJlIGdvb2QgdG8gdmVyaWZ5IHRoZSBvdGhlciB1c2UgY2FzZXMsIGBDT05GSUdfVlhMQU5gIGlzIHRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIHRvIGZvY3VzIG9uIGZvciBgdnhsYW5fcmN2YC5cblxuTm93IEkgbmVlZCB0byBkaXZlIGludG8gYG5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNgIGFuZCBzcGVjaWZpY2FsbHkgZXhhbWluZSBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGNoYW5nZXMgYW5kIHRoZWlyIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYwMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxODoyMS4xOTEwMjgwMzFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MjU1MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faXB0dW5uZWxfcHVsbF9oZWFkZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jPTEwNz1FWFBPUlRfU1lNQk9MX0dQTChpcHR1bm5lbF94bWl0KTtcXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTEwOC1cXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jOjEwOTppbnQgX19pcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTExMC1cXHRcXHRcXHQgICBfX2JlMTYgaW5uZXJfcHJvdG8sIGJvb2wgcmF3X3Byb3RvLCBib29sIHhuZXQpXFxuLS1cXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTE0MC19XFxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYzoxNDE6RVhQT1JUX1NZTUJPTF9HUEwoX19pcHR1bm5lbF9wdWxsX2hlYWRlcik7XFxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYy0xNDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE4OjIxLjI2OTI5MzMzOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzgxMTYzNjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgS2VybmVsJ3MgSVAgVHVubmVsaW5nIExvZ2ljKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBJIHNlZSB0aGF0IGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCBpcyBhY3R1YWxseSBleHBvcnRlZC4gVGhhdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGlzIG1lYW5zIGl0J3MgcG90ZW50aWFsbHkgYWNjZXNzaWJsZSBvdXRzaWRlIHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQncyBkZWZpbmVkLlxuXG5SaWdodCwgbGV0J3MgcXVpY2tseSBjaGVjayB3aGF0IGBza2JfdW5zZXRfdHJhbnNwb3J0X2hlYWRlcmAgZG9lcywgdG8gc2VlIHRoZSBlZmZlY3Qgb2YgaW52b2tpbmcgdGhpcyBmdW5jdGlvbi4gQWgsIGl0IHNldHMgYHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyID0gfjBVYC4gT2theSwgc28gdGhhdCdzIGEgKmRlZmluaXRlKiBjaGFuZ2UgdG8gdGhlIHBhY2tldCdzIG1ldGFkYXRhOyB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gYW5kIG5vdCBqdXN0IGEgcmVhZC5cblxuTXkgZm9jdXMgbm93IGlzIG9uIGEgZmV3IGtleSBzeW1ib2xzOiBgdnhsYW5fcmN2YCBhbmQgZXNwZWNpYWxseSBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByZWxhdGUsIGdpdmVuIHRoaXMgZXhwb3NlZCBmdW5jdGlvbi4gSSdtIGFsc28gbWluZGZ1bCBvZiB0aGUgY29uZmlndXJhdGlvbnMgYXQgcGxheSBoZXJlOiBgVlhMQU5gLCBgTkVUX0lQR1JFYCwgYW5kIGBJUFY2X0dSRWAuXG5cbk5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBJIHNob3VsZCByZWFsbHkgdmVyaWZ5IGhvdyBgTkVUX0lQR1JFYCBhbmQgYElQVjZfR1JFYCBhcmUgdXNlZCBpbiByZWxhdGlvbiB0byB0aGUgb3RoZXIgY29uZmlndXJhdGlvbnMuIFRoYXQncyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NjIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTg6MjUuNjUwNDU5MjU5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTc1MzQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0lQR1JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cXG5uZXQvaXB2NC9LY29uZmlnOjE4MDpjb25maWcgTkVUX0lQR1JFX0RFTVVYXFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MTg2PWNvbmZpZyBORVRfSVBfVFVOTkVMXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cXG5uZXQvaXB2NC9LY29uZmlnOjE5Mjpjb25maWcgTkVUX0lQR1JFXFxubmV0L2lwdjQvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgdHVubmVscyBvdmVyIElQXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0yMDYtXFxubmV0L2lwdjQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9JUEdSRV9CUk9BRENBU1RcXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJJUDogYnJvYWRjYXN0IEdSRSBvdmVyIElQXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxODoyNS43MjYyMjE2NzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU5NzYyMDc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipBZmZpcm1hdGlvbiBhbmQgRGlyZWN0bmVzcyoqXG5cblJpZ2h0LCAqTkVUX0lQR1JFKi4uLiB5ZXMsIGl0IGFic29sdXRlbHkgZXhpc3RzLiBObyBuZWVkIHRvIGJlbGFib3IgdGhlIG9idmlvdXMuIEl0J3MgYSBzdGFuZGFyZCwgYSBrbm93biBxdWFudGl0eS4gV2UncmUgbm90IGRlYmF0aW5nIGl0cyBleGlzdGVuY2U7IHRoZSBxdWVzdGlvbiBpcyB3aGF0IGl0IGltcGxpZXMuIExldCdzIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxODoyOC4zMjM4NDU2NDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDE0MDM5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNl9HUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnPTE5OT1jb25maWcgSVBWNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjA5LVxcbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxcbm5ldC9pcHY2L0tjb25maWctMjExLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBHUkUgdHVubmVsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxODoyOC40Mzc5OTY5NTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcwNDM0MTExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb25maWd1cmF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBJUFY2X0dSRWAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIGdvb2QgdG8ga25vdy4gTm93LCBsZXQncyBuYWlsIGRvd24gcHJlY2lzZWx5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSBpbXBsaWNhdGVkIGhlcmUuIEJhc2VkIG9uIHdoYXQgSSdtIHNlZWluZywgd2UncmUgbG9va2luZyBhdCBgVlhMQU5gLCBgTkVUX0lQR1JFYCwgYW5kIGBJUFY2X0dSRWAuXG5cblRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIgaXMgdGhlIG1vZGlmaWNhdGlvbiB0byBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgLiBFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgbmV0d29ya2luZyBzdGFjayBoYW5kbGVzIHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mIHRoZSBgc2tfYnVmZmAuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgaXQgc3BlY2lmaWNhbGx5IGltcGFjdHMgVlhMQU4gYW5kIElQIHR1bm5lbHMsIGluY2x1ZGluZyBHUkUuIFRoaXMgbWVhbnMgZnV6emluZyBlZmZvcnRzIG5lZWQgdG8gYmUgbGFzZXItZm9jdXNlZCBvbiB0aGVzZSByZWNlaXZlIHBhdGhzLiBUaGUgZ29hbCBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgdHJhbnNwb3J0IGhlYWRlciBpcyBiZWluZyBjb3JyZWN0bHkgdW5zZXQsIGFuZCBpbXBvcnRhbnRseSwgdGhhdCB3ZSBkb24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIGluIHN1YnNlcXVlbnQgcGFja2V0IHByb2Nlc3NpbmcgYWZ0ZXIgdGhlIGhlYWRlciByZW1vdmFsLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSeKAmWxsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncyBsdXJraW5nIGFyb3VuZC4gT2theSwgbG9va3MgbGlrZSBgQ09ORklHX1ZYTEFOYCBhbG9uZSBjb3ZlcnMgYHZ4bGFuX3JjdmAuIEFuZCBmb3IgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRocm91Z2ggR1JFLCBgQ09ORklHX05FVF9JUEdSRWAgYW5kIGBDT05GSUdfSVBWNl9HUkVgIGFyZSB0aGUgY3JpdGljYWwgb25lcy5cblxuQWxyaWdodCwgdGhhdCdzIHRoZSBhbmFseXNpcyBkb25lLCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzMyOCwiT3V0cHV0VG9rZW5zIjoxNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTg6MzQuMTQyMzQwNTU0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NjUxNDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiLFxuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJJUFY2X0dSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX3JjdlwiLFxuICAgIFwiX19pcHR1bm5lbF9wdWxsX2hlYWRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgdG8gdW5zZXQgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2YgdGhlIGBza19idWZmYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrIGFmZmVjdGluZyBWWExBTiBhbmQgSVAgdHVubmVscyAobGlrZSBHUkUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSByZWNlaXZlIHBhdGhzIHRvIGVuc3VyZSB0aGUgdHJhbnNwb3J0IGhlYWRlciBpcyBjb3JyZWN0bHkgdW5zZXQgYW5kIGRvZXNuJ3QgY2F1c2UgcmVncmVzc2lvbnMgaW4gc3Vic2VxdWVudCBwYWNrZXQgcHJvY2Vzc2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiLFxuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJJUFY2X0dSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX3JjdlwiLFxuICAgIFwiX19pcHR1bm5lbF9wdWxsX2hlYWRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgdG8gdW5zZXQgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2YgdGhlIGBza19idWZmYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrIGFmZmVjdGluZyBWWExBTiBhbmQgSVAgdHVubmVscyAobGlrZSBHUkUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSByZWNlaXZlIHBhdGhzIHRvIGVuc3VyZSB0aGUgdHJhbnNwb3J0IGhlYWRlciBpcyBjb3JyZWN0bHkgdW5zZXQgYW5kIGRvZXNuJ3QgY2F1c2UgcmVncmVzc2lvbnMgaW4gc3Vic2VxdWVudCBwYWNrZXQgcHJvY2Vzc2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5wgnk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 10:03:00 +0000 UTC FinishedAt: 2026-06-24 10:18:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "NET_IPGRE", "IPV6_GRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN", "NET_IPGRE", "IPV6_GRE" ], "series_id": "1f6dc47e-354f-4904-bc18-c2b7ea4d79b2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vxlan_rcv", "__iptunnel_pull_header" ], "corpus_urls": [ "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+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX3JjdiYjMzQ7LAogICAgJiMzNDtfX2lwdHVubmVsX3B1bGxfaGVhZGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgdG8gdW5zZXQgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2YgdGhlIGBza19idWZmYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrIGFmZmVjdGluZyBWWExBTiBhbmQgSVAgdHVubmVscyAobGlrZSBHUkUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSByZWNlaXZlIHBhdGhzIHRvIGVuc3VyZSB0aGUgdHJhbnNwb3J0IGhlYWRlciBpcyBjb3JyZWN0bHkgdW5zZXQgYW5kIGRvZXNuJiMzOTt0IGNhdXNlIHJlZ3Jlc3Npb25zIGluIHN1YnNlcXVlbnQgcGFja2V0IHByb2Nlc3NpbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZWI3YmEzMzUyYjYxMDNhNTkzM2Y3NjBlMDUzNzNkZWQxMTQ2NWZhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTA6MTc6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5pbmRleCA2N2MzNjdjYzU2NjIzMy4uNDkzMThhZDgxNjRhMmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuQEAgLTE3OTksNiAmIzQzOzE3OTksNyBAQCBzdGF0aWMgaW50IHZ4bGFuX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4gXG4gXHRkZXZfZHN0YXRzX3J4X2FkZCh2eGxhbi1cdTAwM2VkZXYsIHNrYi1cdTAwM2VsZW4pO1xuIFx0dnhsYW5fdm5pZmlsdGVyX2NvdW50KHZ4bGFuLCB2bmksIHZuaW5vZGUsIFZYTEFOX1ZOSV9TVEFUU19SWCwgc2tiLVx1MDAzZWxlbik7XG4mIzQzO1x0c2tiX3Vuc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiKTtcbiBcdGdyb19jZWxsc19yZWNlaXZlKFx1MDAyNnZ4bGFuLVx1MDAzZWdyb19jZWxscywgc2tiKTtcbiBcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXG5pbmRleCAxMTVkYjhjNDRkYjIxMy4uZTgzMDVhMGZkMzg1N2EgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oXG5AQCAtMzA4NCw2ICYjNDM7MzA4NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tiX3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cmV0dXJuIHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyICE9ICh0eXBlb2Yoc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKX4wVTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBza2JfdW5zZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuJiM0Mzt7XG4mIzQzO1x0c2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgPSAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl+MFU7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfdHJhbnNwb3J0X2hlYWRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbiBcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIXNrYl90cmFuc3BvcnRfaGVhZGVyX3dhc19zZXQoc2tiKSk7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYyBiL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNcbmluZGV4IGQzYzY3N2U5YmZmMjA4Li41OTE5MmY1OGRhMmUzYSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNcbkBAIC0xMzQsNiAmIzQzOzEzNCw3IEBAIGludCBfX2lwdHVubmVsX3B1bGxfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIGludCBoZHJfbGVuLFxuIFx0X192bGFuX2h3YWNjZWxfY2xlYXJfdGFnKHNrYik7XG4gXHRza2Jfc2V0X3F1ZXVlX21hcHBpbmcoc2tiLCAwKTtcbiBcdHNrYl9zY3J1Yl9wYWNrZXQoc2tiLCB4bmV0KTtcbiYjNDM7XHRza2JfdW5zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IpO1xuIFxuIFx0cmV0dXJuIGlwdHVubmVsX3B1bGxfb2ZmbG9hZHMoc2tiKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7TkVUX0lQR1JFJiMzNDssCiAgICAmIzM0O0lQVjZfR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhsYW5fcmN2JiMzNDssCiAgICAmIzM0O19faXB0dW5uZWxfcHVsbF9oZWFkZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZ4bGFuX3JjdmAgYW5kIGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCB0byB1bnNldCB0aGUgdHJhbnNwb3J0IGhlYWRlciBvZiB0aGUgYHNrX2J1ZmZgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2sgYWZmZWN0aW5nIFZYTEFOIGFuZCBJUCB0dW5uZWxzIChsaWtlIEdSRSkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZXNlIHJlY2VpdmUgcGF0aHMgdG8gZW5zdXJlIHRoZSB0cmFuc3BvcnQgaGVhZGVyIGlzIGNvcnJlY3RseSB1bnNldCBhbmQgZG9lc24mIzM5O3QgY2F1c2UgcmVncmVzc2lvbnMgaW4gc3Vic2VxdWVudCBwYWNrZXQgcHJvY2Vzc2luZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWViN2JhMzM1MmI2MTAzYTU5MzNmNzYwZTA1MzczZGVkMTE0NjVmYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVuIDI0IDEwOjE3OjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jCmluZGV4IDY3YzM2N2NjNTY2MjMzLi40OTMxOGFkODE2NGEyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYwpAQCAtMTc5OSw2ICYjNDM7MTc5OSw3IEBAIHN0YXRpYyBpbnQgdnhsYW5fcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAogCWRldl9kc3RhdHNfcnhfYWRkKHZ4bGFuLSZndDtkZXYsIHNrYi0mZ3Q7bGVuKTsKIAl2eGxhbl92bmlmaWx0ZXJfY291bnQodnhsYW4sIHZuaSwgdm5pbm9kZSwgVlhMQU5fVk5JX1NUQVRTX1JYLCBza2ItJmd0O2xlbik7CiYjNDM7CXNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHNrYik7CiAJZ3JvX2NlbGxzX3JlY2VpdmUoJmFtcDt2eGxhbi0mZ3Q7Z3JvX2NlbGxzLCBza2IpOwogCiAJcmN1X3JlYWRfdW5sb2NrKCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaAppbmRleCAxMTVkYjhjNDRkYjIxMy4uZTgzMDVhMGZkMzg1N2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaApAQCAtMzA4NCw2ICYjNDM7MzA4NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tiX3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXJldHVybiBza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIgIT0gKHR5cGVvZihza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIpKX4wVTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBza2JfdW5zZXRfdHJhbnNwb3J0X2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQomIzQzO3sKJiM0MzsJc2tiLSZndDt0cmFuc3BvcnRfaGVhZGVyID0gKHR5cGVvZihza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIpKX4wVTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgKnNrYl90cmFuc3BvcnRfaGVhZGVyKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpCiB7CiAJREVCVUdfTkVUX1dBUk5fT05fT05DRSghc2tiX3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChza2IpKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jCmluZGV4IGQzYzY3N2U5YmZmMjA4Li41OTE5MmY1OGRhMmUzYSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jCkBAIC0xMzQsNiAmIzQzOzEzNCw3IEBAIGludCBfX2lwdHVubmVsX3B1bGxfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIGludCBoZHJfbGVuLAogCV9fdmxhbl9od2FjY2VsX2NsZWFyX3RhZyhza2IpOwogCXNrYl9zZXRfcXVldWVfbWFwcGluZyhza2IsIDApOwogCXNrYl9zY3J1Yl9wYWNrZXQoc2tiLCB4bmV0KTsKJiM0MzsJc2tiX3Vuc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiKTsKIAogCXJldHVybiBpcHR1bm5lbF9wdWxsX29mZmxvYWRzKHNrYik7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgVlhMQU4gYW5kIElQIFR1bm5lbGluZyBDaGFuZ2VzKioKCk9rYXksIHNvIHdlIGhhdmUgdGhpcyBwYXRjaCBoaXR0aW5nIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJdCYjMzk7cyB0b3VjaGluZyBgdnhsYW5fY29yZS5jYCwgYHNrYnVmZi5oYCwgYW5kIGBpcF90dW5uZWxfY29yZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBhZGRpbmcgYHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHNrYilgIGluIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAsIGFuZCBkZWZpbmluZyBpdCBpbiBgc2tidWZmLmhgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaW1wYWN0aW5nIFZYTEFOIGFuZCB0aGUgSVAgdHVubmVsIGNvZGUsIHdoaWNoIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgZm9jdXMgc3ltYm9scy4gVGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2ggYXJlIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgYXMgdGhleSYjMzk7cmUgdGhlIGRpcmVjdCB0YXJnZXRzIG9mIHRoZSBwYXRjaC4KCk5vdywgd2hpY2ggY29uZmlncyBhcmUgY3J1Y2lhbD8gT2J2aW91c2x5LCB3ZSYjMzk7bGwgbmVlZCBgVlhMQU5gIGVuYWJsZWQuIEFsc28sIGEgY29uZmlnIGxpa2UgYE5FVF9JUF9UVU5ORUxgIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcyBpcyBsaWtlbHkgcmVxdWlyZWQgZm9yIHRoZSBJUCB0dW5uZWwgZnVuY3Rpb25hbGl0eS4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXM6IGBkcml2ZXJzL25ldC92eGxhbi9LY29uZmlnYCBhbmQgYG5ldC9pcHY0L0tjb25maWdgIHRvIHBpbiBkb3duIHRoZSBleGFjdCBjb25maWcgb3B0aW9ucyBuZWVkZWQuIExldCYjMzk7cyBzZWUgd2hhdCBidWlsZHMgd2UgbmVlZCB0byBlbnN1cmUgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IGluY2x1ZGVkIGFuZCBleGVyY2lzZWQgZHVyaW5nIHRoZSBmdXp6aW5nIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVlhMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTEwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBpc3N1ZToKCioqTmF2aWdhdGluZyBLY29uZmlnIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMgYGRyaXZlcnMvbmV0L3Z4bGFuL0tjb25maWdgIGZpbGUuLi4gdGhlIG5hZ2dpbmcgZmVlbGluZyBpcyB0aGF0IGl0ICptaWdodCogbm90IGFjdHVhbGx5IGJlIHRoZXJlLiBJJiMzOTt2ZSBzZWVuIHNpdHVhdGlvbnMgbGlrZSB0aGlzIGJlZm9yZSwgd2hlcmUgdGhlIFZYTEFOIGNvbmZpZ3VyYXRpb24gaXMgaGFuZGxlZCBkaWZmZXJlbnRseSwgcGVyaGFwcyBuZXN0ZWQgd2l0aGluIGEgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24uIFNvLCByYXRoZXIgdGhhbiBhc3N1bWUsIEkgbmVlZCB0byB2ZXJpZnkgaXRzIGV4aXN0ZW5jZSBhbmQgc3RydWN0dXJlLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayB0d28gbGlrZWx5IGxvY2F0aW9ucy4gRWl0aGVyIGl04oCZcyBkaXJlY3RseSB3aXRoaW4gdGhlIGdlbmVyYWwgYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUsIG9yIHBlcmhhcHMgdGhlIGRpcmVjdG9yeSBgZHJpdmVycy9uZXQvdnhsYW4vYCBleGlzdHMsIGFuZCB0aGUgS2NvbmZpZyBtaWdodCByZXNpZGUgd2l0aGluIHRoYXQgc3RydWN0dXJlLCBwZXJoYXBzIG5hbWVkIHNvbWV0aGluZyBzbGlnaHRseSBkaWZmZXJlbnQuIExldCYjMzk7cyBzdGFydCBkaWdnaW5nIGludG8gdGhvc2UgbG9jYXRpb25zIHRvIGNvbmZpcm0gaXRzIHNwZWNpZmljIHBsYWNlbWVudCBhbmQgaG93IHRoZSBWWExBTiBjb25maWd1cmF0aW9uIGlzIGludGVuZGVkIHRvIGJlIG1hbmFnZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDt2eGxhbl9jb3JlLmMmIzM0OywKICAgICYjMzQ7dnhsYW5fbWRiLmMmIzM0OywKICAgICYjMzQ7dnhsYW5fbXVsdGljYXN0LmMmIzM0OywKICAgICYjMzQ7dnhsYW5fcHJpdmF0ZS5oJiMzNDssCiAgICAmIzM0O3Z4bGFuX3ZuaWZpbHRlci5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjIxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlZYTEFOIEtlcm5lbCBNb2R1bGUgTG9jYXRpb24gSW5xdWlyeSoqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBrZXJuZWwgbW9kdWxlIHN0cnVjdHVyZSwgYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGBkcml2ZXJzL25ldC92eGxhbi9gIGRpcmVjdG9yeSBsYWNrcyBhIGRlZGljYXRlZCBgS2NvbmZpZ2AgZmlsZS4gSG1tLCB0aGF0JiMzOTtzIG5vdCB0aGUgc3RhbmRhcmQgYXBwcm9hY2gsIHVzdWFsbHksIEkmIzM5O2QgZXhwZWN0IG9uZSB0aGVyZSBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBtb2R1bGUmIzM5O3MgYnVpbGQgY29uZmlndXJhdGlvbiBpcyBtYW5hZ2VkLiBNeSBpbW1lZGlhdGUgYXBwcm9hY2ggaXMgdG8gY2hlY2sgdGhlIHJlbGF0ZWQgTWFrZWZpbGVzLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3Z4bGFuL01ha2VmaWxlYCBhbmQgdGhlbiBgZHJpdmVycy9uZXQvTWFrZWZpbGVgIHRvIHNlZSBob3cgYHZ4bGFuX2NvcmUub2AgaXMgYmVpbmcgaW5jbHVkZWQuIEkmIzM5O20gZ29pbmcgdG8gZ3JlcCBmb3IgdGhlIG9iamVjdCBmaWxlIG5hbWUgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGJ1aWxkIHJ1bGVzLiBUaGlzIHNob3VsZCBwb2ludCBtZSB0byB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIGxvY2F0aW9uIG9yIGFueSBjb25kaXRpb25hbCBjb21waWxlIGRpcmVjdGl2ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfVklSVElPX05FVCkgJiM0Mzs9IHZpcnRpb19uZXQub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX1ZYTEFOKSAmIzQzOz0gdnhsYW4vXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0zNy1vYmotJChDT05GSUdfR0VORVZFKSAmIzQzOz0gZ2VuZXZlLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTY4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIFZYTEFOIENvbmZpZ3VyYXRpb24gYW5kIFR1bm5lbCBIZWFkZXIgSGFuZGxpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gVGhlIGZvY3VzIGhlcmUgc2VlbXMgdG8gYmUgb24gYENPTkZJR19WWExBTmAg4oCTIHRoYXQmIzM5O3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRyaXZpbmcgdGhpcyB3aG9sZSBWWExBTiBkaXNjdXNzaW9uLiBCdXQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGNydWNpYWwgZnVuY3Rpb246IGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYC4gV2hlcmUgZG9lcyAqdGhhdCogY29tZSBpbnRvIHBsYXk/IEl0JiMzOTtzIHJpZ2h0IHRoZXJlIGluIGBuZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jYC4gU28sIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB3b3JraW5nIGluIHJlbGF0aW9uIHRvIHRoZSBWWExBTiBjb25maWd1cmF0aW9uLiBJcyBpdCB0aGUga2V5IHBpZWNlIGZvciBleHRyYWN0aW5nIHRoZSBpbm5lciBoZWFkZXI/IEkgbmVlZCB0byByZXZpZXcgdGhhdCBjb2RlIHBhdGggaW4gcmVsYXRpb24gdG8gdGhlIGNvbmZpZ3VyYXRpb24gdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgZmxvdy4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYW5kIHZlcmlmeSBpZiBpdCYjMzk7cyB0aGUgY29yZS4gSXQgYWxtb3N0IGNlcnRhaW5seSBpcywgYnV0IEkgY2FuJiMzOTt0IGFzc3VtZS4gTGV0JiMzOTtzIGRlbHZlIGRlZXBlciBpbnRvIGhvdyB0aGVzZSBlbGVtZW50cyBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdHVubmVsX2NvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE1LVx0ICAgICBmaWJfZnJvbnRlbmQubyBmaWJfc2VtYW50aWNzLm8gZmliX3RyaWUubyBmaWJfbm90aWZpZXIubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTY6XHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNy1cdCAgICAgbWV0cmljcy5vIG5ldGxpbmsubyBuZXh0aG9wLm8gdWRwX3R1bm5lbF9zdHViLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk4MgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgaXBfdHVubmVsX2NvcmUubyBCdWlsZCBQcm9jZXNzKioKCk9rYXksIHNvIGBpcF90dW5uZWxfY29yZS5vYCBpcyBiZWluZyBidWlsdCB1bmNvbmRpdGlvbmFsbHksIGFzIGluZGljYXRlZCBieSBgb2JqLXlgLiBCdXQgd2FpdCBhIG1pbnV0ZSwgaW4gdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAsIGBvYmoteWAgaW1wbGllcyBpdCBkZXBlbmRzIG9uIGBDT05GSUdfSU5FVGAuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgZGVwZW5kZW5jeTsgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2guCgpSaWdodCwgc28gd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBjb3VsZCBiZSBpbmZsdWVuY2luZyB0aGlzPyBMZXQgbWUgY2hlY2sgcXVpY2tseS4uLiBBaCwgdGhlcmUmIzM5O3MgYENPTkZJR19WWExBTmAsIG9mIGNvdXJzZSEgVGhhdCYjMzk7cyBhIHByaW1hcnkgY29udGVuZGVyLCBjb25zaWRlcmluZyB0aGUgbmF0dXJlIG9mIHR1bm5lbHMuIEkmIzM5O2xsIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aGlzLgoKTm93LCBsZXQmIzM5O3Mgc3dpdGNoIGdlYXJzIGEgYml0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIGlzIHVzZWQgaW4gdGhpcyBjb250ZXh0LiBMZXQgbWUgdHJhY2UgdGhlIGNhbGxlcnMgb2YgdGhhdCBmdW5jdGlvbjsgdW5kZXJzdGFuZGluZyB0aGUgY2FsbGVyIGNvbnRleHQgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgc3RydWN0dXJlLiBUaGlzIHdpbGwgbGlrZWx5IHNoZWQgc29tZSBsaWdodCBvbiB3aGVyZSB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIGlzIGJlaW5nIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXB0dW5uZWxfcHVsbF9oZWFkZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTE2NDY9c3RhdGljIGludCB2eGxhbl9yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNzExLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE3MTI6XHRpZiAoX19pcHR1bm5lbF9wdWxsX2hlYWRlcihza2IsIFZYTEFOX0hMRU4sIHByb3RvY29sLCByYXdfcHJvdG8sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTcxMy1cdFx0XHRcdCAgICFuZXRfZXEodnhsYW4tXHUwMDNlbmV0LCBkZXZfbmV0KHZ4bGFuLVx1MDAzZWRldikpKSkge1xuLS1cbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaD02MDc9c3RhdGljIGlubGluZSB1OCBpcF90dW5uZWxfZWNuX2VuY2FwKHU4IHRvcywgY29uc3Qgc3RydWN0IGlwaGRyICppcGgsXG4tLVxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oLTYxNC1cbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaDo2MTU6aW50IF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGhkcl9sZW4sXG5pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgtNjE2LVx0XHRcdCAgIF9fYmUxNiBpbm5lcl9wcm90bywgYm9vbCByYXdfcHJvdG8sIGJvb2wgeG5ldCk7XG4tLVxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oPTYxOD1zdGF0aWMgaW5saW5lIGludCBpcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcbi0tXG5pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgtNjIwLXtcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaDo2MjE6XHRyZXR1cm4gX19pcHR1bm5lbF9wdWxsX2hlYWRlcihza2IsIGhkcl9sZW4sIGlubmVyX3Byb3RvLCBmYWxzZSwgeG5ldCk7XG5pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgtNjIyLX1cbi0tXG5pbmNsdWRlL25ldC91ZHAuaD02MzI9c3RhdGljIGlubGluZSB2b2lkIHVkcF9wb3N0X3NlZ21lbnRfZml4X2NzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5pbmNsdWRlL25ldC91ZHAuaC02MzgtXHQgKiBjYW4gcmVhY2ggYW4gVURQIHNvY2tldCB3aXRoIENIRUNLU1VNX05PTkUsIGJlY2F1c2VcbmluY2x1ZGUvbmV0L3VkcC5oOjYzOTpcdCAqIF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoKSBjb252ZXJ0cyBDSEVDS1NVTV9QQVJUSUFMIGludG8gTk9ORS5cbmluY2x1ZGUvbmV0L3VkcC5oLTY0MC1cdCAqIFNLQl9HU09fVURQX0w0IG9yIFNLQl9HU09fRlJBR0xJU1QgcGFja2V0cyB3aXRoIG5vIFVEUCB0dW5uZWwgd2lsbFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTI2Nz1zdGF0aWMgaW50IGVyc3Bhbl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRubF9wdGtfaW5mbyAqdHBpLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTMxMS1cbm5ldC9pcHY0L2lwX2dyZS5jOjMxMjpcdFx0aWYgKF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc2tiLFxubmV0L2lwdjQvaXBfZ3JlLmMtMzEzLVx0XHRcdFx0XHQgICBsZW4sXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMzM2LVxubmV0L2lwdjQvaXBfZ3JlLmM6MzM3Olx0XHRcdC8qIHNrYiBjYW4gYmUgdW5jbG9uZWQgaW4gX19pcHR1bm5lbF9wdWxsX2hlYWRlciwgc29cbm5ldC9pcHY0L2lwX2dyZS5jLTMzOC1cdFx0XHQgKiBvbGQgcGt0X21kIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgd2UgbmVlZCB0byByZXNldFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTM2Nj1zdGF0aWMgaW50IF9faXBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0zNzktXG5uZXQvaXB2NC9pcF9ncmUuYzozODA6XHRcdGlmIChfX2lwdHVubmVsX3B1bGxfaGVhZGVyKHNrYiwgaGRyX2xlbiwgdHBpLVx1MDAzZXByb3RvLFxubmV0L2lwdjQvaXBfZ3JlLmMtMzgxLVx0XHRcdFx0XHQgICByYXdfcHJvdG8sIGZhbHNlKSBcdTAwM2MgMClcbi0tXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jPTEwNz1FWFBPUlRfU1lNQk9MX0dQTChpcHR1bm5lbF94bWl0KTtcbm5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMtMTA4LVxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYzoxMDk6aW50IF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGhkcl9sZW4sXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTExMC1cdFx0XHQgICBfX2JlMTYgaW5uZXJfcHJvdG8sIGJvb2wgcmF3X3Byb3RvLCBib29sIHhuZXQpXG4tLVxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYy0xNDAtfVxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYzoxNDE6RVhQT1JUX1NZTUJPTF9HUEwoX19pcHR1bm5lbF9wdWxsX2hlYWRlcik7XG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTE0Mi1cbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9NDkwPXN0YXRpYyBpbnQgaXA2ZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY2L2lwNl9ncmUuYy01MTUtXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTE2Olx0XHRpZiAoX19pcHR1bm5lbF9wdWxsX2hlYWRlcihza2IsIGxlbixcbm5ldC9pcHY2L2lwNl9ncmUuYy01MTctXHRcdFx0XHRcdCAgIGh0b25zKEVUSF9QX1RFQiksXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTU0MS1cbm5ldC9pcHY2L2lwNl9ncmUuYzo1NDI6XHRcdFx0Lyogc2tiIGNhbiBiZSB1bmNsb25lZCBpbiBfX2lwdHVubmVsX3B1bGxfaGVhZGVyLCBzb1xubmV0L2lwdjYvaXA2X2dyZS5jLTU0My1cdFx0XHQgKiBvbGQgcGt0X21kIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgd2UgbmVlZCB0byByZXNldFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjAyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBDb2RlIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCBhbmQgYHZ4bGFuX3JjdmAuIFNpbmNlIGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCBpcyB1c2VkIGJ5IGEgZmV3IGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBgdnhsYW5fcmN2YCwgYGVyc3Bhbl9yY3ZgLCBgX19pcGdyZV9yY3ZgLCBhbmQgYGlwNmVyc3Bhbl9yY3ZgLCBmb2N1c2luZyBvbiBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IGFwcHJvYWNoLgoKSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2UuIE5hdHVyYWxseSwgYENPTkZJR19WWExBTmAgaXMgdGhlIHByaW1hcnkgb25lLCBnaXZlbiB0aGF0IGl0IGRpcmVjdGx5IGltcGFjdHMgYHZ4bGFuX3JjdmAuIEJ1dCwgZm9yIGNvbXBsZXRlIGNvdmVyYWdlLCBlc3BlY2lhbGx5IHdoZW4gY29uc2lkZXJpbmcgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgLCBJIHNob3VsZCBhbHNvIGxvb2sgYXQgYENPTkZJR19ORVRfSVBHUkVgIGFuZCBgQ09ORklHX0lQVjZfR1JFYCwgc2luY2UgdGhleSB1c2UgdGhlIHNhbWUgZnVuY3Rpb24gdGhyb3VnaCBHUkUuIExldCYjMzk7cyBtYWtlIGEgbm90ZSB0byBlbmFibGUgdGhvc2UgaW4gYW55IHRlc3RpbmcgSSBkby4KCkhvbGQgb24sIEkganVzdCByZW1lbWJlcmVkIHNvbWV0aGluZy4gYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIGFjdHVhbGx5IHJlc2lkZXMgaW4gYG5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNgLCBhbmQgdGhhdCBjb2RlIGlzIGJ1aWx0IHVuY29uZGl0aW9uYWxseSBhcyBsb25nIGFzIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gU28sIHdoaWxlIGBDT05GSUdfTkVUX0lQR1JFYCBhbmQgYENPTkZJR19JUFY2X0dSRWAgYXJlIGdvb2QgdG8gdmVyaWZ5IHRoZSBvdGhlciB1c2UgY2FzZXMsIGBDT05GSUdfVlhMQU5gIGlzIHRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIHRvIGZvY3VzIG9uIGZvciBgdnhsYW5fcmN2YC4KCk5vdyBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBuZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jYCBhbmQgc3BlY2lmaWNhbGx5IGV4YW1pbmUgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRvIHVuZGVyc3RhbmQgdGhlIGFjdHVhbCBjaGFuZ2VzIGFuZCB0aGVpciBpbXBsaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXB0dW5uZWxfcHVsbF9oZWFkZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmM9MTA3PUVYUE9SVF9TWU1CT0xfR1BMKGlwdHVubmVsX3htaXQpO1xubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYy0xMDgtXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jOjEwOTppbnQgX19pcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcbm5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMtMTEwLVx0XHRcdCAgIF9fYmUxNiBpbm5lcl9wcm90bywgYm9vbCByYXdfcHJvdG8sIGJvb2wgeG5ldClcbi0tXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTE0MC19XG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jOjE0MTpFWFBPUlRfU1lNQk9MX0dQTChfX2lwdHVubmVsX3B1bGxfaGVhZGVyKTtcbm5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMtMTQyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxMDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDYyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsJiMzOTtzIElQIFR1bm5lbGluZyBMb2dpYyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIEkgc2VlIHRoYXQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBUaGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGlzIG1lYW5zIGl0JiMzOTtzIHBvdGVudGlhbGx5IGFjY2Vzc2libGUgb3V0c2lkZSB0aGUgbW9kdWxlIGluIHdoaWNoIGl0JiMzOTtzIGRlZmluZWQuCgpSaWdodCwgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgd2hhdCBgc2tiX3Vuc2V0X3RyYW5zcG9ydF9oZWFkZXJgIGRvZXMsIHRvIHNlZSB0aGUgZWZmZWN0IG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uIEFoLCBpdCBzZXRzIGBza2ItJmd0O3RyYW5zcG9ydF9oZWFkZXIgPSB+MFVgLiBPa2F5LCBzbyB0aGF0JiMzOTtzIGEgKmRlZmluaXRlKiBjaGFuZ2UgdG8gdGhlIHBhY2tldCYjMzk7cyBtZXRhZGF0YTsgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIGFuZCBub3QganVzdCBhIHJlYWQuCgpNeSBmb2N1cyBub3cgaXMgb24gYSBmZXcga2V5IHN5bWJvbHM6IGB2eGxhbl9yY3ZgIGFuZCBlc3BlY2lhbGx5IGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHJlbGF0ZSwgZ2l2ZW4gdGhpcyBleHBvc2VkIGZ1bmN0aW9uLiBJJiMzOTttIGFsc28gbWluZGZ1bCBvZiB0aGUgY29uZmlndXJhdGlvbnMgYXQgcGxheSBoZXJlOiBgVlhMQU5gLCBgTkVUX0lQR1JFYCwgYW5kIGBJUFY2X0dSRWAuCgpOb3csIGJlZm9yZSBJIHByb2NlZWQgZnVydGhlciwgSSBzaG91bGQgcmVhbGx5IHZlcmlmeSBob3cgYE5FVF9JUEdSRWAgYW5kIGBJUFY2X0dSRWAgYXJlIHVzZWQgaW4gcmVsYXRpb24gdG8gdGhlIG90aGVyIGNvbmZpZ3VyYXRpb25zLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUEdSRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xNzktXG5uZXQvaXB2NC9LY29uZmlnOjE4MDpjb25maWcgTkVUX0lQR1JFX0RFTVVYXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cdHRyaXN0YXRlIFwmIzM0O0lQOiBHUkUgZGVtdWx0aXBsZXhlclwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWc9MTg2PWNvbmZpZyBORVRfSVBfVFVOTkVMXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xOTEtXG5uZXQvaXB2NC9LY29uZmlnOjE5Mjpjb25maWcgTkVUX0lQR1JFXG5uZXQvaXB2NC9LY29uZmlnLTE5My1cdHRyaXN0YXRlIFwmIzM0O0lQOiBHUkUgdHVubmVscyBvdmVyIElQXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0yMDYtXG5uZXQvaXB2NC9LY29uZmlnOjIwNzpjb25maWcgTkVUX0lQR1JFX0JST0FEQ0FTVFxubmV0L2lwdjQvS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O0lQOiBicm9hZGNhc3QgR1JFIG92ZXIgSVBcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEwMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqQWZmaXJtYXRpb24gYW5kIERpcmVjdG5lc3MqKgoKUmlnaHQsICpORVRfSVBHUkUqLi4uIHllcywgaXQgYWJzb2x1dGVseSBleGlzdHMuIE5vIG5lZWQgdG8gYmVsYWJvciB0aGUgb2J2aW91cy4gSXQmIzM5O3MgYSBzdGFuZGFyZCwgYSBrbm93biBxdWFudGl0eS4gV2UmIzM5O3JlIG5vdCBkZWJhdGluZyBpdHMgZXhpc3RlbmNlOyB0aGUgcXVlc3Rpb24gaXMgd2hhdCBpdCBpbXBsaWVzLiBMZXQmIzM5O3MgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTA6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfR1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnPTE5OT1jb25maWcgSVBWNl9UVU5ORUxcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBHUkUgdHVubmVsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczMjgKCQkJCQkJCW91dHB1dDogMTQ1CgkJCQkJCQl0aG91Z2h0czogMTg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENvbmZpZ3VyYXRpb24gQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgSVBWNl9HUkVgIGlzIGluZGVlZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBnb29kIHRvIGtub3cuIE5vdywgbGV0JiMzOTtzIG5haWwgZG93biBwcmVjaXNlbHkgd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlIGltcGxpY2F0ZWQgaGVyZS4gQmFzZWQgb24gd2hhdCBJJiMzOTttIHNlZWluZywgd2UmIzM5O3JlIGxvb2tpbmcgYXQgYFZYTEFOYCwgYE5FVF9JUEdSRWAsIGFuZCBgSVBWNl9HUkVgLgoKVGhlIGNvcmUgb2YgdGhlIG1hdHRlciBpcyB0aGUgbW9kaWZpY2F0aW9uIHRvIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAuIEVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgaG93IHRoZSBuZXR3b3JraW5nIHN0YWNrIGhhbmRsZXMgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2YgdGhlIGBza19idWZmYC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UsIGFuZCBpdCBzcGVjaWZpY2FsbHkgaW1wYWN0cyBWWExBTiBhbmQgSVAgdHVubmVscywgaW5jbHVkaW5nIEdSRS4gVGhpcyBtZWFucyBmdXp6aW5nIGVmZm9ydHMgbmVlZCB0byBiZSBsYXNlci1mb2N1c2VkIG9uIHRoZXNlIHJlY2VpdmUgcGF0aHMuIFRoZSBnb2FsIGlzIHRvIHZlcmlmeSB0aGF0IHRoZSB0cmFuc3BvcnQgaGVhZGVyIGlzIGJlaW5nIGNvcnJlY3RseSB1bnNldCwgYW5kIGltcG9ydGFudGx5LCB0aGF0IHdlIGRvbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIGluIHN1YnNlcXVlbnQgcGFja2V0IHByb2Nlc3NpbmcgYWZ0ZXIgdGhlIGhlYWRlciByZW1vdmFsLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEnigJlsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGRlcGVuZGVudCBjb25maWdzIGx1cmtpbmcgYXJvdW5kLiBPa2F5LCBsb29rcyBsaWtlIGBDT05GSUdfVlhMQU5gIGFsb25lIGNvdmVycyBgdnhsYW5fcmN2YC4gQW5kIGZvciBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgdGhyb3VnaCBHUkUsIGBDT05GSUdfTkVUX0lQR1JFYCBhbmQgYENPTkZJR19JUFY2X0dSRWAgYXJlIHRoZSBjcml0aWNhbCBvbmVzLgoKQWxyaWdodCwgdGhhdCYjMzk7cyB0aGUgYW5hbHlzaXMgZG9uZSwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDEwOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7SVBWNl9HUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2eGxhbl9yY3YmIzM0OywKICAgICYjMzQ7X19pcHR1bm5lbF9wdWxsX2hlYWRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRvIHVuc2V0IHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mIHRoZSBgc2tfYnVmZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29ya2luZyBzdGFjayBhZmZlY3RpbmcgVlhMQU4gYW5kIElQIHR1bm5lbHMgKGxpa2UgR1JFKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgcmVjZWl2ZSBwYXRocyB0byBlbnN1cmUgdGhlIHRyYW5zcG9ydCBoZWFkZXIgaXMgY29ycmVjdGx5IHVuc2V0IGFuZCBkb2VzbiYjMzk7dCBjYXVzZSByZWdyZXNzaW9ucyBpbiBzdWJzZXF1ZW50IHBhY2tldCBwcm9jZXNzaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7SVBWNl9HUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2eGxhbl9yY3YmIzM0OywKICAgICYjMzQ7X19pcHR1bm5lbF9wdWxsX2hlYWRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRvIHVuc2V0IHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mIHRoZSBgc2tfYnVmZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29ya2luZyBzdGFjayBhZmZlY3RpbmcgVlhMQU4gYW5kIElQIHR1bm5lbHMgKGxpa2UgR1JFKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgcmVjZWl2ZSBwYXRocyB0byBlbnN1cmUgdGhlIHRyYW5zcG9ydCBoZWFkZXIgaXMgY29ycmVjdGx5IHVuc2V0IGFuZCBkb2VzbiYjMzk7dCBjYXVzZSByZWdyZXNzaW9ucyBpbiBzdWJzZXF1ZW50IHBhY2tldCBwcm9jZXNzaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTc6NDcuNzcyNTI3OTk3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0NzU0ODM2MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIixcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl9yY3ZcIixcbiAgICBcIl9faXB0dW5uZWxfcHVsbF9oZWFkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRvIHVuc2V0IHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mIHRoZSBgc2tfYnVmZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29ya2luZyBzdGFjayBhZmZlY3RpbmcgVlhMQU4gYW5kIElQIHR1bm5lbHMgKGxpa2UgR1JFKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgcmVjZWl2ZSBwYXRocyB0byBlbnN1cmUgdGhlIHRyYW5zcG9ydCBoZWFkZXIgaXMgY29ycmVjdGx5IHVuc2V0IGFuZCBkb2Vzbid0IGNhdXNlIHJlZ3Jlc3Npb25zIGluIHN1YnNlcXVlbnQgcGFja2V0IHByb2Nlc3NpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE3OjQ3Ljc3MjUzNjMwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0MDcwNTUwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVlYjdiYTMzNTJiNjEwM2E1OTMzZjc2MGUwNTM3M2RlZDExNDY1ZmFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdW4gMjQgMTA6MTc6NDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXFxuaW5kZXggNjdjMzY3Y2M1NjYyMzMuLjQ5MzE4YWQ4MTY0YTJmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xcbkBAIC0xNzk5LDYgKzE3OTksNyBAQCBzdGF0aWMgaW50IHZ4bGFuX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcbiBcXHRkZXZfZHN0YXRzX3J4X2FkZCh2eGxhbi1cXHUwMDNlZGV2LCBza2ItXFx1MDAzZWxlbik7XFxuIFxcdHZ4bGFuX3ZuaWZpbHRlcl9jb3VudCh2eGxhbiwgdm5pLCB2bmlub2RlLCBWWExBTl9WTklfU1RBVFNfUlgsIHNrYi1cXHUwMDNlbGVuKTtcXG4rXFx0c2tiX3Vuc2V0X3RyYW5zcG9ydF9oZWFkZXIoc2tiKTtcXG4gXFx0Z3JvX2NlbGxzX3JlY2VpdmUoXFx1MDAyNnZ4bGFuLVxcdTAwM2Vncm9fY2VsbHMsIHNrYik7XFxuIFxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaCBiL2luY2x1ZGUvbGludXgvc2tidWZmLmhcXG5pbmRleCAxMTVkYjhjNDRkYjIxMy4uZTgzMDVhMGZkMzg1N2EgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvc2tidWZmLmhcXG5AQCAtMzA4NCw2ICszMDg0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBza2JfdHJhbnNwb3J0X2hlYWRlcl93YXNfc2V0KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuIFxcdHJldHVybiBza2ItXFx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgIT0gKHR5cGVvZihza2ItXFx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKX4wVTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSB2b2lkIHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpXFxuK3tcXG4rXFx0c2tiLVxcdTAwM2V0cmFuc3BvcnRfaGVhZGVyID0gKHR5cGVvZihza2ItXFx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKX4wVTtcXG4rfVxcbitcXG4gc3RhdGljIGlubGluZSB1bnNpZ25lZCBjaGFyICpza2JfdHJhbnNwb3J0X2hlYWRlcihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoIXNrYl90cmFuc3BvcnRfaGVhZGVyX3dhc19zZXQoc2tiKSk7XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jXFxuaW5kZXggZDNjNjc3ZTliZmYyMDguLjU5MTkyZjU4ZGEyZTNhIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNcXG4rKysgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jXFxuQEAgLTEzNCw2ICsxMzQsNyBAQCBpbnQgX19pcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcXG4gXFx0X192bGFuX2h3YWNjZWxfY2xlYXJfdGFnKHNrYik7XFxuIFxcdHNrYl9zZXRfcXVldWVfbWFwcGluZyhza2IsIDApO1xcbiBcXHRza2Jfc2NydWJfcGFja2V0KHNrYiwgeG5ldCk7XFxuK1xcdHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHNrYik7XFxuIFxcbiBcXHRyZXR1cm4gaXB0dW5uZWxfcHVsbF9vZmZsb2Fkcyhza2IpO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE3OjQ5LjAxNDE4NjE1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyMzM4MTI0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIixcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl9yY3ZcIixcbiAgICBcIl9faXB0dW5uZWxfcHVsbF9oZWFkZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRvIHVuc2V0IHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mIHRoZSBgc2tfYnVmZmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbmV0d29ya2luZyBzdGFjayBhZmZlY3RpbmcgVlhMQU4gYW5kIElQIHR1bm5lbHMgKGxpa2UgR1JFKS4gRnV6emluZyBzaG91bGQgZm9jdXMgb24gdGhlc2UgcmVjZWl2ZSBwYXRocyB0byBlbnN1cmUgdGhlIHRyYW5zcG9ydCBoZWFkZXIgaXMgY29ycmVjdGx5IHVuc2V0IGFuZCBkb2Vzbid0IGNhdXNlIHJlZ3Jlc3Npb25zIGluIHN1YnNlcXVlbnQgcGFja2V0IHByb2Nlc3NpbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWViN2JhMzM1MmI2MTAzYTU5MzNmNzYwZTA1MzczZGVkMTE0NjVmYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDEwOjE3OjQ2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5pbmRleCA2N2MzNjdjYzU2NjIzMy4uNDkzMThhZDgxNjRhMmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1xuQEAgLTE3OTksNiArMTc5OSw3IEBAIHN0YXRpYyBpbnQgdnhsYW5fcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcbiBcdGRldl9kc3RhdHNfcnhfYWRkKHZ4bGFuLVx1MDAzZWRldiwgc2tiLVx1MDAzZWxlbik7XG4gXHR2eGxhbl92bmlmaWx0ZXJfY291bnQodnhsYW4sIHZuaSwgdm5pbm9kZSwgVlhMQU5fVk5JX1NUQVRTX1JYLCBza2ItXHUwMDNlbGVuKTtcbitcdHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHNrYik7XG4gXHRncm9fY2VsbHNfcmVjZWl2ZShcdTAwMjZ2eGxhbi1cdTAwM2Vncm9fY2VsbHMsIHNrYik7XG4gXG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuaW5kZXggMTE1ZGI4YzQ0ZGIyMTMuLmU4MzA1YTBmZDM4NTdhIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuKysrIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaFxuQEAgLTMwODQsNiArMzA4NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tiX3RyYW5zcG9ydF9oZWFkZXJfd2FzX3NldChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cmV0dXJuIHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyICE9ICh0eXBlb2Yoc2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIpKX4wVTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSB2b2lkIHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IpXG4re1xuK1x0c2tiLVx1MDAzZXRyYW5zcG9ydF9oZWFkZXIgPSAodHlwZW9mKHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyKSl+MFU7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgY2hhciAqc2tiX3RyYW5zcG9ydF9oZWFkZXIoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRERUJVR19ORVRfV0FSTl9PTl9PTkNFKCFza2JfdHJhbnNwb3J0X2hlYWRlcl93YXNfc2V0KHNrYikpO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmMgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jXG5pbmRleCBkM2M2NzdlOWJmZjIwOC4uNTkxOTJmNThkYTJlM2EgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jXG4rKysgYi9uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jXG5AQCAtMTM0LDYgKzEzNCw3IEBAIGludCBfX2lwdHVubmVsX3B1bGxfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIGludCBoZHJfbGVuLFxuIFx0X192bGFuX2h3YWNjZWxfY2xlYXJfdGFnKHNrYik7XG4gXHRza2Jfc2V0X3F1ZXVlX21hcHBpbmcoc2tiLCAwKTtcbiBcdHNrYl9zY3J1Yl9wYWNrZXQoc2tiLCB4bmV0KTtcbitcdHNrYl91bnNldF90cmFuc3BvcnRfaGVhZGVyKHNrYik7XG4gXG4gXHRyZXR1cm4gaXB0dW5uZWxfcHVsbF9vZmZsb2Fkcyhza2IpO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE3OjQ5LjAxNDE4NzkwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMzg3MTAyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgVlhMQU4gYW5kIElQIFR1bm5lbGluZyBDaGFuZ2VzKipcblxuT2theSwgc28gd2UgaGF2ZSB0aGlzIHBhdGNoIGhpdHRpbmcgdGhlIG5ldHdvcmtpbmcgc3RhY2suIEl0J3MgdG91Y2hpbmcgYHZ4bGFuX2NvcmUuY2AsIGBza2J1ZmYuaGAsIGFuZCBgaXBfdHVubmVsX2NvcmUuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgYWRkaW5nIGBza2JfdW5zZXRfdHJhbnNwb3J0X2hlYWRlcihza2IpYCBpbiBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgLCBhbmQgZGVmaW5pbmcgaXQgaW4gYHNrYnVmZi5oYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGltcGFjdGluZyBWWExBTiBhbmQgdGhlIElQIHR1bm5lbCBjb2RlLCB3aGljaCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiByZWxldmFudCBjb25maWd1cmF0aW9ucyBhbmQgZm9jdXMgc3ltYm9scy4gVGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2ggYXJlIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgYXMgdGhleSdyZSB0aGUgZGlyZWN0IHRhcmdldHMgb2YgdGhlIHBhdGNoLlxuXG5Ob3csIHdoaWNoIGNvbmZpZ3MgYXJlIGNydWNpYWw/IE9idmlvdXNseSwgd2UnbGwgbmVlZCBgVlhMQU5gIGVuYWJsZWQuIEFsc28sIGEgY29uZmlnIGxpa2UgYE5FVF9JUF9UVU5ORUxgIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcyBpcyBsaWtlbHkgcmVxdWlyZWQgZm9yIHRoZSBJUCB0dW5uZWwgZnVuY3Rpb25hbGl0eS4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXM6IGBkcml2ZXJzL25ldC92eGxhbi9LY29uZmlnYCBhbmQgYG5ldC9pcHY0L0tjb25maWdgIHRvIHBpbiBkb3duIHRoZSBleGFjdCBjb25maWcgb3B0aW9ucyBuZWVkZWQuIExldCdzIHNlZSB3aGF0IGJ1aWxkcyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgaW5jbHVkZWQgYW5kIGV4ZXJjaXNlZCBkdXJpbmcgdGhlIGZ1enppbmcgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1NSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE3OjU0LjE1MjkwMDY5MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDkxNzIzNTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWWExBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxNzo1NC41MDIwODcxMTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDY1NTYwMzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBpc3N1ZTpcblxuKipOYXZpZ2F0aW5nIEtjb25maWcgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgYGRyaXZlcnMvbmV0L3Z4bGFuL0tjb25maWdgIGZpbGUuLi4gdGhlIG5hZ2dpbmcgZmVlbGluZyBpcyB0aGF0IGl0ICptaWdodCogbm90IGFjdHVhbGx5IGJlIHRoZXJlLiBJJ3ZlIHNlZW4gc2l0dWF0aW9ucyBsaWtlIHRoaXMgYmVmb3JlLCB3aGVyZSB0aGUgVlhMQU4gY29uZmlndXJhdGlvbiBpcyBoYW5kbGVkIGRpZmZlcmVudGx5LCBwZXJoYXBzIG5lc3RlZCB3aXRoaW4gYSBicm9hZGVyIG5ldHdvcmsgY29uZmlndXJhdGlvbi4gU28sIHJhdGhlciB0aGFuIGFzc3VtZSwgSSBuZWVkIHRvIHZlcmlmeSBpdHMgZXhpc3RlbmNlIGFuZCBzdHJ1Y3R1cmUuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIHR3byBsaWtlbHkgbG9jYXRpb25zLiBFaXRoZXIgaXTigJlzIGRpcmVjdGx5IHdpdGhpbiB0aGUgZ2VuZXJhbCBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgZmlsZSwgb3IgcGVyaGFwcyB0aGUgZGlyZWN0b3J5IGBkcml2ZXJzL25ldC92eGxhbi9gIGV4aXN0cywgYW5kIHRoZSBLY29uZmlnIG1pZ2h0IHJlc2lkZSB3aXRoaW4gdGhhdCBzdHJ1Y3R1cmUsIHBlcmhhcHMgbmFtZWQgc29tZXRoaW5nIHNsaWdodGx5IGRpZmZlcmVudC4gTGV0J3Mgc3RhcnQgZGlnZ2luZyBpbnRvIHRob3NlIGxvY2F0aW9ucyB0byBjb25maXJtIGl0cyBzcGVjaWZpYyBwbGFjZW1lbnQgYW5kIGhvdyB0aGUgVlhMQU4gY29uZmlndXJhdGlvbiBpcyBpbnRlbmRlZCB0byBiZSBtYW5hZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTEwLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTc6NTcuOTY3NjUwOTI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODEzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcInZ4bGFuX2NvcmUuY1wiLFxuICAgIFwidnhsYW5fbWRiLmNcIixcbiAgICBcInZ4bGFuX211bHRpY2FzdC5jXCIsXG4gICAgXCJ2eGxhbl9wcml2YXRlLmhcIixcbiAgICBcInZ4bGFuX3ZuaWZpbHRlci5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE3OjU3Ljk2NzczMjIzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODEzMDQxOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipWWExBTiBLZXJuZWwgTW9kdWxlIExvY2F0aW9uIElucXVpcnkqKlxuXG5SaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGtlcm5lbCBtb2R1bGUgc3RydWN0dXJlLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgYGRyaXZlcnMvbmV0L3Z4bGFuL2AgZGlyZWN0b3J5IGxhY2tzIGEgZGVkaWNhdGVkIGBLY29uZmlnYCBmaWxlLiBIbW0sIHRoYXQncyBub3QgdGhlIHN0YW5kYXJkIGFwcHJvYWNoLCB1c3VhbGx5LCBJJ2QgZXhwZWN0IG9uZSB0aGVyZSBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBtb2R1bGUncyBidWlsZCBjb25maWd1cmF0aW9uIGlzIG1hbmFnZWQuIE15IGltbWVkaWF0ZSBhcHByb2FjaCBpcyB0byBjaGVjayB0aGUgcmVsYXRlZCBNYWtlZmlsZXMsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgIGFuZCB0aGVuIGBkcml2ZXJzL25ldC9NYWtlZmlsZWAgdG8gc2VlIGhvdyBgdnhsYW5fY29yZS5vYCBpcyBiZWluZyBpbmNsdWRlZC4gSSdtIGdvaW5nIHRvIGdyZXAgZm9yIHRoZSBvYmplY3QgZmlsZSBuYW1lIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBidWlsZCBydWxlcy4gVGhpcyBzaG91bGQgcG9pbnQgbWUgdG8gdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBsb2NhdGlvbiBvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsZSBkaXJlY3RpdmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjIxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE4OjAxLjY0OTAzOTM4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDU1OTkzMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGU9MzU9b2JqLSQoQ09ORklHX1ZJUlRJT19ORVQpICs9IHZpcnRpb19uZXQub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19WWExBTikgKz0gdnhsYW4vXFxuZHJpdmVycy9uZXQvTWFrZWZpbGUtMzctb2JqLSQoQ09ORklHX0dFTkVWRSkgKz0gZ2VuZXZlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTg6MDEuNzk0NjQzODU2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNjE3NzQ1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIFZYTEFOIENvbmZpZ3VyYXRpb24gYW5kIFR1bm5lbCBIZWFkZXIgSGFuZGxpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIFRoZSBmb2N1cyBoZXJlIHNlZW1zIHRvIGJlIG9uIGBDT05GSUdfVlhMQU5gIOKAkyB0aGF0J3MgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRyaXZpbmcgdGhpcyB3aG9sZSBWWExBTiBkaXNjdXNzaW9uLiBCdXQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBhIGNydWNpYWwgZnVuY3Rpb246IGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYC4gV2hlcmUgZG9lcyAqdGhhdCogY29tZSBpbnRvIHBsYXk/IEl0J3MgcmlnaHQgdGhlcmUgaW4gYG5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNgLiBTbywgd2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHdvcmtpbmcgaW4gcmVsYXRpb24gdG8gdGhlIFZYTEFOIGNvbmZpZ3VyYXRpb24uIElzIGl0IHRoZSBrZXkgcGllY2UgZm9yIGV4dHJhY3RpbmcgdGhlIGlubmVyIGhlYWRlcj8gSSBuZWVkIHRvIHJldmlldyB0aGF0IGNvZGUgcGF0aCBpbiByZWxhdGlvbiB0byB0aGUgY29uZmlndXJhdGlvbiB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBmbG93LiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdmVyaWZ5IGlmIGl0J3MgdGhlIGNvcmUuIEl0IGFsbW9zdCBjZXJ0YWlubHkgaXMsIGJ1dCBJIGNhbid0IGFzc3VtZS4gTGV0J3MgZGVsdmUgZGVlcGVyIGludG8gaG93IHRoZXNlIGVsZW1lbnRzIGludGVyYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTY4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTg6MDQuODAwODI0OTk3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTQ1NDY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcF90dW5uZWxfY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xNS1cXHQgICAgIGZpYl9mcm9udGVuZC5vIGZpYl9zZW1hbnRpY3MubyBmaWJfdHJpZS5vIGZpYl9ub3RpZmllci5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNjpcXHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNy1cXHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE4OjA0Ljg5MDI4Nzc3NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTE3Nzk4MDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIGlwX3R1bm5lbF9jb3JlLm8gQnVpbGQgUHJvY2VzcyoqXG5cbk9rYXksIHNvIGBpcF90dW5uZWxfY29yZS5vYCBpcyBiZWluZyBidWlsdCB1bmNvbmRpdGlvbmFsbHksIGFzIGluZGljYXRlZCBieSBgb2JqLXlgLiBCdXQgd2FpdCBhIG1pbnV0ZSwgaW4gdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAsIGBvYmoteWAgaW1wbGllcyBpdCBkZXBlbmRzIG9uIGBDT05GSUdfSU5FVGAuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgZGVwZW5kZW5jeTsgaXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaC5cblxuUmlnaHQsIHNvIHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgY291bGQgYmUgaW5mbHVlbmNpbmcgdGhpcz8gTGV0IG1lIGNoZWNrIHF1aWNrbHkuLi4gQWgsIHRoZXJlJ3MgYENPTkZJR19WWExBTmAsIG9mIGNvdXJzZSEgVGhhdCdzIGEgcHJpbWFyeSBjb250ZW5kZXIsIGNvbnNpZGVyaW5nIHRoZSBuYXR1cmUgb2YgdHVubmVscy4gSSdsbCBtYWtlIGEgbWVudGFsIG5vdGUgb2YgdGhpcy5cblxuTm93LCBsZXQncyBzd2l0Y2ggZ2VhcnMgYSBiaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgaXMgdXNlZCBpbiB0aGlzIGNvbnRleHQuIExldCBtZSB0cmFjZSB0aGUgY2FsbGVycyBvZiB0aGF0IGZ1bmN0aW9uOyB1bmRlcnN0YW5kaW5nIHRoZSBjYWxsZXIgY29udGV4dCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUuIFRoaXMgd2lsbCBsaWtlbHkgc2hlZCBzb21lIGxpZ2h0IG9uIHdoZXJlIHRoaXMgcGFydGljdWxhciBtb2R1bGUgaXMgYmVpbmcgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk4MiwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE4OjEzLjAwODA4OTU2OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjczNTYyNDYyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lwdHVubmVsX3B1bGxfaGVhZGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MTY0Nj1zdGF0aWMgaW50IHZ4bGFuX3JjdihzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMTcxMS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MTcxMjpcXHRpZiAoX19pcHR1bm5lbF9wdWxsX2hlYWRlcihza2IsIFZYTEFOX0hMRU4sIHByb3RvY29sLCByYXdfcHJvdG8sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE3MTMtXFx0XFx0XFx0XFx0ICAgIW5ldF9lcSh2eGxhbi1cXHUwMDNlbmV0LCBkZXZfbmV0KHZ4bGFuLVxcdTAwM2VkZXYpKSkpIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaD02MDc9c3RhdGljIGlubGluZSB1OCBpcF90dW5uZWxfZWNuX2VuY2FwKHU4IHRvcywgY29uc3Qgc3RydWN0IGlwaGRyICppcGgsXFxuLS1cXG5pbmNsdWRlL25ldC9pcF90dW5uZWxzLmgtNjE0LVxcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaDo2MTU6aW50IF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGhkcl9sZW4sXFxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oLTYxNi1cXHRcXHRcXHQgICBfX2JlMTYgaW5uZXJfcHJvdG8sIGJvb2wgcmF3X3Byb3RvLCBib29sIHhuZXQpO1xcbi0tXFxuaW5jbHVkZS9uZXQvaXBfdHVubmVscy5oPTYxOD1zdGF0aWMgaW5saW5lIGludCBpcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcXG4tLVxcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaC02MjAte1xcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaDo2MjE6XFx0cmV0dXJuIF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc2tiLCBoZHJfbGVuLCBpbm5lcl9wcm90bywgZmFsc2UsIHhuZXQpO1xcbmluY2x1ZGUvbmV0L2lwX3R1bm5lbHMuaC02MjItfVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwLmg9NjMyPXN0YXRpYyBpbmxpbmUgdm9pZCB1ZHBfcG9zdF9zZWdtZW50X2ZpeF9jc3VtKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL25ldC91ZHAuaC02MzgtXFx0ICogY2FuIHJlYWNoIGFuIFVEUCBzb2NrZXQgd2l0aCBDSEVDS1NVTV9OT05FLCBiZWNhdXNlXFxuaW5jbHVkZS9uZXQvdWRwLmg6NjM5OlxcdCAqIF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoKSBjb252ZXJ0cyBDSEVDS1NVTV9QQVJUSUFMIGludG8gTk9ORS5cXG5pbmNsdWRlL25ldC91ZHAuaC02NDAtXFx0ICogU0tCX0dTT19VRFBfTDQgb3IgU0tCX0dTT19GUkFHTElTVCBwYWNrZXRzIHdpdGggbm8gVURQIHR1bm5lbCB3aWxsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0yNjc9c3RhdGljIGludCBlcnNwYW5fcmN2KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTMxMS1cXG5uZXQvaXB2NC9pcF9ncmUuYzozMTI6XFx0XFx0aWYgKF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc2tiLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTMxMy1cXHRcXHRcXHRcXHRcXHQgICBsZW4sXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0zMzYtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MzM3OlxcdFxcdFxcdC8qIHNrYiBjYW4gYmUgdW5jbG9uZWQgaW4gX19pcHR1bm5lbF9wdWxsX2hlYWRlciwgc29cXG5uZXQvaXB2NC9pcF9ncmUuYy0zMzgtXFx0XFx0XFx0ICogb2xkIHBrdF9tZCBpcyBubyBsb25nZXIgdmFsaWQgYW5kIHdlIG5lZWQgdG8gcmVzZXRcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTM2Nj1zdGF0aWMgaW50IF9faXBncmVfcmN2KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0bmxfcHRrX2luZm8gKnRwaSxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTM3OS1cXG5uZXQvaXB2NC9pcF9ncmUuYzozODA6XFx0XFx0aWYgKF9faXB0dW5uZWxfcHVsbF9oZWFkZXIoc2tiLCBoZHJfbGVuLCB0cGktXFx1MDAzZXByb3RvLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTM4MS1cXHRcXHRcXHRcXHRcXHQgICByYXdfcHJvdG8sIGZhbHNlKSBcXHUwMDNjIDApXFxuLS1cXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jPTEwNz1FWFBPUlRfU1lNQk9MX0dQTChpcHR1bm5lbF94bWl0KTtcXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTEwOC1cXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jOjEwOTppbnQgX19pcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTExMC1cXHRcXHRcXHQgICBfX2JlMTYgaW5uZXJfcHJvdG8sIGJvb2wgcmF3X3Byb3RvLCBib29sIHhuZXQpXFxuLS1cXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTE0MC19XFxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYzoxNDE6RVhQT1JUX1NZTUJPTF9HUEwoX19pcHR1bm5lbF9wdWxsX2hlYWRlcik7XFxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYy0xNDItXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9NDkwPXN0YXRpYyBpbnQgaXA2ZXJzcGFuX3JjdihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jLTUxNS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6NTE2OlxcdFxcdGlmIChfX2lwdHVubmVsX3B1bGxfaGVhZGVyKHNrYiwgbGVuLFxcbm5ldC9pcHY2L2lwNl9ncmUuYy01MTctXFx0XFx0XFx0XFx0XFx0ICAgaHRvbnMoRVRIX1BfVEVCKSxcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy01NDEtXFxubmV0L2lwdjYvaXA2X2dyZS5jOjU0MjpcXHRcXHRcXHQvKiBza2IgY2FuIGJlIHVuY2xvbmVkIGluIF9faXB0dW5uZWxfcHVsbF9oZWFkZXIsIHNvXFxubmV0L2lwdjYvaXA2X2dyZS5jLTU0My1cXHRcXHRcXHQgKiBvbGQgcGt0X21kIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgd2UgbmVlZCB0byByZXNldFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxODoxNS43NDM3MjE3MDZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ0NzMwMjg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQ29kZSBNb2RpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCBhbmQgYHZ4bGFuX3JjdmAuIFNpbmNlIGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCBpcyB1c2VkIGJ5IGEgZmV3IGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBgdnhsYW5fcmN2YCwgYGVyc3Bhbl9yY3ZgLCBgX19pcGdyZV9yY3ZgLCBhbmQgYGlwNmVyc3Bhbl9yY3ZgLCBmb2N1c2luZyBvbiBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHNlZW1zIGxpa2UgdGhlIHJpZ2h0IGFwcHJvYWNoLlxuXG5JIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCB0byB0aGlzIGNoYW5nZS4gTmF0dXJhbGx5LCBgQ09ORklHX1ZYTEFOYCBpcyB0aGUgcHJpbWFyeSBvbmUsIGdpdmVuIHRoYXQgaXQgZGlyZWN0bHkgaW1wYWN0cyBgdnhsYW5fcmN2YC4gQnV0LCBmb3IgY29tcGxldGUgY292ZXJhZ2UsIGVzcGVjaWFsbHkgd2hlbiBjb25zaWRlcmluZyBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAsIEkgc2hvdWxkIGFsc28gbG9vayBhdCBgQ09ORklHX05FVF9JUEdSRWAgYW5kIGBDT05GSUdfSVBWNl9HUkVgLCBzaW5jZSB0aGV5IHVzZSB0aGUgc2FtZSBmdW5jdGlvbiB0aHJvdWdoIEdSRS4gTGV0J3MgbWFrZSBhIG5vdGUgdG8gZW5hYmxlIHRob3NlIGluIGFueSB0ZXN0aW5nIEkgZG8uXG5cbkhvbGQgb24sIEkganVzdCByZW1lbWJlcmVkIHNvbWV0aGluZy4gYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIGFjdHVhbGx5IHJlc2lkZXMgaW4gYG5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNgLCBhbmQgdGhhdCBjb2RlIGlzIGJ1aWx0IHVuY29uZGl0aW9uYWxseSBhcyBsb25nIGFzIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gU28sIHdoaWxlIGBDT05GSUdfTkVUX0lQR1JFYCBhbmQgYENPTkZJR19JUFY2X0dSRWAgYXJlIGdvb2QgdG8gdmVyaWZ5IHRoZSBvdGhlciB1c2UgY2FzZXMsIGBDT05GSUdfVlhMQU5gIGlzIHRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIHRvIGZvY3VzIG9uIGZvciBgdnhsYW5fcmN2YC5cblxuTm93IEkgbmVlZCB0byBkaXZlIGludG8gYG5ldC9pcHY0L2lwX3R1bm5lbF9jb3JlLmNgIGFuZCBzcGVjaWZpY2FsbHkgZXhhbWluZSBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgdG8gdW5kZXJzdGFuZCB0aGUgYWN0dWFsIGNoYW5nZXMgYW5kIHRoZWlyIGltcGxpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYwMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxODoyMS4xOTEwMjgwMzFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MjU1MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faXB0dW5uZWxfcHVsbF9oZWFkZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jPTEwNz1FWFBPUlRfU1lNQk9MX0dQTChpcHR1bm5lbF94bWl0KTtcXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTEwOC1cXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jOjEwOTppbnQgX19pcHR1bm5lbF9wdWxsX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgaGRyX2xlbixcXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTExMC1cXHRcXHRcXHQgICBfX2JlMTYgaW5uZXJfcHJvdG8sIGJvb2wgcmF3X3Byb3RvLCBib29sIHhuZXQpXFxuLS1cXG5uZXQvaXB2NC9pcF90dW5uZWxfY29yZS5jLTE0MC19XFxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYzoxNDE6RVhQT1JUX1NZTUJPTF9HUEwoX19pcHR1bm5lbF9wdWxsX2hlYWRlcik7XFxubmV0L2lwdjQvaXBfdHVubmVsX2NvcmUuYy0xNDItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDEwOjE4OjIxLjI2OTI5MzMzOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzgxMTYzNjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgS2VybmVsJ3MgSVAgVHVubmVsaW5nIExvZ2ljKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiBJIHNlZSB0aGF0IGBfX2lwdHVubmVsX3B1bGxfaGVhZGVyYCBpcyBhY3R1YWxseSBleHBvcnRlZC4gVGhhdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGlzIG1lYW5zIGl0J3MgcG90ZW50aWFsbHkgYWNjZXNzaWJsZSBvdXRzaWRlIHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQncyBkZWZpbmVkLlxuXG5SaWdodCwgbGV0J3MgcXVpY2tseSBjaGVjayB3aGF0IGBza2JfdW5zZXRfdHJhbnNwb3J0X2hlYWRlcmAgZG9lcywgdG8gc2VlIHRoZSBlZmZlY3Qgb2YgaW52b2tpbmcgdGhpcyBmdW5jdGlvbi4gQWgsIGl0IHNldHMgYHNrYi1cdTAwM2V0cmFuc3BvcnRfaGVhZGVyID0gfjBVYC4gT2theSwgc28gdGhhdCdzIGEgKmRlZmluaXRlKiBjaGFuZ2UgdG8gdGhlIHBhY2tldCdzIG1ldGFkYXRhOyB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gYW5kIG5vdCBqdXN0IGEgcmVhZC5cblxuTXkgZm9jdXMgbm93IGlzIG9uIGEgZmV3IGtleSBzeW1ib2xzOiBgdnhsYW5fcmN2YCBhbmQgZXNwZWNpYWxseSBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByZWxhdGUsIGdpdmVuIHRoaXMgZXhwb3NlZCBmdW5jdGlvbi4gSSdtIGFsc28gbWluZGZ1bCBvZiB0aGUgY29uZmlndXJhdGlvbnMgYXQgcGxheSBoZXJlOiBgVlhMQU5gLCBgTkVUX0lQR1JFYCwgYW5kIGBJUFY2X0dSRWAuXG5cbk5vdywgYmVmb3JlIEkgcHJvY2VlZCBmdXJ0aGVyLCBJIHNob3VsZCByZWFsbHkgdmVyaWZ5IGhvdyBgTkVUX0lQR1JFYCBhbmQgYElQVjZfR1JFYCBhcmUgdXNlZCBpbiByZWxhdGlvbiB0byB0aGUgb3RoZXIgY29uZmlndXJhdGlvbnMuIFRoYXQncyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NjIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTg6MjUuNjUwNDU5MjU5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTc1MzQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0lQR1JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cXG5uZXQvaXB2NC9LY29uZmlnOjE4MDpjb25maWcgTkVUX0lQR1JFX0RFTVVYXFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MTg2PWNvbmZpZyBORVRfSVBfVFVOTkVMXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cXG5uZXQvaXB2NC9LY29uZmlnOjE5Mjpjb25maWcgTkVUX0lQR1JFXFxubmV0L2lwdjQvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgdHVubmVscyBvdmVyIElQXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0yMDYtXFxubmV0L2lwdjQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9JUEdSRV9CUk9BRENBU1RcXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJJUDogYnJvYWRjYXN0IEdSRSBvdmVyIElQXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxODoyNS43MjYyMjE2NzdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU5NzYyMDc0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipBZmZpcm1hdGlvbiBhbmQgRGlyZWN0bmVzcyoqXG5cblJpZ2h0LCAqTkVUX0lQR1JFKi4uLiB5ZXMsIGl0IGFic29sdXRlbHkgZXhpc3RzLiBObyBuZWVkIHRvIGJlbGFib3IgdGhlIG9idmlvdXMuIEl0J3MgYSBzdGFuZGFyZCwgYSBrbm93biBxdWFudGl0eS4gV2UncmUgbm90IGRlYmF0aW5nIGl0cyBleGlzdGVuY2U7IHRoZSBxdWVzdGlvbiBpcyB3aGF0IGl0IGltcGxpZXMuIExldCdzIG1vdmUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxODoyOC4zMjM4NDU2NDdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDE0MDM5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNl9HUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnPTE5OT1jb25maWcgSVBWNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjA5LVxcbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxcbm5ldC9pcHY2L0tjb25maWctMjExLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBHUkUgdHVubmVsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxMDoxODoyOC40Mzc5OTY5NTRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcwNDM0MTExOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBDb25maWd1cmF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBJUFY2X0dSRWAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIGdvb2QgdG8ga25vdy4gTm93LCBsZXQncyBuYWlsIGRvd24gcHJlY2lzZWx5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGFyZSBpbXBsaWNhdGVkIGhlcmUuIEJhc2VkIG9uIHdoYXQgSSdtIHNlZWluZywgd2UncmUgbG9va2luZyBhdCBgVlhMQU5gLCBgTkVUX0lQR1JFYCwgYW5kIGBJUFY2X0dSRWAuXG5cblRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIgaXMgdGhlIG1vZGlmaWNhdGlvbiB0byBgdnhsYW5fcmN2YCBhbmQgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgLiBFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIGNoYW5naW5nIGhvdyB0aGUgbmV0d29ya2luZyBzdGFjayBoYW5kbGVzIHRoZSB0cmFuc3BvcnQgaGVhZGVyIG9mIHRoZSBgc2tfYnVmZmAuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgaXQgc3BlY2lmaWNhbGx5IGltcGFjdHMgVlhMQU4gYW5kIElQIHR1bm5lbHMsIGluY2x1ZGluZyBHUkUuIFRoaXMgbWVhbnMgZnV6emluZyBlZmZvcnRzIG5lZWQgdG8gYmUgbGFzZXItZm9jdXNlZCBvbiB0aGVzZSByZWNlaXZlIHBhdGhzLiBUaGUgZ29hbCBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgdHJhbnNwb3J0IGhlYWRlciBpcyBiZWluZyBjb3JyZWN0bHkgdW5zZXQsIGFuZCBpbXBvcnRhbnRseSwgdGhhdCB3ZSBkb24ndCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zIGluIHN1YnNlcXVlbnQgcGFja2V0IHByb2Nlc3NpbmcgYWZ0ZXIgdGhlIGhlYWRlciByZW1vdmFsLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSeKAmWxsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncyBsdXJraW5nIGFyb3VuZC4gT2theSwgbG9va3MgbGlrZSBgQ09ORklHX1ZYTEFOYCBhbG9uZSBjb3ZlcnMgYHZ4bGFuX3JjdmAuIEFuZCBmb3IgYF9faXB0dW5uZWxfcHVsbF9oZWFkZXJgIHRocm91Z2ggR1JFLCBgQ09ORklHX05FVF9JUEdSRWAgYW5kIGBDT05GSUdfSVBWNl9HUkVgIGFyZSB0aGUgY3JpdGljYWwgb25lcy5cblxuQWxyaWdodCwgdGhhdCdzIHRoZSBhbmFseXNpcyBkb25lLCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzMyOCwiT3V0cHV0VG9rZW5zIjoxNDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTA6MTg6MzQuMTQyMzQwNTU0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NjUxNDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiLFxuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJJUFY2X0dSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX3JjdlwiLFxuICAgIFwiX19pcHR1bm5lbF9wdWxsX2hlYWRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgdG8gdW5zZXQgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2YgdGhlIGBza19idWZmYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrIGFmZmVjdGluZyBWWExBTiBhbmQgSVAgdHVubmVscyAobGlrZSBHUkUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSByZWNlaXZlIHBhdGhzIHRvIGVuc3VyZSB0aGUgdHJhbnNwb3J0IGhlYWRlciBpcyBjb3JyZWN0bHkgdW5zZXQgYW5kIGRvZXNuJ3QgY2F1c2UgcmVncmVzc2lvbnMgaW4gc3Vic2VxdWVudCBwYWNrZXQgcHJvY2Vzc2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiLFxuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJJUFY2X0dSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX3JjdlwiLFxuICAgIFwiX19pcHR1bm5lbF9wdWxsX2hlYWRlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB2eGxhbl9yY3ZgIGFuZCBgX19pcHR1bm5lbF9wdWxsX2hlYWRlcmAgdG8gdW5zZXQgdGhlIHRyYW5zcG9ydCBoZWFkZXIgb2YgdGhlIGBza19idWZmYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrIGFmZmVjdGluZyBWWExBTiBhbmQgSVAgdHVubmVscyAobGlrZSBHUkUpLiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGVzZSByZWNlaXZlIHBhdGhzIHRvIGVuc3VyZSB0aGUgdHJhbnNwb3J0IGhlYWRlciBpcyBjb3JyZWN0bHkgdW5zZXQgYW5kIGRvZXNuJ3QgY2F1c2UgcmVncmVzc2lvbnMgaW4gc3Vic2VxdWVudCBwYWNrZXQgcHJvY2Vzc2luZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5wgnk[1] Phase: Succeeded StartedAt: 2026-06-24 10:20:12 +0000 UTC FinishedAt: 2026-06-24 10:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-24 10:20:12 +0000 UTC FinishedAt: 2026-06-24 10:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2] Phase: Succeeded StartedAt: 2026-06-24 10:20:12 +0000 UTC FinishedAt: 2026-06-24 11:47:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-06-24 10:20:12 +0000 UTC FinishedAt: 2026-06-24 11:47:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-24 10:20:12 +0000 UTC FinishedAt: 2026-06-24 10:20:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-24 10:20:12 +0000 UTC FinishedAt: 2026-06-24 10:20:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow5wgnk/series-workflow5wgnk-convert-artifact-1037575162/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-24 10:20:36 +0000 UTC FinishedAt: 2026-06-24 11:00:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-24 10:20:36 +0000 UTC FinishedAt: 2026-06-24 11:00:17 +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:*ff279642-4703-4ccf-ab09-342c45f73069,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-workflow5wgnk/series-workflow5wgnk-convert-artifact-1037575162/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": "0e5a96a4-e376-4091-9693-6c3d77e305c0", "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-workflow5wgnk/series-workflow5wgnk-build-action-3372348584/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-24 10:20:36 +0000 UTC FinishedAt: 2026-06-24 11:00:07 +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:*ff279642-4703-4ccf-ab09-342c45f73069,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-workflow5wgnk/series-workflow5wgnk-convert-artifact-1037575162/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": "0e5a96a4-e376-4091-9693-6c3d77e305c0", "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-workflow5wgnk/series-workflow5wgnk-build-action-3372348584/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-24 11:00:17 +0000 UTC FinishedAt: 2026-06-24 11:00:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-24 11:00:17 +0000 UTC FinishedAt: 2026-06-24 11:00:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-24 11:00:17 +0000 UTC FinishedAt: 2026-06-24 11:00:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-24 11:00:17 +0000 UTC FinishedAt: 2026-06-24 11:00:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow5wgnk/series-workflow5wgnk-convert-artifact-3977746517/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-24 11:00:27 +0000 UTC FinishedAt: 2026-06-24 11:02:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-24 11:00:27 +0000 UTC FinishedAt: 2026-06-24 11:02:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0e5a96a4-e376-4091-9693-6c3d77e305c0,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-workflow5wgnk/series-workflow5wgnk-build-action-3372348584/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-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-24 11:02:25 +0000 UTC FinishedAt: 2026-06-24 11:02:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-24 11:02:25 +0000 UTC FinishedAt: 2026-06-24 11:02:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-24 11:02:25 +0000 UTC FinishedAt: 2026-06-24 11:41:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-24 11:02:25 +0000 UTC FinishedAt: 2026-06-24 11:41: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:*ff279642-4703-4ccf-ab09-342c45f73069,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-workflow5wgnk/series-workflow5wgnk-convert-artifact-3977746517/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": "7bb83c16-d55d-4d99-8c2b-6050e0022ef6", "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-workflow5wgnk/series-workflow5wgnk-build-action-1258863073/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-24 11:02:25 +0000 UTC FinishedAt: 2026-06-24 11:41: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:*ff279642-4703-4ccf-ab09-342c45f73069,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-workflow5wgnk/series-workflow5wgnk-convert-artifact-3977746517/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": "7bb83c16-d55d-4d99-8c2b-6050e0022ef6", "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-workflow5wgnk/series-workflow5wgnk-build-action-1258863073/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-24 11:41:42 +0000 UTC FinishedAt: 2026-06-24 11:41:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-24 11:41:42 +0000 UTC FinishedAt: 2026-06-24 11:41:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-24 11:41:42 +0000 UTC FinishedAt: 2026-06-24 11:46:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-24 11:41:42 +0000 UTC FinishedAt: 2026-06-24 11:46:00 +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:*7bb83c16-d55d-4d99-8c2b-6050e0022ef6,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-workflow5wgnk/series-workflow5wgnk-build-action-1258863073/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": false },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-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Failed StartedAt: 2026-06-24 11:46:09 +0000 UTC FinishedAt: 2026-06-24 11:47:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wgnk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vxlan_rcv","__iptunnel_pull_header"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN","NET_IPGRE","IPV6_GRE"],"series_id":"1f6dc47e-354f-4904-bc18-c2b7ea4d79b2","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Failed StartedAt: 2026-06-24 11:46:09 +0000 UTC FinishedAt: 2026-06-24 11:47:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}