Name: series-workflow4v4n8 Phase: Succeeded StartedAt: 2026-07-25 15:32:17 +0000 UTC FinishedAt: 2026-07-25 20:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[0] Phase: Succeeded StartedAt: 2026-07-25 15:32:17 +0000 UTC FinishedAt: 2026-07-25 16:05:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 15:32:17 +0000 UTC FinishedAt: 2026-07-25 16:05:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "56d96fededd61192cd7cc8d2b0f36adfd59036c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP6_NF_IPTABLES", "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_IPV6HEADER", "IP6_NF_MATCH_SRH", "NETFILTER_ADVANCED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "56d96fededd61192cd7cc8d2b0f36adfd59036c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP6_NF_IPTABLES", "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_IPV6HEADER", "IP6_NF_MATCH_SRH", "NETFILTER_ADVANCED" ], "series_id": "efd95364-23da-4e37-af68-09c696d4a878" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hbh_mt6", "ipv6header_mt6", "srh_mt6", "srh1_mt6" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQNl9ORl9JUFRBQkxFUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfT1BUUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUiYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfU1JIJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hiaF9tdDYmIzM0OywKICAgICYjMzQ7aXB2NmhlYWRlcl9tdDYmIzM0OywKICAgICYjMzQ7c3JoX210NiYjMzQ7LAogICAgJiMzNDtzcmgxX210NiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBleHRlbnNpb25zIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gZHJvcCBtYWxmb3JtZWQgcGFja2V0cyAoaG90ZHJvcCkgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHBhY2tldCBwcm9jZXNzaW5nIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIGlwNnRhYmxlcyBydWxlcyBhbmQgc2VuZGluZyBjcmFmdGVkIElQdjYgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFmNDhiNDRiYWRhYTI1NmRjMjI5NmM0OWZiNTI5YmUwNmU5ZjUwOGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxNjowMzo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG5pbmRleCA2ZDFhNWQyMDI2YTY3OC4uMWI1ZGNjOTJiN2RhNDkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbkBAIC02MiwyMSAmIzQzOzYyLDE4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdCAgICBORVhUSERSX0hPUCA6IE5FWFRIRFJfREVTVCwgTlVMTCwgTlVMTCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4gXHRcdGlmIChlcnIgIT0gLUVOT0VOVClcbi1cdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4mIzQzO1x0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuIFx0b2ggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0c2gpLCBcdTAwMjZfb3B0c2gpO1xuLVx0aWYgKG9oID09IE5VTEwpIHtcbi1cdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuLVx0XHRyZXR1cm4gZmFsc2U7XG4tXHR9XG4mIzQzO1x0aWYgKCFvaClcbiYjNDM7XHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKG9oKTtcbiBcdGlmIChza2ItXHUwMDNlbGVuIC0gcHRyIFx1MDAzYyBoZHJsZW4pIHtcbiBcdFx0LyogUGFja2V0IHNtYWxsZXIgdGhhbiBpdCYjMzk7cyBsZW5ndGggZmllbGQgKi9cbi1cdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuLVx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHRnb3RvIGhvdGRyb3A7XG4gXHR9XG4gXG4gXHRwcl9kZWJ1ZyhcJiMzNDtJUHY2IE9QVFMgTEVOICV1ICV1IFwmIzM0OywgaGRybGVuLCBvaC1cdTAwM2VoZHJsZW4pO1xuQEAgLTEwNCw4ICYjNDM7MTAxLDggQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHR0cCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciwgc2l6ZW9mKF9vcHR0eXBlKSxcbiBcdFx0XHRcdFx0XHRcdTAwMjZfb3B0dHlwZSk7XG4tXHRcdFx0aWYgKHRwID09IE5VTEwpXG4tXHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0aWYgKCF0cClcbiYjNDM7XHRcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXG4gXHRcdFx0LyogVHlwZSBjaGVjayAqL1xuIFx0XHRcdGlmICgqdHAgIT0gKG9wdGluZm8tXHUwMDNlb3B0c1t0ZW1wXSBcdTAwMjYgMHhGRjAwKSBcdTAwM2VcdTAwM2UgOCkge1xuQEAgLTEyMSwxMiAmIzQzOzExOCwxMiBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcbiBcdFx0XHRcdC8qIGxlbmd0aCBmaWVsZCBleGlzdHMgPyAqL1xuIFx0XHRcdFx0aWYgKGhkcmxlbiBcdTAwM2MgMilcbi1cdFx0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdFx0XHRscCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciAmIzQzOyAxLFxuIFx0XHRcdFx0XHRcdFx0c2l6ZW9mKF9vcHRsZW4pLFxuIFx0XHRcdFx0XHRcdFx0XHUwMDI2X29wdGxlbik7XG4tXHRcdFx0XHRpZiAobHAgPT0gTlVMTClcbi1cdFx0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdFx0aWYgKCFscClcbiYjNDM7XHRcdFx0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0XHRcdHNwZWNfbGVuID0gb3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweDAwRkY7XG4gXG4gXHRcdFx0XHRpZiAoc3BlY19sZW4gIT0gMHgwMEZGIFx1MDAyNlx1MDAyNiBzcGVjX2xlbiAhPSAqbHApIHtcbkBAIC0xNDcsNyAmIzQzOzE0NCw3IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdGlmICgocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuIC0gb3B0bGVuIHx8IGhkcmxlbiBcdTAwM2Mgb3B0bGVuKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgdGVtcCBcdTAwM2Mgb3B0aW5mby1cdTAwM2VvcHRzbnIgLSAxKSB7XG4gXHRcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtuZXcgcG9pbnRlciBpcyB0b28gbGFyZ2UhXFxuXCYjMzQ7KTtcbi1cdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0XHR9XG4gXHRcdFx0cHRyICYjNDM7PSBvcHRsZW47XG4gXHRcdFx0aGRybGVuIC09IG9wdGxlbjtcbkBAIC0xNTksNiAmIzQzOzE1NiwxMCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdH1cbiBcbiBcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO2hvdGRyb3A6XG4mIzQzO1x0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuJiM0MztcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4gc3RhdGljIGludCBoYmhfbXQ2X2NoZWNrKGNvbnN0IHN0cnVjdCB4dF9tdGNoa19wYXJhbSAqcGFyKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuY1xuaW5kZXggYzUyZmY5MjljOTNiMzYuLjkxYTM1ZTgzYjI3ZjRkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcbkBAIC0yOCw3ICYjNDM7MjgsNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGlwNnRfaXB2NmhlYWRlcl9pbmZvICppbmZvID0gcGFyLVx1MDAzZW1hdGNoaW5mbztcbiBcdHVuc2lnbmVkIGludCB0ZW1wO1xuLVx0aW50IGxlbjtcbiBcdHU4IG5leHRoZHI7XG4gXHR1bnNpZ25lZCBpbnQgcHRyO1xuIFxuQEAgLTM4LDggJiM0MzszNyw2IEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdG5leHRoZHIgPSBpcHY2X2hkcihza2IpLVx1MDAzZW5leHRoZHI7XG4gXHQvKiBwb2ludGVyIHRvIHRoZSAxc3QgZXh0aGRyICovXG4gXHRwdHIgPSBzaXplb2Yoc3RydWN0IGlwdjZoZHIpO1xuLVx0LyogYXZhaWxhYmxlIGxlbmd0aCAqL1xuLVx0bGVuID0gc2tiLVx1MDAzZWxlbiAtIHB0cjtcbiBcdHRlbXAgPSAwO1xuIFxuIFx0d2hpbGUgKG5mX2lwNl9leHRfaGRyKG5leHRoZHIpKSB7XG5AQCAtNTIsOSAmIzQzOzQ5LDYgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdHRlbXAgfD0gTUFTS19OT05FO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4tXHRcdC8qIElzIHRoZXJlIGVub3VnaCBzcGFjZSBmb3IgdGhlIG5leHQgZXh0IGhlYWRlcj8gKi9cbi1cdFx0aWYgKGxlbiBcdTAwM2MgKGludClzaXplb2Yoc3RydWN0IGlwdjZfb3B0X2hkcikpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHQvKiBFU1AgLVx1MDAzZSBldmFsdWF0ZSAqL1xuIFx0XHRpZiAobmV4dGhkciA9PSBORVhUSERSX0VTUCkge1xuIFx0XHRcdHRlbXAgfD0gTUFTS19FU1A7XG5AQCAtOTcsMTAgJiM0Mzs5MSwxMSBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdH1cbiBcbiBcdFx0bmV4dGhkciA9IGhwLVx1MDAzZW5leHRoZHI7XG4tXHRcdGxlbiAtPSBoZHJsZW47XG4gXHRcdHB0ciAmIzQzOz0gaGRybGVuO1xuLVx0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0aWYgKHB0ciBcdTAwM2Ugc2tiLVx1MDAzZWxlbikge1xuJiM0MztcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdGlmIChuZXh0aGRyICE9IE5FWFRIRFJfTk9ORSBcdTAwMjZcdTAwMjYgbmV4dGhkciAhPSBORVhUSERSX0VTUClcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXG5pbmRleCBkYjBmZDY0ZDg5ODYyNy4uNmZjYzQwMTAyZmUzZGYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmNcbkBAIC0yNywyMiAmIzQzOzI3LDI3IEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDtcbiBcdGludCBoZHJsZW4sIHNyaG9mZiA9IDA7XG4mIzQzO1x0aW50IGVycjtcbiBcbi1cdGlmIChpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFx1MDAzYyAwKVxuJiM0MztcdGVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCBcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XG4mIzQzO1x0aWYgKGVyciBcdTAwM2MgMCkge1xuJiM0MztcdFx0aWYgKGVyciAhPSAtRU5PRU5UKVxuJiM0MztcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXHRzcmggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBzcmhvZmYsIHNpemVvZihfc3JoKSwgXHUwMDI2X3NyaCk7XG4gXHRpZiAoIXNyaClcbi1cdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0Z290byBob3Rkcm9wO1xuIFxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4oc3JoKTtcbiBcdGlmIChza2ItXHUwMDNlbGVuIC0gc3Job2ZmIFx1MDAzYyBoZHJsZW4pXG4tXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGlmIChzcmgtXHUwMDNldHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKHNyaC1cdTAwM2VzZWdtZW50c19sZWZ0IFx1MDAzZSBzcmgtXHUwMDNlZmlyc3Rfc2VnbWVudClcbi1cdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0Z290byBob3Rkcm9wO1xuIFxuIFx0LyogTmV4dCBIZWFkZXIgbWF0Y2hpbmcgKi9cbiBcdGlmIChzcmhpbmZvLVx1MDAzZW10X2ZsYWdzIFx1MDAyNiBJUDZUX1NSSF9ORVhUSERSKVxuQEAgLTExMSw2ICYjNDM7MTE2LDEwIEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdFx0IShzcmgtXHUwMDNldGFnID09IHNyaGluZm8tXHUwMDNldGFnKSkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0Mztob3Rkcm9wOlxuJiM0MztcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbkBAIC0xMjEsMjIgJiM0MzsxMzAsMzEgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0c3RydWN0IGluNl9hZGRyIF9wc2lkLCBfbnNpZCwgX2xzaWQ7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgKnNyaDtcbiBcdHN0cnVjdCBpcHY2X3NyX2hkciBfc3JoO1xuJiM0MztcdGludCBlcnI7XG4gXG4tXHRpZiAoaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKSBcdTAwM2MgMClcbiYjNDM7XHRlcnIgPSBpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpO1xuJiM0MztcdGlmIChlcnIgXHUwMDNjIDApIHtcbiYjNDM7XHRcdGlmIChlcnIgIT0gLUVOT0VOVClcbiYjNDM7XHRcdFx0Z290byBob3Rkcm9wO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIFx0c3JoID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgc3Job2ZmLCBzaXplb2YoX3NyaCksIFx1MDAyNl9zcmgpO1xuIFx0aWYgKCFzcmgpXG4tXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKHNyaCk7XG4gXHRpZiAoc2tiLVx1MDAzZWxlbiAtIHNyaG9mZiBcdTAwM2MgaGRybGVuKVxuLVx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHRnb3RvIGhvdGRyb3A7XG4gXG4gXHRpZiAoc3JoLVx1MDAzZXR5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiYjNDM7XHRpZiAoc2l6ZW9mKCpzcmgpICYjNDM7XG4mIzQzO1x0ICAgICgoc3JoLVx1MDAzZWZpcnN0X3NlZ21lbnQgJiM0MzsgMSkgKiBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgXHUwMDNlIGhkcmxlbilcbiYjNDM7XHRcdGdvdG8gaG90ZHJvcDtcbiYjNDM7XG4gXHRpZiAoc3JoLVx1MDAzZXNlZ21lbnRzX2xlZnQgXHUwMDNlIHNyaC1cdTAwM2VmaXJzdF9zZWdtZW50KVxuLVx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHRnb3RvIGhvdGRyb3A7XG4gXG4gXHQvKiBOZXh0IEhlYWRlciBtYXRjaGluZyAqL1xuIFx0aWYgKHNyaGluZm8tXHUwMDNlbXRfZmxhZ3MgXHUwMDI2IElQNlRfU1JIX05FWFRIRFIpXG5AQCAtMjA3LDcgJiM0MzsyMjUsNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0ICAoKHNyaC1cdTAwM2VzZWdtZW50c19sZWZ0ICYjNDM7IDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xuIFx0XHRwc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHNpZG9mZiwgc2l6ZW9mKF9wc2lkKSwgXHUwMDI2X3BzaWQpO1xuIFx0XHRpZiAoIXBzaWQpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfUFNJRCxcbiBcdFx0XHRcdGlwdjZfbWFza2VkX2FkZHJfY21wKHBzaWQsIFx1MDAyNnNyaGluZm8tXHUwMDNlcHNpZF9tc2ssXG4gXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZzcmhpbmZvLVx1MDAzZXBzaWRfYWRkcikpKVxuQEAgLTIyMiw3ICYjNDM7MjQwLDcgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdCAgKChzcmgtXHUwMDNlc2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xuIFx0XHRuc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgXHUwMDI2X25zaWQpO1xuIFx0XHRpZiAoIW5zaWQpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTlNJRCxcbiBcdFx0XHRcdGlwdjZfbWFza2VkX2FkZHJfY21wKG5zaWQsIFx1MDAyNnNyaGluZm8tXHUwMDNlbnNpZF9tc2ssXG4gXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZzcmhpbmZvLVx1MDAzZW5zaWRfYWRkcikpKVxuQEAgLTIzNCwxMyAmIzQzOzI1MiwxNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdGxzaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7XG4gXHRcdGxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCBcdTAwMjZfbHNpZCk7XG4gXHRcdGlmICghbHNpZClcbi1cdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0aWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9MU0lELFxuIFx0XHRcdFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobHNpZCwgXHUwMDI2c3JoaW5mby1cdTAwM2Vsc2lkX21zayxcbiBcdFx0XHRcdFx0XHQgICAgIFx1MDAyNnNyaGluZm8tXHUwMDNlbHNpZF9hZGRyKSkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0Mztob3Rkcm9wOlxuJiM0MztcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuIHN0YXRpYyBpbnQgc3JoX210Nl9jaGVjayhjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVA2X05GX0lQVEFCTEVTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9TUkgmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGJoX210NiYjMzQ7LAogICAgJiMzNDtpcHY2aGVhZGVyX210NiYjMzQ7LAogICAgJiMzNDtzcmhfbXQ2JiMzNDssCiAgICAmIzM0O3NyaDFfbXQ2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIGV4dGVuc2lvbnMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBkcm9wIG1hbGZvcm1lZCBwYWNrZXRzIChob3Rkcm9wKSBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcGFja2V0IHByb2Nlc3NpbmcgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgaXA2dGFibGVzIHJ1bGVzIGFuZCBzZW5kaW5nIGNyYWZ0ZWQgSVB2NiBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWY0OGI0NGJhZGFhMjU2ZGMyMjk2YzQ5ZmI1MjliZTA2ZTlmNTA4YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDE2OjAzOjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYwppbmRleCA2ZDFhNWQyMDI2YTY3OC4uMWI1ZGNjOTJiN2RhNDkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jCkBAIC02MiwyMSAmIzQzOzYyLDE4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJICAgIE5FWFRIRFJfSE9QIDogTkVYVEhEUl9ERVNULCBOVUxMLCBOVUxMKTsKIAlpZiAoZXJyICZsdDsgMCkgewogCQlpZiAoZXJyICE9IC1FTk9FTlQpCi0JCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwomIzQzOwkJCWdvdG8gaG90ZHJvcDsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAogCW9oID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHRyLCBzaXplb2YoX29wdHNoKSwgJmFtcDtfb3B0c2gpOwotCWlmIChvaCA9PSBOVUxMKSB7Ci0JCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7Ci0JCXJldHVybiBmYWxzZTsKLQl9CiYjNDM7CWlmICghb2gpCiYjNDM7CQlnb3RvIGhvdGRyb3A7CiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihvaCk7CiAJaWYgKHNrYi0mZ3Q7bGVuIC0gcHRyICZsdDsgaGRybGVuKSB7CiAJCS8qIFBhY2tldCBzbWFsbGVyIHRoYW4gaXQmIzM5O3MgbGVuZ3RoIGZpZWxkICovCi0JCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7Ci0JCXJldHVybiBmYWxzZTsKJiM0MzsJCWdvdG8gaG90ZHJvcDsKIAl9CiAKIAlwcl9kZWJ1ZygmIzM0O0lQdjYgT1BUUyBMRU4gJXUgJXUgJiMzNDssIGhkcmxlbiwgb2gtJmd0O2hkcmxlbik7CkBAIC0xMDQsOCAmIzQzOzEwMSw4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJCWJyZWFrOwogCQkJdHAgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0dHlwZSksCiAJCQkJCQkmYW1wO19vcHR0eXBlKTsKLQkJCWlmICh0cCA9PSBOVUxMKQotCQkJCWJyZWFrOwomIzQzOwkJCWlmICghdHApCiYjNDM7CQkJCWdvdG8gaG90ZHJvcDsKIAogCQkJLyogVHlwZSBjaGVjayAqLwogCQkJaWYgKCp0cCAhPSAob3B0aW5mby0mZ3Q7b3B0c1t0ZW1wXSAmYW1wOyAweEZGMDApICZndDsmZ3Q7IDgpIHsKQEAgLTEyMSwxMiAmIzQzOzExOCwxMiBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAogCQkJCS8qIGxlbmd0aCBmaWVsZCBleGlzdHMgPyAqLwogCQkJCWlmIChoZHJsZW4gJmx0OyAyKQotCQkJCQlicmVhazsKJiM0MzsJCQkJCWdvdG8gaG90ZHJvcDsKIAkJCQlscCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciAmIzQzOyAxLAogCQkJCQkJCXNpemVvZihfb3B0bGVuKSwKIAkJCQkJCQkmYW1wO19vcHRsZW4pOwotCQkJCWlmIChscCA9PSBOVUxMKQotCQkJCQlicmVhazsKJiM0MzsJCQkJaWYgKCFscCkKJiM0MzsJCQkJCWdvdG8gaG90ZHJvcDsKIAkJCQlzcGVjX2xlbiA9IG9wdGluZm8tJmd0O29wdHNbdGVtcF0gJmFtcDsgMHgwMEZGOwogCiAJCQkJaWYgKHNwZWNfbGVuICE9IDB4MDBGRiAmYW1wOyZhbXA7IHNwZWNfbGVuICE9ICpscCkgewpAQCAtMTQ3LDcgJiM0MzsxNDQsNyBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJCWlmICgocHRyICZndDsgc2tiLSZndDtsZW4gLSBvcHRsZW4gfHwgaGRybGVuICZsdDsgb3B0bGVuKSAmYW1wOyZhbXA7CiAJCQkgICAgdGVtcCAmbHQ7IG9wdGluZm8tJmd0O29wdHNuciAtIDEpIHsKIAkJCQlwcl9kZWJ1ZygmIzM0O25ldyBwb2ludGVyIGlzIHRvbyBsYXJnZSFcbiYjMzQ7KTsKLQkJCQlicmVhazsKJiM0MzsJCQkJZ290byBob3Rkcm9wOwogCQkJfQogCQkJcHRyICYjNDM7PSBvcHRsZW47CiAJCQloZHJsZW4gLT0gb3B0bGVuOwpAQCAtMTU5LDYgJiM0MzsxNTYsMTAgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJfQogCiAJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzO2hvdGRyb3A6CiYjNDM7CXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiYjNDM7CXJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIGludCBoYmhfbXQ2X2NoZWNrKGNvbnN0IHN0cnVjdCB4dF9tdGNoa19wYXJhbSAqcGFyKQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jCmluZGV4IGM1MmZmOTI5YzkzYjM2Li45MWEzNWU4M2IyN2Y0ZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuYwpAQCAtMjgsNyAmIzQzOzI4LDYgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogewogCWNvbnN0IHN0cnVjdCBpcDZ0X2lwdjZoZWFkZXJfaW5mbyAqaW5mbyA9IHBhci0mZ3Q7bWF0Y2hpbmZvOwogCXVuc2lnbmVkIGludCB0ZW1wOwotCWludCBsZW47CiAJdTggbmV4dGhkcjsKIAl1bnNpZ25lZCBpbnQgcHRyOwogCkBAIC0zOCw4ICYjNDM7MzcsNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJbmV4dGhkciA9IGlwdjZfaGRyKHNrYiktJmd0O25leHRoZHI7CiAJLyogcG9pbnRlciB0byB0aGUgMXN0IGV4dGhkciAqLwogCXB0ciA9IHNpemVvZihzdHJ1Y3QgaXB2Nmhkcik7Ci0JLyogYXZhaWxhYmxlIGxlbmd0aCAqLwotCWxlbiA9IHNrYi0mZ3Q7bGVuIC0gcHRyOwogCXRlbXAgPSAwOwogCiAJd2hpbGUgKG5mX2lwNl9leHRfaGRyKG5leHRoZHIpKSB7CkBAIC01Miw5ICYjNDM7NDksNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJCQl0ZW1wIHw9IE1BU0tfTk9ORTsKIAkJCWJyZWFrOwogCQl9Ci0JCS8qIElzIHRoZXJlIGVub3VnaCBzcGFjZSBmb3IgdGhlIG5leHQgZXh0IGhlYWRlcj8gKi8KLQkJaWYgKGxlbiAmbHQ7IChpbnQpc2l6ZW9mKHN0cnVjdCBpcHY2X29wdF9oZHIpKQotCQkJcmV0dXJuIGZhbHNlOwogCQkvKiBFU1AgLSZndDsgZXZhbHVhdGUgKi8KIAkJaWYgKG5leHRoZHIgPT0gTkVYVEhEUl9FU1ApIHsKIAkJCXRlbXAgfD0gTUFTS19FU1A7CkBAIC05NywxMCAmIzQzOzkxLDExIEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJfQogCiAJCW5leHRoZHIgPSBocC0mZ3Q7bmV4dGhkcjsKLQkJbGVuIC09IGhkcmxlbjsKIAkJcHRyICYjNDM7PSBoZHJsZW47Ci0JCWlmIChwdHIgJmd0OyBza2ItJmd0O2xlbikKLQkJCWJyZWFrOwomIzQzOwkJaWYgKHB0ciAmZ3Q7IHNrYi0mZ3Q7bGVuKSB7CiYjNDM7CQkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQl9CiAJfQogCiAJaWYgKG5leHRoZHIgIT0gTkVYVEhEUl9OT05FICZhbXA7JmFtcDsgbmV4dGhkciAhPSBORVhUSERSX0VTUCkKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMKaW5kZXggZGIwZmQ2NGQ4OTg2MjcuLjZmY2M0MDEwMmZlM2RmIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYwpAQCAtMjcsMjIgJiM0MzsyNywyNyBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAlzdHJ1Y3QgaXB2Nl9zcl9oZHIgKnNyaDsKIAlzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDsKIAlpbnQgaGRybGVuLCBzcmhvZmYgPSAwOwomIzQzOwlpbnQgZXJyOwogCi0JaWYgKGlwdjZfZmluZF9oZHIoc2tiLCAmYW1wO3NyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKSAmbHQ7IDApCiYjNDM7CWVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCAmYW1wO3NyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTsKJiM0MzsJaWYgKGVyciAmbHQ7IDApIHsKJiM0MzsJCWlmIChlcnIgIT0gLUVOT0VOVCkKJiM0MzsJCQlnb3RvIGhvdGRyb3A7CiAJCXJldHVybiBmYWxzZTsKJiM0MzsJfQogCXNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCAmYW1wO19zcmgpOwogCWlmICghc3JoKQotCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQlnb3RvIGhvdGRyb3A7CiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpOwogCWlmIChza2ItJmd0O2xlbiAtIHNyaG9mZiAmbHQ7IGhkcmxlbikKLQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJZ290byBob3Rkcm9wOwogCiAJaWYgKHNyaC0mZ3Q7dHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKHNyaC0mZ3Q7c2VnbWVudHNfbGVmdCAmZ3Q7IHNyaC0mZ3Q7Zmlyc3Rfc2VnbWVudCkKLQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJZ290byBob3Rkcm9wOwogCiAJLyogTmV4dCBIZWFkZXIgbWF0Y2hpbmcgKi8KIAlpZiAoc3JoaW5mby0mZ3Q7bXRfZmxhZ3MgJmFtcDsgSVA2VF9TUkhfTkVYVEhEUikKQEAgLTExMSw2ICYjNDM7MTE2LDEwIEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJCSEoc3JoLSZndDt0YWcgPT0gc3JoaW5mby0mZ3Q7dGFnKSkpCiAJCQlyZXR1cm4gZmFsc2U7CiAJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7aG90ZHJvcDoKJiM0MzsJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKJiM0MzsJcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCkBAIC0xMjEsMjIgJiM0MzsxMzAsMzEgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCXN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkOwogCXN0cnVjdCBpcHY2X3NyX2hkciAqc3JoOwogCXN0cnVjdCBpcHY2X3NyX2hkciBfc3JoOwomIzQzOwlpbnQgZXJyOwogCi0JaWYgKGlwdjZfZmluZF9oZHIoc2tiLCAmYW1wO3NyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKSAmbHQ7IDApCiYjNDM7CWVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCAmYW1wO3NyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTsKJiM0MzsJaWYgKGVyciAmbHQ7IDApIHsKJiM0MzsJCWlmIChlcnIgIT0gLUVOT0VOVCkKJiM0MzsJCQlnb3RvIGhvdGRyb3A7CiAJCXJldHVybiBmYWxzZTsKJiM0MzsJfQogCXNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCAmYW1wO19zcmgpOwogCWlmICghc3JoKQotCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQlnb3RvIGhvdGRyb3A7CiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpOwogCWlmIChza2ItJmd0O2xlbiAtIHNyaG9mZiAmbHQ7IGhkcmxlbikKLQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJZ290byBob3Rkcm9wOwogCiAJaWYgKHNyaC0mZ3Q7dHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNCkKIAkJcmV0dXJuIGZhbHNlOwogCiYjNDM7CWlmIChzaXplb2YoKnNyaCkgJiM0MzsKJiM0MzsJICAgICgoc3JoLSZndDtmaXJzdF9zZWdtZW50ICYjNDM7IDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpICZndDsgaGRybGVuKQomIzQzOwkJZ290byBob3Rkcm9wOwomIzQzOwogCWlmIChzcmgtJmd0O3NlZ21lbnRzX2xlZnQgJmd0OyBzcmgtJmd0O2ZpcnN0X3NlZ21lbnQpCi0JCXJldHVybiBmYWxzZTsKJiM0MzsJCWdvdG8gaG90ZHJvcDsKIAogCS8qIE5leHQgSGVhZGVyIG1hdGNoaW5nICovCiAJaWYgKHNyaGluZm8tJmd0O210X2ZsYWdzICZhbXA7IElQNlRfU1JIX05FWFRIRFIpCkBAIC0yMDcsNyAmIzQzOzIyNSw3IEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJCSAgKChzcmgtJmd0O3NlZ21lbnRzX2xlZnQgJiM0MzsgMSkgKiBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7CiAJCXBzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwc2lkb2ZmLCBzaXplb2YoX3BzaWQpLCAmYW1wO19wc2lkKTsKIAkJaWYgKCFwc2lkKQotCQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJCWdvdG8gaG90ZHJvcDsKIAkJaWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9QU0lELAogCQkJCWlwdjZfbWFza2VkX2FkZHJfY21wKHBzaWQsICZhbXA7c3JoaW5mby0mZ3Q7cHNpZF9tc2ssCiAJCQkJCQkgICAgICZhbXA7c3JoaW5mby0mZ3Q7cHNpZF9hZGRyKSkpCkBAIC0yMjIsNyAmIzQzOzI0MCw3IEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJCSAgKChzcmgtJmd0O3NlZ21lbnRzX2xlZnQgLSAxKSAqIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKIAkJbnNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG5zaWRvZmYsIHNpemVvZihfbnNpZCksICZhbXA7X25zaWQpOwogCQlpZiAoIW5zaWQpCi0JCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQkJZ290byBob3Rkcm9wOwogCQlpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX05TSUQsCiAJCQkJaXB2Nl9tYXNrZWRfYWRkcl9jbXAobnNpZCwgJmFtcDtzcmhpbmZvLSZndDtuc2lkX21zaywKIAkJCQkJCSAgICAgJmFtcDtzcmhpbmZvLSZndDtuc2lkX2FkZHIpKSkKQEAgLTIzNCwxMyAmIzQzOzI1MiwxNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJCWxzaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7CiAJCWxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCAmYW1wO19sc2lkKTsKIAkJaWYgKCFsc2lkKQotCQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJCWdvdG8gaG90ZHJvcDsKIAkJaWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9MU0lELAogCQkJCWlwdjZfbWFza2VkX2FkZHJfY21wKGxzaWQsICZhbXA7c3JoaW5mby0mZ3Q7bHNpZF9tc2ssCiAJCQkJCQkgICAgICZhbXA7c3JoaW5mby0mZ3Q7bHNpZF9hZGRyKSkpCiAJCQlyZXR1cm4gZmFsc2U7CiAJfQogCXJldHVybiB0cnVlOwomIzQzOwomIzQzO2hvdGRyb3A6CiYjNDM7CXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiYjNDM7CXJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIGludCBzcmhfbXQ2X2NoZWNrKGNvbnN0IHN0cnVjdCB4dF9tdGNoa19wYXJhbSAqcGFyKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTA2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIElQdjYgTWF0Y2ggUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBhbHRlcnMgc29tZSBJUHY2IE5ldGZpbHRlciBtYXRjaCBtb2R1bGVzLiBTcGVjaWZpY2FsbHksIHdlJiMzOTt2ZSBnb3QgY2hhbmdlcyBpbiBgaXA2dF9oYmguY2AsIGBpcDZ0X2lwdjZoZWFkZXIuY2AsIGFuZCBgaXA2dF9zcmguY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBgcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTtgIGluIGEgZmV3IHNwb3RzLiBUaGUga2V5IGlzIHRoYXQgdGhpcyBtb2RpZmljYXRpb24gbWFrZXMgdGhlIGNvZGUgKmRyb3AqIG1hbGZvcm1lZCBwYWNrZXRzLCByYXRoZXIgdGhhbiBqdXN0IHJldHVybmluZyBgZmFsc2VgLCB3aGljaCB3b3VsZCBjb250aW51ZSBydWxlIHRyYXZlcnNhbC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBjb21wbGV0ZWx5LgoKTGV0JiMzOTtzIGRyaWxsIGRvd24uIFRoZSBhbHRlcmVkIGZ1bmN0aW9ucyBhcmU6IGBoYmhfbXQ2YCwgYGlwdjZoZWFkZXJfbXQ2YCwgYW5kIGBzcmhfbXQ2YCBhbmQgYHNyaDFfbXQ2YC4gSW1tZWRpYXRlbHksIEkgcmVjb2duaXplIHRoZXNlIGFzIE5ldGZpbHRlciBtYXRjaCBmdW5jdGlvbnMgd2l0aGluIHRoZSBJUHY2IGNvbnRleHQuIFRoZXkmIzM5O3JlIGRlZmluaXRlbHkgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSDigJMgc29tZW9uZSBjYW4gd3JpdGUgYW4gYGlwNnRhYmxlc2AgcnVsZSBhbmQgY3JhZnQgYSBwYWNrZXQgdG8gdHJpZ2dlciB0aGVzZSByb3V0aW5lcy4gSSBrbm93IHRoYXQgYmVjYXVzZSBpdCYjMzk7cyB0aGUgbmF0dXJlIG9mIE5ldGZpbHRlci4gVGhlIHBhdGNoIGlzbiYjMzk7dCBqdXN0IGNvc21ldGljOyBpdCYjMzk7cyBhIHJlYWwgc2hpZnQgaW4gcGFja2V0IHByb2Nlc3NpbmcsIGFzIG1lbnRpb25lZCBiZWZvcmU6IGZyb20gJiMzNDtjb250aW51ZSBwcm9jZXNzaW5nJiMzNDsgdG8gJiMzNDtkcm9wIGltbWVkaWF0ZWx5JiMzNDsuCgpOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gV2hhdCBLY29uZmlnIG9wdGlvbiBlbmFibGVzIHRoZXNlIG1vZHVsZXM/IEZvciBgaXA2dF9oYmguY2AsIGlzIGl0IGBDT05GSUdfSVA2X05GX01BVENIX0hCSGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgZGV0YWlsZWQgaW4gdGhlIGBNYWtlZmlsZWAgb3IgYEtjb25maWdgIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9pcHY2L25ldGZpbHRlcmAgZGlyZWN0b3J5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlc2UgdG8gdW5kZXJzdGFuZCBob3cgd2lkZWx5IHRoaXMgcGF0Y2ggd2lsbCBpbXBhY3QgZGVwbG95ZWQgc3lzdGVtcy4gVGhhdCYjMzk7cyBteSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXA2dF9oYmgubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9MzY9b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgJiM0Mzs9IGlwNnRfbWgub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfT1BUUykgJiM0Mzs9IGlwNnRfaGJoLm9cbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfSVA2X05GX01BVENIX1JQRklMVEVSKSAmIzQzOz0gaXA2dF9ycGZpbHRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk3NAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIE1vZHVsZSBEZXBlbmRlbmN5IENsYXJpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBDT05GSUdfSVA2X05GX01BVENIX09QVFNgLCBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRpcmVjdGx5IHRpZXMgaW50byB0aGUgYGlwNnRfaGJoLm9gIG9iamVjdCBmaWxlLiBJbiBlc3NlbmNlLCBzZXR0aW5nIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gbGlrZWx5IGluY2x1ZGVzLCBlbmFibGVzLCBvciBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IHN1cHBvcnQgZm9yIHRoZSAmIzM0O2hvcC1ieS1ob3AmIzM0OyBleHRlbnNpb24gaGVhZGVyIG1hdGNoaW5nIG1vZHVsZSBpbiB0aGUgSVB2NiBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGxpbmsuIFRoaXMgbWVhbnMgaXQmIzM5O3MgY3JpdGljYWwgdG8gZW5zdXJlIHRoYXQgaWYgYSB1c2UgY2FzZSByZWxpZXMgb24gbWF0Y2hpbmcgb24gSVB2NiBob3AtYnktaG9wIGhlYWRlcnMsIHRoZW4gdGhpcyBjb25maWcgb3B0aW9uIG5lZWRzIHRvIGJlIGVuYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciB0aGlzIGRlcGVuZGVuY3kgd2hlbiBJJiMzOTttIGxvb2tpbmcgYXQgcG90ZW50aWFsIElQdjYgZmlyZXdhbGwgcnVsZSBvcHRpbWl6YXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNnRfaXB2NmhlYWRlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfSVA2X05GX01BVENIX0ZSQUcpICYjNDM7PSBpcDZ0X2ZyYWcub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUikgJiM0Mzs9IGlwNnRfaXB2NmhlYWRlci5vXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtb2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgJiM0Mzs9IGlwNnRfbWgub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzNDEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBBbmFseXNpczogSVB2NiBIZWFkZXIgTWF0Y2hpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIHRoaXMgZW5hYmxlcyB0aGUgYGlwNnRfaXB2NmhlYWRlci5vYCBtb2R1bGUuJiMzNDsgSXQmIzM5O3MgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3ksIG5vdCBwYXJ0aWN1bGFybHkgY29tcGxleC4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpa2VseSBjb250cm9scyB0aGUgY29tcGlsYXRpb24gYW5kIGluY2x1c2lvbiBvZiB0aGUgSVB2NiBoZWFkZXIgbWF0Y2hpbmcgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIG92ZXJhbGwgSVB2NiBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBTZWVtcyBsaWtlIHN0YW5kYXJkIGtlcm5lbCBtb2R1bGUgbG9naWMgYXQgcGxheS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGlmIHRoZXJlIGFyZSBudWFuY2VzLCBidXQgb24gdGhlIHN1cmZhY2UsIGl0JiMzOTtzIGp1c3QgYWJvdXQgZW5hYmxpbmcgdGhlIG1vZHVsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHRha2UgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGludG8gY29uc2lkZXJhdGlvbiAtIGFuZCBpdCYjMzk7cyBkZXBlbmRlbmN5IG9uIG90aGVyIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXA2dF9zcmgubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9SVCkgJiM0Mzs9IGlwNnRfcnQub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfU1JIKSAmIzQzOz0gaXA2dF9zcmgub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlLTQxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2ODgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgYENPTkZJR19JUDZfTkZfTUFUQ0hfU1JIYCBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBgQ09ORklHX0lQNl9ORl9NQVRDSF9TUkhgIOKAkyB0aGF0IGNsZWFybHkgcG9pbnRzIHRvIHRoZSBgaXA2dF9zcmgub2AgbW9kdWxlLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBiZWZvcmUgSSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIGFsd2F5cyB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlLCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSBzdWJ0bGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzPyBTbywgbGV0JiMzOTtzIHB1bGwgdXAgdGhlIGBLY29uZmlnYCBmaWxlcyBhbmQgc2VlIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgZm9yIHRoaXMgbGl0dGxlIG1vZHVsZS4gR290dGEgbWFrZSBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCB3aGVyZSBpdCBmaXRzIGluIGJlZm9yZSBJIGdvIHRvbyBkZWVwLiBUaGF0JiMzOTtsbCBzYXZlIG1lIHNvbWUgaGVhZGFjaGVzIGxhdGVyLiBUaW1lIHRvIGdldCB0aGF0IGBLY29uZmlnYCBvcGVuZWQgdXAuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9MTE0PWNvbmZpZyBJUDZfTkZfTUFUQ0hfRlJBR1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgSVA2X05GX01BVENIX09QVFNcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aGJoXCYjMzQ7IGhvcC1ieS1ob3AgYW5kIFwmIzM0O2RzdFwmIzM0OyBvcHRzIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA4MwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIENvbnRleHQqKgoKT2theSwgc28gdGhlIGluaXRpYWwgZm9jdXMgaXMgYXJvdW5kIGxpbmUgMTIzIG9mIHRoZSBLY29uZmlnIGZpbGUuIEkmIzM5O20gaW1tZWRpYXRlbHkgaG9taW5nIGluIG9uIHRoYXQgYXJlYSBiZWNhdXNlIHNvbWV0aGluZyB0aGVyZSBpcyByZWxldmFudCB0byB0aGUgaXNzdWUgYXQgaGFuZC4gSXQmIzM5O3MgZWl0aGVyIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gZGVmaW5pdGlvbiwgYW4gaW5jbHVzaW9uIHN0YXRlbWVudCB0aGF0IG1pZ2h0IHB1bGwgaW4gcmVsYXRlZCBjb25maWd1cmF0aW9uLCBvciBwZXJoYXBzIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgYWZmZWN0cyB0aGUgc2VsZWN0aW9uIG9mIGNlcnRhaW4gZmVhdHVyZXMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgcXVpY2tseSBzY2FubmluZyB0aGF0IHNlY3Rpb24gZm9yIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzLCBkZXBlbmRlbmNpZXMgSSYjMzk7bSBub3QgZXhwZWN0aW5nLCBvciBhbnl0aGluZyB0aGF0IGp1bXBzIG91dCBhcyB1bnVzdWFsLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgb3JpZW50IG15c2VsZiB3aXRoaW4gdGhhdCBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIHRyZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExMDpcdFx0ICBmcm9tIHRoZSBNQUMgYWRkcmVzcykgYWRkcmVzc1xuIDExMTpcdFxuIDExMjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxMTM6XHRcbiAxMTQ6XHRjb25maWcgSVA2X05GX01BVENIX0ZSQUdcbiAxMTU6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZnJhZ1wmIzM0OyBGcmFnbWVudGF0aW9uIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbiAxMTY6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMTE3Olx0XHRoZWxwXG4gMTE4Olx0XHQgIGZyYWcgbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIG9uIHRoZSBmcmFnbWVudGF0aW9uXG4gMTE5Olx0XHQgIGhlYWRlciBvZiB0aGUgcGFja2V0LlxuIDEyMDpcdFxuIDEyMTpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxMjI6XHRcbiAxMjM6XHRjb25maWcgSVA2X05GX01BVENIX09QVFNcbiAxMjQ6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7aGJoXCYjMzQ7IGhvcC1ieS1ob3AgYW5kIFwmIzM0O2RzdFwmIzM0OyBvcHRzIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbiAxMjU6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMTI2Olx0XHRoZWxwXG4gMTI3Olx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIG9uIHRoZSBob3AtYnktaG9wXG4gMTI4Olx0XHQgIGFuZCBkZXN0aW5hdGlvbiBvcHRpb25zIGhlYWRlcnMgb2YgYSBwYWNrZXQuXG4gMTI5Olx0XG4gMTMwOlx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDEzMTpcdFxuIDEzMjpcdGNvbmZpZyBJUDZfTkZfTUFUQ0hfSExcbiAxMzM6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7aGxcJiMzNDsgaG9wbGltaXQgbWF0Y2ggc3VwcG9ydCYjMzk7XG4gMTM0Olx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuIDEzNTpcdFx0c2VsZWN0IE5FVEZJTFRFUl9YVF9NQVRDSF9ITFxuIDEzNjpcdFx0aGVscFxuIDEzNzpcdFx0ICBUaGlzIGlzIGEgYmFja3dhcmRzLWNvbXBhdCBvcHRpb24gZm9yIHRoZSB1c2VyJiMzOTtzIGNvbnZlbmllbmNlXG4gMTM4Olx0XHQgIChlLmcuIHdoZW4gcnVubmluZyBvbGRjb25maWcpLiBJdCBzZWxlY3RzXG4gMTM5Olx0XHQgIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEwuXG4gMTQwOlx0XG4gMTQxOlx0Y29uZmlnIElQNl9ORl9NQVRDSF9JUFY2SEVBREVSXG4gMTQyOlx0XHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2lwdjZoZWFkZXJcJiMzNDsgSVB2NiBFeHRlbnNpb24gSGVhZGVycyBNYXRjaCYjMzk7XG4gMTQzOlx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAxNDQ6XHRcdGhlbHBcbiAxNDU6XHRcdCAgVGhpcyBtb2R1bGUgYWxsb3dzIG9uZSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIHVwb25cbiAxNDY6XHRcdCAgdGhlIGlwdjYgZXh0ZW5zaW9uIGhlYWRlcnMuXG4gMTQ3Olx0XG4gMTQ4Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDE0OTpcdFxuIDE1MDpcdGNvbmZpZyBJUDZfTkZfTUFUQ0hfTUhcbiAxNTE6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7bWhcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4gMTUyOlx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuIDE1MzpcdFx0aGVscFxuIDE1NDpcdFx0ICBUaGlzIG1vZHVsZSBhbGxvd3Mgb25lIHRvIG1hdGNoIE1IIHBhY2tldHMuXG4gMTU1Olx0XG4gMTU2Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDE1NzpcdFxuIDE1ODpcdGNvbmZpZyBJUDZfTkZfTUFUQ0hfUlBGSUxURVJcbiAxNTk6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7cnBmaWx0ZXJcJiMzNDsgcmV2ZXJzZSBwYXRoIGZpbHRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA0NgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIEkmIzM5O20gcHJvY2Vzc2luZyB0aGUgaW5mb3JtYXRpb246CgoqKlRoaW5raW5nIEFib3V0IElQdjYgU2VnbWVudCBSb3V0aW5nIEhlYWRlciBNYXRjaGluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgSVA2X05GX01BVENIX1NSSGAsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGludGVyZXN0LiBUaGUgc3BlY2lmaWMgZm9jdXMgaGVyZSBpcyBvbiBob3cgd2UmIzM5O3JlIG1hdGNoaW5nIHRoZSBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIChTUkgpIHdpdGhpbiBJUHY2IHBhY2tldHMuIFRoZSBudWFuY2UgSSYjMzk7bSByZWFsbHkgbG9va2luZyBmb3IgaXMgaG93IHRoZSBuZXRmaWx0ZXIgZnJhbWV3b3JrIGlzIGhhbmRsaW5nIHRoaXMuIFNwZWNpZmljYWxseTogYXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBoZXJlLCBvciBqdXN0IGJhc2ljIGNoZWNraW5nPyBBcmUgd2UgZGl2aW5nIGludG8gdGhlIHZhcmlvdXMgU1JIIG9wdGlvbnMsIGxpa2UgdGhlIHNlZ21lbnRzIHRoZW1zZWx2ZXMsIHRoZSB0eXBlLCB0aGUgbGVuZ3RoLCBvciBqdXN0IHRoZSBwcmVzZW5jZSBvZiB0aGUgZXh0ZW5zaW9uIGhlYWRlcj8gSSYjMzk7bSBob3BpbmcgZm9yIGEgcm9idXN0LCBlZmZpY2llbnQgbWF0Y2hpbmcgbWVjaGFuaXNtIHRoYXQgY2FuIGhhbmRsZSB2YXJpb3VzIFNSSCBjb25maWd1cmF0aW9ucy4gSWRlYWxseSwgaXQgYXZvaWRzIHVubmVjZXNzYXJ5IHBhY2tldCBwYXJzaW5nIG9yIHN0YXRlZnVsIGxvb2t1cHMgdW5sZXNzIGFic29sdXRlbHkgbmVjZXNzYXJ5LiBBcmUgd2UgdGFsa2luZyBhYm91dCBpbnRlZ3JhdGluZyB0aGlzIHdpdGggb3RoZXIgbmV0ZmlsdGVyIG1vZHVsZXMsIGZvciBleGFtcGxlIE5BVCBvciBjb25udHJhY2s/IFRoaW5raW5nIGFib3V0IHRoZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgaXMgdml0YWwsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGlnaC1iYW5kd2lkdGggU1IgZGVwbG95bWVudHMuIElmIHRoZXJlJiMzOTtzIGFuIGlzc3VlIGhlcmUsIEkgd2FudCB0byBjb25zaWRlciBob3cgdGhlIG1hdGNoIG1vZHVsZSBwbGF5cyB3aXRoIG90aGVyIE5GIHJ1bGVzIGluIHRlcm1zIG9mIG92ZXJhbGwgcGVyZm9ybWFuY2UsIHNjYWxhYmlsaXR5IGFuZCBzZWN1cml0eS4gV2UgbmVlZCB0byBiZSBhYmxlIHRvIGVuc3VyZSB0aGlzIG1vZHVsZSBpcyByb2NrIHNvbGlkLCBhbmQgdGhhdCB0aGUgbWF0Y2hpbmcgcHJvY2VzcyBpc24mIzM5O3Qgb3BlbmluZyB2dWxuZXJhYmlsaXRpZXMgdGhhdCB3b3VsZCBhbGxvdyBmb3IgYW4gZWFzeSBldmFzaW9uIG9mIHNlY3VyaXR5IHBvbGljaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVA2X05GX01BVENIX1NSSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnPTE2OT1jb25maWcgSVA2X05GX01BVENIX1JUXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTc3LVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTc4OmNvbmZpZyBJUDZfTkZfTUFUQ0hfU1JIXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNzktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3NyaFwmIzM0OyBTZWdtZW50IFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTAyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgSSYjMzk7bSByZWFkeSB0byBzdW1tYXJpemUgdGhlIHRleHQgYXMgbXkgb3duIHRob3VnaHRzLCBhc3N1bWluZyB0aGUgcm9sZSBvZiBhbiBleHBlcnQgaW4gbXkgZmllbGQuIEhlcmUmIzM5O3MgbXkgdGFrZToKCioqQW5hbHl6aW5nIHRoZSBOZXcgSW5mb3JtYXRpb24qKgoKT2theSwgSSYjMzk7bSByZWFkeS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoaXMgbmV3IHRleHQuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtMZXQmIzM5O3MgcmVhZCB0aGF0IHRvby4mIzM0OyBJbW1lZGlhdGVseSwgbXkgYnJhaW4gc3RhcnRzIHRvIGNsYXNzaWZ5IHRoZSBpbmZvcm1hdGlvbiwgbG9va2luZyBmb3IgcGF0dGVybnMsIGNvbnRleHQsIG9yIGNvbm5lY3Rpb25zIHRvIG15IHByZS1leGlzdGluZyBrbm93bGVkZ2UuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYXJlYXMgd2hlcmUgdGhpcyBtaWdodCBjb250cmlidXRlIHRvIG15IGV4cGVydGlzZSwgb3IgcG9zc2libHkgY2hhbGxlbmdlIGV4aXN0aW5nIGFzc3VtcHRpb25zLiBJJiMzOTttIGtlZW4gdG8gZXZhbHVhdGUgdGhlIG5vdmVsdHkgYW5kIHNpZ25pZmljYW5jZSBvZiBhbnkgbmV3IGNvbmNlcHRzIG9yIGFyZ3VtZW50cyBwcmVzZW50ZWQuIFRoZSBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBnbyBpbiB3aXRoIGFuIG9wZW4gbWluZCwgZWFnZXIgdG8gbGVhcm4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE3MDpcdFx0dHJpc3RhdGUgJiMzOTtcJiMzNDtydFwmIzM0OyBSb3V0aW5nIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbiAxNzE6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMTcyOlx0XHRoZWxwXG4gMTczOlx0XHQgIHJ0IG1hdGNoaW5nIGFsbG93cyB5b3UgdG8gbWF0Y2ggcGFja2V0cyBiYXNlZCBvbiB0aGUgcm91dGluZ1xuIDE3NDpcdFx0ICBoZWFkZXIgb2YgdGhlIHBhY2tldC5cbiAxNzU6XHRcbiAxNzY6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gMTc3Olx0XG4gMTc4Olx0Y29uZmlnIElQNl9ORl9NQVRDSF9TUkhcbiAxNzk6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7c3JoXCYjMzQ7IFNlZ21lbnQgUm91dGluZyBoZWFkZXIgbWF0Y2ggc3VwcG9ydCYjMzk7XG4gMTgwOlx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuIDE4MTpcdFx0aGVscFxuIDE4MjpcdFx0ICBzcmggbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIG9uIHRoZSBzZWdtZW50XG4gMTgzOlx0XHQgIHJvdXRpbmcgaGVhZGVyIG9mIHRoZSBwYWNrZXQuXG4gMTg0Olx0XG4gMTg1Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDE4NjpcdFxuIDE4NzpcdCMgVGhlIHRhcmdldHNcbiAxODg6XHRjb25maWcgSVA2X05GX1RBUkdFVF9ITFxuIDE4OTpcdFx0dHJpc3RhdGUgJiMzOTtcJiMzNDtITFwmIzM0OyBob3BsaW1pdCB0YXJnZXQgc3VwcG9ydCYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5OTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIElQdjYgTmV0ZmlsdGVyIE1hdGNoIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGFuZCBgSVA2X05GX01BVENIX1NSSGAuIFRoZXkgYWxsIHNlZW0gdG8gcmVseSBvbiBgTkVURklMVEVSX0FEVkFOQ0VEYCwgYnV0IGl0JiMzOTtzIHByb2JhYmx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgc28gbWF5YmUgSSBkb24mIzM5O3QgKnJlYWxseSogbmVlZCB0byBsaXN0IGl0IGV4cGxpY2l0bHkuIEl0IG1pZ2h0IGJlIHJlZHVuZGFudCwgYnV0IGxldCYjMzk7cyBsaXN0IGl0IGFueXdheSwganVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgYWxzbyBhZGQgYElQNl9ORl9JUFRBQkxFU2AgYXMgaXQmIzM5O3MgdGhlIHBhcmVudCBtb2R1bGUsIGp1c3QgdG8gaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUuCgpUaGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBoZXJlIGFyZSBgaGJoX210NmAsIGBpcHY2aGVhZGVyX210NmAsIGBzcmhfbXQ2YCwgYW5kIGBzcmgxX210NmAuIFRoZXNlIGFyZSBuZXRmaWx0ZXIgbWF0Y2ggZnVuY3Rpb25zIHNwZWNpZmljYWxseSBmb3IgSVB2Ni4gSSBzZWUgdGhhdCB0aGUgY2hhbmdlcyBhcmUgbW9yZSB0aGFuIGp1c3QgcmV0dXJuaW5nIGEgJiMzNDtmYWxzZSYjMzQ7IHJlc3VsdDsgdGhleSYjMzk7cmUgYWN0dWFsbHkgZHJvcHBpbmcgbWFsZm9ybWVkIHBhY2tldHMgbm93LiBUaGF0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2hpY2ggbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nIHRvIGNoZWNrIGZvciB2dWxuZXJhYmlsaXRpZXMuCgpTbywganVzdCB0byBiZSBjcnlzdGFsIGNsZWFyLCBoZXJlJiMzOTtzIG15IGNvbmZpZ3VyYXRpb24gbGlzdCBhZ2FpbjoKCiogICBgSVA2X05GX01BVENIX09QVFNgCiogICBgSVA2X05GX01BVENIX0lQVjZIRUFERVJgCiogICBgSVA2X05GX01BVENIX1NSSGAKKiAgIGBJUDZfTkZfSVBUQUJMRVNgCgpBbmQgdGhlIGtleSBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBkdXJpbmcgcmV2aWV3OgoKKiAgIGBoYmhfbXQ2YAoqICAgYGlwdjZoZWFkZXJfbXQ2YAoqICAgYHNyaF9tdDZgCiogICBgc3JoMV9tdDZgCgpKdXN0IHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIG1vZGlmaWVkIGZ1bmN0aW9ucyB0aGF0IEkgbWlnaHQgaGF2ZSBtaXNzZWQuIEdvdHRhIGJlIG1ldGljdWxvdXMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgYm9vbC4qX210NiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYz0yNT1zcGlfbWF0Y2godV9pbnQzMl90IG1pbiwgdV9pbnQzMl90IG1heCwgdV9pbnQzMl90IHNwaSwgYm9vbCBpbnZlcnQpXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYy0zNS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmM6MzY6c3RhdGljIGJvb2wgYWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmMtMzcte1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X21oLmM9MjY9dHlwZV9tYXRjaCh1X2ludDhfdCBtaW4sIHVfaW50OF90IG1heCwgdV9pbnQ4X3QgdHlwZSwgYm9vbCBpbnZlcnQpXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfbWguYy0zMC1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X21oLmM6MzE6c3RhdGljIGJvb2wgbWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X21oLmMtMzIte1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmM9MjY9c2Vnc2xlZnRfbWF0Y2godV9pbnQzMl90IG1pbiwgdV9pbnQzMl90IG1heCwgdV9pbnQzMl90IGlkLCBib29sIGludmVydClcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jLTMwLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuYzozMTpzdGF0aWMgYm9vbCBydF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuYy0zMi17XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMjMtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYzoyNDpzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jLTI1LXtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYy0xMjQtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYzoxMjU6c3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMTI2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMzYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNjb3BlIG9mIHRoaXMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgaGJoX210NmAsIGBpcHY2aGVhZGVyX210NmAsIGBzcmhfbXQ2YCwgYW5kIGBzcmgxX210NmAuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIHNldCBvZiBmdW5jdGlvbnMsIGFsbCByZWxhdGVkIHRvIElQdjYgaGVhZGVyIHByb2Nlc3NpbmcsIHdoaWNoIG1ha2VzIHNlbnNlLiBIbW0sIGJ1dCB3YWl0IGEgbWludXRlLi4uIEkgZGlkbiYjMzk7dCBzZWUgYGhiaF9tdDZgIG9yIGBpcHY2aGVhZGVyX210NmAgaW4gdGhhdCBgZ3JlcGAgb3V0cHV0LiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IHRoZSBgZ3JlcGAgcmVnZXggbWlnaHQgbm90IGJlIHBlcmZlY3RseSBwcmVjaXNlLCBvciBwZXJoYXBzIHRob3NlIGZ1bmN0aW9ucyBhcmVuJiMzOTt0IGRlY2xhcmVkIGFzIGBzdGF0aWMgYm9vbGAuIFRoZXkgY291bGQgYmUgZGVjbGFyZWQgZGlmZmVyZW50bHksIHdoaWNoIHdvdWxkIG1lYW4gdGhleSBzbGlwcGVkIHBhc3QgdGhlIHNlYXJjaC4gSSBuZWVkIHRvIHZlcmlmeSB0aGVpciBzaWduYXR1cmVzIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3aGF0JiMzOTtzIGdvaW5nIG9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBwcm90b3R5cGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYmhfbXQ2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM9MjM9TU9EVUxFX0FMSUFTKFwmIzM0O2lwNnRfZHN0XCYjMzQ7KTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy00MC1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjQxOnN0YXRpYyBzdHJ1Y3QgeHRfbWF0Y2ggaGJoX210Nl9yZWdbXSBfX3JlYWRfbW9zdGx5O1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtNDItXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYz00Mz1zdGF0aWMgYm9vbFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6NDQ6aGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy00NS17XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtNjAtXHRlcnIgPSBpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2cHRyLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6NjE6XHRcdFx0ICAgIChwYXItXHUwMDNlbWF0Y2ggPT0gXHUwMDI2aGJoX210Nl9yZWdbMF0pID9cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTYyLVx0XHRcdCAgICBORVhUSERSX0hPUCA6IE5FWFRIRFJfREVTVCwgTlVMTCwgTlVMTCk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTY0LVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTY1OnN0YXRpYyBpbnQgaGJoX210Nl9jaGVjayhjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcilcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE2Ni17XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTg1LVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTg2OnN0YXRpYyBzdHJ1Y3QgeHRfbWF0Y2ggaGJoX210Nl9yZWdbXSBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTg3LVx0e1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTg4Olx0XHQvKiBOb3RlLCBoYmhfbXQ2IHJlbGllcyBvbiB0aGUgb3JkZXIgb2YgaGJoX210Nl9yZWcgKi9cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE4OS1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtoYmhcJiMzNDssXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0xOTAtXHRcdC5mYW1pbHlcdFx0PSBORlBST1RPX0lQVjYsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoxOTE6XHRcdC5tYXRjaFx0XHQ9IGhiaF9tdDYsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0xOTItXHRcdC5tYXRjaHNpemVcdD0gc2l6ZW9mKHN0cnVjdCBpcDZ0X29wdHMpLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTkzOlx0XHQuY2hlY2tlbnRyeVx0PSBoYmhfbXQ2X2NoZWNrLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTk0LVx0XHQubWVcdFx0PSBUSElTX01PRFVMRSxcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0xOTgtXHRcdC5mYW1pbHlcdFx0PSBORlBST1RPX0lQVjYsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoxOTk6XHRcdC5tYXRjaFx0XHQ9IGhiaF9tdDYsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMDAtXHRcdC5tYXRjaHNpemVcdD0gc2l6ZW9mKHN0cnVjdCBpcDZ0X29wdHMpLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjAxOlx0XHQuY2hlY2tlbnRyeVx0PSBoYmhfbXQ2X2NoZWNrLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjAyLVx0XHQubWVcdFx0PSBUSElTX01PRFVMRSxcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMDUtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoyMDY6c3RhdGljIGludCBfX2luaXQgaGJoX210Nl9pbml0KHZvaWQpXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMDcte1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjA4Olx0cmV0dXJuIHh0X3JlZ2lzdGVyX21hdGNoZXMoaGJoX210Nl9yZWcsIEFSUkFZX1NJWkUoaGJoX210Nl9yZWcpKTtcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTIwOS19XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMTAtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoyMTE6c3RhdGljIHZvaWQgX19leGl0IGhiaF9tdDZfZXhpdCh2b2lkKVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjEyLXtcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjIxMzpcdHh0X3VucmVnaXN0ZXJfbWF0Y2hlcyhoYmhfbXQ2X3JlZywgQVJSQVlfU0laRShoYmhfbXQ2X3JlZykpO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjE0LX1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTIxNS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjIxNjptb2R1bGVfaW5pdChoYmhfbXQ2X2luaXQpO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjE3Om1vZHVsZV9leGl0KGhiaF9tdDZfZXhpdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTY0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIE1pc21hdGNoKioKCk9rYXksIHNvIHRoYXQgYHN0YXRpYyBib29sIFxuIGhiaF9tdDZgIGlzIHRoZSBjdWxwcml0LCBleHBsYWluaW5nIHRoZSBkaXNjcmVwYW5jeS4gTm93IEkgY2FuIHNlZSB0aGUgZm9jdXMgc3ltYm9scyB0aGF0IHdlcmUgaW52b2x2ZWQuCgpJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSB3b3JraW5nIHdpdGggdGhlc2UgbWF0Y2hpbmcgc3ltYm9sczogYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBgc3JoX210NmAsIGFuZCBgc3JoMV9tdDZgLiBBbmQgdGhvc2Ugc3ltYm9scyBsb29rIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGBJUDZfTkZfTUFUQ0hfU1JIYCwgYW5kIGBJUDZfTkZfSVBUQUJMRVNgLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYG5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnYCBhbmQgdmVyaWZ5IHdoZXRoZXIgdGhlIGBJUDZfTkZfSVBUQUJMRVNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQgYW5kIGhvdyBpdCYjMzk7cyBkZWZpbmVkIHJlbGF0aXZlIHRvIHRoZSByZXN0IG9mIHRoZSBzeW1ib2xzLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVA2X05GX0lQVEFCTEVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9Nj1tZW51IFwmIzM0O0lQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uXCYjMzQ7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctOS0jIG9sZCBzb2Nrb3B0IGludGVyZmFjZSBhbmQgZXZhbCBsb29wXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxMDpjb25maWcgSVA2X05GX0lQVEFCTEVTX0xFR0FDWVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtMZWdhY3kgSVA2IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9NzI9Y29uZmlnIE5GX0xPR19JUFY2XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctNzktXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzo4MDpjb25maWcgSVA2X05GX0lQVEFCTEVTXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cdHRyaXN0YXRlIFwmIzM0O0lQNiB0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGZpbHRlcmluZylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1NjAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogSVB2NiBhbmQgQWR2YW5jZWQgTmV0ZmlsdGVyKioKClJpZ2h0LCBzbyBJJiMzOTttIGNvbmZpZ3VyaW5nIHRoaXMga2VybmVsIGFuZCBpdCBsb29rcyBsaWtlIEkgYWJzb2x1dGVseSBuZWVkIGBJUDZfTkZfSVBUQUJMRVNgLiBObyBxdWVzdGlvbiBhYm91dCB0aGF0LiBCdXQgaG9sZCBvbiwgdGhlIGRvY3VtZW50YXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IGBJUDZfTkZfTUFUQ0hfT1BUU2AgaXMgZGVwZW5kZW50IG9uIGBORVRGSUxURVJfQURWQU5DRURgLiBDbGVhcmx5LCBJIG5lZWQgdG8gaW5jbHVkZSB0aGF0IGFzIHdlbGwuIE5vdywgYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgYSBib29sZWFuLCBzbyBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIG5ldGZpbHRlciBzdWJzeXN0ZW0sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIGl0IGFuZCBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMgb3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZmVhdHVyZXMuIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBzdWJ0bGUsIGFzIHVzdWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRGSUxURVJfQURWQU5DRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjg0OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgZGV2ZWxvcG1lbnQsIGxpa2VseSB3b3JraW5nIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zOgoKKipLY29uZmlnIENoZWNrcG9pbnQqKgoKSG1tLCB0aGlua2luZyBhYm91dCB0aGUgY3VycmVudCBpc3N1ZeKApiBJJiMzOTttIGRyYXdpbmcgYSBibGFuayBvbiB0aGUgZXhhY3QgZmlsZSBJIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgcGFydGljdWxhciBvcHRpb24uIEl0JiMzOTtzIGEga2VybmVsIGNvbmZpZ3VyYXRpb24gdGhpbmcsIHNvIHRoZSBmaXJzdCBwbGFjZSB0aGF0IHNwcmluZ3MgdG8gbWluZCwgYWxtb3N0IHJlZmxleGl2ZWx5LCBpcyBgbmV0L0tjb25maWdgLiBJdCYjMzk7cyBhIHByZXR0eSBjZW50cmFsIGxvY2F0aW9uIGZvciBuZXR3b3JrLXJlbGF0ZWQgc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoYXQgZmlsZSBhcyBteSBmaXJzdCBzdG9wLiBJdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gY29uZmlybSBvciBydWxlIGl0IG91dCBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz0yMTg9aWYgTkVURklMVEVSXG5uZXQvS2NvbmZpZy0yMTktXG5uZXQvS2NvbmZpZzoyMjA6Y29uZmlnIE5FVEZJTFRFUl9BRFZBTkNFRFxubmV0L0tjb25maWctMjIxLVx0Ym9vbCBcJiMzNDtBZHZhbmNlZCBuZXRmaWx0ZXIgY29uZmlndXJhdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA5MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBib29sZWFuIGBORVRGSUxURVJfQURWQU5DRURgIGFuZCB0cnlpbmcgdG8gZ3Jhc3AgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBjb25maWd1cmF0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbGlzdCB0aGUgcmVsYXRlZCBjb25maWdzLCBqdXN0IHRvIGdldCBhIGxheSBvZiB0aGUgbGFuZC4gSSBzZWU6IGBJUDZfTkZfSVBUQUJMRVNgLCBgSVA2X05GX01BVENIX09QVFNgLCBgSVA2X05GX01BVENIX0lQVjZIRUFERVJgLCBgSVA2X05GX01BVENIX1NSSGAsIGFuZCBvZiBjb3Vyc2UsIHRoZSBgTkVURklMVEVSX0FEVkFOQ0VEYCBvcHRpb24gaXRzZWxmLgoKTm93LCBJJiMzOTttIGp1c3QgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2luZyB0byBtYWtlIHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgY2xlYXIuIGBJUDZfTkZfTUFUQ0hfT1BUU2AgaXMgZGVmaW5lZCBpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdgLCByaWdodD8gT2theSwgc28gdGhhdCYjMzk7cyBpdHMgbG9jYXRpb24uIE15IG5leHQgdGhvdWdodCBpcyB3aGV0aGVyIGl0JiMzOTtzIGNvbmRpdGlvbmFsbHkgaW5jbHVkZWQgdW5kZXIgYElQNl9ORl9JUFRBQkxFU2AuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSB0byBjb25maXJtIHRoZSBkZXBlbmRlbmN5IHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBJUCBuZXRmaWx0ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51IFwmIzM0O0lQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uXCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElQVjYgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxuICAgODpcdFxuICAgOTpcdCMgb2xkIHNvY2tvcHQgaW50ZXJmYWNlIGFuZCBldmFsIGxvb3BcbiAgMTA6XHRjb25maWcgSVA2X05GX0lQVEFCTEVTX0xFR0FDWVxuICAxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TGVnYWN5IElQNiB0YWJsZXMgc3VwcG9ydFwmIzM0O1xuICAxMjpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJUFY2IFx1MDAyNlx1MDAyNiBORVRGSUxURVJfWFRBQkxFU19MRUdBQ1lcbiAgMTM6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX1hUQUJMRVNcbiAgMTQ6XHRcdGRlZmF1bHRcdG0gaWYgTkVURklMVEVSX1hUQUJMRVNfTEVHQUNZXG4gIDE1Olx0XHRoZWxwXG4gIDE2Olx0XHQgIGlwNnRhYmxlcyBpcyBhIGxlZ2FjeSBwYWNrZXQgY2xhc3NpZmllci5cbiAgMTc6XHRcdCAgVGhpcyBpcyBub3QgbmVlZGVkIGlmIHlvdSBhcmUgdXNpbmcgaXB0YWJsZXMgb3ZlciBuZnRhYmxlc1xuICAxODpcdFx0ICAoaXB0YWJsZXMtbmZ0KS5cbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgTkZfU09DS0VUX0lQVjZcbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O0lQdjYgc29ja2V0IGxvb2t1cCBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRoZWxwXG4gIDIzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIElQdjYgc29ja2V0IGxvb2t1cCBpbmZyYXN0cnVjdHVyZS4gVGhpc1xuICAyNDpcdFx0ICBpcyB1c2VkIGJ5IHRoZSB7aXA2LG5mfXRhYmxlcyBzb2NrZXQgbWF0Y2guXG4gIDI1Olx0XG4gIDI2Olx0Y29uZmlnIE5GX1RQUk9YWV9JUFY2XG4gIDI3Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUHY2IHRwcm94eSBzdXBwb3J0XCYjMzQ7XG4gIDI4Olx0XG4gIDI5Olx0aWYgTkZfVEFCTEVTXG4gIDMwOlx0XG4gIDMxOlx0Y29uZmlnIE5GX1RBQkxFU19JUFY2XG4gIDMyOlx0XHRib29sIFwmIzM0O0lQdjYgbmZfdGFibGVzIHN1cHBvcnRcJiMzNDtcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgSVB2NiBzdXBwb3J0IGZvciBuZl90YWJsZXMuXG4gIDM1Olx0XG4gIDM2Olx0aWYgTkZfVEFCTEVTX0lQVjZcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgTkZUX1JFSkVDVF9JUFY2XG4gIDM5Olx0XHRzZWxlY3QgTkZfUkVKRUNUX0lQVjZcbiAgNDA6XHRcdGRlZmF1bHQgTkZUX1JFSkVDVFxuICA0MTpcdFx0dHJpc3RhdGVcbiAgNDI6XHRcbiAgNDM6XHRjb25maWcgTkZUX0RVUF9JUFY2XG4gIDQ0Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUHY2IG5mX3RhYmxlcyBwYWNrZXQgZHVwbGljYXRpb24gc3VwcG9ydFwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiAhTkZfQ09OTlRSQUNLIHx8IE5GX0NPTk5UUkFDS1xuICA0NjpcdFx0c2VsZWN0IE5GX0RVUF9JUFY2XG4gIDQ3Olx0XHRoZWxwXG4gIDQ4Olx0XHQgIFRoaXMgbW9kdWxlIGVuYWJsZXMgSVB2NiBwYWNrZXQgZHVwbGljYXRpb24gc3VwcG9ydCBmb3IgbmZfdGFibGVzLlxuICA0OTpcdFxuICA1MDpcdGNvbmZpZyBORlRfRklCX0lQVjZcbiAgNTE6XHRcdHRyaXN0YXRlIFwmIzM0O25mX3RhYmxlcyBmaWIgLyBpcHY2IHJvdXRlIGxvb2t1cCBzdXBwb3J0XCYjMzQ7XG4gIDUyOlx0XHRzZWxlY3QgTkZUX0ZJQlxuICA1MzpcdFx0aGVscFxuICA1NDpcdFx0ICBUaGlzIG1vZHVsZSBlbmFibGVzIElQdjYgRklCIGxvb2t1cHMsIGUuZy4gZm9yIHJldmVyc2UgcGF0aCBmaWx0ZXJpbmcuXG4gIDU1Olx0XHQgIEl0IGFsc28gYWxsb3dzIHF1ZXJ5IG9mIHRoZSBGSUIgZm9yIHRoZSByb3V0ZSB0eXBlLCBlLmcuIGxvY2FsLCB1bmljYXN0LFxuICA1NjpcdFx0ICBtdWx0aWNhc3Qgb3IgYmxhY2tob2xlLlxuICA1NzpcdFxuICA1ODpcdGVuZGlmICMgTkZfVEFCTEVTX0lQVjZcbiAgNTk6XHRlbmRpZiAjIE5GX1RBQkxFU1xuICA2MDpcdFxuICA2MTpcdGNvbmZpZyBORl9EVVBfSVBWNlxuICA2MjpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIElQdjYgcGFja2V0IGR1cGxpY2F0aW9uIHRvIGFsdGVybmF0ZSBkZXN0aW5hdGlvblwmIzM0O1xuICA2MzpcdFx0ZGVwZW5kcyBvbiAhTkZfQ09OTlRSQUNLIHx8IE5GX0NPTk5UUkFDS1xuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBuZl9kdXBfaXB2NiBjb3JlLCB3aGljaCBkdXBsaWNhdGVzIGFuIElQdjZcbiAgNjY6XHRcdCAgcGFja2V0IHRvIGJlIHJlcm91dGVkIHRvIGFub3RoZXIgZGVzdGluYXRpb24uXG4gIDY3Olx0XG4gIDY4Olx0Y29uZmlnIE5GX1JFSkVDVF9JUFY2XG4gIDY5Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUHY2IHBhY2tldCByZWplY3Rpb25cJiMzNDtcbiAgNzA6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuICA3MTpcdFxuICA3MjpcdGNvbmZpZyBORl9MT0dfSVBWNlxuICA3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7SVB2NiBwYWNrZXQgbG9nZ2luZ1wmIzM0O1xuICA3NDpcdFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXG4gIDc1Olx0XHRzZWxlY3QgTkZfTE9HX1NZU0xPR1xuICA3NjpcdFx0aGVscFxuICA3NzpcdFx0ICBUaGlzIGlzIGEgYmFja3dhcmRzLWNvbXBhdCBvcHRpb24gZm9yIHRoZSB1c2VyJiMzOTtzIGNvbnZlbmllbmNlXG4gIDc4Olx0XHQgIChlLmcuIHdoZW4gcnVubmluZyBvbGRjb25maWcpLiBJdCBzZWxlY3RzIENPTkZJR19ORl9MT0dfU1lTTE9HLlxuICA3OTpcdFxuICA4MDpcdGNvbmZpZyBJUDZfTkZfSVBUQUJMRVNcbiAgODE6XHRcdHRyaXN0YXRlIFwmIzM0O0lQNiB0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGZpbHRlcmluZylcJiMzNDtcbiAgODI6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSVBWNlxuICA4MzpcdFx0c2VsZWN0IE5FVEZJTFRFUl9YVEFCTEVTXG4gIDg0Olx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAgODU6XHRcdGhlbHBcbiAgODY6XHRcdCAgaXA2dGFibGVzIGlzIGEgZ2VuZXJhbCwgZXh0ZW5zaWJsZSBwYWNrZXQgaWRlbnRpZmljYXRpb24gZnJhbWV3b3JrLlxuICA4NzpcdFx0ICBDdXJyZW50bHkgb25seSB0aGUgcGFja2V0IGZpbHRlcmluZyBhbmQgcGFja2V0IG1hbmdsaW5nIHN1YnN5c3RlbVxuICA4ODpcdFx0ICBmb3IgSVB2NiB1c2UgdGhpcywgYnV0IGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgZ29pbmcgdG8gZm9sbG93LlxuICA4OTpcdFx0ICBTYXkgJiMzOTtZJiMzOTsgb3IgJiMzOTtNJiMzOTsgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgZWl0aGVyIG9mIHRob3NlLlxuICA5MDpcdFxuICA5MTpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgOTI6XHRcbiAgOTM6XHRpZiBJUDZfTkZfSVBUQUJMRVNcbiAgOTQ6XHRcbiAgOTU6XHQjIFRoZSBzaW1wbGUgbWF0Y2hlcy5cbiAgOTY6XHRjb25maWcgSVA2X05GX01BVENIX0FIXG4gIDk3Olx0XHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2FoXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuICA5ODpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiAgOTk6XHRcdGhlbHBcbiAxMDA6XHRcdCAgVGhpcyBtb2R1bGUgYWxsb3dzIG9uZSB0byBtYXRjaCBBSCBwYWNrZXRzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDgxNwoJCQkJCQkJb3V0cHV0OiAxODAKCQkJCQkJCXRob3VnaHRzOiA1MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjYgTmV0ZmlsdGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2ggYW5kIEkmIzM5O3ZlIGdvdCBhIHByZXR0eSBnb29kIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBGaXJzdCBvZmYsIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGFuZCBgSVA2X05GX01BVENIX1NSSGAgYXJlIGFsbCBjb25kaXRpb25hbCB1bmRlciBgSVA2X05GX0lQVEFCTEVTYC4gIFRoYXQmIzM5O3Mga2V5LgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBpbnRlcmVzdGluZy4gSXQmIzM5O3MgY2hhbmdpbmcgdGhlIGJlaGF2aW9yIG9mIElQdjYgbmV0ZmlsdGVyIG1hdGNoIGV4dGVuc2lvbnMg4oCTIHNwZWNpZmljYWxseSBmb3IgSG9wLWJ5LUhvcCBvcHRpb25zIChoYmgpLCBJUHY2IGhlYWRlcnMsIGFuZCBTb3VyY2UgUm91dGluZyBIZWFkZXJzIChTUkgpLiBJbnN0ZWFkIG9mIHNpbXBseSByZXR1cm5pbmcgJiMzNDtmYWxzZSYjMzQ7IHdoZW4gZW5jb3VudGVyaW5nIGEgbWFsZm9ybWVkIHBhY2tldCwgaXQmIzM5O3Mgbm93IHNldCB0byAmIzM0O2hvdGRyb3AmIzM0OyBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHNpZ25pZmljYW50IG9uZSBhdCB0aGF0LCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgY29uc2lkZXIgZnV6emluZy4gIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB1c2Vyc3BhY2UgdGhyb3VnaCBgaXA2dGFibGVzYCBydWxlIGNvbmZpZ3VyYXRpb24gYW5kIGNyYWZ0aW5nIHNwZWNpZmljIElQdjYgcGFja2V0cy4KClRoZSBzeW1ib2xzIHRoYXQgc2VlbSBsaWtlIGdvb2QgdGFyZ2V0cyBmb3IgZnV6emluZyBhcmU6IGBoYmhfbXQ2YCwgYGlwdjZoZWFkZXJfbXQ2YCwgYW5kIGBzcmhfbXQ2YCwgYXMgd2VsbCBhcyBgc3JoMV9tdDZgLgoKTm93LCBmb3IgZW5hYmxpbmcgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbnMsIGl04oCZcyBjbGVhciB3ZSBuZWVkOgoKKiAgIGBJUDZfTkZfSVBUQUJMRVNgIChlc3NlbnRpYWwgYmVjYXVzZSBpdCBjb250cm9scyB0aGUgbWF0Y2hlcykKKiAgIGBJUDZfTkZfTUFUQ0hfT1BUU2AKKiAgIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAKKiAgIGBJUDZfTkZfTUFUQ0hfU1JIYAoqICAgYE5FVEZJTFRFUl9BRFZBTkNFRGAgKGEgYm9vbGVhbiwgc28gaXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkIHRvIGluY2x1ZGUpCgpJIGRpZCBicmllZmx5IGNvbnNpZGVyIGBJUDZfTkZfSVBUQUJMRVNfTEVHQUNZYCBidXQgaXQgbG9va3MgbGlrZSBgSVA2X05GX0lQVEFCTEVTYCBpcyBzdWZmaWNpZW50IHNpbmNlIHRoYXQmIzM5O3MgdGhlIG1haW4gY29udHJvbCBmb3IgdGhlIG1hdGNoZXMuCgpJIGRvdWJsZS1jaGVja2VkIHRvIGNvbmZpcm0gdGhhdCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3RseSBhc3NvY2lhdGVkIHdpdGggdGhlaXIgcmVzcGVjdGl2ZSBmaWxlczogYElQNl9ORl9NQVRDSF9PUFRTYCBpcyBpbmRlZWQgZm9yIGBpcDZ0X2hiaC5jYCwgYElQNl9ORl9NQVRDSF9JUFY2SEVBREVSYCBpcyBmb3IgYGlwNnRfaXB2NmhlYWRlci5jYCwgYW5kIGBJUDZfTkZfTUFUQ0hfU1JIYCBpcyBjb3JyZWN0IGZvciBgaXA2dF9zcmguY2AuICBBbGwgY2hlY2tzIG91dC4KCk9rYXksIEkmIzM5O20gY29uZmlkZW50IGluIHRoZXNlIGZpbmRpbmdzLiBJJiMzOTttIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQNl9ORl9JUFRBQkxFUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfT1BUUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUiYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfU1JIJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hiaF9tdDYmIzM0OywKICAgICYjMzQ7aXB2NmhlYWRlcl9tdDYmIzM0OywKICAgICYjMzQ7c3JoX210NiYjMzQ7LAogICAgJiMzNDtzcmgxX210NiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBleHRlbnNpb25zIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gZHJvcCBtYWxmb3JtZWQgcGFja2V0cyAoaG90ZHJvcCkgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHBhY2tldCBwcm9jZXNzaW5nIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIGlwNnRhYmxlcyBydWxlcyBhbmQgc2VuZGluZyBjcmFmdGVkIElQdjYgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVA2X05GX0lQVEFCTEVTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9TUkgmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGJoX210NiYjMzQ7LAogICAgJiMzNDtpcHY2aGVhZGVyX210NiYjMzQ7LAogICAgJiMzNDtzcmhfbXQ2JiMzNDssCiAgICAmIzM0O3NyaDFfbXQ2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIGV4dGVuc2lvbnMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBkcm9wIG1hbGZvcm1lZCBwYWNrZXRzIChob3Rkcm9wKSBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcGFja2V0IHByb2Nlc3NpbmcgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgaXA2dGFibGVzIHJ1bGVzIGFuZCBzZW5kaW5nIGNyYWZ0ZWQgSVB2NiBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDM6NTMuNDAyNTk5ODIzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0NTU5OTI0MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVA2X05GX0lQVEFCTEVTXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX0lQVjZIRUFERVJcIixcbiAgICBcIklQNl9ORl9NQVRDSF9TUkhcIixcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhiaF9tdDZcIixcbiAgICBcImlwdjZoZWFkZXJfbXQ2XCIsXG4gICAgXCJzcmhfbXQ2XCIsXG4gICAgXCJzcmgxX210NlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIGV4dGVuc2lvbnMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBkcm9wIG1hbGZvcm1lZCBwYWNrZXRzIChob3Rkcm9wKSBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcGFja2V0IHByb2Nlc3NpbmcgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgaXA2dGFibGVzIHJ1bGVzIGFuZCBzZW5kaW5nIGNyYWZ0ZWQgSVB2NiBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNjowMzo1My40MDI2MDg3MzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1Mzk5ODU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFmNDhiNDRiYWRhYTI1NmRjMjI5NmM0OWZiNTI5YmUwNmU5ZjUwOGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTY6MDM6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xcbmluZGV4IDZkMWE1ZDIwMjZhNjc4Li4xYjVkY2M5MmI3ZGE0OSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXFxuQEAgLTYyLDIxICs2MiwxOCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0ICAgIE5FWFRIRFJfSE9QIDogTkVYVEhEUl9ERVNULCBOVUxMLCBOVUxMKTtcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4gXFx0XFx0aWYgKGVyciAhPSAtRU5PRU5UKVxcbi1cXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbitcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0fVxcbiBcXG4gXFx0b2ggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0c2gpLCBcXHUwMDI2X29wdHNoKTtcXG4tXFx0aWYgKG9oID09IE5VTEwpIHtcXG4tXFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4tXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi1cXHR9XFxuK1xcdGlmICghb2gpXFxuK1xcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFxuIFxcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKG9oKTtcXG4gXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gcHRyIFxcdTAwM2MgaGRybGVuKSB7XFxuIFxcdFxcdC8qIFBhY2tldCBzbWFsbGVyIHRoYW4gaXQncyBsZW5ndGggZmllbGQgKi9cXG4tXFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4tXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdH1cXG4gXFxuIFxcdHByX2RlYnVnKFxcXCJJUHY2IE9QVFMgTEVOICV1ICV1IFxcXCIsIGhkcmxlbiwgb2gtXFx1MDAzZWhkcmxlbik7XFxuQEAgLTEwNCw4ICsxMDEsOCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdFxcdHRwID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHRyLCBzaXplb2YoX29wdHR5cGUpLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2X29wdHR5cGUpO1xcbi1cXHRcXHRcXHRpZiAodHAgPT0gTlVMTClcXG4tXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGlmICghdHApXFxuK1xcdFxcdFxcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFxuIFxcdFxcdFxcdC8qIFR5cGUgY2hlY2sgKi9cXG4gXFx0XFx0XFx0aWYgKCp0cCAhPSAob3B0aW5mby1cXHUwMDNlb3B0c1t0ZW1wXSBcXHUwMDI2IDB4RkYwMCkgXFx1MDAzZVxcdTAwM2UgOCkge1xcbkBAIC0xMjEsMTIgKzExOCwxMiBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFxuIFxcdFxcdFxcdFxcdC8qIGxlbmd0aCBmaWVsZCBleGlzdHMgPyAqL1xcbiBcXHRcXHRcXHRcXHRpZiAoaGRybGVuIFxcdTAwM2MgMilcXG4tXFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdFxcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFx0XFx0XFx0XFx0bHAgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIgKyAxLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRzaXplb2YoX29wdGxlbiksXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZfb3B0bGVuKTtcXG4tXFx0XFx0XFx0XFx0aWYgKGxwID09IE5VTEwpXFxuLVxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRcXHRpZiAoIWxwKVxcbitcXHRcXHRcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdFxcdFxcdHNwZWNfbGVuID0gb3B0aW5mby1cXHUwMDNlb3B0c1t0ZW1wXSBcXHUwMDI2IDB4MDBGRjtcXG4gXFxuIFxcdFxcdFxcdFxcdGlmIChzcGVjX2xlbiAhPSAweDAwRkYgXFx1MDAyNlxcdTAwMjYgc3BlY19sZW4gIT0gKmxwKSB7XFxuQEAgLTE0Nyw3ICsxNDQsNyBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0aWYgKChwdHIgXFx1MDAzZSBza2ItXFx1MDAzZWxlbiAtIG9wdGxlbiB8fCBoZHJsZW4gXFx1MDAzYyBvcHRsZW4pIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICB0ZW1wIFxcdTAwM2Mgb3B0aW5mby1cXHUwMDNlb3B0c25yIC0gMSkge1xcbiBcXHRcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwibmV3IHBvaW50ZXIgaXMgdG9vIGxhcmdlIVxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0cHRyICs9IG9wdGxlbjtcXG4gXFx0XFx0XFx0aGRybGVuIC09IG9wdGxlbjtcXG5AQCAtMTU5LDYgKzE1NiwxMCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbitcXG4raG90ZHJvcDpcXG4rXFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGhiaF9tdDZfY2hlY2soY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuY1xcbmluZGV4IGM1MmZmOTI5YzkzYjM2Li45MWEzNWU4M2IyN2Y0ZCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcXG5AQCAtMjgsNyArMjgsNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IGlwNnRfaXB2NmhlYWRlcl9pbmZvICppbmZvID0gcGFyLVxcdTAwM2VtYXRjaGluZm87XFxuIFxcdHVuc2lnbmVkIGludCB0ZW1wO1xcbi1cXHRpbnQgbGVuO1xcbiBcXHR1OCBuZXh0aGRyO1xcbiBcXHR1bnNpZ25lZCBpbnQgcHRyO1xcbiBcXG5AQCAtMzgsOCArMzcsNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdG5leHRoZHIgPSBpcHY2X2hkcihza2IpLVxcdTAwM2VuZXh0aGRyO1xcbiBcXHQvKiBwb2ludGVyIHRvIHRoZSAxc3QgZXh0aGRyICovXFxuIFxcdHB0ciA9IHNpemVvZihzdHJ1Y3QgaXB2Nmhkcik7XFxuLVxcdC8qIGF2YWlsYWJsZSBsZW5ndGggKi9cXG4tXFx0bGVuID0gc2tiLVxcdTAwM2VsZW4gLSBwdHI7XFxuIFxcdHRlbXAgPSAwO1xcbiBcXG4gXFx0d2hpbGUgKG5mX2lwNl9leHRfaGRyKG5leHRoZHIpKSB7XFxuQEAgLTUyLDkgKzQ5LDYgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbiBcXHRcXHRcXHR0ZW1wIHw9IE1BU0tfTk9ORTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4tXFx0XFx0LyogSXMgdGhlcmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV4dCBleHQgaGVhZGVyPyAqL1xcbi1cXHRcXHRpZiAobGVuIFxcdTAwM2MgKGludClzaXplb2Yoc3RydWN0IGlwdjZfb3B0X2hkcikpXFxuLVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0XFx0LyogRVNQIC1cXHUwMDNlIGV2YWx1YXRlICovXFxuIFxcdFxcdGlmIChuZXh0aGRyID09IE5FWFRIRFJfRVNQKSB7XFxuIFxcdFxcdFxcdHRlbXAgfD0gTUFTS19FU1A7XFxuQEAgLTk3LDEwICs5MSwxMSBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdG5leHRoZHIgPSBocC1cXHUwMDNlbmV4dGhkcjtcXG4tXFx0XFx0bGVuIC09IGhkcmxlbjtcXG4gXFx0XFx0cHRyICs9IGhkcmxlbjtcXG4tXFx0XFx0aWYgKHB0ciBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKVxcbi1cXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0aWYgKHB0ciBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKSB7XFxuK1xcdFxcdFxcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRpZiAobmV4dGhkciAhPSBORVhUSERSX05PTkUgXFx1MDAyNlxcdTAwMjYgbmV4dGhkciAhPSBORVhUSERSX0VTUClcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xcbmluZGV4IGRiMGZkNjRkODk4NjI3Li42ZmNjNDAxMDJmZTNkZiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXFxuQEAgLTI3LDIyICsyNywyNyBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XFxuIFxcdHN0cnVjdCBpcHY2X3NyX2hkciBfc3JoO1xcbiBcXHRpbnQgaGRybGVuLCBzcmhvZmYgPSAwO1xcbitcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKGlwdjZfZmluZF9oZHIoc2tiLCBcXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFxcdTAwM2MgMClcXG4rXFx0ZXJyID0gaXB2Nl9maW5kX2hkcihza2IsIFxcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XFxuK1xcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdGlmIChlcnIgIT0gLUVOT0VOVClcXG4rXFx0XFx0XFx0Z290byBob3Rkcm9wO1xcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4gXFx0c3JoID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgc3Job2ZmLCBzaXplb2YoX3NyaCksIFxcdTAwMjZfc3JoKTtcXG4gXFx0aWYgKCFzcmgpXFxuLVxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0Z290byBob3Rkcm9wO1xcbiBcXG4gXFx0aGRybGVuID0gaXB2Nl9vcHRsZW4oc3JoKTtcXG4gXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gc3Job2ZmIFxcdTAwM2MgaGRybGVuKVxcbi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFxuIFxcdGlmIChzcmgtXFx1MDAzZXR5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdGlmIChzcmgtXFx1MDAzZXNlZ21lbnRzX2xlZnQgXFx1MDAzZSBzcmgtXFx1MDAzZWZpcnN0X3NlZ21lbnQpXFxuLVxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0Z290byBob3Rkcm9wO1xcbiBcXG4gXFx0LyogTmV4dCBIZWFkZXIgbWF0Y2hpbmcgKi9cXG4gXFx0aWYgKHNyaGluZm8tXFx1MDAzZW10X2ZsYWdzIFxcdTAwMjYgSVA2VF9TUkhfTkVYVEhEUilcXG5AQCAtMTExLDYgKzExNiwxMCBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0XFx0IShzcmgtXFx1MDAzZXRhZyA9PSBzcmhpbmZvLVxcdTAwM2V0YWcpKSlcXG4gXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK2hvdGRyb3A6XFxuK1xcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbkBAIC0xMjEsMjIgKzEzMCwzMSBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdHN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkO1xcbiBcXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgKnNyaDtcXG4gXFx0c3RydWN0IGlwdjZfc3JfaGRyIF9zcmg7XFxuK1xcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoaXB2Nl9maW5kX2hkcihza2IsIFxcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCkgXFx1MDAzYyAwKVxcbitcXHRlcnIgPSBpcHY2X2ZpbmRfaGRyKHNrYiwgXFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTtcXG4rXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4rXFx0XFx0aWYgKGVyciAhPSAtRU5PRU5UKVxcbitcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiBcXHRzcmggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBzcmhvZmYsIHNpemVvZihfc3JoKSwgXFx1MDAyNl9zcmgpO1xcbiBcXHRpZiAoIXNyaClcXG4tXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcbiBcXHRoZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpO1xcbiBcXHRpZiAoc2tiLVxcdTAwM2VsZW4gLSBzcmhvZmYgXFx1MDAzYyBoZHJsZW4pXFxuLVxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0Z290byBob3Rkcm9wO1xcbiBcXG4gXFx0aWYgKHNyaC1cXHUwMDNldHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNClcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4rXFx0aWYgKHNpemVvZigqc3JoKSArXFxuK1xcdCAgICAoKHNyaC1cXHUwMDNlZmlyc3Rfc2VnbWVudCArIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIFxcdTAwM2UgaGRybGVuKVxcbitcXHRcXHRnb3RvIGhvdGRyb3A7XFxuK1xcbiBcXHRpZiAoc3JoLVxcdTAwM2VzZWdtZW50c19sZWZ0IFxcdTAwM2Ugc3JoLVxcdTAwM2VmaXJzdF9zZWdtZW50KVxcbi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFxuIFxcdC8qIE5leHQgSGVhZGVyIG1hdGNoaW5nICovXFxuIFxcdGlmIChzcmhpbmZvLVxcdTAwM2VtdF9mbGFncyBcXHUwMDI2IElQNlRfU1JIX05FWFRIRFIpXFxuQEAgLTIwNyw3ICsyMjUsNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdFxcdFxcdCAgKChzcmgtXFx1MDAzZXNlZ21lbnRzX2xlZnQgKyAxKSAqIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTtcXG4gXFx0XFx0cHNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHBzaWRvZmYsIHNpemVvZihfcHNpZCksIFxcdTAwMjZfcHNpZCk7XFxuIFxcdFxcdGlmICghcHNpZClcXG4tXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfUFNJRCxcXG4gXFx0XFx0XFx0XFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAocHNpZCwgXFx1MDAyNnNyaGluZm8tXFx1MDAzZXBzaWRfbXNrLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzcmhpbmZvLVxcdTAwM2Vwc2lkX2FkZHIpKSlcXG5AQCAtMjIyLDcgKzI0MCw3IEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0ICAoKHNyaC1cXHUwMDNlc2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xcbiBcXHRcXHRuc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgXFx1MDAyNl9uc2lkKTtcXG4gXFx0XFx0aWYgKCFuc2lkKVxcbi1cXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFx0XFx0aWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9OU0lELFxcbiBcXHRcXHRcXHRcXHRpcHY2X21hc2tlZF9hZGRyX2NtcChuc2lkLCBcXHUwMDI2c3JoaW5mby1cXHUwMDNlbnNpZF9tc2ssXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnNyaGluZm8tXFx1MDAzZW5zaWRfYWRkcikpKVxcbkBAIC0yMzQsMTMgKzI1MiwxNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdFxcdGxzaWRvZmYgPSBzcmhvZmYgKyBzaXplb2Yoc3RydWN0IGlwdjZfc3JfaGRyKTtcXG4gXFx0XFx0bHNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIGxzaWRvZmYsIHNpemVvZihfbHNpZCksIFxcdTAwMjZfbHNpZCk7XFxuIFxcdFxcdGlmICghbHNpZClcXG4tXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTFNJRCxcXG4gXFx0XFx0XFx0XFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobHNpZCwgXFx1MDAyNnNyaGluZm8tXFx1MDAzZWxzaWRfbXNrLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzcmhpbmZvLVxcdTAwM2Vsc2lkX2FkZHIpKSlcXG4gXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHR9XFxuIFxcdHJldHVybiB0cnVlO1xcbitcXG4raG90ZHJvcDpcXG4rXFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHNyaF9tdDZfY2hlY2soY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjAzOjU0LjA1NzU2MDQ0OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU3ODAxMDE2MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQNl9ORl9JUFRBQkxFU1wiLFxuICAgIFwiSVA2X05GX01BVENIX09QVFNcIixcbiAgICBcIklQNl9ORl9NQVRDSF9JUFY2SEVBREVSXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfU1JIXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYmhfbXQ2XCIsXG4gICAgXCJpcHY2aGVhZGVyX210NlwiLFxuICAgIFwic3JoX210NlwiLFxuICAgIFwic3JoMV9tdDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBleHRlbnNpb25zIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gZHJvcCBtYWxmb3JtZWQgcGFja2V0cyAoaG90ZHJvcCkgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHBhY2tldCBwcm9jZXNzaW5nIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIGlwNnRhYmxlcyBydWxlcyBhbmQgc2VuZGluZyBjcmFmdGVkIElQdjYgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWY0OGI0NGJhZGFhMjU2ZGMyMjk2YzQ5ZmI1MjliZTA2ZTlmNTA4YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDE2OjAzOjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuaW5kZXggNmQxYTVkMjAyNmE2NzguLjFiNWRjYzkyYjdkYTQ5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG5AQCAtNjIsMjEgKzYyLDE4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdCAgICBORVhUSERSX0hPUCA6IE5FWFRIRFJfREVTVCwgTlVMTCwgTlVMTCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4gXHRcdGlmIChlcnIgIT0gLUVOT0VOVClcbi1cdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4rXHRcdFx0Z290byBob3Rkcm9wO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4gXHRvaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciwgc2l6ZW9mKF9vcHRzaCksIFx1MDAyNl9vcHRzaCk7XG4tXHRpZiAob2ggPT0gTlVMTCkge1xuLVx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4tXHRcdHJldHVybiBmYWxzZTtcbi1cdH1cbitcdGlmICghb2gpXG4rXHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKG9oKTtcbiBcdGlmIChza2ItXHUwMDNlbGVuIC0gcHRyIFx1MDAzYyBoZHJsZW4pIHtcbiBcdFx0LyogUGFja2V0IHNtYWxsZXIgdGhhbiBpdCdzIGxlbmd0aCBmaWVsZCAqL1xuLVx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4tXHRcdHJldHVybiBmYWxzZTtcbitcdFx0Z290byBob3Rkcm9wO1xuIFx0fVxuIFxuIFx0cHJfZGVidWcoXCJJUHY2IE9QVFMgTEVOICV1ICV1IFwiLCBoZHJsZW4sIG9oLVx1MDAzZWhkcmxlbik7XG5AQCAtMTA0LDggKzEwMSw4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0dHAgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0dHlwZSksXG4gXHRcdFx0XHRcdFx0XHUwMDI2X29wdHR5cGUpO1xuLVx0XHRcdGlmICh0cCA9PSBOVUxMKVxuLVx0XHRcdFx0YnJlYWs7XG4rXHRcdFx0aWYgKCF0cClcbitcdFx0XHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdFx0XHQvKiBUeXBlIGNoZWNrICovXG4gXHRcdFx0aWYgKCp0cCAhPSAob3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweEZGMDApIFx1MDAzZVx1MDAzZSA4KSB7XG5AQCAtMTIxLDEyICsxMTgsMTIgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXG4gXHRcdFx0XHQvKiBsZW5ndGggZmllbGQgZXhpc3RzID8gKi9cbiBcdFx0XHRcdGlmIChoZHJsZW4gXHUwMDNjIDIpXG4tXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdFx0XHRscCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciArIDEsXG4gXHRcdFx0XHRcdFx0XHRzaXplb2YoX29wdGxlbiksXG4gXHRcdFx0XHRcdFx0XHRcdTAwMjZfb3B0bGVuKTtcbi1cdFx0XHRcdGlmIChscCA9PSBOVUxMKVxuLVx0XHRcdFx0XHRicmVhaztcbitcdFx0XHRcdGlmICghbHApXG4rXHRcdFx0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0XHRcdHNwZWNfbGVuID0gb3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweDAwRkY7XG4gXG4gXHRcdFx0XHRpZiAoc3BlY19sZW4gIT0gMHgwMEZGIFx1MDAyNlx1MDAyNiBzcGVjX2xlbiAhPSAqbHApIHtcbkBAIC0xNDcsNyArMTQ0LDcgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0aWYgKChwdHIgXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSBvcHRsZW4gfHwgaGRybGVuIFx1MDAzYyBvcHRsZW4pIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB0ZW1wIFx1MDAzYyBvcHRpbmZvLVx1MDAzZW9wdHNuciAtIDEpIHtcbiBcdFx0XHRcdHByX2RlYnVnKFwibmV3IHBvaW50ZXIgaXMgdG9vIGxhcmdlIVxcblwiKTtcbi1cdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0Z290byBob3Rkcm9wO1xuIFx0XHRcdH1cbiBcdFx0XHRwdHIgKz0gb3B0bGVuO1xuIFx0XHRcdGhkcmxlbiAtPSBvcHRsZW47XG5AQCAtMTU5LDYgKzE1NiwxMCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdH1cbiBcbiBcdHJldHVybiBmYWxzZTtcbitcbitob3Rkcm9wOlxuK1x0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbiBzdGF0aWMgaW50IGhiaF9tdDZfY2hlY2soY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXG5pbmRleCBjNTJmZjkyOWM5M2IzNi4uOTFhMzVlODNiMjdmNGQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuY1xuQEAgLTI4LDcgKzI4LDYgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBpcDZ0X2lwdjZoZWFkZXJfaW5mbyAqaW5mbyA9IHBhci1cdTAwM2VtYXRjaGluZm87XG4gXHR1bnNpZ25lZCBpbnQgdGVtcDtcbi1cdGludCBsZW47XG4gXHR1OCBuZXh0aGRyO1xuIFx0dW5zaWduZWQgaW50IHB0cjtcbiBcbkBAIC0zOCw4ICszNyw2IEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdG5leHRoZHIgPSBpcHY2X2hkcihza2IpLVx1MDAzZW5leHRoZHI7XG4gXHQvKiBwb2ludGVyIHRvIHRoZSAxc3QgZXh0aGRyICovXG4gXHRwdHIgPSBzaXplb2Yoc3RydWN0IGlwdjZoZHIpO1xuLVx0LyogYXZhaWxhYmxlIGxlbmd0aCAqL1xuLVx0bGVuID0gc2tiLVx1MDAzZWxlbiAtIHB0cjtcbiBcdHRlbXAgPSAwO1xuIFxuIFx0d2hpbGUgKG5mX2lwNl9leHRfaGRyKG5leHRoZHIpKSB7XG5AQCAtNTIsOSArNDksNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0dGVtcCB8PSBNQVNLX05PTkU7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbi1cdFx0LyogSXMgdGhlcmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV4dCBleHQgaGVhZGVyPyAqL1xuLVx0XHRpZiAobGVuIFx1MDAzYyAoaW50KXNpemVvZihzdHJ1Y3QgaXB2Nl9vcHRfaGRyKSlcbi1cdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdC8qIEVTUCAtXHUwMDNlIGV2YWx1YXRlICovXG4gXHRcdGlmIChuZXh0aGRyID09IE5FWFRIRFJfRVNQKSB7XG4gXHRcdFx0dGVtcCB8PSBNQVNLX0VTUDtcbkBAIC05NywxMCArOTEsMTEgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHR9XG4gXG4gXHRcdG5leHRoZHIgPSBocC1cdTAwM2VuZXh0aGRyO1xuLVx0XHRsZW4gLT0gaGRybGVuO1xuIFx0XHRwdHIgKz0gaGRybGVuO1xuLVx0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKVxuLVx0XHRcdGJyZWFrO1xuK1x0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKSB7XG4rXHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0aWYgKG5leHRoZHIgIT0gTkVYVEhEUl9OT05FIFx1MDAyNlx1MDAyNiBuZXh0aGRyICE9IE5FWFRIRFJfRVNQKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmNcbmluZGV4IGRiMGZkNjRkODk4NjI3Li42ZmNjNDAxMDJmZTNkZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xuQEAgLTI3LDIyICsyNywyNyBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdHN0cnVjdCBpcHY2X3NyX2hkciAqc3JoO1xuIFx0c3RydWN0IGlwdjZfc3JfaGRyIF9zcmg7XG4gXHRpbnQgaGRybGVuLCBzcmhvZmYgPSAwO1xuK1x0aW50IGVycjtcbiBcbi1cdGlmIChpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFx1MDAzYyAwKVxuK1x0ZXJyID0gaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTtcbitcdGlmIChlcnIgXHUwMDNjIDApIHtcbitcdFx0aWYgKGVyciAhPSAtRU5PRU5UKVxuK1x0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuIFx0c3JoID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgc3Job2ZmLCBzaXplb2YoX3NyaCksIFx1MDAyNl9zcmgpO1xuIFx0aWYgKCFzcmgpXG4tXHRcdHJldHVybiBmYWxzZTtcbitcdFx0Z290byBob3Rkcm9wO1xuIFxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4oc3JoKTtcbiBcdGlmIChza2ItXHUwMDNlbGVuIC0gc3Job2ZmIFx1MDAzYyBoZHJsZW4pXG4tXHRcdHJldHVybiBmYWxzZTtcbitcdFx0Z290byBob3Rkcm9wO1xuIFxuIFx0aWYgKHNyaC1cdTAwM2V0eXBlICE9IElQVjZfU1JDUlRfVFlQRV80KVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRpZiAoc3JoLVx1MDAzZXNlZ21lbnRzX2xlZnQgXHUwMDNlIHNyaC1cdTAwM2VmaXJzdF9zZWdtZW50KVxuLVx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdC8qIE5leHQgSGVhZGVyIG1hdGNoaW5nICovXG4gXHRpZiAoc3JoaW5mby1cdTAwM2VtdF9mbGFncyBcdTAwMjYgSVA2VF9TUkhfTkVYVEhEUilcbkBAIC0xMTEsNiArMTE2LDEwIEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdFx0IShzcmgtXHUwMDNldGFnID09IHNyaGluZm8tXHUwMDNldGFnKSkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0cmV0dXJuIHRydWU7XG4rXG4raG90ZHJvcDpcbitcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbitcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuQEAgLTEyMSwyMiArMTMwLDMxIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdHN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkO1xuIFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDtcbitcdGludCBlcnI7XG4gXG4tXHRpZiAoaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKSBcdTAwM2MgMClcbitcdGVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCBcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XG4rXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4rXHRcdGlmIChlcnIgIT0gLUVOT0VOVClcbitcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiBcdHNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCBcdTAwMjZfc3JoKTtcbiBcdGlmICghc3JoKVxuLVx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKHNyaCk7XG4gXHRpZiAoc2tiLVx1MDAzZWxlbiAtIHNyaG9mZiBcdTAwM2MgaGRybGVuKVxuLVx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGlmIChzcmgtXHUwMDNldHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuK1x0aWYgKHNpemVvZigqc3JoKSArXG4rXHQgICAgKChzcmgtXHUwMDNlZmlyc3Rfc2VnbWVudCArIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIFx1MDAzZSBoZHJsZW4pXG4rXHRcdGdvdG8gaG90ZHJvcDtcbitcbiBcdGlmIChzcmgtXHUwMDNlc2VnbWVudHNfbGVmdCBcdTAwM2Ugc3JoLVx1MDAzZWZpcnN0X3NlZ21lbnQpXG4tXHRcdHJldHVybiBmYWxzZTtcbitcdFx0Z290byBob3Rkcm9wO1xuIFxuIFx0LyogTmV4dCBIZWFkZXIgbWF0Y2hpbmcgKi9cbiBcdGlmIChzcmhpbmZvLVx1MDAzZW10X2ZsYWdzIFx1MDAyNiBJUDZUX1NSSF9ORVhUSERSKVxuQEAgLTIwNyw3ICsyMjUsNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0ICAoKHNyaC1cdTAwM2VzZWdtZW50c19sZWZ0ICsgMSkgKiBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7XG4gXHRcdHBzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwc2lkb2ZmLCBzaXplb2YoX3BzaWQpLCBcdTAwMjZfcHNpZCk7XG4gXHRcdGlmICghcHNpZClcbi1cdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdFx0Z290byBob3Rkcm9wO1xuIFx0XHRpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX1BTSUQsXG4gXHRcdFx0XHRpcHY2X21hc2tlZF9hZGRyX2NtcChwc2lkLCBcdTAwMjZzcmhpbmZvLVx1MDAzZXBzaWRfbXNrLFxuIFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c3JoaW5mby1cdTAwM2Vwc2lkX2FkZHIpKSlcbkBAIC0yMjIsNyArMjQwLDcgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdCAgKChzcmgtXHUwMDNlc2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xuIFx0XHRuc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgXHUwMDI2X25zaWQpO1xuIFx0XHRpZiAoIW5zaWQpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0aWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9OU0lELFxuIFx0XHRcdFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobnNpZCwgXHUwMDI2c3JoaW5mby1cdTAwM2Vuc2lkX21zayxcbiBcdFx0XHRcdFx0XHQgICAgIFx1MDAyNnNyaGluZm8tXHUwMDNlbnNpZF9hZGRyKSkpXG5AQCAtMjM0LDEzICsyNTIsMTcgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRsc2lkb2ZmID0gc3Job2ZmICsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7XG4gXHRcdGxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCBcdTAwMjZfbHNpZCk7XG4gXHRcdGlmICghbHNpZClcbi1cdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdFx0Z290byBob3Rkcm9wO1xuIFx0XHRpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX0xTSUQsXG4gXHRcdFx0XHRpcHY2X21hc2tlZF9hZGRyX2NtcChsc2lkLCBcdTAwMjZzcmhpbmZvLVx1MDAzZWxzaWRfbXNrLFxuIFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c3JoaW5mby1cdTAwM2Vsc2lkX2FkZHIpKSlcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXHRyZXR1cm4gdHJ1ZTtcbitcbitob3Rkcm9wOlxuK1x0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbiBzdGF0aWMgaW50IHNyaF9tdDZfY2hlY2soY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNjowMzo1NC4wNTc1NjI0ODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDg3NzMxNDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIElQdjYgTWF0Y2ggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgYWx0ZXJzIHNvbWUgSVB2NiBOZXRmaWx0ZXIgbWF0Y2ggbW9kdWxlcy4gU3BlY2lmaWNhbGx5LCB3ZSd2ZSBnb3QgY2hhbmdlcyBpbiBgaXA2dF9oYmguY2AsIGBpcDZ0X2lwdjZoZWFkZXIuY2AsIGFuZCBgaXA2dF9zcmguY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBgcGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO2AgaW4gYSBmZXcgc3BvdHMuIFRoZSBrZXkgaXMgdGhhdCB0aGlzIG1vZGlmaWNhdGlvbiBtYWtlcyB0aGUgY29kZSAqZHJvcCogbWFsZm9ybWVkIHBhY2tldHMsIHJhdGhlciB0aGFuIGp1c3QgcmV0dXJuaW5nIGBmYWxzZWAsIHdoaWNoIHdvdWxkIGNvbnRpbnVlIHJ1bGUgdHJhdmVyc2FsLiBUaGF0J3MgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggSSBuZWVkIHRvIHVuZGVyc3RhbmQgY29tcGxldGVseS5cblxuTGV0J3MgZHJpbGwgZG93bi4gVGhlIGFsdGVyZWQgZnVuY3Rpb25zIGFyZTogYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBhbmQgYHNyaF9tdDZgIGFuZCBgc3JoMV9tdDZgLiBJbW1lZGlhdGVseSwgSSByZWNvZ25pemUgdGhlc2UgYXMgTmV0ZmlsdGVyIG1hdGNoIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIElQdjYgY29udGV4dC4gVGhleSdyZSBkZWZpbml0ZWx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2Ug4oCTIHNvbWVvbmUgY2FuIHdyaXRlIGFuIGBpcDZ0YWJsZXNgIHJ1bGUgYW5kIGNyYWZ0IGEgcGFja2V0IHRvIHRyaWdnZXIgdGhlc2Ugcm91dGluZXMuIEkga25vdyB0aGF0IGJlY2F1c2UgaXQncyB0aGUgbmF0dXJlIG9mIE5ldGZpbHRlci4gVGhlIHBhdGNoIGlzbid0IGp1c3QgY29zbWV0aWM7IGl0J3MgYSByZWFsIHNoaWZ0IGluIHBhY2tldCBwcm9jZXNzaW5nLCBhcyBtZW50aW9uZWQgYmVmb3JlOiBmcm9tIFwiY29udGludWUgcHJvY2Vzc2luZ1wiIHRvIFwiZHJvcCBpbW1lZGlhdGVseVwiLlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gV2hhdCBLY29uZmlnIG9wdGlvbiBlbmFibGVzIHRoZXNlIG1vZHVsZXM/IEZvciBgaXA2dF9oYmguY2AsIGlzIGl0IGBDT05GSUdfSVA2X05GX01BVENIX0hCSGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgZGV0YWlsZWQgaW4gdGhlIGBNYWtlZmlsZWAgb3IgYEtjb25maWdgIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9pcHY2L25ldGZpbHRlcmAgZGlyZWN0b3J5LiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGVzZSB0byB1bmRlcnN0YW5kIGhvdyB3aWRlbHkgdGhpcyBwYXRjaCB3aWxsIGltcGFjdCBkZXBsb3llZCBzeXN0ZW1zLiBUaGF0J3MgbXkgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTA2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MDAuMTQ1Mjk2NTAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTg1Nzg3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcDZ0X2hiaC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9MzY9b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgKz0gaXA2dF9taC5vXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfT1BUUykgKz0gaXA2dF9oYmgub1xcbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfSVA2X05GX01BVENIX1JQRklMVEVSKSArPSBpcDZ0X3JwZmlsdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MDAuMzA1MTU4ODU1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk4MTc4MDE3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgTW9kdWxlIERlcGVuZGVuY3kgQ2xhcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBDT05GSUdfSVA2X05GX01BVENIX09QVFNgLCBhbmQgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gZGlyZWN0bHkgdGllcyBpbnRvIHRoZSBgaXA2dF9oYmgub2Agb2JqZWN0IGZpbGUuIEluIGVzc2VuY2UsIHNldHRpbmcgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiBsaWtlbHkgaW5jbHVkZXMsIGVuYWJsZXMsIG9yIHByb3ZpZGVzIHRoZSBuZWNlc3Nhcnkgc3VwcG9ydCBmb3IgdGhlIFwiaG9wLWJ5LWhvcFwiIGV4dGVuc2lvbiBoZWFkZXIgbWF0Y2hpbmcgbW9kdWxlIGluIHRoZSBJUHY2IG5ldGZpbHRlciBmcmFtZXdvcmsuIEl0J3MgYSBmdW5kYW1lbnRhbCBsaW5rLiBUaGlzIG1lYW5zIGl0J3MgY3JpdGljYWwgdG8gZW5zdXJlIHRoYXQgaWYgYSB1c2UgY2FzZSByZWxpZXMgb24gbWF0Y2hpbmcgb24gSVB2NiBob3AtYnktaG9wIGhlYWRlcnMsIHRoZW4gdGhpcyBjb25maWcgb3B0aW9uIG5lZWRzIHRvIGJlIGVuYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIHRoaXMgZGVwZW5kZW5jeSB3aGVuIEknbSBsb29raW5nIGF0IHBvdGVudGlhbCBJUHY2IGZpcmV3YWxsIHJ1bGUgb3B0aW1pemF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk3NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjAzLjI4Nzk4NTE1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjMwOTgyNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXA2dF9pcHY2aGVhZGVyLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfSVA2X05GX01BVENIX0ZSQUcpICs9IGlwNnRfZnJhZy5vXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUikgKz0gaXA2dF9pcHY2aGVhZGVyLm9cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtb2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgKz0gaXA2dF9taC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjAzLjQ1MTA4OTM0N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDUxMjUxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIE1vZHVsZSBEZXBlbmRlbmN5IEFuYWx5c2lzOiBJUHY2IEhlYWRlciBNYXRjaGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIHRoaXMgZW5hYmxlcyB0aGUgYGlwNnRfaXB2NmhlYWRlci5vYCBtb2R1bGUuXCIgSXQncyBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgZGVwZW5kZW5jeSwgbm90IHBhcnRpY3VsYXJseSBjb21wbGV4LiBUaGlzIGluZGljYXRlcyB0aGF0IHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gbGlrZWx5IGNvbnRyb2xzIHRoZSBjb21waWxhdGlvbiBhbmQgaW5jbHVzaW9uIG9mIHRoZSBJUHY2IGhlYWRlciBtYXRjaGluZyBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgb3ZlcmFsbCBJUHY2IG5ldGZpbHRlciBmcmFtZXdvcmsuIFNlZW1zIGxpa2Ugc3RhbmRhcmQga2VybmVsIG1vZHVsZSBsb2dpYyBhdCBwbGF5LiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBpZiB0aGVyZSBhcmUgbnVhbmNlcywgYnV0IG9uIHRoZSBzdXJmYWNlLCBpdCdzIGp1c3QgYWJvdXQgZW5hYmxpbmcgdGhlIG1vZHVsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHRha2UgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGludG8gY29uc2lkZXJhdGlvbiAtIGFuZCBpdCdzIGRlcGVuZGVuY3kgb24gb3RoZXIgdW5kZXJseWluZyBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM0MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjA2LjM5NjIxNzMxMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk2NzE5MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXA2dF9zcmgub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlPTM5PW9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfUlQpICs9IGlwNnRfcnQub1xcbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfSVA2X05GX01BVENIX1NSSCkgKz0gaXA2dF9zcmgub1xcbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZS00MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MDYuNTA1ODk2OTM1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1ODg2MTU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYENPTkZJR19JUDZfTkZfTUFUQ0hfU1JIYCBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIGBDT05GSUdfSVA2X05GX01BVENIX1NSSGAg4oCTIHRoYXQgY2xlYXJseSBwb2ludHMgdG8gdGhlIGBpcDZ0X3NyaC5vYCBtb2R1bGUuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IGJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBpdHNlbGYsIEkgYWx3YXlzIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUsIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IHN1YnRsZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXM/IFNvLCBsZXQncyBwdWxsIHVwIHRoZSBgS2NvbmZpZ2AgZmlsZXMgYW5kIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGZvciB0aGlzIGxpdHRsZSBtb2R1bGUuIEdvdHRhIG1ha2Ugc3VyZSBJIGZ1bGx5IHVuZGVyc3RhbmQgd2hlcmUgaXQgZml0cyBpbiBiZWZvcmUgSSBnbyB0b28gZGVlcC4gVGhhdCdsbCBzYXZlIG1lIHNvbWUgaGVhZGFjaGVzIGxhdGVyLiBUaW1lIHRvIGdldCB0aGF0IGBLY29uZmlnYCBvcGVuZWQgdXAuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY4OCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjA5Ljc2NDc2MTAxMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNDMyNTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz0xMTQ9Y29uZmlnIElQNl9ORl9NQVRDSF9GUkFHXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBJUDZfTkZfTUFUQ0hfT1BUU1xcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZSAnXFxcImhiaFxcXCIgaG9wLWJ5LWhvcCBhbmQgXFxcImRzdFxcXCIgb3B0cyBoZWFkZXIgbWF0Y2ggc3VwcG9ydCdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MDkuODc4MjAyNzA1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2OTk5OTM5NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIENvbnRleHQqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBmb2N1cyBpcyBhcm91bmQgbGluZSAxMjMgb2YgdGhlIEtjb25maWcgZmlsZS4gSSdtIGltbWVkaWF0ZWx5IGhvbWluZyBpbiBvbiB0aGF0IGFyZWEgYmVjYXVzZSBzb21ldGhpbmcgdGhlcmUgaXMgcmVsZXZhbnQgdG8gdGhlIGlzc3VlIGF0IGhhbmQuIEl0J3MgZWl0aGVyIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gZGVmaW5pdGlvbiwgYW4gaW5jbHVzaW9uIHN0YXRlbWVudCB0aGF0IG1pZ2h0IHB1bGwgaW4gcmVsYXRlZCBjb25maWd1cmF0aW9uLCBvciBwZXJoYXBzIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgYWZmZWN0cyB0aGUgc2VsZWN0aW9uIG9mIGNlcnRhaW4gZmVhdHVyZXMuIEknbSBnb2luZyB0byBzdGFydCBieSBxdWlja2x5IHNjYW5uaW5nIHRoYXQgc2VjdGlvbiBmb3IgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MsIGRlcGVuZGVuY2llcyBJJ20gbm90IGV4cGVjdGluZywgb3IgYW55dGhpbmcgdGhhdCBqdW1wcyBvdXQgYXMgdW51c3VhbC4gTXkgZ29hbCBpcyB0byBxdWlja2x5IG9yaWVudCBteXNlbGYgd2l0aGluIHRoYXQgc3BlY2lmaWMgcGFydCBvZiB0aGUgY29uZmlndXJhdGlvbiB0cmVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDgzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MTIuNTc4MTk5NDYxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTA6XFx0XFx0ICBmcm9tIHRoZSBNQUMgYWRkcmVzcykgYWRkcmVzc1xcbiAxMTE6XFx0XFxuIDExMjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMTM6XFx0XFxuIDExNDpcXHRjb25maWcgSVA2X05GX01BVENIX0ZSQUdcXG4gMTE1OlxcdFxcdHRyaXN0YXRlICdcXFwiZnJhZ1xcXCIgRnJhZ21lbnRhdGlvbiBoZWFkZXIgbWF0Y2ggc3VwcG9ydCdcXG4gMTE2OlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDExNzpcXHRcXHRoZWxwXFxuIDExODpcXHRcXHQgIGZyYWcgbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIG9uIHRoZSBmcmFnbWVudGF0aW9uXFxuIDExOTpcXHRcXHQgIGhlYWRlciBvZiB0aGUgcGFja2V0LlxcbiAxMjA6XFx0XFxuIDEyMTpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMjI6XFx0XFxuIDEyMzpcXHRjb25maWcgSVA2X05GX01BVENIX09QVFNcXG4gMTI0OlxcdFxcdHRyaXN0YXRlICdcXFwiaGJoXFxcIiBob3AtYnktaG9wIGFuZCBcXFwiZHN0XFxcIiBvcHRzIGhlYWRlciBtYXRjaCBzdXBwb3J0J1xcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcXG4gMTI2OlxcdFxcdGhlbHBcXG4gMTI3OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIG1hdGNoIHBhY2tldHMgYmFzZWQgb24gdGhlIGhvcC1ieS1ob3BcXG4gMTI4OlxcdFxcdCAgYW5kIGRlc3RpbmF0aW9uIG9wdGlvbnMgaGVhZGVycyBvZiBhIHBhY2tldC5cXG4gMTI5OlxcdFxcbiAxMzA6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTMxOlxcdFxcbiAxMzI6XFx0Y29uZmlnIElQNl9ORl9NQVRDSF9ITFxcbiAxMzM6XFx0XFx0dHJpc3RhdGUgJ1xcXCJobFxcXCIgaG9wbGltaXQgbWF0Y2ggc3VwcG9ydCdcXG4gMTM0OlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDEzNTpcXHRcXHRzZWxlY3QgTkVURklMVEVSX1hUX01BVENIX0hMXFxuIDEzNjpcXHRcXHRoZWxwXFxuIDEzNzpcXHRcXHQgIFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0IG9wdGlvbiBmb3IgdGhlIHVzZXIncyBjb252ZW5pZW5jZVxcbiAxMzg6XFx0XFx0ICAoZS5nLiB3aGVuIHJ1bm5pbmcgb2xkY29uZmlnKS4gSXQgc2VsZWN0c1xcbiAxMzk6XFx0XFx0ICBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hMLlxcbiAxNDA6XFx0XFxuIDE0MTpcXHRjb25maWcgSVA2X05GX01BVENIX0lQVjZIRUFERVJcXG4gMTQyOlxcdFxcdHRyaXN0YXRlICdcXFwiaXB2NmhlYWRlclxcXCIgSVB2NiBFeHRlbnNpb24gSGVhZGVycyBNYXRjaCdcXG4gMTQzOlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiAxNDQ6XFx0XFx0aGVscFxcbiAxNDU6XFx0XFx0ICBUaGlzIG1vZHVsZSBhbGxvd3Mgb25lIHRvIG1hdGNoIHBhY2tldHMgYmFzZWQgdXBvblxcbiAxNDY6XFx0XFx0ICB0aGUgaXB2NiBleHRlbnNpb24gaGVhZGVycy5cXG4gMTQ3OlxcdFxcbiAxNDg6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTQ5OlxcdFxcbiAxNTA6XFx0Y29uZmlnIElQNl9ORl9NQVRDSF9NSFxcbiAxNTE6XFx0XFx0dHJpc3RhdGUgJ1xcXCJtaFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4gMTUyOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDE1MzpcXHRcXHRoZWxwXFxuIDE1NDpcXHRcXHQgIFRoaXMgbW9kdWxlIGFsbG93cyBvbmUgdG8gbWF0Y2ggTUggcGFja2V0cy5cXG4gMTU1OlxcdFxcbiAxNTY6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTU3OlxcdFxcbiAxNTg6XFx0Y29uZmlnIElQNl9ORl9NQVRDSF9SUEZJTFRFUlxcbiAxNTk6XFx0XFx0dHJpc3RhdGUgJ1xcXCJycGZpbHRlclxcXCIgcmV2ZXJzZSBwYXRoIGZpbHRlciBtYXRjaCBzdXBwb3J0J1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNjowNDoxMi41NzgzODA4NjFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyNTI2MzYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIEknbSBwcm9jZXNzaW5nIHRoZSBpbmZvcm1hdGlvbjpcblxuKipUaGlua2luZyBBYm91dCBJUHY2IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgTWF0Y2hpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYElQNl9ORl9NQVRDSF9TUkhgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBteSBpbnRlcmVzdC4gVGhlIHNwZWNpZmljIGZvY3VzIGhlcmUgaXMgb24gaG93IHdlJ3JlIG1hdGNoaW5nIHRoZSBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIChTUkgpIHdpdGhpbiBJUHY2IHBhY2tldHMuIFRoZSBudWFuY2UgSSdtIHJlYWxseSBsb29raW5nIGZvciBpcyBob3cgdGhlIG5ldGZpbHRlciBmcmFtZXdvcmsgaXMgaGFuZGxpbmcgdGhpcy4gU3BlY2lmaWNhbGx5OiBhcmUgd2UgdGFsa2luZyBhYm91dCBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIGhlcmUsIG9yIGp1c3QgYmFzaWMgY2hlY2tpbmc/IEFyZSB3ZSBkaXZpbmcgaW50byB0aGUgdmFyaW91cyBTUkggb3B0aW9ucywgbGlrZSB0aGUgc2VnbWVudHMgdGhlbXNlbHZlcywgdGhlIHR5cGUsIHRoZSBsZW5ndGgsIG9yIGp1c3QgdGhlIHByZXNlbmNlIG9mIHRoZSBleHRlbnNpb24gaGVhZGVyPyBJJ20gaG9waW5nIGZvciBhIHJvYnVzdCwgZWZmaWNpZW50IG1hdGNoaW5nIG1lY2hhbmlzbSB0aGF0IGNhbiBoYW5kbGUgdmFyaW91cyBTUkggY29uZmlndXJhdGlvbnMuIElkZWFsbHksIGl0IGF2b2lkcyB1bm5lY2Vzc2FyeSBwYWNrZXQgcGFyc2luZyBvciBzdGF0ZWZ1bCBsb29rdXBzIHVubGVzcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgaW50ZWdyYXRpbmcgdGhpcyB3aXRoIG90aGVyIG5ldGZpbHRlciBtb2R1bGVzLCBmb3IgZXhhbXBsZSBOQVQgb3IgY29ubnRyYWNrPyBUaGlua2luZyBhYm91dCB0aGUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIGlzIHZpdGFsLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGhpZ2gtYmFuZHdpZHRoIFNSIGRlcGxveW1lbnRzLiBJZiB0aGVyZSdzIGFuIGlzc3VlIGhlcmUsIEkgd2FudCB0byBjb25zaWRlciBob3cgdGhlIG1hdGNoIG1vZHVsZSBwbGF5cyB3aXRoIG90aGVyIE5GIHJ1bGVzIGluIHRlcm1zIG9mIG92ZXJhbGwgcGVyZm9ybWFuY2UsIHNjYWxhYmlsaXR5IGFuZCBzZWN1cml0eS4gV2UgbmVlZCB0byBiZSBhYmxlIHRvIGVuc3VyZSB0aGlzIG1vZHVsZSBpcyByb2NrIHNvbGlkLCBhbmQgdGhhdCB0aGUgbWF0Y2hpbmcgcHJvY2VzcyBpc24ndCBvcGVuaW5nIHZ1bG5lcmFiaWxpdGllcyB0aGF0IHdvdWxkIGFsbG93IGZvciBhbiBlYXN5IGV2YXNpb24gb2Ygc2VjdXJpdHkgcG9saWNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNDYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjE2LjEwMzY0NzA4M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NDMwNTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUDZfTkZfTUFUQ0hfU1JIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnPTE2OT1jb25maWcgSVA2X05GX01BVENIX1JUXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNzctXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTc4OmNvbmZpZyBJUDZfTkZfTUFUQ0hfU1JIXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTc5LVxcdHRyaXN0YXRlICdcXFwic3JoXFxcIiBTZWdtZW50IFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjE2LjIzMDA4MjQ0N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzA2MTQ3MjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkgdG8gc3VtbWFyaXplIHRoZSB0ZXh0IGFzIG15IG93biB0aG91Z2h0cywgYXNzdW1pbmcgdGhlIHJvbGUgb2YgYW4gZXhwZXJ0IGluIG15IGZpZWxkLiBIZXJlJ3MgbXkgdGFrZTpcblxuKipBbmFseXppbmcgdGhlIE5ldyBJbmZvcm1hdGlvbioqXG5cbk9rYXksIEknbSByZWFkeS4gTGV0J3MgZGlnIGludG8gdGhpcyBuZXcgdGV4dC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkxldCdzIHJlYWQgdGhhdCB0b28uXCIgSW1tZWRpYXRlbHksIG15IGJyYWluIHN0YXJ0cyB0byBjbGFzc2lmeSB0aGUgaW5mb3JtYXRpb24sIGxvb2tpbmcgZm9yIHBhdHRlcm5zLCBjb250ZXh0LCBvciBjb25uZWN0aW9ucyB0byBteSBwcmUtZXhpc3Rpbmcga25vd2xlZGdlLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYXJlYXMgd2hlcmUgdGhpcyBtaWdodCBjb250cmlidXRlIHRvIG15IGV4cGVydGlzZSwgb3IgcG9zc2libHkgY2hhbGxlbmdlIGV4aXN0aW5nIGFzc3VtcHRpb25zLiBJJ20ga2VlbiB0byBldmFsdWF0ZSB0aGUgbm92ZWx0eSBhbmQgc2lnbmlmaWNhbmNlIG9mIGFueSBuZXcgY29uY2VwdHMgb3IgYXJndW1lbnRzIHByZXNlbnRlZC4gVGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIGdvIGluIHdpdGggYW4gb3BlbiBtaW5kLCBlYWdlciB0byBsZWFybiFcblxuXG4iLCJJbnB1dFRva2VucyI6ODUwMiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MTguOTM2MjMyMzUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzA6XFx0XFx0dHJpc3RhdGUgJ1xcXCJydFxcXCIgUm91dGluZyBoZWFkZXIgbWF0Y2ggc3VwcG9ydCdcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDE3MjpcXHRcXHRoZWxwXFxuIDE3MzpcXHRcXHQgIHJ0IG1hdGNoaW5nIGFsbG93cyB5b3UgdG8gbWF0Y2ggcGFja2V0cyBiYXNlZCBvbiB0aGUgcm91dGluZ1xcbiAxNzQ6XFx0XFx0ICBoZWFkZXIgb2YgdGhlIHBhY2tldC5cXG4gMTc1OlxcdFxcbiAxNzY6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTc3OlxcdFxcbiAxNzg6XFx0Y29uZmlnIElQNl9ORl9NQVRDSF9TUkhcXG4gMTc5OlxcdFxcdHRyaXN0YXRlICdcXFwic3JoXFxcIiBTZWdtZW50IFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQnXFxuIDE4MDpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAxODE6XFx0XFx0aGVscFxcbiAxODI6XFx0XFx0ICBzcmggbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIG9uIHRoZSBzZWdtZW50XFxuIDE4MzpcXHRcXHQgIHJvdXRpbmcgaGVhZGVyIG9mIHRoZSBwYWNrZXQuXFxuIDE4NDpcXHRcXG4gMTg1OlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE4NjpcXHRcXG4gMTg3OlxcdCMgVGhlIHRhcmdldHNcXG4gMTg4OlxcdGNvbmZpZyBJUDZfTkZfVEFSR0VUX0hMXFxuIDE4OTpcXHRcXHR0cmlzdGF0ZSAnXFxcIkhMXFxcIiBob3BsaW1pdCB0YXJnZXQgc3VwcG9ydCdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MTguOTM2NDA1MTAzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NTIwMDU4MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIElQdjYgTmV0ZmlsdGVyIE1hdGNoIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgSVA2X05GX01BVENIX09QVFNgLCBgSVA2X05GX01BVENIX0lQVjZIRUFERVJgLCBhbmQgYElQNl9ORl9NQVRDSF9TUkhgLiBUaGV5IGFsbCBzZWVtIHRvIHJlbHkgb24gYE5FVEZJTFRFUl9BRFZBTkNFRGAsIGJ1dCBpdCdzIHByb2JhYmx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgc28gbWF5YmUgSSBkb24ndCAqcmVhbGx5KiBuZWVkIHRvIGxpc3QgaXQgZXhwbGljaXRseS4gSXQgbWlnaHQgYmUgcmVkdW5kYW50LCBidXQgbGV0J3MgbGlzdCBpdCBhbnl3YXksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgYWxzbyBhZGQgYElQNl9ORl9JUFRBQkxFU2AgYXMgaXQncyB0aGUgcGFyZW50IG1vZHVsZSwganVzdCB0byBoYXZlIGEgY29tcGxldGUgcGljdHVyZS5cblxuVGhlIGltcG9ydGFudCBmdW5jdGlvbnMgaGVyZSBhcmUgYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBgc3JoX210NmAsIGFuZCBgc3JoMV9tdDZgLiBUaGVzZSBhcmUgbmV0ZmlsdGVyIG1hdGNoIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHkgZm9yIElQdjYuIEkgc2VlIHRoYXQgdGhlIGNoYW5nZXMgYXJlIG1vcmUgdGhhbiBqdXN0IHJldHVybmluZyBhIFwiZmFsc2VcIiByZXN1bHQ7IHRoZXkncmUgYWN0dWFsbHkgZHJvcHBpbmcgbWFsZm9ybWVkIHBhY2tldHMgbm93LiBUaGF0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aGljaCBtYWtlcyB0aGVtIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcgdG8gY2hlY2sgZm9yIHZ1bG5lcmFiaWxpdGllcy5cblxuU28sIGp1c3QgdG8gYmUgY3J5c3RhbCBjbGVhciwgaGVyZSdzIG15IGNvbmZpZ3VyYXRpb24gbGlzdCBhZ2FpbjpcblxuKiAgIGBJUDZfTkZfTUFUQ0hfT1BUU2BcbiogICBgSVA2X05GX01BVENIX0lQVjZIRUFERVJgXG4qICAgYElQNl9ORl9NQVRDSF9TUkhgXG4qICAgYElQNl9ORl9JUFRBQkxFU2BcblxuQW5kIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gZHVyaW5nIHJldmlldzpcblxuKiAgIGBoYmhfbXQ2YFxuKiAgIGBpcHY2aGVhZGVyX210NmBcbiogICBgc3JoX210NmBcbiogICBgc3JoMV9tdDZgXG5cbkp1c3QgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciBtb2RpZmllZCBmdW5jdGlvbnMgdGhhdCBJIG1pZ2h0IGhhdmUgbWlzc2VkLiBHb3R0YSBiZSBtZXRpY3Vsb3VzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTk4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MjQuMzg4NDE0MzAyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODcwNzM0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBib29sLipfbXQ2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYz0yNT1zcGlfbWF0Y2godV9pbnQzMl90IG1pbiwgdV9pbnQzMl90IG1heCwgdV9pbnQzMl90IHNwaSwgYm9vbCBpbnZlcnQpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jLTM1LVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmM6MzY6c3RhdGljIGJvb2wgYWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jLTM3LXtcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X21oLmM9MjY9dHlwZV9tYXRjaCh1X2ludDhfdCBtaW4sIHVfaW50OF90IG1heCwgdV9pbnQ4X3QgdHlwZSwgYm9vbCBpbnZlcnQpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9taC5jLTMwLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X21oLmM6MzE6c3RhdGljIGJvb2wgbWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9taC5jLTMyLXtcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmM9MjY9c2Vnc2xlZnRfbWF0Y2godV9pbnQzMl90IG1pbiwgdV9pbnQzMl90IG1heCwgdV9pbnQzMl90IGlkLCBib29sIGludmVydClcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmMtMzAtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuYzozMTpzdGF0aWMgYm9vbCBydF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmMtMzIte1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMjMtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmM6MjQ6c3RhdGljIGJvb2wgc3JoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMjUte1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMTI0LVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jOjEyNTpzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMTI2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MjQuNTc1NDkzNjIyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDAyMjQyMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiB0aGlzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgaGJoX210NmAsIGBpcHY2aGVhZGVyX210NmAsIGBzcmhfbXQ2YCwgYW5kIGBzcmgxX210NmAuIFRoYXQncyBhIHJlYXNvbmFibGUgc2V0IG9mIGZ1bmN0aW9ucywgYWxsIHJlbGF0ZWQgdG8gSVB2NiBoZWFkZXIgcHJvY2Vzc2luZywgd2hpY2ggbWFrZXMgc2Vuc2UuIEhtbSwgYnV0IHdhaXQgYSBtaW51dGUuLi4gSSBkaWRuJ3Qgc2VlIGBoYmhfbXQ2YCBvciBgaXB2NmhlYWRlcl9tdDZgIGluIHRoYXQgYGdyZXBgIG91dHB1dC4gVGhhdCdzIGEgYml0IG9kZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IHRoZSBgZ3JlcGAgcmVnZXggbWlnaHQgbm90IGJlIHBlcmZlY3RseSBwcmVjaXNlLCBvciBwZXJoYXBzIHRob3NlIGZ1bmN0aW9ucyBhcmVuJ3QgZGVjbGFyZWQgYXMgYHN0YXRpYyBib29sYC4gVGhleSBjb3VsZCBiZSBkZWNsYXJlZCBkaWZmZXJlbnRseSwgd2hpY2ggd291bGQgbWVhbiB0aGV5IHNsaXBwZWQgcGFzdCB0aGUgc2VhcmNoLiBJIG5lZWQgdG8gdmVyaWZ5IHRoZWlyIHNpZ25hdHVyZXMgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdoYXQncyBnb2luZyBvbi4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBwcm90b3R5cGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDMzNiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjI4LjA3NTcyMDQ5NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4NjE5MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhiaF9tdDZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM9MjM9TU9EVUxFX0FMSUFTKFxcXCJpcDZ0X2RzdFxcXCIpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtNDAtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6NDE6c3RhdGljIHN0cnVjdCB4dF9tYXRjaCBoYmhfbXQ2X3JlZ1tdIF9fcmVhZF9tb3N0bHk7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtNDItXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM9NDM9c3RhdGljIGJvb2xcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzo0NDpoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy00NS17XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy02MC1cXHRlcnIgPSBpcHY2X2ZpbmRfaGRyKHNrYiwgXFx1MDAyNnB0cixcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzo2MTpcXHRcXHRcXHQgICAgKHBhci1cXHUwMDNlbWF0Y2ggPT0gXFx1MDAyNmhiaF9tdDZfcmVnWzBdKSA/XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtNjItXFx0XFx0XFx0ICAgIE5FWFRIRFJfSE9QIDogTkVYVEhEUl9ERVNULCBOVUxMLCBOVUxMKTtcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE2NC1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoxNjU6c3RhdGljIGludCBoYmhfbXQ2X2NoZWNrKGNvbnN0IHN0cnVjdCB4dF9tdGNoa19wYXJhbSAqcGFyKVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE2Ni17XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0xODUtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTg2OnN0YXRpYyBzdHJ1Y3QgeHRfbWF0Y2ggaGJoX210Nl9yZWdbXSBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE4Ny1cXHR7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTg4OlxcdFxcdC8qIE5vdGUsIGhiaF9tdDYgcmVsaWVzIG9uIHRoZSBvcmRlciBvZiBoYmhfbXQ2X3JlZyAqL1xcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE4OS1cXHRcXHQubmFtZVxcdFxcdD0gXFxcImhiaFxcXCIsXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTkwLVxcdFxcdC5mYW1pbHlcXHRcXHQ9IE5GUFJPVE9fSVBWNixcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoxOTE6XFx0XFx0Lm1hdGNoXFx0XFx0PSBoYmhfbXQ2LFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE5Mi1cXHRcXHQubWF0Y2hzaXplXFx0PSBzaXplb2Yoc3RydWN0IGlwNnRfb3B0cyksXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTkzOlxcdFxcdC5jaGVja2VudHJ5XFx0PSBoYmhfbXQ2X2NoZWNrLFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE5NC1cXHRcXHQubWVcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTk4LVxcdFxcdC5mYW1pbHlcXHRcXHQ9IE5GUFJPVE9fSVBWNixcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoxOTk6XFx0XFx0Lm1hdGNoXFx0XFx0PSBoYmhfbXQ2LFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTIwMC1cXHRcXHQubWF0Y2hzaXplXFx0PSBzaXplb2Yoc3RydWN0IGlwNnRfb3B0cyksXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjAxOlxcdFxcdC5jaGVja2VudHJ5XFx0PSBoYmhfbXQ2X2NoZWNrLFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTIwMi1cXHRcXHQubWVcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjA1LVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjIwNjpzdGF0aWMgaW50IF9faW5pdCBoYmhfbXQ2X2luaXQodm9pZClcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMDcte1xcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjIwODpcXHRyZXR1cm4geHRfcmVnaXN0ZXJfbWF0Y2hlcyhoYmhfbXQ2X3JlZywgQVJSQVlfU0laRShoYmhfbXQ2X3JlZykpO1xcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTIwOS19XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjEwLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjIxMTpzdGF0aWMgdm9pZCBfX2V4aXQgaGJoX210Nl9leGl0KHZvaWQpXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjEyLXtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoyMTM6XFx0eHRfdW5yZWdpc3Rlcl9tYXRjaGVzKGhiaF9tdDZfcmVnLCBBUlJBWV9TSVpFKGhiaF9tdDZfcmVnKSk7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjE0LX1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMTUtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjE2Om1vZHVsZV9pbml0KGhiaF9tdDZfaW5pdCk7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjE3Om1vZHVsZV9leGl0KGhiaF9tdDZfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjI4LjI1NDM0NjAyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzY4NzQxOTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIE1pc21hdGNoKipcblxuT2theSwgc28gdGhhdCBgc3RhdGljIGJvb2wgXFxuIGhiaF9tdDZgIGlzIHRoZSBjdWxwcml0LCBleHBsYWluaW5nIHRoZSBkaXNjcmVwYW5jeS4gTm93IEkgY2FuIHNlZSB0aGUgZm9jdXMgc3ltYm9scyB0aGF0IHdlcmUgaW52b2x2ZWQuXG5cbkl0IGxvb2tzIGxpa2Ugd2UncmUgd29ya2luZyB3aXRoIHRoZXNlIG1hdGNoaW5nIHN5bWJvbHM6IGBoYmhfbXQ2YCwgYGlwdjZoZWFkZXJfbXQ2YCwgYHNyaF9tdDZgLCBhbmQgYHNyaDFfbXQ2YC4gQW5kIHRob3NlIHN5bWJvbHMgbG9vayB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgSVA2X05GX01BVENIX09QVFNgLCBgSVA2X05GX01BVENIX0lQVjZIRUFERVJgLCBgSVA2X05GX01BVENIX1NSSGAsIGFuZCBgSVA2X05GX0lQVEFCTEVTYC5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYG5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnYCBhbmQgdmVyaWZ5IHdoZXRoZXIgdGhlIGBJUDZfTkZfSVBUQUJMRVNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQgYW5kIGhvdyBpdCdzIGRlZmluZWQgcmVsYXRpdmUgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5bWJvbHMuIEhvcGVmdWxseSwgdGhpcyB3aWxsIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTY0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjMyLjAyMzA5MDY0NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMzY2MjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUDZfTkZfSVBUQUJMRVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9Nj1tZW51IFxcXCJJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvblxcXCJcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTktIyBvbGQgc29ja29wdCBpbnRlcmZhY2UgYW5kIGV2YWwgbG9vcFxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjEwOmNvbmZpZyBJUDZfTkZfSVBUQUJMRVNfTEVHQUNZXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIkxlZ2FjeSBJUDYgdGFibGVzIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz03Mj1jb25maWcgTkZfTE9HX0lQVjZcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTc5LVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjgwOmNvbmZpZyBJUDZfTkZfSVBUQUJMRVNcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cXHR0cmlzdGF0ZSBcXFwiSVA2IHRhYmxlcyBzdXBwb3J0IChyZXF1aXJlZCBmb3IgZmlsdGVyaW5nKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MzIuMTc1NDY1MTc4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxOTMzMzQ3NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBJUHY2IGFuZCBBZHZhbmNlZCBOZXRmaWx0ZXIqKlxuXG5SaWdodCwgc28gSSdtIGNvbmZpZ3VyaW5nIHRoaXMga2VybmVsIGFuZCBpdCBsb29rcyBsaWtlIEkgYWJzb2x1dGVseSBuZWVkIGBJUDZfTkZfSVBUQUJMRVNgLiBObyBxdWVzdGlvbiBhYm91dCB0aGF0LiBCdXQgaG9sZCBvbiwgdGhlIGRvY3VtZW50YXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IGBJUDZfTkZfTUFUQ0hfT1BUU2AgaXMgZGVwZW5kZW50IG9uIGBORVRGSUxURVJfQURWQU5DRURgLiBDbGVhcmx5LCBJIG5lZWQgdG8gaW5jbHVkZSB0aGF0IGFzIHdlbGwuIE5vdywgYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgYSBib29sZWFuLCBzbyBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIG5ldGZpbHRlciBzdWJzeXN0ZW0sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIGl0IGFuZCBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMgb3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZmVhdHVyZXMuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nIHN1YnRsZSwgYXMgdXN1YWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTYwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MzUuMzY4ODAzMTA4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkwNjk0NTQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJfQURWQU5DRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNjowNDozNS40Nzc4ODMwNjJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY1MTU0MjMwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgZGV2ZWxvcG1lbnQsIGxpa2VseSB3b3JraW5nIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zOlxuXG4qKktjb25maWcgQ2hlY2twb2ludCoqXG5cbkhtbSwgdGhpbmtpbmcgYWJvdXQgdGhlIGN1cnJlbnQgaXNzdWXigKYgSSdtIGRyYXdpbmcgYSBibGFuayBvbiB0aGUgZXhhY3QgZmlsZSBJIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgcGFydGljdWxhciBvcHRpb24uIEl0J3MgYSBrZXJuZWwgY29uZmlndXJhdGlvbiB0aGluZywgc28gdGhlIGZpcnN0IHBsYWNlIHRoYXQgc3ByaW5ncyB0byBtaW5kLCBhbG1vc3QgcmVmbGV4aXZlbHksIGlzIGBuZXQvS2NvbmZpZ2AuIEl0J3MgYSBwcmV0dHkgY2VudHJhbCBsb2NhdGlvbiBmb3IgbmV0d29yay1yZWxhdGVkIHNldHRpbmdzIGFuZCBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoYXQgZmlsZSBhcyBteSBmaXJzdCBzdG9wLiBJdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjb25maXJtIG9yIHJ1bGUgaXQgb3V0IHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODQ4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNjowNDozOC4xMjk0MjgyODFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDY0Nzg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MjE4PWlmIE5FVEZJTFRFUlxcbm5ldC9LY29uZmlnLTIxOS1cXG5uZXQvS2NvbmZpZzoyMjA6Y29uZmlnIE5FVEZJTFRFUl9BRFZBTkNFRFxcbm5ldC9LY29uZmlnLTIyMS1cXHRib29sIFxcXCJBZHZhbmNlZCBuZXRmaWx0ZXIgY29uZmlndXJhdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MzguMzIwMDgwODExWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzE1OTQ1MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE5ldGZpbHRlciBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGJvb2xlYW4gYE5FVEZJTFRFUl9BRFZBTkNFRGAgYW5kIHRyeWluZyB0byBncmFzcCBpdHMgcmVsYXRpb25zaGlwIHRvIG90aGVyIGNvbmZpZ3VyYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBsaXN0IHRoZSByZWxhdGVkIGNvbmZpZ3MsIGp1c3QgdG8gZ2V0IGEgbGF5IG9mIHRoZSBsYW5kLiBJIHNlZTogYElQNl9ORl9JUFRBQkxFU2AsIGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGBJUDZfTkZfTUFUQ0hfU1JIYCwgYW5kIG9mIGNvdXJzZSwgdGhlIGBORVRGSUxURVJfQURWQU5DRURgIG9wdGlvbiBpdHNlbGYuXG5cbk5vdywgSSdtIGp1c3QgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2luZyB0byBtYWtlIHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgY2xlYXIuIGBJUDZfTkZfTUFUQ0hfT1BUU2AgaXMgZGVmaW5lZCBpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdgLCByaWdodD8gT2theSwgc28gdGhhdCdzIGl0cyBsb2NhdGlvbi4gTXkgbmV4dCB0aG91Z2h0IGlzIHdoZXRoZXIgaXQncyBjb25kaXRpb25hbGx5IGluY2x1ZGVkIHVuZGVyIGBJUDZfTkZfSVBUQUJMRVNgLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSB0byBjb25maXJtIHRoZSBkZXBlbmRlbmN5IHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwOTEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6NDIuNDkxNjc4Mzg4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODM4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgSVAgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudSBcXFwiSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb25cXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSVBWNiBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG4gICA4OlxcdFxcbiAgIDk6XFx0IyBvbGQgc29ja29wdCBpbnRlcmZhY2UgYW5kIGV2YWwgbG9vcFxcbiAgMTA6XFx0Y29uZmlnIElQNl9ORl9JUFRBQkxFU19MRUdBQ1lcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJMZWdhY3kgSVA2IHRhYmxlcyBzdXBwb3J0XFxcIlxcbiAgMTI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElQVjYgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSX1hUQUJMRVNfTEVHQUNZXFxuICAxMzpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9YVEFCTEVTXFxuICAxNDpcXHRcXHRkZWZhdWx0XFx0bSBpZiBORVRGSUxURVJfWFRBQkxFU19MRUdBQ1lcXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgaXA2dGFibGVzIGlzIGEgbGVnYWN5IHBhY2tldCBjbGFzc2lmaWVyLlxcbiAgMTc6XFx0XFx0ICBUaGlzIGlzIG5vdCBuZWVkZWQgaWYgeW91IGFyZSB1c2luZyBpcHRhYmxlcyBvdmVyIG5mdGFibGVzXFxuICAxODpcXHRcXHQgIChpcHRhYmxlcy1uZnQpLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgTkZfU09DS0VUX0lQVjZcXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJJUHY2IHNvY2tldCBsb29rdXAgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdGhlbHBcXG4gIDIzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgSVB2NiBzb2NrZXQgbG9va3VwIGluZnJhc3RydWN0dXJlLiBUaGlzXFxuICAyNDpcXHRcXHQgIGlzIHVzZWQgYnkgdGhlIHtpcDYsbmZ9dGFibGVzIHNvY2tldCBtYXRjaC5cXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIE5GX1RQUk9YWV9JUFY2XFxuICAyNzpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NiB0cHJveHkgc3VwcG9ydFxcXCJcXG4gIDI4OlxcdFxcbiAgMjk6XFx0aWYgTkZfVEFCTEVTXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBORl9UQUJMRVNfSVBWNlxcbiAgMzI6XFx0XFx0Ym9vbCBcXFwiSVB2NiBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgSVB2NiBzdXBwb3J0IGZvciBuZl90YWJsZXMuXFxuICAzNTpcXHRcXG4gIDM2OlxcdGlmIE5GX1RBQkxFU19JUFY2XFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBORlRfUkVKRUNUX0lQVjZcXG4gIDM5OlxcdFxcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNlxcbiAgNDA6XFx0XFx0ZGVmYXVsdCBORlRfUkVKRUNUXFxuICA0MTpcXHRcXHR0cmlzdGF0ZVxcbiAgNDI6XFx0XFxuICA0MzpcXHRjb25maWcgTkZUX0RVUF9JUFY2XFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NiBuZl90YWJsZXMgcGFja2V0IGR1cGxpY2F0aW9uIHN1cHBvcnRcXFwiXFxuICA0NTpcXHRcXHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLXFxuICA0NjpcXHRcXHRzZWxlY3QgTkZfRFVQX0lQVjZcXG4gIDQ3OlxcdFxcdGhlbHBcXG4gIDQ4OlxcdFxcdCAgVGhpcyBtb2R1bGUgZW5hYmxlcyBJUHY2IHBhY2tldCBkdXBsaWNhdGlvbiBzdXBwb3J0IGZvciBuZl90YWJsZXMuXFxuICA0OTpcXHRcXG4gIDUwOlxcdGNvbmZpZyBORlRfRklCX0lQVjZcXG4gIDUxOlxcdFxcdHRyaXN0YXRlIFxcXCJuZl90YWJsZXMgZmliIC8gaXB2NiByb3V0ZSBsb29rdXAgc3VwcG9ydFxcXCJcXG4gIDUyOlxcdFxcdHNlbGVjdCBORlRfRklCXFxuICA1MzpcXHRcXHRoZWxwXFxuICA1NDpcXHRcXHQgIFRoaXMgbW9kdWxlIGVuYWJsZXMgSVB2NiBGSUIgbG9va3VwcywgZS5nLiBmb3IgcmV2ZXJzZSBwYXRoIGZpbHRlcmluZy5cXG4gIDU1OlxcdFxcdCAgSXQgYWxzbyBhbGxvd3MgcXVlcnkgb2YgdGhlIEZJQiBmb3IgdGhlIHJvdXRlIHR5cGUsIGUuZy4gbG9jYWwsIHVuaWNhc3QsXFxuICA1NjpcXHRcXHQgIG11bHRpY2FzdCBvciBibGFja2hvbGUuXFxuICA1NzpcXHRcXG4gIDU4OlxcdGVuZGlmICMgTkZfVEFCTEVTX0lQVjZcXG4gIDU5OlxcdGVuZGlmICMgTkZfVEFCTEVTXFxuICA2MDpcXHRcXG4gIDYxOlxcdGNvbmZpZyBORl9EVVBfSVBWNlxcbiAgNjI6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBJUHY2IHBhY2tldCBkdXBsaWNhdGlvbiB0byBhbHRlcm5hdGUgZGVzdGluYXRpb25cXFwiXFxuICA2MzpcXHRcXHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLXFxuICA2NDpcXHRcXHRoZWxwXFxuICA2NTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIG5mX2R1cF9pcHY2IGNvcmUsIHdoaWNoIGR1cGxpY2F0ZXMgYW4gSVB2NlxcbiAgNjY6XFx0XFx0ICBwYWNrZXQgdG8gYmUgcmVyb3V0ZWQgdG8gYW5vdGhlciBkZXN0aW5hdGlvbi5cXG4gIDY3OlxcdFxcbiAgNjg6XFx0Y29uZmlnIE5GX1JFSkVDVF9JUFY2XFxuICA2OTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NiBwYWNrZXQgcmVqZWN0aW9uXFxcIlxcbiAgNzA6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuICA3MTpcXHRcXG4gIDcyOlxcdGNvbmZpZyBORl9MT0dfSVBWNlxcbiAgNzM6XFx0XFx0dHJpc3RhdGUgXFxcIklQdjYgcGFja2V0IGxvZ2dpbmdcXFwiXFxuICA3NDpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gIDc1OlxcdFxcdHNlbGVjdCBORl9MT0dfU1lTTE9HXFxuICA3NjpcXHRcXHRoZWxwXFxuICA3NzpcXHRcXHQgIFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0IG9wdGlvbiBmb3IgdGhlIHVzZXIncyBjb252ZW5pZW5jZVxcbiAgNzg6XFx0XFx0ICAoZS5nLiB3aGVuIHJ1bm5pbmcgb2xkY29uZmlnKS4gSXQgc2VsZWN0cyBDT05GSUdfTkZfTE9HX1NZU0xPRy5cXG4gIDc5OlxcdFxcbiAgODA6XFx0Y29uZmlnIElQNl9ORl9JUFRBQkxFU1xcbiAgODE6XFx0XFx0dHJpc3RhdGUgXFxcIklQNiB0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGZpbHRlcmluZylcXFwiXFxuICA4MjpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSVBWNlxcbiAgODM6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9YVEFCTEVTXFxuICA4NDpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gIDg1OlxcdFxcdGhlbHBcXG4gIDg2OlxcdFxcdCAgaXA2dGFibGVzIGlzIGEgZ2VuZXJhbCwgZXh0ZW5zaWJsZSBwYWNrZXQgaWRlbnRpZmljYXRpb24gZnJhbWV3b3JrLlxcbiAgODc6XFx0XFx0ICBDdXJyZW50bHkgb25seSB0aGUgcGFja2V0IGZpbHRlcmluZyBhbmQgcGFja2V0IG1hbmdsaW5nIHN1YnN5c3RlbVxcbiAgODg6XFx0XFx0ICBmb3IgSVB2NiB1c2UgdGhpcywgYnV0IGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgZ29pbmcgdG8gZm9sbG93LlxcbiAgODk6XFx0XFx0ICBTYXkgJ1knIG9yICdNJyBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBlaXRoZXIgb2YgdGhvc2UuXFxuICA5MDpcXHRcXG4gIDkxOlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICA5MjpcXHRcXG4gIDkzOlxcdGlmIElQNl9ORl9JUFRBQkxFU1xcbiAgOTQ6XFx0XFxuICA5NTpcXHQjIFRoZSBzaW1wbGUgbWF0Y2hlcy5cXG4gIDk2OlxcdGNvbmZpZyBJUDZfTkZfTUFUQ0hfQUhcXG4gIDk3OlxcdFxcdHRyaXN0YXRlICdcXFwiYWhcXFwiIG1hdGNoIHN1cHBvcnQnXFxuICA5ODpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAgOTk6XFx0XFx0aGVscFxcbiAxMDA6XFx0XFx0ICBUaGlzIG1vZHVsZSBhbGxvd3Mgb25lIHRvIG1hdGNoIEFIIHBhY2tldHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjQyLjQ5MTg3ODk2OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTEzNDc5MDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBJUHY2IE5ldGZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZXhhbWluZWQgdGhpcyBwYXRjaCBhbmQgSSd2ZSBnb3QgYSBwcmV0dHkgZ29vZCBoYW5kbGUgb24gd2hhdCdzIGdvaW5nIG9uLiBGaXJzdCBvZmYsIEkndmUgY29uZmlybWVkIHRoYXQgYElQNl9ORl9NQVRDSF9PUFRTYCwgYElQNl9ORl9NQVRDSF9JUFY2SEVBREVSYCwgYW5kIGBJUDZfTkZfTUFUQ0hfU1JIYCBhcmUgYWxsIGNvbmRpdGlvbmFsIHVuZGVyIGBJUDZfTkZfSVBUQUJMRVNgLiAgVGhhdCdzIGtleS5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBpbnRlcmVzdGluZy4gSXQncyBjaGFuZ2luZyB0aGUgYmVoYXZpb3Igb2YgSVB2NiBuZXRmaWx0ZXIgbWF0Y2ggZXh0ZW5zaW9ucyDigJMgc3BlY2lmaWNhbGx5IGZvciBIb3AtYnktSG9wIG9wdGlvbnMgKGhiaCksIElQdjYgaGVhZGVycywgYW5kIFNvdXJjZSBSb3V0aW5nIEhlYWRlcnMgKFNSSCkuIEluc3RlYWQgb2Ygc2ltcGx5IHJldHVybmluZyBcImZhbHNlXCIgd2hlbiBlbmNvdW50ZXJpbmcgYSBtYWxmb3JtZWQgcGFja2V0LCBpdCdzIG5vdyBzZXQgdG8gXCJob3Rkcm9wXCIgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBzaWduaWZpY2FudCBvbmUgYXQgdGhhdCwgd2hpY2ggbWVhbnMgaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgY29uc2lkZXIgZnV6emluZy4gIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB1c2Vyc3BhY2UgdGhyb3VnaCBgaXA2dGFibGVzYCBydWxlIGNvbmZpZ3VyYXRpb24gYW5kIGNyYWZ0aW5nIHNwZWNpZmljIElQdjYgcGFja2V0cy5cblxuVGhlIHN5bWJvbHMgdGhhdCBzZWVtIGxpa2UgZ29vZCB0YXJnZXRzIGZvciBmdXp6aW5nIGFyZTogYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBhbmQgYHNyaF9tdDZgLCBhcyB3ZWxsIGFzIGBzcmgxX210NmAuXG5cbk5vdywgZm9yIGVuYWJsaW5nIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb25zLCBpdOKAmXMgY2xlYXIgd2UgbmVlZDpcblxuKiAgIGBJUDZfTkZfSVBUQUJMRVNgIChlc3NlbnRpYWwgYmVjYXVzZSBpdCBjb250cm9scyB0aGUgbWF0Y2hlcylcbiogICBgSVA2X05GX01BVENIX09QVFNgXG4qICAgYElQNl9ORl9NQVRDSF9JUFY2SEVBREVSYFxuKiAgIGBJUDZfTkZfTUFUQ0hfU1JIYFxuKiAgIGBORVRGSUxURVJfQURWQU5DRURgIChhIGJvb2xlYW4sIHNvIGl0J3Mgc3RyYWlnaHRmb3J3YXJkIHRvIGluY2x1ZGUpXG5cbkkgZGlkIGJyaWVmbHkgY29uc2lkZXIgYElQNl9ORl9JUFRBQkxFU19MRUdBQ1lgIGJ1dCBpdCBsb29rcyBsaWtlIGBJUDZfTkZfSVBUQUJMRVNgIGlzIHN1ZmZpY2llbnQgc2luY2UgdGhhdCdzIHRoZSBtYWluIGNvbnRyb2wgZm9yIHRoZSBtYXRjaGVzLlxuXG5JIGRvdWJsZS1jaGVja2VkIHRvIGNvbmZpcm0gdGhhdCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3RseSBhc3NvY2lhdGVkIHdpdGggdGhlaXIgcmVzcGVjdGl2ZSBmaWxlczogYElQNl9ORl9NQVRDSF9PUFRTYCBpcyBpbmRlZWQgZm9yIGBpcDZ0X2hiaC5jYCwgYElQNl9ORl9NQVRDSF9JUFY2SEVBREVSYCBpcyBmb3IgYGlwNnRfaXB2NmhlYWRlci5jYCwgYW5kIGBJUDZfTkZfTUFUQ0hfU1JIYCBpcyBjb3JyZWN0IGZvciBgaXA2dF9zcmguY2AuICBBbGwgY2hlY2tzIG91dC5cblxuT2theSwgSSdtIGNvbmZpZGVudCBpbiB0aGVzZSBmaW5kaW5ncy4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MTcsIk91dHB1dFRva2VucyI6MTgwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6NTEuNDA1MzYyMjY0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzMjA5OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUDZfTkZfSVBUQUJMRVNcIixcbiAgICBcIklQNl9ORl9NQVRDSF9PUFRTXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUlwiLFxuICAgIFwiSVA2X05GX01BVENIX1NSSFwiLFxuICAgIFwiTkVURklMVEVSX0FEVkFOQ0VEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGJoX210NlwiLFxuICAgIFwiaXB2NmhlYWRlcl9tdDZcIixcbiAgICBcInNyaF9tdDZcIixcbiAgICBcInNyaDFfbXQ2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVB2NiBuZXRmaWx0ZXIgbWF0Y2ggZXh0ZW5zaW9ucyAoaGJoLCBpcHY2aGVhZGVyLCBzcmgpIHRvIGRyb3AgbWFsZm9ybWVkIHBhY2tldHMgKGhvdGRyb3ApIGluc3RlYWQgb2YganVzdCByZXR1cm5pbmcgZmFsc2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjb25maWd1cmluZyBpcDZ0YWJsZXMgcnVsZXMgYW5kIHNlbmRpbmcgY3JhZnRlZCBJUHY2IHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVA2X05GX0lQVEFCTEVTXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX0lQVjZIRUFERVJcIixcbiAgICBcIklQNl9ORl9NQVRDSF9TUkhcIixcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhiaF9tdDZcIixcbiAgICBcImlwdjZoZWFkZXJfbXQ2XCIsXG4gICAgXCJzcmhfbXQ2XCIsXG4gICAgXCJzcmgxX210NlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIGV4dGVuc2lvbnMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBkcm9wIG1hbGZvcm1lZCBwYWNrZXRzIChob3Rkcm9wKSBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcGFja2V0IHByb2Nlc3NpbmcgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgaXA2dGFibGVzIHJ1bGVzIGFuZCBzZW5kaW5nIGNyYWZ0ZWQgSVB2NiBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4v4n8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 15:32:17 +0000 UTC FinishedAt: 2026-07-25 16:04:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "56d96fededd61192cd7cc8d2b0f36adfd59036c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP6_NF_IPTABLES", "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_IPV6HEADER", "IP6_NF_MATCH_SRH", "NETFILTER_ADVANCED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "56d96fededd61192cd7cc8d2b0f36adfd59036c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP6_NF_IPTABLES", "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_IPV6HEADER", "IP6_NF_MATCH_SRH", "NETFILTER_ADVANCED" ], "series_id": "efd95364-23da-4e37-af68-09c696d4a878" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hbh_mt6", "ipv6header_mt6", "srh_mt6", "srh1_mt6" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQNl9ORl9JUFRBQkxFUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfT1BUUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUiYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfU1JIJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hiaF9tdDYmIzM0OywKICAgICYjMzQ7aXB2NmhlYWRlcl9tdDYmIzM0OywKICAgICYjMzQ7c3JoX210NiYjMzQ7LAogICAgJiMzNDtzcmgxX210NiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBleHRlbnNpb25zIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gZHJvcCBtYWxmb3JtZWQgcGFja2V0cyAoaG90ZHJvcCkgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHBhY2tldCBwcm9jZXNzaW5nIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIGlwNnRhYmxlcyBydWxlcyBhbmQgc2VuZGluZyBjcmFmdGVkIElQdjYgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFmNDhiNDRiYWRhYTI1NmRjMjI5NmM0OWZiNTI5YmUwNmU5ZjUwOGJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAxNjowMzo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG5pbmRleCA2ZDFhNWQyMDI2YTY3OC4uMWI1ZGNjOTJiN2RhNDkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbkBAIC02MiwyMSAmIzQzOzYyLDE4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdCAgICBORVhUSERSX0hPUCA6IE5FWFRIRFJfREVTVCwgTlVMTCwgTlVMTCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4gXHRcdGlmIChlcnIgIT0gLUVOT0VOVClcbi1cdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4mIzQzO1x0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuIFx0b2ggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0c2gpLCBcdTAwMjZfb3B0c2gpO1xuLVx0aWYgKG9oID09IE5VTEwpIHtcbi1cdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuLVx0XHRyZXR1cm4gZmFsc2U7XG4tXHR9XG4mIzQzO1x0aWYgKCFvaClcbiYjNDM7XHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKG9oKTtcbiBcdGlmIChza2ItXHUwMDNlbGVuIC0gcHRyIFx1MDAzYyBoZHJsZW4pIHtcbiBcdFx0LyogUGFja2V0IHNtYWxsZXIgdGhhbiBpdCYjMzk7cyBsZW5ndGggZmllbGQgKi9cbi1cdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuLVx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHRnb3RvIGhvdGRyb3A7XG4gXHR9XG4gXG4gXHRwcl9kZWJ1ZyhcJiMzNDtJUHY2IE9QVFMgTEVOICV1ICV1IFwmIzM0OywgaGRybGVuLCBvaC1cdTAwM2VoZHJsZW4pO1xuQEAgLTEwNCw4ICYjNDM7MTAxLDggQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0XHRicmVhaztcbiBcdFx0XHR0cCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciwgc2l6ZW9mKF9vcHR0eXBlKSxcbiBcdFx0XHRcdFx0XHRcdTAwMjZfb3B0dHlwZSk7XG4tXHRcdFx0aWYgKHRwID09IE5VTEwpXG4tXHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0aWYgKCF0cClcbiYjNDM7XHRcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXG4gXHRcdFx0LyogVHlwZSBjaGVjayAqL1xuIFx0XHRcdGlmICgqdHAgIT0gKG9wdGluZm8tXHUwMDNlb3B0c1t0ZW1wXSBcdTAwMjYgMHhGRjAwKSBcdTAwM2VcdTAwM2UgOCkge1xuQEAgLTEyMSwxMiAmIzQzOzExOCwxMiBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcbiBcdFx0XHRcdC8qIGxlbmd0aCBmaWVsZCBleGlzdHMgPyAqL1xuIFx0XHRcdFx0aWYgKGhkcmxlbiBcdTAwM2MgMilcbi1cdFx0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdFx0XHRscCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciAmIzQzOyAxLFxuIFx0XHRcdFx0XHRcdFx0c2l6ZW9mKF9vcHRsZW4pLFxuIFx0XHRcdFx0XHRcdFx0XHUwMDI2X29wdGxlbik7XG4tXHRcdFx0XHRpZiAobHAgPT0gTlVMTClcbi1cdFx0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdFx0aWYgKCFscClcbiYjNDM7XHRcdFx0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0XHRcdHNwZWNfbGVuID0gb3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweDAwRkY7XG4gXG4gXHRcdFx0XHRpZiAoc3BlY19sZW4gIT0gMHgwMEZGIFx1MDAyNlx1MDAyNiBzcGVjX2xlbiAhPSAqbHApIHtcbkBAIC0xNDcsNyAmIzQzOzE0NCw3IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdGlmICgocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuIC0gb3B0bGVuIHx8IGhkcmxlbiBcdTAwM2Mgb3B0bGVuKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgdGVtcCBcdTAwM2Mgb3B0aW5mby1cdTAwM2VvcHRzbnIgLSAxKSB7XG4gXHRcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtuZXcgcG9pbnRlciBpcyB0b28gbGFyZ2UhXFxuXCYjMzQ7KTtcbi1cdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0XHR9XG4gXHRcdFx0cHRyICYjNDM7PSBvcHRsZW47XG4gXHRcdFx0aGRybGVuIC09IG9wdGxlbjtcbkBAIC0xNTksNiAmIzQzOzE1NiwxMCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdH1cbiBcbiBcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO2hvdGRyb3A6XG4mIzQzO1x0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuJiM0MztcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4gc3RhdGljIGludCBoYmhfbXQ2X2NoZWNrKGNvbnN0IHN0cnVjdCB4dF9tdGNoa19wYXJhbSAqcGFyKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuY1xuaW5kZXggYzUyZmY5MjljOTNiMzYuLjkxYTM1ZTgzYjI3ZjRkIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcbkBAIC0yOCw3ICYjNDM7MjgsNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGlwNnRfaXB2NmhlYWRlcl9pbmZvICppbmZvID0gcGFyLVx1MDAzZW1hdGNoaW5mbztcbiBcdHVuc2lnbmVkIGludCB0ZW1wO1xuLVx0aW50IGxlbjtcbiBcdHU4IG5leHRoZHI7XG4gXHR1bnNpZ25lZCBpbnQgcHRyO1xuIFxuQEAgLTM4LDggJiM0MzszNyw2IEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdG5leHRoZHIgPSBpcHY2X2hkcihza2IpLVx1MDAzZW5leHRoZHI7XG4gXHQvKiBwb2ludGVyIHRvIHRoZSAxc3QgZXh0aGRyICovXG4gXHRwdHIgPSBzaXplb2Yoc3RydWN0IGlwdjZoZHIpO1xuLVx0LyogYXZhaWxhYmxlIGxlbmd0aCAqL1xuLVx0bGVuID0gc2tiLVx1MDAzZWxlbiAtIHB0cjtcbiBcdHRlbXAgPSAwO1xuIFxuIFx0d2hpbGUgKG5mX2lwNl9leHRfaGRyKG5leHRoZHIpKSB7XG5AQCAtNTIsOSAmIzQzOzQ5LDYgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdHRlbXAgfD0gTUFTS19OT05FO1xuIFx0XHRcdGJyZWFrO1xuIFx0XHR9XG4tXHRcdC8qIElzIHRoZXJlIGVub3VnaCBzcGFjZSBmb3IgdGhlIG5leHQgZXh0IGhlYWRlcj8gKi9cbi1cdFx0aWYgKGxlbiBcdTAwM2MgKGludClzaXplb2Yoc3RydWN0IGlwdjZfb3B0X2hkcikpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0XHQvKiBFU1AgLVx1MDAzZSBldmFsdWF0ZSAqL1xuIFx0XHRpZiAobmV4dGhkciA9PSBORVhUSERSX0VTUCkge1xuIFx0XHRcdHRlbXAgfD0gTUFTS19FU1A7XG5AQCAtOTcsMTAgJiM0Mzs5MSwxMSBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdH1cbiBcbiBcdFx0bmV4dGhkciA9IGhwLVx1MDAzZW5leHRoZHI7XG4tXHRcdGxlbiAtPSBoZHJsZW47XG4gXHRcdHB0ciAmIzQzOz0gaGRybGVuO1xuLVx0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKVxuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0aWYgKHB0ciBcdTAwM2Ugc2tiLVx1MDAzZWxlbikge1xuJiM0MztcdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdGlmIChuZXh0aGRyICE9IE5FWFRIRFJfTk9ORSBcdTAwMjZcdTAwMjYgbmV4dGhkciAhPSBORVhUSERSX0VTUClcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXG5pbmRleCBkYjBmZDY0ZDg5ODYyNy4uNmZjYzQwMTAyZmUzZGYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmNcbkBAIC0yNywyMiAmIzQzOzI3LDI3IEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDtcbiBcdGludCBoZHJsZW4sIHNyaG9mZiA9IDA7XG4mIzQzO1x0aW50IGVycjtcbiBcbi1cdGlmIChpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFx1MDAzYyAwKVxuJiM0MztcdGVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCBcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XG4mIzQzO1x0aWYgKGVyciBcdTAwM2MgMCkge1xuJiM0MztcdFx0aWYgKGVyciAhPSAtRU5PRU5UKVxuJiM0MztcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXHRzcmggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBzcmhvZmYsIHNpemVvZihfc3JoKSwgXHUwMDI2X3NyaCk7XG4gXHRpZiAoIXNyaClcbi1cdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0Z290byBob3Rkcm9wO1xuIFxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4oc3JoKTtcbiBcdGlmIChza2ItXHUwMDNlbGVuIC0gc3Job2ZmIFx1MDAzYyBoZHJsZW4pXG4tXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGlmIChzcmgtXHUwMDNldHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKHNyaC1cdTAwM2VzZWdtZW50c19sZWZ0IFx1MDAzZSBzcmgtXHUwMDNlZmlyc3Rfc2VnbWVudClcbi1cdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0Z290byBob3Rkcm9wO1xuIFxuIFx0LyogTmV4dCBIZWFkZXIgbWF0Y2hpbmcgKi9cbiBcdGlmIChzcmhpbmZvLVx1MDAzZW10X2ZsYWdzIFx1MDAyNiBJUDZUX1NSSF9ORVhUSERSKVxuQEAgLTExMSw2ICYjNDM7MTE2LDEwIEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdFx0IShzcmgtXHUwMDNldGFnID09IHNyaGluZm8tXHUwMDNldGFnKSkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0Mztob3Rkcm9wOlxuJiM0MztcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbkBAIC0xMjEsMjIgJiM0MzsxMzAsMzEgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0c3RydWN0IGluNl9hZGRyIF9wc2lkLCBfbnNpZCwgX2xzaWQ7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgKnNyaDtcbiBcdHN0cnVjdCBpcHY2X3NyX2hkciBfc3JoO1xuJiM0MztcdGludCBlcnI7XG4gXG4tXHRpZiAoaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKSBcdTAwM2MgMClcbiYjNDM7XHRlcnIgPSBpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpO1xuJiM0MztcdGlmIChlcnIgXHUwMDNjIDApIHtcbiYjNDM7XHRcdGlmIChlcnIgIT0gLUVOT0VOVClcbiYjNDM7XHRcdFx0Z290byBob3Rkcm9wO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuIFx0c3JoID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgc3Job2ZmLCBzaXplb2YoX3NyaCksIFx1MDAyNl9zcmgpO1xuIFx0aWYgKCFzcmgpXG4tXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKHNyaCk7XG4gXHRpZiAoc2tiLVx1MDAzZWxlbiAtIHNyaG9mZiBcdTAwM2MgaGRybGVuKVxuLVx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHRnb3RvIGhvdGRyb3A7XG4gXG4gXHRpZiAoc3JoLVx1MDAzZXR5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbiYjNDM7XHRpZiAoc2l6ZW9mKCpzcmgpICYjNDM7XG4mIzQzO1x0ICAgICgoc3JoLVx1MDAzZWZpcnN0X3NlZ21lbnQgJiM0MzsgMSkgKiBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgXHUwMDNlIGhkcmxlbilcbiYjNDM7XHRcdGdvdG8gaG90ZHJvcDtcbiYjNDM7XG4gXHRpZiAoc3JoLVx1MDAzZXNlZ21lbnRzX2xlZnQgXHUwMDNlIHNyaC1cdTAwM2VmaXJzdF9zZWdtZW50KVxuLVx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHRnb3RvIGhvdGRyb3A7XG4gXG4gXHQvKiBOZXh0IEhlYWRlciBtYXRjaGluZyAqL1xuIFx0aWYgKHNyaGluZm8tXHUwMDNlbXRfZmxhZ3MgXHUwMDI2IElQNlRfU1JIX05FWFRIRFIpXG5AQCAtMjA3LDcgJiM0MzsyMjUsNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0ICAoKHNyaC1cdTAwM2VzZWdtZW50c19sZWZ0ICYjNDM7IDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xuIFx0XHRwc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHNpZG9mZiwgc2l6ZW9mKF9wc2lkKSwgXHUwMDI2X3BzaWQpO1xuIFx0XHRpZiAoIXBzaWQpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfUFNJRCxcbiBcdFx0XHRcdGlwdjZfbWFza2VkX2FkZHJfY21wKHBzaWQsIFx1MDAyNnNyaGluZm8tXHUwMDNlcHNpZF9tc2ssXG4gXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZzcmhpbmZvLVx1MDAzZXBzaWRfYWRkcikpKVxuQEAgLTIyMiw3ICYjNDM7MjQwLDcgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdCAgKChzcmgtXHUwMDNlc2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xuIFx0XHRuc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgXHUwMDI2X25zaWQpO1xuIFx0XHRpZiAoIW5zaWQpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTlNJRCxcbiBcdFx0XHRcdGlwdjZfbWFza2VkX2FkZHJfY21wKG5zaWQsIFx1MDAyNnNyaGluZm8tXHUwMDNlbnNpZF9tc2ssXG4gXHRcdFx0XHRcdFx0ICAgICBcdTAwMjZzcmhpbmZvLVx1MDAzZW5zaWRfYWRkcikpKVxuQEAgLTIzNCwxMyAmIzQzOzI1MiwxNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdGxzaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7XG4gXHRcdGxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCBcdTAwMjZfbHNpZCk7XG4gXHRcdGlmICghbHNpZClcbi1cdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0aWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9MU0lELFxuIFx0XHRcdFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobHNpZCwgXHUwMDI2c3JoaW5mby1cdTAwM2Vsc2lkX21zayxcbiBcdFx0XHRcdFx0XHQgICAgIFx1MDAyNnNyaGluZm8tXHUwMDNlbHNpZF9hZGRyKSkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0Mztob3Rkcm9wOlxuJiM0MztcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuIHN0YXRpYyBpbnQgc3JoX210Nl9jaGVjayhjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVA2X05GX0lQVEFCTEVTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9TUkgmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGJoX210NiYjMzQ7LAogICAgJiMzNDtpcHY2aGVhZGVyX210NiYjMzQ7LAogICAgJiMzNDtzcmhfbXQ2JiMzNDssCiAgICAmIzM0O3NyaDFfbXQ2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIGV4dGVuc2lvbnMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBkcm9wIG1hbGZvcm1lZCBwYWNrZXRzIChob3Rkcm9wKSBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcGFja2V0IHByb2Nlc3NpbmcgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgaXA2dGFibGVzIHJ1bGVzIGFuZCBzZW5kaW5nIGNyYWZ0ZWQgSVB2NiBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMWY0OGI0NGJhZGFhMjU2ZGMyMjk2YzQ5ZmI1MjliZTA2ZTlmNTA4YgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDI1IDE2OjAzOjUxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYwppbmRleCA2ZDFhNWQyMDI2YTY3OC4uMWI1ZGNjOTJiN2RhNDkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jCkBAIC02MiwyMSAmIzQzOzYyLDE4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJICAgIE5FWFRIRFJfSE9QIDogTkVYVEhEUl9ERVNULCBOVUxMLCBOVUxMKTsKIAlpZiAoZXJyICZsdDsgMCkgewogCQlpZiAoZXJyICE9IC1FTk9FTlQpCi0JCQlwYXItJmd0O2hvdGRyb3AgPSB0cnVlOwomIzQzOwkJCWdvdG8gaG90ZHJvcDsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAogCW9oID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHRyLCBzaXplb2YoX29wdHNoKSwgJmFtcDtfb3B0c2gpOwotCWlmIChvaCA9PSBOVUxMKSB7Ci0JCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7Ci0JCXJldHVybiBmYWxzZTsKLQl9CiYjNDM7CWlmICghb2gpCiYjNDM7CQlnb3RvIGhvdGRyb3A7CiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihvaCk7CiAJaWYgKHNrYi0mZ3Q7bGVuIC0gcHRyICZsdDsgaGRybGVuKSB7CiAJCS8qIFBhY2tldCBzbWFsbGVyIHRoYW4gaXQmIzM5O3MgbGVuZ3RoIGZpZWxkICovCi0JCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7Ci0JCXJldHVybiBmYWxzZTsKJiM0MzsJCWdvdG8gaG90ZHJvcDsKIAl9CiAKIAlwcl9kZWJ1ZygmIzM0O0lQdjYgT1BUUyBMRU4gJXUgJXUgJiMzNDssIGhkcmxlbiwgb2gtJmd0O2hkcmxlbik7CkBAIC0xMDQsOCAmIzQzOzEwMSw4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJCWJyZWFrOwogCQkJdHAgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0dHlwZSksCiAJCQkJCQkmYW1wO19vcHR0eXBlKTsKLQkJCWlmICh0cCA9PSBOVUxMKQotCQkJCWJyZWFrOwomIzQzOwkJCWlmICghdHApCiYjNDM7CQkJCWdvdG8gaG90ZHJvcDsKIAogCQkJLyogVHlwZSBjaGVjayAqLwogCQkJaWYgKCp0cCAhPSAob3B0aW5mby0mZ3Q7b3B0c1t0ZW1wXSAmYW1wOyAweEZGMDApICZndDsmZ3Q7IDgpIHsKQEAgLTEyMSwxMiAmIzQzOzExOCwxMiBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAogCQkJCS8qIGxlbmd0aCBmaWVsZCBleGlzdHMgPyAqLwogCQkJCWlmIChoZHJsZW4gJmx0OyAyKQotCQkJCQlicmVhazsKJiM0MzsJCQkJCWdvdG8gaG90ZHJvcDsKIAkJCQlscCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciAmIzQzOyAxLAogCQkJCQkJCXNpemVvZihfb3B0bGVuKSwKIAkJCQkJCQkmYW1wO19vcHRsZW4pOwotCQkJCWlmIChscCA9PSBOVUxMKQotCQkJCQlicmVhazsKJiM0MzsJCQkJaWYgKCFscCkKJiM0MzsJCQkJCWdvdG8gaG90ZHJvcDsKIAkJCQlzcGVjX2xlbiA9IG9wdGluZm8tJmd0O29wdHNbdGVtcF0gJmFtcDsgMHgwMEZGOwogCiAJCQkJaWYgKHNwZWNfbGVuICE9IDB4MDBGRiAmYW1wOyZhbXA7IHNwZWNfbGVuICE9ICpscCkgewpAQCAtMTQ3LDcgJiM0MzsxNDQsNyBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJCWlmICgocHRyICZndDsgc2tiLSZndDtsZW4gLSBvcHRsZW4gfHwgaGRybGVuICZsdDsgb3B0bGVuKSAmYW1wOyZhbXA7CiAJCQkgICAgdGVtcCAmbHQ7IG9wdGluZm8tJmd0O29wdHNuciAtIDEpIHsKIAkJCQlwcl9kZWJ1ZygmIzM0O25ldyBwb2ludGVyIGlzIHRvbyBsYXJnZSFcbiYjMzQ7KTsKLQkJCQlicmVhazsKJiM0MzsJCQkJZ290byBob3Rkcm9wOwogCQkJfQogCQkJcHRyICYjNDM7PSBvcHRsZW47CiAJCQloZHJsZW4gLT0gb3B0bGVuOwpAQCAtMTU5LDYgJiM0MzsxNTYsMTAgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJfQogCiAJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzO2hvdGRyb3A6CiYjNDM7CXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiYjNDM7CXJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIGludCBoYmhfbXQ2X2NoZWNrKGNvbnN0IHN0cnVjdCB4dF9tdGNoa19wYXJhbSAqcGFyKQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jCmluZGV4IGM1MmZmOTI5YzkzYjM2Li45MWEzNWU4M2IyN2Y0ZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuYwpAQCAtMjgsNyAmIzQzOzI4LDYgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogewogCWNvbnN0IHN0cnVjdCBpcDZ0X2lwdjZoZWFkZXJfaW5mbyAqaW5mbyA9IHBhci0mZ3Q7bWF0Y2hpbmZvOwogCXVuc2lnbmVkIGludCB0ZW1wOwotCWludCBsZW47CiAJdTggbmV4dGhkcjsKIAl1bnNpZ25lZCBpbnQgcHRyOwogCkBAIC0zOCw4ICYjNDM7MzcsNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJbmV4dGhkciA9IGlwdjZfaGRyKHNrYiktJmd0O25leHRoZHI7CiAJLyogcG9pbnRlciB0byB0aGUgMXN0IGV4dGhkciAqLwogCXB0ciA9IHNpemVvZihzdHJ1Y3QgaXB2Nmhkcik7Ci0JLyogYXZhaWxhYmxlIGxlbmd0aCAqLwotCWxlbiA9IHNrYi0mZ3Q7bGVuIC0gcHRyOwogCXRlbXAgPSAwOwogCiAJd2hpbGUgKG5mX2lwNl9leHRfaGRyKG5leHRoZHIpKSB7CkBAIC01Miw5ICYjNDM7NDksNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJCQl0ZW1wIHw9IE1BU0tfTk9ORTsKIAkJCWJyZWFrOwogCQl9Ci0JCS8qIElzIHRoZXJlIGVub3VnaCBzcGFjZSBmb3IgdGhlIG5leHQgZXh0IGhlYWRlcj8gKi8KLQkJaWYgKGxlbiAmbHQ7IChpbnQpc2l6ZW9mKHN0cnVjdCBpcHY2X29wdF9oZHIpKQotCQkJcmV0dXJuIGZhbHNlOwogCQkvKiBFU1AgLSZndDsgZXZhbHVhdGUgKi8KIAkJaWYgKG5leHRoZHIgPT0gTkVYVEhEUl9FU1ApIHsKIAkJCXRlbXAgfD0gTUFTS19FU1A7CkBAIC05NywxMCAmIzQzOzkxLDExIEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJfQogCiAJCW5leHRoZHIgPSBocC0mZ3Q7bmV4dGhkcjsKLQkJbGVuIC09IGhkcmxlbjsKIAkJcHRyICYjNDM7PSBoZHJsZW47Ci0JCWlmIChwdHIgJmd0OyBza2ItJmd0O2xlbikKLQkJCWJyZWFrOwomIzQzOwkJaWYgKHB0ciAmZ3Q7IHNrYi0mZ3Q7bGVuKSB7CiYjNDM7CQkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQl9CiAJfQogCiAJaWYgKG5leHRoZHIgIT0gTkVYVEhEUl9OT05FICZhbXA7JmFtcDsgbmV4dGhkciAhPSBORVhUSERSX0VTUCkKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMKaW5kZXggZGIwZmQ2NGQ4OTg2MjcuLjZmY2M0MDEwMmZlM2RmIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYwpAQCAtMjcsMjIgJiM0MzsyNywyNyBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAlzdHJ1Y3QgaXB2Nl9zcl9oZHIgKnNyaDsKIAlzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDsKIAlpbnQgaGRybGVuLCBzcmhvZmYgPSAwOwomIzQzOwlpbnQgZXJyOwogCi0JaWYgKGlwdjZfZmluZF9oZHIoc2tiLCAmYW1wO3NyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKSAmbHQ7IDApCiYjNDM7CWVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCAmYW1wO3NyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTsKJiM0MzsJaWYgKGVyciAmbHQ7IDApIHsKJiM0MzsJCWlmIChlcnIgIT0gLUVOT0VOVCkKJiM0MzsJCQlnb3RvIGhvdGRyb3A7CiAJCXJldHVybiBmYWxzZTsKJiM0MzsJfQogCXNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCAmYW1wO19zcmgpOwogCWlmICghc3JoKQotCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQlnb3RvIGhvdGRyb3A7CiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpOwogCWlmIChza2ItJmd0O2xlbiAtIHNyaG9mZiAmbHQ7IGhkcmxlbikKLQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJZ290byBob3Rkcm9wOwogCiAJaWYgKHNyaC0mZ3Q7dHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKHNyaC0mZ3Q7c2VnbWVudHNfbGVmdCAmZ3Q7IHNyaC0mZ3Q7Zmlyc3Rfc2VnbWVudCkKLQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJZ290byBob3Rkcm9wOwogCiAJLyogTmV4dCBIZWFkZXIgbWF0Y2hpbmcgKi8KIAlpZiAoc3JoaW5mby0mZ3Q7bXRfZmxhZ3MgJmFtcDsgSVA2VF9TUkhfTkVYVEhEUikKQEAgLTExMSw2ICYjNDM7MTE2LDEwIEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCQkJCSEoc3JoLSZndDt0YWcgPT0gc3JoaW5mby0mZ3Q7dGFnKSkpCiAJCQlyZXR1cm4gZmFsc2U7CiAJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7aG90ZHJvcDoKJiM0MzsJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKJiM0MzsJcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCkBAIC0xMjEsMjIgJiM0MzsxMzAsMzEgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKQogCXN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkOwogCXN0cnVjdCBpcHY2X3NyX2hkciAqc3JoOwogCXN0cnVjdCBpcHY2X3NyX2hkciBfc3JoOwomIzQzOwlpbnQgZXJyOwogCi0JaWYgKGlwdjZfZmluZF9oZHIoc2tiLCAmYW1wO3NyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKSAmbHQ7IDApCiYjNDM7CWVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCAmYW1wO3NyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTsKJiM0MzsJaWYgKGVyciAmbHQ7IDApIHsKJiM0MzsJCWlmIChlcnIgIT0gLUVOT0VOVCkKJiM0MzsJCQlnb3RvIGhvdGRyb3A7CiAJCXJldHVybiBmYWxzZTsKJiM0MzsJfQogCXNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCAmYW1wO19zcmgpOwogCWlmICghc3JoKQotCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQlnb3RvIGhvdGRyb3A7CiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpOwogCWlmIChza2ItJmd0O2xlbiAtIHNyaG9mZiAmbHQ7IGhkcmxlbikKLQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJZ290byBob3Rkcm9wOwogCiAJaWYgKHNyaC0mZ3Q7dHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNCkKIAkJcmV0dXJuIGZhbHNlOwogCiYjNDM7CWlmIChzaXplb2YoKnNyaCkgJiM0MzsKJiM0MzsJICAgICgoc3JoLSZndDtmaXJzdF9zZWdtZW50ICYjNDM7IDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpICZndDsgaGRybGVuKQomIzQzOwkJZ290byBob3Rkcm9wOwomIzQzOwogCWlmIChzcmgtJmd0O3NlZ21lbnRzX2xlZnQgJmd0OyBzcmgtJmd0O2ZpcnN0X3NlZ21lbnQpCi0JCXJldHVybiBmYWxzZTsKJiM0MzsJCWdvdG8gaG90ZHJvcDsKIAogCS8qIE5leHQgSGVhZGVyIG1hdGNoaW5nICovCiAJaWYgKHNyaGluZm8tJmd0O210X2ZsYWdzICZhbXA7IElQNlRfU1JIX05FWFRIRFIpCkBAIC0yMDcsNyAmIzQzOzIyNSw3IEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJCSAgKChzcmgtJmd0O3NlZ21lbnRzX2xlZnQgJiM0MzsgMSkgKiBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7CiAJCXBzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwc2lkb2ZmLCBzaXplb2YoX3BzaWQpLCAmYW1wO19wc2lkKTsKIAkJaWYgKCFwc2lkKQotCQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJCWdvdG8gaG90ZHJvcDsKIAkJaWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9QU0lELAogCQkJCWlwdjZfbWFza2VkX2FkZHJfY21wKHBzaWQsICZhbXA7c3JoaW5mby0mZ3Q7cHNpZF9tc2ssCiAJCQkJCQkgICAgICZhbXA7c3JoaW5mby0mZ3Q7cHNpZF9hZGRyKSkpCkBAIC0yMjIsNyAmIzQzOzI0MCw3IEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcikKIAkJCSAgKChzcmgtJmd0O3NlZ21lbnRzX2xlZnQgLSAxKSAqIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKIAkJbnNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIG5zaWRvZmYsIHNpemVvZihfbnNpZCksICZhbXA7X25zaWQpOwogCQlpZiAoIW5zaWQpCi0JCQlyZXR1cm4gZmFsc2U7CiYjNDM7CQkJZ290byBob3Rkcm9wOwogCQlpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX05TSUQsCiAJCQkJaXB2Nl9tYXNrZWRfYWRkcl9jbXAobnNpZCwgJmFtcDtzcmhpbmZvLSZndDtuc2lkX21zaywKIAkJCQkJCSAgICAgJmFtcDtzcmhpbmZvLSZndDtuc2lkX2FkZHIpKSkKQEAgLTIzNCwxMyAmIzQzOzI1MiwxNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJCWxzaWRvZmYgPSBzcmhvZmYgJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7CiAJCWxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCAmYW1wO19sc2lkKTsKIAkJaWYgKCFsc2lkKQotCQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJCWdvdG8gaG90ZHJvcDsKIAkJaWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9MU0lELAogCQkJCWlwdjZfbWFza2VkX2FkZHJfY21wKGxzaWQsICZhbXA7c3JoaW5mby0mZ3Q7bHNpZF9tc2ssCiAJCQkJCQkgICAgICZhbXA7c3JoaW5mby0mZ3Q7bHNpZF9hZGRyKSkpCiAJCQlyZXR1cm4gZmFsc2U7CiAJfQogCXJldHVybiB0cnVlOwomIzQzOwomIzQzO2hvdGRyb3A6CiYjNDM7CXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiYjNDM7CXJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIGludCBzcmhfbXQ2X2NoZWNrKGNvbnN0IHN0cnVjdCB4dF9tdGNoa19wYXJhbSAqcGFyKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTA2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIElQdjYgTWF0Y2ggUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBhbHRlcnMgc29tZSBJUHY2IE5ldGZpbHRlciBtYXRjaCBtb2R1bGVzLiBTcGVjaWZpY2FsbHksIHdlJiMzOTt2ZSBnb3QgY2hhbmdlcyBpbiBgaXA2dF9oYmguY2AsIGBpcDZ0X2lwdjZoZWFkZXIuY2AsIGFuZCBgaXA2dF9zcmguY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBgcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTtgIGluIGEgZmV3IHNwb3RzLiBUaGUga2V5IGlzIHRoYXQgdGhpcyBtb2RpZmljYXRpb24gbWFrZXMgdGhlIGNvZGUgKmRyb3AqIG1hbGZvcm1lZCBwYWNrZXRzLCByYXRoZXIgdGhhbiBqdXN0IHJldHVybmluZyBgZmFsc2VgLCB3aGljaCB3b3VsZCBjb250aW51ZSBydWxlIHRyYXZlcnNhbC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBjb21wbGV0ZWx5LgoKTGV0JiMzOTtzIGRyaWxsIGRvd24uIFRoZSBhbHRlcmVkIGZ1bmN0aW9ucyBhcmU6IGBoYmhfbXQ2YCwgYGlwdjZoZWFkZXJfbXQ2YCwgYW5kIGBzcmhfbXQ2YCBhbmQgYHNyaDFfbXQ2YC4gSW1tZWRpYXRlbHksIEkgcmVjb2duaXplIHRoZXNlIGFzIE5ldGZpbHRlciBtYXRjaCBmdW5jdGlvbnMgd2l0aGluIHRoZSBJUHY2IGNvbnRleHQuIFRoZXkmIzM5O3JlIGRlZmluaXRlbHkgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSDigJMgc29tZW9uZSBjYW4gd3JpdGUgYW4gYGlwNnRhYmxlc2AgcnVsZSBhbmQgY3JhZnQgYSBwYWNrZXQgdG8gdHJpZ2dlciB0aGVzZSByb3V0aW5lcy4gSSBrbm93IHRoYXQgYmVjYXVzZSBpdCYjMzk7cyB0aGUgbmF0dXJlIG9mIE5ldGZpbHRlci4gVGhlIHBhdGNoIGlzbiYjMzk7dCBqdXN0IGNvc21ldGljOyBpdCYjMzk7cyBhIHJlYWwgc2hpZnQgaW4gcGFja2V0IHByb2Nlc3NpbmcsIGFzIG1lbnRpb25lZCBiZWZvcmU6IGZyb20gJiMzNDtjb250aW51ZSBwcm9jZXNzaW5nJiMzNDsgdG8gJiMzNDtkcm9wIGltbWVkaWF0ZWx5JiMzNDsuCgpOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gV2hhdCBLY29uZmlnIG9wdGlvbiBlbmFibGVzIHRoZXNlIG1vZHVsZXM/IEZvciBgaXA2dF9oYmguY2AsIGlzIGl0IGBDT05GSUdfSVA2X05GX01BVENIX0hCSGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgZGV0YWlsZWQgaW4gdGhlIGBNYWtlZmlsZWAgb3IgYEtjb25maWdgIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9pcHY2L25ldGZpbHRlcmAgZGlyZWN0b3J5LiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlc2UgdG8gdW5kZXJzdGFuZCBob3cgd2lkZWx5IHRoaXMgcGF0Y2ggd2lsbCBpbXBhY3QgZGVwbG95ZWQgc3lzdGVtcy4gVGhhdCYjMzk7cyBteSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXA2dF9oYmgubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9MzY9b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgJiM0Mzs9IGlwNnRfbWgub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfT1BUUykgJiM0Mzs9IGlwNnRfaGJoLm9cbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfSVA2X05GX01BVENIX1JQRklMVEVSKSAmIzQzOz0gaXA2dF9ycGZpbHRlci5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk3NAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqS2VybmVsIE1vZHVsZSBEZXBlbmRlbmN5IENsYXJpZmljYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBDT05GSUdfSVA2X05GX01BVENIX09QVFNgLCBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGRpcmVjdGx5IHRpZXMgaW50byB0aGUgYGlwNnRfaGJoLm9gIG9iamVjdCBmaWxlLiBJbiBlc3NlbmNlLCBzZXR0aW5nIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gbGlrZWx5IGluY2x1ZGVzLCBlbmFibGVzLCBvciBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IHN1cHBvcnQgZm9yIHRoZSAmIzM0O2hvcC1ieS1ob3AmIzM0OyBleHRlbnNpb24gaGVhZGVyIG1hdGNoaW5nIG1vZHVsZSBpbiB0aGUgSVB2NiBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGxpbmsuIFRoaXMgbWVhbnMgaXQmIzM5O3MgY3JpdGljYWwgdG8gZW5zdXJlIHRoYXQgaWYgYSB1c2UgY2FzZSByZWxpZXMgb24gbWF0Y2hpbmcgb24gSVB2NiBob3AtYnktaG9wIGhlYWRlcnMsIHRoZW4gdGhpcyBjb25maWcgb3B0aW9uIG5lZWRzIHRvIGJlIGVuYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBjb25zaWRlciB0aGlzIGRlcGVuZGVuY3kgd2hlbiBJJiMzOTttIGxvb2tpbmcgYXQgcG90ZW50aWFsIElQdjYgZmlyZXdhbGwgcnVsZSBvcHRpbWl6YXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwNnRfaXB2NmhlYWRlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfSVA2X05GX01BVENIX0ZSQUcpICYjNDM7PSBpcDZ0X2ZyYWcub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUikgJiM0Mzs9IGlwNnRfaXB2NmhlYWRlci5vXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtb2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgJiM0Mzs9IGlwNnRfbWgub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzNDEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBBbmFseXNpczogSVB2NiBIZWFkZXIgTWF0Y2hpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIHRoaXMgZW5hYmxlcyB0aGUgYGlwNnRfaXB2NmhlYWRlci5vYCBtb2R1bGUuJiMzNDsgSXQmIzM5O3MgYSBmYWlybHkgc3RyYWlnaHRmb3J3YXJkIGRlcGVuZGVuY3ksIG5vdCBwYXJ0aWN1bGFybHkgY29tcGxleC4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpa2VseSBjb250cm9scyB0aGUgY29tcGlsYXRpb24gYW5kIGluY2x1c2lvbiBvZiB0aGUgSVB2NiBoZWFkZXIgbWF0Y2hpbmcgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIG92ZXJhbGwgSVB2NiBuZXRmaWx0ZXIgZnJhbWV3b3JrLiBTZWVtcyBsaWtlIHN0YW5kYXJkIGtlcm5lbCBtb2R1bGUgbG9naWMgYXQgcGxheS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGFjY29tcGFueWluZyBkb2N1bWVudGF0aW9uIGlmIHRoZXJlIGFyZSBudWFuY2VzLCBidXQgb24gdGhlIHN1cmZhY2UsIGl0JiMzOTtzIGp1c3QgYWJvdXQgZW5hYmxpbmcgdGhlIG1vZHVsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHRha2UgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGludG8gY29uc2lkZXJhdGlvbiAtIGFuZCBpdCYjMzk7cyBkZXBlbmRlbmN5IG9uIG90aGVyIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXA2dF9zcmgubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9SVCkgJiM0Mzs9IGlwNnRfcnQub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfU1JIKSAmIzQzOz0gaXA2dF9zcmgub1xubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlLTQxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2ODgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgYENPTkZJR19JUDZfTkZfTUFUQ0hfU1JIYCBLZXJuZWwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBgQ09ORklHX0lQNl9ORl9NQVRDSF9TUkhgIOKAkyB0aGF0IGNsZWFybHkgcG9pbnRzIHRvIHRoZSBgaXA2dF9zcmgub2AgbW9kdWxlLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBiZWZvcmUgSSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIGFsd2F5cyB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlLCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSBzdWJ0bGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzPyBTbywgbGV0JiMzOTtzIHB1bGwgdXAgdGhlIGBLY29uZmlnYCBmaWxlcyBhbmQgc2VlIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUgZm9yIHRoaXMgbGl0dGxlIG1vZHVsZS4gR290dGEgbWFrZSBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCB3aGVyZSBpdCBmaXRzIGluIGJlZm9yZSBJIGdvIHRvbyBkZWVwLiBUaGF0JiMzOTtsbCBzYXZlIG1lIHNvbWUgaGVhZGFjaGVzIGxhdGVyLiBUaW1lIHRvIGdldCB0aGF0IGBLY29uZmlnYCBvcGVuZWQgdXAuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9MTE0PWNvbmZpZyBJUDZfTkZfTUFUQ0hfRlJBR1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgSVA2X05GX01BVENIX09QVFNcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aGJoXCYjMzQ7IGhvcC1ieS1ob3AgYW5kIFwmIzM0O2RzdFwmIzM0OyBvcHRzIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA4MwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIENvbnRleHQqKgoKT2theSwgc28gdGhlIGluaXRpYWwgZm9jdXMgaXMgYXJvdW5kIGxpbmUgMTIzIG9mIHRoZSBLY29uZmlnIGZpbGUuIEkmIzM5O20gaW1tZWRpYXRlbHkgaG9taW5nIGluIG9uIHRoYXQgYXJlYSBiZWNhdXNlIHNvbWV0aGluZyB0aGVyZSBpcyByZWxldmFudCB0byB0aGUgaXNzdWUgYXQgaGFuZC4gSXQmIzM5O3MgZWl0aGVyIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gZGVmaW5pdGlvbiwgYW4gaW5jbHVzaW9uIHN0YXRlbWVudCB0aGF0IG1pZ2h0IHB1bGwgaW4gcmVsYXRlZCBjb25maWd1cmF0aW9uLCBvciBwZXJoYXBzIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgYWZmZWN0cyB0aGUgc2VsZWN0aW9uIG9mIGNlcnRhaW4gZmVhdHVyZXMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgcXVpY2tseSBzY2FubmluZyB0aGF0IHNlY3Rpb24gZm9yIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzLCBkZXBlbmRlbmNpZXMgSSYjMzk7bSBub3QgZXhwZWN0aW5nLCBvciBhbnl0aGluZyB0aGF0IGp1bXBzIG91dCBhcyB1bnVzdWFsLiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgb3JpZW50IG15c2VsZiB3aXRoaW4gdGhhdCBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIHRyZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExMDpcdFx0ICBmcm9tIHRoZSBNQUMgYWRkcmVzcykgYWRkcmVzc1xuIDExMTpcdFxuIDExMjpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxMTM6XHRcbiAxMTQ6XHRjb25maWcgSVA2X05GX01BVENIX0ZSQUdcbiAxMTU6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZnJhZ1wmIzM0OyBGcmFnbWVudGF0aW9uIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbiAxMTY6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMTE3Olx0XHRoZWxwXG4gMTE4Olx0XHQgIGZyYWcgbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIG9uIHRoZSBmcmFnbWVudGF0aW9uXG4gMTE5Olx0XHQgIGhlYWRlciBvZiB0aGUgcGFja2V0LlxuIDEyMDpcdFxuIDEyMTpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAxMjI6XHRcbiAxMjM6XHRjb25maWcgSVA2X05GX01BVENIX09QVFNcbiAxMjQ6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7aGJoXCYjMzQ7IGhvcC1ieS1ob3AgYW5kIFwmIzM0O2RzdFwmIzM0OyBvcHRzIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbiAxMjU6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMTI2Olx0XHRoZWxwXG4gMTI3Olx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIG9uIHRoZSBob3AtYnktaG9wXG4gMTI4Olx0XHQgIGFuZCBkZXN0aW5hdGlvbiBvcHRpb25zIGhlYWRlcnMgb2YgYSBwYWNrZXQuXG4gMTI5Olx0XG4gMTMwOlx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDEzMTpcdFxuIDEzMjpcdGNvbmZpZyBJUDZfTkZfTUFUQ0hfSExcbiAxMzM6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7aGxcJiMzNDsgaG9wbGltaXQgbWF0Y2ggc3VwcG9ydCYjMzk7XG4gMTM0Olx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuIDEzNTpcdFx0c2VsZWN0IE5FVEZJTFRFUl9YVF9NQVRDSF9ITFxuIDEzNjpcdFx0aGVscFxuIDEzNzpcdFx0ICBUaGlzIGlzIGEgYmFja3dhcmRzLWNvbXBhdCBvcHRpb24gZm9yIHRoZSB1c2VyJiMzOTtzIGNvbnZlbmllbmNlXG4gMTM4Olx0XHQgIChlLmcuIHdoZW4gcnVubmluZyBvbGRjb25maWcpLiBJdCBzZWxlY3RzXG4gMTM5Olx0XHQgIENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEwuXG4gMTQwOlx0XG4gMTQxOlx0Y29uZmlnIElQNl9ORl9NQVRDSF9JUFY2SEVBREVSXG4gMTQyOlx0XHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2lwdjZoZWFkZXJcJiMzNDsgSVB2NiBFeHRlbnNpb24gSGVhZGVycyBNYXRjaCYjMzk7XG4gMTQzOlx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAxNDQ6XHRcdGhlbHBcbiAxNDU6XHRcdCAgVGhpcyBtb2R1bGUgYWxsb3dzIG9uZSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIHVwb25cbiAxNDY6XHRcdCAgdGhlIGlwdjYgZXh0ZW5zaW9uIGhlYWRlcnMuXG4gMTQ3Olx0XG4gMTQ4Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDE0OTpcdFxuIDE1MDpcdGNvbmZpZyBJUDZfTkZfTUFUQ0hfTUhcbiAxNTE6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7bWhcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4gMTUyOlx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuIDE1MzpcdFx0aGVscFxuIDE1NDpcdFx0ICBUaGlzIG1vZHVsZSBhbGxvd3Mgb25lIHRvIG1hdGNoIE1IIHBhY2tldHMuXG4gMTU1Olx0XG4gMTU2Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDE1NzpcdFxuIDE1ODpcdGNvbmZpZyBJUDZfTkZfTUFUQ0hfUlBGSUxURVJcbiAxNTk6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7cnBmaWx0ZXJcJiMzNDsgcmV2ZXJzZSBwYXRoIGZpbHRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA0NgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIEkmIzM5O20gcHJvY2Vzc2luZyB0aGUgaW5mb3JtYXRpb246CgoqKlRoaW5raW5nIEFib3V0IElQdjYgU2VnbWVudCBSb3V0aW5nIEhlYWRlciBNYXRjaGluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgSVA2X05GX01BVENIX1NSSGAsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGludGVyZXN0LiBUaGUgc3BlY2lmaWMgZm9jdXMgaGVyZSBpcyBvbiBob3cgd2UmIzM5O3JlIG1hdGNoaW5nIHRoZSBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIChTUkgpIHdpdGhpbiBJUHY2IHBhY2tldHMuIFRoZSBudWFuY2UgSSYjMzk7bSByZWFsbHkgbG9va2luZyBmb3IgaXMgaG93IHRoZSBuZXRmaWx0ZXIgZnJhbWV3b3JrIGlzIGhhbmRsaW5nIHRoaXMuIFNwZWNpZmljYWxseTogYXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBoZXJlLCBvciBqdXN0IGJhc2ljIGNoZWNraW5nPyBBcmUgd2UgZGl2aW5nIGludG8gdGhlIHZhcmlvdXMgU1JIIG9wdGlvbnMsIGxpa2UgdGhlIHNlZ21lbnRzIHRoZW1zZWx2ZXMsIHRoZSB0eXBlLCB0aGUgbGVuZ3RoLCBvciBqdXN0IHRoZSBwcmVzZW5jZSBvZiB0aGUgZXh0ZW5zaW9uIGhlYWRlcj8gSSYjMzk7bSBob3BpbmcgZm9yIGEgcm9idXN0LCBlZmZpY2llbnQgbWF0Y2hpbmcgbWVjaGFuaXNtIHRoYXQgY2FuIGhhbmRsZSB2YXJpb3VzIFNSSCBjb25maWd1cmF0aW9ucy4gSWRlYWxseSwgaXQgYXZvaWRzIHVubmVjZXNzYXJ5IHBhY2tldCBwYXJzaW5nIG9yIHN0YXRlZnVsIGxvb2t1cHMgdW5sZXNzIGFic29sdXRlbHkgbmVjZXNzYXJ5LiBBcmUgd2UgdGFsa2luZyBhYm91dCBpbnRlZ3JhdGluZyB0aGlzIHdpdGggb3RoZXIgbmV0ZmlsdGVyIG1vZHVsZXMsIGZvciBleGFtcGxlIE5BVCBvciBjb25udHJhY2s/IFRoaW5raW5nIGFib3V0IHRoZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgaXMgdml0YWwsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGlnaC1iYW5kd2lkdGggU1IgZGVwbG95bWVudHMuIElmIHRoZXJlJiMzOTtzIGFuIGlzc3VlIGhlcmUsIEkgd2FudCB0byBjb25zaWRlciBob3cgdGhlIG1hdGNoIG1vZHVsZSBwbGF5cyB3aXRoIG90aGVyIE5GIHJ1bGVzIGluIHRlcm1zIG9mIG92ZXJhbGwgcGVyZm9ybWFuY2UsIHNjYWxhYmlsaXR5IGFuZCBzZWN1cml0eS4gV2UgbmVlZCB0byBiZSBhYmxlIHRvIGVuc3VyZSB0aGlzIG1vZHVsZSBpcyByb2NrIHNvbGlkLCBhbmQgdGhhdCB0aGUgbWF0Y2hpbmcgcHJvY2VzcyBpc24mIzM5O3Qgb3BlbmluZyB2dWxuZXJhYmlsaXRpZXMgdGhhdCB3b3VsZCBhbGxvdyBmb3IgYW4gZWFzeSBldmFzaW9uIG9mIHNlY3VyaXR5IHBvbGljaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVA2X05GX01BVENIX1NSSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnPTE2OT1jb25maWcgSVA2X05GX01BVENIX1JUXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTc3LVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTc4OmNvbmZpZyBJUDZfTkZfTUFUQ0hfU1JIXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNzktXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3NyaFwmIzM0OyBTZWdtZW50IFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTAyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgSSYjMzk7bSByZWFkeSB0byBzdW1tYXJpemUgdGhlIHRleHQgYXMgbXkgb3duIHRob3VnaHRzLCBhc3N1bWluZyB0aGUgcm9sZSBvZiBhbiBleHBlcnQgaW4gbXkgZmllbGQuIEhlcmUmIzM5O3MgbXkgdGFrZToKCioqQW5hbHl6aW5nIHRoZSBOZXcgSW5mb3JtYXRpb24qKgoKT2theSwgSSYjMzk7bSByZWFkeS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoaXMgbmV3IHRleHQuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtMZXQmIzM5O3MgcmVhZCB0aGF0IHRvby4mIzM0OyBJbW1lZGlhdGVseSwgbXkgYnJhaW4gc3RhcnRzIHRvIGNsYXNzaWZ5IHRoZSBpbmZvcm1hdGlvbiwgbG9va2luZyBmb3IgcGF0dGVybnMsIGNvbnRleHQsIG9yIGNvbm5lY3Rpb25zIHRvIG15IHByZS1leGlzdGluZyBrbm93bGVkZ2UuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYXJlYXMgd2hlcmUgdGhpcyBtaWdodCBjb250cmlidXRlIHRvIG15IGV4cGVydGlzZSwgb3IgcG9zc2libHkgY2hhbGxlbmdlIGV4aXN0aW5nIGFzc3VtcHRpb25zLiBJJiMzOTttIGtlZW4gdG8gZXZhbHVhdGUgdGhlIG5vdmVsdHkgYW5kIHNpZ25pZmljYW5jZSBvZiBhbnkgbmV3IGNvbmNlcHRzIG9yIGFyZ3VtZW50cyBwcmVzZW50ZWQuIFRoZSBmaXJzdCBzdGVwIGlzIGFsd2F5cyB0byBnbyBpbiB3aXRoIGFuIG9wZW4gbWluZCwgZWFnZXIgdG8gbGVhcm4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE3MDpcdFx0dHJpc3RhdGUgJiMzOTtcJiMzNDtydFwmIzM0OyBSb3V0aW5nIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbiAxNzE6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMTcyOlx0XHRoZWxwXG4gMTczOlx0XHQgIHJ0IG1hdGNoaW5nIGFsbG93cyB5b3UgdG8gbWF0Y2ggcGFja2V0cyBiYXNlZCBvbiB0aGUgcm91dGluZ1xuIDE3NDpcdFx0ICBoZWFkZXIgb2YgdGhlIHBhY2tldC5cbiAxNzU6XHRcbiAxNzY6XHRcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXG4gMTc3Olx0XG4gMTc4Olx0Y29uZmlnIElQNl9ORl9NQVRDSF9TUkhcbiAxNzk6XHRcdHRyaXN0YXRlICYjMzk7XCYjMzQ7c3JoXCYjMzQ7IFNlZ21lbnQgUm91dGluZyBoZWFkZXIgbWF0Y2ggc3VwcG9ydCYjMzk7XG4gMTgwOlx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuIDE4MTpcdFx0aGVscFxuIDE4MjpcdFx0ICBzcmggbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIG9uIHRoZSBzZWdtZW50XG4gMTgzOlx0XHQgIHJvdXRpbmcgaGVhZGVyIG9mIHRoZSBwYWNrZXQuXG4gMTg0Olx0XG4gMTg1Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuIDE4NjpcdFxuIDE4NzpcdCMgVGhlIHRhcmdldHNcbiAxODg6XHRjb25maWcgSVA2X05GX1RBUkdFVF9ITFxuIDE4OTpcdFx0dHJpc3RhdGUgJiMzOTtcJiMzNDtITFwmIzM0OyBob3BsaW1pdCB0YXJnZXQgc3VwcG9ydCYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5OTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIElQdjYgTmV0ZmlsdGVyIE1hdGNoIEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGFuZCBgSVA2X05GX01BVENIX1NSSGAuIFRoZXkgYWxsIHNlZW0gdG8gcmVseSBvbiBgTkVURklMVEVSX0FEVkFOQ0VEYCwgYnV0IGl0JiMzOTtzIHByb2JhYmx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgc28gbWF5YmUgSSBkb24mIzM5O3QgKnJlYWxseSogbmVlZCB0byBsaXN0IGl0IGV4cGxpY2l0bHkuIEl0IG1pZ2h0IGJlIHJlZHVuZGFudCwgYnV0IGxldCYjMzk7cyBsaXN0IGl0IGFueXdheSwganVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgYWxzbyBhZGQgYElQNl9ORl9JUFRBQkxFU2AgYXMgaXQmIzM5O3MgdGhlIHBhcmVudCBtb2R1bGUsIGp1c3QgdG8gaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUuCgpUaGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBoZXJlIGFyZSBgaGJoX210NmAsIGBpcHY2aGVhZGVyX210NmAsIGBzcmhfbXQ2YCwgYW5kIGBzcmgxX210NmAuIFRoZXNlIGFyZSBuZXRmaWx0ZXIgbWF0Y2ggZnVuY3Rpb25zIHNwZWNpZmljYWxseSBmb3IgSVB2Ni4gSSBzZWUgdGhhdCB0aGUgY2hhbmdlcyBhcmUgbW9yZSB0aGFuIGp1c3QgcmV0dXJuaW5nIGEgJiMzNDtmYWxzZSYjMzQ7IHJlc3VsdDsgdGhleSYjMzk7cmUgYWN0dWFsbHkgZHJvcHBpbmcgbWFsZm9ybWVkIHBhY2tldHMgbm93LiBUaGF0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2hpY2ggbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nIHRvIGNoZWNrIGZvciB2dWxuZXJhYmlsaXRpZXMuCgpTbywganVzdCB0byBiZSBjcnlzdGFsIGNsZWFyLCBoZXJlJiMzOTtzIG15IGNvbmZpZ3VyYXRpb24gbGlzdCBhZ2FpbjoKCiogICBgSVA2X05GX01BVENIX09QVFNgCiogICBgSVA2X05GX01BVENIX0lQVjZIRUFERVJgCiogICBgSVA2X05GX01BVENIX1NSSGAKKiAgIGBJUDZfTkZfSVBUQUJMRVNgCgpBbmQgdGhlIGtleSBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBkdXJpbmcgcmV2aWV3OgoKKiAgIGBoYmhfbXQ2YAoqICAgYGlwdjZoZWFkZXJfbXQ2YAoqICAgYHNyaF9tdDZgCiogICBgc3JoMV9tdDZgCgpKdXN0IHRvIG1ha2UgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiBmb3IgYW55IG90aGVyIG1vZGlmaWVkIGZ1bmN0aW9ucyB0aGF0IEkgbWlnaHQgaGF2ZSBtaXNzZWQuIEdvdHRhIGJlIG1ldGljdWxvdXMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgYm9vbC4qX210NiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYz0yNT1zcGlfbWF0Y2godV9pbnQzMl90IG1pbiwgdV9pbnQzMl90IG1heCwgdV9pbnQzMl90IHNwaSwgYm9vbCBpbnZlcnQpXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYy0zNS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmM6MzY6c3RhdGljIGJvb2wgYWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmMtMzcte1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X21oLmM9MjY9dHlwZV9tYXRjaCh1X2ludDhfdCBtaW4sIHVfaW50OF90IG1heCwgdV9pbnQ4X3QgdHlwZSwgYm9vbCBpbnZlcnQpXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfbWguYy0zMC1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X21oLmM6MzE6c3RhdGljIGJvb2wgbWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X21oLmMtMzIte1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmM9MjY9c2Vnc2xlZnRfbWF0Y2godV9pbnQzMl90IG1pbiwgdV9pbnQzMl90IG1heCwgdV9pbnQzMl90IGlkLCBib29sIGludmVydClcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jLTMwLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuYzozMTpzdGF0aWMgYm9vbCBydF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuYy0zMi17XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMjMtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYzoyNDpzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jLTI1LXtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYy0xMjQtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguYzoxMjU6c3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMTI2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMzYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNjb3BlIG9mIHRoaXMgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgaGJoX210NmAsIGBpcHY2aGVhZGVyX210NmAsIGBzcmhfbXQ2YCwgYW5kIGBzcmgxX210NmAuIFRoYXQmIzM5O3MgYSByZWFzb25hYmxlIHNldCBvZiBmdW5jdGlvbnMsIGFsbCByZWxhdGVkIHRvIElQdjYgaGVhZGVyIHByb2Nlc3NpbmcsIHdoaWNoIG1ha2VzIHNlbnNlLiBIbW0sIGJ1dCB3YWl0IGEgbWludXRlLi4uIEkgZGlkbiYjMzk7dCBzZWUgYGhiaF9tdDZgIG9yIGBpcHY2aGVhZGVyX210NmAgaW4gdGhhdCBgZ3JlcGAgb3V0cHV0LiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IHRoZSBgZ3JlcGAgcmVnZXggbWlnaHQgbm90IGJlIHBlcmZlY3RseSBwcmVjaXNlLCBvciBwZXJoYXBzIHRob3NlIGZ1bmN0aW9ucyBhcmVuJiMzOTt0IGRlY2xhcmVkIGFzIGBzdGF0aWMgYm9vbGAuIFRoZXkgY291bGQgYmUgZGVjbGFyZWQgZGlmZmVyZW50bHksIHdoaWNoIHdvdWxkIG1lYW4gdGhleSBzbGlwcGVkIHBhc3QgdGhlIHNlYXJjaC4gSSBuZWVkIHRvIHZlcmlmeSB0aGVpciBzaWduYXR1cmVzIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3aGF0JiMzOTtzIGdvaW5nIG9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBwcm90b3R5cGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoYmhfbXQ2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM9MjM9TU9EVUxFX0FMSUFTKFwmIzM0O2lwNnRfZHN0XCYjMzQ7KTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy00MC1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjQxOnN0YXRpYyBzdHJ1Y3QgeHRfbWF0Y2ggaGJoX210Nl9yZWdbXSBfX3JlYWRfbW9zdGx5O1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtNDItXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYz00Mz1zdGF0aWMgYm9vbFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6NDQ6aGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy00NS17XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtNjAtXHRlcnIgPSBpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2cHRyLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6NjE6XHRcdFx0ICAgIChwYXItXHUwMDNlbWF0Y2ggPT0gXHUwMDI2aGJoX210Nl9yZWdbMF0pID9cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTYyLVx0XHRcdCAgICBORVhUSERSX0hPUCA6IE5FWFRIRFJfREVTVCwgTlVMTCwgTlVMTCk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTY0LVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTY1OnN0YXRpYyBpbnQgaGJoX210Nl9jaGVjayhjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcilcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE2Ni17XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTg1LVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTg2OnN0YXRpYyBzdHJ1Y3QgeHRfbWF0Y2ggaGJoX210Nl9yZWdbXSBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTg3LVx0e1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTg4Olx0XHQvKiBOb3RlLCBoYmhfbXQ2IHJlbGllcyBvbiB0aGUgb3JkZXIgb2YgaGJoX210Nl9yZWcgKi9cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE4OS1cdFx0Lm5hbWVcdFx0PSBcJiMzNDtoYmhcJiMzNDssXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0xOTAtXHRcdC5mYW1pbHlcdFx0PSBORlBST1RPX0lQVjYsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoxOTE6XHRcdC5tYXRjaFx0XHQ9IGhiaF9tdDYsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0xOTItXHRcdC5tYXRjaHNpemVcdD0gc2l6ZW9mKHN0cnVjdCBpcDZ0X29wdHMpLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTkzOlx0XHQuY2hlY2tlbnRyeVx0PSBoYmhfbXQ2X2NoZWNrLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTk0LVx0XHQubWVcdFx0PSBUSElTX01PRFVMRSxcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0xOTgtXHRcdC5mYW1pbHlcdFx0PSBORlBST1RPX0lQVjYsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoxOTk6XHRcdC5tYXRjaFx0XHQ9IGhiaF9tdDYsXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMDAtXHRcdC5tYXRjaHNpemVcdD0gc2l6ZW9mKHN0cnVjdCBpcDZ0X29wdHMpLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjAxOlx0XHQuY2hlY2tlbnRyeVx0PSBoYmhfbXQ2X2NoZWNrLFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjAyLVx0XHQubWVcdFx0PSBUSElTX01PRFVMRSxcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMDUtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoyMDY6c3RhdGljIGludCBfX2luaXQgaGJoX210Nl9pbml0KHZvaWQpXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMDcte1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjA4Olx0cmV0dXJuIHh0X3JlZ2lzdGVyX21hdGNoZXMoaGJoX210Nl9yZWcsIEFSUkFZX1NJWkUoaGJoX210Nl9yZWcpKTtcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTIwOS19XG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMTAtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoyMTE6c3RhdGljIHZvaWQgX19leGl0IGhiaF9tdDZfZXhpdCh2b2lkKVxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjEyLXtcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjIxMzpcdHh0X3VucmVnaXN0ZXJfbWF0Y2hlcyhoYmhfbXQ2X3JlZywgQVJSQVlfU0laRShoYmhfbXQ2X3JlZykpO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjE0LX1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTIxNS1cbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjIxNjptb2R1bGVfaW5pdChoYmhfbXQ2X2luaXQpO1xubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjE3Om1vZHVsZV9leGl0KGhiaF9tdDZfZXhpdCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTY0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyBhIE1pc21hdGNoKioKCk9rYXksIHNvIHRoYXQgYHN0YXRpYyBib29sIFxuIGhiaF9tdDZgIGlzIHRoZSBjdWxwcml0LCBleHBsYWluaW5nIHRoZSBkaXNjcmVwYW5jeS4gTm93IEkgY2FuIHNlZSB0aGUgZm9jdXMgc3ltYm9scyB0aGF0IHdlcmUgaW52b2x2ZWQuCgpJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSB3b3JraW5nIHdpdGggdGhlc2UgbWF0Y2hpbmcgc3ltYm9sczogYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBgc3JoX210NmAsIGFuZCBgc3JoMV9tdDZgLiBBbmQgdGhvc2Ugc3ltYm9scyBsb29rIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGBJUDZfTkZfTUFUQ0hfU1JIYCwgYW5kIGBJUDZfTkZfSVBUQUJMRVNgLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYG5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnYCBhbmQgdmVyaWZ5IHdoZXRoZXIgdGhlIGBJUDZfTkZfSVBUQUJMRVNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQgYW5kIGhvdyBpdCYjMzk7cyBkZWZpbmVkIHJlbGF0aXZlIHRvIHRoZSByZXN0IG9mIHRoZSBzeW1ib2xzLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhlIGlzc3VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVA2X05GX0lQVEFCTEVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9Nj1tZW51IFwmIzM0O0lQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uXCYjMzQ7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctOS0jIG9sZCBzb2Nrb3B0IGludGVyZmFjZSBhbmQgZXZhbCBsb29wXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxMDpjb25maWcgSVA2X05GX0lQVEFCTEVTX0xFR0FDWVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtMZWdhY3kgSVA2IHRhYmxlcyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9NzI9Y29uZmlnIE5GX0xPR19JUFY2XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctNzktXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzo4MDpjb25maWcgSVA2X05GX0lQVEFCTEVTXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cdHRyaXN0YXRlIFwmIzM0O0lQNiB0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGZpbHRlcmluZylcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1NjAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogSVB2NiBhbmQgQWR2YW5jZWQgTmV0ZmlsdGVyKioKClJpZ2h0LCBzbyBJJiMzOTttIGNvbmZpZ3VyaW5nIHRoaXMga2VybmVsIGFuZCBpdCBsb29rcyBsaWtlIEkgYWJzb2x1dGVseSBuZWVkIGBJUDZfTkZfSVBUQUJMRVNgLiBObyBxdWVzdGlvbiBhYm91dCB0aGF0LiBCdXQgaG9sZCBvbiwgdGhlIGRvY3VtZW50YXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IGBJUDZfTkZfTUFUQ0hfT1BUU2AgaXMgZGVwZW5kZW50IG9uIGBORVRGSUxURVJfQURWQU5DRURgLiBDbGVhcmx5LCBJIG5lZWQgdG8gaW5jbHVkZSB0aGF0IGFzIHdlbGwuIE5vdywgYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgYSBib29sZWFuLCBzbyBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIG5ldGZpbHRlciBzdWJzeXN0ZW0sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIGl0IGFuZCBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMgb3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZmVhdHVyZXMuIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyBzdWJ0bGUsIGFzIHVzdWFsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRGSUxURVJfQURWQU5DRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjg0OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgZGV2ZWxvcG1lbnQsIGxpa2VseSB3b3JraW5nIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zOgoKKipLY29uZmlnIENoZWNrcG9pbnQqKgoKSG1tLCB0aGlua2luZyBhYm91dCB0aGUgY3VycmVudCBpc3N1ZeKApiBJJiMzOTttIGRyYXdpbmcgYSBibGFuayBvbiB0aGUgZXhhY3QgZmlsZSBJIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgcGFydGljdWxhciBvcHRpb24uIEl0JiMzOTtzIGEga2VybmVsIGNvbmZpZ3VyYXRpb24gdGhpbmcsIHNvIHRoZSBmaXJzdCBwbGFjZSB0aGF0IHNwcmluZ3MgdG8gbWluZCwgYWxtb3N0IHJlZmxleGl2ZWx5LCBpcyBgbmV0L0tjb25maWdgLiBJdCYjMzk7cyBhIHByZXR0eSBjZW50cmFsIGxvY2F0aW9uIGZvciBuZXR3b3JrLXJlbGF0ZWQgc2V0dGluZ3MgYW5kIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoYXQgZmlsZSBhcyBteSBmaXJzdCBzdG9wLiBJdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gY29uZmlybSBvciBydWxlIGl0IG91dCBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz0yMTg9aWYgTkVURklMVEVSXG5uZXQvS2NvbmZpZy0yMTktXG5uZXQvS2NvbmZpZzoyMjA6Y29uZmlnIE5FVEZJTFRFUl9BRFZBTkNFRFxubmV0L0tjb25maWctMjIxLVx0Ym9vbCBcJiMzNDtBZHZhbmNlZCBuZXRmaWx0ZXIgY29uZmlndXJhdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA5MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBib29sZWFuIGBORVRGSUxURVJfQURWQU5DRURgIGFuZCB0cnlpbmcgdG8gZ3Jhc3AgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBjb25maWd1cmF0aW9ucy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbGlzdCB0aGUgcmVsYXRlZCBjb25maWdzLCBqdXN0IHRvIGdldCBhIGxheSBvZiB0aGUgbGFuZC4gSSBzZWU6IGBJUDZfTkZfSVBUQUJMRVNgLCBgSVA2X05GX01BVENIX09QVFNgLCBgSVA2X05GX01BVENIX0lQVjZIRUFERVJgLCBgSVA2X05GX01BVENIX1NSSGAsIGFuZCBvZiBjb3Vyc2UsIHRoZSBgTkVURklMVEVSX0FEVkFOQ0VEYCBvcHRpb24gaXRzZWxmLgoKTm93LCBJJiMzOTttIGp1c3QgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2luZyB0byBtYWtlIHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgY2xlYXIuIGBJUDZfTkZfTUFUQ0hfT1BUU2AgaXMgZGVmaW5lZCBpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdgLCByaWdodD8gT2theSwgc28gdGhhdCYjMzk7cyBpdHMgbG9jYXRpb24uIE15IG5leHQgdGhvdWdodCBpcyB3aGV0aGVyIGl0JiMzOTtzIGNvbmRpdGlvbmFsbHkgaW5jbHVkZWQgdW5kZXIgYElQNl9ORl9JUFRBQkxFU2AuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSB0byBjb25maXJtIHRoZSBkZXBlbmRlbmN5IHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBJUCBuZXRmaWx0ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51IFwmIzM0O0lQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uXCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElQVjYgXHUwMDI2XHUwMDI2IE5FVEZJTFRFUlxuICAgODpcdFxuICAgOTpcdCMgb2xkIHNvY2tvcHQgaW50ZXJmYWNlIGFuZCBldmFsIGxvb3BcbiAgMTA6XHRjb25maWcgSVA2X05GX0lQVEFCTEVTX0xFR0FDWVxuICAxMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TGVnYWN5IElQNiB0YWJsZXMgc3VwcG9ydFwmIzM0O1xuICAxMjpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJUFY2IFx1MDAyNlx1MDAyNiBORVRGSUxURVJfWFRBQkxFU19MRUdBQ1lcbiAgMTM6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX1hUQUJMRVNcbiAgMTQ6XHRcdGRlZmF1bHRcdG0gaWYgTkVURklMVEVSX1hUQUJMRVNfTEVHQUNZXG4gIDE1Olx0XHRoZWxwXG4gIDE2Olx0XHQgIGlwNnRhYmxlcyBpcyBhIGxlZ2FjeSBwYWNrZXQgY2xhc3NpZmllci5cbiAgMTc6XHRcdCAgVGhpcyBpcyBub3QgbmVlZGVkIGlmIHlvdSBhcmUgdXNpbmcgaXB0YWJsZXMgb3ZlciBuZnRhYmxlc1xuICAxODpcdFx0ICAoaXB0YWJsZXMtbmZ0KS5cbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgTkZfU09DS0VUX0lQVjZcbiAgMjE6XHRcdHRyaXN0YXRlIFwmIzM0O0lQdjYgc29ja2V0IGxvb2t1cCBzdXBwb3J0XCYjMzQ7XG4gIDIyOlx0XHRoZWxwXG4gIDIzOlx0XHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIElQdjYgc29ja2V0IGxvb2t1cCBpbmZyYXN0cnVjdHVyZS4gVGhpc1xuICAyNDpcdFx0ICBpcyB1c2VkIGJ5IHRoZSB7aXA2LG5mfXRhYmxlcyBzb2NrZXQgbWF0Y2guXG4gIDI1Olx0XG4gIDI2Olx0Y29uZmlnIE5GX1RQUk9YWV9JUFY2XG4gIDI3Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUHY2IHRwcm94eSBzdXBwb3J0XCYjMzQ7XG4gIDI4Olx0XG4gIDI5Olx0aWYgTkZfVEFCTEVTXG4gIDMwOlx0XG4gIDMxOlx0Y29uZmlnIE5GX1RBQkxFU19JUFY2XG4gIDMyOlx0XHRib29sIFwmIzM0O0lQdjYgbmZfdGFibGVzIHN1cHBvcnRcJiMzNDtcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgSVB2NiBzdXBwb3J0IGZvciBuZl90YWJsZXMuXG4gIDM1Olx0XG4gIDM2Olx0aWYgTkZfVEFCTEVTX0lQVjZcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgTkZUX1JFSkVDVF9JUFY2XG4gIDM5Olx0XHRzZWxlY3QgTkZfUkVKRUNUX0lQVjZcbiAgNDA6XHRcdGRlZmF1bHQgTkZUX1JFSkVDVFxuICA0MTpcdFx0dHJpc3RhdGVcbiAgNDI6XHRcbiAgNDM6XHRjb25maWcgTkZUX0RVUF9JUFY2XG4gIDQ0Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUHY2IG5mX3RhYmxlcyBwYWNrZXQgZHVwbGljYXRpb24gc3VwcG9ydFwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiAhTkZfQ09OTlRSQUNLIHx8IE5GX0NPTk5UUkFDS1xuICA0NjpcdFx0c2VsZWN0IE5GX0RVUF9JUFY2XG4gIDQ3Olx0XHRoZWxwXG4gIDQ4Olx0XHQgIFRoaXMgbW9kdWxlIGVuYWJsZXMgSVB2NiBwYWNrZXQgZHVwbGljYXRpb24gc3VwcG9ydCBmb3IgbmZfdGFibGVzLlxuICA0OTpcdFxuICA1MDpcdGNvbmZpZyBORlRfRklCX0lQVjZcbiAgNTE6XHRcdHRyaXN0YXRlIFwmIzM0O25mX3RhYmxlcyBmaWIgLyBpcHY2IHJvdXRlIGxvb2t1cCBzdXBwb3J0XCYjMzQ7XG4gIDUyOlx0XHRzZWxlY3QgTkZUX0ZJQlxuICA1MzpcdFx0aGVscFxuICA1NDpcdFx0ICBUaGlzIG1vZHVsZSBlbmFibGVzIElQdjYgRklCIGxvb2t1cHMsIGUuZy4gZm9yIHJldmVyc2UgcGF0aCBmaWx0ZXJpbmcuXG4gIDU1Olx0XHQgIEl0IGFsc28gYWxsb3dzIHF1ZXJ5IG9mIHRoZSBGSUIgZm9yIHRoZSByb3V0ZSB0eXBlLCBlLmcuIGxvY2FsLCB1bmljYXN0LFxuICA1NjpcdFx0ICBtdWx0aWNhc3Qgb3IgYmxhY2tob2xlLlxuICA1NzpcdFxuICA1ODpcdGVuZGlmICMgTkZfVEFCTEVTX0lQVjZcbiAgNTk6XHRlbmRpZiAjIE5GX1RBQkxFU1xuICA2MDpcdFxuICA2MTpcdGNvbmZpZyBORl9EVVBfSVBWNlxuICA2MjpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIElQdjYgcGFja2V0IGR1cGxpY2F0aW9uIHRvIGFsdGVybmF0ZSBkZXN0aW5hdGlvblwmIzM0O1xuICA2MzpcdFx0ZGVwZW5kcyBvbiAhTkZfQ09OTlRSQUNLIHx8IE5GX0NPTk5UUkFDS1xuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBuZl9kdXBfaXB2NiBjb3JlLCB3aGljaCBkdXBsaWNhdGVzIGFuIElQdjZcbiAgNjY6XHRcdCAgcGFja2V0IHRvIGJlIHJlcm91dGVkIHRvIGFub3RoZXIgZGVzdGluYXRpb24uXG4gIDY3Olx0XG4gIDY4Olx0Y29uZmlnIE5GX1JFSkVDVF9JUFY2XG4gIDY5Olx0XHR0cmlzdGF0ZSBcJiMzNDtJUHY2IHBhY2tldCByZWplY3Rpb25cJiMzNDtcbiAgNzA6XHRcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxuICA3MTpcdFxuICA3MjpcdGNvbmZpZyBORl9MT0dfSVBWNlxuICA3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7SVB2NiBwYWNrZXQgbG9nZ2luZ1wmIzM0O1xuICA3NDpcdFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXG4gIDc1Olx0XHRzZWxlY3QgTkZfTE9HX1NZU0xPR1xuICA3NjpcdFx0aGVscFxuICA3NzpcdFx0ICBUaGlzIGlzIGEgYmFja3dhcmRzLWNvbXBhdCBvcHRpb24gZm9yIHRoZSB1c2VyJiMzOTtzIGNvbnZlbmllbmNlXG4gIDc4Olx0XHQgIChlLmcuIHdoZW4gcnVubmluZyBvbGRjb25maWcpLiBJdCBzZWxlY3RzIENPTkZJR19ORl9MT0dfU1lTTE9HLlxuICA3OTpcdFxuICA4MDpcdGNvbmZpZyBJUDZfTkZfSVBUQUJMRVNcbiAgODE6XHRcdHRyaXN0YXRlIFwmIzM0O0lQNiB0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGZpbHRlcmluZylcJiMzNDtcbiAgODI6XHRcdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSVBWNlxuICA4MzpcdFx0c2VsZWN0IE5FVEZJTFRFUl9YVEFCTEVTXG4gIDg0Olx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAgODU6XHRcdGhlbHBcbiAgODY6XHRcdCAgaXA2dGFibGVzIGlzIGEgZ2VuZXJhbCwgZXh0ZW5zaWJsZSBwYWNrZXQgaWRlbnRpZmljYXRpb24gZnJhbWV3b3JrLlxuICA4NzpcdFx0ICBDdXJyZW50bHkgb25seSB0aGUgcGFja2V0IGZpbHRlcmluZyBhbmQgcGFja2V0IG1hbmdsaW5nIHN1YnN5c3RlbVxuICA4ODpcdFx0ICBmb3IgSVB2NiB1c2UgdGhpcywgYnV0IGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgZ29pbmcgdG8gZm9sbG93LlxuICA4OTpcdFx0ICBTYXkgJiMzOTtZJiMzOTsgb3IgJiMzOTtNJiMzOTsgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgZWl0aGVyIG9mIHRob3NlLlxuICA5MDpcdFxuICA5MTpcdFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgOTI6XHRcbiAgOTM6XHRpZiBJUDZfTkZfSVBUQUJMRVNcbiAgOTQ6XHRcbiAgOTU6XHQjIFRoZSBzaW1wbGUgbWF0Y2hlcy5cbiAgOTY6XHRjb25maWcgSVA2X05GX01BVENIX0FIXG4gIDk3Olx0XHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2FoXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuICA5ODpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiAgOTk6XHRcdGhlbHBcbiAxMDA6XHRcdCAgVGhpcyBtb2R1bGUgYWxsb3dzIG9uZSB0byBtYXRjaCBBSCBwYWNrZXRzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDgxNwoJCQkJCQkJb3V0cHV0OiAxODAKCQkJCQkJCXRob3VnaHRzOiA1MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElQdjYgTmV0ZmlsdGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2ggYW5kIEkmIzM5O3ZlIGdvdCBhIHByZXR0eSBnb29kIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBGaXJzdCBvZmYsIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGFuZCBgSVA2X05GX01BVENIX1NSSGAgYXJlIGFsbCBjb25kaXRpb25hbCB1bmRlciBgSVA2X05GX0lQVEFCTEVTYC4gIFRoYXQmIzM5O3Mga2V5LgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBpbnRlcmVzdGluZy4gSXQmIzM5O3MgY2hhbmdpbmcgdGhlIGJlaGF2aW9yIG9mIElQdjYgbmV0ZmlsdGVyIG1hdGNoIGV4dGVuc2lvbnMg4oCTIHNwZWNpZmljYWxseSBmb3IgSG9wLWJ5LUhvcCBvcHRpb25zIChoYmgpLCBJUHY2IGhlYWRlcnMsIGFuZCBTb3VyY2UgUm91dGluZyBIZWFkZXJzIChTUkgpLiBJbnN0ZWFkIG9mIHNpbXBseSByZXR1cm5pbmcgJiMzNDtmYWxzZSYjMzQ7IHdoZW4gZW5jb3VudGVyaW5nIGEgbWFsZm9ybWVkIHBhY2tldCwgaXQmIzM5O3Mgbm93IHNldCB0byAmIzM0O2hvdGRyb3AmIzM0OyBpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHNpZ25pZmljYW50IG9uZSBhdCB0aGF0LCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgY29uc2lkZXIgZnV6emluZy4gIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB1c2Vyc3BhY2UgdGhyb3VnaCBgaXA2dGFibGVzYCBydWxlIGNvbmZpZ3VyYXRpb24gYW5kIGNyYWZ0aW5nIHNwZWNpZmljIElQdjYgcGFja2V0cy4KClRoZSBzeW1ib2xzIHRoYXQgc2VlbSBsaWtlIGdvb2QgdGFyZ2V0cyBmb3IgZnV6emluZyBhcmU6IGBoYmhfbXQ2YCwgYGlwdjZoZWFkZXJfbXQ2YCwgYW5kIGBzcmhfbXQ2YCwgYXMgd2VsbCBhcyBgc3JoMV9tdDZgLgoKTm93LCBmb3IgZW5hYmxpbmcgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbnMsIGl04oCZcyBjbGVhciB3ZSBuZWVkOgoKKiAgIGBJUDZfTkZfSVBUQUJMRVNgIChlc3NlbnRpYWwgYmVjYXVzZSBpdCBjb250cm9scyB0aGUgbWF0Y2hlcykKKiAgIGBJUDZfTkZfTUFUQ0hfT1BUU2AKKiAgIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAKKiAgIGBJUDZfTkZfTUFUQ0hfU1JIYAoqICAgYE5FVEZJTFRFUl9BRFZBTkNFRGAgKGEgYm9vbGVhbiwgc28gaXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkIHRvIGluY2x1ZGUpCgpJIGRpZCBicmllZmx5IGNvbnNpZGVyIGBJUDZfTkZfSVBUQUJMRVNfTEVHQUNZYCBidXQgaXQgbG9va3MgbGlrZSBgSVA2X05GX0lQVEFCTEVTYCBpcyBzdWZmaWNpZW50IHNpbmNlIHRoYXQmIzM5O3MgdGhlIG1haW4gY29udHJvbCBmb3IgdGhlIG1hdGNoZXMuCgpJIGRvdWJsZS1jaGVja2VkIHRvIGNvbmZpcm0gdGhhdCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3RseSBhc3NvY2lhdGVkIHdpdGggdGhlaXIgcmVzcGVjdGl2ZSBmaWxlczogYElQNl9ORl9NQVRDSF9PUFRTYCBpcyBpbmRlZWQgZm9yIGBpcDZ0X2hiaC5jYCwgYElQNl9ORl9NQVRDSF9JUFY2SEVBREVSYCBpcyBmb3IgYGlwNnRfaXB2NmhlYWRlci5jYCwgYW5kIGBJUDZfTkZfTUFUQ0hfU1JIYCBpcyBjb3JyZWN0IGZvciBgaXA2dF9zcmguY2AuICBBbGwgY2hlY2tzIG91dC4KCk9rYXksIEkmIzM5O20gY29uZmlkZW50IGluIHRoZXNlIGZpbmRpbmdzLiBJJiMzOTttIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQNl9ORl9JUFRBQkxFUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfT1BUUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUiYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfU1JIJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hiaF9tdDYmIzM0OywKICAgICYjMzQ7aXB2NmhlYWRlcl9tdDYmIzM0OywKICAgICYjMzQ7c3JoX210NiYjMzQ7LAogICAgJiMzNDtzcmgxX210NiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBleHRlbnNpb25zIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gZHJvcCBtYWxmb3JtZWQgcGFja2V0cyAoaG90ZHJvcCkgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHBhY2tldCBwcm9jZXNzaW5nIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIGlwNnRhYmxlcyBydWxlcyBhbmQgc2VuZGluZyBjcmFmdGVkIElQdjYgcGFja2V0cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVA2X05GX0lQVEFCTEVTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9PUFRTJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9TUkgmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aGJoX210NiYjMzQ7LAogICAgJiMzNDtpcHY2aGVhZGVyX210NiYjMzQ7LAogICAgJiMzNDtzcmhfbXQ2JiMzNDssCiAgICAmIzM0O3NyaDFfbXQ2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIGV4dGVuc2lvbnMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBkcm9wIG1hbGZvcm1lZCBwYWNrZXRzIChob3Rkcm9wKSBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcGFja2V0IHByb2Nlc3NpbmcgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgaXA2dGFibGVzIHJ1bGVzIGFuZCBzZW5kaW5nIGNyYWZ0ZWQgSVB2NiBwYWNrZXRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDM6NTMuNDAyNTk5ODIzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0NTU5OTI0MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVA2X05GX0lQVEFCTEVTXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX0lQVjZIRUFERVJcIixcbiAgICBcIklQNl9ORl9NQVRDSF9TUkhcIixcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhiaF9tdDZcIixcbiAgICBcImlwdjZoZWFkZXJfbXQ2XCIsXG4gICAgXCJzcmhfbXQ2XCIsXG4gICAgXCJzcmgxX210NlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIGV4dGVuc2lvbnMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBkcm9wIG1hbGZvcm1lZCBwYWNrZXRzIChob3Rkcm9wKSBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcGFja2V0IHByb2Nlc3NpbmcgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgaXA2dGFibGVzIHJ1bGVzIGFuZCBzZW5kaW5nIGNyYWZ0ZWQgSVB2NiBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNjowMzo1My40MDI2MDg3MzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1Mzk5ODU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFmNDhiNDRiYWRhYTI1NmRjMjI5NmM0OWZiNTI5YmUwNmU5ZjUwOGJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTY6MDM6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xcbmluZGV4IDZkMWE1ZDIwMjZhNjc4Li4xYjVkY2M5MmI3ZGE0OSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXFxuQEAgLTYyLDIxICs2MiwxOCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0ICAgIE5FWFRIRFJfSE9QIDogTkVYVEhEUl9ERVNULCBOVUxMLCBOVUxMKTtcXG4gXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4gXFx0XFx0aWYgKGVyciAhPSAtRU5PRU5UKVxcbi1cXHRcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbitcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0fVxcbiBcXG4gXFx0b2ggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0c2gpLCBcXHUwMDI2X29wdHNoKTtcXG4tXFx0aWYgKG9oID09IE5VTEwpIHtcXG4tXFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4tXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi1cXHR9XFxuK1xcdGlmICghb2gpXFxuK1xcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFxuIFxcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKG9oKTtcXG4gXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gcHRyIFxcdTAwM2MgaGRybGVuKSB7XFxuIFxcdFxcdC8qIFBhY2tldCBzbWFsbGVyIHRoYW4gaXQncyBsZW5ndGggZmllbGQgKi9cXG4tXFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4tXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdH1cXG4gXFxuIFxcdHByX2RlYnVnKFxcXCJJUHY2IE9QVFMgTEVOICV1ICV1IFxcXCIsIGhkcmxlbiwgb2gtXFx1MDAzZWhkcmxlbik7XFxuQEAgLTEwNCw4ICsxMDEsOCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdFxcdHRwID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgcHRyLCBzaXplb2YoX29wdHR5cGUpLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2X29wdHR5cGUpO1xcbi1cXHRcXHRcXHRpZiAodHAgPT0gTlVMTClcXG4tXFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdGlmICghdHApXFxuK1xcdFxcdFxcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFxuIFxcdFxcdFxcdC8qIFR5cGUgY2hlY2sgKi9cXG4gXFx0XFx0XFx0aWYgKCp0cCAhPSAob3B0aW5mby1cXHUwMDNlb3B0c1t0ZW1wXSBcXHUwMDI2IDB4RkYwMCkgXFx1MDAzZVxcdTAwM2UgOCkge1xcbkBAIC0xMjEsMTIgKzExOCwxMiBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFxuIFxcdFxcdFxcdFxcdC8qIGxlbmd0aCBmaWVsZCBleGlzdHMgPyAqL1xcbiBcXHRcXHRcXHRcXHRpZiAoaGRybGVuIFxcdTAwM2MgMilcXG4tXFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdFxcdFxcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFx0XFx0XFx0XFx0bHAgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIgKyAxLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRzaXplb2YoX29wdGxlbiksXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdTAwMjZfb3B0bGVuKTtcXG4tXFx0XFx0XFx0XFx0aWYgKGxwID09IE5VTEwpXFxuLVxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRcXHRpZiAoIWxwKVxcbitcXHRcXHRcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdFxcdFxcdHNwZWNfbGVuID0gb3B0aW5mby1cXHUwMDNlb3B0c1t0ZW1wXSBcXHUwMDI2IDB4MDBGRjtcXG4gXFxuIFxcdFxcdFxcdFxcdGlmIChzcGVjX2xlbiAhPSAweDAwRkYgXFx1MDAyNlxcdTAwMjYgc3BlY19sZW4gIT0gKmxwKSB7XFxuQEAgLTE0Nyw3ICsxNDQsNyBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0aWYgKChwdHIgXFx1MDAzZSBza2ItXFx1MDAzZWxlbiAtIG9wdGxlbiB8fCBoZHJsZW4gXFx1MDAzYyBvcHRsZW4pIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICB0ZW1wIFxcdTAwM2Mgb3B0aW5mby1cXHUwMDNlb3B0c25yIC0gMSkge1xcbiBcXHRcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwibmV3IHBvaW50ZXIgaXMgdG9vIGxhcmdlIVxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0XFx0cHRyICs9IG9wdGxlbjtcXG4gXFx0XFx0XFx0aGRybGVuIC09IG9wdGxlbjtcXG5AQCAtMTU5LDYgKzE1NiwxMCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIGZhbHNlO1xcbitcXG4raG90ZHJvcDpcXG4rXFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGhiaF9tdDZfY2hlY2soY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuY1xcbmluZGV4IGM1MmZmOTI5YzkzYjM2Li45MWEzNWU4M2IyN2Y0ZCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcXG5AQCAtMjgsNyArMjgsNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IGlwNnRfaXB2NmhlYWRlcl9pbmZvICppbmZvID0gcGFyLVxcdTAwM2VtYXRjaGluZm87XFxuIFxcdHVuc2lnbmVkIGludCB0ZW1wO1xcbi1cXHRpbnQgbGVuO1xcbiBcXHR1OCBuZXh0aGRyO1xcbiBcXHR1bnNpZ25lZCBpbnQgcHRyO1xcbiBcXG5AQCAtMzgsOCArMzcsNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdG5leHRoZHIgPSBpcHY2X2hkcihza2IpLVxcdTAwM2VuZXh0aGRyO1xcbiBcXHQvKiBwb2ludGVyIHRvIHRoZSAxc3QgZXh0aGRyICovXFxuIFxcdHB0ciA9IHNpemVvZihzdHJ1Y3QgaXB2Nmhkcik7XFxuLVxcdC8qIGF2YWlsYWJsZSBsZW5ndGggKi9cXG4tXFx0bGVuID0gc2tiLVxcdTAwM2VsZW4gLSBwdHI7XFxuIFxcdHRlbXAgPSAwO1xcbiBcXG4gXFx0d2hpbGUgKG5mX2lwNl9leHRfaGRyKG5leHRoZHIpKSB7XFxuQEAgLTUyLDkgKzQ5LDYgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbiBcXHRcXHRcXHR0ZW1wIHw9IE1BU0tfTk9ORTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4tXFx0XFx0LyogSXMgdGhlcmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV4dCBleHQgaGVhZGVyPyAqL1xcbi1cXHRcXHRpZiAobGVuIFxcdTAwM2MgKGludClzaXplb2Yoc3RydWN0IGlwdjZfb3B0X2hkcikpXFxuLVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFx0XFx0LyogRVNQIC1cXHUwMDNlIGV2YWx1YXRlICovXFxuIFxcdFxcdGlmIChuZXh0aGRyID09IE5FWFRIRFJfRVNQKSB7XFxuIFxcdFxcdFxcdHRlbXAgfD0gTUFTS19FU1A7XFxuQEAgLTk3LDEwICs5MSwxMSBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdG5leHRoZHIgPSBocC1cXHUwMDNlbmV4dGhkcjtcXG4tXFx0XFx0bGVuIC09IGhkcmxlbjtcXG4gXFx0XFx0cHRyICs9IGhkcmxlbjtcXG4tXFx0XFx0aWYgKHB0ciBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKVxcbi1cXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0aWYgKHB0ciBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKSB7XFxuK1xcdFxcdFxcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRpZiAobmV4dGhkciAhPSBORVhUSERSX05PTkUgXFx1MDAyNlxcdTAwMjYgbmV4dGhkciAhPSBORVhUSERSX0VTUClcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xcbmluZGV4IGRiMGZkNjRkODk4NjI3Li42ZmNjNDAxMDJmZTNkZiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXFxuQEAgLTI3LDIyICsyNywyNyBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XFxuIFxcdHN0cnVjdCBpcHY2X3NyX2hkciBfc3JoO1xcbiBcXHRpbnQgaGRybGVuLCBzcmhvZmYgPSAwO1xcbitcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKGlwdjZfZmluZF9oZHIoc2tiLCBcXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFxcdTAwM2MgMClcXG4rXFx0ZXJyID0gaXB2Nl9maW5kX2hkcihza2IsIFxcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XFxuK1xcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdGlmIChlcnIgIT0gLUVOT0VOVClcXG4rXFx0XFx0XFx0Z290byBob3Rkcm9wO1xcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4gXFx0c3JoID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgc3Job2ZmLCBzaXplb2YoX3NyaCksIFxcdTAwMjZfc3JoKTtcXG4gXFx0aWYgKCFzcmgpXFxuLVxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0Z290byBob3Rkcm9wO1xcbiBcXG4gXFx0aGRybGVuID0gaXB2Nl9vcHRsZW4oc3JoKTtcXG4gXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gc3Job2ZmIFxcdTAwM2MgaGRybGVuKVxcbi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFxuIFxcdGlmIChzcmgtXFx1MDAzZXR5cGUgIT0gSVBWNl9TUkNSVF9UWVBFXzQpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuIFxcdGlmIChzcmgtXFx1MDAzZXNlZ21lbnRzX2xlZnQgXFx1MDAzZSBzcmgtXFx1MDAzZWZpcnN0X3NlZ21lbnQpXFxuLVxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0Z290byBob3Rkcm9wO1xcbiBcXG4gXFx0LyogTmV4dCBIZWFkZXIgbWF0Y2hpbmcgKi9cXG4gXFx0aWYgKHNyaGluZm8tXFx1MDAzZW10X2ZsYWdzIFxcdTAwMjYgSVA2VF9TUkhfTkVYVEhEUilcXG5AQCAtMTExLDYgKzExNiwxMCBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0XFx0IShzcmgtXFx1MDAzZXRhZyA9PSBzcmhpbmZvLVxcdTAwM2V0YWcpKSlcXG4gXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK2hvdGRyb3A6XFxuK1xcdHBhci1cXHUwMDNlaG90ZHJvcCA9IHRydWU7XFxuK1xcdHJldHVybiBmYWxzZTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbkBAIC0xMjEsMjIgKzEzMCwzMSBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdHN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkO1xcbiBcXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgKnNyaDtcXG4gXFx0c3RydWN0IGlwdjZfc3JfaGRyIF9zcmg7XFxuK1xcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoaXB2Nl9maW5kX2hkcihza2IsIFxcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCkgXFx1MDAzYyAwKVxcbitcXHRlcnIgPSBpcHY2X2ZpbmRfaGRyKHNrYiwgXFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTtcXG4rXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4rXFx0XFx0aWYgKGVyciAhPSAtRU5PRU5UKVxcbitcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbiBcXHRzcmggPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBzcmhvZmYsIHNpemVvZihfc3JoKSwgXFx1MDAyNl9zcmgpO1xcbiBcXHRpZiAoIXNyaClcXG4tXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcbiBcXHRoZHJsZW4gPSBpcHY2X29wdGxlbihzcmgpO1xcbiBcXHRpZiAoc2tiLVxcdTAwM2VsZW4gLSBzcmhvZmYgXFx1MDAzYyBoZHJsZW4pXFxuLVxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0Z290byBob3Rkcm9wO1xcbiBcXG4gXFx0aWYgKHNyaC1cXHUwMDNldHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNClcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4rXFx0aWYgKHNpemVvZigqc3JoKSArXFxuK1xcdCAgICAoKHNyaC1cXHUwMDNlZmlyc3Rfc2VnbWVudCArIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIFxcdTAwM2UgaGRybGVuKVxcbitcXHRcXHRnb3RvIGhvdGRyb3A7XFxuK1xcbiBcXHRpZiAoc3JoLVxcdTAwM2VzZWdtZW50c19sZWZ0IFxcdTAwM2Ugc3JoLVxcdTAwM2VmaXJzdF9zZWdtZW50KVxcbi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFxuIFxcdC8qIE5leHQgSGVhZGVyIG1hdGNoaW5nICovXFxuIFxcdGlmIChzcmhpbmZvLVxcdTAwM2VtdF9mbGFncyBcXHUwMDI2IElQNlRfU1JIX05FWFRIRFIpXFxuQEAgLTIwNyw3ICsyMjUsNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdFxcdFxcdCAgKChzcmgtXFx1MDAzZXNlZ21lbnRzX2xlZnQgKyAxKSAqIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTtcXG4gXFx0XFx0cHNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHBzaWRvZmYsIHNpemVvZihfcHNpZCksIFxcdTAwMjZfcHNpZCk7XFxuIFxcdFxcdGlmICghcHNpZClcXG4tXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfUFNJRCxcXG4gXFx0XFx0XFx0XFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAocHNpZCwgXFx1MDAyNnNyaGluZm8tXFx1MDAzZXBzaWRfbXNrLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzcmhpbmZvLVxcdTAwM2Vwc2lkX2FkZHIpKSlcXG5AQCAtMjIyLDcgKzI0MCw3IEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0XFx0XFx0ICAoKHNyaC1cXHUwMDNlc2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xcbiBcXHRcXHRuc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgXFx1MDAyNl9uc2lkKTtcXG4gXFx0XFx0aWYgKCFuc2lkKVxcbi1cXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdFxcdGdvdG8gaG90ZHJvcDtcXG4gXFx0XFx0aWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9OU0lELFxcbiBcXHRcXHRcXHRcXHRpcHY2X21hc2tlZF9hZGRyX2NtcChuc2lkLCBcXHUwMDI2c3JoaW5mby1cXHUwMDNlbnNpZF9tc2ssXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnNyaGluZm8tXFx1MDAzZW5zaWRfYWRkcikpKVxcbkBAIC0yMzQsMTMgKzI1MiwxNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdFxcdGxzaWRvZmYgPSBzcmhvZmYgKyBzaXplb2Yoc3RydWN0IGlwdjZfc3JfaGRyKTtcXG4gXFx0XFx0bHNpZCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIGxzaWRvZmYsIHNpemVvZihfbHNpZCksIFxcdTAwMjZfbHNpZCk7XFxuIFxcdFxcdGlmICghbHNpZClcXG4tXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHRcXHRcXHRnb3RvIGhvdGRyb3A7XFxuIFxcdFxcdGlmIChORl9TUkhfSU5WRihzcmhpbmZvLCBJUDZUX1NSSF9JTlZfTFNJRCxcXG4gXFx0XFx0XFx0XFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobHNpZCwgXFx1MDAyNnNyaGluZm8tXFx1MDAzZWxzaWRfbXNrLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZzcmhpbmZvLVxcdTAwM2Vsc2lkX2FkZHIpKSlcXG4gXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHR9XFxuIFxcdHJldHVybiB0cnVlO1xcbitcXG4raG90ZHJvcDpcXG4rXFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHNyaF9tdDZfY2hlY2soY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjAzOjU0LjA1NzU2MDQ0OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU3ODAxMDE2MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQNl9ORl9JUFRBQkxFU1wiLFxuICAgIFwiSVA2X05GX01BVENIX09QVFNcIixcbiAgICBcIklQNl9ORl9NQVRDSF9JUFY2SEVBREVSXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfU1JIXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoYmhfbXQ2XCIsXG4gICAgXCJpcHY2aGVhZGVyX210NlwiLFxuICAgIFwic3JoX210NlwiLFxuICAgIFwic3JoMV9tdDZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUHY2IG5ldGZpbHRlciBtYXRjaCBleHRlbnNpb25zIChoYmgsIGlwdjZoZWFkZXIsIHNyaCkgdG8gZHJvcCBtYWxmb3JtZWQgcGFja2V0cyAoaG90ZHJvcCkgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBmYWxzZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHBhY2tldCBwcm9jZXNzaW5nIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGJ5IGNvbmZpZ3VyaW5nIGlwNnRhYmxlcyBydWxlcyBhbmQgc2VuZGluZyBjcmFmdGVkIElQdjYgcGFja2V0cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWY0OGI0NGJhZGFhMjU2ZGMyMjk2YzQ5ZmI1MjliZTA2ZTlmNTA4YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDE2OjAzOjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuaW5kZXggNmQxYTVkMjAyNmE2NzguLjFiNWRjYzkyYjdkYTQ5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG5AQCAtNjIsMjEgKzYyLDE4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdCAgICBORVhUSERSX0hPUCA6IE5FWFRIRFJfREVTVCwgTlVMTCwgTlVMTCk7XG4gXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4gXHRcdGlmIChlcnIgIT0gLUVOT0VOVClcbi1cdFx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4rXHRcdFx0Z290byBob3Rkcm9wO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4gXHRvaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciwgc2l6ZW9mKF9vcHRzaCksIFx1MDAyNl9vcHRzaCk7XG4tXHRpZiAob2ggPT0gTlVMTCkge1xuLVx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4tXHRcdHJldHVybiBmYWxzZTtcbi1cdH1cbitcdGlmICghb2gpXG4rXHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKG9oKTtcbiBcdGlmIChza2ItXHUwMDNlbGVuIC0gcHRyIFx1MDAzYyBoZHJsZW4pIHtcbiBcdFx0LyogUGFja2V0IHNtYWxsZXIgdGhhbiBpdCdzIGxlbmd0aCBmaWVsZCAqL1xuLVx0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4tXHRcdHJldHVybiBmYWxzZTtcbitcdFx0Z290byBob3Rkcm9wO1xuIFx0fVxuIFxuIFx0cHJfZGVidWcoXCJJUHY2IE9QVFMgTEVOICV1ICV1IFwiLCBoZHJsZW4sIG9oLVx1MDAzZWhkcmxlbik7XG5AQCAtMTA0LDggKzEwMSw4IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdFx0YnJlYWs7XG4gXHRcdFx0dHAgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwdHIsIHNpemVvZihfb3B0dHlwZSksXG4gXHRcdFx0XHRcdFx0XHUwMDI2X29wdHR5cGUpO1xuLVx0XHRcdGlmICh0cCA9PSBOVUxMKVxuLVx0XHRcdFx0YnJlYWs7XG4rXHRcdFx0aWYgKCF0cClcbitcdFx0XHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdFx0XHQvKiBUeXBlIGNoZWNrICovXG4gXHRcdFx0aWYgKCp0cCAhPSAob3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweEZGMDApIFx1MDAzZVx1MDAzZSA4KSB7XG5AQCAtMTIxLDEyICsxMTgsMTIgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXG4gXHRcdFx0XHQvKiBsZW5ndGggZmllbGQgZXhpc3RzID8gKi9cbiBcdFx0XHRcdGlmIChoZHJsZW4gXHUwMDNjIDIpXG4tXHRcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdFx0XHRscCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHB0ciArIDEsXG4gXHRcdFx0XHRcdFx0XHRzaXplb2YoX29wdGxlbiksXG4gXHRcdFx0XHRcdFx0XHRcdTAwMjZfb3B0bGVuKTtcbi1cdFx0XHRcdGlmIChscCA9PSBOVUxMKVxuLVx0XHRcdFx0XHRicmVhaztcbitcdFx0XHRcdGlmICghbHApXG4rXHRcdFx0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0XHRcdHNwZWNfbGVuID0gb3B0aW5mby1cdTAwM2VvcHRzW3RlbXBdIFx1MDAyNiAweDAwRkY7XG4gXG4gXHRcdFx0XHRpZiAoc3BlY19sZW4gIT0gMHgwMEZGIFx1MDAyNlx1MDAyNiBzcGVjX2xlbiAhPSAqbHApIHtcbkBAIC0xNDcsNyArMTQ0LDcgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0aWYgKChwdHIgXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSBvcHRsZW4gfHwgaGRybGVuIFx1MDAzYyBvcHRsZW4pIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICB0ZW1wIFx1MDAzYyBvcHRpbmZvLVx1MDAzZW9wdHNuciAtIDEpIHtcbiBcdFx0XHRcdHByX2RlYnVnKFwibmV3IHBvaW50ZXIgaXMgdG9vIGxhcmdlIVxcblwiKTtcbi1cdFx0XHRcdGJyZWFrO1xuK1x0XHRcdFx0Z290byBob3Rkcm9wO1xuIFx0XHRcdH1cbiBcdFx0XHRwdHIgKz0gb3B0bGVuO1xuIFx0XHRcdGhkcmxlbiAtPSBvcHRsZW47XG5AQCAtMTU5LDYgKzE1NiwxMCBAQCBoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdH1cbiBcbiBcdHJldHVybiBmYWxzZTtcbitcbitob3Rkcm9wOlxuK1x0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbiBzdGF0aWMgaW50IGhiaF9tdDZfY2hlY2soY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaXB2NmhlYWRlci5jXG5pbmRleCBjNTJmZjkyOWM5M2IzNi4uOTFhMzVlODNiMjdmNGQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9pcHY2aGVhZGVyLmNcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2lwdjZoZWFkZXIuY1xuQEAgLTI4LDcgKzI4LDYgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBpcDZ0X2lwdjZoZWFkZXJfaW5mbyAqaW5mbyA9IHBhci1cdTAwM2VtYXRjaGluZm87XG4gXHR1bnNpZ25lZCBpbnQgdGVtcDtcbi1cdGludCBsZW47XG4gXHR1OCBuZXh0aGRyO1xuIFx0dW5zaWduZWQgaW50IHB0cjtcbiBcbkBAIC0zOCw4ICszNyw2IEBAIGlwdjZoZWFkZXJfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdG5leHRoZHIgPSBpcHY2X2hkcihza2IpLVx1MDAzZW5leHRoZHI7XG4gXHQvKiBwb2ludGVyIHRvIHRoZSAxc3QgZXh0aGRyICovXG4gXHRwdHIgPSBzaXplb2Yoc3RydWN0IGlwdjZoZHIpO1xuLVx0LyogYXZhaWxhYmxlIGxlbmd0aCAqL1xuLVx0bGVuID0gc2tiLVx1MDAzZWxlbiAtIHB0cjtcbiBcdHRlbXAgPSAwO1xuIFxuIFx0d2hpbGUgKG5mX2lwNl9leHRfaGRyKG5leHRoZHIpKSB7XG5AQCAtNTIsOSArNDksNiBAQCBpcHY2aGVhZGVyX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0dGVtcCB8PSBNQVNLX05PTkU7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbi1cdFx0LyogSXMgdGhlcmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgbmV4dCBleHQgaGVhZGVyPyAqL1xuLVx0XHRpZiAobGVuIFx1MDAzYyAoaW50KXNpemVvZihzdHJ1Y3QgaXB2Nl9vcHRfaGRyKSlcbi1cdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHRcdC8qIEVTUCAtXHUwMDNlIGV2YWx1YXRlICovXG4gXHRcdGlmIChuZXh0aGRyID09IE5FWFRIRFJfRVNQKSB7XG4gXHRcdFx0dGVtcCB8PSBNQVNLX0VTUDtcbkBAIC05NywxMCArOTEsMTEgQEAgaXB2NmhlYWRlcl9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHR9XG4gXG4gXHRcdG5leHRoZHIgPSBocC1cdTAwM2VuZXh0aGRyO1xuLVx0XHRsZW4gLT0gaGRybGVuO1xuIFx0XHRwdHIgKz0gaGRybGVuO1xuLVx0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKVxuLVx0XHRcdGJyZWFrO1xuK1x0XHRpZiAocHRyIFx1MDAzZSBza2ItXHUwMDNlbGVuKSB7XG4rXHRcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0aWYgKG5leHRoZHIgIT0gTkVYVEhEUl9OT05FIFx1MDAyNlx1MDAyNiBuZXh0aGRyICE9IE5FWFRIRFJfRVNQKVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmNcbmluZGV4IGRiMGZkNjRkODk4NjI3Li42ZmNjNDAxMDJmZTNkZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9zcmguY1xuQEAgLTI3LDIyICsyNywyNyBAQCBzdGF0aWMgYm9vbCBzcmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdHN0cnVjdCBpcHY2X3NyX2hkciAqc3JoO1xuIFx0c3RydWN0IGlwdjZfc3JfaGRyIF9zcmg7XG4gXHRpbnQgaGRybGVuLCBzcmhvZmYgPSAwO1xuK1x0aW50IGVycjtcbiBcbi1cdGlmIChpcHY2X2ZpbmRfaGRyKHNrYiwgXHUwMDI2c3Job2ZmLCBJUFBST1RPX1JPVVRJTkcsIE5VTEwsIE5VTEwpIFx1MDAzYyAwKVxuK1x0ZXJyID0gaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKTtcbitcdGlmIChlcnIgXHUwMDNjIDApIHtcbitcdFx0aWYgKGVyciAhPSAtRU5PRU5UKVxuK1x0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuIFx0c3JoID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgc3Job2ZmLCBzaXplb2YoX3NyaCksIFx1MDAyNl9zcmgpO1xuIFx0aWYgKCFzcmgpXG4tXHRcdHJldHVybiBmYWxzZTtcbitcdFx0Z290byBob3Rkcm9wO1xuIFxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4oc3JoKTtcbiBcdGlmIChza2ItXHUwMDNlbGVuIC0gc3Job2ZmIFx1MDAzYyBoZHJsZW4pXG4tXHRcdHJldHVybiBmYWxzZTtcbitcdFx0Z290byBob3Rkcm9wO1xuIFxuIFx0aWYgKHNyaC1cdTAwM2V0eXBlICE9IElQVjZfU1JDUlRfVFlQRV80KVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRpZiAoc3JoLVx1MDAzZXNlZ21lbnRzX2xlZnQgXHUwMDNlIHNyaC1cdTAwM2VmaXJzdF9zZWdtZW50KVxuLVx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdC8qIE5leHQgSGVhZGVyIG1hdGNoaW5nICovXG4gXHRpZiAoc3JoaW5mby1cdTAwM2VtdF9mbGFncyBcdTAwMjYgSVA2VF9TUkhfTkVYVEhEUilcbkBAIC0xMTEsNiArMTE2LDEwIEBAIHN0YXRpYyBib29sIHNyaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdFx0IShzcmgtXHUwMDNldGFnID09IHNyaGluZm8tXHUwMDNldGFnKSkpXG4gXHRcdFx0cmV0dXJuIGZhbHNlO1xuIFx0cmV0dXJuIHRydWU7XG4rXG4raG90ZHJvcDpcbitcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbitcdHJldHVybiBmYWxzZTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuQEAgLTEyMSwyMiArMTMwLDMxIEBAIHN0YXRpYyBib29sIHNyaDFfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdHN0cnVjdCBpbjZfYWRkciBfcHNpZCwgX25zaWQsIF9sc2lkO1xuIFx0c3RydWN0IGlwdjZfc3JfaGRyICpzcmg7XG4gXHRzdHJ1Y3QgaXB2Nl9zcl9oZHIgX3NyaDtcbitcdGludCBlcnI7XG4gXG4tXHRpZiAoaXB2Nl9maW5kX2hkcihza2IsIFx1MDAyNnNyaG9mZiwgSVBQUk9UT19ST1VUSU5HLCBOVUxMLCBOVUxMKSBcdTAwM2MgMClcbitcdGVyciA9IGlwdjZfZmluZF9oZHIoc2tiLCBcdTAwMjZzcmhvZmYsIElQUFJPVE9fUk9VVElORywgTlVMTCwgTlVMTCk7XG4rXHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4rXHRcdGlmIChlcnIgIT0gLUVOT0VOVClcbitcdFx0XHRnb3RvIGhvdGRyb3A7XG4gXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiBcdHNyaCA9IHNrYl9oZWFkZXJfcG9pbnRlcihza2IsIHNyaG9mZiwgc2l6ZW9mKF9zcmgpLCBcdTAwMjZfc3JoKTtcbiBcdGlmICghc3JoKVxuLVx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKHNyaCk7XG4gXHRpZiAoc2tiLVx1MDAzZWxlbiAtIHNyaG9mZiBcdTAwM2MgaGRybGVuKVxuLVx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdGdvdG8gaG90ZHJvcDtcbiBcbiBcdGlmIChzcmgtXHUwMDNldHlwZSAhPSBJUFY2X1NSQ1JUX1RZUEVfNClcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuK1x0aWYgKHNpemVvZigqc3JoKSArXG4rXHQgICAgKChzcmgtXHUwMDNlZmlyc3Rfc2VnbWVudCArIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIFx1MDAzZSBoZHJsZW4pXG4rXHRcdGdvdG8gaG90ZHJvcDtcbitcbiBcdGlmIChzcmgtXHUwMDNlc2VnbWVudHNfbGVmdCBcdTAwM2Ugc3JoLVx1MDAzZWZpcnN0X3NlZ21lbnQpXG4tXHRcdHJldHVybiBmYWxzZTtcbitcdFx0Z290byBob3Rkcm9wO1xuIFxuIFx0LyogTmV4dCBIZWFkZXIgbWF0Y2hpbmcgKi9cbiBcdGlmIChzcmhpbmZvLVx1MDAzZW10X2ZsYWdzIFx1MDAyNiBJUDZUX1NSSF9ORVhUSERSKVxuQEAgLTIwNyw3ICsyMjUsNyBAQCBzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4gXHRcdFx0ICAoKHNyaC1cdTAwM2VzZWdtZW50c19sZWZ0ICsgMSkgKiBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7XG4gXHRcdHBzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBwc2lkb2ZmLCBzaXplb2YoX3BzaWQpLCBcdTAwMjZfcHNpZCk7XG4gXHRcdGlmICghcHNpZClcbi1cdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdFx0Z290byBob3Rkcm9wO1xuIFx0XHRpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX1BTSUQsXG4gXHRcdFx0XHRpcHY2X21hc2tlZF9hZGRyX2NtcChwc2lkLCBcdTAwMjZzcmhpbmZvLVx1MDAzZXBzaWRfbXNrLFxuIFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c3JoaW5mby1cdTAwM2Vwc2lkX2FkZHIpKSlcbkBAIC0yMjIsNyArMjQwLDcgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRcdCAgKChzcmgtXHUwMDNlc2VnbWVudHNfbGVmdCAtIDEpICogc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpO1xuIFx0XHRuc2lkID0gc2tiX2hlYWRlcl9wb2ludGVyKHNrYiwgbnNpZG9mZiwgc2l6ZW9mKF9uc2lkKSwgXHUwMDI2X25zaWQpO1xuIFx0XHRpZiAoIW5zaWQpXG4tXHRcdFx0cmV0dXJuIGZhbHNlO1xuK1x0XHRcdGdvdG8gaG90ZHJvcDtcbiBcdFx0aWYgKE5GX1NSSF9JTlZGKHNyaGluZm8sIElQNlRfU1JIX0lOVl9OU0lELFxuIFx0XHRcdFx0aXB2Nl9tYXNrZWRfYWRkcl9jbXAobnNpZCwgXHUwMDI2c3JoaW5mby1cdTAwM2Vuc2lkX21zayxcbiBcdFx0XHRcdFx0XHQgICAgIFx1MDAyNnNyaGluZm8tXHUwMDNlbnNpZF9hZGRyKSkpXG5AQCAtMjM0LDEzICsyNTIsMTcgQEAgc3RhdGljIGJvb2wgc3JoMV9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0XHRsc2lkb2ZmID0gc3Job2ZmICsgc2l6ZW9mKHN0cnVjdCBpcHY2X3NyX2hkcik7XG4gXHRcdGxzaWQgPSBza2JfaGVhZGVyX3BvaW50ZXIoc2tiLCBsc2lkb2ZmLCBzaXplb2YoX2xzaWQpLCBcdTAwMjZfbHNpZCk7XG4gXHRcdGlmICghbHNpZClcbi1cdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHRcdFx0Z290byBob3Rkcm9wO1xuIFx0XHRpZiAoTkZfU1JIX0lOVkYoc3JoaW5mbywgSVA2VF9TUkhfSU5WX0xTSUQsXG4gXHRcdFx0XHRpcHY2X21hc2tlZF9hZGRyX2NtcChsc2lkLCBcdTAwMjZzcmhpbmZvLVx1MDAzZWxzaWRfbXNrLFxuIFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2c3JoaW5mby1cdTAwM2Vsc2lkX2FkZHIpKSlcbiBcdFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXHRyZXR1cm4gdHJ1ZTtcbitcbitob3Rkcm9wOlxuK1x0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuK1x0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbiBzdGF0aWMgaW50IHNyaF9tdDZfY2hlY2soY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNjowMzo1NC4wNTc1NjI0ODhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDg3NzMxNDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0ZmlsdGVyIElQdjYgTWF0Y2ggUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgYWx0ZXJzIHNvbWUgSVB2NiBOZXRmaWx0ZXIgbWF0Y2ggbW9kdWxlcy4gU3BlY2lmaWNhbGx5LCB3ZSd2ZSBnb3QgY2hhbmdlcyBpbiBgaXA2dF9oYmguY2AsIGBpcDZ0X2lwdjZoZWFkZXIuY2AsIGFuZCBgaXA2dF9zcmguY2AuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBgcGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO2AgaW4gYSBmZXcgc3BvdHMuIFRoZSBrZXkgaXMgdGhhdCB0aGlzIG1vZGlmaWNhdGlvbiBtYWtlcyB0aGUgY29kZSAqZHJvcCogbWFsZm9ybWVkIHBhY2tldHMsIHJhdGhlciB0aGFuIGp1c3QgcmV0dXJuaW5nIGBmYWxzZWAsIHdoaWNoIHdvdWxkIGNvbnRpbnVlIHJ1bGUgdHJhdmVyc2FsLiBUaGF0J3MgYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggSSBuZWVkIHRvIHVuZGVyc3RhbmQgY29tcGxldGVseS5cblxuTGV0J3MgZHJpbGwgZG93bi4gVGhlIGFsdGVyZWQgZnVuY3Rpb25zIGFyZTogYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBhbmQgYHNyaF9tdDZgIGFuZCBgc3JoMV9tdDZgLiBJbW1lZGlhdGVseSwgSSByZWNvZ25pemUgdGhlc2UgYXMgTmV0ZmlsdGVyIG1hdGNoIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIElQdjYgY29udGV4dC4gVGhleSdyZSBkZWZpbml0ZWx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2Ug4oCTIHNvbWVvbmUgY2FuIHdyaXRlIGFuIGBpcDZ0YWJsZXNgIHJ1bGUgYW5kIGNyYWZ0IGEgcGFja2V0IHRvIHRyaWdnZXIgdGhlc2Ugcm91dGluZXMuIEkga25vdyB0aGF0IGJlY2F1c2UgaXQncyB0aGUgbmF0dXJlIG9mIE5ldGZpbHRlci4gVGhlIHBhdGNoIGlzbid0IGp1c3QgY29zbWV0aWM7IGl0J3MgYSByZWFsIHNoaWZ0IGluIHBhY2tldCBwcm9jZXNzaW5nLCBhcyBtZW50aW9uZWQgYmVmb3JlOiBmcm9tIFwiY29udGludWUgcHJvY2Vzc2luZ1wiIHRvIFwiZHJvcCBpbW1lZGlhdGVseVwiLlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gV2hhdCBLY29uZmlnIG9wdGlvbiBlbmFibGVzIHRoZXNlIG1vZHVsZXM/IEZvciBgaXA2dF9oYmguY2AsIGlzIGl0IGBDT05GSUdfSVA2X05GX01BVENIX0hCSGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgZGV0YWlsZWQgaW4gdGhlIGBNYWtlZmlsZWAgb3IgYEtjb25maWdgIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9pcHY2L25ldGZpbHRlcmAgZGlyZWN0b3J5LiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGVzZSB0byB1bmRlcnN0YW5kIGhvdyB3aWRlbHkgdGhpcyBwYXRjaCB3aWxsIGltcGFjdCBkZXBsb3llZCBzeXN0ZW1zLiBUaGF0J3MgbXkgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTA2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MDAuMTQ1Mjk2NTAzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTg1Nzg3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpcDZ0X2hiaC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGU9MzY9b2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgKz0gaXA2dF9taC5vXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfT1BUUykgKz0gaXA2dF9oYmgub1xcbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfSVA2X05GX01BVENIX1JQRklMVEVSKSArPSBpcDZ0X3JwZmlsdGVyLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MDAuMzA1MTU4ODU1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk4MTc4MDE3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLZXJuZWwgTW9kdWxlIERlcGVuZGVuY3kgQ2xhcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBDT05GSUdfSVA2X05GX01BVENIX09QVFNgLCBhbmQgaXQncyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gZGlyZWN0bHkgdGllcyBpbnRvIHRoZSBgaXA2dF9oYmgub2Agb2JqZWN0IGZpbGUuIEluIGVzc2VuY2UsIHNldHRpbmcgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiBsaWtlbHkgaW5jbHVkZXMsIGVuYWJsZXMsIG9yIHByb3ZpZGVzIHRoZSBuZWNlc3Nhcnkgc3VwcG9ydCBmb3IgdGhlIFwiaG9wLWJ5LWhvcFwiIGV4dGVuc2lvbiBoZWFkZXIgbWF0Y2hpbmcgbW9kdWxlIGluIHRoZSBJUHY2IG5ldGZpbHRlciBmcmFtZXdvcmsuIEl0J3MgYSBmdW5kYW1lbnRhbCBsaW5rLiBUaGlzIG1lYW5zIGl0J3MgY3JpdGljYWwgdG8gZW5zdXJlIHRoYXQgaWYgYSB1c2UgY2FzZSByZWxpZXMgb24gbWF0Y2hpbmcgb24gSVB2NiBob3AtYnktaG9wIGhlYWRlcnMsIHRoZW4gdGhpcyBjb25maWcgb3B0aW9uIG5lZWRzIHRvIGJlIGVuYWJsZWQgZHVyaW5nIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNvbnNpZGVyIHRoaXMgZGVwZW5kZW5jeSB3aGVuIEknbSBsb29raW5nIGF0IHBvdGVudGlhbCBJUHY2IGZpcmV3YWxsIHJ1bGUgb3B0aW1pemF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk3NCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjAzLjI4Nzk4NTE1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjMwOTgyNjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXA2dF9pcHY2aGVhZGVyLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfSVA2X05GX01BVENIX0ZSQUcpICs9IGlwNnRfZnJhZy5vXFxubmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfSVBWNkhFQURFUikgKz0gaXA2dF9pcHY2aGVhZGVyLm9cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGUtMzYtb2JqLSQoQ09ORklHX0lQNl9ORl9NQVRDSF9NSCkgKz0gaXA2dF9taC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjAzLjQ1MTA4OTM0N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDUxMjUxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIE1vZHVsZSBEZXBlbmRlbmN5IEFuYWx5c2lzOiBJUHY2IEhlYWRlciBNYXRjaGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgQ09ORklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIHRoaXMgZW5hYmxlcyB0aGUgYGlwNnRfaXB2NmhlYWRlci5vYCBtb2R1bGUuXCIgSXQncyBhIGZhaXJseSBzdHJhaWdodGZvcndhcmQgZGVwZW5kZW5jeSwgbm90IHBhcnRpY3VsYXJseSBjb21wbGV4LiBUaGlzIGluZGljYXRlcyB0aGF0IHRoaXMgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gbGlrZWx5IGNvbnRyb2xzIHRoZSBjb21waWxhdGlvbiBhbmQgaW5jbHVzaW9uIG9mIHRoZSBJUHY2IGhlYWRlciBtYXRjaGluZyBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgb3ZlcmFsbCBJUHY2IG5ldGZpbHRlciBmcmFtZXdvcmsuIFNlZW1zIGxpa2Ugc3RhbmRhcmQga2VybmVsIG1vZHVsZSBsb2dpYyBhdCBwbGF5LiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBpZiB0aGVyZSBhcmUgbnVhbmNlcywgYnV0IG9uIHRoZSBzdXJmYWNlLCBpdCdzIGp1c3QgYWJvdXQgZW5hYmxpbmcgdGhlIG1vZHVsZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHRha2UgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGludG8gY29uc2lkZXJhdGlvbiAtIGFuZCBpdCdzIGRlcGVuZGVuY3kgb24gb3RoZXIgdW5kZXJseWluZyBjb25maWd1cmF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM0MSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjA2LjM5NjIxNzMxMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDk2NzE5MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXA2dF9zcmgub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL01ha2VmaWxlPTM5PW9iai0kKENPTkZJR19JUDZfTkZfTUFUQ0hfUlQpICs9IGlwNnRfcnQub1xcbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfSVA2X05GX01BVENIX1NSSCkgKz0gaXA2dF9zcmgub1xcbm5ldC9pcHY2L25ldGZpbHRlci9NYWtlZmlsZS00MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MDYuNTA1ODk2OTM1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1ODg2MTU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYENPTkZJR19JUDZfTkZfTUFUQ0hfU1JIYCBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIGBDT05GSUdfSVA2X05GX01BVENIX1NSSGAg4oCTIHRoYXQgY2xlYXJseSBwb2ludHMgdG8gdGhlIGBpcDZ0X3NyaC5vYCBtb2R1bGUuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IGJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBpdHNlbGYsIEkgYWx3YXlzIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUsIHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IHN1YnRsZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXM/IFNvLCBsZXQncyBwdWxsIHVwIHRoZSBgS2NvbmZpZ2AgZmlsZXMgYW5kIHNlZSB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGZvciB0aGlzIGxpdHRsZSBtb2R1bGUuIEdvdHRhIG1ha2Ugc3VyZSBJIGZ1bGx5IHVuZGVyc3RhbmQgd2hlcmUgaXQgZml0cyBpbiBiZWZvcmUgSSBnbyB0b28gZGVlcC4gVGhhdCdsbCBzYXZlIG1lIHNvbWUgaGVhZGFjaGVzIGxhdGVyLiBUaW1lIHRvIGdldCB0aGF0IGBLY29uZmlnYCBvcGVuZWQgdXAuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY4OCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjA5Ljc2NDc2MTAxMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNDMyNTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz0xMTQ9Y29uZmlnIElQNl9ORl9NQVRDSF9GUkFHXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBJUDZfTkZfTUFUQ0hfT1BUU1xcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZSAnXFxcImhiaFxcXCIgaG9wLWJ5LWhvcCBhbmQgXFxcImRzdFxcXCIgb3B0cyBoZWFkZXIgbWF0Y2ggc3VwcG9ydCdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MDkuODc4MjAyNzA1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2OTk5OTM5NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIENvbnRleHQqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBmb2N1cyBpcyBhcm91bmQgbGluZSAxMjMgb2YgdGhlIEtjb25maWcgZmlsZS4gSSdtIGltbWVkaWF0ZWx5IGhvbWluZyBpbiBvbiB0aGF0IGFyZWEgYmVjYXVzZSBzb21ldGhpbmcgdGhlcmUgaXMgcmVsZXZhbnQgdG8gdGhlIGlzc3VlIGF0IGhhbmQuIEl0J3MgZWl0aGVyIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb24gZGVmaW5pdGlvbiwgYW4gaW5jbHVzaW9uIHN0YXRlbWVudCB0aGF0IG1pZ2h0IHB1bGwgaW4gcmVsYXRlZCBjb25maWd1cmF0aW9uLCBvciBwZXJoYXBzIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgYWZmZWN0cyB0aGUgc2VsZWN0aW9uIG9mIGNlcnRhaW4gZmVhdHVyZXMuIEknbSBnb2luZyB0byBzdGFydCBieSBxdWlja2x5IHNjYW5uaW5nIHRoYXQgc2VjdGlvbiBmb3IgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3MsIGRlcGVuZGVuY2llcyBJJ20gbm90IGV4cGVjdGluZywgb3IgYW55dGhpbmcgdGhhdCBqdW1wcyBvdXQgYXMgdW51c3VhbC4gTXkgZ29hbCBpcyB0byBxdWlja2x5IG9yaWVudCBteXNlbGYgd2l0aGluIHRoYXQgc3BlY2lmaWMgcGFydCBvZiB0aGUgY29uZmlndXJhdGlvbiB0cmVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDgzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MTIuNTc4MTk5NDYxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTA6XFx0XFx0ICBmcm9tIHRoZSBNQUMgYWRkcmVzcykgYWRkcmVzc1xcbiAxMTE6XFx0XFxuIDExMjpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMTM6XFx0XFxuIDExNDpcXHRjb25maWcgSVA2X05GX01BVENIX0ZSQUdcXG4gMTE1OlxcdFxcdHRyaXN0YXRlICdcXFwiZnJhZ1xcXCIgRnJhZ21lbnRhdGlvbiBoZWFkZXIgbWF0Y2ggc3VwcG9ydCdcXG4gMTE2OlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDExNzpcXHRcXHRoZWxwXFxuIDExODpcXHRcXHQgIGZyYWcgbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIG9uIHRoZSBmcmFnbWVudGF0aW9uXFxuIDExOTpcXHRcXHQgIGhlYWRlciBvZiB0aGUgcGFja2V0LlxcbiAxMjA6XFx0XFxuIDEyMTpcXHRcXHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxcbiAxMjI6XFx0XFxuIDEyMzpcXHRjb25maWcgSVA2X05GX01BVENIX09QVFNcXG4gMTI0OlxcdFxcdHRyaXN0YXRlICdcXFwiaGJoXFxcIiBob3AtYnktaG9wIGFuZCBcXFwiZHN0XFxcIiBvcHRzIGhlYWRlciBtYXRjaCBzdXBwb3J0J1xcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcXG4gMTI2OlxcdFxcdGhlbHBcXG4gMTI3OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIG1hdGNoIHBhY2tldHMgYmFzZWQgb24gdGhlIGhvcC1ieS1ob3BcXG4gMTI4OlxcdFxcdCAgYW5kIGRlc3RpbmF0aW9uIG9wdGlvbnMgaGVhZGVycyBvZiBhIHBhY2tldC5cXG4gMTI5OlxcdFxcbiAxMzA6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTMxOlxcdFxcbiAxMzI6XFx0Y29uZmlnIElQNl9ORl9NQVRDSF9ITFxcbiAxMzM6XFx0XFx0dHJpc3RhdGUgJ1xcXCJobFxcXCIgaG9wbGltaXQgbWF0Y2ggc3VwcG9ydCdcXG4gMTM0OlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDEzNTpcXHRcXHRzZWxlY3QgTkVURklMVEVSX1hUX01BVENIX0hMXFxuIDEzNjpcXHRcXHRoZWxwXFxuIDEzNzpcXHRcXHQgIFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0IG9wdGlvbiBmb3IgdGhlIHVzZXIncyBjb252ZW5pZW5jZVxcbiAxMzg6XFx0XFx0ICAoZS5nLiB3aGVuIHJ1bm5pbmcgb2xkY29uZmlnKS4gSXQgc2VsZWN0c1xcbiAxMzk6XFx0XFx0ICBDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hMLlxcbiAxNDA6XFx0XFxuIDE0MTpcXHRjb25maWcgSVA2X05GX01BVENIX0lQVjZIRUFERVJcXG4gMTQyOlxcdFxcdHRyaXN0YXRlICdcXFwiaXB2NmhlYWRlclxcXCIgSVB2NiBFeHRlbnNpb24gSGVhZGVycyBNYXRjaCdcXG4gMTQzOlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiAxNDQ6XFx0XFx0aGVscFxcbiAxNDU6XFx0XFx0ICBUaGlzIG1vZHVsZSBhbGxvd3Mgb25lIHRvIG1hdGNoIHBhY2tldHMgYmFzZWQgdXBvblxcbiAxNDY6XFx0XFx0ICB0aGUgaXB2NiBleHRlbnNpb24gaGVhZGVycy5cXG4gMTQ3OlxcdFxcbiAxNDg6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTQ5OlxcdFxcbiAxNTA6XFx0Y29uZmlnIElQNl9ORl9NQVRDSF9NSFxcbiAxNTE6XFx0XFx0dHJpc3RhdGUgJ1xcXCJtaFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG4gMTUyOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDE1MzpcXHRcXHRoZWxwXFxuIDE1NDpcXHRcXHQgIFRoaXMgbW9kdWxlIGFsbG93cyBvbmUgdG8gbWF0Y2ggTUggcGFja2V0cy5cXG4gMTU1OlxcdFxcbiAxNTY6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTU3OlxcdFxcbiAxNTg6XFx0Y29uZmlnIElQNl9ORl9NQVRDSF9SUEZJTFRFUlxcbiAxNTk6XFx0XFx0dHJpc3RhdGUgJ1xcXCJycGZpbHRlclxcXCIgcmV2ZXJzZSBwYXRoIGZpbHRlciBtYXRjaCBzdXBwb3J0J1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNjowNDoxMi41NzgzODA4NjFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyNTI2MzYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIEknbSBwcm9jZXNzaW5nIHRoZSBpbmZvcm1hdGlvbjpcblxuKipUaGlua2luZyBBYm91dCBJUHY2IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgTWF0Y2hpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYElQNl9ORl9NQVRDSF9TUkhgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBteSBpbnRlcmVzdC4gVGhlIHNwZWNpZmljIGZvY3VzIGhlcmUgaXMgb24gaG93IHdlJ3JlIG1hdGNoaW5nIHRoZSBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIChTUkgpIHdpdGhpbiBJUHY2IHBhY2tldHMuIFRoZSBudWFuY2UgSSdtIHJlYWxseSBsb29raW5nIGZvciBpcyBob3cgdGhlIG5ldGZpbHRlciBmcmFtZXdvcmsgaXMgaGFuZGxpbmcgdGhpcy4gU3BlY2lmaWNhbGx5OiBhcmUgd2UgdGFsa2luZyBhYm91dCBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIGhlcmUsIG9yIGp1c3QgYmFzaWMgY2hlY2tpbmc/IEFyZSB3ZSBkaXZpbmcgaW50byB0aGUgdmFyaW91cyBTUkggb3B0aW9ucywgbGlrZSB0aGUgc2VnbWVudHMgdGhlbXNlbHZlcywgdGhlIHR5cGUsIHRoZSBsZW5ndGgsIG9yIGp1c3QgdGhlIHByZXNlbmNlIG9mIHRoZSBleHRlbnNpb24gaGVhZGVyPyBJJ20gaG9waW5nIGZvciBhIHJvYnVzdCwgZWZmaWNpZW50IG1hdGNoaW5nIG1lY2hhbmlzbSB0aGF0IGNhbiBoYW5kbGUgdmFyaW91cyBTUkggY29uZmlndXJhdGlvbnMuIElkZWFsbHksIGl0IGF2b2lkcyB1bm5lY2Vzc2FyeSBwYWNrZXQgcGFyc2luZyBvciBzdGF0ZWZ1bCBsb29rdXBzIHVubGVzcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgaW50ZWdyYXRpbmcgdGhpcyB3aXRoIG90aGVyIG5ldGZpbHRlciBtb2R1bGVzLCBmb3IgZXhhbXBsZSBOQVQgb3IgY29ubnRyYWNrPyBUaGlua2luZyBhYm91dCB0aGUgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIGlzIHZpdGFsLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGhpZ2gtYmFuZHdpZHRoIFNSIGRlcGxveW1lbnRzLiBJZiB0aGVyZSdzIGFuIGlzc3VlIGhlcmUsIEkgd2FudCB0byBjb25zaWRlciBob3cgdGhlIG1hdGNoIG1vZHVsZSBwbGF5cyB3aXRoIG90aGVyIE5GIHJ1bGVzIGluIHRlcm1zIG9mIG92ZXJhbGwgcGVyZm9ybWFuY2UsIHNjYWxhYmlsaXR5IGFuZCBzZWN1cml0eS4gV2UgbmVlZCB0byBiZSBhYmxlIHRvIGVuc3VyZSB0aGlzIG1vZHVsZSBpcyByb2NrIHNvbGlkLCBhbmQgdGhhdCB0aGUgbWF0Y2hpbmcgcHJvY2VzcyBpc24ndCBvcGVuaW5nIHZ1bG5lcmFiaWxpdGllcyB0aGF0IHdvdWxkIGFsbG93IGZvciBhbiBlYXN5IGV2YXNpb24gb2Ygc2VjdXJpdHkgcG9saWNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNDYsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjE2LjEwMzY0NzA4M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NDMwNTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUDZfTkZfTUFUQ0hfU1JIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnPTE2OT1jb25maWcgSVA2X05GX01BVENIX1JUXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNzctXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTc4OmNvbmZpZyBJUDZfTkZfTUFUQ0hfU1JIXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTc5LVxcdHRyaXN0YXRlICdcXFwic3JoXFxcIiBTZWdtZW50IFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjE2LjIzMDA4MjQ0N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzA2MTQ3MjI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkgdG8gc3VtbWFyaXplIHRoZSB0ZXh0IGFzIG15IG93biB0aG91Z2h0cywgYXNzdW1pbmcgdGhlIHJvbGUgb2YgYW4gZXhwZXJ0IGluIG15IGZpZWxkLiBIZXJlJ3MgbXkgdGFrZTpcblxuKipBbmFseXppbmcgdGhlIE5ldyBJbmZvcm1hdGlvbioqXG5cbk9rYXksIEknbSByZWFkeS4gTGV0J3MgZGlnIGludG8gdGhpcyBuZXcgdGV4dC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIkxldCdzIHJlYWQgdGhhdCB0b28uXCIgSW1tZWRpYXRlbHksIG15IGJyYWluIHN0YXJ0cyB0byBjbGFzc2lmeSB0aGUgaW5mb3JtYXRpb24sIGxvb2tpbmcgZm9yIHBhdHRlcm5zLCBjb250ZXh0LCBvciBjb25uZWN0aW9ucyB0byBteSBwcmUtZXhpc3Rpbmcga25vd2xlZGdlLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgYXJlYXMgd2hlcmUgdGhpcyBtaWdodCBjb250cmlidXRlIHRvIG15IGV4cGVydGlzZSwgb3IgcG9zc2libHkgY2hhbGxlbmdlIGV4aXN0aW5nIGFzc3VtcHRpb25zLiBJJ20ga2VlbiB0byBldmFsdWF0ZSB0aGUgbm92ZWx0eSBhbmQgc2lnbmlmaWNhbmNlIG9mIGFueSBuZXcgY29uY2VwdHMgb3IgYXJndW1lbnRzIHByZXNlbnRlZC4gVGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIGdvIGluIHdpdGggYW4gb3BlbiBtaW5kLCBlYWdlciB0byBsZWFybiFcblxuXG4iLCJJbnB1dFRva2VucyI6ODUwMiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MTguOTM2MjMyMzUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzA6XFx0XFx0dHJpc3RhdGUgJ1xcXCJydFxcXCIgUm91dGluZyBoZWFkZXIgbWF0Y2ggc3VwcG9ydCdcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDE3MjpcXHRcXHRoZWxwXFxuIDE3MzpcXHRcXHQgIHJ0IG1hdGNoaW5nIGFsbG93cyB5b3UgdG8gbWF0Y2ggcGFja2V0cyBiYXNlZCBvbiB0aGUgcm91dGluZ1xcbiAxNzQ6XFx0XFx0ICBoZWFkZXIgb2YgdGhlIHBhY2tldC5cXG4gMTc1OlxcdFxcbiAxNzY6XFx0XFx0ICBUbyBjb21waWxlIGl0IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTc3OlxcdFxcbiAxNzg6XFx0Y29uZmlnIElQNl9ORl9NQVRDSF9TUkhcXG4gMTc5OlxcdFxcdHRyaXN0YXRlICdcXFwic3JoXFxcIiBTZWdtZW50IFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQnXFxuIDE4MDpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAxODE6XFx0XFx0aGVscFxcbiAxODI6XFx0XFx0ICBzcmggbWF0Y2hpbmcgYWxsb3dzIHlvdSB0byBtYXRjaCBwYWNrZXRzIGJhc2VkIG9uIHRoZSBzZWdtZW50XFxuIDE4MzpcXHRcXHQgIHJvdXRpbmcgaGVhZGVyIG9mIHRoZSBwYWNrZXQuXFxuIDE4NDpcXHRcXG4gMTg1OlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE4NjpcXHRcXG4gMTg3OlxcdCMgVGhlIHRhcmdldHNcXG4gMTg4OlxcdGNvbmZpZyBJUDZfTkZfVEFSR0VUX0hMXFxuIDE4OTpcXHRcXHR0cmlzdGF0ZSAnXFxcIkhMXFxcIiBob3BsaW1pdCB0YXJnZXQgc3VwcG9ydCdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MTguOTM2NDA1MTAzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NTIwMDU4MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIElQdjYgTmV0ZmlsdGVyIE1hdGNoIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgSVA2X05GX01BVENIX09QVFNgLCBgSVA2X05GX01BVENIX0lQVjZIRUFERVJgLCBhbmQgYElQNl9ORl9NQVRDSF9TUkhgLiBUaGV5IGFsbCBzZWVtIHRvIHJlbHkgb24gYE5FVEZJTFRFUl9BRFZBTkNFRGAsIGJ1dCBpdCdzIHByb2JhYmx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgc28gbWF5YmUgSSBkb24ndCAqcmVhbGx5KiBuZWVkIHRvIGxpc3QgaXQgZXhwbGljaXRseS4gSXQgbWlnaHQgYmUgcmVkdW5kYW50LCBidXQgbGV0J3MgbGlzdCBpdCBhbnl3YXksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgYWxzbyBhZGQgYElQNl9ORl9JUFRBQkxFU2AgYXMgaXQncyB0aGUgcGFyZW50IG1vZHVsZSwganVzdCB0byBoYXZlIGEgY29tcGxldGUgcGljdHVyZS5cblxuVGhlIGltcG9ydGFudCBmdW5jdGlvbnMgaGVyZSBhcmUgYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBgc3JoX210NmAsIGFuZCBgc3JoMV9tdDZgLiBUaGVzZSBhcmUgbmV0ZmlsdGVyIG1hdGNoIGZ1bmN0aW9ucyBzcGVjaWZpY2FsbHkgZm9yIElQdjYuIEkgc2VlIHRoYXQgdGhlIGNoYW5nZXMgYXJlIG1vcmUgdGhhbiBqdXN0IHJldHVybmluZyBhIFwiZmFsc2VcIiByZXN1bHQ7IHRoZXkncmUgYWN0dWFsbHkgZHJvcHBpbmcgbWFsZm9ybWVkIHBhY2tldHMgbm93LiBUaGF0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aGljaCBtYWtlcyB0aGVtIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcgdG8gY2hlY2sgZm9yIHZ1bG5lcmFiaWxpdGllcy5cblxuU28sIGp1c3QgdG8gYmUgY3J5c3RhbCBjbGVhciwgaGVyZSdzIG15IGNvbmZpZ3VyYXRpb24gbGlzdCBhZ2FpbjpcblxuKiAgIGBJUDZfTkZfTUFUQ0hfT1BUU2BcbiogICBgSVA2X05GX01BVENIX0lQVjZIRUFERVJgXG4qICAgYElQNl9ORl9NQVRDSF9TUkhgXG4qICAgYElQNl9ORl9JUFRBQkxFU2BcblxuQW5kIHRoZSBrZXkgc3ltYm9scyBJIG5lZWQgdG8gZm9jdXMgb24gZHVyaW5nIHJldmlldzpcblxuKiAgIGBoYmhfbXQ2YFxuKiAgIGBpcHY2aGVhZGVyX210NmBcbiogICBgc3JoX210NmBcbiogICBgc3JoMV9tdDZgXG5cbkp1c3QgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIGFueSBvdGhlciBtb2RpZmllZCBmdW5jdGlvbnMgdGhhdCBJIG1pZ2h0IGhhdmUgbWlzc2VkLiBHb3R0YSBiZSBtZXRpY3Vsb3VzIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTk4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MjQuMzg4NDE0MzAyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODcwNzM0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBib29sLipfbXQ2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYz0yNT1zcGlfbWF0Y2godV9pbnQzMl90IG1pbiwgdV9pbnQzMl90IG1heCwgdV9pbnQzMl90IHNwaSwgYm9vbCBpbnZlcnQpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jLTM1LVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmM6MzY6c3RhdGljIGJvb2wgYWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jLTM3LXtcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X21oLmM9MjY9dHlwZV9tYXRjaCh1X2ludDhfdCBtaW4sIHVfaW50OF90IG1heCwgdV9pbnQ4X3QgdHlwZSwgYm9vbCBpbnZlcnQpXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9taC5jLTMwLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X21oLmM6MzE6c3RhdGljIGJvb2wgbWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9taC5jLTMyLXtcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmM9MjY9c2Vnc2xlZnRfbWF0Y2godV9pbnQzMl90IG1pbiwgdV9pbnQzMl90IG1heCwgdV9pbnQzMl90IGlkLCBib29sIGludmVydClcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmMtMzAtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuYzozMTpzdGF0aWMgYm9vbCBydF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmMtMzIte1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMjMtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmM6MjQ6c3RhdGljIGJvb2wgc3JoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMjUte1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMTI0LVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3NyaC5jOjEyNTpzdGF0aWMgYm9vbCBzcmgxX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfc3JoLmMtMTI2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MjQuNTc1NDkzNjIyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDAyMjQyMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBvZiB0aGlzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgaGJoX210NmAsIGBpcHY2aGVhZGVyX210NmAsIGBzcmhfbXQ2YCwgYW5kIGBzcmgxX210NmAuIFRoYXQncyBhIHJlYXNvbmFibGUgc2V0IG9mIGZ1bmN0aW9ucywgYWxsIHJlbGF0ZWQgdG8gSVB2NiBoZWFkZXIgcHJvY2Vzc2luZywgd2hpY2ggbWFrZXMgc2Vuc2UuIEhtbSwgYnV0IHdhaXQgYSBtaW51dGUuLi4gSSBkaWRuJ3Qgc2VlIGBoYmhfbXQ2YCBvciBgaXB2NmhlYWRlcl9tdDZgIGluIHRoYXQgYGdyZXBgIG91dHB1dC4gVGhhdCdzIGEgYml0IG9kZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0aGF0IHRoZSBgZ3JlcGAgcmVnZXggbWlnaHQgbm90IGJlIHBlcmZlY3RseSBwcmVjaXNlLCBvciBwZXJoYXBzIHRob3NlIGZ1bmN0aW9ucyBhcmVuJ3QgZGVjbGFyZWQgYXMgYHN0YXRpYyBib29sYC4gVGhleSBjb3VsZCBiZSBkZWNsYXJlZCBkaWZmZXJlbnRseSwgd2hpY2ggd291bGQgbWVhbiB0aGV5IHNsaXBwZWQgcGFzdCB0aGUgc2VhcmNoLiBJIG5lZWQgdG8gdmVyaWZ5IHRoZWlyIHNpZ25hdHVyZXMgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdoYXQncyBnb2luZyBvbi4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGVpciBwcm90b3R5cGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDMzNiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjI4LjA3NTcyMDQ5NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4NjE5MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhiaF9tdDZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM9MjM9TU9EVUxFX0FMSUFTKFxcXCJpcDZ0X2RzdFxcXCIpO1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtNDAtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6NDE6c3RhdGljIHN0cnVjdCB4dF9tYXRjaCBoYmhfbXQ2X3JlZ1tdIF9fcmVhZF9tb3N0bHk7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtNDItXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM9NDM9c3RhdGljIGJvb2xcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzo0NDpoYmhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy00NS17XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy02MC1cXHRlcnIgPSBpcHY2X2ZpbmRfaGRyKHNrYiwgXFx1MDAyNnB0cixcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzo2MTpcXHRcXHRcXHQgICAgKHBhci1cXHUwMDNlbWF0Y2ggPT0gXFx1MDAyNmhiaF9tdDZfcmVnWzBdKSA/XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtNjItXFx0XFx0XFx0ICAgIE5FWFRIRFJfSE9QIDogTkVYVEhEUl9ERVNULCBOVUxMLCBOVUxMKTtcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE2NC1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoxNjU6c3RhdGljIGludCBoYmhfbXQ2X2NoZWNrKGNvbnN0IHN0cnVjdCB4dF9tdGNoa19wYXJhbSAqcGFyKVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE2Ni17XFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0xODUtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTg2OnN0YXRpYyBzdHJ1Y3QgeHRfbWF0Y2ggaGJoX210Nl9yZWdbXSBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE4Ny1cXHR7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTg4OlxcdFxcdC8qIE5vdGUsIGhiaF9tdDYgcmVsaWVzIG9uIHRoZSBvcmRlciBvZiBoYmhfbXQ2X3JlZyAqL1xcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE4OS1cXHRcXHQubmFtZVxcdFxcdD0gXFxcImhiaFxcXCIsXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTkwLVxcdFxcdC5mYW1pbHlcXHRcXHQ9IE5GUFJPVE9fSVBWNixcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoxOTE6XFx0XFx0Lm1hdGNoXFx0XFx0PSBoYmhfbXQ2LFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE5Mi1cXHRcXHQubWF0Y2hzaXplXFx0PSBzaXplb2Yoc3RydWN0IGlwNnRfb3B0cyksXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MTkzOlxcdFxcdC5jaGVja2VudHJ5XFx0PSBoYmhfbXQ2X2NoZWNrLFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTE5NC1cXHRcXHQubWVcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMTk4LVxcdFxcdC5mYW1pbHlcXHRcXHQ9IE5GUFJPVE9fSVBWNixcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoxOTk6XFx0XFx0Lm1hdGNoXFx0XFx0PSBoYmhfbXQ2LFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTIwMC1cXHRcXHQubWF0Y2hzaXplXFx0PSBzaXplb2Yoc3RydWN0IGlwNnRfb3B0cyksXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjAxOlxcdFxcdC5jaGVja2VudHJ5XFx0PSBoYmhfbXQ2X2NoZWNrLFxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTIwMi1cXHRcXHQubWVcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjA1LVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjIwNjpzdGF0aWMgaW50IF9faW5pdCBoYmhfbXQ2X2luaXQodm9pZClcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMDcte1xcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjIwODpcXHRyZXR1cm4geHRfcmVnaXN0ZXJfbWF0Y2hlcyhoYmhfbXQ2X3JlZywgQVJSQVlfU0laRShoYmhfbXQ2X3JlZykpO1xcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jLTIwOS19XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjEwLVxcbm5ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jOjIxMTpzdGF0aWMgdm9pZCBfX2V4aXQgaGJoX210Nl9leGl0KHZvaWQpXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjEyLXtcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYzoyMTM6XFx0eHRfdW5yZWdpc3Rlcl9tYXRjaGVzKGhiaF9tdDZfcmVnLCBBUlJBWV9TSVpFKGhiaF9tdDZfcmVnKSk7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMtMjE0LX1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYy0yMTUtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjE2Om1vZHVsZV9pbml0KGhiaF9tdDZfaW5pdCk7XFxubmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmM6MjE3Om1vZHVsZV9leGl0KGhiaF9tdDZfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjI4LjI1NDM0NjAyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzY4NzQxOTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBhIE1pc21hdGNoKipcblxuT2theSwgc28gdGhhdCBgc3RhdGljIGJvb2wgXFxuIGhiaF9tdDZgIGlzIHRoZSBjdWxwcml0LCBleHBsYWluaW5nIHRoZSBkaXNjcmVwYW5jeS4gTm93IEkgY2FuIHNlZSB0aGUgZm9jdXMgc3ltYm9scyB0aGF0IHdlcmUgaW52b2x2ZWQuXG5cbkl0IGxvb2tzIGxpa2Ugd2UncmUgd29ya2luZyB3aXRoIHRoZXNlIG1hdGNoaW5nIHN5bWJvbHM6IGBoYmhfbXQ2YCwgYGlwdjZoZWFkZXJfbXQ2YCwgYHNyaF9tdDZgLCBhbmQgYHNyaDFfbXQ2YC4gQW5kIHRob3NlIHN5bWJvbHMgbG9vayB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgSVA2X05GX01BVENIX09QVFNgLCBgSVA2X05GX01BVENIX0lQVjZIRUFERVJgLCBgSVA2X05GX01BVENIX1NSSGAsIGFuZCBgSVA2X05GX0lQVEFCTEVTYC5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgYG5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnYCBhbmQgdmVyaWZ5IHdoZXRoZXIgdGhlIGBJUDZfTkZfSVBUQUJMRVNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGVuYWJsZWQgYW5kIGhvdyBpdCdzIGRlZmluZWQgcmVsYXRpdmUgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5bWJvbHMuIEhvcGVmdWxseSwgdGhpcyB3aWxsIHNoZWQgc29tZSBsaWdodCBvbiB0aGUgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTY0LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjMyLjAyMzA5MDY0NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMzY2MjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUDZfTkZfSVBUQUJMRVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9Nj1tZW51IFxcXCJJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvblxcXCJcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTktIyBvbGQgc29ja29wdCBpbnRlcmZhY2UgYW5kIGV2YWwgbG9vcFxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjEwOmNvbmZpZyBJUDZfTkZfSVBUQUJMRVNfTEVHQUNZXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIkxlZ2FjeSBJUDYgdGFibGVzIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz03Mj1jb25maWcgTkZfTE9HX0lQVjZcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTc5LVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjgwOmNvbmZpZyBJUDZfTkZfSVBUQUJMRVNcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy04MS1cXHR0cmlzdGF0ZSBcXFwiSVA2IHRhYmxlcyBzdXBwb3J0IChyZXF1aXJlZCBmb3IgZmlsdGVyaW5nKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MzIuMTc1NDY1MTc4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxOTMzMzQ3NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBJUHY2IGFuZCBBZHZhbmNlZCBOZXRmaWx0ZXIqKlxuXG5SaWdodCwgc28gSSdtIGNvbmZpZ3VyaW5nIHRoaXMga2VybmVsIGFuZCBpdCBsb29rcyBsaWtlIEkgYWJzb2x1dGVseSBuZWVkIGBJUDZfTkZfSVBUQUJMRVNgLiBObyBxdWVzdGlvbiBhYm91dCB0aGF0LiBCdXQgaG9sZCBvbiwgdGhlIGRvY3VtZW50YXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IGBJUDZfTkZfTUFUQ0hfT1BUU2AgaXMgZGVwZW5kZW50IG9uIGBORVRGSUxURVJfQURWQU5DRURgLiBDbGVhcmx5LCBJIG5lZWQgdG8gaW5jbHVkZSB0aGF0IGFzIHdlbGwuIE5vdywgYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgYSBib29sZWFuLCBzbyBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIG5ldGZpbHRlciBzdWJzeXN0ZW0sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIEkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIGl0IGFuZCBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMgb3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgZmVhdHVyZXMuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gbm90IG92ZXJsb29raW5nIGFueXRoaW5nIHN1YnRsZSwgYXMgdXN1YWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTYwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MzUuMzY4ODAzMTA4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDkwNjk0NTQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJfQURWQU5DRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNjowNDozNS40Nzc4ODMwNjJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY1MTU0MjMwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBrZXJuZWwgZGV2ZWxvcG1lbnQsIGxpa2VseSB3b3JraW5nIHdpdGggY29uZmlndXJhdGlvbiBvcHRpb25zOlxuXG4qKktjb25maWcgQ2hlY2twb2ludCoqXG5cbkhtbSwgdGhpbmtpbmcgYWJvdXQgdGhlIGN1cnJlbnQgaXNzdWXigKYgSSdtIGRyYXdpbmcgYSBibGFuayBvbiB0aGUgZXhhY3QgZmlsZSBJIG5lZWQgdG8gY2hlY2sgZm9yIHRoYXQgcGFydGljdWxhciBvcHRpb24uIEl0J3MgYSBrZXJuZWwgY29uZmlndXJhdGlvbiB0aGluZywgc28gdGhlIGZpcnN0IHBsYWNlIHRoYXQgc3ByaW5ncyB0byBtaW5kLCBhbG1vc3QgcmVmbGV4aXZlbHksIGlzIGBuZXQvS2NvbmZpZ2AuIEl0J3MgYSBwcmV0dHkgY2VudHJhbCBsb2NhdGlvbiBmb3IgbmV0d29yay1yZWxhdGVkIHNldHRpbmdzIGFuZCBkZXBlbmRlbmNpZXMuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoYXQgZmlsZSBhcyBteSBmaXJzdCBzdG9wLiBJdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBjb25maXJtIG9yIHJ1bGUgaXQgb3V0IHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODQ4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNjowNDozOC4xMjk0MjgyODFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDY0Nzg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVURklMVEVSX0FEVkFOQ0VEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MjE4PWlmIE5FVEZJTFRFUlxcbm5ldC9LY29uZmlnLTIxOS1cXG5uZXQvS2NvbmZpZzoyMjA6Y29uZmlnIE5FVEZJTFRFUl9BRFZBTkNFRFxcbm5ldC9LY29uZmlnLTIyMS1cXHRib29sIFxcXCJBZHZhbmNlZCBuZXRmaWx0ZXIgY29uZmlndXJhdGlvblxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6MzguMzIwMDgwODExWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzE1OTQ1MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE5ldGZpbHRlciBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGJvb2xlYW4gYE5FVEZJTFRFUl9BRFZBTkNFRGAgYW5kIHRyeWluZyB0byBncmFzcCBpdHMgcmVsYXRpb25zaGlwIHRvIG90aGVyIGNvbmZpZ3VyYXRpb25zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBsaXN0IHRoZSByZWxhdGVkIGNvbmZpZ3MsIGp1c3QgdG8gZ2V0IGEgbGF5IG9mIHRoZSBsYW5kLiBJIHNlZTogYElQNl9ORl9JUFRBQkxFU2AsIGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUmAsIGBJUDZfTkZfTUFUQ0hfU1JIYCwgYW5kIG9mIGNvdXJzZSwgdGhlIGBORVRGSUxURVJfQURWQU5DRURgIG9wdGlvbiBpdHNlbGYuXG5cbk5vdywgSSdtIGp1c3QgcXVpY2tseSBjcm9zcy1yZWZlcmVuY2luZyB0byBtYWtlIHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgY2xlYXIuIGBJUDZfTkZfTUFUQ0hfT1BUU2AgaXMgZGVmaW5lZCBpbiBgbmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdgLCByaWdodD8gT2theSwgc28gdGhhdCdzIGl0cyBsb2NhdGlvbi4gTXkgbmV4dCB0aG91Z2h0IGlzIHdoZXRoZXIgaXQncyBjb25kaXRpb25hbGx5IGluY2x1ZGVkIHVuZGVyIGBJUDZfTkZfSVBUQUJMRVNgLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSB0byBjb25maXJtIHRoZSBkZXBlbmRlbmN5IHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwOTEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6NDIuNDkxNjc4Mzg4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODM4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgSVAgbmV0ZmlsdGVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudSBcXFwiSVB2NjogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb25cXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSVBWNiBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG4gICA4OlxcdFxcbiAgIDk6XFx0IyBvbGQgc29ja29wdCBpbnRlcmZhY2UgYW5kIGV2YWwgbG9vcFxcbiAgMTA6XFx0Y29uZmlnIElQNl9ORl9JUFRBQkxFU19MRUdBQ1lcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJMZWdhY3kgSVA2IHRhYmxlcyBzdXBwb3J0XFxcIlxcbiAgMTI6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IElQVjYgXFx1MDAyNlxcdTAwMjYgTkVURklMVEVSX1hUQUJMRVNfTEVHQUNZXFxuICAxMzpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9YVEFCTEVTXFxuICAxNDpcXHRcXHRkZWZhdWx0XFx0bSBpZiBORVRGSUxURVJfWFRBQkxFU19MRUdBQ1lcXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgaXA2dGFibGVzIGlzIGEgbGVnYWN5IHBhY2tldCBjbGFzc2lmaWVyLlxcbiAgMTc6XFx0XFx0ICBUaGlzIGlzIG5vdCBuZWVkZWQgaWYgeW91IGFyZSB1c2luZyBpcHRhYmxlcyBvdmVyIG5mdGFibGVzXFxuICAxODpcXHRcXHQgIChpcHRhYmxlcy1uZnQpLlxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgTkZfU09DS0VUX0lQVjZcXG4gIDIxOlxcdFxcdHRyaXN0YXRlIFxcXCJJUHY2IHNvY2tldCBsb29rdXAgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdGhlbHBcXG4gIDIzOlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgSVB2NiBzb2NrZXQgbG9va3VwIGluZnJhc3RydWN0dXJlLiBUaGlzXFxuICAyNDpcXHRcXHQgIGlzIHVzZWQgYnkgdGhlIHtpcDYsbmZ9dGFibGVzIHNvY2tldCBtYXRjaC5cXG4gIDI1OlxcdFxcbiAgMjY6XFx0Y29uZmlnIE5GX1RQUk9YWV9JUFY2XFxuICAyNzpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NiB0cHJveHkgc3VwcG9ydFxcXCJcXG4gIDI4OlxcdFxcbiAgMjk6XFx0aWYgTkZfVEFCTEVTXFxuICAzMDpcXHRcXG4gIDMxOlxcdGNvbmZpZyBORl9UQUJMRVNfSVBWNlxcbiAgMzI6XFx0XFx0Ym9vbCBcXFwiSVB2NiBuZl90YWJsZXMgc3VwcG9ydFxcXCJcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgSVB2NiBzdXBwb3J0IGZvciBuZl90YWJsZXMuXFxuICAzNTpcXHRcXG4gIDM2OlxcdGlmIE5GX1RBQkxFU19JUFY2XFxuICAzNzpcXHRcXG4gIDM4OlxcdGNvbmZpZyBORlRfUkVKRUNUX0lQVjZcXG4gIDM5OlxcdFxcdHNlbGVjdCBORl9SRUpFQ1RfSVBWNlxcbiAgNDA6XFx0XFx0ZGVmYXVsdCBORlRfUkVKRUNUXFxuICA0MTpcXHRcXHR0cmlzdGF0ZVxcbiAgNDI6XFx0XFxuICA0MzpcXHRjb25maWcgTkZUX0RVUF9JUFY2XFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NiBuZl90YWJsZXMgcGFja2V0IGR1cGxpY2F0aW9uIHN1cHBvcnRcXFwiXFxuICA0NTpcXHRcXHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLXFxuICA0NjpcXHRcXHRzZWxlY3QgTkZfRFVQX0lQVjZcXG4gIDQ3OlxcdFxcdGhlbHBcXG4gIDQ4OlxcdFxcdCAgVGhpcyBtb2R1bGUgZW5hYmxlcyBJUHY2IHBhY2tldCBkdXBsaWNhdGlvbiBzdXBwb3J0IGZvciBuZl90YWJsZXMuXFxuICA0OTpcXHRcXG4gIDUwOlxcdGNvbmZpZyBORlRfRklCX0lQVjZcXG4gIDUxOlxcdFxcdHRyaXN0YXRlIFxcXCJuZl90YWJsZXMgZmliIC8gaXB2NiByb3V0ZSBsb29rdXAgc3VwcG9ydFxcXCJcXG4gIDUyOlxcdFxcdHNlbGVjdCBORlRfRklCXFxuICA1MzpcXHRcXHRoZWxwXFxuICA1NDpcXHRcXHQgIFRoaXMgbW9kdWxlIGVuYWJsZXMgSVB2NiBGSUIgbG9va3VwcywgZS5nLiBmb3IgcmV2ZXJzZSBwYXRoIGZpbHRlcmluZy5cXG4gIDU1OlxcdFxcdCAgSXQgYWxzbyBhbGxvd3MgcXVlcnkgb2YgdGhlIEZJQiBmb3IgdGhlIHJvdXRlIHR5cGUsIGUuZy4gbG9jYWwsIHVuaWNhc3QsXFxuICA1NjpcXHRcXHQgIG11bHRpY2FzdCBvciBibGFja2hvbGUuXFxuICA1NzpcXHRcXG4gIDU4OlxcdGVuZGlmICMgTkZfVEFCTEVTX0lQVjZcXG4gIDU5OlxcdGVuZGlmICMgTkZfVEFCTEVTXFxuICA2MDpcXHRcXG4gIDYxOlxcdGNvbmZpZyBORl9EVVBfSVBWNlxcbiAgNjI6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBJUHY2IHBhY2tldCBkdXBsaWNhdGlvbiB0byBhbHRlcm5hdGUgZGVzdGluYXRpb25cXFwiXFxuICA2MzpcXHRcXHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgTkZfQ09OTlRSQUNLXFxuICA2NDpcXHRcXHRoZWxwXFxuICA2NTpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIG5mX2R1cF9pcHY2IGNvcmUsIHdoaWNoIGR1cGxpY2F0ZXMgYW4gSVB2NlxcbiAgNjY6XFx0XFx0ICBwYWNrZXQgdG8gYmUgcmVyb3V0ZWQgdG8gYW5vdGhlciBkZXN0aW5hdGlvbi5cXG4gIDY3OlxcdFxcbiAgNjg6XFx0Y29uZmlnIE5GX1JFSkVDVF9JUFY2XFxuICA2OTpcXHRcXHR0cmlzdGF0ZSBcXFwiSVB2NiBwYWNrZXQgcmVqZWN0aW9uXFxcIlxcbiAgNzA6XFx0XFx0ZGVmYXVsdCBtIGlmIE5FVEZJTFRFUl9BRFZBTkNFRD1uXFxuICA3MTpcXHRcXG4gIDcyOlxcdGNvbmZpZyBORl9MT0dfSVBWNlxcbiAgNzM6XFx0XFx0dHJpc3RhdGUgXFxcIklQdjYgcGFja2V0IGxvZ2dpbmdcXFwiXFxuICA3NDpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gIDc1OlxcdFxcdHNlbGVjdCBORl9MT0dfU1lTTE9HXFxuICA3NjpcXHRcXHRoZWxwXFxuICA3NzpcXHRcXHQgIFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0IG9wdGlvbiBmb3IgdGhlIHVzZXIncyBjb252ZW5pZW5jZVxcbiAgNzg6XFx0XFx0ICAoZS5nLiB3aGVuIHJ1bm5pbmcgb2xkY29uZmlnKS4gSXQgc2VsZWN0cyBDT05GSUdfTkZfTE9HX1NZU0xPRy5cXG4gIDc5OlxcdFxcbiAgODA6XFx0Y29uZmlnIElQNl9ORl9JUFRBQkxFU1xcbiAgODE6XFx0XFx0dHJpc3RhdGUgXFxcIklQNiB0YWJsZXMgc3VwcG9ydCAocmVxdWlyZWQgZm9yIGZpbHRlcmluZylcXFwiXFxuICA4MjpcXHRcXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSVBWNlxcbiAgODM6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9YVEFCTEVTXFxuICA4NDpcXHRcXHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cXG4gIDg1OlxcdFxcdGhlbHBcXG4gIDg2OlxcdFxcdCAgaXA2dGFibGVzIGlzIGEgZ2VuZXJhbCwgZXh0ZW5zaWJsZSBwYWNrZXQgaWRlbnRpZmljYXRpb24gZnJhbWV3b3JrLlxcbiAgODc6XFx0XFx0ICBDdXJyZW50bHkgb25seSB0aGUgcGFja2V0IGZpbHRlcmluZyBhbmQgcGFja2V0IG1hbmdsaW5nIHN1YnN5c3RlbVxcbiAgODg6XFx0XFx0ICBmb3IgSVB2NiB1c2UgdGhpcywgYnV0IGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgZ29pbmcgdG8gZm9sbG93LlxcbiAgODk6XFx0XFx0ICBTYXkgJ1knIG9yICdNJyBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSBlaXRoZXIgb2YgdGhvc2UuXFxuICA5MDpcXHRcXG4gIDkxOlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICA5MjpcXHRcXG4gIDkzOlxcdGlmIElQNl9ORl9JUFRBQkxFU1xcbiAgOTQ6XFx0XFxuICA5NTpcXHQjIFRoZSBzaW1wbGUgbWF0Y2hlcy5cXG4gIDk2OlxcdGNvbmZpZyBJUDZfTkZfTUFUQ0hfQUhcXG4gIDk3OlxcdFxcdHRyaXN0YXRlICdcXFwiYWhcXFwiIG1hdGNoIHN1cHBvcnQnXFxuICA5ODpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiAgOTk6XFx0XFx0aGVscFxcbiAxMDA6XFx0XFx0ICBUaGlzIG1vZHVsZSBhbGxvd3Mgb25lIHRvIG1hdGNoIEFIIHBhY2tldHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE2OjA0OjQyLjQ5MTg3ODk2OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTEzNDc5MDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBJUHY2IE5ldGZpbHRlciBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZXhhbWluZWQgdGhpcyBwYXRjaCBhbmQgSSd2ZSBnb3QgYSBwcmV0dHkgZ29vZCBoYW5kbGUgb24gd2hhdCdzIGdvaW5nIG9uLiBGaXJzdCBvZmYsIEkndmUgY29uZmlybWVkIHRoYXQgYElQNl9ORl9NQVRDSF9PUFRTYCwgYElQNl9ORl9NQVRDSF9JUFY2SEVBREVSYCwgYW5kIGBJUDZfTkZfTUFUQ0hfU1JIYCBhcmUgYWxsIGNvbmRpdGlvbmFsIHVuZGVyIGBJUDZfTkZfSVBUQUJMRVNgLiAgVGhhdCdzIGtleS5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBpbnRlcmVzdGluZy4gSXQncyBjaGFuZ2luZyB0aGUgYmVoYXZpb3Igb2YgSVB2NiBuZXRmaWx0ZXIgbWF0Y2ggZXh0ZW5zaW9ucyDigJMgc3BlY2lmaWNhbGx5IGZvciBIb3AtYnktSG9wIG9wdGlvbnMgKGhiaCksIElQdjYgaGVhZGVycywgYW5kIFNvdXJjZSBSb3V0aW5nIEhlYWRlcnMgKFNSSCkuIEluc3RlYWQgb2Ygc2ltcGx5IHJldHVybmluZyBcImZhbHNlXCIgd2hlbiBlbmNvdW50ZXJpbmcgYSBtYWxmb3JtZWQgcGFja2V0LCBpdCdzIG5vdyBzZXQgdG8gXCJob3Rkcm9wXCIgaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBzaWduaWZpY2FudCBvbmUgYXQgdGhhdCwgd2hpY2ggbWVhbnMgaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgY29uc2lkZXIgZnV6emluZy4gIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSB1c2Vyc3BhY2UgdGhyb3VnaCBgaXA2dGFibGVzYCBydWxlIGNvbmZpZ3VyYXRpb24gYW5kIGNyYWZ0aW5nIHNwZWNpZmljIElQdjYgcGFja2V0cy5cblxuVGhlIHN5bWJvbHMgdGhhdCBzZWVtIGxpa2UgZ29vZCB0YXJnZXRzIGZvciBmdXp6aW5nIGFyZTogYGhiaF9tdDZgLCBgaXB2NmhlYWRlcl9tdDZgLCBhbmQgYHNyaF9tdDZgLCBhcyB3ZWxsIGFzIGBzcmgxX210NmAuXG5cbk5vdywgZm9yIGVuYWJsaW5nIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb25zLCBpdOKAmXMgY2xlYXIgd2UgbmVlZDpcblxuKiAgIGBJUDZfTkZfSVBUQUJMRVNgIChlc3NlbnRpYWwgYmVjYXVzZSBpdCBjb250cm9scyB0aGUgbWF0Y2hlcylcbiogICBgSVA2X05GX01BVENIX09QVFNgXG4qICAgYElQNl9ORl9NQVRDSF9JUFY2SEVBREVSYFxuKiAgIGBJUDZfTkZfTUFUQ0hfU1JIYFxuKiAgIGBORVRGSUxURVJfQURWQU5DRURgIChhIGJvb2xlYW4sIHNvIGl0J3Mgc3RyYWlnaHRmb3J3YXJkIHRvIGluY2x1ZGUpXG5cbkkgZGlkIGJyaWVmbHkgY29uc2lkZXIgYElQNl9ORl9JUFRBQkxFU19MRUdBQ1lgIGJ1dCBpdCBsb29rcyBsaWtlIGBJUDZfTkZfSVBUQUJMRVNgIGlzIHN1ZmZpY2llbnQgc2luY2UgdGhhdCdzIHRoZSBtYWluIGNvbnRyb2wgZm9yIHRoZSBtYXRjaGVzLlxuXG5JIGRvdWJsZS1jaGVja2VkIHRvIGNvbmZpcm0gdGhhdCB0aGUgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3RseSBhc3NvY2lhdGVkIHdpdGggdGhlaXIgcmVzcGVjdGl2ZSBmaWxlczogYElQNl9ORl9NQVRDSF9PUFRTYCBpcyBpbmRlZWQgZm9yIGBpcDZ0X2hiaC5jYCwgYElQNl9ORl9NQVRDSF9JUFY2SEVBREVSYCBpcyBmb3IgYGlwNnRfaXB2NmhlYWRlci5jYCwgYW5kIGBJUDZfTkZfTUFUQ0hfU1JIYCBpcyBjb3JyZWN0IGZvciBgaXA2dF9zcmguY2AuICBBbGwgY2hlY2tzIG91dC5cblxuT2theSwgSSdtIGNvbmZpZGVudCBpbiB0aGVzZSBmaW5kaW5ncy4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4MTcsIk91dHB1dFRva2VucyI6MTgwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTY6MDQ6NTEuNDA1MzYyMjY0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzMjA5OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUDZfTkZfSVBUQUJMRVNcIixcbiAgICBcIklQNl9ORl9NQVRDSF9PUFRTXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfSVBWNkhFQURFUlwiLFxuICAgIFwiSVA2X05GX01BVENIX1NSSFwiLFxuICAgIFwiTkVURklMVEVSX0FEVkFOQ0VEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaGJoX210NlwiLFxuICAgIFwiaXB2NmhlYWRlcl9tdDZcIixcbiAgICBcInNyaF9tdDZcIixcbiAgICBcInNyaDFfbXQ2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVB2NiBuZXRmaWx0ZXIgbWF0Y2ggZXh0ZW5zaW9ucyAoaGJoLCBpcHY2aGVhZGVyLCBzcmgpIHRvIGRyb3AgbWFsZm9ybWVkIHBhY2tldHMgKGhvdGRyb3ApIGluc3RlYWQgb2YganVzdCByZXR1cm5pbmcgZmFsc2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBwYWNrZXQgcHJvY2Vzc2luZyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBieSBjb25maWd1cmluZyBpcDZ0YWJsZXMgcnVsZXMgYW5kIHNlbmRpbmcgY3JhZnRlZCBJUHY2IHBhY2tldHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVA2X05GX0lQVEFCTEVTXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX0lQVjZIRUFERVJcIixcbiAgICBcIklQNl9ORl9NQVRDSF9TUkhcIixcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhiaF9tdDZcIixcbiAgICBcImlwdjZoZWFkZXJfbXQ2XCIsXG4gICAgXCJzcmhfbXQ2XCIsXG4gICAgXCJzcmgxX210NlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElQdjYgbmV0ZmlsdGVyIG1hdGNoIGV4dGVuc2lvbnMgKGhiaCwgaXB2NmhlYWRlciwgc3JoKSB0byBkcm9wIG1hbGZvcm1lZCBwYWNrZXRzIChob3Rkcm9wKSBpbnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGZhbHNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcGFja2V0IHByb2Nlc3NpbmcgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYnkgY29uZmlndXJpbmcgaXA2dGFibGVzIHJ1bGVzIGFuZCBzZW5kaW5nIGNyYWZ0ZWQgSVB2NiBwYWNrZXRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4v4n8[1] Phase: Succeeded StartedAt: 2026-07-25 16:05:04 +0000 UTC FinishedAt: 2026-07-25 16:05:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 16:05:04 +0000 UTC FinishedAt: 2026-07-25 16:05:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2] Phase: Succeeded StartedAt: 2026-07-25 16:05:04 +0000 UTC FinishedAt: 2026-07-25 20:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-25 16:05:04 +0000 UTC FinishedAt: 2026-07-25 20:53:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 16:05:04 +0000 UTC FinishedAt: 2026-07-25 16:05:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 16:05:04 +0000 UTC FinishedAt: 2026-07-25 16:05:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow4v4n8/series-workflow4v4n8-convert-artifact-1608707543/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-25 16:05:27 +0000 UTC FinishedAt: 2026-07-25 16:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-25 16:05:27 +0000 UTC FinishedAt: 2026-07-25 16:58:46 +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:*2ee127e8-8e4d-43ef-b1e5-943041720dae,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-workflow4v4n8/series-workflow4v4n8-convert-artifact-1608707543/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": "c25e4d97-3e66-4ae0-b872-3515a37cbec2", "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-workflow4v4n8/series-workflow4v4n8-build-action-2788912685/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-25 16:05:27 +0000 UTC FinishedAt: 2026-07-25 16:58:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2ee127e8-8e4d-43ef-b1e5-943041720dae,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-workflow4v4n8/series-workflow4v4n8-convert-artifact-1608707543/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": "c25e4d97-3e66-4ae0-b872-3515a37cbec2", "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-workflow4v4n8/series-workflow4v4n8-build-action-2788912685/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-25 16:58:46 +0000 UTC FinishedAt: 2026-07-25 16:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-25 16:58:46 +0000 UTC FinishedAt: 2026-07-25 16:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-25 16:58:46 +0000 UTC FinishedAt: 2026-07-25 16:58:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-25 16:58:46 +0000 UTC FinishedAt: 2026-07-25 16:58:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflow4v4n8/series-workflow4v4n8-convert-artifact-1418229510/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-25 16:58:58 +0000 UTC FinishedAt: 2026-07-25 17:01:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-25 16:58:58 +0000 UTC FinishedAt: 2026-07-25 17:00:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c25e4d97-3e66-4ae0-b872-3515a37cbec2,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-workflow4v4n8/series-workflow4v4n8-build-action-2788912685/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-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-25 17:01:08 +0000 UTC FinishedAt: 2026-07-25 17:01:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-25 17:01:08 +0000 UTC FinishedAt: 2026-07-25 17:01:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-25 17:01:08 +0000 UTC FinishedAt: 2026-07-25 17:48:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-25 17:01:08 +0000 UTC FinishedAt: 2026-07-25 17:48:29 +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:*2ee127e8-8e4d-43ef-b1e5-943041720dae,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-workflow4v4n8/series-workflow4v4n8-convert-artifact-1418229510/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": "84fa399d-51a0-4b53-bbce-5e92341651c0", "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-workflow4v4n8/series-workflow4v4n8-build-action-236440906/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-25 17:01:08 +0000 UTC FinishedAt: 2026-07-25 17:48:19 +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:*2ee127e8-8e4d-43ef-b1e5-943041720dae,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-workflow4v4n8/series-workflow4v4n8-convert-artifact-1418229510/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": "84fa399d-51a0-4b53-bbce-5e92341651c0", "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-workflow4v4n8/series-workflow4v4n8-build-action-236440906/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-25 17:48:29 +0000 UTC FinishedAt: 2026-07-25 17:48:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-25 17:48:29 +0000 UTC FinishedAt: 2026-07-25 17:48:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-25 17:48:29 +0000 UTC FinishedAt: 2026-07-25 17:50:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-25 17:48:29 +0000 UTC FinishedAt: 2026-07-25 17:50:16 +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:*84fa399d-51a0-4b53-bbce-5e92341651c0,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-workflow4v4n8/series-workflow4v4n8-build-action-236440906/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-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-25 17:50:26 +0000 UTC FinishedAt: 2026-07-25 20:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-25 17:50:26 +0000 UTC FinishedAt: 2026-07-25 20:53:14 +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":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"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:*c25e4d97-3e66-4ae0-b872-3515a37cbec2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84fa399d-51a0-4b53-bbce-5e92341651c0,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-workflow4v4n8/series-workflow4v4n8-build-action-2788912685/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-workflow4v4n8/series-workflow4v4n8-build-action-236440906/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-25 17:50:26 +0000 UTC FinishedAt: 2026-07-25 17:50:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-25 17:50:26 +0000 UTC FinishedAt: 2026-07-25 17:50:31 +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":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"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-workflow4v4n8/series-workflow4v4n8-convert-artifact-2544049611/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-25 17:50:26 +0000 UTC FinishedAt: 2026-07-25 17:50:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-25 17:50:26 +0000 UTC FinishedAt: 2026-07-25 17:50:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-25 17:50:26 +0000 UTC FinishedAt: 2026-07-25 17:50:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-25 17:50:36 +0000 UTC FinishedAt: 2026-07-25 20:53:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4v4n8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hbh_mt6","ipv6header_mt6","srh_mt6","srh1_mt6"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"56d96fededd61192cd7cc8d2b0f36adfd59036c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP6_NF_IPTABLES","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_IPV6HEADER","IP6_NF_MATCH_SRH","NETFILTER_ADVANCED"],"series_id":"efd95364-23da-4e37-af68-09c696d4a878","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-25 17:50:36 +0000 UTC FinishedAt: 2026-07-25 20:52:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c25e4d97-3e66-4ae0-b872-3515a37cbec2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84fa399d-51a0-4b53-bbce-5e92341651c0,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-workflow4v4n8/series-workflow4v4n8-build-action-2788912685/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-workflow4v4n8/series-workflow4v4n8-build-action-236440906/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-workflow4v4n8/series-workflow4v4n8-convert-artifact-2544049611/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,}