Name: series-workflowznxc9 Phase: Succeeded StartedAt: 2026-08-01 05:13:22 +0000 UTC FinishedAt: 2026-08-01 09:21:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[0] Phase: Succeeded StartedAt: 2026-08-01 05:13:22 +0000 UTC FinishedAt: 2026-08-01 05:31:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 05:13:22 +0000 UTC FinishedAt: 2026-08-01 05:31:16 +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": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS", "BPF_SYSCALL" ], "series_id": "84e1a175-db7a-4f21-9c86-95d18fee651c" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "xskq_create", "xskq_destroy", "xsk_setsockopt", "xsk_release" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrcV9jcmVhdGUmIzM0OywKICAgICYjMzQ7eHNrcV9kZXN0cm95JiMzNDssCiAgICAmIzM0O3hza19zZXRzb2Nrb3B0JiMzNDssCiAgICAmIzM0O3hza19yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbWVtb3J5IGFjY291bnRpbmcgZm9yIHBpbm5lZCBwYWdlcyBpbiBYRFAgc29ja2V0IHF1ZXVlcy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc2V0c29ja29wdCBvbiBBRl9YRFAgc29ja2V0cyAoZS5nLiwgd2hlbiBzZXR0aW5nIHVwIFhEUF9UWF9SSU5HLCBYRFBfUlhfUklORywgZXRjLikgYW5kIHVwb24gc29ja2V0IHJlbGVhc2UuIEl0IGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIGFzIHF1ZXVlIGNyZWF0aW9uIGNhbiBub3cgZmFpbCBpZiBtZW1vcnkgbGltaXRzIGFyZSBleGNlZWRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY0NmU0MDA5MTg2MWNiYWVhNjg1ZGQ0ZGU4NGJhNTMzMWZiNWU5NzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDA1OjMwOjA5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmMgYi9uZXQveGRwL3hza19xdWV1ZS5jXG5pbmRleCA0ZGQwMWI3ZDg1OGViLi44YmUyNTEwOTYyNzc5IDEwMDY0NFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuY1xuQEAgLTI1LDYgJiM0MzsyNSw3IEBAIHN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxuIHtcbiBcdHN0cnVjdCB4c2tfcXVldWUgKnE7XG4gXHRzaXplX3Qgc2l6ZTtcbiYjNDM7XHRpbnQgZXJyO1xuIFxuIFx0cSA9IGt6YWxsb2Nfb2JqKCpxKTtcbiBcdGlmICghcSlcbkBAIC00NSw5ICYjNDM7NDYsMTUgQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXG4gXHR9XG4gXG4gXHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcbiYjNDM7XHRlcnIgPSBtbV9hY2NvdW50X3Bpbm5lZF9wYWdlcyhcdTAwMjZxLVx1MDAzZW1tcCwgc2l6ZSk7XG4mIzQzO1x0aWYgKGVycikge1xuJiM0MztcdFx0a2ZyZWUocSk7XG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRxLVx1MDAzZXJpbmcgPSB2bWFsbG9jX3VzZXIoc2l6ZSk7XG4gXHRpZiAoIXEtXHUwMDNlcmluZykge1xuJiM0MztcdFx0bW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlcyhcdTAwMjZxLVx1MDAzZW1tcCk7XG4gXHRcdGtmcmVlKHEpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbkBAIC02Miw1ICYjNDM7NjksNiBAQCB2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR2ZnJlZShxLVx1MDAzZXJpbmcpO1xuJiM0MztcdG1tX3VuYWNjb3VudF9waW5uZWRfcGFnZXMoXHUwMDI2cS1cdTAwM2VtbXApO1xuIFx0a2ZyZWUocSk7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmggYi9uZXQveGRwL3hza19xdWV1ZS5oXG5pbmRleCAxYmM0MmM4OTAyZjRiLi5iMmU5NmM2NWY5NTVhIDEwMDY0NFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuaFxuQEAgLTcsNiAmIzQzOzcsNyBAQFxuICNkZWZpbmUgX0xJTlVYX1hTS19RVUVVRV9IXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9za2J1ZmYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX3hkcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3hkcF9zb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQveHNrX2J1ZmZfcG9vbC5oXHUwMDNlXG5AQCAtNDYsNiAmIzQzOzQ3LDcgQEAgc3RydWN0IHhza19xdWV1ZSB7XG4gXHR1NjQgaW52YWxpZF9kZXNjcztcbiBcdHU2NCBxdWV1ZV9lbXB0eV9kZXNjcztcbiBcdHNpemVfdCByaW5nX3ZtYWxsb2Nfc2l6ZTtcbiYjNDM7XHRzdHJ1Y3QgbW1waW4gbW1wO1xuIFx0LyogTXV0dWFsIGV4Y2x1c2lvbiBvZiB0aGUgY29tcGxldGlvbiByaW5nIGluIHRoZSBTS0IgbW9kZS5cbiBcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxuIFx0ICogYW5kIHF1ZXVlIGlkIGlzIHNoYXJlZC5cbkBAIC01MzIsNiAmIzQzOzUzNCw2IEBAIHN0YXRpYyBpbmxpbmUgdTY0IHhza3FfbmJfcXVldWVfZW1wdHlfZGVzY3Moc3RydWN0IHhza19xdWV1ZSAqcSlcbiB9XG4gXG4gc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xuLXZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnFfb3BzKTtcbiYjNDM7dm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XG4gXG4gI2VuZGlmIC8qIF9MSU5VWF9YU0tfUVVFVUVfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7LAogICAgJiMzNDt4c2tfc2V0c29ja29wdCYjMzQ7LAogICAgJiMzNDt4c2tfcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG1lbW9yeSBhY2NvdW50aW5nIGZvciBwaW5uZWQgcGFnZXMgaW4gWERQIHNvY2tldCBxdWV1ZXMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQgb24gQUZfWERQIHNvY2tldHMgKGUuZy4sIHdoZW4gc2V0dGluZyB1cCBYRFBfVFhfUklORywgWERQX1JYX1JJTkcsIGV0Yy4pIGFuZCB1cG9uIHNvY2tldCByZWxlYXNlLiBJdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcyBxdWV1ZSBjcmVhdGlvbiBjYW4gbm93IGZhaWwgaWYgbWVtb3J5IGxpbWl0cyBhcmUgZXhjZWVkZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmNDZlNDAwOTE4NjFjYmFlYTY4NWRkNGRlODRiYTUzMzFmYjVlOTcyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAwNTozMDowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmMgYi9uZXQveGRwL3hza19xdWV1ZS5jCmluZGV4IDRkZDAxYjdkODU4ZWIuLjhiZTI1MTA5NjI3NzkgMTAwNjQ0Ci0tLSBhL25ldC94ZHAveHNrX3F1ZXVlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuYwpAQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpCiB7CiAJc3RydWN0IHhza19xdWV1ZSAqcTsKIAlzaXplX3Qgc2l6ZTsKJiM0MzsJaW50IGVycjsKIAogCXEgPSBremFsbG9jX29iaigqcSk7CiAJaWYgKCFxKQpAQCAtNDUsOSAmIzQzOzQ2LDE1IEBAIHN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKQogCX0KIAogCXNpemUgPSBQQUdFX0FMSUdOKHNpemUpOwomIzQzOwllcnIgPSBtbV9hY2NvdW50X3Bpbm5lZF9wYWdlcygmYW1wO3EtJmd0O21tcCwgc2l6ZSk7CiYjNDM7CWlmIChlcnIpIHsKJiM0MzsJCWtmcmVlKHEpOwomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXEtJmd0O3JpbmcgPSB2bWFsbG9jX3VzZXIoc2l6ZSk7CiAJaWYgKCFxLSZndDtyaW5nKSB7CiYjNDM7CQltbV91bmFjY291bnRfcGlubmVkX3BhZ2VzKCZhbXA7cS0mZ3Q7bW1wKTsKIAkJa2ZyZWUocSk7CiAJCXJldHVybiBOVUxMOwogCX0KQEAgLTYyLDUgJiM0Mzs2OSw2IEBAIHZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpCiAJCXJldHVybjsKIAogCXZmcmVlKHEtJmd0O3JpbmcpOwomIzQzOwltbV91bmFjY291bnRfcGlubmVkX3BhZ2VzKCZhbXA7cS0mZ3Q7bW1wKTsKIAlrZnJlZShxKTsKIH0KZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmggYi9uZXQveGRwL3hza19xdWV1ZS5oCmluZGV4IDFiYzQyYzg5MDJmNGIuLmIyZTk2YzY1Zjk1NWEgMTAwNjQ0Ci0tLSBhL25ldC94ZHAveHNrX3F1ZXVlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuaApAQCAtNyw2ICYjNDM7Nyw3IEBACiAjZGVmaW5lIF9MSU5VWF9YU0tfUVVFVUVfSAogCiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2tidWZmLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaWZfeGRwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3hkcF9zb2NrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3hza19idWZmX3Bvb2wuaCZndDsKQEAgLTQ2LDYgJiM0Mzs0Nyw3IEBAIHN0cnVjdCB4c2tfcXVldWUgewogCXU2NCBpbnZhbGlkX2Rlc2NzOwogCXU2NCBxdWV1ZV9lbXB0eV9kZXNjczsKIAlzaXplX3QgcmluZ192bWFsbG9jX3NpemU7CiYjNDM7CXN0cnVjdCBtbXBpbiBtbXA7CiAJLyogTXV0dWFsIGV4Y2x1c2lvbiBvZiB0aGUgY29tcGxldGlvbiByaW5nIGluIHRoZSBTS0IgbW9kZS4KIAkgKiBQcm90ZWN0OiB3aGVuIHNvY2tldHMgc2hhcmUgYSBzaW5nbGUgY3Egd2hlbiB0aGUgc2FtZSBuZXRkZXYKIAkgKiBhbmQgcXVldWUgaWQgaXMgc2hhcmVkLgpAQCAtNTMyLDYgJiM0Mzs1MzQsNiBAQCBzdGF0aWMgaW5saW5lIHU2NCB4c2txX25iX3F1ZXVlX2VtcHR5X2Rlc2NzKHN0cnVjdCB4c2tfcXVldWUgKnEpCiB9CiAKIHN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKTsKLXZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnFfb3BzKTsKJiM0Mzt2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKTsKIAogI2VuZGlmIC8qIF9MSU5VWF9YU0tfUVVFVUVfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjcxCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWERQIFNvY2tldCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQveGRwL3hza19xdWV1ZS5jYCBhbmQgYG5ldC94ZHAveHNrX3F1ZXVlLmhgLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBpbnRyb2R1Y2luZyBzb21lIHBhZ2UgYWNjb3VudGluZyBmb3IgcGlubmVkIHBhZ2VzLCB1c2luZyBgbW1fYWNjb3VudF9waW5uZWRfcGFnZXNgIGFuZCBgbW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlc2Agd2l0aGluIHRoZSBgeHNrcV9jcmVhdGVgIGFuZCBgeHNrcV9kZXN0cm95YCBmdW5jdGlvbnMuIEFuZCB0aGVyZSYjMzk7cyBhIG5ldyBgc3RydWN0IG1tcGluIG1tcGAgbWVtYmVyIGJlaW5nIGFkZGVkIHRvIHRoZSBgeHNrX3F1ZXVlYCBzdHJ1Y3QuCgpNeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgdGhpcyBpcyBhbGwgcmVsYXRlZCB0byBBRl9YRFAsIHNwZWNpZmljYWxseSBYRFAgc29ja2V0cywgZ2l2ZW4gdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHBhcnQgb2YgdGhhdCBjb2RlIGJhc2UuIEl04oCZcyBmdW5jdGlvbmFsIGNvZGUsIGFuZCB0aGUgZ29hbCBoZXJlIHNlZW1zIHRvIGJlIGltcHJvdmluZyByZXNvdXJjZSBtYW5hZ2VtZW50IHJlbGF0ZWQgdG8gdGhlc2UgcGlubmVkIHBhZ2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGJldHRlci4KClRvIGdldCBhIGJldHRlciBncmlwIG9uIHRoZSBjb25maWd1cmF0aW9ucywgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHVzZSBgZ2l0IGdyZXBgIHdpdGhpbiB0aGUgYG5ldC94ZHAvYCBkaXJlY3RvcnkgdG8gaHVudCBmb3IgcmVmZXJlbmNlcyB0byBib3RoIGB4c2txX2NyZWF0ZWAgYW5kIHRoZSBmaWxlIGB4c2tfcXVldWUuY2AsIHNvIEkgY2FuIHRyYWNlIHdoZXJlIGl0JiMzOTtzIGFsbCB1c2VkIGFuZCB3aGF0IGJ1aWxkIG9wdGlvbnMgYXJlIGluIHBsYXkuIFRoYXQmIzM5O2xsIHByb3ZpZGUgbWUgd2l0aCBhIGJyb2FkZXIgY29udGV4dCB0byBzZWUgaG93IHRoaXMgcGF0Y2ggZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2txX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmM9MTQ0OT1zdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgeHNrX3F1ZXVlICoqcXVldWUsXG4tLVxubmV0L3hkcC94c2suYy0xNDU2LVxubmV0L3hkcC94c2suYzoxNDU3Olx0cSA9IHhza3FfY3JlYXRlKGVudHJpZXMsIHVtZW1fcXVldWUpO1xubmV0L3hkcC94c2suYy0xNDU4LVx0aWYgKCFxKVxuLS1cbm5ldC94ZHAveHNrX3F1ZXVlLmM9MTQ9c3RhdGljIHNpemVfdCB4c2txX2dldF9yaW5nX3NpemUoc3RydWN0IHhza19xdWV1ZSAqcSwgYm9vbCB1bWVtX3F1ZXVlKVxuLS1cbm5ldC94ZHAveHNrX3F1ZXVlLmMtMjMtXG5uZXQveGRwL3hza19xdWV1ZS5jOjI0OnN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxubmV0L3hkcC94c2tfcXVldWUuYy0yNS17XG4tLVxubmV0L3hkcC94c2tfcXVldWUuaD01MzE9c3RhdGljIGlubGluZSB1NjQgeHNrcV9uYl9xdWV1ZV9lbXB0eV9kZXNjcyhzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxuLS1cbm5ldC94ZHAveHNrX3F1ZXVlLmgtNTM1LVxubmV0L3hkcC94c2tfcXVldWUuaDo1MzY6c3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xubmV0L3hkcC94c2tfcXVldWUuaC01Mzctdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU1MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgWERQIExhbmRzY2FwZTogS2NvbmZpZyBGaXJzdCoqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGludG8gYW55dGhpbmcgZGVlcGVyIHdpdGggYG5ldC94ZHBgLCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGdldCBteSBiZWFyaW5ncy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgY2xlYXIgaWRlYSBvZiBob3cgdGhpcyBmZWF0dXJlIGlzIGNvbmZpZ3VyZWQuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIGBuZXQveGRwL2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQga25vYnMgd2UgaGF2ZSwgd2hpY2ggb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheS4gSSBuZWVkIHRvIGtub3cgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBjb25maWd1cmF0aW9uIHBvc3NpYmlsaXRpZXMsIGVzcGVjaWFsbHkgaW4gYSBidWlsZCBlbnZpcm9ubWVudC4gQXJlIHRoZXJlIGFueSB0cmlja3kgYnVpbGQgZmxhZ3Mgb3IgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgYml0ZSBtZSBsYXRlcj8gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRocm91Z2ggS2NvbmZpZyBpcyB0aGUgZXNzZW50aWFsIGZpcnN0IHN0ZXAgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfcXVldWUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC94ZHAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICYjNDM7PSB4c2subyB4ZHBfdW1lbS5vIHhza19xdWV1ZS5vIHhza21hcC5vXG5uZXQveGRwL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX1hEUF9TT0NLRVRTKSAmIzQzOz0geHNrX2J1ZmZfcG9vbC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhEUF9TT0NLRVRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQveGRwL0tjb25maWc6Mjpjb25maWcgWERQX1NPQ0tFVFNcbm5ldC94ZHAvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtYRFAgc29ja2V0c1wmIzM0O1xuLS1cbm5ldC94ZHAvS2NvbmZpZy05LVxubmV0L3hkcC9LY29uZmlnOjEwOmNvbmZpZyBYRFBfU09DS0VUU19ESUFHXG5uZXQveGRwL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDM0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlhEUF9TT0NLRVRTIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYFhEUF9TT0NLRVRTYC4gVGhhdCYjMzk7cyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gSSYjMzk7bSB3b3JraW5nIHdpdGguIFRoZSBmaXJzdCB0aGluZyBJIGFsd2F5cyBkbyB3aXRoIHRoZXNlIGlzIGNoZWNrIGZvciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgb3B0aW9ucywgZmVhdHVyZXMsIG9yIGtlcm5lbCBtb2R1bGVzIGl0IHJlbGllcyBvbi4gSSBkb24mIzM5O3Qgd2FudCB0byBlbmFibGUgc29tZXRoaW5nIHdpdGhvdXQga25vd2luZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgcHJlLXJlcXVpc2l0ZXMgdGFrZW4gY2FyZSBvZi4gTGV0IG1lIGRpdmUgaW4gYW5kIHNlZSBpZiB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGVuYWJsZSwgb3IgaWYgaXQgcmVxdWlyZXMgc29tZXRoaW5nIGVsc2UgdG8gYmUgZW5hYmxlZCBmaXJzdC4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC94ZHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBYRFBfU09DS0VUU1xuICAgMzpcdFx0Ym9vbCBcJiMzNDtYRFAgc29ja2V0c1wmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuICAgNTpcdFx0ZGVmYXVsdCBuXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIFhEUCBzb2NrZXRzIGFsbG93cyBhIGNoYW5uZWwgYmV0d2VlbiBYRFAgcHJvZ3JhbXMgYW5kXG4gICA4Olx0XHQgIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMuXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIFhEUF9TT0NLRVRTX0RJQUdcbiAgMTE6XHRcdHRyaXN0YXRlIFwmIzM0O1hEUCBzb2NrZXRzOiBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuICAxMjpcdFx0ZGVwZW5kcyBvbiBYRFBfU09DS0VUU1xuICAxMzpcdFx0ZGVmYXVsdCBuXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFN1cHBvcnQgZm9yIFBGX1hEUCBzb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdGhlIHNzIHRvb2wuXG4gIDE2Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NDAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkZvY3VzaW5nIEZ1enppbmcgRWZmb3J0cyBpbiB0aGUgWERQL1hTSyBTdWJzeXN0ZW0qKgoKQWxyaWdodCwgc28gdGhlIGZ1enppbmcgYXBwcm9hY2ggSSB0YWtlIGhlcmUgZGVwZW5kcyBoZWF2aWx5IG9uIHVuZGVyc3RhbmRpbmcgaG93IGBCUEZfU1lTQ0FMTGAgaXMgdXRpbGl6ZWQgd2l0aGluIHRoZSBYRFAvWFNLIGZyYW1ld29yay4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBwb2ludCBvZiBpbmdyZXNzLiBXZSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgbW9zdCBwcm9taXNpbmcgZnVuY3Rpb25zIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgY29udGV4dCwgYXBwZWFyIHRvIGJlIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGUgYEJQRl9TWVNDQUxMYCBlbnRyeS4gSW4gdGhpcyBjYXNlLCBgeHNrcV9jcmVhdGVgIHN0YW5kcyBvdXQuIEl0JiMzOTtzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGB4c2tfaW5pdF9xdWV1ZWAgd2l0aGluIGBuZXQveGRwL3hzay5jYC4gVGhlcmVmb3JlLCB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGhpZ2ggb24gdGhlIHByaW9yaXR5IGxpc3QuIFRoZXkgYXJlIHdoZXJlIHdlIGNhbiBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgY3JhZnRlZCBpbnB1dHMgdG8gcHJvYmUgZm9yIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHNvY2tldCBjcmVhdGlvbiB3aXRoaW4gdGhlIFhEUC9YU0sgc3Vic3lzdGVtLiBXZSBzaG91bGQgdGhvcm91Z2hseSBleGFtaW5lIGl0cyBpbnB1dCB2YWxpZGF0aW9uIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiwgYXMgdGhpcyBpcyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgbG9naWMgcmVzaWRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2luaXRfcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGRwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTE0MTY9c3RhdGljIF9fcG9sbF90IHhza19wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuLS1cbm5ldC94ZHAveHNrLmMtMTQ0OC1cbm5ldC94ZHAveHNrLmM6MTQ0OTpzdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgeHNrX3F1ZXVlICoqcXVldWUsXG5uZXQveGRwL3hzay5jLTE0NTAtXHRcdFx0ICBib29sIHVtZW1fcXVldWUpXG4tLVxubmV0L3hkcC94c2suYz0xNzg1PXN0YXRpYyBpbnQgeHNrX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQveGRwL3hzay5jLTE4MTItXHRcdHEgPSAob3B0bmFtZSA9PSBYRFBfVFhfUklORykgPyBcdTAwMjZ4cy1cdTAwM2V0eCA6IFx1MDAyNnhzLVx1MDAzZXJ4O1xubmV0L3hkcC94c2suYzoxODEzOlx0XHRlcnIgPSB4c2tfaW5pdF9xdWV1ZShlbnRyaWVzLCBxLCBmYWxzZSk7XG5uZXQveGRwL3hzay5jLTE4MTQtXHRcdGlmICghZXJyIFx1MDAyNlx1MDAyNiBvcHRuYW1lID09IFhEUF9UWF9SSU5HKVxuLS1cbm5ldC94ZHAveHNrLmMtMTg4MS1cdFx0XHRcdTAwMjZ4cy1cdTAwM2VjcV90bXA7XG5uZXQveGRwL3hzay5jOjE4ODI6XHRcdGVyciA9IHhza19pbml0X3F1ZXVlKGVudHJpZXMsIHEsIHRydWUpO1xubmV0L3hkcC94c2suYy0xODgzLVx0XHRtdXRleF91bmxvY2soXHUwMDI2eHMtXHUwMDNlbXV0ZXgpO1xuLS1cbm5ldC94ZHAveHNrLmM9MjA1Nj1zdGF0aWMgaW50IHhza19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuLS1cbm5ldC94ZHAveHNrLmMtMjA4NS1cbm5ldC94ZHAveHNrLmM6MjA4NjpcdC8qIE1hdGNoZXMgdGhlIHNtcF93bWIoKSBpbiB4c2tfaW5pdF9xdWV1ZSAqL1xubmV0L3hkcC94c2suYy0yMDg3LVx0c21wX3JtYigpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjI1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQ29uc2lkZXJpbmcgWERQIFNvY2tldCBPcHRpbWl6YXRpb24qKgoKUmlnaHQsIHRoaW5raW5nIGFib3V0IG9wdGltaXppbmcgdGhlIFhEUCBzb2NrZXQgc2V0dXAuLi4gYHhza19zZXRzb2Nrb3B0YCBzZWVtcyBsaWtlIGEgc3Ryb25nIGNvbnRlbmRlciBhcyBhIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgd2F5IHRvIGNvbmZpZ3VyZSBzb2NrZXQgb3B0aW9ucywgd2hpY2ggbGlrZWx5IGltcGFjdHMgcGVyZm9ybWFuY2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gaXRzIHVzYWdlIGFuZCBpbnRlcm5hbCB3b3JraW5ncyB0byBiZSBzdXJlLCBidXQgaXQgZmVlbHMgbGlrZSBhIGdvb2QgaW5pdGlhbCBhcmVhIHRvIGludmVzdGlnYXRlIGZvciBwb3RlbnRpYWwgaW1wcm92ZW1lbnRzLgoKTGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zIHRob3VnaDsgSSBzaG91bGQgYWxzbyBicm9hZGVuIHRoZSBzZWFyY2ggYW5kIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGUgWERQIHNvY2tldCBsaWZlY3ljbGUgdGhhdCBtaWdodCBiZSBlcXVhbGx5IG9yIGV2ZW4gbW9yZSBjcml0aWNhbC4gVGhlcmUgY291bGQgYmUgc29tZSBvdGhlciBoaWRkZW4gZ2VtcyBmb3IgcGVyZm9ybWFuY2UgdHVuaW5nLgoKQWxzbywgSSYjMzk7bSBub3RpbmcgdGhhdCBgeHNrcV9kZXN0cm95YCBpcyBjYWxsZWQgZnJvbSBgeHNrX2Rlc3RydWN0YCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LiBUaGF0JiMzOTtzIGdvb2QgdG8ga2VlcCBpbiBtaW5kLCBiZWNhdXNlIHdoYXRldmVyIG9wdGltaXphdGlvbnMgSSBtYWtlIGluIGB4c2txX2Rlc3Ryb3lgLCBJIHNob3VsZCBhbHNvIGNoZWNrIGl0cyBjb250ZXh0LCBpbiBwYXJ0aWN1bGFyIGB4c2tfZGVzdHJ1Y3RgIHRvIHNlZSB0aGUgY29tcGxldGUgdmlldyBhbmQgaG93IHRoZSBvcGVyYXRpb25zIGFyZSByZWxhdGVkIHRvIGVhY2ggb3RoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza3FfZGVzdHJveSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmM9MTUyNz1zdGF0aWMgaW50IHhza19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG4tLVxubmV0L3hkcC94c2suYy0xNTUxLVxubmV0L3hkcC94c2suYzoxNTUyOlx0eHNrcV9kZXN0cm95KHhzLVx1MDAzZXJ4KTtcbm5ldC94ZHAveHNrLmM6MTU1MzpcdHhza3FfZGVzdHJveSh4cy1cdTAwM2V0eCk7XG5uZXQveGRwL3hzay5jOjE1NTQ6XHR4c2txX2Rlc3Ryb3koeHMtXHUwMDNlZnFfdG1wKTtcbm5ldC94ZHAveHNrLmM6MTU1NTpcdHhza3FfZGVzdHJveSh4cy1cdTAwM2VjcV90bXApO1xubmV0L3hkcC94c2suYy0xNTU2LVxuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTMwNT1zdGF0aWMgdm9pZCB4cF9yZWxlYXNlX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy0zMTQtXHRpZiAocG9vbC1cdTAwM2VmcSkge1xubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6MzE1Olx0XHR4c2txX2Rlc3Ryb3kocG9vbC1cdTAwM2VmcSk7XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy0zMTYtXHRcdHBvb2wtXHUwMDNlZnEgPSBOVUxMO1xuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTMxOS1cdGlmIChwb29sLVx1MDAzZWNxKSB7XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzozMjA6XHRcdHhza3FfZGVzdHJveShwb29sLVx1MDAzZWNxKTtcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTMyMS1cdFx0cG9vbC1cdTAwM2VjcSA9IE5VTEw7XG4tLVxubmV0L3hkcC94c2tfcXVldWUuYz0yND1zdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSlcbi0tXG5uZXQveGRwL3hza19xdWV1ZS5jLTY1LVxubmV0L3hkcC94c2tfcXVldWUuYzo2Njp2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxubmV0L3hkcC94c2tfcXVldWUuYy02Ny17XG4tLVxubmV0L3hkcC94c2tfcXVldWUuaD01MzY9c3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xubmV0L3hkcC94c2tfcXVldWUuaDo1Mzc6dm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XG5uZXQveGRwL3hza19xdWV1ZS5oLTUzOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgwNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFhEUCBTb2NrZXQgTWVtb3J5IEFjY291bnRpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYHhza3FfY3JlYXRlYCBhbmQgYHhza3FfZGVzdHJveWAgd2l0aGluIGBuZXQveGRwL3hza19xdWV1ZS5jYC4gSXQmIzM5O3MgYWxsIGFib3V0IG1lbW9yeSBhY2NvdW50aW5nIGZvciBYRFAgc29ja2V0cywgc3BlY2lmaWNhbGx5IHRoZSByaW5nIGJ1ZmZlciBhbGxvY2F0aW9uLiBUaGV5JiMzOTt2ZSBhZGRlZCBgbW1fYWNjb3VudF9waW5uZWRfcGFnZXNgIGFuZCBgbW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlc2AgY2FsbHMsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBzZWUgdGhlIHBvdGVudGlhbCBmb3IgaW50ZXJlc3Rpbmcgc2lkZSBlZmZlY3RzIGhlcmUsIGFuZCBteSBmdXp6aW5nIHJhZGFyIGlzIGRlZmluaXRlbHkgdXAuCgpUaGUgY29kZSYjMzk7cyBleHBvc2VkIHZpYSBgeHNrX3NldHNvY2tvcHRgICh0aGluZ3MgbGlrZSBgWERQX1RYX1JJTkdgLCBgWERQX1JYX1JJTkdgKSBhbmQgYHhza19yZWxlYXNlYCwgd2hpY2ggbWVhbnMgSSBjYW4gZGlyZWN0bHkgdGFyZ2V0IHRoZXNlIGZ1bmN0aW9ucy4gVGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyBhcmUgYENPTkZJR19YRFBfU09DS0VUU2AgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgLCBub3RoaW5nIHRvbyBleG90aWMsIGJ1dCBpbXBvcnRhbnQgdG8gbm90ZS4KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBgeHNrX3NldHNvY2tvcHRgLCBgeHNrX3JlbGVhc2VgLCBhbmQgb2YgY291cnNlIGB4c2tfbW1hcGAsIHdoaWNoIGlzIHJlbGF0ZWQgdG8gdGhlIHJpbmcgYnVmZmVyLiBIYW5nIG9uLCBsZXQgbWUgY29ubmVjdCB0aGUgZG90c+KApiBgeHNrcV9jcmVhdGVgIGlzIGNhbGxlZCBmcm9tIGB4c2tfaW5pdF9xdWV1ZWAsIHdoaWNoICppdHNlbGYqIGlzIGNhbGxlZCBmcm9tIGB4c2tfc2V0c29ja29wdGAuIFRoYXQgbWVhbnMgYHhza19zZXRzb2Nrb3B0YCBpcyBhIGdyZWF0IGVudHJ5IHBvaW50IHRvIHN0YXJ0IHdpdGgsIHNpbmNlIGl0IHVsdGltYXRlbHkgbGVhZHMgdG8gdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGNoYW5nZXMuIEFuZCBgeHNrX3JlbGVhc2VgIGlzIGFsc28gYSBjbGVhciB0YXJnZXQsIGFzIGl0IHNob3VsZCB0cmlnZ2VyIHRoZSBjbGVhbnVwLgoKQnV0IHdhaXQsIEkgbmVlZCB0byBiZSBjYXJlZnVsLiBgeHNrX3NldHNvY2tvcHRgICppcyogc3RhdGljISBEYW1uLCBzdGF0aWMgZnVuY3Rpb25zIGFyZW7igJl0IGFsd2F5cyB0aGUgYmVzdCBmb2N1cyBpZiBJIHdhbnQgdG8gZXhwbG9yZSBleHRlcm5hbCBBUEkgZW50cnlwb2ludHMuIE9rYXksIEkgbmVlZCB0byBjaGVjayB0aGUgQUZfWERQIHByb3RvY29sIG9wZXJhdGlvbnMgdG8gc2VlIGhvdyB0aGlzIGZpdHMgaW4uIExvb2tzIGxpa2UgSSBtYXkgbmVlZCB0byBkaWcgYSBsaXR0bGUgZGVlcGVyIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19zZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYz0xNzc4PXN0cnVjdCB4ZHBfdW1lbV9yZWdfdjEge1xuLS1cbm5ldC94ZHAveHNrLmMtMTc4NC1cbm5ldC94ZHAveHNrLmM6MTc4NTpzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQveGRwL3hzay5jLTE3ODYtXHRcdFx0ICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC94ZHAveHNrLmM9MjEzMj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4c2tfcHJvdG9fb3BzID0ge1xuLS1cbm5ldC94ZHAveHNrLmMtMjE0NC1cdC5zaHV0ZG93blx0PSBzb2NrX25vX3NodXRkb3duLFxubmV0L3hkcC94c2suYzoyMTQ1Olx0LnNldHNvY2tvcHRcdD0geHNrX3NldHNvY2tvcHQsXG5uZXQveGRwL3hzay5jLTIxNDYtXHQuZ2V0c29ja29wdF9pdGVyID0geHNrX2dldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNjcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTb2NrZXQgT3B0aW9uIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB4c2tfc2V0c29ja29wdGAgZnVuY3Rpb24gYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyB3aXRoIGl0cyBpbXBsZW1lbnRhdGlvbi4gVGhlIGNvZGUgaGFzIGl0IGRlY2xhcmVkIGFzIHN0YXRpYywgYnV0IGl0JiMzOTtzIGFzc2lnbmVkIHRvIGBwcm90b19vcHMuc2V0c29ja29wdGAsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIOKAkyBpcyB0aGVyZSBhIG5vbi1zdGF0aWMgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uPyBUaGUgZG9jdW1lbnRhdGlvbiBzZWVtcyB0byBwdXNoIGZvciB1c2luZyBub24tc3RhdGljIGVudHJ5cG9pbnRzIHdoZXJlIHBvc3NpYmxlLgoKQnV0IHdhaXQsIGhvbGQgb24uLi4gYHhza19zZXRzb2Nrb3B0YCBpcyBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb24gZm9yICp0aGlzKiBmZWF0dXJlLCBzbyBpdCBtYWtlcyBzZW5zZSB0byBmb2N1cyBvbiBpdC4gVGhlbiB0aGUgaW5zdHJ1Y3Rpb25zIGNvbWUgdG8gbWluZDsgJiMzNDtQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMmIzM0Oy4KClJpZ2h0LCBJJiMzOTttIHJlbWVtYmVyaW5nIHRoaXMgY29ycmVjdGx5IG5vdy4gQmVjYXVzZSBgeHNrX3NldHNvY2tvcHRgIGlzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgcHJvdG9fb3BzYCwgdGhlIGNvbXBpbGVyICp3b24mIzM5O3QqIGlubGluZSBpdC4gSXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyBldmVuIHRob3VnaCBpdCYjMzk7cyBkZWNsYXJlZCBzdGF0aWMuIFNvLCBldmVuIHRob3VnaCB0aGUgY29kaW5nIGd1aWRlbGluZXMgYXJlIGFnYWluc3QgdXNpbmcgYSBzdGF0aWMgZnVuY3Rpb24gZm9yIHRoZSBBUEksIGB4c2tfc2V0c29ja29wdGAgaXMgc2FmZSB0byB1c2UuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgdGhvdWdoLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhhdCBgeHNrX3JlbGVhc2VgIGlzIGFsc28gaW4gdGhlIGBwcm90b19vcHNgLiBUaGF0IHdvdWxkIGNvbmZpcm0gbXkgcmVhc29uaW5nIGZvciB0aGlzIGZlYXR1cmUsIG9yIGhlbHAgbWUgdW5kZXJzdGFuZCBpZiBhbm90aGVyIGZ1bmN0aW9uIHdpbGwgYmV0dGVyIGFsaWduIHdpdGggdGhlIGd1aWRlbGluZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19yZWxlYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYz0xNTAxPXN0YXRpYyB2b2lkIHhza19kZWxldGVfZnJvbV9tYXBzKHN0cnVjdCB4ZHBfc29jayAqeHMpXG4tLVxubmV0L3hkcC94c2suYy0xNTI2LVxubmV0L3hkcC94c2suYzoxNTI3OnN0YXRpYyBpbnQgeHNrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbm5ldC94ZHAveHNrLmMtMTUyOC17XG4tLVxubmV0L3hkcC94c2suYz0yMTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHhza19wcm90b19vcHMgPSB7XG4tLVxubmV0L3hkcC94c2suYy0yMTM0LVx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG5uZXQveGRwL3hzay5jOjIxMzU6XHQucmVsZWFzZVx0PSB4c2tfcmVsZWFzZSxcbm5ldC94ZHAveHNrLmMtMjEzNi1cdC5iaW5kXHRcdD0geHNrX2JpbmQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MDAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUaGlua2luZyBvbiBYRFAgU29ja2V0cyBhbmQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRvdWJsZS1jaGVja2luZyB0aGlzIGB4c2tfcmVsZWFzZWAgZnVuY3Rpb247IHllcCwgdGhhdCYjMzk7cyBhbHNvIHJlc2lkaW5nIHdpdGhpbiB0aGUgYHByb3RvX29wc2Agc3RydWN0dXJlLiBOb3csIEkgc2hvdWxkIGludmVzdGlnYXRlIGB4c2tfaW5pdF9xdWV1ZWAg4oCTIGlzIGl0IHBvdGVudGlhbGx5IGJlaW5nIGlubGluZWQ/IEl0JiMzOTtzIHBvc3NpYmxlLCBidXQgSSBrbm93IGZvciBzdXJlIHRoYXQgYHhza19zZXRzb2Nrb3B0YCBpc24mIzM5O3QuIEdpdmVuIHRoYXQsIEkgd2lsbCBkZWZpbml0ZWx5IGJlIGluY2x1ZGluZyBgeHNrX3NldHNvY2tvcHRgIGFuZCBgeHNrX3JlbGVhc2VgIGluIG15IGFuYWx5c2lzLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBJJiMzOTttIHdvcmtpbmcgd2l0aCBhcmUgYFhEUF9TT0NLRVRTYCBhbmQgYEJQRl9TWVNDQUxMYC4gTm93LCBhIHF1aWNrIHJldmlldywgSSYjMzk7bSBhbHJlYWR5IGF3YXJlIHRoYXQgYFhEUF9TT0NLRVRTYCBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAuIEkmIzM5O2xsIGhhdmUgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhhdCYjMzk7cyB0aGUgb25seSBkZXBlbmRlbmN5LCB0aG91Z2guIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFhEUF9TT0NLRVRTXG4gICAzOlx0XHRib29sIFwmIzM0O1hEUCBzb2NrZXRzXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG4gICA1Olx0XHRkZWZhdWx0IG5cbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgWERQIHNvY2tldHMgYWxsb3dzIGEgY2hhbm5lbCBiZXR3ZWVuIFhEUCBwcm9ncmFtcyBhbmRcbiAgIDg6XHRcdCAgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucy5cbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgWERQX1NPQ0tFVFNfRElBR1xuICAxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7WERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4gIDEyOlx0XHRkZXBlbmRzIG9uIFhEUF9TT0NLRVRTXG4gIDEzOlx0XHRkZWZhdWx0IG5cbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgU3VwcG9ydCBmb3IgUEZfWERQIHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0aGUgc3MgdG9vbC5cbiAgMTY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ4MAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYEJQRl9TWVNDQUxMYCBEZXBlbmRlbmNpZXMqKgoKSG1tLCBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGxhbmRzY2FwZSBoZXJlLCBhbmQgSSYjMzk7bSB3b25kZXJpbmcgaWYgYEJQRl9TWVNDQUxMYCBoYXMgYW55IHNuZWFreSBkZXBlbmRlbmNpZXMgSSYjMzk7bSBub3QgaW1tZWRpYXRlbHkgYXdhcmUgb2YuIEl04oCZcyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSB3aGVuIGl0IGNvbWVzIHRvIGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgaW5kaXJlY3QgaW1wbGljYXRpb25zIGZvciBteSBzcGVjaWZpYyB1c2UgY2FzZS4gVGhlIEtjb25maWcgZmlsZXMgYXJlIG15IHVzdWFsIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3MgZGlnIGludG8gYGluaXQvS2NvbmZpZ2AsIG9yIHdoZXJldmVyIHRoZSBkYXJuIHRoaW5nIGlzICphY3R1YWxseSogZGVmaW5lZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBkb3duIHRoZSBleGFjdCBkZWZpbml0aW9uIGFuZCB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHRvIHNlZSBpZiBhbnl0aGluZyBlbHNlIGhpbmdlcyBvbiBpdC4gVGltZSB0byBkaXZlIGludG8gdGhlIGxvdy1sZXZlbCBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgwMQoJCQkJCQkJb3V0cHV0OiAxNTQKCQkJCQkJCXRob3VnaHRzOiA0ODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFhEUCBTb2NrZXQgTWVtb3J5IEFjY291bnRpbmcgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgbWVtb3J5IGFjY291bnRpbmcgZm9yIFhEUCBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQveGRwL3hza19xdWV1ZS5jYC4gSXQmIzM5O3MgdXNpbmcgYG1tX2FjY291bnRfcGlubmVkX3BhZ2VzYCBhbmQgYG1tX3VuYWNjb3VudF9waW5uZWRfcGFnZXNgIGR1cmluZyB0aGUgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIFhTSyBxdWV1ZSBvYmplY3RzIChgeHNrcV9jcmVhdGVgIGFuZCBgeHNrcV9kZXN0cm95YCkuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCByZWxhdGVkIHRvIEFGX1hEUCBzb2NrZXRzLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIFRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBhcmUgYFhEUF9TT0NLRVRTYCwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAsIGNvbmZpcm1pbmcgbXkgc3VzcGljaW9uIGFib3V0IEFGX1hEUC4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBgeHNrX2luaXRfcXVldWVgLCBhbmQgdWx0aW1hdGVseSwgdGhhdCBnZXRzIHRyaWdnZXJlZCBieSBgc2V0c29ja29wdGAgY2FsbHMgb24gdGhlIHNvY2tldCAoc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gcmluZ3MgbGlrZSBgWERQX1RYX1JJTkdgLCBgWERQX1JYX1JJTkdgLCBldGMuKS4gU2ltaWxhcmx5LCBgeHNrcV9kZXN0cm95YCBpcyBjYWxsZWQgYnkgYHhza19yZWxlYXNlYCBhbmQgYHhwX3JlbGVhc2VfZGVmZXJyZWRgLiBUaGlzIGRpcmVjdGx5IGV4cG9zZXMgdGhpcyBjb2RlIHRvIHVzZXJzcGFjZSB2aWEgYHNldHNvY2tvcHRgIG9uIGFuIEFGX1hEUCBzb2NrZXQsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgcmVhY2hhYmxlIHBhdGguCgpTaW5jZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgbWVtb3J5IGFjY291bnRpbmcsIGl0ICpkb2VzKiBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIHRoZSBzeXN0ZW0gbm93IGhhcyB0aGUgcG90ZW50aWFsIHRvIGZhaWwgaWYgbWVtb3J5IGxpbWl0cyBhcmUgZXhjZWVkZWQsIHdoaWNoIGlzIGEgbmV3IGVycm9yIGNvbmRpdGlvbiB0byBjb25zaWRlci4gSXQgYWxzbyBlbnN1cmVzIG1lbW9yeSBpcyBjb3JyZWN0bHkgYWNjb3VudGVkIGZvciwgcHJldmVudGluZyBwb3RlbnRpYWwgbGVha3Mgb3IgbWlzdXNlLgoKR2l2ZW4gdGhpcywgSSB0aGluayBmdXp6aW5nIHRoZSBlbnRyeSBwb2ludHMgd291bGQgYmUgcHJ1ZGVudC4gSSYjMzk7ZCBpbml0aWFsbHkgZm9jdXMgb24gYHhza19zZXRzb2Nrb3B0YCBhbmQgYHhza19yZWxlYXNlYCwgYnV0IGFsc28sIHNpbmNlIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgIGFyZSAqbm90KiBzdGF0aWMsIHRoZXNlIGFyZSBnb29kIHRhcmdldHMgYXMgd2VsbC4gVGhlIHByaW1hcnkgY29uZmlncyBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBhcmUgYFhEUF9TT0NLRVRTYCBhbmQgYEJQRl9TWVNDQUxMYC4KCkxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgdGhpbmsgd2UgaGF2ZSBhIHNvbGlkIHBsYW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7LAogICAgJiMzNDt4c2tfc2V0c29ja29wdCYjMzQ7LAogICAgJiMzNDt4c2tfcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG1lbW9yeSBhY2NvdW50aW5nIGZvciBwaW5uZWQgcGFnZXMgaW4gWERQIHNvY2tldCBxdWV1ZXMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQgb24gQUZfWERQIHNvY2tldHMgKGUuZy4sIHdoZW4gc2V0dGluZyB1cCBYRFBfVFhfUklORywgWERQX1JYX1JJTkcsIGV0Yy4pIGFuZCB1cG9uIHNvY2tldCByZWxlYXNlLiBJdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcyBxdWV1ZSBjcmVhdGlvbiBjYW4gbm93IGZhaWwgaWYgbWVtb3J5IGxpbWl0cyBhcmUgZXhjZWVkZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrcV9jcmVhdGUmIzM0OywKICAgICYjMzQ7eHNrcV9kZXN0cm95JiMzNDssCiAgICAmIzM0O3hza19zZXRzb2Nrb3B0JiMzNDssCiAgICAmIzM0O3hza19yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbWVtb3J5IGFjY291bnRpbmcgZm9yIHBpbm5lZCBwYWdlcyBpbiBYRFAgc29ja2V0IHF1ZXVlcy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc2V0c29ja29wdCBvbiBBRl9YRFAgc29ja2V0cyAoZS5nLiwgd2hlbiBzZXR0aW5nIHVwIFhEUF9UWF9SSU5HLCBYRFBfUlhfUklORywgZXRjLikgYW5kIHVwb24gc29ja2V0IHJlbGVhc2UuIEl0IGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIGFzIHF1ZXVlIGNyZWF0aW9uIGNhbiBub3cgZmFpbCBpZiBtZW1vcnkgbGltaXRzIGFyZSBleGNlZWRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjEwLjE4NzU1MjYzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NjQxNzA4OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhEUF9TT0NLRVRTXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhza3FfY3JlYXRlXCIsXG4gICAgXCJ4c2txX2Rlc3Ryb3lcIixcbiAgICBcInhza19zZXRzb2Nrb3B0XCIsXG4gICAgXCJ4c2tfcmVsZWFzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbWVtb3J5IGFjY291bnRpbmcgZm9yIHBpbm5lZCBwYWdlcyBpbiBYRFAgc29ja2V0IHF1ZXVlcy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc2V0c29ja29wdCBvbiBBRl9YRFAgc29ja2V0cyAoZS5nLiwgd2hlbiBzZXR0aW5nIHVwIFhEUF9UWF9SSU5HLCBYRFBfUlhfUklORywgZXRjLikgYW5kIHVwb24gc29ja2V0IHJlbGVhc2UuIEl0IGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIGFzIHF1ZXVlIGNyZWF0aW9uIGNhbiBub3cgZmFpbCBpZiBtZW1vcnkgbGltaXRzIGFyZSBleGNlZWRlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6MzA6MTAuMTg3NTgwNzE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTQxNzg3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmNDZlNDAwOTE4NjFjYmFlYTY4NWRkNGRlODRiYTUzMzFmYjVlOTcyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMDU6MzA6MDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfcXVldWUuYyBiL25ldC94ZHAveHNrX3F1ZXVlLmNcXG5pbmRleCA0ZGQwMWI3ZDg1OGViLi44YmUyNTEwOTYyNzc5IDEwMDY0NFxcbi0tLSBhL25ldC94ZHAveHNrX3F1ZXVlLmNcXG4rKysgYi9uZXQveGRwL3hza19xdWV1ZS5jXFxuQEAgLTI1LDYgKzI1LDcgQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXFxuIHtcXG4gXFx0c3RydWN0IHhza19xdWV1ZSAqcTtcXG4gXFx0c2l6ZV90IHNpemU7XFxuK1xcdGludCBlcnI7XFxuIFxcbiBcXHRxID0ga3phbGxvY19vYmooKnEpO1xcbiBcXHRpZiAoIXEpXFxuQEAgLTQ1LDkgKzQ2LDE1IEBAIHN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxcbiBcXHR9XFxuIFxcbiBcXHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcXG4rXFx0ZXJyID0gbW1fYWNjb3VudF9waW5uZWRfcGFnZXMoXFx1MDAyNnEtXFx1MDAzZW1tcCwgc2l6ZSk7XFxuK1xcdGlmIChlcnIpIHtcXG4rXFx0XFx0a2ZyZWUocSk7XFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRxLVxcdTAwM2VyaW5nID0gdm1hbGxvY191c2VyKHNpemUpO1xcbiBcXHRpZiAoIXEtXFx1MDAzZXJpbmcpIHtcXG4rXFx0XFx0bW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlcyhcXHUwMDI2cS1cXHUwMDNlbW1wKTtcXG4gXFx0XFx0a2ZyZWUocSk7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuQEAgLTYyLDUgKzY5LDYgQEAgdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0dmZyZWUocS1cXHUwMDNlcmluZyk7XFxuK1xcdG1tX3VuYWNjb3VudF9waW5uZWRfcGFnZXMoXFx1MDAyNnEtXFx1MDAzZW1tcCk7XFxuIFxcdGtmcmVlKHEpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmggYi9uZXQveGRwL3hza19xdWV1ZS5oXFxuaW5kZXggMWJjNDJjODkwMmY0Yi4uYjJlOTZjNjVmOTU1YSAxMDA2NDRcXG4tLS0gYS9uZXQveGRwL3hza19xdWV1ZS5oXFxuKysrIGIvbmV0L3hkcC94c2tfcXVldWUuaFxcbkBAIC03LDYgKzcsNyBAQFxcbiAjZGVmaW5lIF9MSU5VWF9YU0tfUVVFVUVfSFxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX3hkcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3hkcF9zb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQveHNrX2J1ZmZfcG9vbC5oXFx1MDAzZVxcbkBAIC00Niw2ICs0Nyw3IEBAIHN0cnVjdCB4c2tfcXVldWUge1xcbiBcXHR1NjQgaW52YWxpZF9kZXNjcztcXG4gXFx0dTY0IHF1ZXVlX2VtcHR5X2Rlc2NzO1xcbiBcXHRzaXplX3QgcmluZ192bWFsbG9jX3NpemU7XFxuK1xcdHN0cnVjdCBtbXBpbiBtbXA7XFxuIFxcdC8qIE11dHVhbCBleGNsdXNpb24gb2YgdGhlIGNvbXBsZXRpb24gcmluZyBpbiB0aGUgU0tCIG1vZGUuXFxuIFxcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxcbiBcXHQgKiBhbmQgcXVldWUgaWQgaXMgc2hhcmVkLlxcbkBAIC01MzIsNiArNTM0LDYgQEAgc3RhdGljIGlubGluZSB1NjQgeHNrcV9uYl9xdWV1ZV9lbXB0eV9kZXNjcyhzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxcbiB9XFxuIFxcbiBzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSk7XFxuLXZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnFfb3BzKTtcXG4rdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XFxuIFxcbiAjZW5kaWYgLyogX0xJTlVYX1hTS19RVUVVRV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjEwLjUwMjM5MzA5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQzMjY4NTk4MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieHNrcV9jcmVhdGVcIixcbiAgICBcInhza3FfZGVzdHJveVwiLFxuICAgIFwieHNrX3NldHNvY2tvcHRcIixcbiAgICBcInhza19yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBtZW1vcnkgYWNjb3VudGluZyBmb3IgcGlubmVkIHBhZ2VzIGluIFhEUCBzb2NrZXQgcXVldWVzLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzZXRzb2Nrb3B0IG9uIEFGX1hEUCBzb2NrZXRzIChlLmcuLCB3aGVuIHNldHRpbmcgdXAgWERQX1RYX1JJTkcsIFhEUF9SWF9SSU5HLCBldGMuKSBhbmQgdXBvbiBzb2NrZXQgcmVsZWFzZS4gSXQgaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgYXMgcXVldWUgY3JlYXRpb24gY2FuIG5vdyBmYWlsIGlmIG1lbW9yeSBsaW1pdHMgYXJlIGV4Y2VlZGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmNDZlNDAwOTE4NjFjYmFlYTY4NWRkNGRlODRiYTUzMzFmYjVlOTcyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwNTozMDowOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmMgYi9uZXQveGRwL3hza19xdWV1ZS5jXG5pbmRleCA0ZGQwMWI3ZDg1OGViLi44YmUyNTEwOTYyNzc5IDEwMDY0NFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuY1xuKysrIGIvbmV0L3hkcC94c2tfcXVldWUuY1xuQEAgLTI1LDYgKzI1LDcgQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXG4ge1xuIFx0c3RydWN0IHhza19xdWV1ZSAqcTtcbiBcdHNpemVfdCBzaXplO1xuK1x0aW50IGVycjtcbiBcbiBcdHEgPSBremFsbG9jX29iaigqcSk7XG4gXHRpZiAoIXEpXG5AQCAtNDUsOSArNDYsMTUgQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXG4gXHR9XG4gXG4gXHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcbitcdGVyciA9IG1tX2FjY291bnRfcGlubmVkX3BhZ2VzKFx1MDAyNnEtXHUwMDNlbW1wLCBzaXplKTtcbitcdGlmIChlcnIpIHtcbitcdFx0a2ZyZWUocSk7XG4rXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0cS1cdTAwM2VyaW5nID0gdm1hbGxvY191c2VyKHNpemUpO1xuIFx0aWYgKCFxLVx1MDAzZXJpbmcpIHtcbitcdFx0bW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlcyhcdTAwMjZxLVx1MDAzZW1tcCk7XG4gXHRcdGtmcmVlKHEpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbkBAIC02Miw1ICs2OSw2IEBAIHZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpXG4gXHRcdHJldHVybjtcbiBcbiBcdHZmcmVlKHEtXHUwMDNlcmluZyk7XG4rXHRtbV91bmFjY291bnRfcGlubmVkX3BhZ2VzKFx1MDAyNnEtXHUwMDNlbW1wKTtcbiBcdGtmcmVlKHEpO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5oIGIvbmV0L3hkcC94c2tfcXVldWUuaFxuaW5kZXggMWJjNDJjODkwMmY0Yi4uYjJlOTZjNjVmOTU1YSAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrX3F1ZXVlLmhcbisrKyBiL25ldC94ZHAveHNrX3F1ZXVlLmhcbkBAIC03LDYgKzcsNyBAQFxuICNkZWZpbmUgX0xJTlVYX1hTS19RVUVVRV9IXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaWZfeGRwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQveGRwX3NvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC94c2tfYnVmZl9wb29sLmhcdTAwM2VcbkBAIC00Niw2ICs0Nyw3IEBAIHN0cnVjdCB4c2tfcXVldWUge1xuIFx0dTY0IGludmFsaWRfZGVzY3M7XG4gXHR1NjQgcXVldWVfZW1wdHlfZGVzY3M7XG4gXHRzaXplX3QgcmluZ192bWFsbG9jX3NpemU7XG4rXHRzdHJ1Y3QgbW1waW4gbW1wO1xuIFx0LyogTXV0dWFsIGV4Y2x1c2lvbiBvZiB0aGUgY29tcGxldGlvbiByaW5nIGluIHRoZSBTS0IgbW9kZS5cbiBcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxuIFx0ICogYW5kIHF1ZXVlIGlkIGlzIHNoYXJlZC5cbkBAIC01MzIsNiArNTM0LDYgQEAgc3RhdGljIGlubGluZSB1NjQgeHNrcV9uYl9xdWV1ZV9lbXB0eV9kZXNjcyhzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxuIH1cbiBcbiBzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSk7XG4tdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcV9vcHMpO1xuK3ZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpO1xuIFxuICNlbmRpZiAvKiBfTElOVVhfWFNLX1FVRVVFX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjEwLjUwMjM5NDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkwMTE0OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWERQIFNvY2tldCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBuZXQveGRwL3hza19xdWV1ZS5jYCBhbmQgYG5ldC94ZHAveHNrX3F1ZXVlLmhgLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGludHJvZHVjaW5nIHNvbWUgcGFnZSBhY2NvdW50aW5nIGZvciBwaW5uZWQgcGFnZXMsIHVzaW5nIGBtbV9hY2NvdW50X3Bpbm5lZF9wYWdlc2AgYW5kIGBtbV91bmFjY291bnRfcGlubmVkX3BhZ2VzYCB3aXRoaW4gdGhlIGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgIGZ1bmN0aW9ucy4gQW5kIHRoZXJlJ3MgYSBuZXcgYHN0cnVjdCBtbXBpbiBtbXBgIG1lbWJlciBiZWluZyBhZGRlZCB0byB0aGUgYHhza19xdWV1ZWAgc3RydWN0LlxuXG5NeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgdGhpcyBpcyBhbGwgcmVsYXRlZCB0byBBRl9YRFAsIHNwZWNpZmljYWxseSBYRFAgc29ja2V0cywgZ2l2ZW4gdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHBhcnQgb2YgdGhhdCBjb2RlIGJhc2UuIEl04oCZcyBmdW5jdGlvbmFsIGNvZGUsIGFuZCB0aGUgZ29hbCBoZXJlIHNlZW1zIHRvIGJlIGltcHJvdmluZyByZXNvdXJjZSBtYW5hZ2VtZW50IHJlbGF0ZWQgdG8gdGhlc2UgcGlubmVkIHBhZ2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGJldHRlci5cblxuVG8gZ2V0IGEgYmV0dGVyIGdyaXAgb24gdGhlIGNvbmZpZ3VyYXRpb25zLCBJJ20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYGdpdCBncmVwYCB3aXRoaW4gdGhlIGBuZXQveGRwL2AgZGlyZWN0b3J5IHRvIGh1bnQgZm9yIHJlZmVyZW5jZXMgdG8gYm90aCBgeHNrcV9jcmVhdGVgIGFuZCB0aGUgZmlsZSBgeHNrX3F1ZXVlLmNgLCBzbyBJIGNhbiB0cmFjZSB3aGVyZSBpdCdzIGFsbCB1c2VkIGFuZCB3aGF0IGJ1aWxkIG9wdGlvbnMgYXJlIGluIHBsYXkuIFRoYXQnbGwgcHJvdmlkZSBtZSB3aXRoIGEgYnJvYWRlciBjb250ZXh0IHRvIHNlZSBob3cgdGhpcyBwYXRjaCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjcxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6MzA6MTQuNzkyNTEyMzYyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwODYzNjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza3FfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAveHNrLmM9MTQ0OT1zdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgeHNrX3F1ZXVlICoqcXVldWUsXFxuLS1cXG5uZXQveGRwL3hzay5jLTE0NTYtXFxubmV0L3hkcC94c2suYzoxNDU3OlxcdHEgPSB4c2txX2NyZWF0ZShlbnRyaWVzLCB1bWVtX3F1ZXVlKTtcXG5uZXQveGRwL3hzay5jLTE0NTgtXFx0aWYgKCFxKVxcbi0tXFxubmV0L3hkcC94c2tfcXVldWUuYz0xND1zdGF0aWMgc2l6ZV90IHhza3FfZ2V0X3Jpbmdfc2l6ZShzdHJ1Y3QgeHNrX3F1ZXVlICpxLCBib29sIHVtZW1fcXVldWUpXFxuLS1cXG5uZXQveGRwL3hza19xdWV1ZS5jLTIzLVxcbm5ldC94ZHAveHNrX3F1ZXVlLmM6MjQ6c3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXFxubmV0L3hkcC94c2tfcXVldWUuYy0yNS17XFxuLS1cXG5uZXQveGRwL3hza19xdWV1ZS5oPTUzMT1zdGF0aWMgaW5saW5lIHU2NCB4c2txX25iX3F1ZXVlX2VtcHR5X2Rlc2NzKHN0cnVjdCB4c2tfcXVldWUgKnEpXFxuLS1cXG5uZXQveGRwL3hza19xdWV1ZS5oLTUzNS1cXG5uZXQveGRwL3hza19xdWV1ZS5oOjUzNjpzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSk7XFxubmV0L3hkcC94c2tfcXVldWUuaC01Mzctdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjE0LjgzMzM4MTEwMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzkxMTQwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgWERQIExhbmRzY2FwZTogS2NvbmZpZyBGaXJzdCoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgaW50byBhbnl0aGluZyBkZWVwZXIgd2l0aCBgbmV0L3hkcGAsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgZ2V0IG15IGJlYXJpbmdzLiBMZXQncyBtYWtlIHN1cmUgd2UgaGF2ZSBhIGNsZWFyIGlkZWEgb2YgaG93IHRoaXMgZmVhdHVyZSBpcyBjb25maWd1cmVkLiBJdCdzIHRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIGBuZXQveGRwL2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQga25vYnMgd2UgaGF2ZSwgd2hpY2ggb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheS4gSSBuZWVkIHRvIGtub3cgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBjb25maWd1cmF0aW9uIHBvc3NpYmlsaXRpZXMsIGVzcGVjaWFsbHkgaW4gYSBidWlsZCBlbnZpcm9ubWVudC4gQXJlIHRoZXJlIGFueSB0cmlja3kgYnVpbGQgZmxhZ3Mgb3IgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgYml0ZSBtZSBsYXRlcj8gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRocm91Z2ggS2NvbmZpZyBpcyB0aGUgZXNzZW50aWFsIGZpcnN0IHN0ZXAgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU1MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjE4LjExMjQ5NzI0OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjA1MDk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfcXVldWUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3hkcC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19YRFBfU09DS0VUUykgKz0geHNrLm8geGRwX3VtZW0ubyB4c2tfcXVldWUubyB4c2ttYXAub1xcbm5ldC94ZHAvTWFrZWZpbGUtMy1vYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICs9IHhza19idWZmX3Bvb2wub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDoxOC4xNTQ1NTE5MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTUwOTUxNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MzY3NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6MzA6MjEuMzA1NTA2MDA4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMTgwNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRFBfU09DS0VUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQveGRwL0tjb25maWc6Mjpjb25maWcgWERQX1NPQ0tFVFNcXG5uZXQveGRwL0tjb25maWctMy1cXHRib29sIFxcXCJYRFAgc29ja2V0c1xcXCJcXG4tLVxcbm5ldC94ZHAvS2NvbmZpZy05LVxcbm5ldC94ZHAvS2NvbmZpZzoxMDpjb25maWcgWERQX1NPQ0tFVFNfRElBR1xcbm5ldC94ZHAvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiWERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDoyMS4zNDc2OTIwNzdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDk1Njk4NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqWERQX1NPQ0tFVFMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IENoZWNrKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFhEUF9TT0NLRVRTYC4gVGhhdCdzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBJJ20gd29ya2luZyB3aXRoLiBUaGUgZmlyc3QgdGhpbmcgSSBhbHdheXMgZG8gd2l0aCB0aGVzZSBpcyBjaGVjayBmb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG9wdGlvbnMsIGZlYXR1cmVzLCBvciBrZXJuZWwgbW9kdWxlcyBpdCByZWxpZXMgb24uIEkgZG9uJ3Qgd2FudCB0byBlbmFibGUgc29tZXRoaW5nIHdpdGhvdXQga25vd2luZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgcHJlLXJlcXVpc2l0ZXMgdGFrZW4gY2FyZSBvZi4gTGV0IG1lIGRpdmUgaW4gYW5kIHNlZSBpZiB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGVuYWJsZSwgb3IgaWYgaXQgcmVxdWlyZXMgc29tZXRoaW5nIGVsc2UgdG8gYmUgZW5hYmxlZCBmaXJzdC4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMzQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDoyNC40NDMzOTQ0MzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3hkcC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgWERQX1NPQ0tFVFNcXG4gICAzOlxcdFxcdGJvb2wgXFxcIlhEUCBzb2NrZXRzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxcbiAgIDU6XFx0XFx0ZGVmYXVsdCBuXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIFhEUCBzb2NrZXRzIGFsbG93cyBhIGNoYW5uZWwgYmV0d2VlbiBYRFAgcHJvZ3JhbXMgYW5kXFxuICAgODpcXHRcXHQgIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMuXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBYRFBfU09DS0VUU19ESUFHXFxuICAxMTpcXHRcXHR0cmlzdGF0ZSBcXFwiWERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbiAgMTI6XFx0XFx0ZGVwZW5kcyBvbiBYRFBfU09DS0VUU1xcbiAgMTM6XFx0XFx0ZGVmYXVsdCBuXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFN1cHBvcnQgZm9yIFBGX1hEUCBzb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdGhlIHNzIHRvb2wuXFxuICAxNjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjI0LjQ0MzQ5MTY1OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE3MjY5MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkZvY3VzaW5nIEZ1enppbmcgRWZmb3J0cyBpbiB0aGUgWERQL1hTSyBTdWJzeXN0ZW0qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZnV6emluZyBhcHByb2FjaCBJIHRha2UgaGVyZSBkZXBlbmRzIGhlYXZpbHkgb24gdW5kZXJzdGFuZGluZyBob3cgYEJQRl9TWVNDQUxMYCBpcyB1dGlsaXplZCB3aXRoaW4gdGhlIFhEUC9YU0sgZnJhbWV3b3JrLiBUaGF0J3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgaW5ncmVzcy4gV2UgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMuIExldCdzIHNlZS4uLiB0aGUgbW9zdCBwcm9taXNpbmcgZnVuY3Rpb25zIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgY29udGV4dCwgYXBwZWFyIHRvIGJlIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGUgYEJQRl9TWVNDQUxMYCBlbnRyeS4gSW4gdGhpcyBjYXNlLCBgeHNrcV9jcmVhdGVgIHN0YW5kcyBvdXQuIEl0J3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gYHhza19pbml0X3F1ZXVlYCB3aXRoaW4gYG5ldC94ZHAveHNrLmNgLiBUaGVyZWZvcmUsIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgaGlnaCBvbiB0aGUgcHJpb3JpdHkgbGlzdC4gVGhleSBhcmUgd2hlcmUgd2UgY2FuIHBvdGVudGlhbGx5IGludHJvZHVjZSBjcmFmdGVkIGlucHV0cyB0byBwcm9iZSBmb3IgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gc29ja2V0IGNyZWF0aW9uIHdpdGhpbiB0aGUgWERQL1hTSyBzdWJzeXN0ZW0uIFdlIHNob3VsZCB0aG9yb3VnaGx5IGV4YW1pbmUgaXRzIGlucHV0IHZhbGlkYXRpb24gYW5kIHJlc291cmNlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uLCBhcyB0aGlzIGlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBsb2dpYyByZXNpZGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDoyNy43NjA3NjQ3NjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMzQzMjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19pbml0X3F1ZXVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAveHNrLmM9MTQxNj1zdGF0aWMgX19wb2xsX3QgeHNrX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuLS1cXG5uZXQveGRwL3hzay5jLTE0NDgtXFxubmV0L3hkcC94c2suYzoxNDQ5OnN0YXRpYyBpbnQgeHNrX2luaXRfcXVldWUodTMyIGVudHJpZXMsIHN0cnVjdCB4c2tfcXVldWUgKipxdWV1ZSxcXG5uZXQveGRwL3hzay5jLTE0NTAtXFx0XFx0XFx0ICBib29sIHVtZW1fcXVldWUpXFxuLS1cXG5uZXQveGRwL3hzay5jPTE3ODU9c3RhdGljIGludCB4c2tfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L3hkcC94c2suYy0xODEyLVxcdFxcdHEgPSAob3B0bmFtZSA9PSBYRFBfVFhfUklORykgPyBcXHUwMDI2eHMtXFx1MDAzZXR4IDogXFx1MDAyNnhzLVxcdTAwM2VyeDtcXG5uZXQveGRwL3hzay5jOjE4MTM6XFx0XFx0ZXJyID0geHNrX2luaXRfcXVldWUoZW50cmllcywgcSwgZmFsc2UpO1xcbm5ldC94ZHAveHNrLmMtMTgxNC1cXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBvcHRuYW1lID09IFhEUF9UWF9SSU5HKVxcbi0tXFxubmV0L3hkcC94c2suYy0xODgxLVxcdFxcdFxcdFxcdTAwMjZ4cy1cXHUwMDNlY3FfdG1wO1xcbm5ldC94ZHAveHNrLmM6MTg4MjpcXHRcXHRlcnIgPSB4c2tfaW5pdF9xdWV1ZShlbnRyaWVzLCBxLCB0cnVlKTtcXG5uZXQveGRwL3hzay5jLTE4ODMtXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ4cy1cXHUwMDNlbXV0ZXgpO1xcbi0tXFxubmV0L3hkcC94c2suYz0yMDU2PXN0YXRpYyBpbnQgeHNrX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuLS1cXG5uZXQveGRwL3hzay5jLTIwODUtXFxubmV0L3hkcC94c2suYzoyMDg2OlxcdC8qIE1hdGNoZXMgdGhlIHNtcF93bWIoKSBpbiB4c2tfaW5pdF9xdWV1ZSAqL1xcbm5ldC94ZHAveHNrLmMtMjA4Ny1cXHRzbXBfcm1iKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjI3LjgwMTExMzMwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzI0NTg1OTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipDb25zaWRlcmluZyBYRFAgU29ja2V0IE9wdGltaXphdGlvbioqXG5cblJpZ2h0LCB0aGlua2luZyBhYm91dCBvcHRpbWl6aW5nIHRoZSBYRFAgc29ja2V0IHNldHVwLi4uIGB4c2tfc2V0c29ja29wdGAgc2VlbXMgbGlrZSBhIHN0cm9uZyBjb250ZW5kZXIgYXMgYSBmdW5jdGlvbiB0byBmb2N1cyBvbi4gSXQncyB0aGUgc3RhbmRhcmQgd2F5IHRvIGNvbmZpZ3VyZSBzb2NrZXQgb3B0aW9ucywgd2hpY2ggbGlrZWx5IGltcGFjdHMgcGVyZm9ybWFuY2UuIEknbGwgbmVlZCB0byBkaWcgaW50byBpdHMgdXNhZ2UgYW5kIGludGVybmFsIHdvcmtpbmdzIHRvIGJlIHN1cmUsIGJ1dCBpdCBmZWVscyBsaWtlIGEgZ29vZCBpbml0aWFsIGFyZWEgdG8gaW52ZXN0aWdhdGUgZm9yIHBvdGVudGlhbCBpbXByb3ZlbWVudHMuXG5cbkxldCdzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zIHRob3VnaDsgSSBzaG91bGQgYWxzbyBicm9hZGVuIHRoZSBzZWFyY2ggYW5kIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGUgWERQIHNvY2tldCBsaWZlY3ljbGUgdGhhdCBtaWdodCBiZSBlcXVhbGx5IG9yIGV2ZW4gbW9yZSBjcml0aWNhbC4gVGhlcmUgY291bGQgYmUgc29tZSBvdGhlciBoaWRkZW4gZ2VtcyBmb3IgcGVyZm9ybWFuY2UgdHVuaW5nLlxuXG5BbHNvLCBJJ20gbm90aW5nIHRoYXQgYHhza3FfZGVzdHJveWAgaXMgY2FsbGVkIGZyb20gYHhza19kZXN0cnVjdGAgb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4gVGhhdCdzIGdvb2QgdG8ga2VlcCBpbiBtaW5kLCBiZWNhdXNlIHdoYXRldmVyIG9wdGltaXphdGlvbnMgSSBtYWtlIGluIGB4c2txX2Rlc3Ryb3lgLCBJIHNob3VsZCBhbHNvIGNoZWNrIGl0cyBjb250ZXh0LCBpbiBwYXJ0aWN1bGFyIGB4c2tfZGVzdHJ1Y3RgIHRvIHNlZSB0aGUgY29tcGxldGUgdmlldyBhbmQgaG93IHRoZSBvcGVyYXRpb25zIGFyZSByZWxhdGVkIHRvIGVhY2ggb3RoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMjUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDozMS4xMjU3MDE1MTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODQxNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza3FfZGVzdHJveVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL3hzay5jPTE1Mjc9c3RhdGljIGludCB4c2tfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbi0tXFxubmV0L3hkcC94c2suYy0xNTUxLVxcbm5ldC94ZHAveHNrLmM6MTU1MjpcXHR4c2txX2Rlc3Ryb3koeHMtXFx1MDAzZXJ4KTtcXG5uZXQveGRwL3hzay5jOjE1NTM6XFx0eHNrcV9kZXN0cm95KHhzLVxcdTAwM2V0eCk7XFxubmV0L3hkcC94c2suYzoxNTU0OlxcdHhza3FfZGVzdHJveSh4cy1cXHUwMDNlZnFfdG1wKTtcXG5uZXQveGRwL3hzay5jOjE1NTU6XFx0eHNrcV9kZXN0cm95KHhzLVxcdTAwM2VjcV90bXApO1xcbm5ldC94ZHAveHNrLmMtMTU1Ni1cXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTMwNT1zdGF0aWMgdm9pZCB4cF9yZWxlYXNlX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTMxNC1cXHRpZiAocG9vbC1cXHUwMDNlZnEpIHtcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzozMTU6XFx0XFx0eHNrcV9kZXN0cm95KHBvb2wtXFx1MDAzZWZxKTtcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy0zMTYtXFx0XFx0cG9vbC1cXHUwMDNlZnEgPSBOVUxMO1xcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtMzE5LVxcdGlmIChwb29sLVxcdTAwM2VjcSkge1xcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjMyMDpcXHRcXHR4c2txX2Rlc3Ryb3kocG9vbC1cXHUwMDNlY3EpO1xcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTMyMS1cXHRcXHRwb29sLVxcdTAwM2VjcSA9IE5VTEw7XFxuLS1cXG5uZXQveGRwL3hza19xdWV1ZS5jPTI0PXN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxcbi0tXFxubmV0L3hkcC94c2tfcXVldWUuYy02NS1cXG5uZXQveGRwL3hza19xdWV1ZS5jOjY2OnZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpXFxubmV0L3hkcC94c2tfcXVldWUuYy02Ny17XFxuLS1cXG5uZXQveGRwL3hza19xdWV1ZS5oPTUzNj1zdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSk7XFxubmV0L3hkcC94c2tfcXVldWUuaDo1Mzc6dm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XFxubmV0L3hkcC94c2tfcXVldWUuaC01MzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjMxLjE2ODU0NzUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4MDQyNjY0NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBYRFAgU29ja2V0IE1lbW9yeSBBY2NvdW50aW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgeHNrcV9jcmVhdGVgIGFuZCBgeHNrcV9kZXN0cm95YCB3aXRoaW4gYG5ldC94ZHAveHNrX3F1ZXVlLmNgLiBJdCdzIGFsbCBhYm91dCBtZW1vcnkgYWNjb3VudGluZyBmb3IgWERQIHNvY2tldHMsIHNwZWNpZmljYWxseSB0aGUgcmluZyBidWZmZXIgYWxsb2NhdGlvbi4gVGhleSd2ZSBhZGRlZCBgbW1fYWNjb3VudF9waW5uZWRfcGFnZXNgIGFuZCBgbW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlc2AgY2FsbHMsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBzZWUgdGhlIHBvdGVudGlhbCBmb3IgaW50ZXJlc3Rpbmcgc2lkZSBlZmZlY3RzIGhlcmUsIGFuZCBteSBmdXp6aW5nIHJhZGFyIGlzIGRlZmluaXRlbHkgdXAuXG5cblRoZSBjb2RlJ3MgZXhwb3NlZCB2aWEgYHhza19zZXRzb2Nrb3B0YCAodGhpbmdzIGxpa2UgYFhEUF9UWF9SSU5HYCwgYFhEUF9SWF9SSU5HYCkgYW5kIGB4c2tfcmVsZWFzZWAsIHdoaWNoIG1lYW5zIEkgY2FuIGRpcmVjdGx5IHRhcmdldCB0aGVzZSBmdW5jdGlvbnMuIFRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgYXJlIGBDT05GSUdfWERQX1NPQ0tFVFNgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgbm90aGluZyB0b28gZXhvdGljLCBidXQgaW1wb3J0YW50IHRvIG5vdGUuXG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuIGB4c2tfc2V0c29ja29wdGAsIGB4c2tfcmVsZWFzZWAsIGFuZCBvZiBjb3Vyc2UgYHhza19tbWFwYCwgd2hpY2ggaXMgcmVsYXRlZCB0byB0aGUgcmluZyBidWZmZXIuIEhhbmcgb24sIGxldCBtZSBjb25uZWN0IHRoZSBkb3Rz4oCmIGB4c2txX2NyZWF0ZWAgaXMgY2FsbGVkIGZyb20gYHhza19pbml0X3F1ZXVlYCwgd2hpY2ggKml0c2VsZiogaXMgY2FsbGVkIGZyb20gYHhza19zZXRzb2Nrb3B0YC4gVGhhdCBtZWFucyBgeHNrX3NldHNvY2tvcHRgIGlzIGEgZ3JlYXQgZW50cnkgcG9pbnQgdG8gc3RhcnQgd2l0aCwgc2luY2UgaXQgdWx0aW1hdGVseSBsZWFkcyB0byB0aGUgbWVtb3J5IGFsbG9jYXRpb24gY2hhbmdlcy4gQW5kIGB4c2tfcmVsZWFzZWAgaXMgYWxzbyBhIGNsZWFyIHRhcmdldCwgYXMgaXQgc2hvdWxkIHRyaWdnZXIgdGhlIGNsZWFudXAuXG5cbkJ1dCB3YWl0LCBJIG5lZWQgdG8gYmUgY2FyZWZ1bC4gYHhza19zZXRzb2Nrb3B0YCAqaXMqIHN0YXRpYyEgRGFtbiwgc3RhdGljIGZ1bmN0aW9ucyBhcmVu4oCZdCBhbHdheXMgdGhlIGJlc3QgZm9jdXMgaWYgSSB3YW50IHRvIGV4cGxvcmUgZXh0ZXJuYWwgQVBJIGVudHJ5cG9pbnRzLiBPa2F5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEFGX1hEUCBwcm90b2NvbCBvcGVyYXRpb25zIHRvIHNlZSBob3cgdGhpcyBmaXRzIGluLiBMb29rcyBsaWtlIEkgbWF5IG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODA0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjQwLjk3MjgxNjk4NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3NzMxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3NldHNvY2tvcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hkcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz0xNzc4PXN0cnVjdCB4ZHBfdW1lbV9yZWdfdjEge1xcbi0tXFxubmV0L3hkcC94c2suYy0xNzg0LVxcbm5ldC94ZHAveHNrLmM6MTc4NTpzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L3hkcC94c2suYy0xNzg2LVxcdFxcdFxcdCAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcXG4tLVxcbm5ldC94ZHAveHNrLmM9MjEzMj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4c2tfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L3hkcC94c2suYy0yMTQ0LVxcdC5zaHV0ZG93blxcdD0gc29ja19ub19zaHV0ZG93bixcXG5uZXQveGRwL3hzay5jOjIxNDU6XFx0LnNldHNvY2tvcHRcXHQ9IHhza19zZXRzb2Nrb3B0LFxcbm5ldC94ZHAveHNrLmMtMjE0Ni1cXHQuZ2V0c29ja29wdF9pdGVyID0geHNrX2dldHNvY2tvcHQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjQxLjAxMjU5NzMyNFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ1NTU5Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU29ja2V0IE9wdGlvbiBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHhza19zZXRzb2Nrb3B0YCBmdW5jdGlvbiBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgYXJlIGFueSBnb3RjaGFzIHdpdGggaXRzIGltcGxlbWVudGF0aW9uLiBUaGUgY29kZSBoYXMgaXQgZGVjbGFyZWQgYXMgc3RhdGljLCBidXQgaXQncyBhc3NpZ25lZCB0byBgcHJvdG9fb3BzLnNldHNvY2tvcHRgLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayDigJMgaXMgdGhlcmUgYSBub24tc3RhdGljIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbj8gVGhlIGRvY3VtZW50YXRpb24gc2VlbXMgdG8gcHVzaCBmb3IgdXNpbmcgbm9uLXN0YXRpYyBlbnRyeXBvaW50cyB3aGVyZSBwb3NzaWJsZS5cblxuQnV0IHdhaXQsIGhvbGQgb24uLi4gYHhza19zZXRzb2Nrb3B0YCBpcyBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb24gZm9yICp0aGlzKiBmZWF0dXJlLCBzbyBpdCBtYWtlcyBzZW5zZSB0byBmb2N1cyBvbiBpdC4gVGhlbiB0aGUgaW5zdHJ1Y3Rpb25zIGNvbWUgdG8gbWluZDsgXCJQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcIi5cblxuUmlnaHQsIEknbSByZW1lbWJlcmluZyB0aGlzIGNvcnJlY3RseSBub3cuIEJlY2F1c2UgYHhza19zZXRzb2Nrb3B0YCBpcyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYHByb3RvX29wc2AsIHRoZSBjb21waWxlciAqd29uJ3QqIGlubGluZSBpdC4gSXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyBldmVuIHRob3VnaCBpdCdzIGRlY2xhcmVkIHN0YXRpYy4gU28sIGV2ZW4gdGhvdWdoIHRoZSBjb2RpbmcgZ3VpZGVsaW5lcyBhcmUgYWdhaW5zdCB1c2luZyBhIHN0YXRpYyBmdW5jdGlvbiBmb3IgdGhlIEFQSSwgYHhza19zZXRzb2Nrb3B0YCBpcyBzYWZlIHRvIHVzZS4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCB0aG91Z2gsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoYXQgYHhza19yZWxlYXNlYCBpcyBhbHNvIGluIHRoZSBgcHJvdG9fb3BzYC4gVGhhdCB3b3VsZCBjb25maXJtIG15IHJlYXNvbmluZyBmb3IgdGhpcyBmZWF0dXJlLCBvciBoZWxwIG1lIHVuZGVyc3RhbmQgaWYgYW5vdGhlciBmdW5jdGlvbiB3aWxsIGJldHRlciBhbGlnbiB3aXRoIHRoZSBndWlkZWxpbmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTY3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjQ1Ljc1ODE1OTM0OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE0NTUwODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hkcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz0xNTAxPXN0YXRpYyB2b2lkIHhza19kZWxldGVfZnJvbV9tYXBzKHN0cnVjdCB4ZHBfc29jayAqeHMpXFxuLS1cXG5uZXQveGRwL3hzay5jLTE1MjYtXFxubmV0L3hkcC94c2suYzoxNTI3OnN0YXRpYyBpbnQgeHNrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG5uZXQveGRwL3hzay5jLTE1Mjgte1xcbi0tXFxubmV0L3hkcC94c2suYz0yMTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHhza19wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQveGRwL3hzay5jLTIxMzQtXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG5uZXQveGRwL3hzay5jOjIxMzU6XFx0LnJlbGVhc2VcXHQ9IHhza19yZWxlYXNlLFxcbm5ldC94ZHAveHNrLmMtMjEzNi1cXHQuYmluZFxcdFxcdD0geHNrX2JpbmQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjQ1Ljc5OTYxOTI2N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTE1MDAwNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgVGhpbmtpbmcgb24gWERQIFNvY2tldHMgYW5kIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZG91YmxlLWNoZWNraW5nIHRoaXMgYHhza19yZWxlYXNlYCBmdW5jdGlvbjsgeWVwLCB0aGF0J3MgYWxzbyByZXNpZGluZyB3aXRoaW4gdGhlIGBwcm90b19vcHNgIHN0cnVjdHVyZS4gTm93LCBJIHNob3VsZCBpbnZlc3RpZ2F0ZSBgeHNrX2luaXRfcXVldWVgIOKAkyBpcyBpdCBwb3RlbnRpYWxseSBiZWluZyBpbmxpbmVkPyBJdCdzIHBvc3NpYmxlLCBidXQgSSBrbm93IGZvciBzdXJlIHRoYXQgYHhza19zZXRzb2Nrb3B0YCBpc24ndC4gR2l2ZW4gdGhhdCwgSSB3aWxsIGRlZmluaXRlbHkgYmUgaW5jbHVkaW5nIGB4c2tfc2V0c29ja29wdGAgYW5kIGB4c2tfcmVsZWFzZWAgaW4gbXkgYW5hbHlzaXMuIExldCdzIHNlZS4uLiB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgSSdtIHdvcmtpbmcgd2l0aCBhcmUgYFhEUF9TT0NLRVRTYCBhbmQgYEJQRl9TWVNDQUxMYC4gTm93LCBhIHF1aWNrIHJldmlldywgSSdtIGFscmVhZHkgYXdhcmUgdGhhdCBgWERQX1NPQ0tFVFNgIGRlcGVuZHMgb24gYEJQRl9TWVNDQUxMYC4gSSdsbCBoYXZlIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoYXQncyB0aGUgb25seSBkZXBlbmRlbmN5LCB0aG91Z2guIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MDAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6MzA6NDkuNzE0NjIzMDQ1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC94ZHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFhEUF9TT0NLRVRTXFxuICAgMzpcXHRcXHRib29sIFxcXCJYRFAgc29ja2V0c1xcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG4gICA1OlxcdFxcdGRlZmF1bHQgblxcbiAgIDY6XFx0XFx0aGVscFxcbiAgIDc6XFx0XFx0ICBYRFAgc29ja2V0cyBhbGxvd3MgYSBjaGFubmVsIGJldHdlZW4gWERQIHByb2dyYW1zIGFuZFxcbiAgIDg6XFx0XFx0ICB1c2Vyc3BhY2UgYXBwbGljYXRpb25zLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgWERQX1NPQ0tFVFNfRElBR1xcbiAgMTE6XFx0XFx0dHJpc3RhdGUgXFxcIlhEUCBzb2NrZXRzOiBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4gIDEyOlxcdFxcdGRlcGVuZHMgb24gWERQX1NPQ0tFVFNcXG4gIDEzOlxcdFxcdGRlZmF1bHQgblxcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBTdXBwb3J0IGZvciBQRl9YRFAgc29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRoZSBzcyB0b29sLlxcbiAgMTY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDo0OS43MTQ2ODQ4OTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NDgzNTcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgQlBGX1NZU0NBTExgIERlcGVuZGVuY2llcyoqXG5cbkhtbSwgSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGxhbmRzY2FwZSBoZXJlLCBhbmQgSSdtIHdvbmRlcmluZyBpZiBgQlBGX1NZU0NBTExgIGhhcyBhbnkgc25lYWt5IGRlcGVuZGVuY2llcyBJJ20gbm90IGltbWVkaWF0ZWx5IGF3YXJlIG9mLiBJdOKAmXMgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2gsIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgaW5kaXJlY3QgaW1wbGljYXRpb25zIGZvciBteSBzcGVjaWZpYyB1c2UgY2FzZS4gVGhlIEtjb25maWcgZmlsZXMgYXJlIG15IHVzdWFsIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBkaWcgaW50byBgaW5pdC9LY29uZmlnYCwgb3Igd2hlcmV2ZXIgdGhlIGRhcm4gdGhpbmcgaXMgKmFjdHVhbGx5KiBkZWZpbmVkLiBJJ2xsIG5lZWQgdG8gdHJhY2UgZG93biB0aGUgZXhhY3QgZGVmaW5pdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCB0byBzZWUgaWYgYW55dGhpbmcgZWxzZSBoaW5nZXMgb24gaXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBsb3ctbGV2ZWwgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ4MCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6MzA6NTIuNzg5NTIyODc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ4NjYwNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDo1NC4zMzgxOTg5MTFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0MTMxOTM1MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFhEUCBTb2NrZXQgTWVtb3J5IEFjY291bnRpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBtZW1vcnkgYWNjb3VudGluZyBmb3IgWERQIHNvY2tldHMsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC94ZHAveHNrX3F1ZXVlLmNgLiBJdCdzIHVzaW5nIGBtbV9hY2NvdW50X3Bpbm5lZF9wYWdlc2AgYW5kIGBtbV91bmFjY291bnRfcGlubmVkX3BhZ2VzYCBkdXJpbmcgdGhlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBYU0sgcXVldWUgb2JqZWN0cyAoYHhza3FfY3JlYXRlYCBhbmQgYHhza3FfZGVzdHJveWApLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCByZWxhdGVkIHRvIEFGX1hEUCBzb2NrZXRzLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIFRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBhcmUgYFhEUF9TT0NLRVRTYCwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAsIGNvbmZpcm1pbmcgbXkgc3VzcGljaW9uIGFib3V0IEFGX1hEUC5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgYHhza3FfY3JlYXRlYCBhbmQgYHhza3FfZGVzdHJveWAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGJ5IGB4c2tfaW5pdF9xdWV1ZWAsIGFuZCB1bHRpbWF0ZWx5LCB0aGF0IGdldHMgdHJpZ2dlcmVkIGJ5IGBzZXRzb2Nrb3B0YCBjYWxscyBvbiB0aGUgc29ja2V0IChzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byByaW5ncyBsaWtlIGBYRFBfVFhfUklOR2AsIGBYRFBfUlhfUklOR2AsIGV0Yy4pLiBTaW1pbGFybHksIGB4c2txX2Rlc3Ryb3lgIGlzIGNhbGxlZCBieSBgeHNrX3JlbGVhc2VgIGFuZCBgeHBfcmVsZWFzZV9kZWZlcnJlZGAuIFRoaXMgZGlyZWN0bHkgZXhwb3NlcyB0aGlzIGNvZGUgdG8gdXNlcnNwYWNlIHZpYSBgc2V0c29ja29wdGAgb24gYW4gQUZfWERQIHNvY2tldCwgYW5kIGl0J3MgZGVmaW5pdGVseSBhIHJlYWNoYWJsZSBwYXRoLlxuXG5TaW5jZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgbWVtb3J5IGFjY291bnRpbmcsIGl0ICpkb2VzKiBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIHRoZSBzeXN0ZW0gbm93IGhhcyB0aGUgcG90ZW50aWFsIHRvIGZhaWwgaWYgbWVtb3J5IGxpbWl0cyBhcmUgZXhjZWVkZWQsIHdoaWNoIGlzIGEgbmV3IGVycm9yIGNvbmRpdGlvbiB0byBjb25zaWRlci4gSXQgYWxzbyBlbnN1cmVzIG1lbW9yeSBpcyBjb3JyZWN0bHkgYWNjb3VudGVkIGZvciwgcHJldmVudGluZyBwb3RlbnRpYWwgbGVha3Mgb3IgbWlzdXNlLlxuXG5HaXZlbiB0aGlzLCBJIHRoaW5rIGZ1enppbmcgdGhlIGVudHJ5IHBvaW50cyB3b3VsZCBiZSBwcnVkZW50LiBJJ2QgaW5pdGlhbGx5IGZvY3VzIG9uIGB4c2tfc2V0c29ja29wdGAgYW5kIGB4c2tfcmVsZWFzZWAsIGJ1dCBhbHNvLCBzaW5jZSBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgIGFyZSAqbm90KiBzdGF0aWMsIHRoZXNlIGFyZSBnb29kIHRhcmdldHMgYXMgd2VsbC4gVGhlIHByaW1hcnkgY29uZmlncyBJJ2xsIG5lZWQgdG8gZW5hYmxlIGFyZSBgWERQX1NPQ0tFVFNgIGFuZCBgQlBGX1NZU0NBTExgLlxuXG5MZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgdGhpbmsgd2UgaGF2ZSBhIHNvbGlkIHBsYW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MDEsIk91dHB1dFRva2VucyI6MTU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMxOjA0Ljc1MTM5NTA0NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODU0ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRFBfU09DS0VUU1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2txX2NyZWF0ZVwiLFxuICAgIFwieHNrcV9kZXN0cm95XCIsXG4gICAgXCJ4c2tfc2V0c29ja29wdFwiLFxuICAgIFwieHNrX3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG1lbW9yeSBhY2NvdW50aW5nIGZvciBwaW5uZWQgcGFnZXMgaW4gWERQIHNvY2tldCBxdWV1ZXMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQgb24gQUZfWERQIHNvY2tldHMgKGUuZy4sIHdoZW4gc2V0dGluZyB1cCBYRFBfVFhfUklORywgWERQX1JYX1JJTkcsIGV0Yy4pIGFuZCB1cG9uIHNvY2tldCByZWxlYXNlLiBJdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcyBxdWV1ZSBjcmVhdGlvbiBjYW4gbm93IGZhaWwgaWYgbWVtb3J5IGxpbWl0cyBhcmUgZXhjZWVkZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieHNrcV9jcmVhdGVcIixcbiAgICBcInhza3FfZGVzdHJveVwiLFxuICAgIFwieHNrX3NldHNvY2tvcHRcIixcbiAgICBcInhza19yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBtZW1vcnkgYWNjb3VudGluZyBmb3IgcGlubmVkIHBhZ2VzIGluIFhEUCBzb2NrZXQgcXVldWVzLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzZXRzb2Nrb3B0IG9uIEFGX1hEUCBzb2NrZXRzIChlLmcuLCB3aGVuIHNldHRpbmcgdXAgWERQX1RYX1JJTkcsIFhEUF9SWF9SSU5HLCBldGMuKSBhbmQgdXBvbiBzb2NrZXQgcmVsZWFzZS4gSXQgaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgYXMgcXVldWUgY3JlYXRpb24gY2FuIG5vdyBmYWlsIGlmIG1lbW9yeSBsaW1pdHMgYXJlIGV4Y2VlZGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowznxc9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 05:13:22 +0000 UTC FinishedAt: 2026-08-01 05:31:06 +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": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2195424c3da2ef1829a63b807e3a900a90e57d85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS", "BPF_SYSCALL" ], "series_id": "84e1a175-db7a-4f21-9c86-95d18fee651c" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "xskq_create", "xskq_destroy", "xsk_setsockopt", "xsk_release" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrcV9jcmVhdGUmIzM0OywKICAgICYjMzQ7eHNrcV9kZXN0cm95JiMzNDssCiAgICAmIzM0O3hza19zZXRzb2Nrb3B0JiMzNDssCiAgICAmIzM0O3hza19yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbWVtb3J5IGFjY291bnRpbmcgZm9yIHBpbm5lZCBwYWdlcyBpbiBYRFAgc29ja2V0IHF1ZXVlcy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc2V0c29ja29wdCBvbiBBRl9YRFAgc29ja2V0cyAoZS5nLiwgd2hlbiBzZXR0aW5nIHVwIFhEUF9UWF9SSU5HLCBYRFBfUlhfUklORywgZXRjLikgYW5kIHVwb24gc29ja2V0IHJlbGVhc2UuIEl0IGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIGFzIHF1ZXVlIGNyZWF0aW9uIGNhbiBub3cgZmFpbCBpZiBtZW1vcnkgbGltaXRzIGFyZSBleGNlZWRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY0NmU0MDA5MTg2MWNiYWVhNjg1ZGQ0ZGU4NGJhNTMzMWZiNWU5NzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDA1OjMwOjA5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmMgYi9uZXQveGRwL3hza19xdWV1ZS5jXG5pbmRleCA0ZGQwMWI3ZDg1OGViLi44YmUyNTEwOTYyNzc5IDEwMDY0NFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuY1xuQEAgLTI1LDYgJiM0MzsyNSw3IEBAIHN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxuIHtcbiBcdHN0cnVjdCB4c2tfcXVldWUgKnE7XG4gXHRzaXplX3Qgc2l6ZTtcbiYjNDM7XHRpbnQgZXJyO1xuIFxuIFx0cSA9IGt6YWxsb2Nfb2JqKCpxKTtcbiBcdGlmICghcSlcbkBAIC00NSw5ICYjNDM7NDYsMTUgQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXG4gXHR9XG4gXG4gXHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcbiYjNDM7XHRlcnIgPSBtbV9hY2NvdW50X3Bpbm5lZF9wYWdlcyhcdTAwMjZxLVx1MDAzZW1tcCwgc2l6ZSk7XG4mIzQzO1x0aWYgKGVycikge1xuJiM0MztcdFx0a2ZyZWUocSk7XG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4gXG4gXHRxLVx1MDAzZXJpbmcgPSB2bWFsbG9jX3VzZXIoc2l6ZSk7XG4gXHRpZiAoIXEtXHUwMDNlcmluZykge1xuJiM0MztcdFx0bW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlcyhcdTAwMjZxLVx1MDAzZW1tcCk7XG4gXHRcdGtmcmVlKHEpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbkBAIC02Miw1ICYjNDM7NjksNiBAQCB2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR2ZnJlZShxLVx1MDAzZXJpbmcpO1xuJiM0MztcdG1tX3VuYWNjb3VudF9waW5uZWRfcGFnZXMoXHUwMDI2cS1cdTAwM2VtbXApO1xuIFx0a2ZyZWUocSk7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmggYi9uZXQveGRwL3hza19xdWV1ZS5oXG5pbmRleCAxYmM0MmM4OTAyZjRiLi5iMmU5NmM2NWY5NTVhIDEwMDY0NFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuaFxuQEAgLTcsNiAmIzQzOzcsNyBAQFxuICNkZWZpbmUgX0xJTlVYX1hTS19RVUVVRV9IXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9za2J1ZmYuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX3hkcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L3hkcF9zb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQveHNrX2J1ZmZfcG9vbC5oXHUwMDNlXG5AQCAtNDYsNiAmIzQzOzQ3LDcgQEAgc3RydWN0IHhza19xdWV1ZSB7XG4gXHR1NjQgaW52YWxpZF9kZXNjcztcbiBcdHU2NCBxdWV1ZV9lbXB0eV9kZXNjcztcbiBcdHNpemVfdCByaW5nX3ZtYWxsb2Nfc2l6ZTtcbiYjNDM7XHRzdHJ1Y3QgbW1waW4gbW1wO1xuIFx0LyogTXV0dWFsIGV4Y2x1c2lvbiBvZiB0aGUgY29tcGxldGlvbiByaW5nIGluIHRoZSBTS0IgbW9kZS5cbiBcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxuIFx0ICogYW5kIHF1ZXVlIGlkIGlzIHNoYXJlZC5cbkBAIC01MzIsNiAmIzQzOzUzNCw2IEBAIHN0YXRpYyBpbmxpbmUgdTY0IHhza3FfbmJfcXVldWVfZW1wdHlfZGVzY3Moc3RydWN0IHhza19xdWV1ZSAqcSlcbiB9XG4gXG4gc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xuLXZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnFfb3BzKTtcbiYjNDM7dm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XG4gXG4gI2VuZGlmIC8qIF9MSU5VWF9YU0tfUVVFVUVfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7LAogICAgJiMzNDt4c2tfc2V0c29ja29wdCYjMzQ7LAogICAgJiMzNDt4c2tfcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG1lbW9yeSBhY2NvdW50aW5nIGZvciBwaW5uZWQgcGFnZXMgaW4gWERQIHNvY2tldCBxdWV1ZXMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQgb24gQUZfWERQIHNvY2tldHMgKGUuZy4sIHdoZW4gc2V0dGluZyB1cCBYRFBfVFhfUklORywgWERQX1JYX1JJTkcsIGV0Yy4pIGFuZCB1cG9uIHNvY2tldCByZWxlYXNlLiBJdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcyBxdWV1ZSBjcmVhdGlvbiBjYW4gbm93IGZhaWwgaWYgbWVtb3J5IGxpbWl0cyBhcmUgZXhjZWVkZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmNDZlNDAwOTE4NjFjYmFlYTY4NWRkNGRlODRiYTUzMzFmYjVlOTcyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAwNTozMDowOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmMgYi9uZXQveGRwL3hza19xdWV1ZS5jCmluZGV4IDRkZDAxYjdkODU4ZWIuLjhiZTI1MTA5NjI3NzkgMTAwNjQ0Ci0tLSBhL25ldC94ZHAveHNrX3F1ZXVlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuYwpAQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpCiB7CiAJc3RydWN0IHhza19xdWV1ZSAqcTsKIAlzaXplX3Qgc2l6ZTsKJiM0MzsJaW50IGVycjsKIAogCXEgPSBremFsbG9jX29iaigqcSk7CiAJaWYgKCFxKQpAQCAtNDUsOSAmIzQzOzQ2LDE1IEBAIHN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKQogCX0KIAogCXNpemUgPSBQQUdFX0FMSUdOKHNpemUpOwomIzQzOwllcnIgPSBtbV9hY2NvdW50X3Bpbm5lZF9wYWdlcygmYW1wO3EtJmd0O21tcCwgc2l6ZSk7CiYjNDM7CWlmIChlcnIpIHsKJiM0MzsJCWtmcmVlKHEpOwomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KIAogCXEtJmd0O3JpbmcgPSB2bWFsbG9jX3VzZXIoc2l6ZSk7CiAJaWYgKCFxLSZndDtyaW5nKSB7CiYjNDM7CQltbV91bmFjY291bnRfcGlubmVkX3BhZ2VzKCZhbXA7cS0mZ3Q7bW1wKTsKIAkJa2ZyZWUocSk7CiAJCXJldHVybiBOVUxMOwogCX0KQEAgLTYyLDUgJiM0Mzs2OSw2IEBAIHZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpCiAJCXJldHVybjsKIAogCXZmcmVlKHEtJmd0O3JpbmcpOwomIzQzOwltbV91bmFjY291bnRfcGlubmVkX3BhZ2VzKCZhbXA7cS0mZ3Q7bW1wKTsKIAlrZnJlZShxKTsKIH0KZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmggYi9uZXQveGRwL3hza19xdWV1ZS5oCmluZGV4IDFiYzQyYzg5MDJmNGIuLmIyZTk2YzY1Zjk1NWEgMTAwNjQ0Ci0tLSBhL25ldC94ZHAveHNrX3F1ZXVlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hkcC94c2tfcXVldWUuaApAQCAtNyw2ICYjNDM7Nyw3IEBACiAjZGVmaW5lIF9MSU5VWF9YU0tfUVVFVUVfSAogCiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvc2tidWZmLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaWZfeGRwLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3hkcF9zb2NrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bmV0L3hza19idWZmX3Bvb2wuaCZndDsKQEAgLTQ2LDYgJiM0Mzs0Nyw3IEBAIHN0cnVjdCB4c2tfcXVldWUgewogCXU2NCBpbnZhbGlkX2Rlc2NzOwogCXU2NCBxdWV1ZV9lbXB0eV9kZXNjczsKIAlzaXplX3QgcmluZ192bWFsbG9jX3NpemU7CiYjNDM7CXN0cnVjdCBtbXBpbiBtbXA7CiAJLyogTXV0dWFsIGV4Y2x1c2lvbiBvZiB0aGUgY29tcGxldGlvbiByaW5nIGluIHRoZSBTS0IgbW9kZS4KIAkgKiBQcm90ZWN0OiB3aGVuIHNvY2tldHMgc2hhcmUgYSBzaW5nbGUgY3Egd2hlbiB0aGUgc2FtZSBuZXRkZXYKIAkgKiBhbmQgcXVldWUgaWQgaXMgc2hhcmVkLgpAQCAtNTMyLDYgJiM0Mzs1MzQsNiBAQCBzdGF0aWMgaW5saW5lIHU2NCB4c2txX25iX3F1ZXVlX2VtcHR5X2Rlc2NzKHN0cnVjdCB4c2tfcXVldWUgKnEpCiB9CiAKIHN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKTsKLXZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnFfb3BzKTsKJiM0Mzt2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKTsKIAogI2VuZGlmIC8qIF9MSU5VWF9YU0tfUVVFVUVfSCAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjcxCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWERQIFNvY2tldCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQveGRwL3hza19xdWV1ZS5jYCBhbmQgYG5ldC94ZHAveHNrX3F1ZXVlLmhgLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBpbnRyb2R1Y2luZyBzb21lIHBhZ2UgYWNjb3VudGluZyBmb3IgcGlubmVkIHBhZ2VzLCB1c2luZyBgbW1fYWNjb3VudF9waW5uZWRfcGFnZXNgIGFuZCBgbW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlc2Agd2l0aGluIHRoZSBgeHNrcV9jcmVhdGVgIGFuZCBgeHNrcV9kZXN0cm95YCBmdW5jdGlvbnMuIEFuZCB0aGVyZSYjMzk7cyBhIG5ldyBgc3RydWN0IG1tcGluIG1tcGAgbWVtYmVyIGJlaW5nIGFkZGVkIHRvIHRoZSBgeHNrX3F1ZXVlYCBzdHJ1Y3QuCgpNeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgdGhpcyBpcyBhbGwgcmVsYXRlZCB0byBBRl9YRFAsIHNwZWNpZmljYWxseSBYRFAgc29ja2V0cywgZ2l2ZW4gdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHBhcnQgb2YgdGhhdCBjb2RlIGJhc2UuIEl04oCZcyBmdW5jdGlvbmFsIGNvZGUsIGFuZCB0aGUgZ29hbCBoZXJlIHNlZW1zIHRvIGJlIGltcHJvdmluZyByZXNvdXJjZSBtYW5hZ2VtZW50IHJlbGF0ZWQgdG8gdGhlc2UgcGlubmVkIHBhZ2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGJldHRlci4KClRvIGdldCBhIGJldHRlciBncmlwIG9uIHRoZSBjb25maWd1cmF0aW9ucywgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHVzZSBgZ2l0IGdyZXBgIHdpdGhpbiB0aGUgYG5ldC94ZHAvYCBkaXJlY3RvcnkgdG8gaHVudCBmb3IgcmVmZXJlbmNlcyB0byBib3RoIGB4c2txX2NyZWF0ZWAgYW5kIHRoZSBmaWxlIGB4c2tfcXVldWUuY2AsIHNvIEkgY2FuIHRyYWNlIHdoZXJlIGl0JiMzOTtzIGFsbCB1c2VkIGFuZCB3aGF0IGJ1aWxkIG9wdGlvbnMgYXJlIGluIHBsYXkuIFRoYXQmIzM5O2xsIHByb3ZpZGUgbWUgd2l0aCBhIGJyb2FkZXIgY29udGV4dCB0byBzZWUgaG93IHRoaXMgcGF0Y2ggZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2txX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmM9MTQ0OT1zdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgeHNrX3F1ZXVlICoqcXVldWUsXG4tLVxubmV0L3hkcC94c2suYy0xNDU2LVxubmV0L3hkcC94c2suYzoxNDU3Olx0cSA9IHhza3FfY3JlYXRlKGVudHJpZXMsIHVtZW1fcXVldWUpO1xubmV0L3hkcC94c2suYy0xNDU4LVx0aWYgKCFxKVxuLS1cbm5ldC94ZHAveHNrX3F1ZXVlLmM9MTQ9c3RhdGljIHNpemVfdCB4c2txX2dldF9yaW5nX3NpemUoc3RydWN0IHhza19xdWV1ZSAqcSwgYm9vbCB1bWVtX3F1ZXVlKVxuLS1cbm5ldC94ZHAveHNrX3F1ZXVlLmMtMjMtXG5uZXQveGRwL3hza19xdWV1ZS5jOjI0OnN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxubmV0L3hkcC94c2tfcXVldWUuYy0yNS17XG4tLVxubmV0L3hkcC94c2tfcXVldWUuaD01MzE9c3RhdGljIGlubGluZSB1NjQgeHNrcV9uYl9xdWV1ZV9lbXB0eV9kZXNjcyhzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxuLS1cbm5ldC94ZHAveHNrX3F1ZXVlLmgtNTM1LVxubmV0L3hkcC94c2tfcXVldWUuaDo1MzY6c3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xubmV0L3hkcC94c2tfcXVldWUuaC01Mzctdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU1MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgWERQIExhbmRzY2FwZTogS2NvbmZpZyBGaXJzdCoqCgpBbHJpZ2h0LCBiZWZvcmUgZGl2aW5nIGludG8gYW55dGhpbmcgZGVlcGVyIHdpdGggYG5ldC94ZHBgLCB0aGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGdldCBteSBiZWFyaW5ncy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgY2xlYXIgaWRlYSBvZiBob3cgdGhpcyBmZWF0dXJlIGlzIGNvbmZpZ3VyZWQuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIGBuZXQveGRwL2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQga25vYnMgd2UgaGF2ZSwgd2hpY2ggb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheS4gSSBuZWVkIHRvIGtub3cgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBjb25maWd1cmF0aW9uIHBvc3NpYmlsaXRpZXMsIGVzcGVjaWFsbHkgaW4gYSBidWlsZCBlbnZpcm9ubWVudC4gQXJlIHRoZXJlIGFueSB0cmlja3kgYnVpbGQgZmxhZ3Mgb3IgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgYml0ZSBtZSBsYXRlcj8gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRocm91Z2ggS2NvbmZpZyBpcyB0aGUgZXNzZW50aWFsIGZpcnN0IHN0ZXAgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfcXVldWUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC94ZHAvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICYjNDM7PSB4c2subyB4ZHBfdW1lbS5vIHhza19xdWV1ZS5vIHhza21hcC5vXG5uZXQveGRwL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX1hEUF9TT0NLRVRTKSAmIzQzOz0geHNrX2J1ZmZfcG9vbC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhEUF9TT0NLRVRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQveGRwL0tjb25maWc6Mjpjb25maWcgWERQX1NPQ0tFVFNcbm5ldC94ZHAvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtYRFAgc29ja2V0c1wmIzM0O1xuLS1cbm5ldC94ZHAvS2NvbmZpZy05LVxubmV0L3hkcC9LY29uZmlnOjEwOmNvbmZpZyBYRFBfU09DS0VUU19ESUFHXG5uZXQveGRwL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDM0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlhEUF9TT0NLRVRTIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYFhEUF9TT0NLRVRTYC4gVGhhdCYjMzk7cyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gSSYjMzk7bSB3b3JraW5nIHdpdGguIFRoZSBmaXJzdCB0aGluZyBJIGFsd2F5cyBkbyB3aXRoIHRoZXNlIGlzIGNoZWNrIGZvciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3RoZXIgb3B0aW9ucywgZmVhdHVyZXMsIG9yIGtlcm5lbCBtb2R1bGVzIGl0IHJlbGllcyBvbi4gSSBkb24mIzM5O3Qgd2FudCB0byBlbmFibGUgc29tZXRoaW5nIHdpdGhvdXQga25vd2luZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgcHJlLXJlcXVpc2l0ZXMgdGFrZW4gY2FyZSBvZi4gTGV0IG1lIGRpdmUgaW4gYW5kIHNlZSBpZiB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGVuYWJsZSwgb3IgaWYgaXQgcmVxdWlyZXMgc29tZXRoaW5nIGVsc2UgdG8gYmUgZW5hYmxlZCBmaXJzdC4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC94ZHAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBYRFBfU09DS0VUU1xuICAgMzpcdFx0Ym9vbCBcJiMzNDtYRFAgc29ja2V0c1wmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuICAgNTpcdFx0ZGVmYXVsdCBuXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIFhEUCBzb2NrZXRzIGFsbG93cyBhIGNoYW5uZWwgYmV0d2VlbiBYRFAgcHJvZ3JhbXMgYW5kXG4gICA4Olx0XHQgIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMuXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIFhEUF9TT0NLRVRTX0RJQUdcbiAgMTE6XHRcdHRyaXN0YXRlIFwmIzM0O1hEUCBzb2NrZXRzOiBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuICAxMjpcdFx0ZGVwZW5kcyBvbiBYRFBfU09DS0VUU1xuICAxMzpcdFx0ZGVmYXVsdCBuXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFN1cHBvcnQgZm9yIFBGX1hEUCBzb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdGhlIHNzIHRvb2wuXG4gIDE2Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NDAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkZvY3VzaW5nIEZ1enppbmcgRWZmb3J0cyBpbiB0aGUgWERQL1hTSyBTdWJzeXN0ZW0qKgoKQWxyaWdodCwgc28gdGhlIGZ1enppbmcgYXBwcm9hY2ggSSB0YWtlIGhlcmUgZGVwZW5kcyBoZWF2aWx5IG9uIHVuZGVyc3RhbmRpbmcgaG93IGBCUEZfU1lTQ0FMTGAgaXMgdXRpbGl6ZWQgd2l0aGluIHRoZSBYRFAvWFNLIGZyYW1ld29yay4gVGhhdCYjMzk7cyB0aGUgcHJpbWFyeSBwb2ludCBvZiBpbmdyZXNzLiBXZSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGVudHJ5IHBvaW50cy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgbW9zdCBwcm9taXNpbmcgZnVuY3Rpb25zIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgY29udGV4dCwgYXBwZWFyIHRvIGJlIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGUgYEJQRl9TWVNDQUxMYCBlbnRyeS4gSW4gdGhpcyBjYXNlLCBgeHNrcV9jcmVhdGVgIHN0YW5kcyBvdXQuIEl0JiMzOTtzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGB4c2tfaW5pdF9xdWV1ZWAgd2l0aGluIGBuZXQveGRwL3hzay5jYC4gVGhlcmVmb3JlLCB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGhpZ2ggb24gdGhlIHByaW9yaXR5IGxpc3QuIFRoZXkgYXJlIHdoZXJlIHdlIGNhbiBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgY3JhZnRlZCBpbnB1dHMgdG8gcHJvYmUgZm9yIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIHNvY2tldCBjcmVhdGlvbiB3aXRoaW4gdGhlIFhEUC9YU0sgc3Vic3lzdGVtLiBXZSBzaG91bGQgdGhvcm91Z2hseSBleGFtaW5lIGl0cyBpbnB1dCB2YWxpZGF0aW9uIGFuZCByZXNvdXJjZSBhbGxvY2F0aW9uL2RlYWxsb2NhdGlvbiwgYXMgdGhpcyBpcyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgbG9naWMgcmVzaWRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2luaXRfcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGRwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTE0MTY9c3RhdGljIF9fcG9sbF90IHhza19wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuLS1cbm5ldC94ZHAveHNrLmMtMTQ0OC1cbm5ldC94ZHAveHNrLmM6MTQ0OTpzdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgeHNrX3F1ZXVlICoqcXVldWUsXG5uZXQveGRwL3hzay5jLTE0NTAtXHRcdFx0ICBib29sIHVtZW1fcXVldWUpXG4tLVxubmV0L3hkcC94c2suYz0xNzg1PXN0YXRpYyBpbnQgeHNrX3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQveGRwL3hzay5jLTE4MTItXHRcdHEgPSAob3B0bmFtZSA9PSBYRFBfVFhfUklORykgPyBcdTAwMjZ4cy1cdTAwM2V0eCA6IFx1MDAyNnhzLVx1MDAzZXJ4O1xubmV0L3hkcC94c2suYzoxODEzOlx0XHRlcnIgPSB4c2tfaW5pdF9xdWV1ZShlbnRyaWVzLCBxLCBmYWxzZSk7XG5uZXQveGRwL3hzay5jLTE4MTQtXHRcdGlmICghZXJyIFx1MDAyNlx1MDAyNiBvcHRuYW1lID09IFhEUF9UWF9SSU5HKVxuLS1cbm5ldC94ZHAveHNrLmMtMTg4MS1cdFx0XHRcdTAwMjZ4cy1cdTAwM2VjcV90bXA7XG5uZXQveGRwL3hzay5jOjE4ODI6XHRcdGVyciA9IHhza19pbml0X3F1ZXVlKGVudHJpZXMsIHEsIHRydWUpO1xubmV0L3hkcC94c2suYy0xODgzLVx0XHRtdXRleF91bmxvY2soXHUwMDI2eHMtXHUwMDNlbXV0ZXgpO1xuLS1cbm5ldC94ZHAveHNrLmM9MjA1Nj1zdGF0aWMgaW50IHhza19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuLS1cbm5ldC94ZHAveHNrLmMtMjA4NS1cbm5ldC94ZHAveHNrLmM6MjA4NjpcdC8qIE1hdGNoZXMgdGhlIHNtcF93bWIoKSBpbiB4c2tfaW5pdF9xdWV1ZSAqL1xubmV0L3hkcC94c2suYy0yMDg3LVx0c21wX3JtYigpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjI1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQ29uc2lkZXJpbmcgWERQIFNvY2tldCBPcHRpbWl6YXRpb24qKgoKUmlnaHQsIHRoaW5raW5nIGFib3V0IG9wdGltaXppbmcgdGhlIFhEUCBzb2NrZXQgc2V0dXAuLi4gYHhza19zZXRzb2Nrb3B0YCBzZWVtcyBsaWtlIGEgc3Ryb25nIGNvbnRlbmRlciBhcyBhIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgd2F5IHRvIGNvbmZpZ3VyZSBzb2NrZXQgb3B0aW9ucywgd2hpY2ggbGlrZWx5IGltcGFjdHMgcGVyZm9ybWFuY2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gaXRzIHVzYWdlIGFuZCBpbnRlcm5hbCB3b3JraW5ncyB0byBiZSBzdXJlLCBidXQgaXQgZmVlbHMgbGlrZSBhIGdvb2QgaW5pdGlhbCBhcmVhIHRvIGludmVzdGlnYXRlIGZvciBwb3RlbnRpYWwgaW1wcm92ZW1lbnRzLgoKTGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zIHRob3VnaDsgSSBzaG91bGQgYWxzbyBicm9hZGVuIHRoZSBzZWFyY2ggYW5kIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGUgWERQIHNvY2tldCBsaWZlY3ljbGUgdGhhdCBtaWdodCBiZSBlcXVhbGx5IG9yIGV2ZW4gbW9yZSBjcml0aWNhbC4gVGhlcmUgY291bGQgYmUgc29tZSBvdGhlciBoaWRkZW4gZ2VtcyBmb3IgcGVyZm9ybWFuY2UgdHVuaW5nLgoKQWxzbywgSSYjMzk7bSBub3RpbmcgdGhhdCBgeHNrcV9kZXN0cm95YCBpcyBjYWxsZWQgZnJvbSBgeHNrX2Rlc3RydWN0YCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LiBUaGF0JiMzOTtzIGdvb2QgdG8ga2VlcCBpbiBtaW5kLCBiZWNhdXNlIHdoYXRldmVyIG9wdGltaXphdGlvbnMgSSBtYWtlIGluIGB4c2txX2Rlc3Ryb3lgLCBJIHNob3VsZCBhbHNvIGNoZWNrIGl0cyBjb250ZXh0LCBpbiBwYXJ0aWN1bGFyIGB4c2tfZGVzdHJ1Y3RgIHRvIHNlZSB0aGUgY29tcGxldGUgdmlldyBhbmQgaG93IHRoZSBvcGVyYXRpb25zIGFyZSByZWxhdGVkIHRvIGVhY2ggb3RoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza3FfZGVzdHJveSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmM9MTUyNz1zdGF0aWMgaW50IHhza19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG4tLVxubmV0L3hkcC94c2suYy0xNTUxLVxubmV0L3hkcC94c2suYzoxNTUyOlx0eHNrcV9kZXN0cm95KHhzLVx1MDAzZXJ4KTtcbm5ldC94ZHAveHNrLmM6MTU1MzpcdHhza3FfZGVzdHJveSh4cy1cdTAwM2V0eCk7XG5uZXQveGRwL3hzay5jOjE1NTQ6XHR4c2txX2Rlc3Ryb3koeHMtXHUwMDNlZnFfdG1wKTtcbm5ldC94ZHAveHNrLmM6MTU1NTpcdHhza3FfZGVzdHJveSh4cy1cdTAwM2VjcV90bXApO1xubmV0L3hkcC94c2suYy0xNTU2LVxuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTMwNT1zdGF0aWMgdm9pZCB4cF9yZWxlYXNlX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy0zMTQtXHRpZiAocG9vbC1cdTAwM2VmcSkge1xubmV0L3hkcC94c2tfYnVmZl9wb29sLmM6MzE1Olx0XHR4c2txX2Rlc3Ryb3kocG9vbC1cdTAwM2VmcSk7XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy0zMTYtXHRcdHBvb2wtXHUwMDNlZnEgPSBOVUxMO1xuLS1cbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTMxOS1cdGlmIChwb29sLVx1MDAzZWNxKSB7XG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzozMjA6XHRcdHhza3FfZGVzdHJveShwb29sLVx1MDAzZWNxKTtcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTMyMS1cdFx0cG9vbC1cdTAwM2VjcSA9IE5VTEw7XG4tLVxubmV0L3hkcC94c2tfcXVldWUuYz0yND1zdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSlcbi0tXG5uZXQveGRwL3hza19xdWV1ZS5jLTY1LVxubmV0L3hkcC94c2tfcXVldWUuYzo2Njp2b2lkIHhza3FfZGVzdHJveShzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxubmV0L3hkcC94c2tfcXVldWUuYy02Ny17XG4tLVxubmV0L3hkcC94c2tfcXVldWUuaD01MzY9c3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpO1xubmV0L3hkcC94c2tfcXVldWUuaDo1Mzc6dm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XG5uZXQveGRwL3hza19xdWV1ZS5oLTUzOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgwNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFhEUCBTb2NrZXQgTWVtb3J5IEFjY291bnRpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYHhza3FfY3JlYXRlYCBhbmQgYHhza3FfZGVzdHJveWAgd2l0aGluIGBuZXQveGRwL3hza19xdWV1ZS5jYC4gSXQmIzM5O3MgYWxsIGFib3V0IG1lbW9yeSBhY2NvdW50aW5nIGZvciBYRFAgc29ja2V0cywgc3BlY2lmaWNhbGx5IHRoZSByaW5nIGJ1ZmZlciBhbGxvY2F0aW9uLiBUaGV5JiMzOTt2ZSBhZGRlZCBgbW1fYWNjb3VudF9waW5uZWRfcGFnZXNgIGFuZCBgbW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlc2AgY2FsbHMsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBzZWUgdGhlIHBvdGVudGlhbCBmb3IgaW50ZXJlc3Rpbmcgc2lkZSBlZmZlY3RzIGhlcmUsIGFuZCBteSBmdXp6aW5nIHJhZGFyIGlzIGRlZmluaXRlbHkgdXAuCgpUaGUgY29kZSYjMzk7cyBleHBvc2VkIHZpYSBgeHNrX3NldHNvY2tvcHRgICh0aGluZ3MgbGlrZSBgWERQX1RYX1JJTkdgLCBgWERQX1JYX1JJTkdgKSBhbmQgYHhza19yZWxlYXNlYCwgd2hpY2ggbWVhbnMgSSBjYW4gZGlyZWN0bHkgdGFyZ2V0IHRoZXNlIGZ1bmN0aW9ucy4gVGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyBhcmUgYENPTkZJR19YRFBfU09DS0VUU2AgYW5kIGBDT05GSUdfQlBGX1NZU0NBTExgLCBub3RoaW5nIHRvbyBleG90aWMsIGJ1dCBpbXBvcnRhbnQgdG8gbm90ZS4KCkkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGtleSBzeW1ib2xzIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBgeHNrX3NldHNvY2tvcHRgLCBgeHNrX3JlbGVhc2VgLCBhbmQgb2YgY291cnNlIGB4c2tfbW1hcGAsIHdoaWNoIGlzIHJlbGF0ZWQgdG8gdGhlIHJpbmcgYnVmZmVyLiBIYW5nIG9uLCBsZXQgbWUgY29ubmVjdCB0aGUgZG90c+KApiBgeHNrcV9jcmVhdGVgIGlzIGNhbGxlZCBmcm9tIGB4c2tfaW5pdF9xdWV1ZWAsIHdoaWNoICppdHNlbGYqIGlzIGNhbGxlZCBmcm9tIGB4c2tfc2V0c29ja29wdGAuIFRoYXQgbWVhbnMgYHhza19zZXRzb2Nrb3B0YCBpcyBhIGdyZWF0IGVudHJ5IHBvaW50IHRvIHN0YXJ0IHdpdGgsIHNpbmNlIGl0IHVsdGltYXRlbHkgbGVhZHMgdG8gdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGNoYW5nZXMuIEFuZCBgeHNrX3JlbGVhc2VgIGlzIGFsc28gYSBjbGVhciB0YXJnZXQsIGFzIGl0IHNob3VsZCB0cmlnZ2VyIHRoZSBjbGVhbnVwLgoKQnV0IHdhaXQsIEkgbmVlZCB0byBiZSBjYXJlZnVsLiBgeHNrX3NldHNvY2tvcHRgICppcyogc3RhdGljISBEYW1uLCBzdGF0aWMgZnVuY3Rpb25zIGFyZW7igJl0IGFsd2F5cyB0aGUgYmVzdCBmb2N1cyBpZiBJIHdhbnQgdG8gZXhwbG9yZSBleHRlcm5hbCBBUEkgZW50cnlwb2ludHMuIE9rYXksIEkgbmVlZCB0byBjaGVjayB0aGUgQUZfWERQIHByb3RvY29sIG9wZXJhdGlvbnMgdG8gc2VlIGhvdyB0aGlzIGZpdHMgaW4uIExvb2tzIGxpa2UgSSBtYXkgbmVlZCB0byBkaWcgYSBsaXR0bGUgZGVlcGVyIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19zZXRzb2Nrb3B0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYz0xNzc4PXN0cnVjdCB4ZHBfdW1lbV9yZWdfdjEge1xuLS1cbm5ldC94ZHAveHNrLmMtMTc4NC1cbm5ldC94ZHAveHNrLmM6MTc4NTpzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG5uZXQveGRwL3hzay5jLTE3ODYtXHRcdFx0ICBzb2NrcHRyX3Qgb3B0dmFsLCB1bnNpZ25lZCBpbnQgb3B0bGVuKVxuLS1cbm5ldC94ZHAveHNrLmM9MjEzMj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4c2tfcHJvdG9fb3BzID0ge1xuLS1cbm5ldC94ZHAveHNrLmMtMjE0NC1cdC5zaHV0ZG93blx0PSBzb2NrX25vX3NodXRkb3duLFxubmV0L3hkcC94c2suYzoyMTQ1Olx0LnNldHNvY2tvcHRcdD0geHNrX3NldHNvY2tvcHQsXG5uZXQveGRwL3hzay5jLTIxNDYtXHQuZ2V0c29ja29wdF9pdGVyID0geHNrX2dldHNvY2tvcHQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNjcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTb2NrZXQgT3B0aW9uIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB4c2tfc2V0c29ja29wdGAgZnVuY3Rpb24gYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyB3aXRoIGl0cyBpbXBsZW1lbnRhdGlvbi4gVGhlIGNvZGUgaGFzIGl0IGRlY2xhcmVkIGFzIHN0YXRpYywgYnV0IGl0JiMzOTtzIGFzc2lnbmVkIHRvIGBwcm90b19vcHMuc2V0c29ja29wdGAsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIOKAkyBpcyB0aGVyZSBhIG5vbi1zdGF0aWMgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uPyBUaGUgZG9jdW1lbnRhdGlvbiBzZWVtcyB0byBwdXNoIGZvciB1c2luZyBub24tc3RhdGljIGVudHJ5cG9pbnRzIHdoZXJlIHBvc3NpYmxlLgoKQnV0IHdhaXQsIGhvbGQgb24uLi4gYHhza19zZXRzb2Nrb3B0YCBpcyBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb24gZm9yICp0aGlzKiBmZWF0dXJlLCBzbyBpdCBtYWtlcyBzZW5zZSB0byBmb2N1cyBvbiBpdC4gVGhlbiB0aGUgaW5zdHJ1Y3Rpb25zIGNvbWUgdG8gbWluZDsgJiMzNDtQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMmIzM0Oy4KClJpZ2h0LCBJJiMzOTttIHJlbWVtYmVyaW5nIHRoaXMgY29ycmVjdGx5IG5vdy4gQmVjYXVzZSBgeHNrX3NldHNvY2tvcHRgIGlzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHdpdGhpbiBgcHJvdG9fb3BzYCwgdGhlIGNvbXBpbGVyICp3b24mIzM5O3QqIGlubGluZSBpdC4gSXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyBldmVuIHRob3VnaCBpdCYjMzk7cyBkZWNsYXJlZCBzdGF0aWMuIFNvLCBldmVuIHRob3VnaCB0aGUgY29kaW5nIGd1aWRlbGluZXMgYXJlIGFnYWluc3QgdXNpbmcgYSBzdGF0aWMgZnVuY3Rpb24gZm9yIHRoZSBBUEksIGB4c2tfc2V0c29ja29wdGAgaXMgc2FmZSB0byB1c2UuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgdGhvdWdoLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhhdCBgeHNrX3JlbGVhc2VgIGlzIGFsc28gaW4gdGhlIGBwcm90b19vcHNgLiBUaGF0IHdvdWxkIGNvbmZpcm0gbXkgcmVhc29uaW5nIGZvciB0aGlzIGZlYXR1cmUsIG9yIGhlbHAgbWUgdW5kZXJzdGFuZCBpZiBhbm90aGVyIGZ1bmN0aW9uIHdpbGwgYmV0dGVyIGFsaWduIHdpdGggdGhlIGd1aWRlbGluZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19yZWxlYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYz0xNTAxPXN0YXRpYyB2b2lkIHhza19kZWxldGVfZnJvbV9tYXBzKHN0cnVjdCB4ZHBfc29jayAqeHMpXG4tLVxubmV0L3hkcC94c2suYy0xNTI2LVxubmV0L3hkcC94c2suYzoxNTI3OnN0YXRpYyBpbnQgeHNrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbm5ldC94ZHAveHNrLmMtMTUyOC17XG4tLVxubmV0L3hkcC94c2suYz0yMTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHhza19wcm90b19vcHMgPSB7XG4tLVxubmV0L3hkcC94c2suYy0yMTM0LVx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG5uZXQveGRwL3hzay5jOjIxMzU6XHQucmVsZWFzZVx0PSB4c2tfcmVsZWFzZSxcbm5ldC94ZHAveHNrLmMtMjEzNi1cdC5iaW5kXHRcdD0geHNrX2JpbmQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5MDAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUaGlua2luZyBvbiBYRFAgU29ja2V0cyBhbmQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRvdWJsZS1jaGVja2luZyB0aGlzIGB4c2tfcmVsZWFzZWAgZnVuY3Rpb247IHllcCwgdGhhdCYjMzk7cyBhbHNvIHJlc2lkaW5nIHdpdGhpbiB0aGUgYHByb3RvX29wc2Agc3RydWN0dXJlLiBOb3csIEkgc2hvdWxkIGludmVzdGlnYXRlIGB4c2tfaW5pdF9xdWV1ZWAg4oCTIGlzIGl0IHBvdGVudGlhbGx5IGJlaW5nIGlubGluZWQ/IEl0JiMzOTtzIHBvc3NpYmxlLCBidXQgSSBrbm93IGZvciBzdXJlIHRoYXQgYHhza19zZXRzb2Nrb3B0YCBpc24mIzM5O3QuIEdpdmVuIHRoYXQsIEkgd2lsbCBkZWZpbml0ZWx5IGJlIGluY2x1ZGluZyBgeHNrX3NldHNvY2tvcHRgIGFuZCBgeHNrX3JlbGVhc2VgIGluIG15IGFuYWx5c2lzLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBJJiMzOTttIHdvcmtpbmcgd2l0aCBhcmUgYFhEUF9TT0NLRVRTYCBhbmQgYEJQRl9TWVNDQUxMYC4gTm93LCBhIHF1aWNrIHJldmlldywgSSYjMzk7bSBhbHJlYWR5IGF3YXJlIHRoYXQgYFhEUF9TT0NLRVRTYCBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAuIEkmIzM5O2xsIGhhdmUgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhhdCYjMzk7cyB0aGUgb25seSBkZXBlbmRlbmN5LCB0aG91Z2guIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIFhEUF9TT0NLRVRTXG4gICAzOlx0XHRib29sIFwmIzM0O1hEUCBzb2NrZXRzXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG4gICA1Olx0XHRkZWZhdWx0IG5cbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgWERQIHNvY2tldHMgYWxsb3dzIGEgY2hhbm5lbCBiZXR3ZWVuIFhEUCBwcm9ncmFtcyBhbmRcbiAgIDg6XHRcdCAgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucy5cbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgWERQX1NPQ0tFVFNfRElBR1xuICAxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7WERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4gIDEyOlx0XHRkZXBlbmRzIG9uIFhEUF9TT0NLRVRTXG4gIDEzOlx0XHRkZWZhdWx0IG5cbiAgMTQ6XHRcdGhlbHBcbiAgMTU6XHRcdCAgU3VwcG9ydCBmb3IgUEZfWERQIHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0aGUgc3MgdG9vbC5cbiAgMTY6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ4MAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYEJQRl9TWVNDQUxMYCBEZXBlbmRlbmNpZXMqKgoKSG1tLCBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGxhbmRzY2FwZSBoZXJlLCBhbmQgSSYjMzk7bSB3b25kZXJpbmcgaWYgYEJQRl9TWVNDQUxMYCBoYXMgYW55IHNuZWFreSBkZXBlbmRlbmNpZXMgSSYjMzk7bSBub3QgaW1tZWRpYXRlbHkgYXdhcmUgb2YuIEl04oCZcyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSB3aGVuIGl0IGNvbWVzIHRvIGtlcm5lbCBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgaW5kaXJlY3QgaW1wbGljYXRpb25zIGZvciBteSBzcGVjaWZpYyB1c2UgY2FzZS4gVGhlIEtjb25maWcgZmlsZXMgYXJlIG15IHVzdWFsIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3MgZGlnIGludG8gYGluaXQvS2NvbmZpZ2AsIG9yIHdoZXJldmVyIHRoZSBkYXJuIHRoaW5nIGlzICphY3R1YWxseSogZGVmaW5lZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBkb3duIHRoZSBleGFjdCBkZWZpbml0aW9uIGFuZCB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IHRvIHNlZSBpZiBhbnl0aGluZyBlbHNlIGhpbmdlcyBvbiBpdC4gVGltZSB0byBkaXZlIGludG8gdGhlIGxvdy1sZXZlbCBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwNTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgwMQoJCQkJCQkJb3V0cHV0OiAxNTQKCQkJCQkJCXRob3VnaHRzOiA0ODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFhEUCBTb2NrZXQgTWVtb3J5IEFjY291bnRpbmcgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgbWVtb3J5IGFjY291bnRpbmcgZm9yIFhEUCBzb2NrZXRzLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQveGRwL3hza19xdWV1ZS5jYC4gSXQmIzM5O3MgdXNpbmcgYG1tX2FjY291bnRfcGlubmVkX3BhZ2VzYCBhbmQgYG1tX3VuYWNjb3VudF9waW5uZWRfcGFnZXNgIGR1cmluZyB0aGUgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIG9mIFhTSyBxdWV1ZSBvYmplY3RzIChgeHNrcV9jcmVhdGVgIGFuZCBgeHNrcV9kZXN0cm95YCkuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCByZWxhdGVkIHRvIEFGX1hEUCBzb2NrZXRzLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIFRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBhcmUgYFhEUF9TT0NLRVRTYCwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAsIGNvbmZpcm1pbmcgbXkgc3VzcGljaW9uIGFib3V0IEFGX1hEUC4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBieSBgeHNrX2luaXRfcXVldWVgLCBhbmQgdWx0aW1hdGVseSwgdGhhdCBnZXRzIHRyaWdnZXJlZCBieSBgc2V0c29ja29wdGAgY2FsbHMgb24gdGhlIHNvY2tldCAoc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gcmluZ3MgbGlrZSBgWERQX1RYX1JJTkdgLCBgWERQX1JYX1JJTkdgLCBldGMuKS4gU2ltaWxhcmx5LCBgeHNrcV9kZXN0cm95YCBpcyBjYWxsZWQgYnkgYHhza19yZWxlYXNlYCBhbmQgYHhwX3JlbGVhc2VfZGVmZXJyZWRgLiBUaGlzIGRpcmVjdGx5IGV4cG9zZXMgdGhpcyBjb2RlIHRvIHVzZXJzcGFjZSB2aWEgYHNldHNvY2tvcHRgIG9uIGFuIEFGX1hEUCBzb2NrZXQsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgcmVhY2hhYmxlIHBhdGguCgpTaW5jZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgbWVtb3J5IGFjY291bnRpbmcsIGl0ICpkb2VzKiBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIHRoZSBzeXN0ZW0gbm93IGhhcyB0aGUgcG90ZW50aWFsIHRvIGZhaWwgaWYgbWVtb3J5IGxpbWl0cyBhcmUgZXhjZWVkZWQsIHdoaWNoIGlzIGEgbmV3IGVycm9yIGNvbmRpdGlvbiB0byBjb25zaWRlci4gSXQgYWxzbyBlbnN1cmVzIG1lbW9yeSBpcyBjb3JyZWN0bHkgYWNjb3VudGVkIGZvciwgcHJldmVudGluZyBwb3RlbnRpYWwgbGVha3Mgb3IgbWlzdXNlLgoKR2l2ZW4gdGhpcywgSSB0aGluayBmdXp6aW5nIHRoZSBlbnRyeSBwb2ludHMgd291bGQgYmUgcHJ1ZGVudC4gSSYjMzk7ZCBpbml0aWFsbHkgZm9jdXMgb24gYHhza19zZXRzb2Nrb3B0YCBhbmQgYHhza19yZWxlYXNlYCwgYnV0IGFsc28sIHNpbmNlIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgIGFyZSAqbm90KiBzdGF0aWMsIHRoZXNlIGFyZSBnb29kIHRhcmdldHMgYXMgd2VsbC4gVGhlIHByaW1hcnkgY29uZmlncyBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBhcmUgYFhEUF9TT0NLRVRTYCBhbmQgYEJQRl9TWVNDQUxMYC4KCkxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgdGhpbmsgd2UgaGF2ZSBhIHNvbGlkIHBsYW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDA1OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza3FfY3JlYXRlJiMzNDssCiAgICAmIzM0O3hza3FfZGVzdHJveSYjMzQ7LAogICAgJiMzNDt4c2tfc2V0c29ja29wdCYjMzQ7LAogICAgJiMzNDt4c2tfcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIG1lbW9yeSBhY2NvdW50aW5nIGZvciBwaW5uZWQgcGFnZXMgaW4gWERQIHNvY2tldCBxdWV1ZXMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQgb24gQUZfWERQIHNvY2tldHMgKGUuZy4sIHdoZW4gc2V0dGluZyB1cCBYRFBfVFhfUklORywgWERQX1JYX1JJTkcsIGV0Yy4pIGFuZCB1cG9uIHNvY2tldCByZWxlYXNlLiBJdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcyBxdWV1ZSBjcmVhdGlvbiBjYW4gbm93IGZhaWwgaWYgbWVtb3J5IGxpbWl0cyBhcmUgZXhjZWVkZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrcV9jcmVhdGUmIzM0OywKICAgICYjMzQ7eHNrcV9kZXN0cm95JiMzNDssCiAgICAmIzM0O3hza19zZXRzb2Nrb3B0JiMzNDssCiAgICAmIzM0O3hza19yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgbWVtb3J5IGFjY291bnRpbmcgZm9yIHBpbm5lZCBwYWdlcyBpbiBYRFAgc29ja2V0IHF1ZXVlcy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc2V0c29ja29wdCBvbiBBRl9YRFAgc29ja2V0cyAoZS5nLiwgd2hlbiBzZXR0aW5nIHVwIFhEUF9UWF9SSU5HLCBYRFBfUlhfUklORywgZXRjLikgYW5kIHVwb24gc29ja2V0IHJlbGVhc2UuIEl0IGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIGFzIHF1ZXVlIGNyZWF0aW9uIGNhbiBub3cgZmFpbCBpZiBtZW1vcnkgbGltaXRzIGFyZSBleGNlZWRlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjEwLjE4NzU1MjYzNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NjQxNzA4OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhEUF9TT0NLRVRTXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhza3FfY3JlYXRlXCIsXG4gICAgXCJ4c2txX2Rlc3Ryb3lcIixcbiAgICBcInhza19zZXRzb2Nrb3B0XCIsXG4gICAgXCJ4c2tfcmVsZWFzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgbWVtb3J5IGFjY291bnRpbmcgZm9yIHBpbm5lZCBwYWdlcyBpbiBYRFAgc29ja2V0IHF1ZXVlcy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc2V0c29ja29wdCBvbiBBRl9YRFAgc29ja2V0cyAoZS5nLiwgd2hlbiBzZXR0aW5nIHVwIFhEUF9UWF9SSU5HLCBYRFBfUlhfUklORywgZXRjLikgYW5kIHVwb24gc29ja2V0IHJlbGVhc2UuIEl0IGludHJvZHVjZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIGFzIHF1ZXVlIGNyZWF0aW9uIGNhbiBub3cgZmFpbCBpZiBtZW1vcnkgbGltaXRzIGFyZSBleGNlZWRlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6MzA6MTAuMTg3NTgwNzE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTQxNzg3MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmNDZlNDAwOTE4NjFjYmFlYTY4NWRkNGRlODRiYTUzMzFmYjVlOTcyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMDU6MzA6MDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2tfcXVldWUuYyBiL25ldC94ZHAveHNrX3F1ZXVlLmNcXG5pbmRleCA0ZGQwMWI3ZDg1OGViLi44YmUyNTEwOTYyNzc5IDEwMDY0NFxcbi0tLSBhL25ldC94ZHAveHNrX3F1ZXVlLmNcXG4rKysgYi9uZXQveGRwL3hza19xdWV1ZS5jXFxuQEAgLTI1LDYgKzI1LDcgQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXFxuIHtcXG4gXFx0c3RydWN0IHhza19xdWV1ZSAqcTtcXG4gXFx0c2l6ZV90IHNpemU7XFxuK1xcdGludCBlcnI7XFxuIFxcbiBcXHRxID0ga3phbGxvY19vYmooKnEpO1xcbiBcXHRpZiAoIXEpXFxuQEAgLTQ1LDkgKzQ2LDE1IEBAIHN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxcbiBcXHR9XFxuIFxcbiBcXHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcXG4rXFx0ZXJyID0gbW1fYWNjb3VudF9waW5uZWRfcGFnZXMoXFx1MDAyNnEtXFx1MDAzZW1tcCwgc2l6ZSk7XFxuK1xcdGlmIChlcnIpIHtcXG4rXFx0XFx0a2ZyZWUocSk7XFxuK1xcdFxcdHJldHVybiBOVUxMO1xcbitcXHR9XFxuIFxcbiBcXHRxLVxcdTAwM2VyaW5nID0gdm1hbGxvY191c2VyKHNpemUpO1xcbiBcXHRpZiAoIXEtXFx1MDAzZXJpbmcpIHtcXG4rXFx0XFx0bW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlcyhcXHUwMDI2cS1cXHUwMDNlbW1wKTtcXG4gXFx0XFx0a2ZyZWUocSk7XFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuQEAgLTYyLDUgKzY5LDYgQEAgdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0dmZyZWUocS1cXHUwMDNlcmluZyk7XFxuK1xcdG1tX3VuYWNjb3VudF9waW5uZWRfcGFnZXMoXFx1MDAyNnEtXFx1MDAzZW1tcCk7XFxuIFxcdGtmcmVlKHEpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmggYi9uZXQveGRwL3hza19xdWV1ZS5oXFxuaW5kZXggMWJjNDJjODkwMmY0Yi4uYjJlOTZjNjVmOTU1YSAxMDA2NDRcXG4tLS0gYS9uZXQveGRwL3hza19xdWV1ZS5oXFxuKysrIGIvbmV0L3hkcC94c2tfcXVldWUuaFxcbkBAIC03LDYgKzcsNyBAQFxcbiAjZGVmaW5lIF9MSU5VWF9YU0tfUVVFVUVfSFxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3R5cGVzLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9za2J1ZmYuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lmX3hkcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbmV0L3hkcF9zb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQveHNrX2J1ZmZfcG9vbC5oXFx1MDAzZVxcbkBAIC00Niw2ICs0Nyw3IEBAIHN0cnVjdCB4c2tfcXVldWUge1xcbiBcXHR1NjQgaW52YWxpZF9kZXNjcztcXG4gXFx0dTY0IHF1ZXVlX2VtcHR5X2Rlc2NzO1xcbiBcXHRzaXplX3QgcmluZ192bWFsbG9jX3NpemU7XFxuK1xcdHN0cnVjdCBtbXBpbiBtbXA7XFxuIFxcdC8qIE11dHVhbCBleGNsdXNpb24gb2YgdGhlIGNvbXBsZXRpb24gcmluZyBpbiB0aGUgU0tCIG1vZGUuXFxuIFxcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxcbiBcXHQgKiBhbmQgcXVldWUgaWQgaXMgc2hhcmVkLlxcbkBAIC01MzIsNiArNTM0LDYgQEAgc3RhdGljIGlubGluZSB1NjQgeHNrcV9uYl9xdWV1ZV9lbXB0eV9kZXNjcyhzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxcbiB9XFxuIFxcbiBzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSk7XFxuLXZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnFfb3BzKTtcXG4rdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XFxuIFxcbiAjZW5kaWYgLyogX0xJTlVYX1hTS19RVUVVRV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjEwLjUwMjM5MzA5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTQzMjY4NTk4MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieHNrcV9jcmVhdGVcIixcbiAgICBcInhza3FfZGVzdHJveVwiLFxuICAgIFwieHNrX3NldHNvY2tvcHRcIixcbiAgICBcInhza19yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBtZW1vcnkgYWNjb3VudGluZyBmb3IgcGlubmVkIHBhZ2VzIGluIFhEUCBzb2NrZXQgcXVldWVzLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzZXRzb2Nrb3B0IG9uIEFGX1hEUCBzb2NrZXRzIChlLmcuLCB3aGVuIHNldHRpbmcgdXAgWERQX1RYX1JJTkcsIFhEUF9SWF9SSU5HLCBldGMuKSBhbmQgdXBvbiBzb2NrZXQgcmVsZWFzZS4gSXQgaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgYXMgcXVldWUgY3JlYXRpb24gY2FuIG5vdyBmYWlsIGlmIG1lbW9yeSBsaW1pdHMgYXJlIGV4Y2VlZGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmNDZlNDAwOTE4NjFjYmFlYTY4NWRkNGRlODRiYTUzMzFmYjVlOTcyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwNTozMDowOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZHAveHNrX3F1ZXVlLmMgYi9uZXQveGRwL3hza19xdWV1ZS5jXG5pbmRleCA0ZGQwMWI3ZDg1OGViLi44YmUyNTEwOTYyNzc5IDEwMDY0NFxuLS0tIGEvbmV0L3hkcC94c2tfcXVldWUuY1xuKysrIGIvbmV0L3hkcC94c2tfcXVldWUuY1xuQEAgLTI1LDYgKzI1LDcgQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXG4ge1xuIFx0c3RydWN0IHhza19xdWV1ZSAqcTtcbiBcdHNpemVfdCBzaXplO1xuK1x0aW50IGVycjtcbiBcbiBcdHEgPSBremFsbG9jX29iaigqcSk7XG4gXHRpZiAoIXEpXG5AQCAtNDUsOSArNDYsMTUgQEAgc3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXG4gXHR9XG4gXG4gXHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcbitcdGVyciA9IG1tX2FjY291bnRfcGlubmVkX3BhZ2VzKFx1MDAyNnEtXHUwMDNlbW1wLCBzaXplKTtcbitcdGlmIChlcnIpIHtcbitcdFx0a2ZyZWUocSk7XG4rXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuIFxuIFx0cS1cdTAwM2VyaW5nID0gdm1hbGxvY191c2VyKHNpemUpO1xuIFx0aWYgKCFxLVx1MDAzZXJpbmcpIHtcbitcdFx0bW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlcyhcdTAwMjZxLVx1MDAzZW1tcCk7XG4gXHRcdGtmcmVlKHEpO1xuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbkBAIC02Miw1ICs2OSw2IEBAIHZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpXG4gXHRcdHJldHVybjtcbiBcbiBcdHZmcmVlKHEtXHUwMDNlcmluZyk7XG4rXHRtbV91bmFjY291bnRfcGlubmVkX3BhZ2VzKFx1MDAyNnEtXHUwMDNlbW1wKTtcbiBcdGtmcmVlKHEpO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5oIGIvbmV0L3hkcC94c2tfcXVldWUuaFxuaW5kZXggMWJjNDJjODkwMmY0Yi4uYjJlOTZjNjVmOTU1YSAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrX3F1ZXVlLmhcbisrKyBiL25ldC94ZHAveHNrX3F1ZXVlLmhcbkBAIC03LDYgKzcsNyBAQFxuICNkZWZpbmUgX0xJTlVYX1hTS19RVUVVRV9IXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaWZfeGRwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQveGRwX3NvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC94c2tfYnVmZl9wb29sLmhcdTAwM2VcbkBAIC00Niw2ICs0Nyw3IEBAIHN0cnVjdCB4c2tfcXVldWUge1xuIFx0dTY0IGludmFsaWRfZGVzY3M7XG4gXHR1NjQgcXVldWVfZW1wdHlfZGVzY3M7XG4gXHRzaXplX3QgcmluZ192bWFsbG9jX3NpemU7XG4rXHRzdHJ1Y3QgbW1waW4gbW1wO1xuIFx0LyogTXV0dWFsIGV4Y2x1c2lvbiBvZiB0aGUgY29tcGxldGlvbiByaW5nIGluIHRoZSBTS0IgbW9kZS5cbiBcdCAqIFByb3RlY3Q6IHdoZW4gc29ja2V0cyBzaGFyZSBhIHNpbmdsZSBjcSB3aGVuIHRoZSBzYW1lIG5ldGRldlxuIFx0ICogYW5kIHF1ZXVlIGlkIGlzIHNoYXJlZC5cbkBAIC01MzIsNiArNTM0LDYgQEAgc3RhdGljIGlubGluZSB1NjQgeHNrcV9uYl9xdWV1ZV9lbXB0eV9kZXNjcyhzdHJ1Y3QgeHNrX3F1ZXVlICpxKVxuIH1cbiBcbiBzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSk7XG4tdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcV9vcHMpO1xuK3ZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpO1xuIFxuICNlbmRpZiAvKiBfTElOVVhfWFNLX1FVRVVFX0ggKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjEwLjUwMjM5NDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkwMTE0OTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgWERQIFNvY2tldCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBuZXQveGRwL3hza19xdWV1ZS5jYCBhbmQgYG5ldC94ZHAveHNrX3F1ZXVlLmhgLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGludHJvZHVjaW5nIHNvbWUgcGFnZSBhY2NvdW50aW5nIGZvciBwaW5uZWQgcGFnZXMsIHVzaW5nIGBtbV9hY2NvdW50X3Bpbm5lZF9wYWdlc2AgYW5kIGBtbV91bmFjY291bnRfcGlubmVkX3BhZ2VzYCB3aXRoaW4gdGhlIGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgIGZ1bmN0aW9ucy4gQW5kIHRoZXJlJ3MgYSBuZXcgYHN0cnVjdCBtbXBpbiBtbXBgIG1lbWJlciBiZWluZyBhZGRlZCB0byB0aGUgYHhza19xdWV1ZWAgc3RydWN0LlxuXG5NeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgdGhpcyBpcyBhbGwgcmVsYXRlZCB0byBBRl9YRFAsIHNwZWNpZmljYWxseSBYRFAgc29ja2V0cywgZ2l2ZW4gdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHBhcnQgb2YgdGhhdCBjb2RlIGJhc2UuIEl04oCZcyBmdW5jdGlvbmFsIGNvZGUsIGFuZCB0aGUgZ29hbCBoZXJlIHNlZW1zIHRvIGJlIGltcHJvdmluZyByZXNvdXJjZSBtYW5hZ2VtZW50IHJlbGF0ZWQgdG8gdGhlc2UgcGlubmVkIHBhZ2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGJldHRlci5cblxuVG8gZ2V0IGEgYmV0dGVyIGdyaXAgb24gdGhlIGNvbmZpZ3VyYXRpb25zLCBJJ20gZ29pbmcgdG8gcXVpY2tseSB1c2UgYGdpdCBncmVwYCB3aXRoaW4gdGhlIGBuZXQveGRwL2AgZGlyZWN0b3J5IHRvIGh1bnQgZm9yIHJlZmVyZW5jZXMgdG8gYm90aCBgeHNrcV9jcmVhdGVgIGFuZCB0aGUgZmlsZSBgeHNrX3F1ZXVlLmNgLCBzbyBJIGNhbiB0cmFjZSB3aGVyZSBpdCdzIGFsbCB1c2VkIGFuZCB3aGF0IGJ1aWxkIG9wdGlvbnMgYXJlIGluIHBsYXkuIFRoYXQnbGwgcHJvdmlkZSBtZSB3aXRoIGEgYnJvYWRlciBjb250ZXh0IHRvIHNlZSBob3cgdGhpcyBwYXRjaCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjcxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6MzA6MTQuNzkyNTEyMzYyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwODYzNjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza3FfY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAveHNrLmM9MTQ0OT1zdGF0aWMgaW50IHhza19pbml0X3F1ZXVlKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgeHNrX3F1ZXVlICoqcXVldWUsXFxuLS1cXG5uZXQveGRwL3hzay5jLTE0NTYtXFxubmV0L3hkcC94c2suYzoxNDU3OlxcdHEgPSB4c2txX2NyZWF0ZShlbnRyaWVzLCB1bWVtX3F1ZXVlKTtcXG5uZXQveGRwL3hzay5jLTE0NTgtXFx0aWYgKCFxKVxcbi0tXFxubmV0L3hkcC94c2tfcXVldWUuYz0xND1zdGF0aWMgc2l6ZV90IHhza3FfZ2V0X3Jpbmdfc2l6ZShzdHJ1Y3QgeHNrX3F1ZXVlICpxLCBib29sIHVtZW1fcXVldWUpXFxuLS1cXG5uZXQveGRwL3hza19xdWV1ZS5jLTIzLVxcbm5ldC94ZHAveHNrX3F1ZXVlLmM6MjQ6c3RydWN0IHhza19xdWV1ZSAqeHNrcV9jcmVhdGUodTMyIG5lbnRyaWVzLCBib29sIHVtZW1fcXVldWUpXFxubmV0L3hkcC94c2tfcXVldWUuYy0yNS17XFxuLS1cXG5uZXQveGRwL3hza19xdWV1ZS5oPTUzMT1zdGF0aWMgaW5saW5lIHU2NCB4c2txX25iX3F1ZXVlX2VtcHR5X2Rlc2NzKHN0cnVjdCB4c2tfcXVldWUgKnEpXFxuLS1cXG5uZXQveGRwL3hza19xdWV1ZS5oLTUzNS1cXG5uZXQveGRwL3hza19xdWV1ZS5oOjUzNjpzdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSk7XFxubmV0L3hkcC94c2tfcXVldWUuaC01Mzctdm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjE0LjgzMzM4MTEwMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzkxMTQwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgWERQIExhbmRzY2FwZTogS2NvbmZpZyBGaXJzdCoqXG5cbkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgaW50byBhbnl0aGluZyBkZWVwZXIgd2l0aCBgbmV0L3hkcGAsIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgZ2V0IG15IGJlYXJpbmdzLiBMZXQncyBtYWtlIHN1cmUgd2UgaGF2ZSBhIGNsZWFyIGlkZWEgb2YgaG93IHRoaXMgZmVhdHVyZSBpcyBjb25maWd1cmVkLiBJdCdzIHRpbWUgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIGBuZXQveGRwL2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQga25vYnMgd2UgaGF2ZSwgd2hpY2ggb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgaW4gcGxheS4gSSBuZWVkIHRvIGtub3cgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBjb25maWd1cmF0aW9uIHBvc3NpYmlsaXRpZXMsIGVzcGVjaWFsbHkgaW4gYSBidWlsZCBlbnZpcm9ubWVudC4gQXJlIHRoZXJlIGFueSB0cmlja3kgYnVpbGQgZmxhZ3Mgb3IgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgYml0ZSBtZSBsYXRlcj8gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRocm91Z2ggS2NvbmZpZyBpcyB0aGUgZXNzZW50aWFsIGZpcnN0IHN0ZXAgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU1MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjE4LjExMjQ5NzI0OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjA1MDk2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfcXVldWUub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3hkcC9NYWtlZmlsZToyOm9iai0kKENPTkZJR19YRFBfU09DS0VUUykgKz0geHNrLm8geGRwX3VtZW0ubyB4c2tfcXVldWUubyB4c2ttYXAub1xcbm5ldC94ZHAvTWFrZWZpbGUtMy1vYmotJChDT05GSUdfWERQX1NPQ0tFVFMpICs9IHhza19idWZmX3Bvb2wub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDoxOC4xNTQ1NTE5MzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTUwOTUxNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MzY3NCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6MzA6MjEuMzA1NTA2MDA4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMTgwNjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRFBfU09DS0VUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQveGRwL0tjb25maWc6Mjpjb25maWcgWERQX1NPQ0tFVFNcXG5uZXQveGRwL0tjb25maWctMy1cXHRib29sIFxcXCJYRFAgc29ja2V0c1xcXCJcXG4tLVxcbm5ldC94ZHAvS2NvbmZpZy05LVxcbm5ldC94ZHAvS2NvbmZpZzoxMDpjb25maWcgWERQX1NPQ0tFVFNfRElBR1xcbm5ldC94ZHAvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiWERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDoyMS4zNDc2OTIwNzdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDk1Njk4NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqWERQX1NPQ0tFVFMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IENoZWNrKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFhEUF9TT0NLRVRTYC4gVGhhdCdzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBJJ20gd29ya2luZyB3aXRoLiBUaGUgZmlyc3QgdGhpbmcgSSBhbHdheXMgZG8gd2l0aCB0aGVzZSBpcyBjaGVjayBmb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG9wdGlvbnMsIGZlYXR1cmVzLCBvciBrZXJuZWwgbW9kdWxlcyBpdCByZWxpZXMgb24uIEkgZG9uJ3Qgd2FudCB0byBlbmFibGUgc29tZXRoaW5nIHdpdGhvdXQga25vd2luZyB0aGUgZnVsbCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgcHJlLXJlcXVpc2l0ZXMgdGFrZW4gY2FyZSBvZi4gTGV0IG1lIGRpdmUgaW4gYW5kIHNlZSBpZiB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGVuYWJsZSwgb3IgaWYgaXQgcmVxdWlyZXMgc29tZXRoaW5nIGVsc2UgdG8gYmUgZW5hYmxlZCBmaXJzdC4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMzQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDoyNC40NDMzOTQ0MzhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3hkcC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgWERQX1NPQ0tFVFNcXG4gICAzOlxcdFxcdGJvb2wgXFxcIlhEUCBzb2NrZXRzXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxcbiAgIDU6XFx0XFx0ZGVmYXVsdCBuXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIFhEUCBzb2NrZXRzIGFsbG93cyBhIGNoYW5uZWwgYmV0d2VlbiBYRFAgcHJvZ3JhbXMgYW5kXFxuICAgODpcXHRcXHQgIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMuXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBYRFBfU09DS0VUU19ESUFHXFxuICAxMTpcXHRcXHR0cmlzdGF0ZSBcXFwiWERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbiAgMTI6XFx0XFx0ZGVwZW5kcyBvbiBYRFBfU09DS0VUU1xcbiAgMTM6XFx0XFx0ZGVmYXVsdCBuXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFN1cHBvcnQgZm9yIFBGX1hEUCBzb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlIHVzZWQgYnkgdGhlIHNzIHRvb2wuXFxuICAxNjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjI0LjQ0MzQ5MTY1OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE3MjY5MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkZvY3VzaW5nIEZ1enppbmcgRWZmb3J0cyBpbiB0aGUgWERQL1hTSyBTdWJzeXN0ZW0qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZnV6emluZyBhcHByb2FjaCBJIHRha2UgaGVyZSBkZXBlbmRzIGhlYXZpbHkgb24gdW5kZXJzdGFuZGluZyBob3cgYEJQRl9TWVNDQUxMYCBpcyB1dGlsaXplZCB3aXRoaW4gdGhlIFhEUC9YU0sgZnJhbWV3b3JrLiBUaGF0J3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgaW5ncmVzcy4gV2UgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBlbnRyeSBwb2ludHMuIExldCdzIHNlZS4uLiB0aGUgbW9zdCBwcm9taXNpbmcgZnVuY3Rpb25zIGZvciBmdXp6aW5nLCBnaXZlbiB0aGUgY29udGV4dCwgYXBwZWFyIHRvIGJlIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSB0aGUgYEJQRl9TWVNDQUxMYCBlbnRyeS4gSW4gdGhpcyBjYXNlLCBgeHNrcV9jcmVhdGVgIHN0YW5kcyBvdXQuIEl0J3MgY2FsbGVkIGRpcmVjdGx5IGZyb20gYHhza19pbml0X3F1ZXVlYCB3aXRoaW4gYG5ldC94ZHAveHNrLmNgLiBUaGVyZWZvcmUsIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgaGlnaCBvbiB0aGUgcHJpb3JpdHkgbGlzdC4gVGhleSBhcmUgd2hlcmUgd2UgY2FuIHBvdGVudGlhbGx5IGludHJvZHVjZSBjcmFmdGVkIGlucHV0cyB0byBwcm9iZSBmb3IgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gc29ja2V0IGNyZWF0aW9uIHdpdGhpbiB0aGUgWERQL1hTSyBzdWJzeXN0ZW0uIFdlIHNob3VsZCB0aG9yb3VnaGx5IGV4YW1pbmUgaXRzIGlucHV0IHZhbGlkYXRpb24gYW5kIHJlc291cmNlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uLCBhcyB0aGlzIGlzIHdoZXJlIHRoZSBpbnRlcmVzdGluZyBsb2dpYyByZXNpZGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDQwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDoyNy43NjA3NjQ3NjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMzQzMjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza19pbml0X3F1ZXVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZHAveHNrLmM9MTQxNj1zdGF0aWMgX19wb2xsX3QgeHNrX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuLS1cXG5uZXQveGRwL3hzay5jLTE0NDgtXFxubmV0L3hkcC94c2suYzoxNDQ5OnN0YXRpYyBpbnQgeHNrX2luaXRfcXVldWUodTMyIGVudHJpZXMsIHN0cnVjdCB4c2tfcXVldWUgKipxdWV1ZSxcXG5uZXQveGRwL3hzay5jLTE0NTAtXFx0XFx0XFx0ICBib29sIHVtZW1fcXVldWUpXFxuLS1cXG5uZXQveGRwL3hzay5jPTE3ODU9c3RhdGljIGludCB4c2tfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L3hkcC94c2suYy0xODEyLVxcdFxcdHEgPSAob3B0bmFtZSA9PSBYRFBfVFhfUklORykgPyBcXHUwMDI2eHMtXFx1MDAzZXR4IDogXFx1MDAyNnhzLVxcdTAwM2VyeDtcXG5uZXQveGRwL3hzay5jOjE4MTM6XFx0XFx0ZXJyID0geHNrX2luaXRfcXVldWUoZW50cmllcywgcSwgZmFsc2UpO1xcbm5ldC94ZHAveHNrLmMtMTgxNC1cXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBvcHRuYW1lID09IFhEUF9UWF9SSU5HKVxcbi0tXFxubmV0L3hkcC94c2suYy0xODgxLVxcdFxcdFxcdFxcdTAwMjZ4cy1cXHUwMDNlY3FfdG1wO1xcbm5ldC94ZHAveHNrLmM6MTg4MjpcXHRcXHRlcnIgPSB4c2tfaW5pdF9xdWV1ZShlbnRyaWVzLCBxLCB0cnVlKTtcXG5uZXQveGRwL3hzay5jLTE4ODMtXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ4cy1cXHUwMDNlbXV0ZXgpO1xcbi0tXFxubmV0L3hkcC94c2suYz0yMDU2PXN0YXRpYyBpbnQgeHNrX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuLS1cXG5uZXQveGRwL3hzay5jLTIwODUtXFxubmV0L3hkcC94c2suYzoyMDg2OlxcdC8qIE1hdGNoZXMgdGhlIHNtcF93bWIoKSBpbiB4c2tfaW5pdF9xdWV1ZSAqL1xcbm5ldC94ZHAveHNrLmMtMjA4Ny1cXHRzbXBfcm1iKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjI3LjgwMTExMzMwNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzI0NTg1OTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipDb25zaWRlcmluZyBYRFAgU29ja2V0IE9wdGltaXphdGlvbioqXG5cblJpZ2h0LCB0aGlua2luZyBhYm91dCBvcHRpbWl6aW5nIHRoZSBYRFAgc29ja2V0IHNldHVwLi4uIGB4c2tfc2V0c29ja29wdGAgc2VlbXMgbGlrZSBhIHN0cm9uZyBjb250ZW5kZXIgYXMgYSBmdW5jdGlvbiB0byBmb2N1cyBvbi4gSXQncyB0aGUgc3RhbmRhcmQgd2F5IHRvIGNvbmZpZ3VyZSBzb2NrZXQgb3B0aW9ucywgd2hpY2ggbGlrZWx5IGltcGFjdHMgcGVyZm9ybWFuY2UuIEknbGwgbmVlZCB0byBkaWcgaW50byBpdHMgdXNhZ2UgYW5kIGludGVybmFsIHdvcmtpbmdzIHRvIGJlIHN1cmUsIGJ1dCBpdCBmZWVscyBsaWtlIGEgZ29vZCBpbml0aWFsIGFyZWEgdG8gaW52ZXN0aWdhdGUgZm9yIHBvdGVudGlhbCBpbXByb3ZlbWVudHMuXG5cbkxldCdzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zIHRob3VnaDsgSSBzaG91bGQgYWxzbyBicm9hZGVuIHRoZSBzZWFyY2ggYW5kIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCBpbiB0aGUgWERQIHNvY2tldCBsaWZlY3ljbGUgdGhhdCBtaWdodCBiZSBlcXVhbGx5IG9yIGV2ZW4gbW9yZSBjcml0aWNhbC4gVGhlcmUgY291bGQgYmUgc29tZSBvdGhlciBoaWRkZW4gZ2VtcyBmb3IgcGVyZm9ybWFuY2UgdHVuaW5nLlxuXG5BbHNvLCBJJ20gbm90aW5nIHRoYXQgYHhza3FfZGVzdHJveWAgaXMgY2FsbGVkIGZyb20gYHhza19kZXN0cnVjdGAgb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4gVGhhdCdzIGdvb2QgdG8ga2VlcCBpbiBtaW5kLCBiZWNhdXNlIHdoYXRldmVyIG9wdGltaXphdGlvbnMgSSBtYWtlIGluIGB4c2txX2Rlc3Ryb3lgLCBJIHNob3VsZCBhbHNvIGNoZWNrIGl0cyBjb250ZXh0LCBpbiBwYXJ0aWN1bGFyIGB4c2tfZGVzdHJ1Y3RgIHRvIHNlZSB0aGUgY29tcGxldGUgdmlldyBhbmQgaG93IHRoZSBvcGVyYXRpb25zIGFyZSByZWxhdGVkIHRvIGVhY2ggb3RoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMjUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDozMS4xMjU3MDE1MTFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODQxNzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhza3FfZGVzdHJveVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL3hzay5jPTE1Mjc9c3RhdGljIGludCB4c2tfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbi0tXFxubmV0L3hkcC94c2suYy0xNTUxLVxcbm5ldC94ZHAveHNrLmM6MTU1MjpcXHR4c2txX2Rlc3Ryb3koeHMtXFx1MDAzZXJ4KTtcXG5uZXQveGRwL3hzay5jOjE1NTM6XFx0eHNrcV9kZXN0cm95KHhzLVxcdTAwM2V0eCk7XFxubmV0L3hkcC94c2suYzoxNTU0OlxcdHhza3FfZGVzdHJveSh4cy1cXHUwMDNlZnFfdG1wKTtcXG5uZXQveGRwL3hzay5jOjE1NTU6XFx0eHNrcV9kZXN0cm95KHhzLVxcdTAwM2VjcV90bXApO1xcbm5ldC94ZHAveHNrLmMtMTU1Ni1cXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jPTMwNT1zdGF0aWMgdm9pZCB4cF9yZWxlYXNlX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTMxNC1cXHRpZiAocG9vbC1cXHUwMDNlZnEpIHtcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYzozMTU6XFx0XFx0eHNrcV9kZXN0cm95KHBvb2wtXFx1MDAzZWZxKTtcXG5uZXQveGRwL3hza19idWZmX3Bvb2wuYy0zMTYtXFx0XFx0cG9vbC1cXHUwMDNlZnEgPSBOVUxMO1xcbi0tXFxubmV0L3hkcC94c2tfYnVmZl9wb29sLmMtMzE5LVxcdGlmIChwb29sLVxcdTAwM2VjcSkge1xcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jOjMyMDpcXHRcXHR4c2txX2Rlc3Ryb3kocG9vbC1cXHUwMDNlY3EpO1xcbm5ldC94ZHAveHNrX2J1ZmZfcG9vbC5jLTMyMS1cXHRcXHRwb29sLVxcdTAwM2VjcSA9IE5VTEw7XFxuLS1cXG5uZXQveGRwL3hza19xdWV1ZS5jPTI0PXN0cnVjdCB4c2tfcXVldWUgKnhza3FfY3JlYXRlKHUzMiBuZW50cmllcywgYm9vbCB1bWVtX3F1ZXVlKVxcbi0tXFxubmV0L3hkcC94c2tfcXVldWUuYy02NS1cXG5uZXQveGRwL3hza19xdWV1ZS5jOjY2OnZvaWQgeHNrcV9kZXN0cm95KHN0cnVjdCB4c2tfcXVldWUgKnEpXFxubmV0L3hkcC94c2tfcXVldWUuYy02Ny17XFxuLS1cXG5uZXQveGRwL3hza19xdWV1ZS5oPTUzNj1zdHJ1Y3QgeHNrX3F1ZXVlICp4c2txX2NyZWF0ZSh1MzIgbmVudHJpZXMsIGJvb2wgdW1lbV9xdWV1ZSk7XFxubmV0L3hkcC94c2tfcXVldWUuaDo1Mzc6dm9pZCB4c2txX2Rlc3Ryb3koc3RydWN0IHhza19xdWV1ZSAqcSk7XFxubmV0L3hkcC94c2tfcXVldWUuaC01MzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjMxLjE2ODU0NzUzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4MDQyNjY0NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBYRFAgU29ja2V0IE1lbW9yeSBBY2NvdW50aW5nIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgeHNrcV9jcmVhdGVgIGFuZCBgeHNrcV9kZXN0cm95YCB3aXRoaW4gYG5ldC94ZHAveHNrX3F1ZXVlLmNgLiBJdCdzIGFsbCBhYm91dCBtZW1vcnkgYWNjb3VudGluZyBmb3IgWERQIHNvY2tldHMsIHNwZWNpZmljYWxseSB0aGUgcmluZyBidWZmZXIgYWxsb2NhdGlvbi4gVGhleSd2ZSBhZGRlZCBgbW1fYWNjb3VudF9waW5uZWRfcGFnZXNgIGFuZCBgbW1fdW5hY2NvdW50X3Bpbm5lZF9wYWdlc2AgY2FsbHMsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIG1lbW9yeSBtYW5hZ2VtZW50LiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBzZWUgdGhlIHBvdGVudGlhbCBmb3IgaW50ZXJlc3Rpbmcgc2lkZSBlZmZlY3RzIGhlcmUsIGFuZCBteSBmdXp6aW5nIHJhZGFyIGlzIGRlZmluaXRlbHkgdXAuXG5cblRoZSBjb2RlJ3MgZXhwb3NlZCB2aWEgYHhza19zZXRzb2Nrb3B0YCAodGhpbmdzIGxpa2UgYFhEUF9UWF9SSU5HYCwgYFhEUF9SWF9SSU5HYCkgYW5kIGB4c2tfcmVsZWFzZWAsIHdoaWNoIG1lYW5zIEkgY2FuIGRpcmVjdGx5IHRhcmdldCB0aGVzZSBmdW5jdGlvbnMuIFRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgYXJlIGBDT05GSUdfWERQX1NPQ0tFVFNgIGFuZCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgbm90aGluZyB0b28gZXhvdGljLCBidXQgaW1wb3J0YW50IHRvIG5vdGUuXG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gZm9yIGZ1enppbmcuIGB4c2tfc2V0c29ja29wdGAsIGB4c2tfcmVsZWFzZWAsIGFuZCBvZiBjb3Vyc2UgYHhza19tbWFwYCwgd2hpY2ggaXMgcmVsYXRlZCB0byB0aGUgcmluZyBidWZmZXIuIEhhbmcgb24sIGxldCBtZSBjb25uZWN0IHRoZSBkb3Rz4oCmIGB4c2txX2NyZWF0ZWAgaXMgY2FsbGVkIGZyb20gYHhza19pbml0X3F1ZXVlYCwgd2hpY2ggKml0c2VsZiogaXMgY2FsbGVkIGZyb20gYHhza19zZXRzb2Nrb3B0YC4gVGhhdCBtZWFucyBgeHNrX3NldHNvY2tvcHRgIGlzIGEgZ3JlYXQgZW50cnkgcG9pbnQgdG8gc3RhcnQgd2l0aCwgc2luY2UgaXQgdWx0aW1hdGVseSBsZWFkcyB0byB0aGUgbWVtb3J5IGFsbG9jYXRpb24gY2hhbmdlcy4gQW5kIGB4c2tfcmVsZWFzZWAgaXMgYWxzbyBhIGNsZWFyIHRhcmdldCwgYXMgaXQgc2hvdWxkIHRyaWdnZXIgdGhlIGNsZWFudXAuXG5cbkJ1dCB3YWl0LCBJIG5lZWQgdG8gYmUgY2FyZWZ1bC4gYHhza19zZXRzb2Nrb3B0YCAqaXMqIHN0YXRpYyEgRGFtbiwgc3RhdGljIGZ1bmN0aW9ucyBhcmVu4oCZdCBhbHdheXMgdGhlIGJlc3QgZm9jdXMgaWYgSSB3YW50IHRvIGV4cGxvcmUgZXh0ZXJuYWwgQVBJIGVudHJ5cG9pbnRzLiBPa2F5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEFGX1hEUCBwcm90b2NvbCBvcGVyYXRpb25zIHRvIHNlZSBob3cgdGhpcyBmaXRzIGluLiBMb29rcyBsaWtlIEkgbWF5IG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODA0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjQwLjk3MjgxNjk4NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3NzMxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3NldHNvY2tvcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hkcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz0xNzc4PXN0cnVjdCB4ZHBfdW1lbV9yZWdfdjEge1xcbi0tXFxubmV0L3hkcC94c2suYy0xNzg0LVxcbm5ldC94ZHAveHNrLmM6MTc4NTpzdGF0aWMgaW50IHhza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxubmV0L3hkcC94c2suYy0xNzg2LVxcdFxcdFxcdCAgc29ja3B0cl90IG9wdHZhbCwgdW5zaWduZWQgaW50IG9wdGxlbilcXG4tLVxcbm5ldC94ZHAveHNrLmM9MjEzMj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4c2tfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L3hkcC94c2suYy0yMTQ0LVxcdC5zaHV0ZG93blxcdD0gc29ja19ub19zaHV0ZG93bixcXG5uZXQveGRwL3hzay5jOjIxNDU6XFx0LnNldHNvY2tvcHRcXHQ9IHhza19zZXRzb2Nrb3B0LFxcbm5ldC94ZHAveHNrLmMtMjE0Ni1cXHQuZ2V0c29ja29wdF9pdGVyID0geHNrX2dldHNvY2tvcHQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjQxLjAxMjU5NzMyNFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ1NTU5Nzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU29ja2V0IE9wdGlvbiBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHhza19zZXRzb2Nrb3B0YCBmdW5jdGlvbiBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgYXJlIGFueSBnb3RjaGFzIHdpdGggaXRzIGltcGxlbWVudGF0aW9uLiBUaGUgY29kZSBoYXMgaXQgZGVjbGFyZWQgYXMgc3RhdGljLCBidXQgaXQncyBhc3NpZ25lZCB0byBgcHJvdG9fb3BzLnNldHNvY2tvcHRgLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayDigJMgaXMgdGhlcmUgYSBub24tc3RhdGljIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbj8gVGhlIGRvY3VtZW50YXRpb24gc2VlbXMgdG8gcHVzaCBmb3IgdXNpbmcgbm9uLXN0YXRpYyBlbnRyeXBvaW50cyB3aGVyZSBwb3NzaWJsZS5cblxuQnV0IHdhaXQsIGhvbGQgb24uLi4gYHhza19zZXRzb2Nrb3B0YCBpcyBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb24gZm9yICp0aGlzKiBmZWF0dXJlLCBzbyBpdCBtYWtlcyBzZW5zZSB0byBmb2N1cyBvbiBpdC4gVGhlbiB0aGUgaW5zdHJ1Y3Rpb25zIGNvbWUgdG8gbWluZDsgXCJQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcIi5cblxuUmlnaHQsIEknbSByZW1lbWJlcmluZyB0aGlzIGNvcnJlY3RseSBub3cuIEJlY2F1c2UgYHhza19zZXRzb2Nrb3B0YCBpcyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gYHByb3RvX29wc2AsIHRoZSBjb21waWxlciAqd29uJ3QqIGlubGluZSBpdC4gSXQgKndpbGwqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcyBldmVuIHRob3VnaCBpdCdzIGRlY2xhcmVkIHN0YXRpYy4gU28sIGV2ZW4gdGhvdWdoIHRoZSBjb2RpbmcgZ3VpZGVsaW5lcyBhcmUgYWdhaW5zdCB1c2luZyBhIHN0YXRpYyBmdW5jdGlvbiBmb3IgdGhlIEFQSSwgYHhza19zZXRzb2Nrb3B0YCBpcyBzYWZlIHRvIHVzZS4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCB0aG91Z2gsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoYXQgYHhza19yZWxlYXNlYCBpcyBhbHNvIGluIHRoZSBgcHJvdG9fb3BzYC4gVGhhdCB3b3VsZCBjb25maXJtIG15IHJlYXNvbmluZyBmb3IgdGhpcyBmZWF0dXJlLCBvciBoZWxwIG1lIHVuZGVyc3RhbmQgaWYgYW5vdGhlciBmdW5jdGlvbiB3aWxsIGJldHRlciBhbGlnbiB3aXRoIHRoZSBndWlkZWxpbmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTY3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjQ1Ljc1ODE1OTM0OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE0NTUwODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hkcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz0xNTAxPXN0YXRpYyB2b2lkIHhza19kZWxldGVfZnJvbV9tYXBzKHN0cnVjdCB4ZHBfc29jayAqeHMpXFxuLS1cXG5uZXQveGRwL3hzay5jLTE1MjYtXFxubmV0L3hkcC94c2suYzoxNTI3OnN0YXRpYyBpbnQgeHNrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG5uZXQveGRwL3hzay5jLTE1Mjgte1xcbi0tXFxubmV0L3hkcC94c2suYz0yMTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHhza19wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQveGRwL3hzay5jLTIxMzQtXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG5uZXQveGRwL3hzay5jOjIxMzU6XFx0LnJlbGVhc2VcXHQ9IHhza19yZWxlYXNlLFxcbm5ldC94ZHAveHNrLmMtMjEzNi1cXHQuYmluZFxcdFxcdD0geHNrX2JpbmQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMwOjQ1Ljc5OTYxOTI2N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTE1MDAwNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEN1cnJlbnQgVGhpbmtpbmcgb24gWERQIFNvY2tldHMgYW5kIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZG91YmxlLWNoZWNraW5nIHRoaXMgYHhza19yZWxlYXNlYCBmdW5jdGlvbjsgeWVwLCB0aGF0J3MgYWxzbyByZXNpZGluZyB3aXRoaW4gdGhlIGBwcm90b19vcHNgIHN0cnVjdHVyZS4gTm93LCBJIHNob3VsZCBpbnZlc3RpZ2F0ZSBgeHNrX2luaXRfcXVldWVgIOKAkyBpcyBpdCBwb3RlbnRpYWxseSBiZWluZyBpbmxpbmVkPyBJdCdzIHBvc3NpYmxlLCBidXQgSSBrbm93IGZvciBzdXJlIHRoYXQgYHhza19zZXRzb2Nrb3B0YCBpc24ndC4gR2l2ZW4gdGhhdCwgSSB3aWxsIGRlZmluaXRlbHkgYmUgaW5jbHVkaW5nIGB4c2tfc2V0c29ja29wdGAgYW5kIGB4c2tfcmVsZWFzZWAgaW4gbXkgYW5hbHlzaXMuIExldCdzIHNlZS4uLiB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMgSSdtIHdvcmtpbmcgd2l0aCBhcmUgYFhEUF9TT0NLRVRTYCBhbmQgYEJQRl9TWVNDQUxMYC4gTm93LCBhIHF1aWNrIHJldmlldywgSSdtIGFscmVhZHkgYXdhcmUgdGhhdCBgWERQX1NPQ0tFVFNgIGRlcGVuZHMgb24gYEJQRl9TWVNDQUxMYC4gSSdsbCBoYXZlIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoYXQncyB0aGUgb25seSBkZXBlbmRlbmN5LCB0aG91Z2guIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5MDAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6MzA6NDkuNzE0NjIzMDQ1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC94ZHAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFhEUF9TT0NLRVRTXFxuICAgMzpcXHRcXHRib29sIFxcXCJYRFAgc29ja2V0c1xcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG4gICA1OlxcdFxcdGRlZmF1bHQgblxcbiAgIDY6XFx0XFx0aGVscFxcbiAgIDc6XFx0XFx0ICBYRFAgc29ja2V0cyBhbGxvd3MgYSBjaGFubmVsIGJldHdlZW4gWERQIHByb2dyYW1zIGFuZFxcbiAgIDg6XFx0XFx0ICB1c2Vyc3BhY2UgYXBwbGljYXRpb25zLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgWERQX1NPQ0tFVFNfRElBR1xcbiAgMTE6XFx0XFx0dHJpc3RhdGUgXFxcIlhEUCBzb2NrZXRzOiBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4gIDEyOlxcdFxcdGRlcGVuZHMgb24gWERQX1NPQ0tFVFNcXG4gIDEzOlxcdFxcdGRlZmF1bHQgblxcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBTdXBwb3J0IGZvciBQRl9YRFAgc29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRoZSBzcyB0b29sLlxcbiAgMTY6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDo0OS43MTQ2ODQ4OTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NDgzNTcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBgQlBGX1NZU0NBTExgIERlcGVuZGVuY2llcyoqXG5cbkhtbSwgSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGxhbmRzY2FwZSBoZXJlLCBhbmQgSSdtIHdvbmRlcmluZyBpZiBgQlBGX1NZU0NBTExgIGhhcyBhbnkgc25lYWt5IGRlcGVuZGVuY2llcyBJJ20gbm90IGltbWVkaWF0ZWx5IGF3YXJlIG9mLiBJdOKAmXMgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2gsIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgaW5kaXJlY3QgaW1wbGljYXRpb25zIGZvciBteSBzcGVjaWZpYyB1c2UgY2FzZS4gVGhlIEtjb25maWcgZmlsZXMgYXJlIG15IHVzdWFsIHN0YXJ0aW5nIHBvaW50LiBMZXQncyBkaWcgaW50byBgaW5pdC9LY29uZmlnYCwgb3Igd2hlcmV2ZXIgdGhlIGRhcm4gdGhpbmcgaXMgKmFjdHVhbGx5KiBkZWZpbmVkLiBJJ2xsIG5lZWQgdG8gdHJhY2UgZG93biB0aGUgZXhhY3QgZGVmaW5pdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCB0byBzZWUgaWYgYW55dGhpbmcgZWxzZSBoaW5nZXMgb24gaXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBsb3ctbGV2ZWwgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQ4MCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDU6MzA6NTIuNzg5NTIyODc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ4NjYwNjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwNTozMDo1NC4zMzgxOTg5MTFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0MTMxOTM1MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFhEUCBTb2NrZXQgTWVtb3J5IEFjY291bnRpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBtZW1vcnkgYWNjb3VudGluZyBmb3IgWERQIHNvY2tldHMsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC94ZHAveHNrX3F1ZXVlLmNgLiBJdCdzIHVzaW5nIGBtbV9hY2NvdW50X3Bpbm5lZF9wYWdlc2AgYW5kIGBtbV91bmFjY291bnRfcGlubmVkX3BhZ2VzYCBkdXJpbmcgdGhlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZiBYU0sgcXVldWUgb2JqZWN0cyAoYHhza3FfY3JlYXRlYCBhbmQgYHhza3FfZGVzdHJveWApLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCByZWxhdGVkIHRvIEFGX1hEUCBzb2NrZXRzLCB3aGljaCBpcyBnb29kIHRvIGtub3cuIFRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucyBhcmUgYFhEUF9TT0NLRVRTYCwgd2hpY2ggaW4gdHVybiBkZXBlbmRzIG9uIGBCUEZfU1lTQ0FMTGAsIGNvbmZpcm1pbmcgbXkgc3VzcGljaW9uIGFib3V0IEFGX1hEUC5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgYHhza3FfY3JlYXRlYCBhbmQgYHhza3FfZGVzdHJveWAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGJ5IGB4c2tfaW5pdF9xdWV1ZWAsIGFuZCB1bHRpbWF0ZWx5LCB0aGF0IGdldHMgdHJpZ2dlcmVkIGJ5IGBzZXRzb2Nrb3B0YCBjYWxscyBvbiB0aGUgc29ja2V0IChzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byByaW5ncyBsaWtlIGBYRFBfVFhfUklOR2AsIGBYRFBfUlhfUklOR2AsIGV0Yy4pLiBTaW1pbGFybHksIGB4c2txX2Rlc3Ryb3lgIGlzIGNhbGxlZCBieSBgeHNrX3JlbGVhc2VgIGFuZCBgeHBfcmVsZWFzZV9kZWZlcnJlZGAuIFRoaXMgZGlyZWN0bHkgZXhwb3NlcyB0aGlzIGNvZGUgdG8gdXNlcnNwYWNlIHZpYSBgc2V0c29ja29wdGAgb24gYW4gQUZfWERQIHNvY2tldCwgYW5kIGl0J3MgZGVmaW5pdGVseSBhIHJlYWNoYWJsZSBwYXRoLlxuXG5TaW5jZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgbWVtb3J5IGFjY291bnRpbmcsIGl0ICpkb2VzKiBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzLiBTcGVjaWZpY2FsbHksIHRoZSBzeXN0ZW0gbm93IGhhcyB0aGUgcG90ZW50aWFsIHRvIGZhaWwgaWYgbWVtb3J5IGxpbWl0cyBhcmUgZXhjZWVkZWQsIHdoaWNoIGlzIGEgbmV3IGVycm9yIGNvbmRpdGlvbiB0byBjb25zaWRlci4gSXQgYWxzbyBlbnN1cmVzIG1lbW9yeSBpcyBjb3JyZWN0bHkgYWNjb3VudGVkIGZvciwgcHJldmVudGluZyBwb3RlbnRpYWwgbGVha3Mgb3IgbWlzdXNlLlxuXG5HaXZlbiB0aGlzLCBJIHRoaW5rIGZ1enppbmcgdGhlIGVudHJ5IHBvaW50cyB3b3VsZCBiZSBwcnVkZW50LiBJJ2QgaW5pdGlhbGx5IGZvY3VzIG9uIGB4c2tfc2V0c29ja29wdGAgYW5kIGB4c2tfcmVsZWFzZWAsIGJ1dCBhbHNvLCBzaW5jZSBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGB4c2txX2NyZWF0ZWAgYW5kIGB4c2txX2Rlc3Ryb3lgIGFyZSAqbm90KiBzdGF0aWMsIHRoZXNlIGFyZSBnb29kIHRhcmdldHMgYXMgd2VsbC4gVGhlIHByaW1hcnkgY29uZmlncyBJJ2xsIG5lZWQgdG8gZW5hYmxlIGFyZSBgWERQX1NPQ0tFVFNgIGFuZCBgQlBGX1NZU0NBTExgLlxuXG5MZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuIEkgdGhpbmsgd2UgaGF2ZSBhIHNvbGlkIHBsYW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MDEsIk91dHB1dFRva2VucyI6MTU0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDA1OjMxOjA0Ljc1MTM5NTA0NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODU0ODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRFBfU09DS0VUU1wiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2txX2NyZWF0ZVwiLFxuICAgIFwieHNrcV9kZXN0cm95XCIsXG4gICAgXCJ4c2tfc2V0c29ja29wdFwiLFxuICAgIFwieHNrX3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIG1lbW9yeSBhY2NvdW50aW5nIGZvciBwaW5uZWQgcGFnZXMgaW4gWERQIHNvY2tldCBxdWV1ZXMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHNldHNvY2tvcHQgb24gQUZfWERQIHNvY2tldHMgKGUuZy4sIHdoZW4gc2V0dGluZyB1cCBYRFBfVFhfUklORywgWERQX1JYX1JJTkcsIGV0Yy4pIGFuZCB1cG9uIHNvY2tldCByZWxlYXNlLiBJdCBpbnRyb2R1Y2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcyBxdWV1ZSBjcmVhdGlvbiBjYW4gbm93IGZhaWwgaWYgbWVtb3J5IGxpbWl0cyBhcmUgZXhjZWVkZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieHNrcV9jcmVhdGVcIixcbiAgICBcInhza3FfZGVzdHJveVwiLFxuICAgIFwieHNrX3NldHNvY2tvcHRcIixcbiAgICBcInhza19yZWxlYXNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBtZW1vcnkgYWNjb3VudGluZyBmb3IgcGlubmVkIHBhZ2VzIGluIFhEUCBzb2NrZXQgcXVldWVzLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzZXRzb2Nrb3B0IG9uIEFGX1hEUCBzb2NrZXRzIChlLmcuLCB3aGVuIHNldHRpbmcgdXAgWERQX1RYX1JJTkcsIFhEUF9SWF9SSU5HLCBldGMuKSBhbmQgdXBvbiBzb2NrZXQgcmVsZWFzZS4gSXQgaW50cm9kdWNlcyBmdW5jdGlvbmFsIGNoYW5nZXMgYXMgcXVldWUgY3JlYXRpb24gY2FuIG5vdyBmYWlsIGlmIG1lbW9yeSBsaW1pdHMgYXJlIGV4Y2VlZGVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowznxc9[1] Phase: Succeeded StartedAt: 2026-08-01 05:31:16 +0000 UTC FinishedAt: 2026-08-01 05:31:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 05:31:16 +0000 UTC FinishedAt: 2026-08-01 05:31:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2] Phase: Succeeded StartedAt: 2026-08-01 05:31:16 +0000 UTC FinishedAt: 2026-08-01 09:21:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 05:31:16 +0000 UTC FinishedAt: 2026-08-01 09:21:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:31:16 +0000 UTC FinishedAt: 2026-08-01 05:31:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:31:16 +0000 UTC FinishedAt: 2026-08-01 05:31:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-workflowznxc9/series-workflowznxc9-convert-artifact-1283704790/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:31:26 +0000 UTC FinishedAt: 2026-08-01 05:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:31:26 +0000 UTC FinishedAt: 2026-08-01 05:53:37 +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:*e9e994be-c6d6-479b-901a-066ef03cd889,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-workflowznxc9/series-workflowznxc9-convert-artifact-1283704790/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": "51b9644c-1b48-4587-8e92-d2fa30adfaaf", "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-workflowznxc9/series-workflowznxc9-build-action-2242421868/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:31:26 +0000 UTC FinishedAt: 2026-08-01 05:53:22 +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:*e9e994be-c6d6-479b-901a-066ef03cd889,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-workflowznxc9/series-workflowznxc9-convert-artifact-1283704790/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": "51b9644c-1b48-4587-8e92-d2fa30adfaaf", "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-workflowznxc9/series-workflowznxc9-build-action-2242421868/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:53:37 +0000 UTC FinishedAt: 2026-08-01 05:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:53:37 +0000 UTC FinishedAt: 2026-08-01 05:53:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:53:37 +0000 UTC FinishedAt: 2026-08-01 05:54:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:53:37 +0000 UTC FinishedAt: 2026-08-01 05:53:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-workflowznxc9/series-workflowznxc9-convert-artifact-3646365545/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:54:00 +0000 UTC FinishedAt: 2026-08-01 05:55:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:54:00 +0000 UTC FinishedAt: 2026-08-01 05:55:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*51b9644c-1b48-4587-8e92-d2fa30adfaaf,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-workflowznxc9/series-workflowznxc9-build-action-2242421868/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-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:55:55 +0000 UTC FinishedAt: 2026-08-01 05:55:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:55:55 +0000 UTC FinishedAt: 2026-08-01 05:55:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:55:55 +0000 UTC FinishedAt: 2026-08-01 06:17:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:55:55 +0000 UTC FinishedAt: 2026-08-01 06:17:30 +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:*e9e994be-c6d6-479b-901a-066ef03cd889,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-workflowznxc9/series-workflowznxc9-convert-artifact-3646365545/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": "8832ce81-f0d8-4b72-a6a1-9210946eccc8", "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-workflowznxc9/series-workflowznxc9-build-action-3842727749/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 05:55:55 +0000 UTC FinishedAt: 2026-08-01 06:17:20 +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:*e9e994be-c6d6-479b-901a-066ef03cd889,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-workflowznxc9/series-workflowznxc9-convert-artifact-3646365545/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": "8832ce81-f0d8-4b72-a6a1-9210946eccc8", "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-workflowznxc9/series-workflowznxc9-build-action-3842727749/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 06:17:30 +0000 UTC FinishedAt: 2026-08-01 06:17:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 06:17:30 +0000 UTC FinishedAt: 2026-08-01 06:17:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 06:17:30 +0000 UTC FinishedAt: 2026-08-01 06:19:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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-08-01 06:17:30 +0000 UTC FinishedAt: 2026-08-01 06:19:18 +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:*8832ce81-f0d8-4b72-a6a1-9210946eccc8,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-workflowznxc9/series-workflowznxc9-build-action-3842727749/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-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 06:19:28 +0000 UTC FinishedAt: 2026-08-01 09:21:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 06:19:28 +0000 UTC FinishedAt: 2026-08-01 09:21:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*51b9644c-1b48-4587-8e92-d2fa30adfaaf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8832ce81-f0d8-4b72-a6a1-9210946eccc8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowznxc9/series-workflowznxc9-build-action-2242421868/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowznxc9/series-workflowznxc9-build-action-3842727749/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 06:19:28 +0000 UTC FinishedAt: 2026-08-01 06:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 06:19:28 +0000 UTC FinishedAt: 2026-08-01 06:19:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowznxc9/series-workflowznxc9-convert-artifact-2632628158/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 06:19:28 +0000 UTC FinishedAt: 2026-08-01 06:19:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 06:19:28 +0000 UTC FinishedAt: 2026-08-01 06:19:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","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: Skipped StartedAt: 2026-08-01 06:19:28 +0000 UTC FinishedAt: 2026-08-01 06:19:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 06:19:38 +0000 UTC FinishedAt: 2026-08-01 09:21:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznxc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["xskq_create","xskq_destroy","xsk_setsockopt","xsk_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2195424c3da2ef1829a63b807e3a900a90e57d85","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS","BPF_SYSCALL"],"series_id":"84e1a175-db7a-4f21-9c86-95d18fee651c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 06:19:38 +0000 UTC FinishedAt: 2026-08-01 09:21:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*51b9644c-1b48-4587-8e92-d2fa30adfaaf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8832ce81-f0d8-4b72-a6a1-9210946eccc8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowznxc9/series-workflowznxc9-build-action-2242421868/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowznxc9/series-workflowznxc9-build-action-3842727749/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowznxc9/series-workflowznxc9-convert-artifact-2632628158/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}