Name: series-workflowvmr4b Phase: Succeeded StartedAt: 2026-08-18 22:15:37 +0000 UTC FinishedAt: 2026-08-19 02:25:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[0] Phase: Succeeded StartedAt: 2026-08-18 22:15:37 +0000 UTC FinishedAt: 2026-08-18 22:37:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 22:15:37 +0000 UTC FinishedAt: 2026-08-18 22:37:43 +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": "7a3c0289c3c8eb4607dff448ae9ff9f902c813af", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7a3c0289c3c8eb4607dff448ae9ff9f902c813af", "config_name": "upstream-apparmor-kasan.config", "series_id": "aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkcm9wcGluZyBUQ1AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3cgYmFzZWQgb24gVENQIHNlcXVlbmNlIG51bWJlcnMsIHdoaWNoIGRvZXMgbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBLTVNBTiB3b3VsZCBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1Agc2VxdWVuY2UgdmFsaWRhdGlvbiBsb2dpYyBpbiBgdGNwX3NlcXVlbmNlYCAoY2FsbGVkIHZpYSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCkgdG8gZHJvcCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMgd2hlcmUgYGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZmI3MDE0NDkxZDY3NGI1ZGE3MGFkYmIwM2IyNGRhZTY5MDM1MDI0ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDIyOjM2OjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjNiZmEwZjA3ZGQ1NzIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbkBAIC00ODQ0LDcgJiM0Mzs0ODQ0LDggQEAgc3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHRjcF9zZXF1ZW5jZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4gXHRjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcbiBcdHUzMiBzZXFfbGltaXQ7XG4gXG4tXHRpZiAoYmVmb3JlKGVuZF9zZXEsIHRwLVx1MDAzZXJjdl93dXApKVxuJiM0MztcdGlmIChiZWZvcmUoZW5kX3NlcSwgdHAtXHUwMDNlcmN2X3d1cCkgfHxcbiYjNDM7XHQgICAgKGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXEpKVxuIFx0XHRyZXR1cm4gU0tCX0RST1BfUkVBU09OX1RDUF9PTERfU0VRVUVOQ0U7XG4gXG4gXHRzZXFfbGltaXQgPSB0cC1cdTAwM2VyY3Zfbnh0ICYjNDM7IHRjcF9tYXhfcmVjZWl2ZV93aW5kb3codHApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIHNlcXVlbmNlIHZhbGlkYXRpb24gbG9naWMgaW4gYHRjcF9zZXF1ZW5jZWAgKGNhbGxlZCB2aWEgYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2ApIHRvIGRyb3AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzIHdoZXJlIGBlbmRfc2VxID09IHRwLVx1MDAzZXJjdl93dXAgXHUwMDI2XHUwMDI2IHNlcSAhPSBlbmRfc2VxYC4gVGhpcyBpcyBhIGNvcmUgVENQIHJlY2VpdmUgcGF0aCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZiNzAxNDQ5MWQ2NzRiNWRhNzBhZGJiMDNiMjRkYWU2OTAzNTAyNGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAyMjozNjo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKaW5kZXggZGFmZjkzZDUxMzQyOC4uM2JmYTBmMDdkZDU3MiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKQEAgLTQ4NDQsNyAmIzQzOzQ4NDQsOCBAQCBzdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX3NlcXVlbmNlKGNvbnN0IHN0cnVjdCBzb2NrICpzaywKIAljb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTsKIAl1MzIgc2VxX2xpbWl0OwogCi0JaWYgKGJlZm9yZShlbmRfc2VxLCB0cC0mZ3Q7cmN2X3d1cCkpCiYjNDM7CWlmIChiZWZvcmUoZW5kX3NlcSwgdHAtJmd0O3Jjdl93dXApIHx8CiYjNDM7CSAgICAoZW5kX3NlcSA9PSB0cC0mZ3Q7cmN2X3d1cCAmYW1wOyZhbXA7IHNlcSAhPSBlbmRfc2VxKSkKIAkJcmV0dXJuIFNLQl9EUk9QX1JFQVNPTl9UQ1BfT0xEX1NFUVVFTkNFOwogCiAJc2VxX2xpbWl0ID0gdHAtJmd0O3Jjdl9ueHQgJiM0MzsgdGNwX21heF9yZWNlaXZlX3dpbmRvdyh0cCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVENQIElucHV0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtb2RpZnlpbmcgYG5ldC9pcHY0L3RjcF9pbnB1dC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdGNwX3NlcXVlbmNlYCBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyAqY3JpdGljYWwqIOKAkyBpdCBoYW5kbGVzIHNlcXVlbmNlIG51bWJlciB2YWxpZGF0aW9uLCBhIGNvcmUgYXNwZWN0IG9mIFRDUC4gVGhlIHBhdGNoIGNoYW5nZXMgd2hlbiBhIHBhY2tldCBpcyBkcm9wcGVkIHdpdGggYFNLQl9EUk9QX1JFQVNPTl9UQ1BfT0xEX1NFUVVFTkNFYCwgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzZXF1ZW5jZSBudW1iZXIgaGFuZGxpbmcgYW5kIHJlb3JkZXJpbmcuCgpPcmlnaW5hbGx5LCB0aGUgY2hlY2sgd2FzIHNpbXBseSBgYmVmb3JlKGVuZF9zZXEsIHRwLSZndDtyY3Zfd3VwKWAuIE5vdywgaXQmIzM5O3MgYmVlbiBleHBhbmRlZCB0byBgYmVmb3JlKGVuZF9zZXEsIHRwLSZndDtyY3Zfd3VwKSB8fCAoZW5kX3NlcSA9PSB0cC0mZ3Q7cmN2X3d1cCAmYW1wOyZhbXA7IHNlcSAhPSBlbmRfc2VxKWAuIEVzc2VudGlhbGx5LCB0aGUgY2hhbmdlIGxvb2tzIGxpa2UgaXQgbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkaXNjYXJkaW5nIHBhY2tldHMgd2hlcmUgdGhlIHNlcXVlbmNlIG51bWJlciBpcyAmIzM0O29sZCYjMzQ7IGFuZCBhbHNvIGNvbnNpZGVycyBhIG5ldyBjYXNlIHdoZXJlIHRoZSBzZXF1ZW5jZSBhbmQgZW5kIHNlcXVlbmNlIGFyZSBlcXVhbCwgYnV0IHRoZSBzZXF1ZW5jZSBudW1iZXIgaXRzZWxmIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgZW5kIHNlcXVlbmNlIG51bWJlci4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGxpa2VseSBhaW1lZCBhdCBzb21lIGVkZ2UgY2FzZS4KCkdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIGB0Y3Bfc2VxdWVuY2VgIGFuZCB0aGlzIGNoYW5nZSB0byB0aGUgc2VxdWVuY2UgbnVtYmVyIHZhbGlkYXRpb24gbG9naWMsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGEgaGlnaGx5IHJlYWNoYWJsZSBmdW5jdGlvbiwgYW5kIGFueSBzdWJ0bGUgZmxhdyBpbiBzZXF1ZW5jZSBudW1iZXIgaGFuZGxpbmcgY2FuIGxlYWQgdG8gc2VyaW91cyB2dWxuZXJhYmlsaXRpZXMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2Ugd2l0aGluIHRoZSBjb2RlLCBidXQgbXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyB3YXJyYW50cyBzZXJpb3VzIGF0dGVudGlvbi4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgdGhlIGB0Y3Bfc2VxdWVuY2VgIGZ1bmN0aW9uIGluIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AgaW1tZWRpYXRlbHkgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3Bfc2VxdWVuY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz00NzkxPXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB0Y3BfZGlzb3JkZXJlZF9hY2tfY2hlY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTQ4MzktXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo0ODQwOnN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB0Y3Bfc2VxdWVuY2UoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDg0MS1cdFx0XHRcdFx0IHUzMiBzZXEsIHUzMiBlbmRfc2VxLFxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTYzMjM9c3RhdGljIGJvb2wgdGNwX3ZhbGlkYXRlX2luY29taW5nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02MzYwLVx0LyogU3RlcCAxOiBjaGVjayBzZXF1ZW5jZSBudW1iZXIgKi9cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjYzNjE6XHRyZWFzb24gPSB0Y3Bfc2VxdWVuY2Uoc2ssIFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VzZXEsXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02MzYyLVx0XHRcdCAgICAgIFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VlbmRfc2VxLCB0aCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGB0Y3Bfc2VxdWVuY2VgIENhbGxlcnMqKgoKQWxyaWdodCwgc28gYHRjcF9zZXF1ZW5jZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBpbnRlcm5hbCB0byBhIHNwZWNpZmljIGNvbXBpbGF0aW9uIHVuaXQsIG1heWJlIGV2ZW4ganVzdCB0aGlzIHNvdXJjZSBmaWxlLiBBbmQsIGJhc2VkIG9uIHRoZSBjb2RlIGxheW91dCwgaXQmIzM5O3MgY2FsbGVkIGJ5IGB0Y3BfdmFsaWRhdGVfaW5jb21pbmdgLCB3aGljaCBpcyAqYWxzbyogc3RhdGljLiBUaGlzIGlzIGludGVyZXN0aW5nIOKAkyBpdCBpbXBsaWVzIGEgbGV2ZWwgb2YgZW5jYXBzdWxhdGlvbiwgcG90ZW50aWFsbHkgZGVzaWduZWQgdG8ga2VlcCB0aGVzZSBzZXF1ZW5jZSBudW1iZXIgdmFsaWRhdGlvbiByb3V0aW5lcyB0aWdodGx5IGNvdXBsZWQgYW5kIGhpZGRlbiBmcm9tIHRoZSBicm9hZGVyIFRDUCBzdGFjay4KCk15IG5leHQgc3RlcD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlICoqbm9uLXN0YXRpYyoqIGNhbGxlcnMgb2YgYHRjcF9zZXF1ZW5jZWAuIFVuZGVyc3RhbmRpbmcgKndobyogYmV5b25kIHRoZSBpbW1lZGlhdGUgc2NvcGUgb2YgdGhpcyBmaWxlIGlzIHVzaW5nIHRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWwuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3Mgc3RhdGljIGFuZCBjYWxsZWQgYnkgYW5vdGhlciBzdGF0aWMgZnVuY3Rpb24gcmFpc2VzIHRoZSBxdWVzdGlvbjogaXMgdGhpcyByZWFsbHkgdGhlIG9ubHkgcGxhY2UgdGhpcyBzZXF1ZW5jZSBjaGVjayBpcyB0YWtpbmcgcGxhY2U/IElzIHRoZXJlIGEgYnJvYWRlciBpbnRlcmFjdGlvbiBnb2luZyBvbiBvciBhcmUgdGhlc2Ugcm91dGluZXMgcGFydCBvZiBhIHZlcnkgdGlnaHRseSBjb250YWluZWQgZmVhdHVyZT8gRGV0ZXJtaW5pbmcgdGhlIGJyb2FkZXIgY2FsbHMgd2lsbCBoZWxwIG1lIHRvIGRldGVybWluZSBob3cgdGlnaHRseSB0aGlzIGxvZ2ljIGlzIGNvdXBsZWQgdG8gdGhlIHJlc3Qgb2YgdGhlIHN0YWNrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHRoZSBjb3JlIG9mIHRoZSB2YWxpZGF0aW9uIG9yIGp1c3QgcGFydCBvZiBhIGxhcmdlciBwcm9jZXNzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgY2FsbGluZyBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfdmFsaWRhdGVfaW5jb21pbmcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz02MzExPXN0YXRpYyBib29sIHRjcF9yZXNldF9jaGVjayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNjMyMi0gKi9cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjYzMjM6c3RhdGljIGJvb2wgdGNwX3ZhbGlkYXRlX2luY29taW5nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTYzMjQtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCB0Y3BoZHIgKnRoLCBpbnQgc3luX2luZXJyKVxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTY1MDE9dm9pZCB0Y3BfcmN2X2VzdGFibGlzaGVkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02NjcyLXZhbGlkYXRlOlxubmV0L2lwdjQvdGNwX2lucHV0LmM6NjY3MzpcdGlmICghdGNwX3ZhbGlkYXRlX2luY29taW5nKHNrLCBza2IsIHRoLCAxKSlcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTY2NzQtXHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz03MTUzPXRjcF9yY3Zfc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzIyNy1cdH1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjcyMjg6XHRpZiAoIXRjcF92YWxpZGF0ZV9pbmNvbWluZyhzaywgc2tiLCB0aCwgMCkpXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MjI5LVx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTczCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUQ1AgUmVjZWl2ZSBQYXRoIEZ1bmN0aW9uIENhbmRpZGF0ZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFRDUCByZWNlaXZlIHBhdGggYW5hbHlzaXMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gaW5jbHVkZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgYW5kIGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgIGluIGBGb2N1c1N5bWJvbHNgLiBUaG9zZSBhcmUgdGhlIG5vbi1zdGF0aWMgY2FsbGVycywgdGhlIGNvcmUgZW50cnkgcG9pbnRzLCB0aGUgbWFpbiBmdW5jdGlvbnMsIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucywgdGhlIG9uZXMgSSYjMzk7ZCBleHBlY3QgdG8gYmUgc2lnbmlmaWNhbnQuIEJ1dCB3YWl0IGEgbWludXRlLi4uIHRob3NlIGFyZSAqZXh0cmVtZWx5KiBob3QgcGF0aCBmdW5jdGlvbnMuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhcm5zIGFnYWluc3QgaW5jbHVkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGF2b2lkIHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIEhtbS4KCkkmIzM5O20gc3RhcnRpbmcgdG8gdGhpbmssIGlzIHRoZXJlIGEgYmV0dGVyIGZ1bmN0aW9uPyBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCBpcyBzdGF0aWMsIGB0Y3Bfc2VxdWVuY2VgIGlzIHN0YXRpYy4gSWYgdGhvc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIHJlYWxseSB0aGUgb25seSBlbnRyeSBwb2ludHMsIHNob3VsZCBJIGp1c3Qgbm90IGxpc3QgKmFueSogYEZvY3VzU3ltYm9sc2A/IE9yIHNob3VsZCBJIGp1c3QgaW5jbHVkZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgYW5kIGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgIGFuZCBob3BlIGZvciB0aGUgYmVzdCwgYmVjYXVzZSB0aGV5IGFyZSB0aGUgbWFpbiBlbnRyeSBwb2ludHMgZm9yIFRDUCBwYWNrZXRzPwoKTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBJJiMzOTttIG1pc3NpbmcgaGVyZS4gTmVlZCB0byBiZSBzdXJlIG9mIG15IGZhY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9yY3ZfZXN0YWJsaXNoZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz02MzIzPXN0YXRpYyBib29sIHRjcF92YWxpZGF0ZV9pbmNvbWluZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNjUwMC0gKi9cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjY1MDE6dm9pZCB0Y3BfcmN2X2VzdGFibGlzaGVkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTY1MDIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AqKgoKT2theSwgbGV0JiMzOTtzIHB1bGwgdXAgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBleGFjdGx5IGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgaW5jb21pbmcgc2VnbWVudHMgYW5kIG1hbmFnZXMgdGhlIFRDUCBzdGF0ZSBtYWNoaW5lLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBob3cgaXQgZGVhbHMgd2l0aCB0aGUgc3RhdGUgdHJhbnNpdGlvbnMsIHJldHJhbnNtaXNzaW9ucywgYW5kIGFja25vd2xlZGdlbWVudHMuIEnigJltIHRoaW5raW5nIGFib3V0IGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbWVjaGFuaXNtcyBhbmQgd2hldGhlciB0aGVyZSBoYXZlIGJlZW4gYW55IHJlY2VudCBtb2RpZmljYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBmb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBMZXTigJlzIHNlZSBob3cgY2xlYW5seSBpdCBoYW5kbGVzIG91dC1vZi1vcmRlciBzZWdtZW50cyBhbmQgaG93IGl0IG1pZ2h0IGhhbmRsZSBhIGJ1cnN0IG9mIHBhY2tldHMuIEdvdHRhIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBTWU4gZmxvb2RpbmcgcHJvdGVjdGlvbnMgYXJlIHN0aWxsIHJvYnVzdCBhbmQgZWZmZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfcmN2X3N0YXRlX3Byb2Nlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz02ODUzPXN0YXRpYyBpbnQgdGNwX3Jjdl9zeW5zZW50X3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcwNzctXHRcdCAqIHdlIGhhdmUgbm8gcmVhc29ucyB0byBhY2NlcHQgaXQgc29tZXRpbWVzLlxubmV0L2lwdjQvdGNwX2lucHV0LmM6NzA3ODpcdFx0ICogQWxzbywgc2VlbXMgdGhlIGNvZGUgZG9pbmcgaXQgaW4gc3RlcDYgb2YgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MDc5LVx0XHQgKiBpcyBub3QgZmxhd2xlc3MuIFNvLCBkaXNjYXJkIHBhY2tldCBmb3Igc2FuaXR5LlxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTcxNTI9ZW51bSBza2JfZHJvcF9yZWFzb25cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjcxNTM6dGNwX3Jjdl9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcxNTQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjY1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipBbmFseXppbmcgVENQIFJlY2VpdmUgUGF0aCoqCgpPa2F5LCBzbyBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgYW5kIGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgIGFyZSBleHBvc2VkLCB3aGljaCBzdWdnZXN0cyB0aGV5JiMzOTtyZSBpbXBvcnRhbnQgZW50cnkgcG9pbnRzIG9yIGF0IGxlYXN0IHVzZWQgb3V0c2lkZSB0aGVpciBpbW1lZGlhdGUgc2NvcGUuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlICpjYWxsZWQqIHdpdGhpbiB0aGUgb3ZlcmFsbCBUQ1AgcmVjZWl2ZSBwYXRoLiBJIG5lZWQgdG8gc2VlIHRoZSBiaWdnZXIgcGljdHVyZS4gSSYjMzk7bGwgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGB0Y3BfdjRfZG9fcmN2YCBhbmQgYHRjcF92Nl9kb19yY3ZgIOKAkyB0aG9zZSBzZWVtIGxpa2UgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIG1hbmFnaW5nIHRoZSBpbml0aWFsIHJlY2VwdGlvbiBvZiBkYXRhIGF0IHRoZSBJUCBsYXllci4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3b3VsZCBzdGFydCB3aXRoIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX3Jjdl9lc3RhYmxpc2hlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0xODMwPWludCB0Y3BfdjRfZG9fcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE4NTMtXHRcdH1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MTg1NDpcdFx0dGNwX3Jjdl9lc3RhYmxpc2hlZChzaywgc2tiKTtcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTg1NS1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0xOTAxPWVudW0gc2tiX2Ryb3BfcmVhc29uIHRjcF9hZGRfYmFja2xvZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0xOTgwLVx0XHQvKiBXZSBoYXZlIHRvIHVwZGF0ZSBib3RoIFRDUF9TS0JfQ0IodGFpbCktXHUwMDNldGNwX2ZsYWdzIGFuZFxubmV0L2lwdjQvdGNwX2lwdjQuYzoxOTgxOlx0XHQgKiB0aHRhaWwtXHUwMDNlZmluLCBzbyB0aGF0IHRoZSBmYXN0IHBhdGggaW4gdGNwX3Jjdl9lc3RhYmxpc2hlZCgpXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE5ODItXHRcdCAqIGlzIG5vdCBlbnRlcmVkIGlmIHdlIGFwcGVuZCBhIHBhY2tldCB3aXRoIGEgRklOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjAwCgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDQ4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFzb25pbmcgZm9yIEZ1enppbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBUQ1AgSVB2NCByZWNlaXZlIHBhdGgsIHNwZWNpZmljYWxseSB0aGUgY2hhbmdlIHJlbGF0ZWQgdG8gc2VxdWVuY2UgbnVtYmVyIGhhbmRsaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNvbnNpZGVyIHdoaWNoIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiB3aXRoIHRoZSBgRm9jdXNTeW1ib2xzYCBzZXR0aW5nLCBhbmQgc2luY2UgYHRjcF92NF9yY3ZgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGFuZCBib3RoIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBhbmQgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AgYXJlIHJpZ2h0IGluIHRoZSBob3QgcGF0aCwgbXkgZmlyc3QgaW5zdGluY3Qgd2FzIHRvIGVpdGhlciBsZWF2ZSBpdCBlbXB0eSBvciBzcGVjaWZ5IGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgLiBCdXQgSSByZW1lbWJlciB0aGUgZ3VpZGFuY2UgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4KCmB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgIGhhbmRsZXMgc3RhdGUgdHJhbnNpdGlvbnMsIHdoaWNoIGlzIGxlc3Mgb2YgYSBob3QgcGF0aCB0aGFuIHRoZSBFU1RBQkxJU0hFRCBzdGF0ZSBwcm9jZXNzaW5nIGluIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCwgYnV0IHN0aWxsIHByZXR0eSBnZW5lcmljLiBJbml0aWFsbHksIEkgdGhvdWdodCBsZWF2aW5nIGBGb2N1c1N5bWJvbHNgIGVtcHR5IG9yIHNwZWNpZnlpbmcgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2Agd291bGQgYmUgdGhlIHdheSB0byBnby4KClRoZW4gSSBwYXVzZWQuIFRoaXMgY2hhbmdlIGlzIGFib3V0ICpkcm9wcGluZyBvbGQgc2VxdWVuY2UgbnVtYmVycyogLS0gdGhhdCYjMzk7cyBmdW5kYW1lbnRhbCBUQ1AgYmVoYXZpb3IhIFNvLCBldmVuIHRob3VnaCB0aGVzZSBhcmUgaG90LXBhdGggZnVuY3Rpb25zLCB0aGUgKmNvcmUqIG9mIFRDUCByZWNlaXZlIGlzIGFmZmVjdGVkLiBBYnNvbHV0ZWx5LCBJIG5lZWQgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpObyBuZWVkIGZvciBzcGVjaWZpYyBjb25maWdzOyBpdCYjMzk7cyBhIGNvcmUgSVB2NCBUQ1AgdGhpbmcuCgpTbywgSSBrZWVwIGdvaW5nIGJhY2sgYW5kIGZvcnRoIG9uIGBGb2N1c1N5bWJvbHNgLCBidXQgaXQga2VlcHMgcG9pbnRpbmcgbWUgYmFjayB0byBsZWF2aW5nIGl0IGVtcHR5LiBXaGlsZSBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYCBpcyBhIGRlY2VudCBjYW5kaWRhdGUgaWYgd2Ugd2FudCB0byBmb2N1cyBvbiBub24tZXN0YWJsaXNoZWQgc3RhdGVzLCB0aGUgcGF0Y2ggYWN0dWFsbHkgYWZmZWN0cyBgdGNwX3NlcXVlbmNlYCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgZnJvbSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCwgd2hpY2gsIGluIHR1cm4sIGlzIGNhbGxlZCBieSBib3RoIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBhbmQgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AuIFNvIGl0JiMzOTtzIG5vdCBqdXN0IHNvbWUgY29ybmVyIGNhc2UuIEl0IGFmZmVjdHMgdGhlIGVudGlyZSBUQ1AgcmVjZWl2ZSBwcm9jZXNzaW5nIGxvZ2ljLiBMZWF2aW5nIGBGb2N1c1N5bWJvbHNgIGVtcHR5IHdpbGwgZ2V0IG1lIHRoZSBicm9hZGVzdCBjb3ZlcmFnZS4KCk9rYXksIGxldCYjMzk7cyB3cml0ZSB0aGlzIGRvd24gdG8gbWFrZSBzdXJlIGl0JiMzOTtzIGNsZWFyOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIHNlcXVlbmNlIHZhbGlkYXRpb24gbG9naWMgaW4gYHRjcF9zZXF1ZW5jZWAgKGNhbGxlZCB2aWEgYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2ApIHRvIGRyb3AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzIHdoZXJlIGBlbmRfc2VxID09IHRwLSZndDtyY3Zfd3VwICZhbXA7JmFtcDsgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7IFRoYXQgc2hvdWxkIGRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1Agc2VxdWVuY2UgdmFsaWRhdGlvbiBsb2dpYyBpbiBgdGNwX3NlcXVlbmNlYCAoY2FsbGVkIHZpYSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCkgdG8gZHJvcCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMgd2hlcmUgYGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIHNlcXVlbmNlIHZhbGlkYXRpb24gbG9naWMgaW4gYHRjcF9zZXF1ZW5jZWAgKGNhbGxlZCB2aWEgYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2ApIHRvIGRyb3AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzIHdoZXJlIGBlbmRfc2VxID09IHRwLVx1MDAzZXJjdl93dXAgXHUwMDI2XHUwMDI2IHNlcSAhPSBlbmRfc2VxYC4gVGhpcyBpcyBhIGNvcmUgVENQIHJlY2VpdmUgcGF0aCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjI6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRyb3BwaW5nIFRDUCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiBUQ1Agc2VxdWVuY2UgbnVtYmVycywgd2hpY2ggZG9lcyBub3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IEtNU0FOIHdvdWxkIGRldGVjdC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gYnVncy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmI3MDE0NDkxZDY3NGI1ZGE3MGFkYmIwM2IyNGRhZTY5MDM1MDI0ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDE4IDIyOjM2OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwppbmRleCBkYWZmOTNkNTEzNDI4Li4zYmZhMGYwN2RkNTcyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwpAQCAtNDg0NCw3ICYjNDM7NDg0NCw4IEBAIHN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB0Y3Bfc2VxdWVuY2UoY29uc3Qgc3RydWN0IHNvY2sgKnNrLAogCWNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spOwogCXUzMiBzZXFfbGltaXQ7CiAKLQlpZiAoYmVmb3JlKGVuZF9zZXEsIHRwLSZndDtyY3Zfd3VwKSkKJiM0MzsJaWYgKGJlZm9yZShlbmRfc2VxLCB0cC0mZ3Q7cmN2X3d1cCkgfHwKJiM0MzsJICAgIChlbmRfc2VxID09IHRwLSZndDtyY3Zfd3VwICZhbXA7JmFtcDsgc2VxICE9IGVuZF9zZXEpKQogCQlyZXR1cm4gU0tCX0RST1BfUkVBU09OX1RDUF9PTERfU0VRVUVOQ0U7CiAKIAlzZXFfbGltaXQgPSB0cC0mZ3Q7cmN2X254dCAmIzQzOyB0Y3BfbWF4X3JlY2VpdmVfd2luZG93KHRwKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzIKCQkJCQkJCW91dHB1dDogMTEyCgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBTZXF1ZW5jZSBOdW1iZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGB0Y3BfaW5wdXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYHRjcF9zZXF1ZW5jZWAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYSBmaXggZm9yIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgb2xkIHNlcXVlbmNlIG51bWJlcnMsIHRoZSBjb25kaXRpb24gaXMgYmVpbmcgY2hhbmdlZCB0byBiZXR0ZXIgaGFuZGxlIHNvbWUgZWRnZSBjYXNlcy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMsIG9mIGNvdXJzZS4gQ291bGQgdGhpcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciB3cml0ZXM/IEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSBqdXN0IGNoZWNrcyBhbmQgZHJvcHMgcGFja2V0cyBiYXNlZCBvbiBzZXF1ZW5jZSBudW1iZXIgY29tcGFyaXNvbnMuIE5vIGFsbG9jYXRpb25zLCBubyBjb3BpZXMgdG8gdXNlciBzcGFjZSwgbm8gdXNhZ2Ugb2YgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0JiMzOTtzIHJlYWxseSBqdXN0IGEgY29uZGl0aW9uYWwgYFNLQl9EUk9QX1JFQVNPTmAgYmFzZWQgb24gYSBzZXF1ZW5jZSBudW1iZXIgY2hlY2suCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGB0Y3Bfc2VxdWVuY2VgIGl0c2VsZi4gSXQgcmVjZWl2ZXMgdGhlIGBza2AsIGBzZXFgLCBhbmQgYGVuZF9zZXFgIHBhcmFtZXRlcnMsIGFuZCByZXR1cm5zIGFuIGBlbnVtIHNrYl9kcm9wX3JlYXNvbmAuIFB1cmUgbG9naWMsIGFzIEkgc3VzcGVjdGVkLiBObyBzaWducyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gVGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBzZXF1ZW5jZSBudW1iZXIgY29tcGFyaXNvbiBhbmQgcGFja2V0IGRyb3AgbG9naWMgY2hhbmdlLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IEtNU0FOIGlzbiYjMzk7dCBuZWNlc3NhcnkgaGVyZS4gVGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcy4gSXQmIzM5O3MganVzdCBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgcGxlbnR5IHN1ZmZpY2llbnQgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgc29saWQgaW4gdGVybXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24uIFNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuIE15IHJlYXNvbmluZyBpcyBzb3VuZDogdGhlIHBhdGNoIHNpbXBseSByZWZpbmVzIHRoZSBwYWNrZXQgZHJvcHBpbmcgbG9naWMgYmFzZWQgb24gc2VxdWVuY2UgbnVtYmVycywgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgZHJvcHBpbmcgVENQIHBhY2tldHMgd2l0aCBvbGQgc2VxdWVuY2UgbnVtYmVycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93IGJhc2VkIG9uIFRDUCBzZXF1ZW5jZSBudW1iZXJzLCB3aGljaCBkb2VzIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgS01TQU4gd291bGQgZGV0ZWN0LiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkcm9wcGluZyBUQ1AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3cgYmFzZWQgb24gVENQIHNlcXVlbmNlIG51bWJlcnMsIHdoaWNoIGRvZXMgbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBLTVNBTiB3b3VsZCBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM2OjU0LjI4MDAyMzk1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0OTcxNjQ4MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgZHJvcHBpbmcgVENQIHBhY2tldHMgd2l0aCBvbGQgc2VxdWVuY2UgbnVtYmVycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93IGJhc2VkIG9uIFRDUCBzZXF1ZW5jZSBudW1iZXJzLCB3aGljaCBkb2VzIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgS01TQU4gd291bGQgZGV0ZWN0LiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1Agc2VxdWVuY2UgdmFsaWRhdGlvbiBsb2dpYyBpbiBgdGNwX3NlcXVlbmNlYCAoY2FsbGVkIHZpYSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCkgdG8gZHJvcCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMgd2hlcmUgYGVuZF9zZXEgPT0gdHAtXFx1MDAzZXJjdl93dXAgXFx1MDAyNlxcdTAwMjYgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNjo1NC4yODAwMzIzMzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMTYzNzk5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZiNzAxNDQ5MWQ2NzRiNWRhNzBhZGJiMDNiMjRkYWU2OTAzNTAyNGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMjI6MzY6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjNiZmEwZjA3ZGQ1NzIgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xcbkBAIC00ODQ0LDcgKzQ4NDQsOCBAQCBzdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX3NlcXVlbmNlKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG4gXFx0Y29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7XFxuIFxcdHUzMiBzZXFfbGltaXQ7XFxuIFxcbi1cXHRpZiAoYmVmb3JlKGVuZF9zZXEsIHRwLVxcdTAwM2VyY3Zfd3VwKSlcXG4rXFx0aWYgKGJlZm9yZShlbmRfc2VxLCB0cC1cXHUwMDNlcmN2X3d1cCkgfHxcXG4rXFx0ICAgIChlbmRfc2VxID09IHRwLVxcdTAwM2VyY3Zfd3VwIFxcdTAwMjZcXHUwMDI2IHNlcSAhPSBlbmRfc2VxKSlcXG4gXFx0XFx0cmV0dXJuIFNLQl9EUk9QX1JFQVNPTl9UQ1BfT0xEX1NFUVVFTkNFO1xcbiBcXG4gXFx0c2VxX2xpbWl0ID0gdHAtXFx1MDAzZXJjdl9ueHQgKyB0Y3BfbWF4X3JlY2VpdmVfd2luZG93KHRwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjI6MzY6NTQuOTEyNTkxMThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNzgyOTQwNzI5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRDUCBzZXF1ZW5jZSB2YWxpZGF0aW9uIGxvZ2ljIGluIGB0Y3Bfc2VxdWVuY2VgIChjYWxsZWQgdmlhIGB0Y3BfdmFsaWRhdGVfaW5jb21pbmdgKSB0byBkcm9wIHBhY2tldHMgd2l0aCBvbGQgc2VxdWVuY2UgbnVtYmVycyB3aGVyZSBgZW5kX3NlcSA9PSB0cC1cXHUwMDNlcmN2X3d1cCBcXHUwMDI2XFx1MDAyNiBzZXEgIT0gZW5kX3NlcWAuIFRoaXMgaXMgYSBjb3JlIFRDUCByZWNlaXZlIHBhdGggY2hhbmdlIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZiNzAxNDQ5MWQ2NzRiNWRhNzBhZGJiMDNiMjRkYWU2OTAzNTAyNGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAyMjozNjo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjNiZmEwZjA3ZGQ1NzIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbkBAIC00ODQ0LDcgKzQ4NDQsOCBAQCBzdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX3NlcXVlbmNlKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbiBcdGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuIFx0dTMyIHNlcV9saW1pdDtcbiBcbi1cdGlmIChiZWZvcmUoZW5kX3NlcSwgdHAtXHUwMDNlcmN2X3d1cCkpXG4rXHRpZiAoYmVmb3JlKGVuZF9zZXEsIHRwLVx1MDAzZXJjdl93dXApIHx8XG4rXHQgICAgKGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXEpKVxuIFx0XHRyZXR1cm4gU0tCX0RST1BfUkVBU09OX1RDUF9PTERfU0VRVUVOQ0U7XG4gXG4gXHRzZXFfbGltaXQgPSB0cC1cdTAwM2VyY3Zfbnh0ICsgdGNwX21heF9yZWNlaXZlX3dpbmRvdyh0cCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNjo1NC45MTI1OTMxMjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDMxMDkyNDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBJbnB1dCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbW9kaWZ5aW5nIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYHRjcF9zZXF1ZW5jZWAgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgKmNyaXRpY2FsKiDigJMgaXQgaGFuZGxlcyBzZXF1ZW5jZSBudW1iZXIgdmFsaWRhdGlvbiwgYSBjb3JlIGFzcGVjdCBvZiBUQ1AuIFRoZSBwYXRjaCBjaGFuZ2VzIHdoZW4gYSBwYWNrZXQgaXMgZHJvcHBlZCB3aXRoIGBTS0JfRFJPUF9SRUFTT05fVENQX09MRF9TRVFVRU5DRWAsIHdoaWNoIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBzZXF1ZW5jZSBudW1iZXIgaGFuZGxpbmcgYW5kIHJlb3JkZXJpbmcuXG5cbk9yaWdpbmFsbHksIHRoZSBjaGVjayB3YXMgc2ltcGx5IGBiZWZvcmUoZW5kX3NlcSwgdHAtXHUwMDNlcmN2X3d1cClgLiBOb3csIGl0J3MgYmVlbiBleHBhbmRlZCB0byBgYmVmb3JlKGVuZF9zZXEsIHRwLVx1MDAzZXJjdl93dXApIHx8IChlbmRfc2VxID09IHRwLVx1MDAzZXJjdl93dXAgXHUwMDI2XHUwMDI2IHNlcSAhPSBlbmRfc2VxKWAuIEVzc2VudGlhbGx5LCB0aGUgY2hhbmdlIGxvb2tzIGxpa2UgaXQgbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkaXNjYXJkaW5nIHBhY2tldHMgd2hlcmUgdGhlIHNlcXVlbmNlIG51bWJlciBpcyBcIm9sZFwiIGFuZCBhbHNvIGNvbnNpZGVycyBhIG5ldyBjYXNlIHdoZXJlIHRoZSBzZXF1ZW5jZSBhbmQgZW5kIHNlcXVlbmNlIGFyZSBlcXVhbCwgYnV0IHRoZSBzZXF1ZW5jZSBudW1iZXIgaXRzZWxmIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgZW5kIHNlcXVlbmNlIG51bWJlci4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgbGlrZWx5IGFpbWVkIGF0IHNvbWUgZWRnZSBjYXNlLlxuXG5HaXZlbiB0aGUgaW1wb3J0YW5jZSBvZiBgdGNwX3NlcXVlbmNlYCBhbmQgdGhpcyBjaGFuZ2UgdG8gdGhlIHNlcXVlbmNlIG51bWJlciB2YWxpZGF0aW9uIGxvZ2ljLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBJdCdzIGEgaGlnaGx5IHJlYWNoYWJsZSBmdW5jdGlvbiwgYW5kIGFueSBzdWJ0bGUgZmxhdyBpbiBzZXF1ZW5jZSBudW1iZXIgaGFuZGxpbmcgY2FuIGxlYWQgdG8gc2VyaW91cyB2dWxuZXJhYmlsaXRpZXMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZSB3aXRoaW4gdGhlIGNvZGUsIGJ1dCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIHdhcnJhbnRzIHNlcmlvdXMgYXR0ZW50aW9uLiBJJ2xsIHRha2UgYSBsb29rIGF0IHRoZSBgdGNwX3NlcXVlbmNlYCBmdW5jdGlvbiBpbiBgbmV0L2lwdjQvdGNwX2lucHV0LmNgIGltbWVkaWF0ZWx5IHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNjo1OS45NDM2ODc2MzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI4Mjc4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3NlcXVlbmNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jPTQ3OTE9c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHRjcF9kaXNvcmRlcmVkX2Fja19jaGVjayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy00ODM5LVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjQ4NDA6c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHRjcF9zZXF1ZW5jZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDg0MS1cXHRcXHRcXHRcXHRcXHQgdTMyIHNlcSwgdTMyIGVuZF9zZXEsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz02MzIzPXN0YXRpYyBib29sIHRjcF92YWxpZGF0ZV9pbmNvbWluZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02MzYwLVxcdC8qIFN0ZXAgMTogY2hlY2sgc2VxdWVuY2UgbnVtYmVyICovXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NjM2MTpcXHRyZWFzb24gPSB0Y3Bfc2VxdWVuY2Uoc2ssIFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlc2VxLFxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTYzNjItXFx0XFx0XFx0ICAgICAgVENQX1NLQl9DQihza2IpLVxcdTAwM2VlbmRfc2VxLCB0aCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM3OjAwLjAzNjU0MjU2MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODMwNDc1MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYHRjcF9zZXF1ZW5jZWAgQ2FsbGVycyoqXG5cbkFscmlnaHQsIHNvIGB0Y3Bfc2VxdWVuY2VgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCdzIGxpa2VseSBpbnRlcm5hbCB0byBhIHNwZWNpZmljIGNvbXBpbGF0aW9uIHVuaXQsIG1heWJlIGV2ZW4ganVzdCB0aGlzIHNvdXJjZSBmaWxlLiBBbmQsIGJhc2VkIG9uIHRoZSBjb2RlIGxheW91dCwgaXQncyBjYWxsZWQgYnkgYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2AsIHdoaWNoIGlzICphbHNvKiBzdGF0aWMuIFRoaXMgaXMgaW50ZXJlc3Rpbmcg4oCTIGl0IGltcGxpZXMgYSBsZXZlbCBvZiBlbmNhcHN1bGF0aW9uLCBwb3RlbnRpYWxseSBkZXNpZ25lZCB0byBrZWVwIHRoZXNlIHNlcXVlbmNlIG51bWJlciB2YWxpZGF0aW9uIHJvdXRpbmVzIHRpZ2h0bHkgY291cGxlZCBhbmQgaGlkZGVuIGZyb20gdGhlIGJyb2FkZXIgVENQIHN0YWNrLlxuXG5NeSBuZXh0IHN0ZXA/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSAqKm5vbi1zdGF0aWMqKiBjYWxsZXJzIG9mIGB0Y3Bfc2VxdWVuY2VgLiBVbmRlcnN0YW5kaW5nICp3aG8qIGJleW9uZCB0aGUgaW1tZWRpYXRlIHNjb3BlIG9mIHRoaXMgZmlsZSBpcyB1c2luZyB0aGlzIGZ1bmN0aW9uIGlzIGNyaXRpY2FsLiBUaGUgZmFjdCB0aGF0IGl0J3Mgc3RhdGljIGFuZCBjYWxsZWQgYnkgYW5vdGhlciBzdGF0aWMgZnVuY3Rpb24gcmFpc2VzIHRoZSBxdWVzdGlvbjogaXMgdGhpcyByZWFsbHkgdGhlIG9ubHkgcGxhY2UgdGhpcyBzZXF1ZW5jZSBjaGVjayBpcyB0YWtpbmcgcGxhY2U/IElzIHRoZXJlIGEgYnJvYWRlciBpbnRlcmFjdGlvbiBnb2luZyBvbiBvciBhcmUgdGhlc2Ugcm91dGluZXMgcGFydCBvZiBhIHZlcnkgdGlnaHRseSBjb250YWluZWQgZmVhdHVyZT8gRGV0ZXJtaW5pbmcgdGhlIGJyb2FkZXIgY2FsbHMgd2lsbCBoZWxwIG1lIHRvIGRldGVybWluZSBob3cgdGlnaHRseSB0aGlzIGxvZ2ljIGlzIGNvdXBsZWQgdG8gdGhlIHJlc3Qgb2YgdGhlIHN0YWNrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHRoZSBjb3JlIG9mIHRoZSB2YWxpZGF0aW9uIG9yIGp1c3QgcGFydCBvZiBhIGxhcmdlciBwcm9jZXNzLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGNhbGxpbmcgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzowMy40MTk1OTQ4MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwOTE3MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3ZhbGlkYXRlX2luY29taW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jPTYzMTE9c3RhdGljIGJvb2wgdGNwX3Jlc2V0X2NoZWNrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTYzMjItICovXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NjMyMzpzdGF0aWMgYm9vbCB0Y3BfdmFsaWRhdGVfaW5jb21pbmcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTYzMjQtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgdGNwaGRyICp0aCwgaW50IHN5bl9pbmVycilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTY1MDE9dm9pZCB0Y3BfcmN2X2VzdGFibGlzaGVkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTY2NzItdmFsaWRhdGU6XFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NjY3MzpcXHRpZiAoIXRjcF92YWxpZGF0ZV9pbmNvbWluZyhzaywgc2tiLCB0aCwgMSkpXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNjY3NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz03MTUzPXRjcF9yY3Zfc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MjI3LVxcdH1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3MjI4OlxcdGlmICghdGNwX3ZhbGlkYXRlX2luY29taW5nKHNrLCBza2IsIHRoLCAwKSlcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MjI5LVxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzowMy40NzY2OTI0MTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk1NzI2Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUQ1AgUmVjZWl2ZSBQYXRoIEZ1bmN0aW9uIENhbmRpZGF0ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBUQ1AgcmVjZWl2ZSBwYXRoIGFuYWx5c2lzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGluY2x1ZGUgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGFuZCBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYCBpbiBgRm9jdXNTeW1ib2xzYC4gVGhvc2UgYXJlIHRoZSBub24tc3RhdGljIGNhbGxlcnMsIHRoZSBjb3JlIGVudHJ5IHBvaW50cywgdGhlIG1haW4gZnVuY3Rpb25zLCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHRoZSBvbmVzIEknZCBleHBlY3QgdG8gYmUgc2lnbmlmaWNhbnQuIEJ1dCB3YWl0IGEgbWludXRlLi4uIHRob3NlIGFyZSAqZXh0cmVtZWx5KiBob3QgcGF0aCBmdW5jdGlvbnMuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhcm5zIGFnYWluc3QgaW5jbHVkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGF2b2lkIHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIEhtbS5cblxuSSdtIHN0YXJ0aW5nIHRvIHRoaW5rLCBpcyB0aGVyZSBhIGJldHRlciBmdW5jdGlvbj8gYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2AgaXMgc3RhdGljLCBgdGNwX3NlcXVlbmNlYCBpcyBzdGF0aWMuIElmIHRob3NlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSByZWFsbHkgdGhlIG9ubHkgZW50cnkgcG9pbnRzLCBzaG91bGQgSSBqdXN0IG5vdCBsaXN0ICphbnkqIGBGb2N1c1N5bWJvbHNgPyBPciBzaG91bGQgSSBqdXN0IGluY2x1ZGUgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGFuZCBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYCBhbmQgaG9wZSBmb3IgdGhlIGJlc3QsIGJlY2F1c2UgdGhleSBhcmUgdGhlIG1haW4gZW50cnkgcG9pbnRzIGZvciBUQ1AgcGFja2V0cz9cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IEknbSBtaXNzaW5nIGhlcmUuIE5lZWQgdG8gYmUgc3VyZSBvZiBteSBmYWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU3MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzowNy42NzI0Mjc3OTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY0MDQ2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3Jjdl9lc3RhYmxpc2hlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaW5wdXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaW5wdXQuYz02MzIzPXN0YXRpYyBib29sIHRjcF92YWxpZGF0ZV9pbmNvbWluZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02NTAwLSAqL1xcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjY1MDE6dm9pZCB0Y3BfcmN2X2VzdGFibGlzaGVkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02NTAyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjI6Mzc6MDcuNzM4ODM5ODI5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2MjUzMDMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgKipcblxuT2theSwgbGV0J3MgcHVsbCB1cCBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGV4YWN0bHkgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyBpbmNvbWluZyBzZWdtZW50cyBhbmQgbWFuYWdlcyB0aGUgVENQIHN0YXRlIG1hY2hpbmUuIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gaG93IGl0IGRlYWxzIHdpdGggdGhlIHN0YXRlIHRyYW5zaXRpb25zLCByZXRyYW5zbWlzc2lvbnMsIGFuZCBhY2tub3dsZWRnZW1lbnRzLiBJ4oCZbSB0aGlua2luZyBhYm91dCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG1lY2hhbmlzbXMgYW5kIHdoZXRoZXIgdGhlcmUgaGF2ZSBiZWVuIGFueSByZWNlbnQgbW9kaWZpY2F0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gZm9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gTGV04oCZcyBzZWUgaG93IGNsZWFubHkgaXQgaGFuZGxlcyBvdXQtb2Ytb3JkZXIgc2VnbWVudHMgYW5kIGhvdyBpdCBtaWdodCBoYW5kbGUgYSBidXJzdCBvZiBwYWNrZXRzLiBHb3R0YSBkb3VibGUtY2hlY2sgdGhhdCB0aGUgU1lOIGZsb29kaW5nIHByb3RlY3Rpb25zIGFyZSBzdGlsbCByb2J1c3QgYW5kIGVmZmVjdGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE5MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM3OjExLjUwMTM3NDAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzIzNTUxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lucHV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdGNwX2lucHV0LmM9Njg1Mz1zdGF0aWMgaW50IHRjcF9yY3Zfc3luc2VudF9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcwNzctXFx0XFx0ICogd2UgaGF2ZSBubyByZWFzb25zIHRvIGFjY2VwdCBpdCBzb21ldGltZXMuXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NzA3ODpcXHRcXHQgKiBBbHNvLCBzZWVtcyB0aGUgY29kZSBkb2luZyBpdCBpbiBzdGVwNiBvZiB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MDc5LVxcdFxcdCAqIGlzIG5vdCBmbGF3bGVzcy4gU28sIGRpc2NhcmQgcGFja2V0IGZvciBzYW5pdHkuXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz03MTUyPWVudW0gc2tiX2Ryb3BfcmVhc29uXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NzE1Mzp0Y3BfcmN2X3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcxNTQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzoxMS41OTQ2MTU2MjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE0NTUwMzg5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgVENQIFJlY2VpdmUgUGF0aCoqXG5cbk9rYXksIHNvIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBhbmQgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AgYXJlIGV4cG9zZWQsIHdoaWNoIHN1Z2dlc3RzIHRoZXkncmUgaW1wb3J0YW50IGVudHJ5IHBvaW50cyBvciBhdCBsZWFzdCB1c2VkIG91dHNpZGUgdGhlaXIgaW1tZWRpYXRlIHNjb3BlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSAqY2FsbGVkKiB3aXRoaW4gdGhlIG92ZXJhbGwgVENQIHJlY2VpdmUgcGF0aC4gSSBuZWVkIHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUuIEknbGwgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGB0Y3BfdjRfZG9fcmN2YCBhbmQgYHRjcF92Nl9kb19yY3ZgIOKAkyB0aG9zZSBzZWVtIGxpa2UgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIG1hbmFnaW5nIHRoZSBpbml0aWFsIHJlY2VwdGlvbiBvZiBkYXRhIGF0IHRoZSBJUCBsYXllci4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3b3VsZCBzdGFydCB3aXRoIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY2NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM3OjE0Ljc0MDEyMTgwOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3MjI5NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9yY3ZfZXN0YWJsaXNoZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTE4MzA9aW50IHRjcF92NF9kb19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xODUzLVxcdFxcdH1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjE4NTQ6XFx0XFx0dGNwX3Jjdl9lc3RhYmxpc2hlZChzaywgc2tiKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE4NTUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTE5MDE9ZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX2FkZF9iYWNrbG9nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTk4MC1cXHRcXHQvKiBXZSBoYXZlIHRvIHVwZGF0ZSBib3RoIFRDUF9TS0JfQ0IodGFpbCktXFx1MDAzZXRjcF9mbGFncyBhbmRcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjE5ODE6XFx0XFx0ICogdGh0YWlsLVxcdTAwM2VmaW4sIHNvIHRoYXQgdGhlIGZhc3QgcGF0aCBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKClcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE5ODItXFx0XFx0ICogaXMgbm90IGVudGVyZWQgaWYgd2UgYXBwZW5kIGEgcGFja2V0IHdpdGggYSBGSU4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM3OjE0Ljg0NzM1ODk4MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODk0NjE2NDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYXNvbmluZyBmb3IgRnV6emluZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBUQ1AgSVB2NCByZWNlaXZlIHBhdGgsIHNwZWNpZmljYWxseSB0aGUgY2hhbmdlIHJlbGF0ZWQgdG8gc2VxdWVuY2UgbnVtYmVyIGhhbmRsaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNvbnNpZGVyIHdoaWNoIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiB3aXRoIHRoZSBgRm9jdXNTeW1ib2xzYCBzZXR0aW5nLCBhbmQgc2luY2UgYHRjcF92NF9yY3ZgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGFuZCBib3RoIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBhbmQgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AgYXJlIHJpZ2h0IGluIHRoZSBob3QgcGF0aCwgbXkgZmlyc3QgaW5zdGluY3Qgd2FzIHRvIGVpdGhlciBsZWF2ZSBpdCBlbXB0eSBvciBzcGVjaWZ5IGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgLiBCdXQgSSByZW1lbWJlciB0aGUgZ3VpZGFuY2UgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy5cblxuYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AgaGFuZGxlcyBzdGF0ZSB0cmFuc2l0aW9ucywgd2hpY2ggaXMgbGVzcyBvZiBhIGhvdCBwYXRoIHRoYW4gdGhlIEVTVEFCTElTSEVEIHN0YXRlIHByb2Nlc3NpbmcgaW4gYHRjcF9yY3ZfZXN0YWJsaXNoZWRgLCBidXQgc3RpbGwgcHJldHR5IGdlbmVyaWMuIEluaXRpYWxseSwgSSB0aG91Z2h0IGxlYXZpbmcgYEZvY3VzU3ltYm9sc2AgZW1wdHkgb3Igc3BlY2lmeWluZyBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYCB3b3VsZCBiZSB0aGUgd2F5IHRvIGdvLlxuXG5UaGVuIEkgcGF1c2VkLiBUaGlzIGNoYW5nZSBpcyBhYm91dCAqZHJvcHBpbmcgb2xkIHNlcXVlbmNlIG51bWJlcnMqIC0tIHRoYXQncyBmdW5kYW1lbnRhbCBUQ1AgYmVoYXZpb3IhIFNvLCBldmVuIHRob3VnaCB0aGVzZSBhcmUgaG90LXBhdGggZnVuY3Rpb25zLCB0aGUgKmNvcmUqIG9mIFRDUCByZWNlaXZlIGlzIGFmZmVjdGVkLiBBYnNvbHV0ZWx5LCBJIG5lZWQgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vIG5lZWQgZm9yIHNwZWNpZmljIGNvbmZpZ3M7IGl0J3MgYSBjb3JlIElQdjQgVENQIHRoaW5nLlxuXG5TbywgSSBrZWVwIGdvaW5nIGJhY2sgYW5kIGZvcnRoIG9uIGBGb2N1c1N5bWJvbHNgLCBidXQgaXQga2VlcHMgcG9pbnRpbmcgbWUgYmFjayB0byBsZWF2aW5nIGl0IGVtcHR5LiBXaGlsZSBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYCBpcyBhIGRlY2VudCBjYW5kaWRhdGUgaWYgd2Ugd2FudCB0byBmb2N1cyBvbiBub24tZXN0YWJsaXNoZWQgc3RhdGVzLCB0aGUgcGF0Y2ggYWN0dWFsbHkgYWZmZWN0cyBgdGNwX3NlcXVlbmNlYCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgZnJvbSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCwgd2hpY2gsIGluIHR1cm4sIGlzIGNhbGxlZCBieSBib3RoIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBhbmQgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AuIFNvIGl0J3Mgbm90IGp1c3Qgc29tZSBjb3JuZXIgY2FzZS4gSXQgYWZmZWN0cyB0aGUgZW50aXJlIFRDUCByZWNlaXZlIHByb2Nlc3NpbmcgbG9naWMuIExlYXZpbmcgYEZvY3VzU3ltYm9sc2AgZW1wdHkgd2lsbCBnZXQgbWUgdGhlIGJyb2FkZXN0IGNvdmVyYWdlLlxuXG5Pa2F5LCBsZXQncyB3cml0ZSB0aGlzIGRvd24gdG8gbWFrZSBzdXJlIGl0J3MgY2xlYXI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1Agc2VxdWVuY2UgdmFsaWRhdGlvbiBsb2dpYyBpbiBgdGNwX3NlcXVlbmNlYCAoY2FsbGVkIHZpYSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCkgdG8gZHJvcCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMgd2hlcmUgYGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiIFRoYXQgc2hvdWxkIGRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjAwLCJPdXRwdXRUb2tlbnMiOjEwNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzoyMi43NDE5Nzc1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1Agc2VxdWVuY2UgdmFsaWRhdGlvbiBsb2dpYyBpbiBgdGNwX3NlcXVlbmNlYCAoY2FsbGVkIHZpYSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCkgdG8gZHJvcCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMgd2hlcmUgYGVuZF9zZXEgPT0gdHAtXFx1MDAzZXJjdl93dXAgXFx1MDAyNlxcdTAwMjYgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIHNlcXVlbmNlIHZhbGlkYXRpb24gbG9naWMgaW4gYHRjcF9zZXF1ZW5jZWAgKGNhbGxlZCB2aWEgYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2ApIHRvIGRyb3AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzIHdoZXJlIGBlbmRfc2VxID09IHRwLVxcdTAwM2VyY3Zfd3VwIFxcdTAwMjZcXHUwMDI2IHNlcSAhPSBlbmRfc2VxYC4gVGhpcyBpcyBhIGNvcmUgVENQIHJlY2VpdmUgcGF0aCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjI6Mzc6MjIuNzQyMDAwMzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MDk2NjIzMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzoyMi43NDI0MTI5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY1MDkyNDQyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgZHJvcHBpbmcgVENQIHBhY2tldHMgd2l0aCBvbGQgc2VxdWVuY2UgbnVtYmVycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93IGJhc2VkIG9uIFRDUCBzZXF1ZW5jZSBudW1iZXJzLCB3aGljaCBkb2VzIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgS01TQU4gd291bGQgZGV0ZWN0LiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZiNzAxNDQ5MWQ2NzRiNWRhNzBhZGJiMDNiMjRkYWU2OTAzNTAyNGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAyMjozNjo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjNiZmEwZjA3ZGQ1NzIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbkBAIC00ODQ0LDcgKzQ4NDQsOCBAQCBzdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX3NlcXVlbmNlKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbiBcdGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuIFx0dTMyIHNlcV9saW1pdDtcbiBcbi1cdGlmIChiZWZvcmUoZW5kX3NlcSwgdHAtXHUwMDNlcmN2X3d1cCkpXG4rXHRpZiAoYmVmb3JlKGVuZF9zZXEsIHRwLVx1MDAzZXJjdl93dXApIHx8XG4rXHQgICAgKGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXEpKVxuIFx0XHRyZXR1cm4gU0tCX0RST1BfUkVBU09OX1RDUF9PTERfU0VRVUVOQ0U7XG4gXG4gXHRzZXFfbGltaXQgPSB0cC1cdTAwM2VyY3Zfbnh0ICsgdGNwX21heF9yZWNlaXZlX3dpbmRvdyh0cCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzoyMi43NDI0MTM5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTA5MjI0NzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBTZXF1ZW5jZSBOdW1iZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgdGNwX2lucHV0LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB0Y3Bfc2VxdWVuY2VgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0J3MgYSBmaXggZm9yIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgb2xkIHNlcXVlbmNlIG51bWJlcnMsIHRoZSBjb25kaXRpb24gaXMgYmVpbmcgY2hhbmdlZCB0byBiZXR0ZXIgaGFuZGxlIHNvbWUgZWRnZSBjYXNlcy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcywgb2YgY291cnNlLiBDb3VsZCB0aGlzIGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIHdyaXRlcz8gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBMZXQncyBzZWUuLi4gdGhlIGNvZGUganVzdCBjaGVja3MgYW5kIGRyb3BzIHBhY2tldHMgYmFzZWQgb24gc2VxdWVuY2UgbnVtYmVyIGNvbXBhcmlzb25zLiBObyBhbGxvY2F0aW9ucywgbm8gY29waWVzIHRvIHVzZXIgc3BhY2UsIG5vIHVzYWdlIG9mIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJdCdzIHJlYWxseSBqdXN0IGEgY29uZGl0aW9uYWwgYFNLQl9EUk9QX1JFQVNPTmAgYmFzZWQgb24gYSBzZXF1ZW5jZSBudW1iZXIgY2hlY2suXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgdGNwX3NlcXVlbmNlYCBpdHNlbGYuIEl0IHJlY2VpdmVzIHRoZSBgc2tgLCBgc2VxYCwgYW5kIGBlbmRfc2VxYCBwYXJhbWV0ZXJzLCBhbmQgcmV0dXJucyBhbiBgZW51bSBza2JfZHJvcF9yZWFzb25gLiBQdXJlIGxvZ2ljLCBhcyBJIHN1c3BlY3RlZC4gTm8gc2lnbnMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UuIFRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgc2VxdWVuY2UgbnVtYmVyIGNvbXBhcmlzb24gYW5kIHBhY2tldCBkcm9wIGxvZ2ljIGNoYW5nZS5cblxuVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJ3QgbmVjZXNzYXJ5IGhlcmUuIFRoaXMgY2hhbmdlIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcy4gSXQncyBqdXN0IGNvbnRyb2wgZmxvdy4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBwbGVudHkgc3VmZmljaWVudCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzb2xpZCBpbiB0ZXJtcyBvZiBtZW1vcnkgY29ycnVwdGlvbi4gU2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS4gTXkgcmVhc29uaW5nIGlzIHNvdW5kOiB0aGUgcGF0Y2ggc2ltcGx5IHJlZmluZXMgdGhlIHBhY2tldCBkcm9wcGluZyBsb2dpYyBiYXNlZCBvbiBzZXF1ZW5jZSBudW1iZXJzLCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDMyLCJPdXRwdXRUb2tlbnMiOjExMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM3OjI5LjI1MTY0MTMyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkcm9wcGluZyBUQ1AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3cgYmFzZWQgb24gVENQIHNlcXVlbmNlIG51bWJlcnMsIHdoaWNoIGRvZXMgbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBLTVNBTiB3b3VsZCBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkcm9wcGluZyBUQ1AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3cgYmFzZWQgb24gVENQIHNlcXVlbmNlIG51bWJlcnMsIHdoaWNoIGRvZXMgbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBLTVNBTiB3b3VsZCBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvmr4b[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 22:15:37 +0000 UTC FinishedAt: 2026-08-18 22:37:30 +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": "7a3c0289c3c8eb4607dff448ae9ff9f902c813af", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7a3c0289c3c8eb4607dff448ae9ff9f902c813af", "config_name": "upstream-apparmor-kasan.config", "series_id": "aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkcm9wcGluZyBUQ1AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3cgYmFzZWQgb24gVENQIHNlcXVlbmNlIG51bWJlcnMsIHdoaWNoIGRvZXMgbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBLTVNBTiB3b3VsZCBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1Agc2VxdWVuY2UgdmFsaWRhdGlvbiBsb2dpYyBpbiBgdGNwX3NlcXVlbmNlYCAoY2FsbGVkIHZpYSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCkgdG8gZHJvcCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMgd2hlcmUgYGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZmI3MDE0NDkxZDY3NGI1ZGE3MGFkYmIwM2IyNGRhZTY5MDM1MDI0ZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDIyOjM2OjUzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjNiZmEwZjA3ZGQ1NzIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbkBAIC00ODQ0LDcgJiM0Mzs0ODQ0LDggQEAgc3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHRjcF9zZXF1ZW5jZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXG4gXHRjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcbiBcdHUzMiBzZXFfbGltaXQ7XG4gXG4tXHRpZiAoYmVmb3JlKGVuZF9zZXEsIHRwLVx1MDAzZXJjdl93dXApKVxuJiM0MztcdGlmIChiZWZvcmUoZW5kX3NlcSwgdHAtXHUwMDNlcmN2X3d1cCkgfHxcbiYjNDM7XHQgICAgKGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXEpKVxuIFx0XHRyZXR1cm4gU0tCX0RST1BfUkVBU09OX1RDUF9PTERfU0VRVUVOQ0U7XG4gXG4gXHRzZXFfbGltaXQgPSB0cC1cdTAwM2VyY3Zfbnh0ICYjNDM7IHRjcF9tYXhfcmVjZWl2ZV93aW5kb3codHApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIHNlcXVlbmNlIHZhbGlkYXRpb24gbG9naWMgaW4gYHRjcF9zZXF1ZW5jZWAgKGNhbGxlZCB2aWEgYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2ApIHRvIGRyb3AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzIHdoZXJlIGBlbmRfc2VxID09IHRwLVx1MDAzZXJjdl93dXAgXHUwMDI2XHUwMDI2IHNlcSAhPSBlbmRfc2VxYC4gVGhpcyBpcyBhIGNvcmUgVENQIHJlY2VpdmUgcGF0aCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZiNzAxNDQ5MWQ2NzRiNWRhNzBhZGJiMDNiMjRkYWU2OTAzNTAyNGYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAyMjozNjo1MyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKaW5kZXggZGFmZjkzZDUxMzQyOC4uM2JmYTBmMDdkZDU3MiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lucHV0LmMKQEAgLTQ4NDQsNyAmIzQzOzQ4NDQsOCBAQCBzdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX3NlcXVlbmNlKGNvbnN0IHN0cnVjdCBzb2NrICpzaywKIAljb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTsKIAl1MzIgc2VxX2xpbWl0OwogCi0JaWYgKGJlZm9yZShlbmRfc2VxLCB0cC0mZ3Q7cmN2X3d1cCkpCiYjNDM7CWlmIChiZWZvcmUoZW5kX3NlcSwgdHAtJmd0O3Jjdl93dXApIHx8CiYjNDM7CSAgICAoZW5kX3NlcSA9PSB0cC0mZ3Q7cmN2X3d1cCAmYW1wOyZhbXA7IHNlcSAhPSBlbmRfc2VxKSkKIAkJcmV0dXJuIFNLQl9EUk9QX1JFQVNPTl9UQ1BfT0xEX1NFUVVFTkNFOwogCiAJc2VxX2xpbWl0ID0gdHAtJmd0O3Jjdl9ueHQgJiM0MzsgdGNwX21heF9yZWNlaXZlX3dpbmRvdyh0cCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVENQIElucHV0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtb2RpZnlpbmcgYG5ldC9pcHY0L3RjcF9pbnB1dC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdGNwX3NlcXVlbmNlYCBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyAqY3JpdGljYWwqIOKAkyBpdCBoYW5kbGVzIHNlcXVlbmNlIG51bWJlciB2YWxpZGF0aW9uLCBhIGNvcmUgYXNwZWN0IG9mIFRDUC4gVGhlIHBhdGNoIGNoYW5nZXMgd2hlbiBhIHBhY2tldCBpcyBkcm9wcGVkIHdpdGggYFNLQl9EUk9QX1JFQVNPTl9UQ1BfT0xEX1NFUVVFTkNFYCwgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzZXF1ZW5jZSBudW1iZXIgaGFuZGxpbmcgYW5kIHJlb3JkZXJpbmcuCgpPcmlnaW5hbGx5LCB0aGUgY2hlY2sgd2FzIHNpbXBseSBgYmVmb3JlKGVuZF9zZXEsIHRwLSZndDtyY3Zfd3VwKWAuIE5vdywgaXQmIzM5O3MgYmVlbiBleHBhbmRlZCB0byBgYmVmb3JlKGVuZF9zZXEsIHRwLSZndDtyY3Zfd3VwKSB8fCAoZW5kX3NlcSA9PSB0cC0mZ3Q7cmN2X3d1cCAmYW1wOyZhbXA7IHNlcSAhPSBlbmRfc2VxKWAuIEVzc2VudGlhbGx5LCB0aGUgY2hhbmdlIGxvb2tzIGxpa2UgaXQgbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkaXNjYXJkaW5nIHBhY2tldHMgd2hlcmUgdGhlIHNlcXVlbmNlIG51bWJlciBpcyAmIzM0O29sZCYjMzQ7IGFuZCBhbHNvIGNvbnNpZGVycyBhIG5ldyBjYXNlIHdoZXJlIHRoZSBzZXF1ZW5jZSBhbmQgZW5kIHNlcXVlbmNlIGFyZSBlcXVhbCwgYnV0IHRoZSBzZXF1ZW5jZSBudW1iZXIgaXRzZWxmIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgZW5kIHNlcXVlbmNlIG51bWJlci4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGxpa2VseSBhaW1lZCBhdCBzb21lIGVkZ2UgY2FzZS4KCkdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIGB0Y3Bfc2VxdWVuY2VgIGFuZCB0aGlzIGNoYW5nZSB0byB0aGUgc2VxdWVuY2UgbnVtYmVyIHZhbGlkYXRpb24gbG9naWMsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIGEgaGlnaGx5IHJlYWNoYWJsZSBmdW5jdGlvbiwgYW5kIGFueSBzdWJ0bGUgZmxhdyBpbiBzZXF1ZW5jZSBudW1iZXIgaGFuZGxpbmcgY2FuIGxlYWQgdG8gc2VyaW91cyB2dWxuZXJhYmlsaXRpZXMuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2Ugd2l0aGluIHRoZSBjb2RlLCBidXQgbXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyB3YXJyYW50cyBzZXJpb3VzIGF0dGVudGlvbi4gSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgdGhlIGB0Y3Bfc2VxdWVuY2VgIGZ1bmN0aW9uIGluIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AgaW1tZWRpYXRlbHkgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3Bfc2VxdWVuY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz00NzkxPXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB0Y3BfZGlzb3JkZXJlZF9hY2tfY2hlY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTQ4MzktXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo0ODQwOnN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB0Y3Bfc2VxdWVuY2UoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDg0MS1cdFx0XHRcdFx0IHUzMiBzZXEsIHUzMiBlbmRfc2VxLFxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTYzMjM9c3RhdGljIGJvb2wgdGNwX3ZhbGlkYXRlX2luY29taW5nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02MzYwLVx0LyogU3RlcCAxOiBjaGVjayBzZXF1ZW5jZSBudW1iZXIgKi9cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjYzNjE6XHRyZWFzb24gPSB0Y3Bfc2VxdWVuY2Uoc2ssIFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VzZXEsXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02MzYyLVx0XHRcdCAgICAgIFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VlbmRfc2VxLCB0aCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjI6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGB0Y3Bfc2VxdWVuY2VgIENhbGxlcnMqKgoKQWxyaWdodCwgc28gYHRjcF9zZXF1ZW5jZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGl0JiMzOTtzIGxpa2VseSBpbnRlcm5hbCB0byBhIHNwZWNpZmljIGNvbXBpbGF0aW9uIHVuaXQsIG1heWJlIGV2ZW4ganVzdCB0aGlzIHNvdXJjZSBmaWxlLiBBbmQsIGJhc2VkIG9uIHRoZSBjb2RlIGxheW91dCwgaXQmIzM5O3MgY2FsbGVkIGJ5IGB0Y3BfdmFsaWRhdGVfaW5jb21pbmdgLCB3aGljaCBpcyAqYWxzbyogc3RhdGljLiBUaGlzIGlzIGludGVyZXN0aW5nIOKAkyBpdCBpbXBsaWVzIGEgbGV2ZWwgb2YgZW5jYXBzdWxhdGlvbiwgcG90ZW50aWFsbHkgZGVzaWduZWQgdG8ga2VlcCB0aGVzZSBzZXF1ZW5jZSBudW1iZXIgdmFsaWRhdGlvbiByb3V0aW5lcyB0aWdodGx5IGNvdXBsZWQgYW5kIGhpZGRlbiBmcm9tIHRoZSBicm9hZGVyIFRDUCBzdGFjay4KCk15IG5leHQgc3RlcD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlICoqbm9uLXN0YXRpYyoqIGNhbGxlcnMgb2YgYHRjcF9zZXF1ZW5jZWAuIFVuZGVyc3RhbmRpbmcgKndobyogYmV5b25kIHRoZSBpbW1lZGlhdGUgc2NvcGUgb2YgdGhpcyBmaWxlIGlzIHVzaW5nIHRoaXMgZnVuY3Rpb24gaXMgY3JpdGljYWwuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3Mgc3RhdGljIGFuZCBjYWxsZWQgYnkgYW5vdGhlciBzdGF0aWMgZnVuY3Rpb24gcmFpc2VzIHRoZSBxdWVzdGlvbjogaXMgdGhpcyByZWFsbHkgdGhlIG9ubHkgcGxhY2UgdGhpcyBzZXF1ZW5jZSBjaGVjayBpcyB0YWtpbmcgcGxhY2U/IElzIHRoZXJlIGEgYnJvYWRlciBpbnRlcmFjdGlvbiBnb2luZyBvbiBvciBhcmUgdGhlc2Ugcm91dGluZXMgcGFydCBvZiBhIHZlcnkgdGlnaHRseSBjb250YWluZWQgZmVhdHVyZT8gRGV0ZXJtaW5pbmcgdGhlIGJyb2FkZXIgY2FsbHMgd2lsbCBoZWxwIG1lIHRvIGRldGVybWluZSBob3cgdGlnaHRseSB0aGlzIGxvZ2ljIGlzIGNvdXBsZWQgdG8gdGhlIHJlc3Qgb2YgdGhlIHN0YWNrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHRoZSBjb3JlIG9mIHRoZSB2YWxpZGF0aW9uIG9yIGp1c3QgcGFydCBvZiBhIGxhcmdlciBwcm9jZXNzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgY2FsbGluZyBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfdmFsaWRhdGVfaW5jb21pbmcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz02MzExPXN0YXRpYyBib29sIHRjcF9yZXNldF9jaGVjayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNjMyMi0gKi9cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjYzMjM6c3RhdGljIGJvb2wgdGNwX3ZhbGlkYXRlX2luY29taW5nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTYzMjQtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCB0Y3BoZHIgKnRoLCBpbnQgc3luX2luZXJyKVxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTY1MDE9dm9pZCB0Y3BfcmN2X2VzdGFibGlzaGVkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02NjcyLXZhbGlkYXRlOlxubmV0L2lwdjQvdGNwX2lucHV0LmM6NjY3MzpcdGlmICghdGNwX3ZhbGlkYXRlX2luY29taW5nKHNrLCBza2IsIHRoLCAxKSlcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTY2NzQtXHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz03MTUzPXRjcF9yY3Zfc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNzIyNy1cdH1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjcyMjg6XHRpZiAoIXRjcF92YWxpZGF0ZV9pbmNvbWluZyhzaywgc2tiLCB0aCwgMCkpXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MjI5LVx0XHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTczCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBUQ1AgUmVjZWl2ZSBQYXRoIEZ1bmN0aW9uIENhbmRpZGF0ZXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIFRDUCByZWNlaXZlIHBhdGggYW5hbHlzaXMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gaW5jbHVkZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgYW5kIGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgIGluIGBGb2N1c1N5bWJvbHNgLiBUaG9zZSBhcmUgdGhlIG5vbi1zdGF0aWMgY2FsbGVycywgdGhlIGNvcmUgZW50cnkgcG9pbnRzLCB0aGUgbWFpbiBmdW5jdGlvbnMsIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucywgdGhlIG9uZXMgSSYjMzk7ZCBleHBlY3QgdG8gYmUgc2lnbmlmaWNhbnQuIEJ1dCB3YWl0IGEgbWludXRlLi4uIHRob3NlIGFyZSAqZXh0cmVtZWx5KiBob3QgcGF0aCBmdW5jdGlvbnMuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhcm5zIGFnYWluc3QgaW5jbHVkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGF2b2lkIHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIEhtbS4KCkkmIzM5O20gc3RhcnRpbmcgdG8gdGhpbmssIGlzIHRoZXJlIGEgYmV0dGVyIGZ1bmN0aW9uPyBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCBpcyBzdGF0aWMsIGB0Y3Bfc2VxdWVuY2VgIGlzIHN0YXRpYy4gSWYgdGhvc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIHJlYWxseSB0aGUgb25seSBlbnRyeSBwb2ludHMsIHNob3VsZCBJIGp1c3Qgbm90IGxpc3QgKmFueSogYEZvY3VzU3ltYm9sc2A/IE9yIHNob3VsZCBJIGp1c3QgaW5jbHVkZSBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgYW5kIGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgIGFuZCBob3BlIGZvciB0aGUgYmVzdCwgYmVjYXVzZSB0aGV5IGFyZSB0aGUgbWFpbiBlbnRyeSBwb2ludHMgZm9yIFRDUCBwYWNrZXRzPwoKTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBJJiMzOTttIG1pc3NpbmcgaGVyZS4gTmVlZCB0byBiZSBzdXJlIG9mIG15IGZhY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9yY3ZfZXN0YWJsaXNoZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz02MzIzPXN0YXRpYyBib29sIHRjcF92YWxpZGF0ZV9pbmNvbWluZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvdGNwX2lucHV0LmMtNjUwMC0gKi9cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjY1MDE6dm9pZCB0Y3BfcmN2X2VzdGFibGlzaGVkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTY1MDIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AqKgoKT2theSwgbGV0JiMzOTtzIHB1bGwgdXAgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBleGFjdGx5IGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgaW5jb21pbmcgc2VnbWVudHMgYW5kIG1hbmFnZXMgdGhlIFRDUCBzdGF0ZSBtYWNoaW5lLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBob3cgaXQgZGVhbHMgd2l0aCB0aGUgc3RhdGUgdHJhbnNpdGlvbnMsIHJldHJhbnNtaXNzaW9ucywgYW5kIGFja25vd2xlZGdlbWVudHMuIEnigJltIHRoaW5raW5nIGFib3V0IGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbWVjaGFuaXNtcyBhbmQgd2hldGhlciB0aGVyZSBoYXZlIGJlZW4gYW55IHJlY2VudCBtb2RpZmljYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBmb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLiBMZXTigJlzIHNlZSBob3cgY2xlYW5seSBpdCBoYW5kbGVzIG91dC1vZi1vcmRlciBzZWdtZW50cyBhbmQgaG93IGl0IG1pZ2h0IGhhbmRsZSBhIGJ1cnN0IG9mIHBhY2tldHMuIEdvdHRhIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBTWU4gZmxvb2RpbmcgcHJvdGVjdGlvbnMgYXJlIHN0aWxsIHJvYnVzdCBhbmQgZWZmZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfcmN2X3N0YXRlX3Byb2Nlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaW5wdXQuYz02ODUzPXN0YXRpYyBpbnQgdGNwX3Jjdl9zeW5zZW50X3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcwNzctXHRcdCAqIHdlIGhhdmUgbm8gcmVhc29ucyB0byBhY2NlcHQgaXQgc29tZXRpbWVzLlxubmV0L2lwdjQvdGNwX2lucHV0LmM6NzA3ODpcdFx0ICogQWxzbywgc2VlbXMgdGhlIGNvZGUgZG9pbmcgaXQgaW4gc3RlcDYgb2YgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MDc5LVx0XHQgKiBpcyBub3QgZmxhd2xlc3MuIFNvLCBkaXNjYXJkIHBhY2tldCBmb3Igc2FuaXR5LlxuLS1cbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTcxNTI9ZW51bSBza2JfZHJvcF9yZWFzb25cbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjcxNTM6dGNwX3Jjdl9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcxNTQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjY1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipBbmFseXppbmcgVENQIFJlY2VpdmUgUGF0aCoqCgpPa2F5LCBzbyBgdGNwX3Jjdl9lc3RhYmxpc2hlZGAgYW5kIGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgIGFyZSBleHBvc2VkLCB3aGljaCBzdWdnZXN0cyB0aGV5JiMzOTtyZSBpbXBvcnRhbnQgZW50cnkgcG9pbnRzIG9yIGF0IGxlYXN0IHVzZWQgb3V0c2lkZSB0aGVpciBpbW1lZGlhdGUgc2NvcGUuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlICpjYWxsZWQqIHdpdGhpbiB0aGUgb3ZlcmFsbCBUQ1AgcmVjZWl2ZSBwYXRoLiBJIG5lZWQgdG8gc2VlIHRoZSBiaWdnZXIgcGljdHVyZS4gSSYjMzk7bGwgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGB0Y3BfdjRfZG9fcmN2YCBhbmQgYHRjcF92Nl9kb19yY3ZgIOKAkyB0aG9zZSBzZWVtIGxpa2UgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIG1hbmFnaW5nIHRoZSBpbml0aWFsIHJlY2VwdGlvbiBvZiBkYXRhIGF0IHRoZSBJUCBsYXllci4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3b3VsZCBzdGFydCB3aXRoIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjI6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX3Jjdl9lc3RhYmxpc2hlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0xODMwPWludCB0Y3BfdjRfZG9fcmN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE4NTMtXHRcdH1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MTg1NDpcdFx0dGNwX3Jjdl9lc3RhYmxpc2hlZChzaywgc2tiKTtcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTg1NS1cdFx0cmV0dXJuIDA7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0xOTAxPWVudW0gc2tiX2Ryb3BfcmVhc29uIHRjcF9hZGRfYmFja2xvZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0xOTgwLVx0XHQvKiBXZSBoYXZlIHRvIHVwZGF0ZSBib3RoIFRDUF9TS0JfQ0IodGFpbCktXHUwMDNldGNwX2ZsYWdzIGFuZFxubmV0L2lwdjQvdGNwX2lwdjQuYzoxOTgxOlx0XHQgKiB0aHRhaWwtXHUwMDNlZmluLCBzbyB0aGF0IHRoZSBmYXN0IHBhdGggaW4gdGNwX3Jjdl9lc3RhYmxpc2hlZCgpXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE5ODItXHRcdCAqIGlzIG5vdCBlbnRlcmVkIGlmIHdlIGFwcGVuZCBhIHBhY2tldCB3aXRoIGEgRklOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjAwCgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDQ4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFzb25pbmcgZm9yIEZ1enppbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBUQ1AgSVB2NCByZWNlaXZlIHBhdGgsIHNwZWNpZmljYWxseSB0aGUgY2hhbmdlIHJlbGF0ZWQgdG8gc2VxdWVuY2UgbnVtYmVyIGhhbmRsaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNvbnNpZGVyIHdoaWNoIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiB3aXRoIHRoZSBgRm9jdXNTeW1ib2xzYCBzZXR0aW5nLCBhbmQgc2luY2UgYHRjcF92NF9yY3ZgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGFuZCBib3RoIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBhbmQgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AgYXJlIHJpZ2h0IGluIHRoZSBob3QgcGF0aCwgbXkgZmlyc3QgaW5zdGluY3Qgd2FzIHRvIGVpdGhlciBsZWF2ZSBpdCBlbXB0eSBvciBzcGVjaWZ5IGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgLiBCdXQgSSByZW1lbWJlciB0aGUgZ3VpZGFuY2UgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy4KCmB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgIGhhbmRsZXMgc3RhdGUgdHJhbnNpdGlvbnMsIHdoaWNoIGlzIGxlc3Mgb2YgYSBob3QgcGF0aCB0aGFuIHRoZSBFU1RBQkxJU0hFRCBzdGF0ZSBwcm9jZXNzaW5nIGluIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCwgYnV0IHN0aWxsIHByZXR0eSBnZW5lcmljLiBJbml0aWFsbHksIEkgdGhvdWdodCBsZWF2aW5nIGBGb2N1c1N5bWJvbHNgIGVtcHR5IG9yIHNwZWNpZnlpbmcgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2Agd291bGQgYmUgdGhlIHdheSB0byBnby4KClRoZW4gSSBwYXVzZWQuIFRoaXMgY2hhbmdlIGlzIGFib3V0ICpkcm9wcGluZyBvbGQgc2VxdWVuY2UgbnVtYmVycyogLS0gdGhhdCYjMzk7cyBmdW5kYW1lbnRhbCBUQ1AgYmVoYXZpb3IhIFNvLCBldmVuIHRob3VnaCB0aGVzZSBhcmUgaG90LXBhdGggZnVuY3Rpb25zLCB0aGUgKmNvcmUqIG9mIFRDUCByZWNlaXZlIGlzIGFmZmVjdGVkLiBBYnNvbHV0ZWx5LCBJIG5lZWQgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpObyBuZWVkIGZvciBzcGVjaWZpYyBjb25maWdzOyBpdCYjMzk7cyBhIGNvcmUgSVB2NCBUQ1AgdGhpbmcuCgpTbywgSSBrZWVwIGdvaW5nIGJhY2sgYW5kIGZvcnRoIG9uIGBGb2N1c1N5bWJvbHNgLCBidXQgaXQga2VlcHMgcG9pbnRpbmcgbWUgYmFjayB0byBsZWF2aW5nIGl0IGVtcHR5LiBXaGlsZSBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYCBpcyBhIGRlY2VudCBjYW5kaWRhdGUgaWYgd2Ugd2FudCB0byBmb2N1cyBvbiBub24tZXN0YWJsaXNoZWQgc3RhdGVzLCB0aGUgcGF0Y2ggYWN0dWFsbHkgYWZmZWN0cyBgdGNwX3NlcXVlbmNlYCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgZnJvbSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCwgd2hpY2gsIGluIHR1cm4sIGlzIGNhbGxlZCBieSBib3RoIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBhbmQgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AuIFNvIGl0JiMzOTtzIG5vdCBqdXN0IHNvbWUgY29ybmVyIGNhc2UuIEl0IGFmZmVjdHMgdGhlIGVudGlyZSBUQ1AgcmVjZWl2ZSBwcm9jZXNzaW5nIGxvZ2ljLiBMZWF2aW5nIGBGb2N1c1N5bWJvbHNgIGVtcHR5IHdpbGwgZ2V0IG1lIHRoZSBicm9hZGVzdCBjb3ZlcmFnZS4KCk9rYXksIGxldCYjMzk7cyB3cml0ZSB0aGlzIGRvd24gdG8gbWFrZSBzdXJlIGl0JiMzOTtzIGNsZWFyOiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIHNlcXVlbmNlIHZhbGlkYXRpb24gbG9naWMgaW4gYHRjcF9zZXF1ZW5jZWAgKGNhbGxlZCB2aWEgYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2ApIHRvIGRyb3AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzIHdoZXJlIGBlbmRfc2VxID09IHRwLSZndDtyY3Zfd3VwICZhbXA7JmFtcDsgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7IFRoYXQgc2hvdWxkIGRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1Agc2VxdWVuY2UgdmFsaWRhdGlvbiBsb2dpYyBpbiBgdGNwX3NlcXVlbmNlYCAoY2FsbGVkIHZpYSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCkgdG8gZHJvcCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMgd2hlcmUgYGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIHNlcXVlbmNlIHZhbGlkYXRpb24gbG9naWMgaW4gYHRjcF9zZXF1ZW5jZWAgKGNhbGxlZCB2aWEgYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2ApIHRvIGRyb3AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzIHdoZXJlIGBlbmRfc2VxID09IHRwLVx1MDAzZXJjdl93dXAgXHUwMDI2XHUwMDI2IHNlcSAhPSBlbmRfc2VxYC4gVGhpcyBpcyBhIGNvcmUgVENQIHJlY2VpdmUgcGF0aCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMjI6Mzc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAyMjozNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRyb3BwaW5nIFRDUCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZC4gVGhlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiBUQ1Agc2VxdWVuY2UgbnVtYmVycywgd2hpY2ggZG9lcyBub3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyB0aGF0IEtNU0FOIHdvdWxkIGRldGVjdC4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gYnVncy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmI3MDE0NDkxZDY3NGI1ZGE3MGFkYmIwM2IyNGRhZTY5MDM1MDI0ZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDE4IDIyOjM2OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwppbmRleCBkYWZmOTNkNTEzNDI4Li4zYmZhMGYwN2RkNTcyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwpAQCAtNDg0NCw3ICYjNDM7NDg0NCw4IEBAIHN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB0Y3Bfc2VxdWVuY2UoY29uc3Qgc3RydWN0IHNvY2sgKnNrLAogCWNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spOwogCXUzMiBzZXFfbGltaXQ7CiAKLQlpZiAoYmVmb3JlKGVuZF9zZXEsIHRwLSZndDtyY3Zfd3VwKSkKJiM0MzsJaWYgKGJlZm9yZShlbmRfc2VxLCB0cC0mZ3Q7cmN2X3d1cCkgfHwKJiM0MzsJICAgIChlbmRfc2VxID09IHRwLSZndDtyY3Zfd3VwICZhbXA7JmFtcDsgc2VxICE9IGVuZF9zZXEpKQogCQlyZXR1cm4gU0tCX0RST1BfUkVBU09OX1RDUF9PTERfU0VRVUVOQ0U7CiAKIAlzZXFfbGltaXQgPSB0cC0mZ3Q7cmN2X254dCAmIzQzOyB0Y3BfbWF4X3JlY2VpdmVfd2luZG93KHRwKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzIKCQkJCQkJCW91dHB1dDogMTEyCgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBTZXF1ZW5jZSBOdW1iZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGB0Y3BfaW5wdXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYHRjcF9zZXF1ZW5jZWAgZnVuY3Rpb24uIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYSBmaXggZm9yIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgb2xkIHNlcXVlbmNlIG51bWJlcnMsIHRoZSBjb25kaXRpb24gaXMgYmVpbmcgY2hhbmdlZCB0byBiZXR0ZXIgaGFuZGxlIHNvbWUgZWRnZSBjYXNlcy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMsIG9mIGNvdXJzZS4gQ291bGQgdGhpcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciB3cml0ZXM/IEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSBqdXN0IGNoZWNrcyBhbmQgZHJvcHMgcGFja2V0cyBiYXNlZCBvbiBzZXF1ZW5jZSBudW1iZXIgY29tcGFyaXNvbnMuIE5vIGFsbG9jYXRpb25zLCBubyBjb3BpZXMgdG8gdXNlciBzcGFjZSwgbm8gdXNhZ2Ugb2YgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0JiMzOTtzIHJlYWxseSBqdXN0IGEgY29uZGl0aW9uYWwgYFNLQl9EUk9QX1JFQVNPTmAgYmFzZWQgb24gYSBzZXF1ZW5jZSBudW1iZXIgY2hlY2suCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IGB0Y3Bfc2VxdWVuY2VgIGl0c2VsZi4gSXQgcmVjZWl2ZXMgdGhlIGBza2AsIGBzZXFgLCBhbmQgYGVuZF9zZXFgIHBhcmFtZXRlcnMsIGFuZCByZXR1cm5zIGFuIGBlbnVtIHNrYl9kcm9wX3JlYXNvbmAuIFB1cmUgbG9naWMsIGFzIEkgc3VzcGVjdGVkLiBObyBzaWducyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZS4gVGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBzZXF1ZW5jZSBudW1iZXIgY29tcGFyaXNvbiBhbmQgcGFja2V0IGRyb3AgbG9naWMgY2hhbmdlLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IEtNU0FOIGlzbiYjMzk7dCBuZWNlc3NhcnkgaGVyZS4gVGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcy4gSXQmIzM5O3MganVzdCBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgcGxlbnR5IHN1ZmZpY2llbnQgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgc29saWQgaW4gdGVybXMgb2YgbWVtb3J5IGNvcnJ1cHRpb24uIFNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgIGlzIHRoZSByaWdodCBjYWxsIGhlcmUuIE15IHJlYXNvbmluZyBpcyBzb3VuZDogdGhlIHBhdGNoIHNpbXBseSByZWZpbmVzIHRoZSBwYWNrZXQgZHJvcHBpbmcgbG9naWMgYmFzZWQgb24gc2VxdWVuY2UgbnVtYmVycywgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDIyOjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgZHJvcHBpbmcgVENQIHBhY2tldHMgd2l0aCBvbGQgc2VxdWVuY2UgbnVtYmVycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93IGJhc2VkIG9uIFRDUCBzZXF1ZW5jZSBudW1iZXJzLCB3aGljaCBkb2VzIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgS01TQU4gd291bGQgZGV0ZWN0LiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkcm9wcGluZyBUQ1AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3cgYmFzZWQgb24gVENQIHNlcXVlbmNlIG51bWJlcnMsIHdoaWNoIGRvZXMgbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBLTVNBTiB3b3VsZCBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM2OjU0LjI4MDAyMzk1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0OTcxNjQ4MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgZHJvcHBpbmcgVENQIHBhY2tldHMgd2l0aCBvbGQgc2VxdWVuY2UgbnVtYmVycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93IGJhc2VkIG9uIFRDUCBzZXF1ZW5jZSBudW1iZXJzLCB3aGljaCBkb2VzIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgS01TQU4gd291bGQgZGV0ZWN0LiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1Agc2VxdWVuY2UgdmFsaWRhdGlvbiBsb2dpYyBpbiBgdGNwX3NlcXVlbmNlYCAoY2FsbGVkIHZpYSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCkgdG8gZHJvcCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMgd2hlcmUgYGVuZF9zZXEgPT0gdHAtXFx1MDAzZXJjdl93dXAgXFx1MDAyNlxcdTAwMjYgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNjo1NC4yODAwMzIzMzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMTYzNzk5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZiNzAxNDQ5MWQ2NzRiNWRhNzBhZGJiMDNiMjRkYWU2OTAzNTAyNGZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMjI6MzY6NTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjNiZmEwZjA3ZGQ1NzIgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lucHV0LmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfaW5wdXQuY1xcbkBAIC00ODQ0LDcgKzQ4NDQsOCBAQCBzdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX3NlcXVlbmNlKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG4gXFx0Y29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7XFxuIFxcdHUzMiBzZXFfbGltaXQ7XFxuIFxcbi1cXHRpZiAoYmVmb3JlKGVuZF9zZXEsIHRwLVxcdTAwM2VyY3Zfd3VwKSlcXG4rXFx0aWYgKGJlZm9yZShlbmRfc2VxLCB0cC1cXHUwMDNlcmN2X3d1cCkgfHxcXG4rXFx0ICAgIChlbmRfc2VxID09IHRwLVxcdTAwM2VyY3Zfd3VwIFxcdTAwMjZcXHUwMDI2IHNlcSAhPSBlbmRfc2VxKSlcXG4gXFx0XFx0cmV0dXJuIFNLQl9EUk9QX1JFQVNPTl9UQ1BfT0xEX1NFUVVFTkNFO1xcbiBcXG4gXFx0c2VxX2xpbWl0ID0gdHAtXFx1MDAzZXJjdl9ueHQgKyB0Y3BfbWF4X3JlY2VpdmVfd2luZG93KHRwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjI6MzY6NTQuOTEyNTkxMThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNzgyOTQwNzI5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRDUCBzZXF1ZW5jZSB2YWxpZGF0aW9uIGxvZ2ljIGluIGB0Y3Bfc2VxdWVuY2VgIChjYWxsZWQgdmlhIGB0Y3BfdmFsaWRhdGVfaW5jb21pbmdgKSB0byBkcm9wIHBhY2tldHMgd2l0aCBvbGQgc2VxdWVuY2UgbnVtYmVycyB3aGVyZSBgZW5kX3NlcSA9PSB0cC1cXHUwMDNlcmN2X3d1cCBcXHUwMDI2XFx1MDAyNiBzZXEgIT0gZW5kX3NlcWAuIFRoaXMgaXMgYSBjb3JlIFRDUCByZWNlaXZlIHBhdGggY2hhbmdlIHRoYXQgYWZmZWN0cyBwYWNrZXQgcHJvY2Vzc2luZyBhbmQgc3RhdGUgdHJhbnNpdGlvbnMsIG1ha2luZyBpdCBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZiNzAxNDQ5MWQ2NzRiNWRhNzBhZGJiMDNiMjRkYWU2OTAzNTAyNGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAyMjozNjo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjNiZmEwZjA3ZGQ1NzIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbkBAIC00ODQ0LDcgKzQ4NDQsOCBAQCBzdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX3NlcXVlbmNlKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbiBcdGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuIFx0dTMyIHNlcV9saW1pdDtcbiBcbi1cdGlmIChiZWZvcmUoZW5kX3NlcSwgdHAtXHUwMDNlcmN2X3d1cCkpXG4rXHRpZiAoYmVmb3JlKGVuZF9zZXEsIHRwLVx1MDAzZXJjdl93dXApIHx8XG4rXHQgICAgKGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXEpKVxuIFx0XHRyZXR1cm4gU0tCX0RST1BfUkVBU09OX1RDUF9PTERfU0VRVUVOQ0U7XG4gXG4gXHRzZXFfbGltaXQgPSB0cC1cdTAwM2VyY3Zfbnh0ICsgdGNwX21heF9yZWNlaXZlX3dpbmRvdyh0cCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNjo1NC45MTI1OTMxMjlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDMxMDkyNDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBJbnB1dCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbW9kaWZ5aW5nIGBuZXQvaXB2NC90Y3BfaW5wdXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYHRjcF9zZXF1ZW5jZWAgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgKmNyaXRpY2FsKiDigJMgaXQgaGFuZGxlcyBzZXF1ZW5jZSBudW1iZXIgdmFsaWRhdGlvbiwgYSBjb3JlIGFzcGVjdCBvZiBUQ1AuIFRoZSBwYXRjaCBjaGFuZ2VzIHdoZW4gYSBwYWNrZXQgaXMgZHJvcHBlZCB3aXRoIGBTS0JfRFJPUF9SRUFTT05fVENQX09MRF9TRVFVRU5DRWAsIHdoaWNoIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBzZXF1ZW5jZSBudW1iZXIgaGFuZGxpbmcgYW5kIHJlb3JkZXJpbmcuXG5cbk9yaWdpbmFsbHksIHRoZSBjaGVjayB3YXMgc2ltcGx5IGBiZWZvcmUoZW5kX3NlcSwgdHAtXHUwMDNlcmN2X3d1cClgLiBOb3csIGl0J3MgYmVlbiBleHBhbmRlZCB0byBgYmVmb3JlKGVuZF9zZXEsIHRwLVx1MDAzZXJjdl93dXApIHx8IChlbmRfc2VxID09IHRwLVx1MDAzZXJjdl93dXAgXHUwMDI2XHUwMDI2IHNlcSAhPSBlbmRfc2VxKWAuIEVzc2VudGlhbGx5LCB0aGUgY2hhbmdlIGxvb2tzIGxpa2UgaXQgbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkaXNjYXJkaW5nIHBhY2tldHMgd2hlcmUgdGhlIHNlcXVlbmNlIG51bWJlciBpcyBcIm9sZFwiIGFuZCBhbHNvIGNvbnNpZGVycyBhIG5ldyBjYXNlIHdoZXJlIHRoZSBzZXF1ZW5jZSBhbmQgZW5kIHNlcXVlbmNlIGFyZSBlcXVhbCwgYnV0IHRoZSBzZXF1ZW5jZSBudW1iZXIgaXRzZWxmIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgZW5kIHNlcXVlbmNlIG51bWJlci4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgbGlrZWx5IGFpbWVkIGF0IHNvbWUgZWRnZSBjYXNlLlxuXG5HaXZlbiB0aGUgaW1wb3J0YW5jZSBvZiBgdGNwX3NlcXVlbmNlYCBhbmQgdGhpcyBjaGFuZ2UgdG8gdGhlIHNlcXVlbmNlIG51bWJlciB2YWxpZGF0aW9uIGxvZ2ljLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBJdCdzIGEgaGlnaGx5IHJlYWNoYWJsZSBmdW5jdGlvbiwgYW5kIGFueSBzdWJ0bGUgZmxhdyBpbiBzZXF1ZW5jZSBudW1iZXIgaGFuZGxpbmcgY2FuIGxlYWQgdG8gc2VyaW91cyB2dWxuZXJhYmlsaXRpZXMuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZSB3aXRoaW4gdGhlIGNvZGUsIGJ1dCBteSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIHdhcnJhbnRzIHNlcmlvdXMgYXR0ZW50aW9uLiBJJ2xsIHRha2UgYSBsb29rIGF0IHRoZSBgdGNwX3NlcXVlbmNlYCBmdW5jdGlvbiBpbiBgbmV0L2lwdjQvdGNwX2lucHV0LmNgIGltbWVkaWF0ZWx5IHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNjo1OS45NDM2ODc2MzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTI4Mjc4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3NlcXVlbmNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jPTQ3OTE9c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHRjcF9kaXNvcmRlcmVkX2Fja19jaGVjayhjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy00ODM5LVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjQ4NDA6c3RhdGljIGVudW0gc2tiX2Ryb3BfcmVhc29uIHRjcF9zZXF1ZW5jZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNDg0MS1cXHRcXHRcXHRcXHRcXHQgdTMyIHNlcSwgdTMyIGVuZF9zZXEsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz02MzIzPXN0YXRpYyBib29sIHRjcF92YWxpZGF0ZV9pbmNvbWluZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02MzYwLVxcdC8qIFN0ZXAgMTogY2hlY2sgc2VxdWVuY2UgbnVtYmVyICovXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NjM2MTpcXHRyZWFzb24gPSB0Y3Bfc2VxdWVuY2Uoc2ssIFRDUF9TS0JfQ0Ioc2tiKS1cXHUwMDNlc2VxLFxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTYzNjItXFx0XFx0XFx0ICAgICAgVENQX1NLQl9DQihza2IpLVxcdTAwM2VlbmRfc2VxLCB0aCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM3OjAwLjAzNjU0MjU2MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODMwNDc1MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYHRjcF9zZXF1ZW5jZWAgQ2FsbGVycyoqXG5cbkFscmlnaHQsIHNvIGB0Y3Bfc2VxdWVuY2VgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSBpdCdzIGxpa2VseSBpbnRlcm5hbCB0byBhIHNwZWNpZmljIGNvbXBpbGF0aW9uIHVuaXQsIG1heWJlIGV2ZW4ganVzdCB0aGlzIHNvdXJjZSBmaWxlLiBBbmQsIGJhc2VkIG9uIHRoZSBjb2RlIGxheW91dCwgaXQncyBjYWxsZWQgYnkgYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2AsIHdoaWNoIGlzICphbHNvKiBzdGF0aWMuIFRoaXMgaXMgaW50ZXJlc3Rpbmcg4oCTIGl0IGltcGxpZXMgYSBsZXZlbCBvZiBlbmNhcHN1bGF0aW9uLCBwb3RlbnRpYWxseSBkZXNpZ25lZCB0byBrZWVwIHRoZXNlIHNlcXVlbmNlIG51bWJlciB2YWxpZGF0aW9uIHJvdXRpbmVzIHRpZ2h0bHkgY291cGxlZCBhbmQgaGlkZGVuIGZyb20gdGhlIGJyb2FkZXIgVENQIHN0YWNrLlxuXG5NeSBuZXh0IHN0ZXA/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSAqKm5vbi1zdGF0aWMqKiBjYWxsZXJzIG9mIGB0Y3Bfc2VxdWVuY2VgLiBVbmRlcnN0YW5kaW5nICp3aG8qIGJleW9uZCB0aGUgaW1tZWRpYXRlIHNjb3BlIG9mIHRoaXMgZmlsZSBpcyB1c2luZyB0aGlzIGZ1bmN0aW9uIGlzIGNyaXRpY2FsLiBUaGUgZmFjdCB0aGF0IGl0J3Mgc3RhdGljIGFuZCBjYWxsZWQgYnkgYW5vdGhlciBzdGF0aWMgZnVuY3Rpb24gcmFpc2VzIHRoZSBxdWVzdGlvbjogaXMgdGhpcyByZWFsbHkgdGhlIG9ubHkgcGxhY2UgdGhpcyBzZXF1ZW5jZSBjaGVjayBpcyB0YWtpbmcgcGxhY2U/IElzIHRoZXJlIGEgYnJvYWRlciBpbnRlcmFjdGlvbiBnb2luZyBvbiBvciBhcmUgdGhlc2Ugcm91dGluZXMgcGFydCBvZiBhIHZlcnkgdGlnaHRseSBjb250YWluZWQgZmVhdHVyZT8gRGV0ZXJtaW5pbmcgdGhlIGJyb2FkZXIgY2FsbHMgd2lsbCBoZWxwIG1lIHRvIGRldGVybWluZSBob3cgdGlnaHRseSB0aGlzIGxvZ2ljIGlzIGNvdXBsZWQgdG8gdGhlIHJlc3Qgb2YgdGhlIHN0YWNrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHRoZSBjb3JlIG9mIHRoZSB2YWxpZGF0aW9uIG9yIGp1c3QgcGFydCBvZiBhIGxhcmdlciBwcm9jZXNzLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGNhbGxpbmcgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTEsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzowMy40MTk1OTQ4MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwOTE3MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3ZhbGlkYXRlX2luY29taW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pbnB1dC5jPTYzMTE9c3RhdGljIGJvb2wgdGNwX3Jlc2V0X2NoZWNrKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTYzMjItICovXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NjMyMzpzdGF0aWMgYm9vbCB0Y3BfdmFsaWRhdGVfaW5jb21pbmcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTYzMjQtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgdGNwaGRyICp0aCwgaW50IHN5bl9pbmVycilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jPTY1MDE9dm9pZCB0Y3BfcmN2X2VzdGFibGlzaGVkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTY2NzItdmFsaWRhdGU6XFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NjY3MzpcXHRpZiAoIXRjcF92YWxpZGF0ZV9pbmNvbWluZyhzaywgc2tiLCB0aCwgMSkpXFxubmV0L2lwdjQvdGNwX2lucHV0LmMtNjY3NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz03MTUzPXRjcF9yY3Zfc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MjI3LVxcdH1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYzo3MjI4OlxcdGlmICghdGNwX3ZhbGlkYXRlX2luY29taW5nKHNrLCBza2IsIHRoLCAwKSlcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MjI5LVxcdFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzowMy40NzY2OTI0MTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTk1NzI2Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBUQ1AgUmVjZWl2ZSBQYXRoIEZ1bmN0aW9uIENhbmRpZGF0ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBUQ1AgcmVjZWl2ZSBwYXRoIGFuYWx5c2lzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGluY2x1ZGUgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGFuZCBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYCBpbiBgRm9jdXNTeW1ib2xzYC4gVGhvc2UgYXJlIHRoZSBub24tc3RhdGljIGNhbGxlcnMsIHRoZSBjb3JlIGVudHJ5IHBvaW50cywgdGhlIG1haW4gZnVuY3Rpb25zLCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHRoZSBvbmVzIEknZCBleHBlY3QgdG8gYmUgc2lnbmlmaWNhbnQuIEJ1dCB3YWl0IGEgbWludXRlLi4uIHRob3NlIGFyZSAqZXh0cmVtZWx5KiBob3QgcGF0aCBmdW5jdGlvbnMuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHdhcm5zIGFnYWluc3QgaW5jbHVkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGF2b2lkIHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIEhtbS5cblxuSSdtIHN0YXJ0aW5nIHRvIHRoaW5rLCBpcyB0aGVyZSBhIGJldHRlciBmdW5jdGlvbj8gYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2AgaXMgc3RhdGljLCBgdGNwX3NlcXVlbmNlYCBpcyBzdGF0aWMuIElmIHRob3NlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSByZWFsbHkgdGhlIG9ubHkgZW50cnkgcG9pbnRzLCBzaG91bGQgSSBqdXN0IG5vdCBsaXN0ICphbnkqIGBGb2N1c1N5bWJvbHNgPyBPciBzaG91bGQgSSBqdXN0IGluY2x1ZGUgYHRjcF9yY3ZfZXN0YWJsaXNoZWRgIGFuZCBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYCBhbmQgaG9wZSBmb3IgdGhlIGJlc3QsIGJlY2F1c2UgdGhleSBhcmUgdGhlIG1haW4gZW50cnkgcG9pbnRzIGZvciBUQ1AgcGFja2V0cz9cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IEknbSBtaXNzaW5nIGhlcmUuIE5lZWQgdG8gYmUgc3VyZSBvZiBteSBmYWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU3MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzowNy42NzI0Mjc3OTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY0MDQ2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGNwX3Jjdl9lc3RhYmxpc2hlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaW5wdXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaW5wdXQuYz02MzIzPXN0YXRpYyBib29sIHRjcF92YWxpZGF0ZV9pbmNvbWluZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02NTAwLSAqL1xcbm5ldC9pcHY0L3RjcF9pbnB1dC5jOjY1MDE6dm9pZCB0Y3BfcmN2X2VzdGFibGlzaGVkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy02NTAyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjI6Mzc6MDcuNzM4ODM5ODI5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2MjUzMDMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgKipcblxuT2theSwgbGV0J3MgcHVsbCB1cCBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGV4YWN0bHkgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyBpbmNvbWluZyBzZWdtZW50cyBhbmQgbWFuYWdlcyB0aGUgVENQIHN0YXRlIG1hY2hpbmUuIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gaG93IGl0IGRlYWxzIHdpdGggdGhlIHN0YXRlIHRyYW5zaXRpb25zLCByZXRyYW5zbWlzc2lvbnMsIGFuZCBhY2tub3dsZWRnZW1lbnRzLiBJ4oCZbSB0aGlua2luZyBhYm91dCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgY29uZ2VzdGlvbiBjb250cm9sIG1lY2hhbmlzbXMgYW5kIHdoZXRoZXIgdGhlcmUgaGF2ZSBiZWVuIGFueSByZWNlbnQgbW9kaWZpY2F0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gZm9yIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcy4gTGV04oCZcyBzZWUgaG93IGNsZWFubHkgaXQgaGFuZGxlcyBvdXQtb2Ytb3JkZXIgc2VnbWVudHMgYW5kIGhvdyBpdCBtaWdodCBoYW5kbGUgYSBidXJzdCBvZiBwYWNrZXRzLiBHb3R0YSBkb3VibGUtY2hlY2sgdGhhdCB0aGUgU1lOIGZsb29kaW5nIHByb3RlY3Rpb25zIGFyZSBzdGlsbCByb2J1c3QgYW5kIGVmZmVjdGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE5MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM3OjExLjUwMTM3NDAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzIzNTUxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lucHV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdGNwX2lucHV0LmM9Njg1Mz1zdGF0aWMgaW50IHRjcF9yY3Zfc3luc2VudF9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcwNzctXFx0XFx0ICogd2UgaGF2ZSBubyByZWFzb25zIHRvIGFjY2VwdCBpdCBzb21ldGltZXMuXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NzA3ODpcXHRcXHQgKiBBbHNvLCBzZWVtcyB0aGUgY29kZSBkb2luZyBpdCBpbiBzdGVwNiBvZiB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NcXG5uZXQvaXB2NC90Y3BfaW5wdXQuYy03MDc5LVxcdFxcdCAqIGlzIG5vdCBmbGF3bGVzcy4gU28sIGRpc2NhcmQgcGFja2V0IGZvciBzYW5pdHkuXFxuLS1cXG5uZXQvaXB2NC90Y3BfaW5wdXQuYz03MTUyPWVudW0gc2tiX2Ryb3BfcmVhc29uXFxubmV0L2lwdjQvdGNwX2lucHV0LmM6NzE1Mzp0Y3BfcmN2X3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9pcHY0L3RjcF9pbnB1dC5jLTcxNTQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzoxMS41OTQ2MTU2MjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE0NTUwMzg5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgVENQIFJlY2VpdmUgUGF0aCoqXG5cbk9rYXksIHNvIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBhbmQgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AgYXJlIGV4cG9zZWQsIHdoaWNoIHN1Z2dlc3RzIHRoZXkncmUgaW1wb3J0YW50IGVudHJ5IHBvaW50cyBvciBhdCBsZWFzdCB1c2VkIG91dHNpZGUgdGhlaXIgaW1tZWRpYXRlIHNjb3BlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSAqY2FsbGVkKiB3aXRoaW4gdGhlIG92ZXJhbGwgVENQIHJlY2VpdmUgcGF0aC4gSSBuZWVkIHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUuIEknbGwgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGB0Y3BfdjRfZG9fcmN2YCBhbmQgYHRjcF92Nl9kb19yY3ZgIOKAkyB0aG9zZSBzZWVtIGxpa2UgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIG1hbmFnaW5nIHRoZSBpbml0aWFsIHJlY2VwdGlvbiBvZiBkYXRhIGF0IHRoZSBJUCBsYXllci4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSB3b3VsZCBzdGFydCB3aXRoIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY2NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM3OjE0Ljc0MDEyMTgwOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3MjI5NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9yY3ZfZXN0YWJsaXNoZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTE4MzA9aW50IHRjcF92NF9kb19yY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0xODUzLVxcdFxcdH1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjE4NTQ6XFx0XFx0dGNwX3Jjdl9lc3RhYmxpc2hlZChzaywgc2tiKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE4NTUtXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTE5MDE9ZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX2FkZF9iYWNrbG9nKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMTk4MC1cXHRcXHQvKiBXZSBoYXZlIHRvIHVwZGF0ZSBib3RoIFRDUF9TS0JfQ0IodGFpbCktXFx1MDAzZXRjcF9mbGFncyBhbmRcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjE5ODE6XFx0XFx0ICogdGh0YWlsLVxcdTAwM2VmaW4sIHNvIHRoYXQgdGhlIGZhc3QgcGF0aCBpbiB0Y3BfcmN2X2VzdGFibGlzaGVkKClcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTE5ODItXFx0XFx0ICogaXMgbm90IGVudGVyZWQgaWYgd2UgYXBwZW5kIGEgcGFja2V0IHdpdGggYSBGSU4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM3OjE0Ljg0NzM1ODk4MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODk0NjE2NDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYXNvbmluZyBmb3IgRnV6emluZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBUQ1AgSVB2NCByZWNlaXZlIHBhdGgsIHNwZWNpZmljYWxseSB0aGUgY2hhbmdlIHJlbGF0ZWQgdG8gc2VxdWVuY2UgbnVtYmVyIGhhbmRsaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNvbnNpZGVyIHdoaWNoIGZ1bmN0aW9ucyB0byBmb2N1cyBvbiB3aXRoIHRoZSBgRm9jdXNTeW1ib2xzYCBzZXR0aW5nLCBhbmQgc2luY2UgYHRjcF92NF9yY3ZgIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGFuZCBib3RoIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBhbmQgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AgYXJlIHJpZ2h0IGluIHRoZSBob3QgcGF0aCwgbXkgZmlyc3QgaW5zdGluY3Qgd2FzIHRvIGVpdGhlciBsZWF2ZSBpdCBlbXB0eSBvciBzcGVjaWZ5IGB0Y3BfcmN2X3N0YXRlX3Byb2Nlc3NgLiBCdXQgSSByZW1lbWJlciB0aGUgZ3VpZGFuY2UgdG8gYXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucy5cblxuYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AgaGFuZGxlcyBzdGF0ZSB0cmFuc2l0aW9ucywgd2hpY2ggaXMgbGVzcyBvZiBhIGhvdCBwYXRoIHRoYW4gdGhlIEVTVEFCTElTSEVEIHN0YXRlIHByb2Nlc3NpbmcgaW4gYHRjcF9yY3ZfZXN0YWJsaXNoZWRgLCBidXQgc3RpbGwgcHJldHR5IGdlbmVyaWMuIEluaXRpYWxseSwgSSB0aG91Z2h0IGxlYXZpbmcgYEZvY3VzU3ltYm9sc2AgZW1wdHkgb3Igc3BlY2lmeWluZyBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYCB3b3VsZCBiZSB0aGUgd2F5IHRvIGdvLlxuXG5UaGVuIEkgcGF1c2VkLiBUaGlzIGNoYW5nZSBpcyBhYm91dCAqZHJvcHBpbmcgb2xkIHNlcXVlbmNlIG51bWJlcnMqIC0tIHRoYXQncyBmdW5kYW1lbnRhbCBUQ1AgYmVoYXZpb3IhIFNvLCBldmVuIHRob3VnaCB0aGVzZSBhcmUgaG90LXBhdGggZnVuY3Rpb25zLCB0aGUgKmNvcmUqIG9mIFRDUCByZWNlaXZlIGlzIGFmZmVjdGVkLiBBYnNvbHV0ZWx5LCBJIG5lZWQgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vIG5lZWQgZm9yIHNwZWNpZmljIGNvbmZpZ3M7IGl0J3MgYSBjb3JlIElQdjQgVENQIHRoaW5nLlxuXG5TbywgSSBrZWVwIGdvaW5nIGJhY2sgYW5kIGZvcnRoIG9uIGBGb2N1c1N5bWJvbHNgLCBidXQgaXQga2VlcHMgcG9pbnRpbmcgbWUgYmFjayB0byBsZWF2aW5nIGl0IGVtcHR5LiBXaGlsZSBgdGNwX3Jjdl9zdGF0ZV9wcm9jZXNzYCBpcyBhIGRlY2VudCBjYW5kaWRhdGUgaWYgd2Ugd2FudCB0byBmb2N1cyBvbiBub24tZXN0YWJsaXNoZWQgc3RhdGVzLCB0aGUgcGF0Y2ggYWN0dWFsbHkgYWZmZWN0cyBgdGNwX3NlcXVlbmNlYCwgd2hpY2ggaXMgdGhlbiBjYWxsZWQgZnJvbSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCwgd2hpY2gsIGluIHR1cm4sIGlzIGNhbGxlZCBieSBib3RoIGB0Y3BfcmN2X2VzdGFibGlzaGVkYCBhbmQgYHRjcF9yY3Zfc3RhdGVfcHJvY2Vzc2AuIFNvIGl0J3Mgbm90IGp1c3Qgc29tZSBjb3JuZXIgY2FzZS4gSXQgYWZmZWN0cyB0aGUgZW50aXJlIFRDUCByZWNlaXZlIHByb2Nlc3NpbmcgbG9naWMuIExlYXZpbmcgYEZvY3VzU3ltYm9sc2AgZW1wdHkgd2lsbCBnZXQgbWUgdGhlIGJyb2FkZXN0IGNvdmVyYWdlLlxuXG5Pa2F5LCBsZXQncyB3cml0ZSB0aGlzIGRvd24gdG8gbWFrZSBzdXJlIGl0J3MgY2xlYXI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1Agc2VxdWVuY2UgdmFsaWRhdGlvbiBsb2dpYyBpbiBgdGNwX3NlcXVlbmNlYCAoY2FsbGVkIHZpYSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCkgdG8gZHJvcCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMgd2hlcmUgYGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiIFRoYXQgc2hvdWxkIGRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjAwLCJPdXRwdXRUb2tlbnMiOjEwNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzoyMi43NDE5Nzc1N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQ1Agc2VxdWVuY2UgdmFsaWRhdGlvbiBsb2dpYyBpbiBgdGNwX3NlcXVlbmNlYCAoY2FsbGVkIHZpYSBgdGNwX3ZhbGlkYXRlX2luY29taW5nYCkgdG8gZHJvcCBwYWNrZXRzIHdpdGggb2xkIHNlcXVlbmNlIG51bWJlcnMgd2hlcmUgYGVuZF9zZXEgPT0gdHAtXFx1MDAzZXJjdl93dXAgXFx1MDAyNlxcdTAwMjYgc2VxICE9IGVuZF9zZXFgLiBUaGlzIGlzIGEgY29yZSBUQ1AgcmVjZWl2ZSBwYXRoIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHByb2Nlc3NpbmcgYW5kIHN0YXRlIHRyYW5zaXRpb25zLCBtYWtpbmcgaXQgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVENQIHNlcXVlbmNlIHZhbGlkYXRpb24gbG9naWMgaW4gYHRjcF9zZXF1ZW5jZWAgKGNhbGxlZCB2aWEgYHRjcF92YWxpZGF0ZV9pbmNvbWluZ2ApIHRvIGRyb3AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzIHdoZXJlIGBlbmRfc2VxID09IHRwLVxcdTAwM2VyY3Zfd3VwIFxcdTAwMjZcXHUwMDI2IHNlcSAhPSBlbmRfc2VxYC4gVGhpcyBpcyBhIGNvcmUgVENQIHJlY2VpdmUgcGF0aCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCBwcm9jZXNzaW5nIGFuZCBzdGF0ZSB0cmFuc2l0aW9ucywgbWFraW5nIGl0IGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMjI6Mzc6MjIuNzQyMDAwMzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MDk2NjIzMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzoyMi43NDI0MTI5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY1MDkyNDQyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgZHJvcHBpbmcgVENQIHBhY2tldHMgd2l0aCBvbGQgc2VxdWVuY2UgbnVtYmVycy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkLiBUaGUgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gY29udHJvbCBmbG93IGJhc2VkIG9uIFRDUCBzZXF1ZW5jZSBudW1iZXJzLCB3aGljaCBkb2VzIG5vdCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIHRoYXQgS01TQU4gd291bGQgZGV0ZWN0LiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBidWdzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZiNzAxNDQ5MWQ2NzRiNWRhNzBhZGJiMDNiMjRkYWU2OTAzNTAyNGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAyMjozNjo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbmluZGV4IGRhZmY5M2Q1MTM0MjguLjNiZmEwZjA3ZGQ1NzIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuY1xuKysrIGIvbmV0L2lwdjQvdGNwX2lucHV0LmNcbkBAIC00ODQ0LDcgKzQ4NDQsOCBAQCBzdGF0aWMgZW51bSBza2JfZHJvcF9yZWFzb24gdGNwX3NlcXVlbmNlKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbiBcdGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xuIFx0dTMyIHNlcV9saW1pdDtcbiBcbi1cdGlmIChiZWZvcmUoZW5kX3NlcSwgdHAtXHUwMDNlcmN2X3d1cCkpXG4rXHRpZiAoYmVmb3JlKGVuZF9zZXEsIHRwLVx1MDAzZXJjdl93dXApIHx8XG4rXHQgICAgKGVuZF9zZXEgPT0gdHAtXHUwMDNlcmN2X3d1cCBcdTAwMjZcdTAwMjYgc2VxICE9IGVuZF9zZXEpKVxuIFx0XHRyZXR1cm4gU0tCX0RST1BfUkVBU09OX1RDUF9PTERfU0VRVUVOQ0U7XG4gXG4gXHRzZXFfbGltaXQgPSB0cC1cdTAwM2VyY3Zfbnh0ICsgdGNwX21heF9yZWNlaXZlX3dpbmRvdyh0cCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQyMjozNzoyMi43NDI0MTM5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTA5MjI0NzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRDUCBTZXF1ZW5jZSBOdW1iZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgdGNwX2lucHV0LmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB0Y3Bfc2VxdWVuY2VgIGZ1bmN0aW9uLiBJdCBsb29rcyBsaWtlIGl0J3MgYSBmaXggZm9yIGhvdyB0aGUga2VybmVsIGhhbmRsZXMgb2xkIHNlcXVlbmNlIG51bWJlcnMsIHRoZSBjb25kaXRpb24gaXMgYmVpbmcgY2hhbmdlZCB0byBiZXR0ZXIgaGFuZGxlIHNvbWUgZWRnZSBjYXNlcy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbnNpZGVyIHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3Vlcywgb2YgY291cnNlLiBDb3VsZCB0aGlzIGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIHdyaXRlcz8gSSBuZWVkIHRvIGJlIHRob3JvdWdoLiBMZXQncyBzZWUuLi4gdGhlIGNvZGUganVzdCBjaGVja3MgYW5kIGRyb3BzIHBhY2tldHMgYmFzZWQgb24gc2VxdWVuY2UgbnVtYmVyIGNvbXBhcmlzb25zLiBObyBhbGxvY2F0aW9ucywgbm8gY29waWVzIHRvIHVzZXIgc3BhY2UsIG5vIHVzYWdlIG9mIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJdCdzIHJlYWxseSBqdXN0IGEgY29uZGl0aW9uYWwgYFNLQl9EUk9QX1JFQVNPTmAgYmFzZWQgb24gYSBzZXF1ZW5jZSBudW1iZXIgY2hlY2suXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgdGNwX3NlcXVlbmNlYCBpdHNlbGYuIEl0IHJlY2VpdmVzIHRoZSBgc2tgLCBgc2VxYCwgYW5kIGBlbmRfc2VxYCBwYXJhbWV0ZXJzLCBhbmQgcmV0dXJucyBhbiBgZW51bSBza2JfZHJvcF9yZWFzb25gLiBQdXJlIGxvZ2ljLCBhcyBJIHN1c3BlY3RlZC4gTm8gc2lnbnMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UuIFRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgc2VxdWVuY2UgbnVtYmVyIGNvbXBhcmlzb24gYW5kIHBhY2tldCBkcm9wIGxvZ2ljIGNoYW5nZS5cblxuVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50IHRoYXQgS01TQU4gaXNuJ3QgbmVjZXNzYXJ5IGhlcmUuIFRoaXMgY2hhbmdlIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcy4gSXQncyBqdXN0IGNvbnRyb2wgZmxvdy4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBwbGVudHkgc3VmZmljaWVudCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzb2xpZCBpbiB0ZXJtcyBvZiBtZW1vcnkgY29ycnVwdGlvbi4gU2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgaXMgdGhlIHJpZ2h0IGNhbGwgaGVyZS4gTXkgcmVhc29uaW5nIGlzIHNvdW5kOiB0aGUgcGF0Y2ggc2ltcGx5IHJlZmluZXMgdGhlIHBhY2tldCBkcm9wcGluZyBsb2dpYyBiYXNlZCBvbiBzZXF1ZW5jZSBudW1iZXJzLCBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDMyLCJPdXRwdXRUb2tlbnMiOjExMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDIyOjM3OjI5LjI1MTY0MTMyMVoiLCJTZXEiOjE4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkcm9wcGluZyBUQ1AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3cgYmFzZWQgb24gVENQIHNlcXVlbmNlIG51bWJlcnMsIHdoaWNoIGRvZXMgbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBLTVNBTiB3b3VsZCBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkcm9wcGluZyBUQ1AgcGFja2V0cyB3aXRoIG9sZCBzZXF1ZW5jZSBudW1iZXJzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQuIFRoZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBjb250cm9sIGZsb3cgYmFzZWQgb24gVENQIHNlcXVlbmNlIG51bWJlcnMsIHdoaWNoIGRvZXMgbm90IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBLTVNBTiB3b3VsZCBkZXRlY3QuIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudCB0byBjYXRjaCBhbnkgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvmr4b[1] Phase: Succeeded StartedAt: 2026-08-18 22:37:43 +0000 UTC FinishedAt: 2026-08-18 22:37:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-18 22:37:43 +0000 UTC FinishedAt: 2026-08-18 22:37:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2] Phase: Succeeded StartedAt: 2026-08-18 22:37:43 +0000 UTC FinishedAt: 2026-08-19 02:25:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:37:43 +0000 UTC FinishedAt: 2026-08-19 02:25:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:37:43 +0000 UTC FinishedAt: 2026-08-18 22:37:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:37:43 +0000 UTC FinishedAt: 2026-08-18 22:37:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","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-workflowvmr4b/series-workflowvmr4b-convert-artifact-657682434/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:37:53 +0000 UTC FinishedAt: 2026-08-18 22:56:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:37:53 +0000 UTC FinishedAt: 2026-08-18 22:56:05 +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:*5d089827-0fef-4d33-be30-695909e96dfb,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-workflowvmr4b/series-workflowvmr4b-convert-artifact-657682434/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": "0fa66c55-6d69-4018-a325-00dc99bcf181", "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-workflowvmr4b/series-workflowvmr4b-build-action-2333277888/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:37:53 +0000 UTC FinishedAt: 2026-08-18 22:55:55 +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:*5d089827-0fef-4d33-be30-695909e96dfb,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-workflowvmr4b/series-workflowvmr4b-convert-artifact-657682434/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": "0fa66c55-6d69-4018-a325-00dc99bcf181", "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-workflowvmr4b/series-workflowvmr4b-build-action-2333277888/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:56:05 +0000 UTC FinishedAt: 2026-08-18 22:56:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:56:05 +0000 UTC FinishedAt: 2026-08-18 22:56:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:56:05 +0000 UTC FinishedAt: 2026-08-18 22:56:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:56:05 +0000 UTC FinishedAt: 2026-08-18 22:56:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-workflowvmr4b/series-workflowvmr4b-convert-artifact-1289205853/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:56:15 +0000 UTC FinishedAt: 2026-08-18 22:58:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:56:15 +0000 UTC FinishedAt: 2026-08-18 22:58:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0fa66c55-6d69-4018-a325-00dc99bcf181,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-workflowvmr4b/series-workflowvmr4b-build-action-2333277888/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-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:58:32 +0000 UTC FinishedAt: 2026-08-18 22:58:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:58:32 +0000 UTC FinishedAt: 2026-08-18 22:58:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:58:32 +0000 UTC FinishedAt: 2026-08-18 23:18:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:58:32 +0000 UTC FinishedAt: 2026-08-18 23:18:07 +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:*5d089827-0fef-4d33-be30-695909e96dfb,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-workflowvmr4b/series-workflowvmr4b-convert-artifact-1289205853/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": "5cbf89de-3dc5-43c4-a10d-f9016e35c072", "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-workflowvmr4b/series-workflowvmr4b-build-action-2016213305/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 22:58:32 +0000 UTC FinishedAt: 2026-08-18 23:17:57 +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:*5d089827-0fef-4d33-be30-695909e96dfb,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-workflowvmr4b/series-workflowvmr4b-convert-artifact-1289205853/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": "5cbf89de-3dc5-43c4-a10d-f9016e35c072", "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-workflowvmr4b/series-workflowvmr4b-build-action-2016213305/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:18:07 +0000 UTC FinishedAt: 2026-08-18 23:18:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:18:07 +0000 UTC FinishedAt: 2026-08-18 23:18:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:18:07 +0000 UTC FinishedAt: 2026-08-18 23:20:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:18:07 +0000 UTC FinishedAt: 2026-08-18 23:20:10 +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:*5cbf89de-3dc5-43c4-a10d-f9016e35c072,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-workflowvmr4b/series-workflowvmr4b-build-action-2016213305/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-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:20:17 +0000 UTC FinishedAt: 2026-08-19 02:25:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:20:17 +0000 UTC FinishedAt: 2026-08-19 02:25:20 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"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:*0fa66c55-6d69-4018-a325-00dc99bcf181,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5cbf89de-3dc5-43c4-a10d-f9016e35c072,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-workflowvmr4b/series-workflowvmr4b-build-action-2333277888/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-workflowvmr4b/series-workflowvmr4b-build-action-2016213305/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:20:17 +0000 UTC FinishedAt: 2026-08-18 23:20:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:20:17 +0000 UTC FinishedAt: 2026-08-18 23:20:22 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"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-workflowvmr4b/series-workflowvmr4b-convert-artifact-1382401762/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:20:17 +0000 UTC FinishedAt: 2026-08-18 23:20:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:20:17 +0000 UTC FinishedAt: 2026-08-18 23:20:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:20:17 +0000 UTC FinishedAt: 2026-08-18 23:20:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:20:27 +0000 UTC FinishedAt: 2026-08-19 02:25:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvmr4b[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7a3c0289c3c8eb4607dff448ae9ff9f902c813af","config_name":"upstream-apparmor-kasan.config","series_id":"aedda54d-54b6-45f2-a6cc-0e84cd9b7c2f","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-18 23:20:27 +0000 UTC FinishedAt: 2026-08-19 02:25:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0fa66c55-6d69-4018-a325-00dc99bcf181,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5cbf89de-3dc5-43c4-a10d-f9016e35c072,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-workflowvmr4b/series-workflowvmr4b-build-action-2333277888/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-workflowvmr4b/series-workflowvmr4b-build-action-2016213305/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-workflowvmr4b/series-workflowvmr4b-convert-artifact-1382401762/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,}