Name: series-workflowwj7rj Phase: Succeeded StartedAt: 2026-07-03 11:04:29 +0000 UTC FinishedAt: 2026-07-03 15:28:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[0] Phase: Succeeded StartedAt: 2026-07-03 11:04:29 +0000 UTC FinishedAt: 2026-07-03 11:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 11:04:29 +0000 UTC FinishedAt: 2026-07-03 11:23:02 +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": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "047e2af4-1c9a-4d5f-8002-602eebe7477b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "gtp1u_udp_encap_recv" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cDF1X3VkcF9lbmNhcF9yZWN2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIHBhcnNpbmcgZXh0ZW5zaW9uIGhlYWRlcnMgYW5kIGRldGVybWluaW5nIHRoZSBpbm5lciBwcm90b2NvbCBpbiB0aGUgR1RQIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMzFhZjg1ZDU4NTZkZWUxZjNkZDRiZGEyMDU3NDhiODQwMDU0ZDI3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMToyMTo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jXG5pbmRleCBhNjBlZjMyYjM1YjgyNS4uNGE4YjAwNTQ4NjczNTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC04MjYsNiAmIzQzOzgyNiwxMCBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4mIzQzO1x0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgXHUwMDI2aGRybGVuKSBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiAtMTtcbiYjNDM7XG4gXHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcdTAwMjZpbm5lcl9wcm90bykgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcJiMzNDtHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtMTtcbkBAIC04NDAsMTAgJiM0Mzs4NDQsNiBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybiAxO1xuIFx0fVxuIFxuLVx0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4tXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcdTAwMjZoZHJsZW4pIFx1MDAzYyAwKVxuLVx0XHRyZXR1cm4gLTE7XG4tXG4gXHRyZXR1cm4gZ3RwX3J4KHBjdHgsIHNrYiwgaGRybGVuLCBndHAtXHUwMDNlcm9sZSwgaW5uZXJfcHJvdG8pO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndHAxdV91ZHBfZW5jYXBfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBwYXJzaW5nIGV4dGVuc2lvbiBoZWFkZXJzIGFuZCBkZXRlcm1pbmluZyB0aGUgaW5uZXIgcHJvdG9jb2wgaW4gdGhlIEdUUCBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjMzFhZjg1ZDU4NTZkZWUxZjNkZDRiZGEyMDU3NDhiODQwMDU0ZDI3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAxMToyMTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmMKaW5kZXggYTYwZWYzMmIzNWI4MjUuLjRhOGIwMDU0ODY3MzUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ndHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ndHAuYwpAQCAtODI2LDYgJiM0Mzs4MjYsMTAgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmICghcHNrYl9tYXlfcHVsbChza2IsIGhkcmxlbikpCiAJCXJldHVybiAtMTsKIAomIzQzOwlpZiAoZ3RwMS0mZ3Q7ZmxhZ3MgJmFtcDsgR1RQMV9GX0VYVEhEUiAmYW1wOyZhbXA7CiYjNDM7CSAgICBndHBfcGFyc2VfZXh0aGRycyhza2IsICZhbXA7aGRybGVuKSAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CiAJaWYgKGd0cF9pbm5lcl9wcm90byhza2IsIGhkcmxlbiwgJmFtcDtpbm5lcl9wcm90bykgJmx0OyAwKSB7CiAJCW5ldGRldl9kYmcoZ3RwLSZndDtkZXYsICYjMzQ7R1RQIHBhY2tldCBkb2VzIG5vdCBlbmNhcHN1bGF0ZSBhbiBJUCBwYWNrZXRcbiYjMzQ7KTsKIAkJcmV0dXJuIC0xOwpAQCAtODQwLDEwICYjNDM7ODQ0LDYgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlyZXR1cm4gMTsKIAl9CiAKLQlpZiAoZ3RwMS0mZ3Q7ZmxhZ3MgJmFtcDsgR1RQMV9GX0VYVEhEUiAmYW1wOyZhbXA7Ci0JICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgJmFtcDtoZHJsZW4pICZsdDsgMCkKLQkJcmV0dXJuIC0xOwotCiAJcmV0dXJuIGd0cF9yeChwY3R4LCBza2IsIGhkcmxlbiwgZ3RwLSZndDtyb2xlLCBpbm5lcl9wcm90byk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBHVFAgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyB0aGUgR1RQIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL25ldC9ndHAuY2AuIEZyb20gd2hhdCBJIHNlZSwgaXQmIzM5O3MgYSByZWxhdGl2ZWx5IGZvY3VzZWQgbW9kaWZpY2F0aW9uLCBtb3ZpbmcgdGhlIGBndHBfcGFyc2VfZXh0aGRyc2AgZnVuY3Rpb24gY2FsbCB3aXRoaW4gYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCB0byBvY2N1ciAqYmVmb3JlKiB0aGUgYGd0cF9pbm5lcl9wcm90b2AgY2FsbC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IHRoZSBHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkcml2ZXIgcHJvY2Vzc2VzIGVuY2Fwc3VsYXRlZCBVRFAgcGFja2V0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4KCk15IG5leHQgc3RlcCBpcyBjbGVhcmx5IHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvZ3RwLmNgIGFuZCB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGNvZGUsIGVzcGVjaWFsbHkgZm9jdXNpbmcgb24gdGhlIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAgZnVuY3Rpb24uIEkgd2FudCB0byBzZWUgaG93IHRoaXMgcmVvcmRlcmluZyBpbXBhY3RzIHRoZSBwYXJzaW5nIGFuZCBoYW5kbGluZyBvZiBHVFAgcGFja2V0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgb3JpZ2luYWwgZmxvdyB3YXMsIHdoYXQgZXh0ZW5zaW9uIGhlYWRlcnMgYXJlIGJlaW5nIHBhcnNlZCwgYW5kIGhvdyB0aGUgaW5uZXIgcHJvdG9jb2wgaXMgYmVpbmcgZGV0ZXJtaW5lZC4gQ3J1Y2lhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgb3IgZGVwZW5kZW5jaWVzLgoKSSYjMzk7bGwgYWxzbyBoYXZlIHRvIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLiBJdOKAmXMgaW1wb3J0YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHdoaWNoIGRlcGVuZCBvbiB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIGhlcmUsIHNvIEkgbmVlZCB0byBjaGVjayBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3IgZmxhZ3MgdGhhdCBjb3VsZCBiZSByZWxldmFudC4gVW5kZXJzdGFuZGluZyB0aGUgJiMzNDt3aHkmIzM0OyBiZWhpbmQgdGhpcyBwYXRjaCBpcyBjcml0aWNhbCwgYW5kIHRoYXQgbGlrZWx5IGxpZXMgaW4gYSBkZWVwZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgbmV0d29yayB0cmFmZmljIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIGhhbmRsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndHAxdV91ZHBfZW5jYXBfcmVjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2d0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2d0cC5jPTc1MD1zdGF0aWMgaW50IGd0cF9wYXJzZV9leHRoZHJzKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCAqaGRybGVuKVxuLS1cbmRyaXZlcnMvbmV0L2d0cC5jLTc4Ni1cbmRyaXZlcnMvbmV0L2d0cC5jOjc4NzpzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ndHAuYy03ODgte1xuLS1cbmRyaXZlcnMvbmV0L2d0cC5jPTkwMj1zdGF0aWMgaW50IGd0cF9lbmNhcF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy05MTktXHRcdG5ldGRldl9kYmcoZ3RwLVx1MDAzZWRldiwgXCYjMzQ7cmVjZWl2ZWQgR1RQMVUgcGFja2V0XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2d0cC5jOjkyMDpcdFx0cmV0ID0gZ3RwMXVfdWRwX2VuY2FwX3JlY3YoZ3RwLCBza2IpO1xuZHJpdmVycy9uZXQvZ3RwLmMtOTIxLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzYyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIEdUUCBFbmNhcHN1bGF0aW9uIFJlY2VwdGlvbioqCgpPa2F5LCBzbyBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIHdpdGhpbiB0aGUgYGd0cF9lbmNhcF9yZWN2YCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIHRoYXQgdGVsbHMgbWUgdGhlIHBvaW50IG9mIGVudHJ5IGFuZCB0aGUgcmVsZXZhbnQgaW1wbGVtZW50YXRpb24uIE5vdywgaWYgSSYjMzk7bSBsb29raW5nIGF0IEdUUCBlbmNhcHN1bGF0aW9uLCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBgZHJpdmVycy9uZXQvZ3RwLmNgIGRyaXZlciBmaWxlIHdvdWxkIGJlIHZlcnkgdXNlZnVsLCB3b3VsZG4mIzM5O3QgaXQ/IExldCYjMzk7cyBmaWd1cmUgb3V0IHdoYXQgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zIG1heSBlZmZlY3QgdGhlIG9wZXJhdGlvbiBoZXJlLiBUaGlzIHdpbGwgaGVscCB1bmRlcnN0YW5kIHdoYXQgcGFydHMgb2YgdGhlIEdUUCBmdW5jdGlvbmFsaXR5IGFyZSBjb21waWxlZCBhbmQgZW5hYmxlZCwgYW5kIGFsc28gd2hhdCBwcmVwcm9jZXNzb3Igc3ltYm9scyBjb3VsZCBiZSBhdCBwbGF5IGZvciB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndHBcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0JBUkVVRFApICYjNDM7PSBiYXJldWRwLm9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19HVFApICYjNDM7PSBndHAub1xuZHJpdmVycy9uZXQvTWFrZWZpbGUtNDAtb2JqLSQoQ09ORklHX05MTU9OKSAmIzQzOz0gbmxtb24ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkNvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCk9rYXksIHRoZSBwcmltYXJ5IGNvbmZpZyBhdCBwbGF5IGhlcmUgaXMgYENPTkZJR19HVFBgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHRoYXQmIzM5O3MgdGhlICpvbmx5KiBvbmUgcmVsZXZhbnQgYXQgdGhlIG1vbWVudC4gSXQmIzM5O3MgY3J1Y2lhbCB0byBjb25maXJtIHRoaXMg4oCTIHlvdSBrbm93LCBtYWtlIHN1cmUgd2UgYXJlbiYjMzk7dCBvdmVybG9va2luZyBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgaW50ZXJhY3Qgd2l0aCBvciBvdmVycmlkZSBgQ09ORklHX0dUUGAuIEkgbmVlZCB0byBhc3Nlc3MgdGhlIGJpZ2dlciBwaWN0dXJlLCB5b3Uga25vdywgdW5kZXJzdGFuZCBpZiB0aGVyZSYjMzk7cyBhbnkgYnJhbmNoaW5nIGxvZ2ljIG9yIGNvbmRpdGlvbmFsIHNldHRpbmdzIHRpZWQgdG8gb3RoZXIgZmxhZ3MgdGhhdCB3b3VsZCBhZmZlY3QgaXRzIGJlaGF2aW91ci4gQ29udGV4dCBpcyBrZXksIGFuZCBJIGRvbiYjMzk7dCB3YW50IHRvIGp1bXAgdG8gY29uY2x1c2lvbnMgdW50aWwgSSYjMzk7dmUgc2NvcGVkIG91dCBhbGwgdGhlIHBvc3NpYmlsaXRpZXMuIFNvLCBzdGVwIG9uZSDigJMgY29tcHJlaGVuc2l2ZSBzZWFyY2ggZm9yIGFueSByZWxhdGVkIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEdUUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3MS1cbmRyaXZlcnMvbmV0L0tjb25maWc6MjcyOmNvbmZpZyBHVFBcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVx0dHJpc3RhdGUgXCYjMzQ7R1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzODUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBHVFA6IEluaXRpYWwgVGhvdWdodHMgYW5kIEZ1bmN0aW9uIFNlbGVjdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpcyBjbGVhcmx5IGdlYXJlZCB0b3dhcmQgR1RQIOKAkyB0aGF0IG11Y2ggaXMgb2J2aW91cy4gTXkgaW5pdGlhbCB0YXJnZXQgZnVuY3Rpb24gZm9yIGZ1enppbmcgaXMgYGd0cDF1X3VkcF9lbmNhcF9yZWN2YC4gQnV0IGJlZm9yZSBkaXZpbmcgaW4sIEkgc2hvdWxkIGRvIGEgcXVpY2sgcmVjb25uYWlzc2FuY2Ugc3dlZXAgb2YgcmVsYXRlZCBmdW5jdGlvbnMgd2l0aGluIHRoZSBHVFAgY29kZSwganVzdCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBtb3JlIHN0cmF0ZWdpYyB0YXJnZXQuIExldCYjMzk7cyBzZWUuLi4gQWgsIHRoZXJlIGFyZSBhIGZldyBjb250ZW5kZXJzOiBgZ3RwX3BhcnNlX2V4dGhkcnNgLCBgZ3RwX2lubmVyX3Byb3RvYCwgYW5kIGBndHBfZW5jYXBfcmVjdmAuIE1ha2VzIHNlbnNlLCB0aGV5JiMzOTtyZSBhbGwgaW52b2x2ZWQgaW4gZGlmZmVyZW50IGFzcGVjdHMgb2YgR1RQIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgbWlnaHQgYmUgaW50ZXJlc3RpbmcgdGFyZ2V0cywgYnV0IGxldCYjMzk7cyBiZWdpbiBieSBmb2N1c2luZyBvbiB0aGUgZnVuY3Rpb24gZXhwbGljaXRseSBjYWxsZWQgb3V0LCB0aGUgYGd0cDF1X3VkcF9lbmNhcF9yZWN2YC4gUmlnaHQuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ndHAuY2AgYW5kIHRha2UgYSBsb29rIGF0IGBndHAxdV91ZHBfZW5jYXBfcmVjdmAgdG8gZ2V0IGEgZ29vZCBzZW5zZSBvZiBpdHMgc3RydWN0dXJlIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2d0cC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzgwOlx0XHR9IHdoaWxlICgqbmV4dF90eXBlICE9IDApO1xuIDc4MTpcdFxuIDc4MjpcdFx0KmhkcmxlbiA9IG9mZnNldDtcbiA3ODM6XHRcbiA3ODQ6XHRcdHJldHVybiAwO1xuIDc4NTpcdH1cbiA3ODY6XHRcbiA3ODc6XHRzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gNzg4Olx0e1xuIDc4OTpcdFx0dW5zaWduZWQgaW50IGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSAmIzQzO1xuIDc5MDpcdFx0XHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgZ3RwMV9oZWFkZXIpO1xuIDc5MTpcdFx0c3RydWN0IGd0cDFfaGVhZGVyICpndHAxO1xuIDc5MjpcdFx0c3RydWN0IHBkcF9jdHggKnBjdHg7XG4gNzkzOlx0XHRfX3UxNiBpbm5lcl9wcm90bztcbiA3OTQ6XHRcbiA3OTU6XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhkcmxlbikpXG4gNzk2Olx0XHRcdHJldHVybiAtMTtcbiA3OTc6XHRcbiA3OTg6XHRcdGd0cDEgPSAoc3RydWN0IGd0cDFfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhICYjNDM7IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSk7XG4gNzk5Olx0XG4gODAwOlx0XHRpZiAoKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDNlXHUwMDNlIDUpICE9IEdUUF9WMSlcbiA4MDE6XHRcdFx0cmV0dXJuIDE7XG4gODAyOlx0XG4gODAzOlx0XHQvKiBJZiB0aGUgc29ja2V0cyB3ZXJlIGNyZWF0ZWQgaW4ga2VybmVsLCBpdCBtZWFucyB0aGF0XG4gODA0Olx0XHQgKiB0aGVyZSBpcyBubyBkYWVtb24gcnVubmluZyBpbiB1c2Vyc3BhY2Ugd2hpY2ggd291bGRcbiA4MDU6XHRcdCAqIGhhbmRsZSBlY2hvIHJlcXVlc3QuXG4gODA2Olx0XHQgKi9cbiA4MDc6XHRcdGlmIChndHAxLVx1MDAzZXR5cGUgPT0gR1RQX0VDSE9fUkVRIFx1MDAyNlx1MDAyNiBndHAtXHUwMDNlc2tfY3JlYXRlZClcbiA4MDg6XHRcdFx0cmV0dXJuIGd0cDF1X3NlbmRfZWNob19yZXNwKGd0cCwgc2tiKTtcbiA4MDk6XHRcbiA4MTA6XHRcdGlmIChndHAxLVx1MDAzZXR5cGUgPT0gR1RQX0VDSE9fUlNQIFx1MDAyNlx1MDAyNiBndHAtXHUwMDNlc2tfY3JlYXRlZClcbiA4MTE6XHRcdFx0cmV0dXJuIGd0cDF1X2hhbmRsZV9lY2hvX3Jlc3AoZ3RwLCBza2IpO1xuIDgxMjpcdFxuIDgxMzpcdFx0aWYgKGd0cDEtXHUwMDNldHlwZSAhPSBHVFBfVFBEVSlcbiA4MTQ6XHRcdFx0cmV0dXJuIDE7XG4gODE1Olx0XG4gODE2Olx0XHQvKiBGcm9tIDI5LjA2MDogXCYjMzQ7VGhpcyBmaWVsZCBzaGFsbCBiZSBwcmVzZW50IGlmIGFuZCBvbmx5IGlmIGFueSBvbmUgb3JcbiA4MTc6XHRcdCAqIG1vcmUgb2YgdGhlIFMsIFBOIGFuZCBFIGZsYWdzIGFyZSBzZXQuXCYjMzQ7LlxuIDgxODpcdFx0ICpcbiA4MTk6XHRcdCAqIElmIGFueSBvZiB0aGUgYml0IGlzIHNldCwgdGhlbiB0aGUgcmVtYWluaW5nIG9uZXMgYWxzbyBoYXZlIHRvIGJlXG4gODIwOlx0XHQgKiBzZXQuXG4gODIxOlx0XHQgKi9cbiA4MjI6XHRcdGlmIChndHAxLVx1MDAzZWZsYWdzIFx1MDAyNiBHVFAxX0ZfTUFTSylcbiA4MjM6XHRcdFx0aGRybGVuICYjNDM7PSA0O1xuIDgyNDpcdFxuIDgyNTpcdFx0LyogTWFrZSBzdXJlIHRoZSBoZWFkZXIgaXMgbGFyZ2VyIGVub3VnaCwgaW5jbHVkaW5nIGV4dGVuc2lvbnMuICovXG4gODI2Olx0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxuIDgyNzpcdFx0XHRyZXR1cm4gLTE7XG4gODI4Olx0XG4gODI5Olx0XHRpZiAoZ3RwMS1cdTAwM2VmbGFncyBcdTAwMjYgR1RQMV9GX0VYVEhEUiBcdTAwMjZcdTAwMjZcbiA4MzA6XHRcdCAgICBndHBfcGFyc2VfZXh0aGRycyhza2IsIFx1MDAyNmhkcmxlbikgXHUwMDNjIDApXG4gODMxOlx0XHRcdHJldHVybiAtMTtcbiA4MzI6XHRcbiA4MzM6XHRcdGlmIChndHBfaW5uZXJfcHJvdG8oc2tiLCBoZHJsZW4sIFx1MDAyNmlubmVyX3Byb3RvKSBcdTAwM2MgMCkge1xuIDgzNDpcdFx0XHRuZXRkZXZfZGJnKGd0cC1cdTAwM2VkZXYsIFwmIzM0O0dUUCBwYWNrZXQgZG9lcyBub3QgZW5jYXBzdWxhdGUgYW4gSVAgcGFja2V0XFxuXCYjMzQ7KTtcbiA4MzU6XHRcdFx0cmV0dXJuIC0xO1xuIDgzNjpcdFx0fVxuIDgzNzpcdFxuIDgzODpcdFx0Z3RwMSA9IChzdHJ1Y3QgZ3RwMV9oZWFkZXIgKikoc2tiLVx1MDAzZWRhdGEgJiM0Mzsgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKTtcbiA4Mzk6XHRcbiA4NDA6XHRcdHBjdHggPSBndHAxX3BkcF9maW5kKGd0cCwgbnRvaGwoZ3RwMS1cdTAwM2V0aWQpLFxuIDg0MTpcdFx0XHRcdCAgICAgZ3RwX3Byb3RvX3RvX2ZhbWlseShpbm5lcl9wcm90bykpO1xuIDg0MjpcdFx0aWYgKCFwY3R4KSB7XG4gODQzOlx0XHRcdG5ldGRldl9kYmcoZ3RwLVx1MDAzZWRldiwgXCYjMzQ7Tm8gUERQIGN0eCB0byBkZWNhcCBza2I9JXBcXG5cJiMzNDssIHNrYik7XG4gODQ0Olx0XHRcdHJldHVybiAxO1xuIDg0NTpcdFx0fVxuIDg0NjpcdFxuIDg0NzpcdFx0cmV0dXJuIGd0cF9yeChwY3R4LCBza2IsIGhkcmxlbiwgZ3RwLVx1MDAzZXJvbGUsIGlubmVyX3Byb3RvKTtcbiA4NDg6XHR9XG4gODQ5Olx0XG4gODUwOlx0c3RhdGljIHZvaWQgX19ndHBfZW5jYXBfZGVzdHJveShzdHJ1Y3Qgc29jayAqc2spXG4gODUxOlx0e1xuIDg1MjpcdFx0c3RydWN0IGd0cF9kZXYgKmd0cDtcbiA4NTM6XHRcbiA4NTQ6XHRcdGxvY2tfc29jayhzayk7XG4gODU1Olx0XHRndHAgPSBzay1cdTAwM2Vza191c2VyX2RhdGE7XG4gODU2Olx0XHRpZiAoZ3RwKSB7XG4gODU3Olx0XHRcdGlmIChndHAtXHUwMDNlc2swID09IHNrKVxuIDg1ODpcdFx0XHRcdGd0cC1cdTAwM2VzazAgPSBOVUxMO1xuIDg1OTpcdFx0XHRlbHNlXG4gODYwOlx0XHRcdFx0Z3RwLVx1MDAzZXNrMXUgPSBOVUxMO1xuIDg2MTpcdFx0XHRXUklURV9PTkNFKHVkcF9zayhzayktXHUwMDNlZW5jYXBfdHlwZSwgMCk7XG4gODYyOlx0XHRcdHJjdV9hc3NpZ25fc2tfdXNlcl9kYXRhKHNrLCBOVUxMKTtcbiA4NjM6XHRcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiA4NjQ6XHRcdFx0c29ja19wdXQoc2spO1xuIDg2NTpcdFx0XHRyZXR1cm47XG4gODY2Olx0XHR9XG4gODY3Olx0XHRyZWxlYXNlX3NvY2soc2spO1xuIDg2ODpcdH1cbiA4Njk6XHRcbiA4NzA6XHRzdGF0aWMgdm9pZCBndHBfZW5jYXBfZGVzdHJveShzdHJ1Y3Qgc29jayAqc2spXG4gODcxOlx0e1xuIDg3MjpcdFx0cnRubF9sb2NrKCk7XG4gODczOlx0XHRfX2d0cF9lbmNhcF9kZXN0cm95KHNrKTtcbiA4NzQ6XHRcdHJ0bmxfdW5sb2NrKCk7XG4gODc1Olx0fVxuIDg3NjpcdFxuIDg3NzpcdHN0YXRpYyB2b2lkIGd0cF9lbmNhcF9kaXNhYmxlX3NvY2soc3RydWN0IHNvY2sgKnNrKVxuIDg3ODpcdHtcbiA4Nzk6XHRcdGlmICghc2spXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNzMKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdUUCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzd2l0Y2hpbmcgYXJvdW5kIHRoZSBvcmRlciBvZiBgZ3RwX3BhcnNlX2V4dGhkcnNgIGFuZCBgZ3RwX2lubmVyX3Byb3RvYC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgc2hpZnQgaW4gdGhlIEdUUCBkcml2ZXIsIG5vIHF1ZXN0aW9uIGFib3V0IGl0LiBHaXZlbiB0aGUgYEdUUGAgY29uZmlnLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcmVvcmRlcmluZyB0aG9yb3VnaGx5LiBUaGUgY29yZSBmb2N1cyBoZXJlIGlzIG9uIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAsIHNvIEkgbmVlZCB0byBzZWUgaG93IHRoZSBjaGFuZ2UgaW1wYWN0cyB0aGF0LiBSaWdodCwgSSB3aWxsIG5vdyBkZWZpbmUgdGhlIHJlc3VsdGluZyBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXRjaCBpbiB0aGUgYXBwcm9wcmlhdGUgZmllbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwMXVfdWRwX2VuY2FwX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgb3JkZXIgb2YgcGFyc2luZyBleHRlbnNpb24gaGVhZGVycyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGlubmVyIHByb3RvY29sIGluIHRoZSBHVFAgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwMXVfdWRwX2VuY2FwX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgb3JkZXIgb2YgcGFyc2luZyBleHRlbnNpb24gaGVhZGVycyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGlubmVyIHByb3RvY29sIGluIHRoZSBHVFAgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjIxOjUyLjAwNDQ2NDgwOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Njk0ODQzNzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgb3JkZXIgb2YgcGFyc2luZyBleHRlbnNpb24gaGVhZGVycyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGlubmVyIHByb3RvY29sIGluIHRoZSBHVFAgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjE6NTIuMDA0NDcwMjc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODc4MzA5MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMzFhZjg1ZDU4NTZkZWUxZjNkZDRiZGEyMDU3NDhiODQwMDU0ZDI3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMgMTE6MjE6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZ3RwLmMgYi9kcml2ZXJzL25ldC9ndHAuY1xcbmluZGV4IGE2MGVmMzJiMzViODI1Li40YThiMDA1NDg2NzM1MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2d0cC5jXFxuQEAgLTgyNiw2ICs4MjYsMTAgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbitcXHRpZiAoZ3RwMS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBHVFAxX0ZfRVhUSERSIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBndHBfcGFyc2VfZXh0aGRycyhza2IsIFxcdTAwMjZoZHJsZW4pIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIC0xO1xcbitcXG4gXFx0aWYgKGd0cF9pbm5lcl9wcm90byhza2IsIGhkcmxlbiwgXFx1MDAyNmlubmVyX3Byb3RvKSBcXHUwMDNjIDApIHtcXG4gXFx0XFx0bmV0ZGV2X2RiZyhndHAtXFx1MDAzZWRldiwgXFxcIkdUUCBwYWNrZXQgZG9lcyBub3QgZW5jYXBzdWxhdGUgYW4gSVAgcGFja2V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbkBAIC04NDAsMTAgKzg0NCw2IEBAIHN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0cmV0dXJuIDE7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChndHAxLVxcdTAwM2VmbGFncyBcXHUwMDI2IEdUUDFfRl9FWFRIRFIgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgXFx1MDAyNmhkcmxlbikgXFx1MDAzYyAwKVxcbi1cXHRcXHRyZXR1cm4gLTE7XFxuLVxcbiBcXHRyZXR1cm4gZ3RwX3J4KHBjdHgsIHNrYiwgaGRybGVuLCBndHAtXFx1MDAzZXJvbGUsIGlubmVyX3Byb3RvKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjE6NTIuNTkzMDI3NjMyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzEwNjI3MTI5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJHVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJndHAxdV91ZHBfZW5jYXBfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIHBhcnNpbmcgZXh0ZW5zaW9uIGhlYWRlcnMgYW5kIGRldGVybWluaW5nIHRoZSBpbm5lciBwcm90b2NvbCBpbiB0aGUgR1RQIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzMxYWY4NWQ1ODU2ZGVlMWYzZGQ0YmRhMjA1NzQ4Yjg0MDA1NGQyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMTE6MjE6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jXG5pbmRleCBhNjBlZjMyYjM1YjgyNS4uNGE4YjAwNTQ4NjczNTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC04MjYsNiArODI2LDEwIEBAIHN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhkcmxlbikpXG4gXHRcdHJldHVybiAtMTtcbiBcbitcdGlmIChndHAxLVx1MDAzZWZsYWdzIFx1MDAyNiBHVFAxX0ZfRVhUSERSIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgXHUwMDI2aGRybGVuKSBcdTAwM2MgMClcbitcdFx0cmV0dXJuIC0xO1xuK1xuIFx0aWYgKGd0cF9pbm5lcl9wcm90byhza2IsIGhkcmxlbiwgXHUwMDI2aW5uZXJfcHJvdG8pIFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9kYmcoZ3RwLVx1MDAzZWRldiwgXCJHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcblwiKTtcbiBcdFx0cmV0dXJuIC0xO1xuQEAgLTg0MCwxMCArODQ0LDYgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRyZXR1cm4gMTtcbiBcdH1cbiBcbi1cdGlmIChndHAxLVx1MDAzZWZsYWdzIFx1MDAyNiBHVFAxX0ZfRVhUSERSIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgXHUwMDI2aGRybGVuKSBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIC0xO1xuLVxuIFx0cmV0dXJuIGd0cF9yeChwY3R4LCBza2IsIGhkcmxlbiwgZ3RwLVx1MDAzZXJvbGUsIGlubmVyX3Byb3RvKTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMToyMTo1Mi41OTMwMjg5NTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjYxNTQwOTM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBHVFAgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgdGhlIEdUUCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZ3RwLmNgLiBGcm9tIHdoYXQgSSBzZWUsIGl0J3MgYSByZWxhdGl2ZWx5IGZvY3VzZWQgbW9kaWZpY2F0aW9uLCBtb3ZpbmcgdGhlIGBndHBfcGFyc2VfZXh0aGRyc2AgZnVuY3Rpb24gY2FsbCB3aXRoaW4gYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCB0byBvY2N1ciAqYmVmb3JlKiB0aGUgYGd0cF9pbm5lcl9wcm90b2AgY2FsbC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IHRoZSBHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkcml2ZXIgcHJvY2Vzc2VzIGVuY2Fwc3VsYXRlZCBVRFAgcGFja2V0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFybHkgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9ndHAuY2AgYW5kIHRob3JvdWdobHkgZXhhbWluZSB0aGUgY29kZSwgZXNwZWNpYWxseSBmb2N1c2luZyBvbiB0aGUgYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCBmdW5jdGlvbi4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyByZW9yZGVyaW5nIGltcGFjdHMgdGhlIHBhcnNpbmcgYW5kIGhhbmRsaW5nIG9mIEdUUCBwYWNrZXRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBvcmlnaW5hbCBmbG93IHdhcywgd2hhdCBleHRlbnNpb24gaGVhZGVycyBhcmUgYmVpbmcgcGFyc2VkLCBhbmQgaG93IHRoZSBpbm5lciBwcm90b2NvbCBpcyBiZWluZyBkZXRlcm1pbmVkLiBDcnVjaWFsbHksIEknbGwgbmVlZCB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9yIGRlcGVuZGVuY2llcy5cblxuSSdsbCBhbHNvIGhhdmUgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGguIEl04oCZcyBpbXBvcnRhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRoZSBvcmRlciBvZiBleGVjdXRpb24gaGVyZSwgc28gSSBuZWVkIHRvIGNoZWNrIGZvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBmbGFncyB0aGF0IGNvdWxkIGJlIHJlbGV2YW50LiBVbmRlcnN0YW5kaW5nIHRoZSBcIndoeVwiIGJlaGluZCB0aGlzIHBhdGNoIGlzIGNyaXRpY2FsLCBhbmQgdGhhdCBsaWtlbHkgbGllcyBpbiBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBuZXR3b3JrIHRyYWZmaWMgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gaGFuZGxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDM4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MDkuMjA4NDQwMjg4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4ODEzOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jPTc1MD1zdGF0aWMgaW50IGd0cF9wYXJzZV9leHRoZHJzKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCAqaGRybGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtNzg2LVxcbmRyaXZlcnMvbmV0L2d0cC5jOjc4NzpzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZ3RwLmMtNzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jPTkwMj1zdGF0aWMgaW50IGd0cF9lbmNhcF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTkxOS1cXHRcXHRuZXRkZXZfZGJnKGd0cC1cXHUwMDNlZGV2LCBcXFwicmVjZWl2ZWQgR1RQMVUgcGFja2V0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ndHAuYzo5MjA6XFx0XFx0cmV0ID0gZ3RwMXVfdWRwX2VuY2FwX3JlY3YoZ3RwLCBza2IpO1xcbmRyaXZlcnMvbmV0L2d0cC5jLTkyMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MDkuMzA3MjYxNzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjg4NDc3NTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBHVFAgRW5jYXBzdWxhdGlvbiBSZWNlcHRpb24qKlxuXG5Pa2F5LCBzbyBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIHdpdGhpbiB0aGUgYGd0cF9lbmNhcF9yZWN2YCBmdW5jdGlvbi4gVGhhdCdzIGdvb2QgdG8ga25vdywgdGhhdCB0ZWxscyBtZSB0aGUgcG9pbnQgb2YgZW50cnkgYW5kIHRoZSByZWxldmFudCBpbXBsZW1lbnRhdGlvbi4gTm93LCBpZiBJJ20gbG9va2luZyBhdCBHVFAgZW5jYXBzdWxhdGlvbiwgYSBxdWljayBjaGVjayBvZiB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciB0aGUgYGRyaXZlcnMvbmV0L2d0cC5jYCBkcml2ZXIgZmlsZSB3b3VsZCBiZSB2ZXJ5IHVzZWZ1bCwgd291bGRuJ3QgaXQ/IExldCdzIGZpZ3VyZSBvdXQgd2hhdCBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWF5IGVmZmVjdCB0aGUgb3BlcmF0aW9uIGhlcmUuIFRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgd2hhdCBwYXJ0cyBvZiB0aGUgR1RQIGZ1bmN0aW9uYWxpdHkgYXJlIGNvbXBpbGVkIGFuZCBlbmFibGVkLCBhbmQgYWxzbyB3aGF0IHByZXByb2Nlc3NvciBzeW1ib2xzIGNvdWxkIGJlIGF0IHBsYXkgZm9yIHRoaXMgcGFydCBvZiB0aGUgY29kZSBiYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzYyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MTIuNTk1NzQxOTkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzkyNzY2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndHBcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0JBUkVVRFApICs9IGJhcmV1ZHAub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19HVFApICs9IGd0cC5vXFxuZHJpdmVycy9uZXQvTWFrZWZpbGUtNDAtb2JqLSQoQ09ORklHX05MTU9OKSArPSBubG1vbi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjIyOjEyLjcwMzY4MDQ1NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NjgyOTAzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCB0aGUgcHJpbWFyeSBjb25maWcgYXQgcGxheSBoZXJlIGlzIGBDT05GSUdfR1RQYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB0aGF0J3MgdGhlICpvbmx5KiBvbmUgcmVsZXZhbnQgYXQgdGhlIG1vbWVudC4gSXQncyBjcnVjaWFsIHRvIGNvbmZpcm0gdGhpcyDigJMgeW91IGtub3csIG1ha2Ugc3VyZSB3ZSBhcmVuJ3Qgb3Zlcmxvb2tpbmcgYW55IG90aGVyIHBvdGVudGlhbCBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGludGVyYWN0IHdpdGggb3Igb3ZlcnJpZGUgYENPTkZJR19HVFBgLiBJIG5lZWQgdG8gYXNzZXNzIHRoZSBiaWdnZXIgcGljdHVyZSwgeW91IGtub3csIHVuZGVyc3RhbmQgaWYgdGhlcmUncyBhbnkgYnJhbmNoaW5nIGxvZ2ljIG9yIGNvbmRpdGlvbmFsIHNldHRpbmdzIHRpZWQgdG8gb3RoZXIgZmxhZ3MgdGhhdCB3b3VsZCBhZmZlY3QgaXRzIGJlaGF2aW91ci4gQ29udGV4dCBpcyBrZXksIGFuZCBJIGRvbid0IHdhbnQgdG8ganVtcCB0byBjb25jbHVzaW9ucyB1bnRpbCBJJ3ZlIHNjb3BlZCBvdXQgYWxsIHRoZSBwb3NzaWJpbGl0aWVzLiBTbywgc3RlcCBvbmUg4oCTIGNvbXByZWhlbnNpdmUgc2VhcmNoIGZvciBhbnkgcmVsYXRlZCBjb25maWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDkzLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MTUuNTcxOTc0OTIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTQwMDIxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgR1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjcxLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjcyOmNvbmZpZyBHVFBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cXHR0cmlzdGF0ZSBcXFwiR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MTUuNjczMzgzNzQ0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3NTIyNjA0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEdUUDogSW5pdGlhbCBUaG91Z2h0cyBhbmQgRnVuY3Rpb24gU2VsZWN0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSBnZWFyZWQgdG93YXJkIEdUUCDigJMgdGhhdCBtdWNoIGlzIG9idmlvdXMuIE15IGluaXRpYWwgdGFyZ2V0IGZ1bmN0aW9uIGZvciBmdXp6aW5nIGlzIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAuIEJ1dCBiZWZvcmUgZGl2aW5nIGluLCBJIHNob3VsZCBkbyBhIHF1aWNrIHJlY29ubmFpc3NhbmNlIHN3ZWVwIG9mIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgR1RQIGNvZGUsIGp1c3QgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBtb3JlIHN0cmF0ZWdpYyB0YXJnZXQuIExldCdzIHNlZS4uLiBBaCwgdGhlcmUgYXJlIGEgZmV3IGNvbnRlbmRlcnM6IGBndHBfcGFyc2VfZXh0aGRyc2AsIGBndHBfaW5uZXJfcHJvdG9gLCBhbmQgYGd0cF9lbmNhcF9yZWN2YC4gTWFrZXMgc2Vuc2UsIHRoZXkncmUgYWxsIGludm9sdmVkIGluIGRpZmZlcmVudCBhc3BlY3RzIG9mIEdUUCBwYWNrZXQgcHJvY2Vzc2luZywgYW5kIG1pZ2h0IGJlIGludGVyZXN0aW5nIHRhcmdldHMsIGJ1dCBsZXQncyBiZWdpbiBieSBmb2N1c2luZyBvbiB0aGUgZnVuY3Rpb24gZXhwbGljaXRseSBjYWxsZWQgb3V0LCB0aGUgYGd0cDF1X3VkcF9lbmNhcF9yZWN2YC4gUmlnaHQuIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2d0cC5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCB0byBnZXQgYSBnb29kIHNlbnNlIG9mIGl0cyBzdHJ1Y3R1cmUgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzODUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MTkuNDQ4NjEzNThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2d0cC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc4MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3ODA6XFx0XFx0fSB3aGlsZSAoKm5leHRfdHlwZSAhPSAwKTtcXG4gNzgxOlxcdFxcbiA3ODI6XFx0XFx0KmhkcmxlbiA9IG9mZnNldDtcXG4gNzgzOlxcdFxcbiA3ODQ6XFx0XFx0cmV0dXJuIDA7XFxuIDc4NTpcXHR9XFxuIDc4NjpcXHRcXG4gNzg3OlxcdHN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gNzg4OlxcdHtcXG4gNzg5OlxcdFxcdHVuc2lnbmVkIGludCBoZHJsZW4gPSBzaXplb2Yoc3RydWN0IHVkcGhkcikgK1xcbiA3OTA6XFx0XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBndHAxX2hlYWRlcik7XFxuIDc5MTpcXHRcXHRzdHJ1Y3QgZ3RwMV9oZWFkZXIgKmd0cDE7XFxuIDc5MjpcXHRcXHRzdHJ1Y3QgcGRwX2N0eCAqcGN0eDtcXG4gNzkzOlxcdFxcdF9fdTE2IGlubmVyX3Byb3RvO1xcbiA3OTQ6XFx0XFxuIDc5NTpcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxcbiA3OTY6XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiA3OTc6XFx0XFxuIDc5ODpcXHRcXHRndHAxID0gKHN0cnVjdCBndHAxX2hlYWRlciAqKShza2ItXFx1MDAzZWRhdGEgKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpO1xcbiA3OTk6XFx0XFxuIDgwMDpcXHRcXHRpZiAoKGd0cDEtXFx1MDAzZWZsYWdzIFxcdTAwM2VcXHUwMDNlIDUpICE9IEdUUF9WMSlcXG4gODAxOlxcdFxcdFxcdHJldHVybiAxO1xcbiA4MDI6XFx0XFxuIDgwMzpcXHRcXHQvKiBJZiB0aGUgc29ja2V0cyB3ZXJlIGNyZWF0ZWQgaW4ga2VybmVsLCBpdCBtZWFucyB0aGF0XFxuIDgwNDpcXHRcXHQgKiB0aGVyZSBpcyBubyBkYWVtb24gcnVubmluZyBpbiB1c2Vyc3BhY2Ugd2hpY2ggd291bGRcXG4gODA1OlxcdFxcdCAqIGhhbmRsZSBlY2hvIHJlcXVlc3QuXFxuIDgwNjpcXHRcXHQgKi9cXG4gODA3OlxcdFxcdGlmIChndHAxLVxcdTAwM2V0eXBlID09IEdUUF9FQ0hPX1JFUSBcXHUwMDI2XFx1MDAyNiBndHAtXFx1MDAzZXNrX2NyZWF0ZWQpXFxuIDgwODpcXHRcXHRcXHRyZXR1cm4gZ3RwMXVfc2VuZF9lY2hvX3Jlc3AoZ3RwLCBza2IpO1xcbiA4MDk6XFx0XFxuIDgxMDpcXHRcXHRpZiAoZ3RwMS1cXHUwMDNldHlwZSA9PSBHVFBfRUNIT19SU1AgXFx1MDAyNlxcdTAwMjYgZ3RwLVxcdTAwM2Vza19jcmVhdGVkKVxcbiA4MTE6XFx0XFx0XFx0cmV0dXJuIGd0cDF1X2hhbmRsZV9lY2hvX3Jlc3AoZ3RwLCBza2IpO1xcbiA4MTI6XFx0XFxuIDgxMzpcXHRcXHRpZiAoZ3RwMS1cXHUwMDNldHlwZSAhPSBHVFBfVFBEVSlcXG4gODE0OlxcdFxcdFxcdHJldHVybiAxO1xcbiA4MTU6XFx0XFxuIDgxNjpcXHRcXHQvKiBGcm9tIDI5LjA2MDogXFxcIlRoaXMgZmllbGQgc2hhbGwgYmUgcHJlc2VudCBpZiBhbmQgb25seSBpZiBhbnkgb25lIG9yXFxuIDgxNzpcXHRcXHQgKiBtb3JlIG9mIHRoZSBTLCBQTiBhbmQgRSBmbGFncyBhcmUgc2V0LlxcXCIuXFxuIDgxODpcXHRcXHQgKlxcbiA4MTk6XFx0XFx0ICogSWYgYW55IG9mIHRoZSBiaXQgaXMgc2V0LCB0aGVuIHRoZSByZW1haW5pbmcgb25lcyBhbHNvIGhhdmUgdG8gYmVcXG4gODIwOlxcdFxcdCAqIHNldC5cXG4gODIxOlxcdFxcdCAqL1xcbiA4MjI6XFx0XFx0aWYgKGd0cDEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgR1RQMV9GX01BU0spXFxuIDgyMzpcXHRcXHRcXHRoZHJsZW4gKz0gNDtcXG4gODI0OlxcdFxcbiA4MjU6XFx0XFx0LyogTWFrZSBzdXJlIHRoZSBoZWFkZXIgaXMgbGFyZ2VyIGVub3VnaCwgaW5jbHVkaW5nIGV4dGVuc2lvbnMuICovXFxuIDgyNjpcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxcbiA4Mjc6XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiA4Mjg6XFx0XFxuIDgyOTpcXHRcXHRpZiAoZ3RwMS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBHVFAxX0ZfRVhUSERSIFxcdTAwMjZcXHUwMDI2XFxuIDgzMDpcXHRcXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcXHUwMDI2aGRybGVuKSBcXHUwMDNjIDApXFxuIDgzMTpcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIDgzMjpcXHRcXG4gODMzOlxcdFxcdGlmIChndHBfaW5uZXJfcHJvdG8oc2tiLCBoZHJsZW4sIFxcdTAwMjZpbm5lcl9wcm90bykgXFx1MDAzYyAwKSB7XFxuIDgzNDpcXHRcXHRcXHRuZXRkZXZfZGJnKGd0cC1cXHUwMDNlZGV2LCBcXFwiR1RQIHBhY2tldCBkb2VzIG5vdCBlbmNhcHN1bGF0ZSBhbiBJUCBwYWNrZXRcXFxcblxcXCIpO1xcbiA4MzU6XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiA4MzY6XFx0XFx0fVxcbiA4Mzc6XFx0XFxuIDgzODpcXHRcXHRndHAxID0gKHN0cnVjdCBndHAxX2hlYWRlciAqKShza2ItXFx1MDAzZWRhdGEgKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpO1xcbiA4Mzk6XFx0XFxuIDg0MDpcXHRcXHRwY3R4ID0gZ3RwMV9wZHBfZmluZChndHAsIG50b2hsKGd0cDEtXFx1MDAzZXRpZCksXFxuIDg0MTpcXHRcXHRcXHRcXHQgICAgIGd0cF9wcm90b190b19mYW1pbHkoaW5uZXJfcHJvdG8pKTtcXG4gODQyOlxcdFxcdGlmICghcGN0eCkge1xcbiA4NDM6XFx0XFx0XFx0bmV0ZGV2X2RiZyhndHAtXFx1MDAzZWRldiwgXFxcIk5vIFBEUCBjdHggdG8gZGVjYXAgc2tiPSVwXFxcXG5cXFwiLCBza2IpO1xcbiA4NDQ6XFx0XFx0XFx0cmV0dXJuIDE7XFxuIDg0NTpcXHRcXHR9XFxuIDg0NjpcXHRcXG4gODQ3OlxcdFxcdHJldHVybiBndHBfcngocGN0eCwgc2tiLCBoZHJsZW4sIGd0cC1cXHUwMDNlcm9sZSwgaW5uZXJfcHJvdG8pO1xcbiA4NDg6XFx0fVxcbiA4NDk6XFx0XFxuIDg1MDpcXHRzdGF0aWMgdm9pZCBfX2d0cF9lbmNhcF9kZXN0cm95KHN0cnVjdCBzb2NrICpzaylcXG4gODUxOlxcdHtcXG4gODUyOlxcdFxcdHN0cnVjdCBndHBfZGV2ICpndHA7XFxuIDg1MzpcXHRcXG4gODU0OlxcdFxcdGxvY2tfc29jayhzayk7XFxuIDg1NTpcXHRcXHRndHAgPSBzay1cXHUwMDNlc2tfdXNlcl9kYXRhO1xcbiA4NTY6XFx0XFx0aWYgKGd0cCkge1xcbiA4NTc6XFx0XFx0XFx0aWYgKGd0cC1cXHUwMDNlc2swID09IHNrKVxcbiA4NTg6XFx0XFx0XFx0XFx0Z3RwLVxcdTAwM2VzazAgPSBOVUxMO1xcbiA4NTk6XFx0XFx0XFx0ZWxzZVxcbiA4NjA6XFx0XFx0XFx0XFx0Z3RwLVxcdTAwM2VzazF1ID0gTlVMTDtcXG4gODYxOlxcdFxcdFxcdFdSSVRFX09OQ0UodWRwX3NrKHNrKS1cXHUwMDNlZW5jYXBfdHlwZSwgMCk7XFxuIDg2MjpcXHRcXHRcXHRyY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTCk7XFxuIDg2MzpcXHRcXHRcXHRyZWxlYXNlX3NvY2soc2spO1xcbiA4NjQ6XFx0XFx0XFx0c29ja19wdXQoc2spO1xcbiA4NjU6XFx0XFx0XFx0cmV0dXJuO1xcbiA4NjY6XFx0XFx0fVxcbiA4Njc6XFx0XFx0cmVsZWFzZV9zb2NrKHNrKTtcXG4gODY4OlxcdH1cXG4gODY5OlxcdFxcbiA4NzA6XFx0c3RhdGljIHZvaWQgZ3RwX2VuY2FwX2Rlc3Ryb3koc3RydWN0IHNvY2sgKnNrKVxcbiA4NzE6XFx0e1xcbiA4NzI6XFx0XFx0cnRubF9sb2NrKCk7XFxuIDg3MzpcXHRcXHRfX2d0cF9lbmNhcF9kZXN0cm95KHNrKTtcXG4gODc0OlxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuIDg3NTpcXHR9XFxuIDg3NjpcXHRcXG4gODc3OlxcdHN0YXRpYyB2b2lkIGd0cF9lbmNhcF9kaXNhYmxlX3NvY2soc3RydWN0IHNvY2sgKnNrKVxcbiA4Nzg6XFx0e1xcbiA4Nzk6XFx0XFx0aWYgKCFzaylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MTkuNDQ4ODQ2MDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAwNDAxNDE4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHVFAgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzd2l0Y2hpbmcgYXJvdW5kIHRoZSBvcmRlciBvZiBgZ3RwX3BhcnNlX2V4dGhkcnNgIGFuZCBgZ3RwX2lubmVyX3Byb3RvYC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBzaGlmdCBpbiB0aGUgR1RQIGRyaXZlciwgbm8gcXVlc3Rpb24gYWJvdXQgaXQuIEdpdmVuIHRoZSBgR1RQYCBjb25maWcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW9yZGVyaW5nIHRob3JvdWdobHkuIFRoZSBjb3JlIGZvY3VzIGhlcmUgaXMgb24gYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCwgc28gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGNoYW5nZSBpbXBhY3RzIHRoYXQuIFJpZ2h0LCBJIHdpbGwgbm93IGRlZmluZSB0aGUgcmVzdWx0aW5nIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoIGluIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNzMsIk91dHB1dFRva2VucyI6ODQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjIyOjM5LjQ4ODk5MDYyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDMwMjU2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3RwMXVfdWRwX2VuY2FwX3JlY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBwYXJzaW5nIGV4dGVuc2lvbiBoZWFkZXJzIGFuZCBkZXRlcm1pbmluZyB0aGUgaW5uZXIgcHJvdG9jb2wgaW4gdGhlIEdUUCBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgb3JkZXIgb2YgcGFyc2luZyBleHRlbnNpb24gaGVhZGVycyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGlubmVyIHByb3RvY29sIGluIHRoZSBHVFAgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowwj7rj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 11:04:29 +0000 UTC FinishedAt: 2026-07-03 11:22:40 +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": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "047e2af4-1c9a-4d5f-8002-602eebe7477b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "gtp1u_udp_encap_recv" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cDF1X3VkcF9lbmNhcF9yZWN2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIHBhcnNpbmcgZXh0ZW5zaW9uIGhlYWRlcnMgYW5kIGRldGVybWluaW5nIHRoZSBpbm5lciBwcm90b2NvbCBpbiB0aGUgR1RQIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMzFhZjg1ZDU4NTZkZWUxZjNkZDRiZGEyMDU3NDhiODQwMDU0ZDI3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMToyMTo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jXG5pbmRleCBhNjBlZjMyYjM1YjgyNS4uNGE4YjAwNTQ4NjczNTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC04MjYsNiAmIzQzOzgyNiwxMCBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4mIzQzO1x0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgXHUwMDI2aGRybGVuKSBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiAtMTtcbiYjNDM7XG4gXHRpZiAoZ3RwX2lubmVyX3Byb3RvKHNrYiwgaGRybGVuLCBcdTAwMjZpbm5lcl9wcm90bykgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2RiZyhndHAtXHUwMDNlZGV2LCBcJiMzNDtHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiAtMTtcbkBAIC04NDAsMTAgJiM0Mzs4NDQsNiBAQCBzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gXHRcdHJldHVybiAxO1xuIFx0fVxuIFxuLVx0aWYgKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDI2IEdUUDFfRl9FWFRIRFIgXHUwMDI2XHUwMDI2XG4tXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcdTAwMjZoZHJsZW4pIFx1MDAzYyAwKVxuLVx0XHRyZXR1cm4gLTE7XG4tXG4gXHRyZXR1cm4gZ3RwX3J4KHBjdHgsIHNrYiwgaGRybGVuLCBndHAtXHUwMDNlcm9sZSwgaW5uZXJfcHJvdG8pO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndHAxdV91ZHBfZW5jYXBfcmVjdiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBwYXJzaW5nIGV4dGVuc2lvbiBoZWFkZXJzIGFuZCBkZXRlcm1pbmluZyB0aGUgaW5uZXIgcHJvdG9jb2wgaW4gdGhlIEdUUCBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjMzFhZjg1ZDU4NTZkZWUxZjNkZDRiZGEyMDU3NDhiODQwMDU0ZDI3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAxMToyMTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmMKaW5kZXggYTYwZWYzMmIzNWI4MjUuLjRhOGIwMDU0ODY3MzUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ndHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ndHAuYwpAQCAtODI2LDYgJiM0Mzs4MjYsMTAgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmICghcHNrYl9tYXlfcHVsbChza2IsIGhkcmxlbikpCiAJCXJldHVybiAtMTsKIAomIzQzOwlpZiAoZ3RwMS0mZ3Q7ZmxhZ3MgJmFtcDsgR1RQMV9GX0VYVEhEUiAmYW1wOyZhbXA7CiYjNDM7CSAgICBndHBfcGFyc2VfZXh0aGRycyhza2IsICZhbXA7aGRybGVuKSAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gLTE7CiYjNDM7CiAJaWYgKGd0cF9pbm5lcl9wcm90byhza2IsIGhkcmxlbiwgJmFtcDtpbm5lcl9wcm90bykgJmx0OyAwKSB7CiAJCW5ldGRldl9kYmcoZ3RwLSZndDtkZXYsICYjMzQ7R1RQIHBhY2tldCBkb2VzIG5vdCBlbmNhcHN1bGF0ZSBhbiBJUCBwYWNrZXRcbiYjMzQ7KTsKIAkJcmV0dXJuIC0xOwpAQCAtODQwLDEwICYjNDM7ODQ0LDYgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlyZXR1cm4gMTsKIAl9CiAKLQlpZiAoZ3RwMS0mZ3Q7ZmxhZ3MgJmFtcDsgR1RQMV9GX0VYVEhEUiAmYW1wOyZhbXA7Ci0JICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgJmFtcDtoZHJsZW4pICZsdDsgMCkKLQkJcmV0dXJuIC0xOwotCiAJcmV0dXJuIGd0cF9yeChwY3R4LCBza2IsIGhkcmxlbiwgZ3RwLSZndDtyb2xlLCBpbm5lcl9wcm90byk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBHVFAgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFmZmVjdGluZyB0aGUgR1RQIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL25ldC9ndHAuY2AuIEZyb20gd2hhdCBJIHNlZSwgaXQmIzM5O3MgYSByZWxhdGl2ZWx5IGZvY3VzZWQgbW9kaWZpY2F0aW9uLCBtb3ZpbmcgdGhlIGBndHBfcGFyc2VfZXh0aGRyc2AgZnVuY3Rpb24gY2FsbCB3aXRoaW4gYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCB0byBvY2N1ciAqYmVmb3JlKiB0aGUgYGd0cF9pbm5lcl9wcm90b2AgY2FsbC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IHRoZSBHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkcml2ZXIgcHJvY2Vzc2VzIGVuY2Fwc3VsYXRlZCBVRFAgcGFja2V0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4KCk15IG5leHQgc3RlcCBpcyBjbGVhcmx5IHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvZ3RwLmNgIGFuZCB0aG9yb3VnaGx5IGV4YW1pbmUgdGhlIGNvZGUsIGVzcGVjaWFsbHkgZm9jdXNpbmcgb24gdGhlIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAgZnVuY3Rpb24uIEkgd2FudCB0byBzZWUgaG93IHRoaXMgcmVvcmRlcmluZyBpbXBhY3RzIHRoZSBwYXJzaW5nIGFuZCBoYW5kbGluZyBvZiBHVFAgcGFja2V0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGUgb3JpZ2luYWwgZmxvdyB3YXMsIHdoYXQgZXh0ZW5zaW9uIGhlYWRlcnMgYXJlIGJlaW5nIHBhcnNlZCwgYW5kIGhvdyB0aGUgaW5uZXIgcHJvdG9jb2wgaXMgYmVpbmcgZGV0ZXJtaW5lZC4gQ3J1Y2lhbGx5LCBJJiMzOTtsbCBuZWVkIHRvIHRoaW5rIGFib3V0IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgb3IgZGVwZW5kZW5jaWVzLgoKSSYjMzk7bGwgYWxzbyBoYXZlIHRvIGtlZXAgYW4gZXllIG91dCBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLiBJdOKAmXMgaW1wb3J0YW50IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHdoaWNoIGRlcGVuZCBvbiB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIGhlcmUsIHNvIEkgbmVlZCB0byBjaGVjayBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb3IgZmxhZ3MgdGhhdCBjb3VsZCBiZSByZWxldmFudC4gVW5kZXJzdGFuZGluZyB0aGUgJiMzNDt3aHkmIzM0OyBiZWhpbmQgdGhpcyBwYXRjaCBpcyBjcml0aWNhbCwgYW5kIHRoYXQgbGlrZWx5IGxpZXMgaW4gYSBkZWVwZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgbmV0d29yayB0cmFmZmljIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIGhhbmRsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndHAxdV91ZHBfZW5jYXBfcmVjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2d0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2d0cC5jPTc1MD1zdGF0aWMgaW50IGd0cF9wYXJzZV9leHRoZHJzKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCAqaGRybGVuKVxuLS1cbmRyaXZlcnMvbmV0L2d0cC5jLTc4Ni1cbmRyaXZlcnMvbmV0L2d0cC5jOjc4NzpzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ndHAuYy03ODgte1xuLS1cbmRyaXZlcnMvbmV0L2d0cC5jPTkwMj1zdGF0aWMgaW50IGd0cF9lbmNhcF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy05MTktXHRcdG5ldGRldl9kYmcoZ3RwLVx1MDAzZWRldiwgXCYjMzQ7cmVjZWl2ZWQgR1RQMVUgcGFja2V0XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2d0cC5jOjkyMDpcdFx0cmV0ID0gZ3RwMXVfdWRwX2VuY2FwX3JlY3YoZ3RwLCBza2IpO1xuZHJpdmVycy9uZXQvZ3RwLmMtOTIxLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzYyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIEdUUCBFbmNhcHN1bGF0aW9uIFJlY2VwdGlvbioqCgpPa2F5LCBzbyBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIHdpdGhpbiB0aGUgYGd0cF9lbmNhcF9yZWN2YCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIHRoYXQgdGVsbHMgbWUgdGhlIHBvaW50IG9mIGVudHJ5IGFuZCB0aGUgcmVsZXZhbnQgaW1wbGVtZW50YXRpb24uIE5vdywgaWYgSSYjMzk7bSBsb29raW5nIGF0IEdUUCBlbmNhcHN1bGF0aW9uLCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBgZHJpdmVycy9uZXQvZ3RwLmNgIGRyaXZlciBmaWxlIHdvdWxkIGJlIHZlcnkgdXNlZnVsLCB3b3VsZG4mIzM5O3QgaXQ/IExldCYjMzk7cyBmaWd1cmUgb3V0IHdoYXQgYnVpbGQgY29uZmlndXJhdGlvbiBvcHRpb25zIG1heSBlZmZlY3QgdGhlIG9wZXJhdGlvbiBoZXJlLiBUaGlzIHdpbGwgaGVscCB1bmRlcnN0YW5kIHdoYXQgcGFydHMgb2YgdGhlIEdUUCBmdW5jdGlvbmFsaXR5IGFyZSBjb21waWxlZCBhbmQgZW5hYmxlZCwgYW5kIGFsc28gd2hhdCBwcmVwcm9jZXNzb3Igc3ltYm9scyBjb3VsZCBiZSBhdCBwbGF5IGZvciB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndHBcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0JBUkVVRFApICYjNDM7PSBiYXJldWRwLm9cbmRyaXZlcnMvbmV0L01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19HVFApICYjNDM7PSBndHAub1xuZHJpdmVycy9uZXQvTWFrZWZpbGUtNDAtb2JqLSQoQ09ORklHX05MTU9OKSAmIzQzOz0gbmxtb24ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwOTMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6CgoqKkNvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCk9rYXksIHRoZSBwcmltYXJ5IGNvbmZpZyBhdCBwbGF5IGhlcmUgaXMgYENPTkZJR19HVFBgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHRoYXQmIzM5O3MgdGhlICpvbmx5KiBvbmUgcmVsZXZhbnQgYXQgdGhlIG1vbWVudC4gSXQmIzM5O3MgY3J1Y2lhbCB0byBjb25maXJtIHRoaXMg4oCTIHlvdSBrbm93LCBtYWtlIHN1cmUgd2UgYXJlbiYjMzk7dCBvdmVybG9va2luZyBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgaW50ZXJhY3Qgd2l0aCBvciBvdmVycmlkZSBgQ09ORklHX0dUUGAuIEkgbmVlZCB0byBhc3Nlc3MgdGhlIGJpZ2dlciBwaWN0dXJlLCB5b3Uga25vdywgdW5kZXJzdGFuZCBpZiB0aGVyZSYjMzk7cyBhbnkgYnJhbmNoaW5nIGxvZ2ljIG9yIGNvbmRpdGlvbmFsIHNldHRpbmdzIHRpZWQgdG8gb3RoZXIgZmxhZ3MgdGhhdCB3b3VsZCBhZmZlY3QgaXRzIGJlaGF2aW91ci4gQ29udGV4dCBpcyBrZXksIGFuZCBJIGRvbiYjMzk7dCB3YW50IHRvIGp1bXAgdG8gY29uY2x1c2lvbnMgdW50aWwgSSYjMzk7dmUgc2NvcGVkIG91dCBhbGwgdGhlIHBvc3NpYmlsaXRpZXMuIFNvLCBzdGVwIG9uZSDigJMgY29tcHJlaGVuc2l2ZSBzZWFyY2ggZm9yIGFueSByZWxhdGVkIGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEdUUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3MS1cbmRyaXZlcnMvbmV0L0tjb25maWc6MjcyOmNvbmZpZyBHVFBcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVx0dHJpc3RhdGUgXCYjMzQ7R1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzODUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBHVFA6IEluaXRpYWwgVGhvdWdodHMgYW5kIEZ1bmN0aW9uIFNlbGVjdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpcyBjbGVhcmx5IGdlYXJlZCB0b3dhcmQgR1RQIOKAkyB0aGF0IG11Y2ggaXMgb2J2aW91cy4gTXkgaW5pdGlhbCB0YXJnZXQgZnVuY3Rpb24gZm9yIGZ1enppbmcgaXMgYGd0cDF1X3VkcF9lbmNhcF9yZWN2YC4gQnV0IGJlZm9yZSBkaXZpbmcgaW4sIEkgc2hvdWxkIGRvIGEgcXVpY2sgcmVjb25uYWlzc2FuY2Ugc3dlZXAgb2YgcmVsYXRlZCBmdW5jdGlvbnMgd2l0aGluIHRoZSBHVFAgY29kZSwganVzdCB0byBlbnN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBtb3JlIHN0cmF0ZWdpYyB0YXJnZXQuIExldCYjMzk7cyBzZWUuLi4gQWgsIHRoZXJlIGFyZSBhIGZldyBjb250ZW5kZXJzOiBgZ3RwX3BhcnNlX2V4dGhkcnNgLCBgZ3RwX2lubmVyX3Byb3RvYCwgYW5kIGBndHBfZW5jYXBfcmVjdmAuIE1ha2VzIHNlbnNlLCB0aGV5JiMzOTtyZSBhbGwgaW52b2x2ZWQgaW4gZGlmZmVyZW50IGFzcGVjdHMgb2YgR1RQIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgbWlnaHQgYmUgaW50ZXJlc3RpbmcgdGFyZ2V0cywgYnV0IGxldCYjMzk7cyBiZWdpbiBieSBmb2N1c2luZyBvbiB0aGUgZnVuY3Rpb24gZXhwbGljaXRseSBjYWxsZWQgb3V0LCB0aGUgYGd0cDF1X3VkcF9lbmNhcF9yZWN2YC4gUmlnaHQuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ndHAuY2AgYW5kIHRha2UgYSBsb29rIGF0IGBndHAxdV91ZHBfZW5jYXBfcmVjdmAgdG8gZ2V0IGEgZ29vZCBzZW5zZSBvZiBpdHMgc3RydWN0dXJlIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2d0cC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzgwOlx0XHR9IHdoaWxlICgqbmV4dF90eXBlICE9IDApO1xuIDc4MTpcdFxuIDc4MjpcdFx0KmhkcmxlbiA9IG9mZnNldDtcbiA3ODM6XHRcbiA3ODQ6XHRcdHJldHVybiAwO1xuIDc4NTpcdH1cbiA3ODY6XHRcbiA3ODc6XHRzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXG4gNzg4Olx0e1xuIDc4OTpcdFx0dW5zaWduZWQgaW50IGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSAmIzQzO1xuIDc5MDpcdFx0XHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgZ3RwMV9oZWFkZXIpO1xuIDc5MTpcdFx0c3RydWN0IGd0cDFfaGVhZGVyICpndHAxO1xuIDc5MjpcdFx0c3RydWN0IHBkcF9jdHggKnBjdHg7XG4gNzkzOlx0XHRfX3UxNiBpbm5lcl9wcm90bztcbiA3OTQ6XHRcbiA3OTU6XHRcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhkcmxlbikpXG4gNzk2Olx0XHRcdHJldHVybiAtMTtcbiA3OTc6XHRcbiA3OTg6XHRcdGd0cDEgPSAoc3RydWN0IGd0cDFfaGVhZGVyICopKHNrYi1cdTAwM2VkYXRhICYjNDM7IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSk7XG4gNzk5Olx0XG4gODAwOlx0XHRpZiAoKGd0cDEtXHUwMDNlZmxhZ3MgXHUwMDNlXHUwMDNlIDUpICE9IEdUUF9WMSlcbiA4MDE6XHRcdFx0cmV0dXJuIDE7XG4gODAyOlx0XG4gODAzOlx0XHQvKiBJZiB0aGUgc29ja2V0cyB3ZXJlIGNyZWF0ZWQgaW4ga2VybmVsLCBpdCBtZWFucyB0aGF0XG4gODA0Olx0XHQgKiB0aGVyZSBpcyBubyBkYWVtb24gcnVubmluZyBpbiB1c2Vyc3BhY2Ugd2hpY2ggd291bGRcbiA4MDU6XHRcdCAqIGhhbmRsZSBlY2hvIHJlcXVlc3QuXG4gODA2Olx0XHQgKi9cbiA4MDc6XHRcdGlmIChndHAxLVx1MDAzZXR5cGUgPT0gR1RQX0VDSE9fUkVRIFx1MDAyNlx1MDAyNiBndHAtXHUwMDNlc2tfY3JlYXRlZClcbiA4MDg6XHRcdFx0cmV0dXJuIGd0cDF1X3NlbmRfZWNob19yZXNwKGd0cCwgc2tiKTtcbiA4MDk6XHRcbiA4MTA6XHRcdGlmIChndHAxLVx1MDAzZXR5cGUgPT0gR1RQX0VDSE9fUlNQIFx1MDAyNlx1MDAyNiBndHAtXHUwMDNlc2tfY3JlYXRlZClcbiA4MTE6XHRcdFx0cmV0dXJuIGd0cDF1X2hhbmRsZV9lY2hvX3Jlc3AoZ3RwLCBza2IpO1xuIDgxMjpcdFxuIDgxMzpcdFx0aWYgKGd0cDEtXHUwMDNldHlwZSAhPSBHVFBfVFBEVSlcbiA4MTQ6XHRcdFx0cmV0dXJuIDE7XG4gODE1Olx0XG4gODE2Olx0XHQvKiBGcm9tIDI5LjA2MDogXCYjMzQ7VGhpcyBmaWVsZCBzaGFsbCBiZSBwcmVzZW50IGlmIGFuZCBvbmx5IGlmIGFueSBvbmUgb3JcbiA4MTc6XHRcdCAqIG1vcmUgb2YgdGhlIFMsIFBOIGFuZCBFIGZsYWdzIGFyZSBzZXQuXCYjMzQ7LlxuIDgxODpcdFx0ICpcbiA4MTk6XHRcdCAqIElmIGFueSBvZiB0aGUgYml0IGlzIHNldCwgdGhlbiB0aGUgcmVtYWluaW5nIG9uZXMgYWxzbyBoYXZlIHRvIGJlXG4gODIwOlx0XHQgKiBzZXQuXG4gODIxOlx0XHQgKi9cbiA4MjI6XHRcdGlmIChndHAxLVx1MDAzZWZsYWdzIFx1MDAyNiBHVFAxX0ZfTUFTSylcbiA4MjM6XHRcdFx0aGRybGVuICYjNDM7PSA0O1xuIDgyNDpcdFxuIDgyNTpcdFx0LyogTWFrZSBzdXJlIHRoZSBoZWFkZXIgaXMgbGFyZ2VyIGVub3VnaCwgaW5jbHVkaW5nIGV4dGVuc2lvbnMuICovXG4gODI2Olx0XHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxuIDgyNzpcdFx0XHRyZXR1cm4gLTE7XG4gODI4Olx0XG4gODI5Olx0XHRpZiAoZ3RwMS1cdTAwM2VmbGFncyBcdTAwMjYgR1RQMV9GX0VYVEhEUiBcdTAwMjZcdTAwMjZcbiA4MzA6XHRcdCAgICBndHBfcGFyc2VfZXh0aGRycyhza2IsIFx1MDAyNmhkcmxlbikgXHUwMDNjIDApXG4gODMxOlx0XHRcdHJldHVybiAtMTtcbiA4MzI6XHRcbiA4MzM6XHRcdGlmIChndHBfaW5uZXJfcHJvdG8oc2tiLCBoZHJsZW4sIFx1MDAyNmlubmVyX3Byb3RvKSBcdTAwM2MgMCkge1xuIDgzNDpcdFx0XHRuZXRkZXZfZGJnKGd0cC1cdTAwM2VkZXYsIFwmIzM0O0dUUCBwYWNrZXQgZG9lcyBub3QgZW5jYXBzdWxhdGUgYW4gSVAgcGFja2V0XFxuXCYjMzQ7KTtcbiA4MzU6XHRcdFx0cmV0dXJuIC0xO1xuIDgzNjpcdFx0fVxuIDgzNzpcdFxuIDgzODpcdFx0Z3RwMSA9IChzdHJ1Y3QgZ3RwMV9oZWFkZXIgKikoc2tiLVx1MDAzZWRhdGEgJiM0Mzsgc2l6ZW9mKHN0cnVjdCB1ZHBoZHIpKTtcbiA4Mzk6XHRcbiA4NDA6XHRcdHBjdHggPSBndHAxX3BkcF9maW5kKGd0cCwgbnRvaGwoZ3RwMS1cdTAwM2V0aWQpLFxuIDg0MTpcdFx0XHRcdCAgICAgZ3RwX3Byb3RvX3RvX2ZhbWlseShpbm5lcl9wcm90bykpO1xuIDg0MjpcdFx0aWYgKCFwY3R4KSB7XG4gODQzOlx0XHRcdG5ldGRldl9kYmcoZ3RwLVx1MDAzZWRldiwgXCYjMzQ7Tm8gUERQIGN0eCB0byBkZWNhcCBza2I9JXBcXG5cJiMzNDssIHNrYik7XG4gODQ0Olx0XHRcdHJldHVybiAxO1xuIDg0NTpcdFx0fVxuIDg0NjpcdFxuIDg0NzpcdFx0cmV0dXJuIGd0cF9yeChwY3R4LCBza2IsIGhkcmxlbiwgZ3RwLVx1MDAzZXJvbGUsIGlubmVyX3Byb3RvKTtcbiA4NDg6XHR9XG4gODQ5Olx0XG4gODUwOlx0c3RhdGljIHZvaWQgX19ndHBfZW5jYXBfZGVzdHJveShzdHJ1Y3Qgc29jayAqc2spXG4gODUxOlx0e1xuIDg1MjpcdFx0c3RydWN0IGd0cF9kZXYgKmd0cDtcbiA4NTM6XHRcbiA4NTQ6XHRcdGxvY2tfc29jayhzayk7XG4gODU1Olx0XHRndHAgPSBzay1cdTAwM2Vza191c2VyX2RhdGE7XG4gODU2Olx0XHRpZiAoZ3RwKSB7XG4gODU3Olx0XHRcdGlmIChndHAtXHUwMDNlc2swID09IHNrKVxuIDg1ODpcdFx0XHRcdGd0cC1cdTAwM2VzazAgPSBOVUxMO1xuIDg1OTpcdFx0XHRlbHNlXG4gODYwOlx0XHRcdFx0Z3RwLVx1MDAzZXNrMXUgPSBOVUxMO1xuIDg2MTpcdFx0XHRXUklURV9PTkNFKHVkcF9zayhzayktXHUwMDNlZW5jYXBfdHlwZSwgMCk7XG4gODYyOlx0XHRcdHJjdV9hc3NpZ25fc2tfdXNlcl9kYXRhKHNrLCBOVUxMKTtcbiA4NjM6XHRcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiA4NjQ6XHRcdFx0c29ja19wdXQoc2spO1xuIDg2NTpcdFx0XHRyZXR1cm47XG4gODY2Olx0XHR9XG4gODY3Olx0XHRyZWxlYXNlX3NvY2soc2spO1xuIDg2ODpcdH1cbiA4Njk6XHRcbiA4NzA6XHRzdGF0aWMgdm9pZCBndHBfZW5jYXBfZGVzdHJveShzdHJ1Y3Qgc29jayAqc2spXG4gODcxOlx0e1xuIDg3MjpcdFx0cnRubF9sb2NrKCk7XG4gODczOlx0XHRfX2d0cF9lbmNhcF9kZXN0cm95KHNrKTtcbiA4NzQ6XHRcdHJ0bmxfdW5sb2NrKCk7XG4gODc1Olx0fVxuIDg3NjpcdFxuIDg3NzpcdHN0YXRpYyB2b2lkIGd0cF9lbmNhcF9kaXNhYmxlX3NvY2soc3RydWN0IHNvY2sgKnNrKVxuIDg3ODpcdHtcbiA4Nzk6XHRcdGlmICghc2spXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNzMKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdUUCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzd2l0Y2hpbmcgYXJvdW5kIHRoZSBvcmRlciBvZiBgZ3RwX3BhcnNlX2V4dGhkcnNgIGFuZCBgZ3RwX2lubmVyX3Byb3RvYC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgc2hpZnQgaW4gdGhlIEdUUCBkcml2ZXIsIG5vIHF1ZXN0aW9uIGFib3V0IGl0LiBHaXZlbiB0aGUgYEdUUGAgY29uZmlnLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgcmVvcmRlcmluZyB0aG9yb3VnaGx5LiBUaGUgY29yZSBmb2N1cyBoZXJlIGlzIG9uIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAsIHNvIEkgbmVlZCB0byBzZWUgaG93IHRoZSBjaGFuZ2UgaW1wYWN0cyB0aGF0LiBSaWdodCwgSSB3aWxsIG5vdyBkZWZpbmUgdGhlIHJlc3VsdGluZyBpbXBsaWNhdGlvbnMgb2YgdGhpcyBwYXRjaCBpbiB0aGUgYXBwcm9wcmlhdGUgZmllbGRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwMXVfdWRwX2VuY2FwX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgb3JkZXIgb2YgcGFyc2luZyBleHRlbnNpb24gaGVhZGVycyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGlubmVyIHByb3RvY29sIGluIHRoZSBHVFAgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwMXVfdWRwX2VuY2FwX3JlY3YmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgb3JkZXIgb2YgcGFyc2luZyBleHRlbnNpb24gaGVhZGVycyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGlubmVyIHByb3RvY29sIGluIHRoZSBHVFAgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjIxOjUyLjAwNDQ2NDgwOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Njk0ODQzNzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgb3JkZXIgb2YgcGFyc2luZyBleHRlbnNpb24gaGVhZGVycyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGlubmVyIHByb3RvY29sIGluIHRoZSBHVFAgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjE6NTIuMDA0NDcwMjc4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODc4MzA5MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMzFhZjg1ZDU4NTZkZWUxZjNkZDRiZGEyMDU3NDhiODQwMDU0ZDI3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMgMTE6MjE6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZ3RwLmMgYi9kcml2ZXJzL25ldC9ndHAuY1xcbmluZGV4IGE2MGVmMzJiMzViODI1Li40YThiMDA1NDg2NzM1MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2d0cC5jXFxuQEAgLTgyNiw2ICs4MjYsMTAgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbitcXHRpZiAoZ3RwMS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBHVFAxX0ZfRVhUSERSIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBndHBfcGFyc2VfZXh0aGRycyhza2IsIFxcdTAwMjZoZHJsZW4pIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIC0xO1xcbitcXG4gXFx0aWYgKGd0cF9pbm5lcl9wcm90byhza2IsIGhkcmxlbiwgXFx1MDAyNmlubmVyX3Byb3RvKSBcXHUwMDNjIDApIHtcXG4gXFx0XFx0bmV0ZGV2X2RiZyhndHAtXFx1MDAzZWRldiwgXFxcIkdUUCBwYWNrZXQgZG9lcyBub3QgZW5jYXBzdWxhdGUgYW4gSVAgcGFja2V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbkBAIC04NDAsMTAgKzg0NCw2IEBAIHN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0cmV0dXJuIDE7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChndHAxLVxcdTAwM2VmbGFncyBcXHUwMDI2IEdUUDFfRl9FWFRIRFIgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgXFx1MDAyNmhkcmxlbikgXFx1MDAzYyAwKVxcbi1cXHRcXHRyZXR1cm4gLTE7XFxuLVxcbiBcXHRyZXR1cm4gZ3RwX3J4KHBjdHgsIHNrYiwgaGRybGVuLCBndHAtXFx1MDAzZXJvbGUsIGlubmVyX3Byb3RvKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjE6NTIuNTkzMDI3NjMyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzEwNjI3MTI5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJHVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJndHAxdV91ZHBfZW5jYXBfcmVjdlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIG9yZGVyIG9mIHBhcnNpbmcgZXh0ZW5zaW9uIGhlYWRlcnMgYW5kIGRldGVybWluaW5nIHRoZSBpbm5lciBwcm90b2NvbCBpbiB0aGUgR1RQIGRyaXZlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBwYWNrZXQgcHJvY2Vzc2luZyBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzMxYWY4NWQ1ODU2ZGVlMWYzZGQ0YmRhMjA1NzQ4Yjg0MDA1NGQyN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMTE6MjE6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jXG5pbmRleCBhNjBlZjMyYjM1YjgyNS4uNGE4YjAwNTQ4NjczNTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC04MjYsNiArODI2LDEwIEBAIHN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdGlmICghcHNrYl9tYXlfcHVsbChza2IsIGhkcmxlbikpXG4gXHRcdHJldHVybiAtMTtcbiBcbitcdGlmIChndHAxLVx1MDAzZWZsYWdzIFx1MDAyNiBHVFAxX0ZfRVhUSERSIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgXHUwMDI2aGRybGVuKSBcdTAwM2MgMClcbitcdFx0cmV0dXJuIC0xO1xuK1xuIFx0aWYgKGd0cF9pbm5lcl9wcm90byhza2IsIGhkcmxlbiwgXHUwMDI2aW5uZXJfcHJvdG8pIFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9kYmcoZ3RwLVx1MDAzZWRldiwgXCJHVFAgcGFja2V0IGRvZXMgbm90IGVuY2Fwc3VsYXRlIGFuIElQIHBhY2tldFxcblwiKTtcbiBcdFx0cmV0dXJuIC0xO1xuQEAgLTg0MCwxMCArODQ0LDYgQEAgc3RhdGljIGludCBndHAxdV91ZHBfZW5jYXBfcmVjdihzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRyZXR1cm4gMTtcbiBcdH1cbiBcbi1cdGlmIChndHAxLVx1MDAzZWZsYWdzIFx1MDAyNiBHVFAxX0ZfRVhUSERSIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGd0cF9wYXJzZV9leHRoZHJzKHNrYiwgXHUwMDI2aGRybGVuKSBcdTAwM2MgMClcbi1cdFx0cmV0dXJuIC0xO1xuLVxuIFx0cmV0dXJuIGd0cF9yeChwY3R4LCBza2IsIGhkcmxlbiwgZ3RwLVx1MDAzZXJvbGUsIGlubmVyX3Byb3RvKTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMToyMTo1Mi41OTMwMjg5NTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjYxNTQwOTM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBHVFAgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgdGhlIEdUUCBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvZ3RwLmNgLiBGcm9tIHdoYXQgSSBzZWUsIGl0J3MgYSByZWxhdGl2ZWx5IGZvY3VzZWQgbW9kaWZpY2F0aW9uLCBtb3ZpbmcgdGhlIGBndHBfcGFyc2VfZXh0aGRyc2AgZnVuY3Rpb24gY2FsbCB3aXRoaW4gYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCB0byBvY2N1ciAqYmVmb3JlKiB0aGUgYGd0cF9pbm5lcl9wcm90b2AgY2FsbC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IHRoZSBHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkcml2ZXIgcHJvY2Vzc2VzIGVuY2Fwc3VsYXRlZCBVRFAgcGFja2V0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFybHkgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9ndHAuY2AgYW5kIHRob3JvdWdobHkgZXhhbWluZSB0aGUgY29kZSwgZXNwZWNpYWxseSBmb2N1c2luZyBvbiB0aGUgYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCBmdW5jdGlvbi4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyByZW9yZGVyaW5nIGltcGFjdHMgdGhlIHBhcnNpbmcgYW5kIGhhbmRsaW5nIG9mIEdUUCBwYWNrZXRzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZSBvcmlnaW5hbCBmbG93IHdhcywgd2hhdCBleHRlbnNpb24gaGVhZGVycyBhcmUgYmVpbmcgcGFyc2VkLCBhbmQgaG93IHRoZSBpbm5lciBwcm90b2NvbCBpcyBiZWluZyBkZXRlcm1pbmVkLiBDcnVjaWFsbHksIEknbGwgbmVlZCB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9yIGRlcGVuZGVuY2llcy5cblxuSSdsbCBhbHNvIGhhdmUgdG8ga2VlcCBhbiBleWUgb3V0IGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGguIEl04oCZcyBpbXBvcnRhbnQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRoZSBvcmRlciBvZiBleGVjdXRpb24gaGVyZSwgc28gSSBuZWVkIHRvIGNoZWNrIGZvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvciBmbGFncyB0aGF0IGNvdWxkIGJlIHJlbGV2YW50LiBVbmRlcnN0YW5kaW5nIHRoZSBcIndoeVwiIGJlaGluZCB0aGlzIHBhdGNoIGlzIGNyaXRpY2FsLCBhbmQgdGhhdCBsaWtlbHkgbGllcyBpbiBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBuZXR3b3JrIHRyYWZmaWMgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gaGFuZGxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDM4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MDkuMjA4NDQwMjg4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4ODEzOTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jPTc1MD1zdGF0aWMgaW50IGd0cF9wYXJzZV9leHRoZHJzKHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCAqaGRybGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmMtNzg2LVxcbmRyaXZlcnMvbmV0L2d0cC5jOjc4NzpzdGF0aWMgaW50IGd0cDF1X3VkcF9lbmNhcF9yZWN2KHN0cnVjdCBndHBfZGV2ICpndHAsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZ3RwLmMtNzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jPTkwMj1zdGF0aWMgaW50IGd0cF9lbmNhcF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTkxOS1cXHRcXHRuZXRkZXZfZGJnKGd0cC1cXHUwMDNlZGV2LCBcXFwicmVjZWl2ZWQgR1RQMVUgcGFja2V0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ndHAuYzo5MjA6XFx0XFx0cmV0ID0gZ3RwMXVfdWRwX2VuY2FwX3JlY3YoZ3RwLCBza2IpO1xcbmRyaXZlcnMvbmV0L2d0cC5jLTkyMS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MDkuMzA3MjYxNzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjg4NDc3NTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBHVFAgRW5jYXBzdWxhdGlvbiBSZWNlcHRpb24qKlxuXG5Pa2F5LCBzbyBgZ3RwMXVfdWRwX2VuY2FwX3JlY3ZgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIHdpdGhpbiB0aGUgYGd0cF9lbmNhcF9yZWN2YCBmdW5jdGlvbi4gVGhhdCdzIGdvb2QgdG8ga25vdywgdGhhdCB0ZWxscyBtZSB0aGUgcG9pbnQgb2YgZW50cnkgYW5kIHRoZSByZWxldmFudCBpbXBsZW1lbnRhdGlvbi4gTm93LCBpZiBJJ20gbG9va2luZyBhdCBHVFAgZW5jYXBzdWxhdGlvbiwgYSBxdWljayBjaGVjayBvZiB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciB0aGUgYGRyaXZlcnMvbmV0L2d0cC5jYCBkcml2ZXIgZmlsZSB3b3VsZCBiZSB2ZXJ5IHVzZWZ1bCwgd291bGRuJ3QgaXQ/IExldCdzIGZpZ3VyZSBvdXQgd2hhdCBidWlsZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWF5IGVmZmVjdCB0aGUgb3BlcmF0aW9uIGhlcmUuIFRoaXMgd2lsbCBoZWxwIHVuZGVyc3RhbmQgd2hhdCBwYXJ0cyBvZiB0aGUgR1RQIGZ1bmN0aW9uYWxpdHkgYXJlIGNvbXBpbGVkIGFuZCBlbmFibGVkLCBhbmQgYWxzbyB3aGF0IHByZXByb2Nlc3NvciBzeW1ib2xzIGNvdWxkIGJlIGF0IHBsYXkgZm9yIHRoaXMgcGFydCBvZiB0aGUgY29kZSBiYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzYyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MTIuNTk1NzQxOTkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzkyNzY2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndHBcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGU9Mzg9b2JqLSQoQ09ORklHX0JBUkVVRFApICs9IGJhcmV1ZHAub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19HVFApICs9IGd0cC5vXFxuZHJpdmVycy9uZXQvTWFrZWZpbGUtNDAtb2JqLSQoQ09ORklHX05MTU9OKSArPSBubG1vbi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjIyOjEyLjcwMzY4MDQ1NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NjgyOTAzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCB0aGUgcHJpbWFyeSBjb25maWcgYXQgcGxheSBoZXJlIGlzIGBDT05GSUdfR1RQYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB0aGF0J3MgdGhlICpvbmx5KiBvbmUgcmVsZXZhbnQgYXQgdGhlIG1vbWVudC4gSXQncyBjcnVjaWFsIHRvIGNvbmZpcm0gdGhpcyDigJMgeW91IGtub3csIG1ha2Ugc3VyZSB3ZSBhcmVuJ3Qgb3Zlcmxvb2tpbmcgYW55IG90aGVyIHBvdGVudGlhbCBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGludGVyYWN0IHdpdGggb3Igb3ZlcnJpZGUgYENPTkZJR19HVFBgLiBJIG5lZWQgdG8gYXNzZXNzIHRoZSBiaWdnZXIgcGljdHVyZSwgeW91IGtub3csIHVuZGVyc3RhbmQgaWYgdGhlcmUncyBhbnkgYnJhbmNoaW5nIGxvZ2ljIG9yIGNvbmRpdGlvbmFsIHNldHRpbmdzIHRpZWQgdG8gb3RoZXIgZmxhZ3MgdGhhdCB3b3VsZCBhZmZlY3QgaXRzIGJlaGF2aW91ci4gQ29udGV4dCBpcyBrZXksIGFuZCBJIGRvbid0IHdhbnQgdG8ganVtcCB0byBjb25jbHVzaW9ucyB1bnRpbCBJJ3ZlIHNjb3BlZCBvdXQgYWxsIHRoZSBwb3NzaWJpbGl0aWVzLiBTbywgc3RlcCBvbmUg4oCTIGNvbXByZWhlbnNpdmUgc2VhcmNoIGZvciBhbnkgcmVsYXRlZCBjb25maWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDkzLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MTUuNTcxOTc0OTIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTQwMDIxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgR1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjcxLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjcyOmNvbmZpZyBHVFBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cXHR0cmlzdGF0ZSBcXFwiR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MTUuNjczMzgzNzQ0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc3NTIyNjA0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEdUUDogSW5pdGlhbCBUaG91Z2h0cyBhbmQgRnVuY3Rpb24gU2VsZWN0aW9uKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSBnZWFyZWQgdG93YXJkIEdUUCDigJMgdGhhdCBtdWNoIGlzIG9idmlvdXMuIE15IGluaXRpYWwgdGFyZ2V0IGZ1bmN0aW9uIGZvciBmdXp6aW5nIGlzIGBndHAxdV91ZHBfZW5jYXBfcmVjdmAuIEJ1dCBiZWZvcmUgZGl2aW5nIGluLCBJIHNob3VsZCBkbyBhIHF1aWNrIHJlY29ubmFpc3NhbmNlIHN3ZWVwIG9mIHJlbGF0ZWQgZnVuY3Rpb25zIHdpdGhpbiB0aGUgR1RQIGNvZGUsIGp1c3QgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBtb3JlIHN0cmF0ZWdpYyB0YXJnZXQuIExldCdzIHNlZS4uLiBBaCwgdGhlcmUgYXJlIGEgZmV3IGNvbnRlbmRlcnM6IGBndHBfcGFyc2VfZXh0aGRyc2AsIGBndHBfaW5uZXJfcHJvdG9gLCBhbmQgYGd0cF9lbmNhcF9yZWN2YC4gTWFrZXMgc2Vuc2UsIHRoZXkncmUgYWxsIGludm9sdmVkIGluIGRpZmZlcmVudCBhc3BlY3RzIG9mIEdUUCBwYWNrZXQgcHJvY2Vzc2luZywgYW5kIG1pZ2h0IGJlIGludGVyZXN0aW5nIHRhcmdldHMsIGJ1dCBsZXQncyBiZWdpbiBieSBmb2N1c2luZyBvbiB0aGUgZnVuY3Rpb24gZXhwbGljaXRseSBjYWxsZWQgb3V0LCB0aGUgYGd0cDF1X3VkcF9lbmNhcF9yZWN2YC4gUmlnaHQuIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2d0cC5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCB0byBnZXQgYSBnb29kIHNlbnNlIG9mIGl0cyBzdHJ1Y3R1cmUgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzODUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MTkuNDQ4NjEzNThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2d0cC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc4MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3ODA6XFx0XFx0fSB3aGlsZSAoKm5leHRfdHlwZSAhPSAwKTtcXG4gNzgxOlxcdFxcbiA3ODI6XFx0XFx0KmhkcmxlbiA9IG9mZnNldDtcXG4gNzgzOlxcdFxcbiA3ODQ6XFx0XFx0cmV0dXJuIDA7XFxuIDc4NTpcXHR9XFxuIDc4NjpcXHRcXG4gNzg3OlxcdHN0YXRpYyBpbnQgZ3RwMXVfdWRwX2VuY2FwX3JlY3Yoc3RydWN0IGd0cF9kZXYgKmd0cCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gNzg4OlxcdHtcXG4gNzg5OlxcdFxcdHVuc2lnbmVkIGludCBoZHJsZW4gPSBzaXplb2Yoc3RydWN0IHVkcGhkcikgK1xcbiA3OTA6XFx0XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBndHAxX2hlYWRlcik7XFxuIDc5MTpcXHRcXHRzdHJ1Y3QgZ3RwMV9oZWFkZXIgKmd0cDE7XFxuIDc5MjpcXHRcXHRzdHJ1Y3QgcGRwX2N0eCAqcGN0eDtcXG4gNzkzOlxcdFxcdF9fdTE2IGlubmVyX3Byb3RvO1xcbiA3OTQ6XFx0XFxuIDc5NTpcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxcbiA3OTY6XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiA3OTc6XFx0XFxuIDc5ODpcXHRcXHRndHAxID0gKHN0cnVjdCBndHAxX2hlYWRlciAqKShza2ItXFx1MDAzZWRhdGEgKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpO1xcbiA3OTk6XFx0XFxuIDgwMDpcXHRcXHRpZiAoKGd0cDEtXFx1MDAzZWZsYWdzIFxcdTAwM2VcXHUwMDNlIDUpICE9IEdUUF9WMSlcXG4gODAxOlxcdFxcdFxcdHJldHVybiAxO1xcbiA4MDI6XFx0XFxuIDgwMzpcXHRcXHQvKiBJZiB0aGUgc29ja2V0cyB3ZXJlIGNyZWF0ZWQgaW4ga2VybmVsLCBpdCBtZWFucyB0aGF0XFxuIDgwNDpcXHRcXHQgKiB0aGVyZSBpcyBubyBkYWVtb24gcnVubmluZyBpbiB1c2Vyc3BhY2Ugd2hpY2ggd291bGRcXG4gODA1OlxcdFxcdCAqIGhhbmRsZSBlY2hvIHJlcXVlc3QuXFxuIDgwNjpcXHRcXHQgKi9cXG4gODA3OlxcdFxcdGlmIChndHAxLVxcdTAwM2V0eXBlID09IEdUUF9FQ0hPX1JFUSBcXHUwMDI2XFx1MDAyNiBndHAtXFx1MDAzZXNrX2NyZWF0ZWQpXFxuIDgwODpcXHRcXHRcXHRyZXR1cm4gZ3RwMXVfc2VuZF9lY2hvX3Jlc3AoZ3RwLCBza2IpO1xcbiA4MDk6XFx0XFxuIDgxMDpcXHRcXHRpZiAoZ3RwMS1cXHUwMDNldHlwZSA9PSBHVFBfRUNIT19SU1AgXFx1MDAyNlxcdTAwMjYgZ3RwLVxcdTAwM2Vza19jcmVhdGVkKVxcbiA4MTE6XFx0XFx0XFx0cmV0dXJuIGd0cDF1X2hhbmRsZV9lY2hvX3Jlc3AoZ3RwLCBza2IpO1xcbiA4MTI6XFx0XFxuIDgxMzpcXHRcXHRpZiAoZ3RwMS1cXHUwMDNldHlwZSAhPSBHVFBfVFBEVSlcXG4gODE0OlxcdFxcdFxcdHJldHVybiAxO1xcbiA4MTU6XFx0XFxuIDgxNjpcXHRcXHQvKiBGcm9tIDI5LjA2MDogXFxcIlRoaXMgZmllbGQgc2hhbGwgYmUgcHJlc2VudCBpZiBhbmQgb25seSBpZiBhbnkgb25lIG9yXFxuIDgxNzpcXHRcXHQgKiBtb3JlIG9mIHRoZSBTLCBQTiBhbmQgRSBmbGFncyBhcmUgc2V0LlxcXCIuXFxuIDgxODpcXHRcXHQgKlxcbiA4MTk6XFx0XFx0ICogSWYgYW55IG9mIHRoZSBiaXQgaXMgc2V0LCB0aGVuIHRoZSByZW1haW5pbmcgb25lcyBhbHNvIGhhdmUgdG8gYmVcXG4gODIwOlxcdFxcdCAqIHNldC5cXG4gODIxOlxcdFxcdCAqL1xcbiA4MjI6XFx0XFx0aWYgKGd0cDEtXFx1MDAzZWZsYWdzIFxcdTAwMjYgR1RQMV9GX01BU0spXFxuIDgyMzpcXHRcXHRcXHRoZHJsZW4gKz0gNDtcXG4gODI0OlxcdFxcbiA4MjU6XFx0XFx0LyogTWFrZSBzdXJlIHRoZSBoZWFkZXIgaXMgbGFyZ2VyIGVub3VnaCwgaW5jbHVkaW5nIGV4dGVuc2lvbnMuICovXFxuIDgyNjpcXHRcXHRpZiAoIXBza2JfbWF5X3B1bGwoc2tiLCBoZHJsZW4pKVxcbiA4Mjc6XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiA4Mjg6XFx0XFxuIDgyOTpcXHRcXHRpZiAoZ3RwMS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBHVFAxX0ZfRVhUSERSIFxcdTAwMjZcXHUwMDI2XFxuIDgzMDpcXHRcXHQgICAgZ3RwX3BhcnNlX2V4dGhkcnMoc2tiLCBcXHUwMDI2aGRybGVuKSBcXHUwMDNjIDApXFxuIDgzMTpcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIDgzMjpcXHRcXG4gODMzOlxcdFxcdGlmIChndHBfaW5uZXJfcHJvdG8oc2tiLCBoZHJsZW4sIFxcdTAwMjZpbm5lcl9wcm90bykgXFx1MDAzYyAwKSB7XFxuIDgzNDpcXHRcXHRcXHRuZXRkZXZfZGJnKGd0cC1cXHUwMDNlZGV2LCBcXFwiR1RQIHBhY2tldCBkb2VzIG5vdCBlbmNhcHN1bGF0ZSBhbiBJUCBwYWNrZXRcXFxcblxcXCIpO1xcbiA4MzU6XFx0XFx0XFx0cmV0dXJuIC0xO1xcbiA4MzY6XFx0XFx0fVxcbiA4Mzc6XFx0XFxuIDgzODpcXHRcXHRndHAxID0gKHN0cnVjdCBndHAxX2hlYWRlciAqKShza2ItXFx1MDAzZWRhdGEgKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpO1xcbiA4Mzk6XFx0XFxuIDg0MDpcXHRcXHRwY3R4ID0gZ3RwMV9wZHBfZmluZChndHAsIG50b2hsKGd0cDEtXFx1MDAzZXRpZCksXFxuIDg0MTpcXHRcXHRcXHRcXHQgICAgIGd0cF9wcm90b190b19mYW1pbHkoaW5uZXJfcHJvdG8pKTtcXG4gODQyOlxcdFxcdGlmICghcGN0eCkge1xcbiA4NDM6XFx0XFx0XFx0bmV0ZGV2X2RiZyhndHAtXFx1MDAzZWRldiwgXFxcIk5vIFBEUCBjdHggdG8gZGVjYXAgc2tiPSVwXFxcXG5cXFwiLCBza2IpO1xcbiA4NDQ6XFx0XFx0XFx0cmV0dXJuIDE7XFxuIDg0NTpcXHRcXHR9XFxuIDg0NjpcXHRcXG4gODQ3OlxcdFxcdHJldHVybiBndHBfcngocGN0eCwgc2tiLCBoZHJsZW4sIGd0cC1cXHUwMDNlcm9sZSwgaW5uZXJfcHJvdG8pO1xcbiA4NDg6XFx0fVxcbiA4NDk6XFx0XFxuIDg1MDpcXHRzdGF0aWMgdm9pZCBfX2d0cF9lbmNhcF9kZXN0cm95KHN0cnVjdCBzb2NrICpzaylcXG4gODUxOlxcdHtcXG4gODUyOlxcdFxcdHN0cnVjdCBndHBfZGV2ICpndHA7XFxuIDg1MzpcXHRcXG4gODU0OlxcdFxcdGxvY2tfc29jayhzayk7XFxuIDg1NTpcXHRcXHRndHAgPSBzay1cXHUwMDNlc2tfdXNlcl9kYXRhO1xcbiA4NTY6XFx0XFx0aWYgKGd0cCkge1xcbiA4NTc6XFx0XFx0XFx0aWYgKGd0cC1cXHUwMDNlc2swID09IHNrKVxcbiA4NTg6XFx0XFx0XFx0XFx0Z3RwLVxcdTAwM2VzazAgPSBOVUxMO1xcbiA4NTk6XFx0XFx0XFx0ZWxzZVxcbiA4NjA6XFx0XFx0XFx0XFx0Z3RwLVxcdTAwM2VzazF1ID0gTlVMTDtcXG4gODYxOlxcdFxcdFxcdFdSSVRFX09OQ0UodWRwX3NrKHNrKS1cXHUwMDNlZW5jYXBfdHlwZSwgMCk7XFxuIDg2MjpcXHRcXHRcXHRyY3VfYXNzaWduX3NrX3VzZXJfZGF0YShzaywgTlVMTCk7XFxuIDg2MzpcXHRcXHRcXHRyZWxlYXNlX3NvY2soc2spO1xcbiA4NjQ6XFx0XFx0XFx0c29ja19wdXQoc2spO1xcbiA4NjU6XFx0XFx0XFx0cmV0dXJuO1xcbiA4NjY6XFx0XFx0fVxcbiA4Njc6XFx0XFx0cmVsZWFzZV9zb2NrKHNrKTtcXG4gODY4OlxcdH1cXG4gODY5OlxcdFxcbiA4NzA6XFx0c3RhdGljIHZvaWQgZ3RwX2VuY2FwX2Rlc3Ryb3koc3RydWN0IHNvY2sgKnNrKVxcbiA4NzE6XFx0e1xcbiA4NzI6XFx0XFx0cnRubF9sb2NrKCk7XFxuIDg3MzpcXHRcXHRfX2d0cF9lbmNhcF9kZXN0cm95KHNrKTtcXG4gODc0OlxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuIDg3NTpcXHR9XFxuIDg3NjpcXHRcXG4gODc3OlxcdHN0YXRpYyB2b2lkIGd0cF9lbmNhcF9kaXNhYmxlX3NvY2soc3RydWN0IHNvY2sgKnNrKVxcbiA4Nzg6XFx0e1xcbiA4Nzk6XFx0XFx0aWYgKCFzaylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTE6MjI6MTkuNDQ4ODQ2MDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjAwNDAxNDE4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHVFAgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzd2l0Y2hpbmcgYXJvdW5kIHRoZSBvcmRlciBvZiBgZ3RwX3BhcnNlX2V4dGhkcnNgIGFuZCBgZ3RwX2lubmVyX3Byb3RvYC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBzaGlmdCBpbiB0aGUgR1RQIGRyaXZlciwgbm8gcXVlc3Rpb24gYWJvdXQgaXQuIEdpdmVuIHRoZSBgR1RQYCBjb25maWcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZW9yZGVyaW5nIHRob3JvdWdobHkuIFRoZSBjb3JlIGZvY3VzIGhlcmUgaXMgb24gYGd0cDF1X3VkcF9lbmNhcF9yZWN2YCwgc28gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGNoYW5nZSBpbXBhY3RzIHRoYXQuIFJpZ2h0LCBJIHdpbGwgbm93IGRlZmluZSB0aGUgcmVzdWx0aW5nIGltcGxpY2F0aW9ucyBvZiB0aGlzIHBhdGNoIGluIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNzMsIk91dHB1dFRva2VucyI6ODQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDExOjIyOjM5LjQ4ODk5MDYyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDMwMjU2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3RwMXVfdWRwX2VuY2FwX3JlY3ZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBvcmRlciBvZiBwYXJzaW5nIGV4dGVuc2lvbiBoZWFkZXJzIGFuZCBkZXRlcm1pbmluZyB0aGUgaW5uZXIgcHJvdG9jb2wgaW4gdGhlIEdUUCBkcml2ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcGFja2V0IHByb2Nlc3NpbmcgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cDF1X3VkcF9lbmNhcF9yZWN2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgb3JkZXIgb2YgcGFyc2luZyBleHRlbnNpb24gaGVhZGVycyBhbmQgZGV0ZXJtaW5pbmcgdGhlIGlubmVyIHByb3RvY29sIGluIHRoZSBHVFAgZHJpdmVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowwj7rj[1] Phase: Succeeded StartedAt: 2026-07-03 11:23:02 +0000 UTC FinishedAt: 2026-07-03 11:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-03 11:23:02 +0000 UTC FinishedAt: 2026-07-03 11:23:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2] Phase: Succeeded StartedAt: 2026-07-03 11:23:02 +0000 UTC FinishedAt: 2026-07-03 15:28:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:23:02 +0000 UTC FinishedAt: 2026-07-03 15:28:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:23:02 +0000 UTC FinishedAt: 2026-07-03 11:23:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:23:02 +0000 UTC FinishedAt: 2026-07-03 11:23:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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-workflowwj7rj/series-workflowwj7rj-convert-artifact-967789763/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:23:23 +0000 UTC FinishedAt: 2026-07-03 11:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:23:23 +0000 UTC FinishedAt: 2026-07-03 11:53:04 +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:*e32dcc7d-a770-46ae-a3b7-fdd199e6b72b,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-workflowwj7rj/series-workflowwj7rj-convert-artifact-967789763/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": "a554c041-399b-432d-b20a-7f8c6adcb925", "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-workflowwj7rj/series-workflowwj7rj-build-action-1728235313/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:23:23 +0000 UTC FinishedAt: 2026-07-03 11:51:54 +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:*e32dcc7d-a770-46ae-a3b7-fdd199e6b72b,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-workflowwj7rj/series-workflowwj7rj-convert-artifact-967789763/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": "a554c041-399b-432d-b20a-7f8c6adcb925", "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-workflowwj7rj/series-workflowwj7rj-build-action-1728235313/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:53:04 +0000 UTC FinishedAt: 2026-07-03 11:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:53:04 +0000 UTC FinishedAt: 2026-07-03 11:53:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:53:04 +0000 UTC FinishedAt: 2026-07-03 11:54:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:53:04 +0000 UTC FinishedAt: 2026-07-03 11:53:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-workflowwj7rj/series-workflowwj7rj-convert-artifact-2673664634/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:54:02 +0000 UTC FinishedAt: 2026-07-03 11:56:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:54:02 +0000 UTC FinishedAt: 2026-07-03 11:56:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a554c041-399b-432d-b20a-7f8c6adcb925,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-workflowwj7rj/series-workflowwj7rj-build-action-1728235313/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-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:56:18 +0000 UTC FinishedAt: 2026-07-03 11:56:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:56:18 +0000 UTC FinishedAt: 2026-07-03 11:56:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:56:18 +0000 UTC FinishedAt: 2026-07-03 12:25:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:56:18 +0000 UTC FinishedAt: 2026-07-03 12:25:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e32dcc7d-a770-46ae-a3b7-fdd199e6b72b,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-workflowwj7rj/series-workflowwj7rj-convert-artifact-2673664634/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": "254da06f-1b2b-4d58-80b7-eecafe108719", "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-workflowwj7rj/series-workflowwj7rj-build-action-1639416286/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 11:56:18 +0000 UTC FinishedAt: 2026-07-03 12:25:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e32dcc7d-a770-46ae-a3b7-fdd199e6b72b,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-workflowwj7rj/series-workflowwj7rj-convert-artifact-2673664634/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": "254da06f-1b2b-4d58-80b7-eecafe108719", "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-workflowwj7rj/series-workflowwj7rj-build-action-1639416286/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:25:23 +0000 UTC FinishedAt: 2026-07-03 12:25:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:25:23 +0000 UTC FinishedAt: 2026-07-03 12:25:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:25:23 +0000 UTC FinishedAt: 2026-07-03 12:27:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:25:23 +0000 UTC FinishedAt: 2026-07-03 12:27:05 +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:*254da06f-1b2b-4d58-80b7-eecafe108719,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-workflowwj7rj/series-workflowwj7rj-build-action-1639416286/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-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:27:14 +0000 UTC FinishedAt: 2026-07-03 15:28:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:27:14 +0000 UTC FinishedAt: 2026-07-03 15:28:47 +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":["gtp1u_udp_encap_recv"],"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:*a554c041-399b-432d-b20a-7f8c6adcb925,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*254da06f-1b2b-4d58-80b7-eecafe108719,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-workflowwj7rj/series-workflowwj7rj-build-action-1728235313/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-workflowwj7rj/series-workflowwj7rj-build-action-1639416286/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:27:14 +0000 UTC FinishedAt: 2026-07-03 12:27:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:27:14 +0000 UTC FinishedAt: 2026-07-03 12:27: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":["gtp1u_udp_encap_recv"],"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-workflowwj7rj/series-workflowwj7rj-convert-artifact-4177959855/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:27:14 +0000 UTC FinishedAt: 2026-07-03 12:27:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:27:14 +0000 UTC FinishedAt: 2026-07-03 12:27:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:27:14 +0000 UTC FinishedAt: 2026-07-03 12:27:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:27:24 +0000 UTC FinishedAt: 2026-07-03 15:28:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwj7rj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"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":["gtp1u_udp_encap_recv"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"047e2af4-1c9a-4d5f-8002-602eebe7477b","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-07-03 12:27:24 +0000 UTC FinishedAt: 2026-07-03 15:28:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a554c041-399b-432d-b20a-7f8c6adcb925,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*254da06f-1b2b-4d58-80b7-eecafe108719,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-workflowwj7rj/series-workflowwj7rj-build-action-1728235313/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-workflowwj7rj/series-workflowwj7rj-build-action-1639416286/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-workflowwj7rj/series-workflowwj7rj-convert-artifact-4177959855/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,}