Name: series-workflow7wxsn Phase: Succeeded StartedAt: 2026-08-21 15:08:31 +0000 UTC FinishedAt: 2026-08-21 19:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[0] Phase: Succeeded StartedAt: 2026-08-21 15:08:31 +0000 UTC FinishedAt: 2026-08-21 15:54:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[0].run-triage Phase: Succeeded StartedAt: 2026-08-21 15:08:31 +0000 UTC FinishedAt: 2026-08-21 15:54:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU", "NET_FOU_IP_TUNNELS", "NET_IPIP", "NET_IPGRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU", "NET_FOU_IP_TUNNELS", "NET_IPIP", "NET_IPGRE" ], "series_id": "47450a63-4e6a-4eaa-bece-76c10beeb0c7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__gue_build_header", "ip_md_tunnel_xmit", "ip_tunnel_xmit" ], "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+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OywKICAgICYjMzQ7TkVUX0ZPVV9JUF9UVU5ORUxTJiMzNDssCiAgICAmIzM0O05FVF9JUElQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3VlX2J1aWxkX2hlYWRlciYjMzQ7LAogICAgJiMzNDtpcF9tZF90dW5uZWxfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF90dW5uZWxfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eS4gVGhlIGZ1bmN0aW9uIGBpcF90dW5uZWxfZW5jYXAoKWAgY2FuIHJlYWxsb2NhdGUgdGhlIGBza2JgIGhlYWQgKGZvciBleGFtcGxlLCB2aWEgYHNrYl9jb3dfaGVhZCgpYCB3aGljaCBpcyBhZGRlZCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyKClgIGJ5IHRoaXMgcGF0Y2gpLiBJZiBgaW5uZXJfaXBoYCBpcyBpbml0aWFsaXplZCBiZWZvcmUgYGlwX3R1bm5lbF9lbmNhcCgpYCBpcyBjYWxsZWQsIGl0IHdpbGwgcG9pbnQgdG8gdGhlIG9sZCwgZnJlZWQgYHNrYmAgaGVhZCwgbGVhZGluZyB0byBhIFVBRiB3aGVuIGBpbm5lcl9pcGhgIGlzIGxhdGVyIGRlcmVmZXJlbmNlZC4gQnkgbW92aW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgaW5uZXJfaXBoYCB0byBhZnRlciBgaXBfdHVubmVsX2VuY2FwKClgLCB0aGUgcGF0Y2ggZW5zdXJlcyBpdCBwb2ludHMgdG8gdGhlIGNvcnJlY3QsIHBvdGVudGlhbGx5IHJlYWxsb2NhdGVkIGBza2JgIGhlYWQuXG5cblVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nLCBvciBpbmZvLWxlYWsgaW52b2x2ZWQgaW4gdGhpcyBidWcgb3IgaXRzIGZpeC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGNhdGNoaW5nIHRoaXMgY2xhc3Mgb2YgbWVtb3J5IGNvcnJ1cHRpb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBieSByZW9yZGVyaW5nIHRoZSBhc3NpZ25tZW50IG9mIGBpbm5lcl9pcGhgIGFmdGVyIGBpcF90dW5uZWxfZW5jYXBgLCB3aGljaCBjYW4gcmVhbGxvY2F0ZSB0aGUgc2tiIGhlYWQuIEl0IGFsc28gYWRkcyBhIGNoZWNrIGZvciBgc2tiX2Nvd19oZWFkYCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgKEZPVS9HVUUgZW5jYXBzdWxhdGlvbiBhbmQgSVAgdHVubmVscykgdGhhdCBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzg0ODFlZmUyNjUxZDBlMzA2ZjIzODhhZWIzZGM2Mjk2ZWJmOGZjZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE1OjUyOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZvdV9jb3JlLmMgYi9uZXQvaXB2NC9mb3VfY29yZS5jXG5pbmRleCBhYjA5ZGZjZGVjYmQ1Li44Y2YwZDQzYWNiNDEyIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZm91X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvZm91X2NvcmUuY1xuQEAgLTk4MCw2ICYjNDM7OTgwLDggQEAgaW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLFxuIFx0XHRcdFx0XHRcdHNrYiwgMCwgMCwgZmFsc2UpO1xuIFxuIFx0aGRybGVuID0gc2l6ZW9mKHN0cnVjdCBndWVoZHIpICYjNDM7IG9wdGxlbjtcbiYjNDM7XHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgaGRybGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHNrYl9wdXNoKHNrYiwgaGRybGVuKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF90dW5uZWwuYyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5pbmRleCA5ZDExNGJkNTc1ZjkyLi4yYmQ2ODRlYjJiYTI1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5AQCAtNjA2LDYgJiM0Mzs2MDYsNyBAQCB2b2lkIGlwX21kX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRpZiAoaXBfdHVubmVsX2VuY2FwKHNrYiwgXHUwMDI2dHVuX2luZm8tXHUwMDNlZW5jYXAsIFx1MDAyNnByb3RvLCBcdTAwMjZmbDQpIFx1MDAzYyAwKVxuIFx0XHRnb3RvIHR4X2Vycm9yO1xuJiM0MztcdGlubmVyX2lwaCA9IChjb25zdCBzdHJ1Y3QgaXBoZHIgKilza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKTtcbiBcbiBcdHVzZV9jYWNoZSA9IGlwX3R1bm5lbF9kc3RfY2FjaGVfdXNhYmxlKHNrYiwgdHVuX2luZm8pO1xuIFx0aWYgKHVzZV9jYWNoZSlcbkBAIC03NjUsOCAmIzQzOzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2VuZXQsIFJFQURfT05DRSh0dW5uZWwtXHUwMDNlcGFybXMubGluayksXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2Vmd21hcmssIHNrYl9nZXRfaGFzaChza2IpLCAwKTtcbiBcbiYjNDM7XHRkZiA9IHRubF9wYXJhbXMtXHUwMDNlZnJhZ19vZmY7XG4mIzQzO1x0dHRsID0gdG5sX3BhcmFtcy1cdTAwM2V0dGw7XG4mIzQzO1xuIFx0aWYgKGlwX3R1bm5lbF9lbmNhcChza2IsIFx1MDAyNnR1bm5lbC1cdTAwM2VlbmNhcCwgXHUwMDI2cHJvdG9jb2wsIFx1MDAyNmZsNCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4mIzQzO1x0aW5uZXJfaXBoID0gKGNvbnN0IHN0cnVjdCBpcGhkciAqKXNrYl9pbm5lcl9uZXR3b3JrX2hlYWRlcihza2IpO1xuIFxuIFx0aWYgKGNvbm5lY3RlZCBcdTAwMjZcdTAwMjYgbWQpIHtcbiBcdFx0dXNlX2NhY2hlID0gaXBfdHVubmVsX2RzdF9jYWNoZV91c2FibGUoc2tiLCB0dW5faW5mbyk7XG5AQCAtNzk5LDcgJiM0Mzs4MDQsNiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4gXHR9XG4gXG4tXHRkZiA9IHRubF9wYXJhbXMtXHUwMDNlZnJhZ19vZmY7XG4gXHRpZiAocGF5bG9hZF9wcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkgXHUwMDI2XHUwMDI2ICF0dW5uZWwtXHUwMDNlaWdub3JlX2RmKVxuIFx0XHRkZiB8PSAoaW5uZXJfaXBoLVx1MDAzZWZyYWdfb2ZmIFx1MDAyNiBodG9ucyhJUF9ERikpO1xuIFxuQEAgLTgyMSw3ICYjNDM7ODI1LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0fVxuIFxuIFx0dG9zID0gaXBfdHVubmVsX2Vjbl9lbmNhcCh0b3MsIGlubmVyX2lwaCwgc2tiKTtcbi1cdHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO1xuIFx0aWYgKHR0bCA9PSAwKSB7XG4gXHRcdGlmIChwYXlsb2FkX3Byb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSlcbiBcdFx0XHR0dGwgPSBpbm5lcl9pcGgtXHUwMDNldHRsO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRk9VJiMzNDssCiAgICAmIzM0O05FVF9GT1VfSVBfVFVOTkVMUyYjMzQ7LAogICAgJiMzNDtORVRfSVBJUCYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2d1ZV9idWlsZF9oZWFkZXImIzM0OywKICAgICYjMzQ7aXBfbWRfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXBfdHVubmVsX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGJ5IHJlb3JkZXJpbmcgdGhlIGFzc2lnbm1lbnQgb2YgYGlubmVyX2lwaGAgYWZ0ZXIgYGlwX3R1bm5lbF9lbmNhcGAsIHdoaWNoIGNhbiByZWFsbG9jYXRlIHRoZSBza2IgaGVhZC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgZm9yIGBza2JfY293X2hlYWRgIGluIGBfX2d1ZV9idWlsZF9oZWFkZXJgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGNvcmUgbmV0d29ya2luZyBsb2dpYyAoRk9VL0dVRSBlbmNhcHN1bGF0aW9uIGFuZCBJUCB0dW5uZWxzKSB0aGF0IGFyZSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ODQ4MWVmZTI2NTFkMGUzMDZmMjM4OGFlYjNkYzYyOTZlYmY4ZmNkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTU6NTI6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9mb3VfY29yZS5jIGIvbmV0L2lwdjQvZm91X2NvcmUuYwppbmRleCBhYjA5ZGZjZGVjYmQ1Li44Y2YwZDQzYWNiNDEyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZvdV9jb3JlLmMKQEAgLTk4MCw2ICYjNDM7OTgwLDggQEAgaW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLAogCQkJCQkJc2tiLCAwLCAwLCBmYWxzZSk7CiAKIAloZHJsZW4gPSBzaXplb2Yoc3RydWN0IGd1ZWhkcikgJiM0Mzsgb3B0bGVuOwomIzQzOwlpZiAoc2tiX2Nvd19oZWFkKHNrYiwgaGRybGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSkpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKIAogCXNrYl9wdXNoKHNrYiwgaGRybGVuKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdHVubmVsLmMgYi9uZXQvaXB2NC9pcF90dW5uZWwuYwppbmRleCA5ZDExNGJkNTc1ZjkyLi4yYmQ2ODRlYjJiYTI1IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF90dW5uZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF90dW5uZWwuYwpAQCAtNjA2LDYgJiM0Mzs2MDYsNyBAQCB2b2lkIGlwX21kX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAlpZiAoaXBfdHVubmVsX2VuY2FwKHNrYiwgJmFtcDt0dW5faW5mby0mZ3Q7ZW5jYXAsICZhbXA7cHJvdG8sICZhbXA7Zmw0KSAmbHQ7IDApCiAJCWdvdG8gdHhfZXJyb3I7CiYjNDM7CWlubmVyX2lwaCA9IChjb25zdCBzdHJ1Y3QgaXBoZHIgKilza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKTsKIAogCXVzZV9jYWNoZSA9IGlwX3R1bm5lbF9kc3RfY2FjaGVfdXNhYmxlKHNrYiwgdHVuX2luZm8pOwogCWlmICh1c2VfY2FjaGUpCkBAIC03NjUsOCAmIzQzOzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgdHVubmVsLSZndDtuZXQsIFJFQURfT05DRSh0dW5uZWwtJmd0O3Bhcm1zLmxpbmspLAogCQkJICAgIHR1bm5lbC0mZ3Q7ZndtYXJrLCBza2JfZ2V0X2hhc2goc2tiKSwgMCk7CiAKJiM0MzsJZGYgPSB0bmxfcGFyYW1zLSZndDtmcmFnX29mZjsKJiM0MzsJdHRsID0gdG5sX3BhcmFtcy0mZ3Q7dHRsOwomIzQzOwogCWlmIChpcF90dW5uZWxfZW5jYXAoc2tiLCAmYW1wO3R1bm5lbC0mZ3Q7ZW5jYXAsICZhbXA7cHJvdG9jb2wsICZhbXA7Zmw0KSAmbHQ7IDApCiAJCWdvdG8gdHhfZXJyb3I7CiYjNDM7CWlubmVyX2lwaCA9IChjb25zdCBzdHJ1Y3QgaXBoZHIgKilza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKTsKIAogCWlmIChjb25uZWN0ZWQgJmFtcDsmYW1wOyBtZCkgewogCQl1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTsKQEAgLTc5OSw3ICYjNDM7ODA0LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQlnb3RvIHR4X2Vycm9yOwogCX0KIAotCWRmID0gdG5sX3BhcmFtcy0mZ3Q7ZnJhZ19vZmY7CiAJaWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApICZhbXA7JmFtcDsgIXR1bm5lbC0mZ3Q7aWdub3JlX2RmKQogCQlkZiB8PSAoaW5uZXJfaXBoLSZndDtmcmFnX29mZiAmYW1wOyBodG9ucyhJUF9ERikpOwogCkBAIC04MjEsNyAmIzQzOzgyNSw2IEBAIHZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl9CiAKIAl0b3MgPSBpcF90dW5uZWxfZWNuX2VuY2FwKHRvcywgaW5uZXJfaXBoLCBza2IpOwotCXR0bCA9IHRubF9wYXJhbXMtJmd0O3R0bDsKIAlpZiAodHRsID09IDApIHsKIAkJaWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQogCQkJdHRsID0gaW5uZXJfaXBoLSZndDt0dGw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVHVubmVsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L2lwdjQvZm91X2NvcmUuY2AgYW5kIGBuZXQvaXB2NC9pcF90dW5uZWwuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgdGhlIGVuY2Fwc3VsYXRpb24gb2YgcGFja2V0cywgc3BlY2lmaWNhbGx5IHdpdGggR2VuZXJpYyBVRFAgRW5jYXBzdWxhdGlvbiAoR1VFKSBhbmQgSVAtaW4tSVAgdHVubmVscy4KCkluIGBmb3VfY29yZS5jYCwgdGhlIHBhdGNoIGFkZHMgYSBgc2tiX2Nvd19oZWFkYCBjYWxsIGJlZm9yZSBgc2tiX3B1c2hgLiBUaGlzIHRlbGxzIG1lIHdlJiMzOTtyZSBwb3RlbnRpYWxseSBtYWtpbmcgYSBjb3B5LW9uLXdyaXRlIG9mIHRoZSBTS0ImIzM5O3MgaGVhZC4gVGhhdCBzdWdnZXN0cyB3ZSBtaWdodCBiZSBtb2RpZnlpbmcgdGhlIHBhY2tldCBoZWFkZXIgaW4gcGxhY2UsIHdoaWNoIGlzIGZpbmUsIGJ1dCBuZWVkcyB0byBiZSBoYW5kbGVkIGNhcmVmdWxseS4gVGhlIHN1YnNlcXVlbnQgYHNrYl9wdXNoYCBpcyBzdGFuZGFyZCBwcmFjdGljZSBmb3IgYWRkaW5nIHRoZSBHVUUgaGVhZGVyLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0IGlzIGluIGBpcF90dW5uZWwuY2AuIFRoZXJlIGFyZSB0d28gb2NjdXJyZW5jZXMgd2hlcmUgYGlwX3R1bm5lbF9lbmNhcGAgaXMgY2FsbGVkLiBUaGUgcGF0Y2ggYWRkcyBhIGxpbmUgd2hpY2ggY2FzdHMgYSBwb2ludGVyIHRvIGBza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKWAgdG8gdGhlIGBpbm5lcl9pcGhgIHZhcmlhYmxlLCBidXQgdGhlIHBhdGNoIHJlbW92ZXMgYGRmID0gdG5sX3BhcmFtcy0mZ3Q7ZnJhZ19vZmY7YCBhbmQgYHR0bCA9IHRubF9wYXJhbXMtJmd0O3R0bDtgIGZyb20gYmVsb3cgdGhlIGBpcF90dW5uZWxfZW5jYXBgIGZ1bmN0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoaXMgd2FzIGEgcG90ZW50aWFsIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUuIFRoZSBsb2dpYyBzdWdnZXN0ZWQgdGhhdCBgaXBfdHVubmVsX2VuY2FwYCBtaWdodCByZWFsbG9jYXRlIHRoZSBTS0ImIzM5O3MgYnVmZmVyIChlc3BlY2lhbGx5IGlmIHRoZSBHVUUgaGVhZGVyIGhhZCB0byBiZSBjb25zdHJ1Y3RlZCwgd2hpY2ggd291bGQgY2FsbCBgc2tiX2Nvd19oZWFkYCksIGFuZCBpZiBgaW5uZXJfaXBoYCB3ZXJlIHJlYWQgKmJlZm9yZSogdGhlIGVuY2Fwc3VsYXRpb24sIGl0IGNvdWxkIHBvaW50IHRvIGdhcmJhZ2UuIEhvd2V2ZXIsIEkgbm93IHJlYWxpemUgdGhlIGNvZGUgcmVhZHMgYGlubmVyX2lwaGAgKmFmdGVyKiB0aGUgYGlwX3R1bm5lbF9lbmNhcGAgY2FsbC4gVGhpcyBkb2VzbiYjMzk7dCBlbnRpcmVseSBtYWtlIHNlbnNlLgoKSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEkgd2FudCB0byBjaGVjayBob3cgYGlwX3R1bm5lbF9lbmNhcGAgaXRzZWxmIG1pZ2h0IGJlIHJlYWxsb2NhdGluZyB0aGUgU0tCLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHNrYl9jb3dfaGVhZGAgaXMgZG9pbmcgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAuIEkmIzM5O2xsIGFsc28gd2FudCB0byBsb29rIGF0IGBpcF9tZF90dW5uZWxfeG1pdGAgYW5kIGBpcF90dW5uZWxfeG1pdGAuIExldCBtZSBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24uLi4gSSBuZWVkIHRvIHNlZSBpZiB0aGUgcmVtb3ZhbCBvZiB0aGUgbGluZXMgaGFzIHNvbWUgY29uc2VxdWVuY2UgSSYjMzk7bSBub3Qgc2VlaW5nIGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fZ3VlX2J1aWxkX2hlYWRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9mb3UuaD0xNT1pbnQgX19mb3VfYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF90dW5uZWxfZW5jYXAgKmUsXG5pbmNsdWRlL25ldC9mb3UuaC0xNi1cdFx0ICAgICAgIHU4ICpwcm90b2NvbCwgX19iZTE2ICpzcG9ydCwgaW50IHR5cGUpO1xuaW5jbHVkZS9uZXQvZm91Lmg6MTc6aW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLFxuaW5jbHVkZS9uZXQvZm91LmgtMTgtXHRcdCAgICAgICB1OCAqcHJvdG9jb2wsIF9fYmUxNiAqc3BvcnQsIGludCB0eXBlKTtcbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jPTk1ND1FWFBPUlRfU1lNQk9MKF9fZm91X2J1aWxkX2hlYWRlcik7XG5uZXQvaXB2NC9mb3VfY29yZS5jLTk1NS1cbm5ldC9pcHY0L2ZvdV9jb3JlLmM6OTU2OmludCBfX2d1ZV9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtOTU3LVx0XHQgICAgICAgdTggKnByb3RvY29sLCBfX2JlMTYgKnNwb3J0LCBpbnQgdHlwZSlcbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jLTEwMjgtfVxubmV0L2lwdjQvZm91X2NvcmUuYzoxMDI5OkVYUE9SVF9TWU1CT0woX19ndWVfYnVpbGRfaGVhZGVyKTtcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtMTAzMC1cbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jPTEwNjk9c3RhdGljIGludCBndWVfYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF90dW5uZWxfZW5jYXAgKmUsXG4tLVxubmV0L2lwdjQvZm91X2NvcmUuYy0xMDc2LVxubmV0L2lwdjQvZm91X2NvcmUuYzoxMDc3Olx0ZXJyID0gX19ndWVfYnVpbGRfaGVhZGVyKHNrYiwgZSwgcHJvdG9jb2wsIFx1MDAyNnNwb3J0LCB0eXBlKTtcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtMTA3OC1cdGlmIChlcnIpXG4tLVxubmV0L2lwdjYvZm91Ni5jPTU3PXN0YXRpYyBpbnQgZ3VlNl9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcbi0tXG5uZXQvaXB2Ni9mb3U2LmMtNjQtXG5uZXQvaXB2Ni9mb3U2LmM6NjU6XHRlcnIgPSBfX2d1ZV9idWlsZF9oZWFkZXIoc2tiLCBlLCBwcm90b2NvbCwgXHUwMDI2c3BvcnQsIHR5cGUpO1xubmV0L2lwdjYvZm91Ni5jLTY2LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjQ5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IGRpZ2dpbmcgaW50byBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eSDigJMgRk9VL0dVRSBlbmNhcHN1bGF0aW9uIGFuZCBJUCB0dW5uZWxzLCB0byBiZSBwcmVjaXNlLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRoYXQgYHNrYl9jb3dfaGVhZGAgY2FsbCB3aXRoaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAgYW5kIHRoZSByZW9yZGVyaW5nIG9mIHRoZSBgaW5uZXJfaXBoYCBhc3NpZ25tZW50cyBpbiBgaXBfdHVubmVsX3htaXRgIGFuZCBgaXBfbWRfdHVubmVsX3htaXRgIGFyZSB0aGUgcmVkIGZsYWdzLiBUaGVzZSBhcmUgKmZ1bmN0aW9uYWwqIGNoYW5nZXMsIGFuZCB0aGF0IHNjcmVhbXMgJiMzNDtmdXp6IG1lJiMzNDsgYXQgdGhlIHRvcCBvZiBteSBsdW5ncy4gVGltZSB0byBwdXQgbXkgZnV6emluZyBoYXQgb24hCgpOb3csIGJlZm9yZSBJIGNhbiByZWFsbHkgZGl2ZSBpbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBpbGF0aW9uIGNvbmRpdGlvbnMuIExldCYjMzk7cyBzZWUuLi4gYG5ldC9pcHY0L2ZvdV9jb3JlLmNgIGlzIGdvaW5nIHRvIGJlIGNvbXBpbGVkIGlmIGBDT05GSUdfTkVUX0ZPVWAgaXMgc2V0LiBBbmQgZm9yIGBuZXQvaXB2NC9pcF90dW5uZWwuY2AsIGl04oCZcyB0aGUgdXN1YWwgc3VzcGVjdHM6IGBDT05GSUdfTkVUX0lQSVBgLCBgQ09ORklHX05FVF9JUEdSRWAsIGFuZCBzbyBvbi4gUmlnaHQuIEdvdCBpdC4gTm93IEkgY2FuIGJ1aWxkIHRoZSByaWdodCBjb25maWd1cmF0aW9ucyB0byBnZXQgdGhpcyB1bmRlciB0ZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZvdV9jb3JlXFwubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT0yNj1ncmUteSA6PSBncmVfZGVtdXgub1xubmV0L2lwdjQvTWFrZWZpbGU6Mjc6Zm91LXkgOj0gZm91X2NvcmUubyBmb3VfbmwubyBmb3VfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlLTI4LW9iai0kKENPTkZJR19ORVRfRk9VKSAmIzQzOz0gZm91Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQ5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IExldmVyYWdpbmcgdGhlIGBORVRfRk9VYCBSZXF1aXJlbWVudCoqCgpSaWdodCwgc28gYE5FVF9GT1VgIGlzIGRlZmluaXRlbHkgYSBrZXkgZmFjdG9yIGluIHRoaXMgc2l0dWF0aW9uLiBJdCYjMzk7cyB0aGUgbHluY2hwaW4sIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgdGllcyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZS4gSSYjMzk7bSBnb2luZyB0byBuZWVkIHRoaXMgZm9yIHN1cmUuIE5vdywgd2hlcmUgYW0gSSBnb2luZyB0byBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBpc3N1ZT8gV2FpdCwgSSB0aGluayBJIGtub3cgd2hlcmUgdG8gZ28gbmV4dC4gTGV0IG1lIHRoaW5rIGFib3V0IHRoYXQsIGZpcnN0LiBXaGF0IGFib3V0IHRoYXQgYGlwX3R1bm5lbC5jYCBmaWxlPyBDb3VsZCB0aGF0IGJlIGhlbHBmdWw/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdHVubmVsXFwubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE4LVxubmV0L2lwdjQvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX05FVF9JUF9UVU5ORUwpICYjNDM7PSBpcF90dW5uZWwub1xubmV0L2lwdjQvTWFrZWZpbGUtMjAtb2JqLSQoQ09ORklHX1NZU0NUTCkgJiM0Mzs9IHN5c2N0bF9uZXRfaXB2NC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA0MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBUdW5uZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgdGhlIGBORVRfSVBfVFVOTkVMYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBiZWluZyBwdWxsZWQgaW4gYnkgdmFyaW91cyB0dW5uZWwgY29uZmlndXJhdGlvbnMuIE15IG5leHQgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIGludG8gdGhlIHNvdXJjZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG9wdGlvbiAqcmVhbGx5KiBkb2VzIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gSSYjMzk7bGwgaGVhZCBvdmVyIHRvIGBuZXQvaXB2NC9LY29uZmlnYCB0byBleGFtaW5lIGBORVRfSVBfVFVOTkVMYC4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgYG5ldC9pcHY0YCBpcyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIElQdjQtcmVsYXRlZCBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24sIGFuZCBgS2NvbmZpZ2AgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHB1cnBvc2Ugb2YgdGhlc2Ugb3B0aW9ucy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBwdXJwb3NlLCBhbmQgd2hhdCB0aGlzIG9wdGlvbiBlbmFibGVzIGFuZCBkaXNhYmxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUF9UVU5ORUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xODA9Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTg1LVxubmV0L2lwdjQvS2NvbmZpZzoxODY6Y29uZmlnIE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMTg3LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM1MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBUcmlzdGF0ZSBEZXBlbmRlbmN5KioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgdHJpc3RhdGUsIG1lYW5pbmcgaXQmIzM5O3MgZGVwZW5kZW50IG9uIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCYjMzk7cyBub3QgYSBzdGFuZGFsb25lLCBzZWxmLXNlbGVjdGluZyBjaG9pY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1dobyYjMzk7cyBwdWxsaW5nIHRoZSBzdHJpbmdzIG9uIHRoaXMgb25lPyYjMzQ7LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyBgTkVUX0lQX1RVTk5FTGAuIFRpbWUgdG8gZGlnIGluIGFuZCB0cmFjZSB0aG9zZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZWxlY3Rpb24gcGF0aCB0byB0cnVseSBncmFzcCBpdHMgcm9sZSBhbmQgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgc3lzdGVtJiMzOTtzIG92ZXJhbGwgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGNvbm5lY3RlZCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9JUF9UVU5ORUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xNjQtXHRzZWxlY3QgSU5FVF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWc6MTY1Olx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMTY2LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MTkyPWNvbmZpZyBORVRfSVBHUkVcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE5NC1cdGRlcGVuZHMgb24gTkVUX0lQR1JFX0RFTVVYXG5uZXQvaXB2NC9LY29uZmlnOjE5NTpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTE5Ni1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMwND1jb25maWcgTkVUX0lQVlRJXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMDYtXHRzZWxlY3QgSU5FVF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWc6MzA3Olx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMzA4LVx0c2VsZWN0IFhGUk1cbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMxNj1jb25maWcgTkVUX1VEUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMzE3LVx0dHJpc3RhdGVcbm5ldC9pcHY0L0tjb25maWc6MzE4Olx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMzE5LVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNTA9Y29uZmlnIElQVjZfVlRJXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNTItXHRzZWxlY3QgSVBWNl9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTUzOlx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMTU0LVx0c2VsZWN0IFhGUk1cbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE2Mj1jb25maWcgSVBWNl9TSVRcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE2NC1cdHNlbGVjdCBJTkVUX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZzoxNjU6XHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0xNjYtXHRzZWxlY3QgSVBWNl9ORElTQ19OT0RFVFlQRVxuLS1cbm5ldC9pcHY2L0tjb25maWc9MjEwPWNvbmZpZyBJUFY2X0dSRVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjEyLVx0c2VsZWN0IElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnOjIxMzpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIxNC1cdGRlcGVuZHMgb24gTkVUX0lQR1JFX0RFTVVYXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNDIKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGNvbnNpZGVyYXRpb25zOgoKKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgVHVubmVsaW5nIE9wdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gVGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHR1bm5lbGluZyBwcm90b2NvbHMsIGBORVRfSVBJUGAsIGBORVRfSVBHUkVgLCBhbmQgYE5FVF9VRFBfVFVOTkVMYCBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBzb2xpZCBvcHRpb25zLiBUaGV5JiMzOTtyZSBhbGwgcHJldHR5IHN0YW5kYXJkIGFuZCB3ZWxsLXVuZGVyc3Rvb2QuIE5vdywgdGhhdCBgTkVUX0ZPVWAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaW50cmlndWluZzsgaXQgc2VlbXMgdG8gYmUgbGlua2VkIHRvIGBORVRfVURQX1RVTk5FTGAgZGlyZWN0bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlc2UgY29uZmlndXJhdGlvbiBpdGVtcyBpcyBhY2N1cmF0ZS4gVGhlIGRlcGVuZGVuY3kgY2hhaW4gaXMgY2xlYXIgZW5vdWdoIHRoYXQgSSBzaG91bGQgZ28gYmFjayBhbmQgcmV2aWV3IGhvdyBgTkVUX0ZPVWAgc3BlY2lmaWNhbGx5IGludGVyYWN0cyB3aXRoIHRob3NlIG90aGVyIGNvbmZpZ3VyYXRpb25zLCB0byBzZWUgaWYgYW55dGhpbmcgZ2V0cyBzZXQgb3Igc2VsZWN0ZWQgYmFzZWQgb24gaXRzIHZhbHVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0ZPVSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTMxNj1jb25maWcgTkVUX1VEUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMyMC1cbm5ldC9pcHY0L0tjb25maWc6MzIxOmNvbmZpZyBORVRfRk9VXG5uZXQvaXB2NC9LY29uZmlnLTMyMi1cdHRyaXN0YXRlIFwmIzM0O0lQOiBGb28gKElQIHByb3RvY29scykgb3ZlciBVRFBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMyOS1cbm5ldC9pcHY0L0tjb25maWc6MzMwOmNvbmZpZyBORVRfRk9VX0lQX1RVTk5FTFNcbm5ldC9pcHY0L0tjb25maWctMzMxLVx0Ym9vbCBcJiMzNDtJUDogRk9VIGVuY2Fwc3VsYXRpb24gb2YgSVAgdHVubmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTMyCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipBbmFseXppbmcgYE5FVF9GT1VgIFNlbGVjdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgd2hhdCB0aGUgYE5FVF9GT1VgIHNlbGVjdGlvbiBjcml0ZXJpYSBoYXZlIHlpZWxkZWQuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgb3V0cHV0IGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgYmFzZWQgb24gd2hhdCBgTkVUX0ZPVWAgaXMgbWVhbnQgdG8gY2FwdHVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGUgcmVzdWx0cyBhcyBleHBlY3RlZCwgb3IgYXJlIHRoZXJlIGFueSBhbm9tYWxpZXMgdGhhdCByZXF1aXJlIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbj8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgYmlhc2VzLCBlZGdlIGNhc2VzLCBvciB1bmZvcmVzZWVuIGludGVyYWN0aW9ucyB3aXRoaW4gdGhlIG1vZGVsIHRoYXQgbWlnaHQgZXhwbGFpbiBhbnkgZGl2ZXJnZW5jZSBmcm9tIG15IHByaW9yIGFzc3VtcHRpb25zLiBUaGlzIGFsc28gYnJpbmdzIHVwIHdoYXQgJiMzNDtORVRfRk9VJiMzNDsgaXMgc2V0IHRvIGRvLCBzbyBJIGhhdmUgYSBmcmFtZSBvZiByZWZlcmVuY2UuIFRoaXMgaXMgZ29pbmcgdG8gYmUgcXVpY2sgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9GT1UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTY2PUNPTkZJR19ORVRfSVBWVEk9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjY3OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTY4LUNPTkZJR19JTkVUX0FIPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnPTYyPUNPTkZJR19ORVRfSVBWVEk9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZzo2MzpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWctNjQtQ09ORklHX0lORVRfQUg9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz02OT1DT05GSUdfTkVUX0lQVlRJPW1cbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZzo3MDpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZy03MS1DT05GSUdfSU5FVF9BSD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnPTU5PUNPTkZJR19ORVRfSVBWVEk9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnOjYwOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTYxLUNPTkZJR19JTkVUX0FIPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc9NjE9Q09ORklHX05FVF9JUFZUST1tXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc6NjI6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWctNjMtQ09ORklHX0lORVRfQUg9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9NjA9Q09ORklHX05FVF9JUFZUST1tXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnOjYxOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZy02Mi1DT05GSUdfSU5FVF9BSD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTgwPUNPTkZJR19ORVRfSVBWVEk9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnOjgxOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTgyLUNPTkZJR19JTkVUX0FIPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZz01OD1DT05GSUdfTkVUX0lQVlRJPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnOjU5OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctNjAtQ09ORklHX0lORVRfQUg9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTU5PUNPTkZJR19ORVRfSVBWVEk9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWc6NjA6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZy02MS1DT05GSUdfSU5FVF9BSD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz02MD1DT05GSUdfTkVUX0lQVlRJPW1cbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc6NjE6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTYyLUNPTkZJR19JTkVUX0FIPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZz01NT1DT05GSUdfTkVUX0lQVlRJPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnOjU2OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWctNTctQ09ORklHX0lORVRfQUg9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZz01Nj1DT05GSUdfTkVUX0lQVlRJPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZzo1NzpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZy01OC1DT05GSUdfSU5FVF9BSD1tXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Mzg2ND1icmNtZl9ub3RpZnlfc2NoZWRfc2Nhbl9yZXN1bHRzKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTM4OTUtXHQvKiBQRk4gZXZlbnQgaXMgbGltaXRlZCB0byBmaXQgNTEyIGJ5dGVzIHNvIHdlIG1heSBnZXRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjM4OTY6XHQgKiBtdWx0aXBsZSBORVRfRk9VTkQgZXZlbnRzLiBGb3Igbm93IHBsYWNlIGEgd2FybmluZyBoZXJlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMzg5Ny1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTQxNjY9c3RhdGljIHMzMiBicmNtZl9jZmc4MDIxMV9yZXN1bWUoc3RydWN0IHdpcGh5ICp3aXBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00MTg0LVx0XHRcdGJyY21mX2NmZzgwMjExX3NjaGVkX3NjYW5fc3RvcChjZmctXHUwMDNld2lwaHksIGlmcC1cdTAwM2VuZGV2LCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjQxODU6XHRcdFx0YnJjbWZfZndlaF91bnJlZ2lzdGVyKGNmZy1cdTAwM2VwdWIsIEJSQ01GX0VfUEZOX05FVF9GT1VORCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo0MTg2Olx0XHRcdGJyY21mX2Z3ZWhfcmVnaXN0ZXIoY2ZnLVx1MDAzZXB1YiwgQlJDTUZfRV9QRk5fTkVUX0ZPVU5ELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNDE4Ny1cdFx0XHRcdFx0ICAgIGJyY21mX25vdGlmeV9zY2hlZF9zY2FuX3Jlc3VsdHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTQxOTQ9c3RhdGljIHZvaWQgYnJjbWZfY29uZmlndXJlX3dvd2woc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00MjMxLVx0XHQvKiBOb3cgcmVyb3V0ZSB0aGUgZXZlbnQgZm9yIFBGTiB0byB0aGUgd293bCBmdW5jdGlvbi4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjQyMzI6XHRcdGJyY21mX2Z3ZWhfdW5yZWdpc3RlcihjZmctXHUwMDNlcHViLCBCUkNNRl9FX1BGTl9ORVRfRk9VTkQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDIzMzpcdFx0YnJjbWZfZndlaF9yZWdpc3RlcihjZmctXHUwMDNlcHViLCBCUkNNRl9FX1BGTl9ORVRfRk9VTkQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00MjM0LVx0XHRcdFx0ICAgIGJyY21mX3dvd2xfbmRfcmVzdWx0cyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Njc3Nz1zdGF0aWMgdm9pZCBicmNtZl9yZWdpc3Rlcl9ldmVudF9oYW5kbGVycyhzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY3OTYtXHRcdFx0ICAgIGJyY21mX25vdGlmeV9jb25uZWN0X3N0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2Nzk3Olx0YnJjbWZfZndlaF9yZWdpc3RlcihjZmctXHUwMDNlcHViLCBCUkNNRl9FX1BGTl9ORVRfRk9VTkQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02Nzk4LVx0XHRcdCAgICBicmNtZl9ub3RpZnlfc2NoZWRfc2Nhbl9yZXN1bHRzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZndlaC5oPTE4PXN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md2VoLmgtNTgtXHRCUkNNRl9FTlVNX0RFRihST0FNX1BSRVAsIDMyKSBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Z3ZWguaDo1OTpcdEJSQ01GX0VOVU1fREVGKFBGTl9ORVRfRk9VTkQsIDMzKSBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Z3ZWguaC02MC1cdEJSQ01GX0VOVU1fREVGKFBGTl9ORVRfTE9TVCwgMzQpIFxcXG4tLVxuaW5jbHVkZS9uZXQvZm91LmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuaW5jbHVkZS9uZXQvZm91Lmg6MjojaWZuZGVmIF9fTkVUX0ZPVV9IXG5pbmNsdWRlL25ldC9mb3UuaDozOiNkZWZpbmUgX19ORVRfRk9VX0hcbmluY2x1ZGUvbmV0L2ZvdS5oLTQtXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zMTY9Y29uZmlnIE5FVF9VRFBfVFVOTkVMXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMjAtXG5uZXQvaXB2NC9LY29uZmlnOjMyMTpjb25maWcgTkVUX0ZPVVxubmV0L2lwdjQvS2NvbmZpZy0zMjItXHR0cmlzdGF0ZSBcJiMzNDtJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMjktXG5uZXQvaXB2NC9LY29uZmlnOjMzMDpjb25maWcgTkVUX0ZPVV9JUF9UVU5ORUxTXG5uZXQvaXB2NC9LY29uZmlnLTMzMS1cdGJvb2wgXCYjMzQ7SVA6IEZPVSBlbmNhcHN1bGF0aW9uIG9mIElQIHR1bm5lbHNcJiMzNDtcbm5ldC9pcHY0L0tjb25maWctMzMyLVx0ZGVwZW5kcyBvbiBORVRfSVBJUCB8fCBORVRfSVBHUkUgfHwgSVBWNl9TSVRcbm5ldC9pcHY0L0tjb25maWc6MzMzOlx0c2VsZWN0IE5FVF9GT1Vcbm5ldC9pcHY0L0tjb25maWctMzM0LVx0aGVscFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlPTI3PWZvdS15IDo9IGZvdV9jb3JlLm8gZm91X25sLm8gZm91X2JwZi5vXG5uZXQvaXB2NC9NYWtlZmlsZToyODpvYmotJChDT05GSUdfTkVUX0ZPVSkgJiM0Mzs9IGZvdS5vXG5uZXQvaXB2NC9NYWtlZmlsZS0yOS1vYmotJChDT05GSUdfTkVUX0lQR1JFX0RFTVVYKSAmIzQzOz0gZ3JlLm9cbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jPTEwMjk9RVhQT1JUX1NZTUJPTChfX2d1ZV9idWlsZF9oZWFkZXIpO1xubmV0L2lwdjQvZm91X2NvcmUuYy0xMDMwLVxubmV0L2lwdjQvZm91X2NvcmUuYzoxMDMxOiNpZmRlZiBDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTXG5uZXQvaXB2NC9mb3VfY29yZS5jLTEwMzItXG4tLVxubmV0L2lwdjQvdWRwX29mZmxvYWQuYz0zNT1zdHJ1Y3QgdWRwX3R1bm5lbF90eXBlX2VudHJ5IHtcbi0tXG5uZXQvaXB2NC91ZHBfb2ZmbG9hZC5jLTQxLVx0XHRcdCAgICAgIElTX0VOQUJMRUQoQ09ORklHX1ZYTEFOKSAqIDIgJiM0MzsgXFxcbm5ldC9pcHY0L3VkcF9vZmZsb2FkLmM6NDI6XHRcdFx0ICAgICAgSVNfRU5BQkxFRChDT05GSUdfTkVUX0ZPVSkgKiAyICYjNDM7IFxcXG5uZXQvaXB2NC91ZHBfb2ZmbG9hZC5jLTQzLVx0XHRcdCAgICAgIElTX0VOQUJMRUQoQ09ORklHX1hGUk0pICogMilcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTIyOD1jb25maWcgSVBWNl9GT1Vcbm5ldC9pcHY2L0tjb25maWctMjI5LVx0dHJpc3RhdGVcbm5ldC9pcHY2L0tjb25maWc6MjMwOlx0ZGVmYXVsdCBORVRfRk9VIFx1MDAyNlx1MDAyNiBJUFY2XG5uZXQvaXB2Ni9LY29uZmlnLTIzMS1cbm5ldC9pcHY2L0tjb25maWc9MjMyPWNvbmZpZyBJUFY2X0ZPVV9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjMzLVx0dHJpc3RhdGVcbm5ldC9pcHY2L0tjb25maWc6MjM0Olx0ZGVmYXVsdCBORVRfRk9VX0lQX1RVTk5FTFMgXHUwMDI2XHUwMDI2IElQVjZfRk9VXG5uZXQvaXB2Ni9LY29uZmlnLTIzNS1cdHNlbGVjdCBJUFY2X1RVTk5FTFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWc9NzQ9Q09ORklHX05FVF9DTFNfTUFUQ0hBTEw9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZzo3NTpDT05GSUdfTkVUX0ZPVT15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjc2OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy03Ny1DT05GSUdfTkVUX0lQR1JFPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTg2PUNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0hMPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWc6ODc6Q09ORklHX05FVF9GT1U9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZzo4ODpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWctODktQ09ORklHX05FVF9JUEdSRT1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDY5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmV0d29yayBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgbmV0d29yayBjb25maWd1cmF0aW9ucy4gRnJvbSB3aGF0IEkgc2VlLCBgTkVUX0ZPVWAgYW5kIGBORVRfRk9VX0lQX1RVTk5FTFNgIGFyZSBkZWZpbml0ZWx5IHNvbGlkIGNvbmZpZ3VyYXRpb25zLCBnb29kIHN0YXJ0aW5nIHBvaW50cy4gQnV0LCBiZWNhdXNlIGBORVRfRk9VX0lQX1RVTk5FTFNgIGhhcyBzb21lIGRlcGVuZGVuY2llcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgY292ZXJlZC4gUmlnaHQsIHNvIHRoYXQgbWVhbnMgSSBuZWVkIHRvIGFsc28gY2hlY2sgb3V0IGBORVRfSVBJUGAsIG9yIHBvdGVudGlhbGx5IGBORVRfSVBHUkVgLCBvciBldmVuIGBJUFY2X1NJVGAgc2luY2UgdGhleSYjMzk7cmUgYWxsIHJlbGF0ZWQgdG8gdGhlIGBORVRfRk9VX0lQX1RVTk5FTFNgIHNldHVwLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGNsb3NlciBsb29rIGF0IGBORVRfSVBJUGAgYW5kIGBORVRfSVBHUkVgIGFuZCBzZWUgd2hhdCB0aGV5JiMzOTtyZSBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUElQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MTQ5PWNvbmZpZyBJUF9QTlBfUkFSUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTYxLVxubmV0L2lwdjQvS2NvbmZpZzoxNjI6Y29uZmlnIE5FVF9JUElQXG5uZXQvaXB2NC9LY29uZmlnLTE2My1cdHRyaXN0YXRlIFwmIzM0O0lQOiB0dW5uZWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0MjUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIGBjb25maWcgTkVUX0lQR1JFYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSByaWdodCBpbi4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYE5FVF9JUEdSRWAuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIGxpa2VseSBsb29raW5nIGZvciBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIEdSRSAoR2VuZXJpYyBSb3V0aW5nIEVuY2Fwc3VsYXRpb24pIHR1bm5lbHMgd2l0aGluIGEgbmV0d29yayBjb25maWd1cmF0aW9uIOKAkyBwcm9iYWJseSByZWxhdGVkIHRvIGEgTGludXgga2VybmVsIG9yIG5ldHdvcmtpbmcgYXBwbGlhbmNlLiBUaGUgcHJlY2lzZSBtZWFuaW5nIGhpbmdlcyBvbiB0aGUgb3ZlcmFyY2hpbmcgcHJvYmxlbSBJJiMzOTttIHRyeWluZyB0byBzb2x2ZSwgYnV0IEkgbmVlZCB0byBzdGFydCBoZXJlLiBJIHdhbnQgdG8gY29uZmlybSBpZiBHUkUgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmZpZ3VyZWQgaW4gYSBub24tc3RhbmRhcmQgd2F5LgoKRGVwZW5kaW5nIG9uIHdoYXQgSSBmaW5kLCB0aGUgbmV4dCBxdWVzdGlvbnMgaW1tZWRpYXRlbHkgc3ByaW5nIHRvIG1pbmQuIElmIGVuYWJsZWQsIEkmIzM5O2xsIG5lZWQgdG8ga25vdzogQXJlIHRoZSBHUkUgdHVubmVscyBjb25maWd1cmVkIHN0YXRpY2FsbHksIG9yIGFyZSB0aGV5IG1hbmFnZWQgZHluYW1pY2FsbHkgKGUuZy4sIHVzaW5nIGEgcm91dGluZyBwcm90b2NvbCk/IFdoYXQgYXJlIHRoZSB0dW5uZWwgZW5kcG9pbnRzIChzb3VyY2UvZGVzdGluYXRpb24gSVBzKT8gV2hhdCBwcm90b2NvbCBpcyBlbmNhcHN1bGF0ZWQgKGUuZy4sIElQdjQsIElQdjYpPyBXaGF0JiMzOTtzIHRoZSBNVFUgc2V0dGluZyBmb3IgdGhlIHR1bm5lbCBpbnRlcmZhY2U/IEFueSB1c2Ugb2Yga2V5aW5nIG9yIGNoZWNrc3Vtcz8KCklmIGRpc2FibGVkLCBJJiMzOTtsbCBhc3Nlc3Mgd2hldGhlciB0aGF0JiMzOTtzIGV4cGVjdGVkIGJlaGF2aW9yLiBJdCBtYXkgYmUgZHVlIHRvIG90aGVyIGNvbnNpZGVyYXRpb25zLCBzZWN1cml0eSBjb25jZXJucywgb3IgYXJjaGl0ZWN0dXJlIG9mIHRoZSBuZXR3b3JrLiBBIGRpc2FibGluZyBzZXR0aW5nIGNvdWxkIHRyaWdnZXIgYW5vdGhlciBxdWVzdGlvbjogaXMgdGhlcmUgYW5vdGhlciB0eXBlIG9mIHR1bm5lbCBjb25maWd1cmF0aW9uPyBPciwgaXMgR1JFIHNpbXBseSByZWR1bmRhbnQ/IEFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzPwoKRXNzZW50aWFsbHksIEkmIzM5O20gdHJ5aW5nIHRvIGVzdGFibGlzaCBhIGJhc2VsaW5lLiBVbmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBvZiBgTkVUX0lQR1JFYCBpcyB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcCBmb3IgZGlhZ25vc2luZyBhIEdSRS1yZWxhdGVkIGlzc3VlIG9yIHNldHRpbmcgdXAgYSBuZXcgR1JFIHR1bm5lbC4gSSYjMzk7bSBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgbmV0d29yayYjMzk7cyB0dW5uZWwgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0lQR1JFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTc5LVxubmV0L2lwdjQvS2NvbmZpZzoxODA6Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIGRlbXVsdGlwbGV4ZXJcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTE4Nj1jb25maWcgTkVUX0lQX1RVTk5FTFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTkxLVxubmV0L2lwdjQvS2NvbmZpZzoxOTI6Y29uZmlnIE5FVF9JUEdSRVxubmV0L2lwdjQvS2NvbmZpZy0xOTMtXHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIHR1bm5lbHMgb3ZlciBJUFwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMjA2LVxubmV0L2lwdjQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9JUEdSRV9CUk9BRENBU1Rcbm5ldC9pcHY0L0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtJUDogYnJvYWRjYXN0IEdSRSBvdmVyIElQXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDMxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEtlcm5lbCBNb2R1bGUgQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBpbnRlZ3JhdGluZyB0aGVzZSBuZXcgdHVubmVsaW5nIHByb3RvY29scyBpbnRvIHRoZSBzeXN0ZW0uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBhcHByb3ByaWF0ZSBrZXJuZWwgc3ltYm9scyBhcmUgZW5hYmxlZC4gSSYjMzk7bGwgYWRkIGBORVRfRk9VYCwgYE5FVF9GT1VfSVBfVFVOTkVMU2AsIGBORVRfSVBJUGAsIGFuZCBgTkVUX0lQR1JFYCB0byB0aGUgbW9kdWxlIGNvbmZpZ3VyYXRpb24uIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4KCk5vdywgdGhlIGNvcmUgb2YgdGhpcyBpbnRlZ3JhdGlvbiBsaWVzIGluIG1vZGlmeWluZyB0aGUgcGFja2V0IGhhbmRsaW5nLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzLCBpdCBzZWVtcyB0aGF0IGBfX2d1ZV9idWlsZF9oZWFkZXJgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiB0aGF0IGhhcyBjaGFuZ2VkLiBBZGRpdGlvbmFsbHksIHRoZXJlIGFyZSBtb2RpZmljYXRpb25zIHRvIGBpcF9tZF90dW5uZWxfeG1pdGAgYW5kIGBpcF90dW5uZWxfeG1pdGAg4oCTIHByb2JhYmx5IGZvciB0aGUgdHJhbnNtaXNzaW9uIGFzcGVjdC4KClRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIGFib3V0IHN5bWJvbCB2aXNpYmlsaXR5LiBBcmUgdGhlc2UgZnVuY3Rpb25zIGFjY2Vzc2libGUgZnJvbSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBtb2R1bGUgc3lzdGVtPyBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBkaXJlY3RseSBjYWxsIG9yIHVzZSB0aGVtLiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgX19ndWVfYnVpbGRfaGVhZGVyYCwgYGlwX21kX3R1bm5lbF94bWl0YCBhbmQgYGlwX3R1bm5lbF94bWl0YCBhcmUgYWxsIGV4cG9ydGVkLCB3aGljaCBtZWFucyBJIGNhbiBkaXJlY3RseSB1dGlsaXplIHRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gbXkgbmV3IG1vZHVsZS4gVGhhdCYjMzk7cyBhIGh1Z2UgcmVsaWVmLCBpdCBtZWFucyB0aGlzIGludGVncmF0aW9uIHNob3VsZCBiZSBmZWFzaWJsZSBhbmQgdGhhdCBJIHdvbiYjMzk7dCBoYXZlIHRvIGp1bXAgdGhyb3VnaCBhbnkgdW5leHBlY3RlZCBob29wcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qaXBfdHVubmVsX3htaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaXBfdHVubmVsLmM9NjcwPXZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF90dW5uZWwuYy04NjItfVxubmV0L2lwdjQvaXBfdHVubmVsLmM6ODYzOkVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF94bWl0KTtcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTg2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NTgKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gYGlwX21kX3R1bm5lbF94bWl0YCoqCgpBbHJpZ2h0LCB0aW1lIHRvIHJldmlzaXQgYGlwX21kX3R1bm5lbF94bWl0YC4gSSBuZWVkIHRvIGdldCBiYWNrIGluIHRoZSB3ZWVkcyB3aXRoIHRoaXMgZnVuY3Rpb24uIEl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIElQLWluLUlQIHR1bm5lbCB0cmFuc21pc3Npb24gcHV6emxlLCBhbmQgSSYjMzk7bSBpdGNoaW5nIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgcGVyZm9ybWFuY2UgYm90dGxlbmVjayBJIGNhbiBpbXByb3ZlLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGl04oCZcyBoYW5kbGluZyB0aGUgcGFja2V0IGNvbnN0cnVjdGlvbiBlZmZpY2llbnRseS4gQXJlIHRoZSBtZW1vcnkgY29waWVzIG9wdGltaXplZD8gQW55IHVubmVjZXNzYXJ5IHN5c3RlbSBjYWxscz8gV2hhdCBhYm91dCBhbGlnbm1lbnQgaXNzdWVzIGltcGFjdGluZyBDUFUgY2FjaGUgdXNhZ2U/IFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIChvciB0aGUgcGFpbikgaGFwcGVucywgc28gSSBuZWVkIGEgY2xlYXIgbWVudGFsIHBpY3R1cmUgb2YgaXRzIGlubmVyIHdvcmtpbmdzLiBJ4oCZbGwgc3RhcnQgYnkgcmV2aWV3aW5nIHRoZSBjb2RlIGFnYWluIHdpdGggYSBmcmVzaCBwZXJzcGVjdGl2ZSwgbWF5YmUgdHJhY2Ugc29tZSBwYWNrZXRzIHRocm91Z2ggdG8gc2VlIGhvdyBpdCBwZXJmb3JtcyBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uIExldOKAmXMgaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIG9yIHdvcnNlLCBidWdzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsb29raW5nIGF0IHRoZSBkYXRhIHN0cnVjdHVyZSBtYW5pcHVsYXRpb24uIFRoZSBoZWFkZXIgY29uc3RydWN0aW9uIGxvZ2ljIGlzIHVzdWFsbHkgd2hlcmUgSSBmaW5kIHN1cnByaXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qaXBfbWRfdHVubmVsX3htaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaXBfdHVubmVsLmM9NTcxPXZvaWQgaXBfbWRfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF90dW5uZWwuYy02NjctfVxubmV0L2lwdjQvaXBfdHVubmVsLmM6NjY4OkVYUE9SVF9TWU1CT0xfR1BMKGlwX21kX3R1bm5lbF94bWl0KTtcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTY2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NDcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZCwgaW4gdGhlIGZpcnN0IHBlcnNvbiBhbmQgYXNzdW1pbmcgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGBfX2d1ZV9idWlsZF9oZWFkZXJgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgX19ndWVfYnVpbGRfaGVhZGVyYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGl0cyBwdXJwb3NlLiBHaXZlbiB0aGUgbmFtZSwgSSYjMzk7bSBleHBlY3RpbmcgaXQgcHJvYmFibHkgY29uc3RydWN0cyBvciBtYW5hZ2VzIHNvbWUgaGVhZGVyIGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgR1VFIGZyYW1ld29yaywgYnV0IGEgcXVpY2sgY29uZmlybWF0aW9uIGlzIGFsd2F5cyB3aXNlLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoYXQgaXQgbWlnaHQgaW52b2x2ZSB0YXNrcyBsaWtlOgoKKiAgICoqVmVyc2lvbmluZzoqKiBEb2VzIGl0IGhhbmRsZSB2ZXJzaW9uIGlkZW50aWZpZXJzIGZvciB0aGUgYnVpbHQgYXJ0aWZhY3Q/IFBlcmhhcHMgaXQgZW1iZWRzIHRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgYnVpbGQgdG9vbCBvciBhIGNvbXBvbmVudD8KKiAgICoqRGVwZW5kZW5jaWVzOioqIE1heWJlIGl0IGxpc3RzIHRoZSBkZXBlbmRlbmNpZXMgYmFrZWQgaW50byB0aGUgZmluYWwgb3V0cHV0LiBJdCYjMzk7cyBvZnRlbiBoZWxwZnVsIHRvIGtub3cgdGhlIGV4YWN0IGRlcGVuZGVuY3kgdmVyc2lvbnMgdXNlZCBhdCBidWlsZCB0aW1lLgoqICAgKipNZXRhZGF0YToqKiBEb2VzIGl0IHN0b3JlIGFueSBtZXRhZGF0YSByZWdhcmRpbmcgdGhlIGJ1aWxkIGVudmlyb25tZW50IGl0c2VsZj8gVGhpbmsgYnVpbGQgc3lzdGVtIGRldGFpbHMsIGNvbXBpbGVyIGZsYWdzLCBob3N0bmFtZSwgdGltZXN0YW1wcywgZXRjLj8KKiAgICoqQ2hlY2tzdW1zL0hhc2hlczoqKiBDb3VsZCBpdCBjb21wdXRlIGFuZCBpbmNsdWRlIGNoZWNrc3VtcyBvciBjcnlwdG9ncmFwaGljIGhhc2hlcyBmb3IgaW50ZWdyaXR5IHZlcmlmaWNhdGlvbj8gVGhhdOKAmWQgYmUgYSBzbWFydCBhZGRpdGlvbi4KKiAgICoqRm9ybWF0OioqIEkgYW0gY29uc2lkZXJpbmcgd2hhdCBmb3JtYXQgaXQgdXNlcyBmb3IgdGhlIGhlYWRlci4gSXMgaXQgYSBwbGFpbiB0ZXh0IGZvcm1hdCwgYSBzdHJ1Y3R1cmVkIGZvcm1hdCBsaWtlIEpTT04gb3IgWUFNTCwgb3Igc29tZXRoaW5nIG1vcmUgYmVzcG9rZT8KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBidWlsZCBwcm9jZXNzLiBJcyBpdCBjYWxsZWQgZWFybHksIGxhdGUsIG9yIGF0IGV2ZXJ5IHN0YWdlPyBJcyBpdCBjcml0aWNhbCBmb3IgY29tcGlsYXRpb24sIGxpbmtpbmcsIG9yIHBvc3QtcHJvY2Vzc2luZz8gSSBhbSBub3cgZm9ybWluZyB0aGUgcXVlc3Rpb25zIHRvIGd1aWRlIHRoZSBleGFtaW5hdGlvbjogV2hhdCBpcyBpdCBjYWxsZWQgd2l0aD8gV2hhdCBkb2VzIGl0IHJldHVybj8gV2hhdCBpcyBpdCB1c2VkIGZvcj8gRG9lcyBpdCB3cml0ZSB0byBhIGZpbGUsIG1vZGlmeSBhbiBpbi1tZW1vcnkgc3RydWN0dXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8KCk9uY2UgSSBrbm93IHRoZSBmdW5kYW1lbnRhbCBqb2IsIEkmIzM5O2xsIHRoZW4gbW92ZSB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgdGhlIGRldGFpbHMgb2YgaXRzIGltcGxlbWVudGF0aW9uLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIGNvbXBvbmVudHMgb2YgdGhlIHN5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIHdoaWNoIGFyZSBwcm9iYWJseSB0aGUgZm9sbG93aW5nOgoKKiAgICoqU2VjdXJpdHk6KiogZG9lcyBpdCBhZGQgYW55IHNlY3VyaXR5IGNvbmNlcm5zPwoqICAgKipQZXJmb3JtYW5jZToqKiBjb3VsZCBpdCBpbXBhY3QgYnVpbGQgdGltZXM/CiogICAqKk1haW50YWluYWJpbGl0eToqKiBpcyB0aGUgY29kZSBjbGVhbiBhbmQgd2VsbC1kb2N1bWVudGVkPwoKSSYjMzk7bSBzdGFydGluZyB0aGUgbWVudGFsIGNoZWNrbGlzdC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKl9fZ3VlX2J1aWxkX2hlYWRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9mb3VfY29yZS5jPTk1Nj1pbnQgX19ndWVfYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF90dW5uZWxfZW5jYXAgKmUsXG4tLVxubmV0L2lwdjQvZm91X2NvcmUuYy0xMDI4LX1cbm5ldC9pcHY0L2ZvdV9jb3JlLmM6MTAyOTpFWFBPUlRfU1lNQk9MKF9fZ3VlX2J1aWxkX2hlYWRlcik7XG5uZXQvaXB2NC9mb3VfY29yZS5jLTEwMzAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNTcxCgkJCQkJCQlvdXRwdXQ6IDE4NQoJCQkJCQkJdGhvdWdodHM6IDIyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBWdWxuZXJhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgdGhpcyBwYXRjaCwgYXMgSSBzZWUgaXQuIFRoZSBmb2N1cyBzeW1ib2xzIGxvb2sgcHJvbWlzaW5nLCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSBhIGZpeCB3b3J0aCBkaWdnaW5nIGludG8uCgpCYXNpY2FsbHksIHRoZXJlJiMzOTtzIGEgYnVnIGluIHRoZSBJUCB0dW5uZWwgZW5jYXBzdWxhdGlvbiBwcm9jZXNzIHdoZXJlIGBpcF90dW5uZWxfZW5jYXBgIG1pZ2h0IHJlYWxsb2NhdGUgdGhlIHNrYiAoc29ja2V0IGJ1ZmZlciksIGFuZCB0aGUgY29kZSB3YXMgcmVhZGluZyBgaW5uZXJfaXBoYCAqYmVmb3JlKiB0aGUgcG90ZW50aWFsIHJlYWxsb2NhdGlvbi4gVGhpcywgYXMgd2Uga25vdywgaXMgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIOKAkyBzb21ldGhpbmcgd2UmIzM5O3ZlIHNlZW4gZXhwbG9pdGVkIGJlZm9yZSwgSSYjMzk7bSBzdXJlLCBhbmQgc29tZXRoaW5nIHdlIGFic29sdXRlbHkgbmVlZCB0byBhZGRyZXNzLiBUaGlzIHBhdGNoIHJlb3JkZXJzIHRoZSBhc3NpZ25tZW50IHNvIHRoYXQgdGhlIHJlYWQgb2YgYGlubmVyX2lwaGAgb2NjdXJzICphZnRlciogYW55IHJlYWxsb2NhdGlvbiwgcHJvdGVjdGluZyB0aGUgYGlubmVyX2lwaGAgcG9pbnRlci4gVGhlIHBhdGNoIGFsc28gaW5jbHVkZXMgYSBjaGVjayBmb3IgYHNrYl9jb3dfaGVhZGAgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgsIHNwZWNpZmljYWxseSB0aGF0IGl0JiMzOTtzIHRvdWNoaW5nIEZPVS9HVUUgZW5jYXBzdWxhdGlvbiBhbmQgSVAgdHVubmVsIGNvcmUgbmV0d29ya2luZyBsb2dpYywgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZnVuZGFtZW50YWwgcGFja2V0IGhhbmRsaW5nIGhlcmUsIHdoaWNoIG1lYW5zIHRoZXJlJiMzOTtzIGEgaGlnaCBwcm9iYWJpbGl0eSBvZiBmaW5kaW5nIGlzc3VlcyB0aGF0IGNvdWxkIGxlYWQgdG8gc2VyaW91cyB2dWxuZXJhYmlsaXRpZXMuCgpJbiBzdW1tYXJ5LCBJJiMzOTttIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYCBiZWNhdXNlIGl0IGRpcmVjdGx5IGltcGFjdHMgY3J1Y2lhbCBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgYW5kIGFkZHJlc3NlcyBhIGNsZWFyIG1lbW9yeSBzYWZldHkgaXNzdWUuIFRoZSBmb2N1cyBzeW1ib2xzIEkmIzM5O20ga2V5aW5nIG9uIGFyZTogYF9fZ3VlX2J1aWxkX2hlYWRlcmAsIGBpcF9tZF90dW5uZWxfeG1pdGAsIGFuZCBgaXBfdHVubmVsX3htaXRgLiBXZSBzaG91bGQgYWxzbyBlbnN1cmUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZCBmb3IgY29tcHJlaGVuc2l2ZSB0ZXN0aW5nOiBgTkVUX0ZPVWAsIGBORVRfRk9VX0lQX1RVTk5FTFNgLCBgTkVUX0lQSVBgLCBhbmQgYE5FVF9JUEdSRWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRk9VJiMzNDssCiAgICAmIzM0O05FVF9GT1VfSVBfVFVOTkVMUyYjMzQ7LAogICAgJiMzNDtORVRfSVBJUCYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2d1ZV9idWlsZF9oZWFkZXImIzM0OywKICAgICYjMzQ7aXBfbWRfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXBfdHVubmVsX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGJ5IHJlb3JkZXJpbmcgdGhlIGFzc2lnbm1lbnQgb2YgYGlubmVyX2lwaGAgYWZ0ZXIgYGlwX3R1bm5lbF9lbmNhcGAsIHdoaWNoIGNhbiByZWFsbG9jYXRlIHRoZSBza2IgaGVhZC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgZm9yIGBza2JfY293X2hlYWRgIGluIGBfX2d1ZV9idWlsZF9oZWFkZXJgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGNvcmUgbmV0d29ya2luZyBsb2dpYyAoRk9VL0dVRSBlbmNhcHN1bGF0aW9uIGFuZCBJUCB0dW5uZWxzKSB0aGF0IGFyZSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OywKICAgICYjMzQ7TkVUX0ZPVV9JUF9UVU5ORUxTJiMzNDssCiAgICAmIzM0O05FVF9JUElQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3VlX2J1aWxkX2hlYWRlciYjMzQ7LAogICAgJiMzNDtpcF9tZF90dW5uZWxfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF90dW5uZWxfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgYnkgcmVvcmRlcmluZyB0aGUgYXNzaWdubWVudCBvZiBgaW5uZXJfaXBoYCBhZnRlciBgaXBfdHVubmVsX2VuY2FwYCwgd2hpY2ggY2FuIHJlYWxsb2NhdGUgdGhlIHNrYiBoZWFkLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBmb3IgYHNrYl9jb3dfaGVhZGAgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIChGT1UvR1VFIGVuY2Fwc3VsYXRpb24gYW5kIElQIHR1bm5lbHMpIHRoYXQgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIHZ1bG5lcmFiaWxpdHkuIFRoZSBmdW5jdGlvbiBgaXBfdHVubmVsX2VuY2FwKClgIGNhbiByZWFsbG9jYXRlIHRoZSBgc2tiYCBoZWFkIChmb3IgZXhhbXBsZSwgdmlhIGBza2JfY293X2hlYWQoKWAgd2hpY2ggaXMgYWRkZWQgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcigpYCBieSB0aGlzIHBhdGNoKS4gSWYgYGlubmVyX2lwaGAgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIGBpcF90dW5uZWxfZW5jYXAoKWAgaXMgY2FsbGVkLCBpdCB3aWxsIHBvaW50IHRvIHRoZSBvbGQsIGZyZWVkIGBza2JgIGhlYWQsIGxlYWRpbmcgdG8gYSBVQUYgd2hlbiBgaW5uZXJfaXBoYCBpcyBsYXRlciBkZXJlZmVyZW5jZWQuIEJ5IG1vdmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYGlubmVyX2lwaGAgdG8gYWZ0ZXIgYGlwX3R1bm5lbF9lbmNhcCgpYCwgdGhlIHBhdGNoIGVuc3VyZXMgaXQgcG9pbnRzIHRvIHRoZSBjb3JyZWN0LCBwb3RlbnRpYWxseSByZWFsbG9jYXRlZCBgc2tiYCBoZWFkLlxuXG5Vc2UtYWZ0ZXItZnJlZSBidWdzIGFuZCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCwgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgaW5mby1sZWFrIGludm9sdmVkIGluIHRoaXMgYnVnIG9yIGl0cyBmaXguIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIHN0YW5kYXJkIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBjYXRjaGluZyB0aGlzIGNsYXNzIG9mIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ODQ4MWVmZTI2NTFkMGUzMDZmMjM4OGFlYjNkYzYyOTZlYmY4ZmNkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTU6NTI6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9mb3VfY29yZS5jIGIvbmV0L2lwdjQvZm91X2NvcmUuYwppbmRleCBhYjA5ZGZjZGVjYmQ1Li44Y2YwZDQzYWNiNDEyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZvdV9jb3JlLmMKQEAgLTk4MCw2ICYjNDM7OTgwLDggQEAgaW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLAogCQkJCQkJc2tiLCAwLCAwLCBmYWxzZSk7CiAKIAloZHJsZW4gPSBzaXplb2Yoc3RydWN0IGd1ZWhkcikgJiM0Mzsgb3B0bGVuOwomIzQzOwlpZiAoc2tiX2Nvd19oZWFkKHNrYiwgaGRybGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSkpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKIAogCXNrYl9wdXNoKHNrYiwgaGRybGVuKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdHVubmVsLmMgYi9uZXQvaXB2NC9pcF90dW5uZWwuYwppbmRleCA5ZDExNGJkNTc1ZjkyLi4yYmQ2ODRlYjJiYTI1IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF90dW5uZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF90dW5uZWwuYwpAQCAtNjA2LDYgJiM0Mzs2MDYsNyBAQCB2b2lkIGlwX21kX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAlpZiAoaXBfdHVubmVsX2VuY2FwKHNrYiwgJmFtcDt0dW5faW5mby0mZ3Q7ZW5jYXAsICZhbXA7cHJvdG8sICZhbXA7Zmw0KSAmbHQ7IDApCiAJCWdvdG8gdHhfZXJyb3I7CiYjNDM7CWlubmVyX2lwaCA9IChjb25zdCBzdHJ1Y3QgaXBoZHIgKilza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKTsKIAogCXVzZV9jYWNoZSA9IGlwX3R1bm5lbF9kc3RfY2FjaGVfdXNhYmxlKHNrYiwgdHVuX2luZm8pOwogCWlmICh1c2VfY2FjaGUpCkBAIC03NjUsOCAmIzQzOzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgdHVubmVsLSZndDtuZXQsIFJFQURfT05DRSh0dW5uZWwtJmd0O3Bhcm1zLmxpbmspLAogCQkJICAgIHR1bm5lbC0mZ3Q7ZndtYXJrLCBza2JfZ2V0X2hhc2goc2tiKSwgMCk7CiAKJiM0MzsJZGYgPSB0bmxfcGFyYW1zLSZndDtmcmFnX29mZjsKJiM0MzsJdHRsID0gdG5sX3BhcmFtcy0mZ3Q7dHRsOwomIzQzOwogCWlmIChpcF90dW5uZWxfZW5jYXAoc2tiLCAmYW1wO3R1bm5lbC0mZ3Q7ZW5jYXAsICZhbXA7cHJvdG9jb2wsICZhbXA7Zmw0KSAmbHQ7IDApCiAJCWdvdG8gdHhfZXJyb3I7CiYjNDM7CWlubmVyX2lwaCA9IChjb25zdCBzdHJ1Y3QgaXBoZHIgKilza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKTsKIAogCWlmIChjb25uZWN0ZWQgJmFtcDsmYW1wOyBtZCkgewogCQl1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTsKQEAgLTc5OSw3ICYjNDM7ODA0LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQlnb3RvIHR4X2Vycm9yOwogCX0KIAotCWRmID0gdG5sX3BhcmFtcy0mZ3Q7ZnJhZ19vZmY7CiAJaWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApICZhbXA7JmFtcDsgIXR1bm5lbC0mZ3Q7aWdub3JlX2RmKQogCQlkZiB8PSAoaW5uZXJfaXBoLSZndDtmcmFnX29mZiAmYW1wOyBodG9ucyhJUF9ERikpOwogCkBAIC04MjEsNyAmIzQzOzgyNSw2IEBAIHZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl9CiAKIAl0b3MgPSBpcF90dW5uZWxfZWNuX2VuY2FwKHRvcywgaW5uZXJfaXBoLCBza2IpOwotCXR0bCA9IHRubF9wYXJhbXMtJmd0O3R0bDsKIAlpZiAodHRsID09IDApIHsKIAkJaWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQogCQkJdHRsID0gaW5uZXJfaXBoLSZndDt0dGw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjU5CgkJCQkJCQlvdXRwdXQ6IDI1NgoJCQkJCQkJdGhvdWdodHM6IDEyMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIE5ldHdvcmsgVHVubmVsaW5nIFBhdGNoKioKCk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IHRhcmdldHMgYSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSwgc3BlY2lmaWNhbGx5IGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgY29uZGl0aW9uIHdpdGhpbiB0aGUgbmV0d29yayB0dW5uZWxpbmcgY29kZS4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gc3RlbSBmcm9tIGhvdyB0aGUgY29kZSBoYW5kbGVzIGBza2JgIChzb2NrZXQgYnVmZmVyKSBoZWFkZXJzLCBwYXJ0aWN1bGFybHkgZHVyaW5nIGVuY2Fwc3VsYXRpb24uCgpNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIGBuZXQvaXB2NC9mb3VfY29yZS5jYCBhbmQgYG5ldC9pcHY0L2lwX3R1bm5lbC5jYC4gSW4gYGZvdV9jb3JlLmNgLCBhIGNoZWNrIHdpdGggYHNrYl9jb3dfaGVhZGAgaXMgaW50cm9kdWNlZCBiZWZvcmUgcHVzaGluZyB0aGUgaGVhZGVyLiBUaGlzIGlzIGEgZ29vZCBwcmFjdGljZSBhcyBpdCBwcmUtZW1wdGl2ZWx5IGVuc3VyZXMgZW5vdWdoIGhlYWRyb29tIGluIHRoZSBgc2tiYCwgbWl0aWdhdGluZyB0aGUgcmlzayBvZiBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBtZW1vcnkgY29ycnVwdGlvbi4KClRoZSBtb3JlIGludGVyZXN0aW5nIHBhcnQsIGhvd2V2ZXIsIGlzIGluIGBpcF90dW5uZWwuY2AuIFRoZSBvcmlnaW5hbCBjb2RlIGluaXRpYWxpemVzIGBpbm5lcl9pcGhgIChhIHBvaW50ZXIgdG8gdGhlIGlubmVyIElQIGhlYWRlcikgYmVmb3JlIGNhbGxpbmcgYGlwX3R1bm5lbF9lbmNhcGAuICBOb3csIGl0IGxvb2tzIGxpa2UgYGlwX3R1bm5lbF9lbmNhcGAg4oCTIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCBmdW5jdGlvbnMgbGlrZSBgZm91X2J1aWxkX2hlYWRlcmAgb3IgYGd1ZV9idWlsZF9oZWFkZXJgIOKAkyBjYW4sIGFuZCAqZG9lcyosIGNhbGwgYHNrYl9jb3dfaGVhZGAuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIGlzc3VlLiBUaGUgYHNrYl9jb3dfaGVhZGAgZnVuY3Rpb24gY2FuIHJlYWxsb2NhdGUgdGhlIG1lbW9yeSBvZiB0aGUgYHNrYmAgaGVhZC4gSWYgdGhpcyBoYXBwZW5zICphZnRlciogYGlubmVyX2lwaGAgaGFzIGJlZW4gc2V0LCBidXQgKmJlZm9yZSogdGhlIHBvaW50ZXIgaXMgdXNlZCwgIGBpbm5lcl9pcGhgIGVuZHMgdXAgcG9pbnRpbmcgdG8gYSBkZWFsbG9jYXRlZCBhbmQgcG9zc2libHkgb3ZlcndyaXR0ZW4gbWVtb3J5IHJlZ2lvbi4gVGhpcyBpcyB0ZXh0Ym9vayBVQUYsIG9yIGEgZGFuZ2xpbmcgcG9pbnRlciBidWcuCgpUaGUgcGF0Y2ggcmVzb2x2ZXMgdGhpcyBieSBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgb2YgYGlubmVyX2lwaGAgdG8gKmFmdGVyKiB0aGUgYGlwX3R1bm5lbF9lbmNhcGAgY2FsbC4gVGhpcyB3YXksIHRoZSBwb2ludGVyIGFsd2F5cyBwb2ludHMgdG8gdGhlIHZhbGlkIGFuZCBjb3JyZWN0IChwb3RlbnRpYWxseSByZWFsbG9jYXRlZCkgYHNrYmAgaGVhZC4KCkdpdmVuIHRoYXQgdGhpcyBpcyBhIFVBRiBidWcsIGFuZCB0aGF0IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIGRlc2lnbmVkIHNwZWNpZmljYWxseSB0byBkZXRlY3Qgc3VjaCBpc3N1ZXMsIHRoZSBmaXggc2VlbXMgYXBwcm9wcmlhdGUuIEnigJltIHRoaW5raW5nIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBjb25jZXJucyBoZXJlOyAgYHNrYl9jb3dfaGVhZGAgcmVhbGxvY2F0ZXMgYnV0IGNvcGllcyB0aGUgb3JpZ2luYWwgZGF0YSwgYW5kIHRoZSBuZXcgaGVhZHJvb20gd2lsbCBiZSBmaWxsZWQgbGF0ZXIuIFRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhZGRyZXNzZXMgYSBkYW5nbGluZyBwb2ludGVyLCBub3QgYW4gdW5pbml0aWFsaXplZCByZWFkIG9yIGluZm9ybWF0aW9uIGxlYWsuIFRoaXMgbWVhbnMgYSBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIHNlc3Npb24gaXMgbm90IG5lZWRlZC4KClRoZXJlZm9yZSwgdGhlIHBhdGNoIGxvb2tzIGxpa2UgaXQgKnN1Y2Nlc3NmdWxseSogbWl0aWdhdGVzIGEgVUFGIGJ5IGVuc3VyaW5nIGBpbm5lcl9pcGhgIHBvaW50cyB0byB0aGUgY29ycmVjdGx5IGFsbG9jYXRlZCBhbmQgdmFsaWQgYHNrYmAgbWVtb3J5LiBObyBLTVNBTiBuZWVkZWQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKSB2dWxuZXJhYmlsaXR5LiBUaGUgZnVuY3Rpb24gYGlwX3R1bm5lbF9lbmNhcCgpYCBjYW4gcmVhbGxvY2F0ZSB0aGUgYHNrYmAgaGVhZCAoZm9yIGV4YW1wbGUsIHZpYSBgc2tiX2Nvd19oZWFkKClgIHdoaWNoIGlzIGFkZGVkIGluIGBfX2d1ZV9idWlsZF9oZWFkZXIoKWAgYnkgdGhpcyBwYXRjaCkuIElmIGBpbm5lcl9pcGhgIGlzIGluaXRpYWxpemVkIGJlZm9yZSBgaXBfdHVubmVsX2VuY2FwKClgIGlzIGNhbGxlZCwgaXQgd2lsbCBwb2ludCB0byB0aGUgb2xkLCBmcmVlZCBgc2tiYCBoZWFkLCBsZWFkaW5nIHRvIGEgVUFGIHdoZW4gYGlubmVyX2lwaGAgaXMgbGF0ZXIgZGVyZWZlcmVuY2VkLiBCeSBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBpbm5lcl9pcGhgIHRvIGFmdGVyIGBpcF90dW5uZWxfZW5jYXAoKWAsIHRoZSBwYXRjaCBlbnN1cmVzIGl0IHBvaW50cyB0byB0aGUgY29ycmVjdCwgcG90ZW50aWFsbHkgcmVhbGxvY2F0ZWQgYHNrYmAgaGVhZC5cblxuVXNlLWFmdGVyLWZyZWUgYnVncyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIHBhZGRpbmcsIG9yIGluZm8tbGVhayBpbnZvbHZlZCBpbiB0aGlzIGJ1ZyBvciBpdHMgZml4LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgY2F0Y2hpbmcgdGhpcyBjbGFzcyBvZiBtZW1vcnkgY29ycnVwdGlvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eS4gVGhlIGZ1bmN0aW9uIGBpcF90dW5uZWxfZW5jYXAoKWAgY2FuIHJlYWxsb2NhdGUgdGhlIGBza2JgIGhlYWQgKGZvciBleGFtcGxlLCB2aWEgYHNrYl9jb3dfaGVhZCgpYCB3aGljaCBpcyBhZGRlZCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyKClgIGJ5IHRoaXMgcGF0Y2gpLiBJZiBgaW5uZXJfaXBoYCBpcyBpbml0aWFsaXplZCBiZWZvcmUgYGlwX3R1bm5lbF9lbmNhcCgpYCBpcyBjYWxsZWQsIGl0IHdpbGwgcG9pbnQgdG8gdGhlIG9sZCwgZnJlZWQgYHNrYmAgaGVhZCwgbGVhZGluZyB0byBhIFVBRiB3aGVuIGBpbm5lcl9pcGhgIGlzIGxhdGVyIGRlcmVmZXJlbmNlZC4gQnkgbW92aW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgaW5uZXJfaXBoYCB0byBhZnRlciBgaXBfdHVubmVsX2VuY2FwKClgLCB0aGUgcGF0Y2ggZW5zdXJlcyBpdCBwb2ludHMgdG8gdGhlIGNvcnJlY3QsIHBvdGVudGlhbGx5IHJlYWxsb2NhdGVkIGBza2JgIGhlYWQuXG5cblVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nLCBvciBpbmZvLWxlYWsgaW52b2x2ZWQgaW4gdGhpcyBidWcgb3IgaXRzIGZpeC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGNhdGNoaW5nIHRoaXMgY2xhc3Mgb2YgbWVtb3J5IGNvcnJ1cHRpb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUyOjE2LjIwNzgxMzMxNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjQwOTQ0NTM1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRk9VXCIsXG4gICAgXCJORVRfRk9VX0lQX1RVTk5FTFNcIixcbiAgICBcIk5FVF9JUElQXCIsXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2d1ZV9idWlsZF9oZWFkZXJcIixcbiAgICBcImlwX21kX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcF90dW5uZWxfeG1pdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKSB2dWxuZXJhYmlsaXR5LiBUaGUgZnVuY3Rpb24gYGlwX3R1bm5lbF9lbmNhcCgpYCBjYW4gcmVhbGxvY2F0ZSB0aGUgYHNrYmAgaGVhZCAoZm9yIGV4YW1wbGUsIHZpYSBgc2tiX2Nvd19oZWFkKClgIHdoaWNoIGlzIGFkZGVkIGluIGBfX2d1ZV9idWlsZF9oZWFkZXIoKWAgYnkgdGhpcyBwYXRjaCkuIElmIGBpbm5lcl9pcGhgIGlzIGluaXRpYWxpemVkIGJlZm9yZSBgaXBfdHVubmVsX2VuY2FwKClgIGlzIGNhbGxlZCwgaXQgd2lsbCBwb2ludCB0byB0aGUgb2xkLCBmcmVlZCBgc2tiYCBoZWFkLCBsZWFkaW5nIHRvIGEgVUFGIHdoZW4gYGlubmVyX2lwaGAgaXMgbGF0ZXIgZGVyZWZlcmVuY2VkLiBCeSBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBpbm5lcl9pcGhgIHRvIGFmdGVyIGBpcF90dW5uZWxfZW5jYXAoKWAsIHRoZSBwYXRjaCBlbnN1cmVzIGl0IHBvaW50cyB0byB0aGUgY29ycmVjdCwgcG90ZW50aWFsbHkgcmVhbGxvY2F0ZWQgYHNrYmAgaGVhZC5cXG5cXG5Vc2UtYWZ0ZXItZnJlZSBidWdzIGFuZCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCwgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgaW5mby1sZWFrIGludm9sdmVkIGluIHRoaXMgYnVnIG9yIGl0cyBmaXguIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIHN0YW5kYXJkIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBjYXRjaGluZyB0aGlzIGNsYXNzIG9mIG1lbW9yeSBjb3JydXB0aW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBieSByZW9yZGVyaW5nIHRoZSBhc3NpZ25tZW50IG9mIGBpbm5lcl9pcGhgIGFmdGVyIGBpcF90dW5uZWxfZW5jYXBgLCB3aGljaCBjYW4gcmVhbGxvY2F0ZSB0aGUgc2tiIGhlYWQuIEl0IGFsc28gYWRkcyBhIGNoZWNrIGZvciBgc2tiX2Nvd19oZWFkYCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgKEZPVS9HVUUgZW5jYXBzdWxhdGlvbiBhbmQgSVAgdHVubmVscykgdGhhdCBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1MjoxNi4yMDc4MTg4NDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODM0NjYxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ODQ4MWVmZTI2NTFkMGUzMDZmMjM4OGFlYjNkYzYyOTZlYmY4ZmNkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDIxIDE1OjUyOjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZvdV9jb3JlLmMgYi9uZXQvaXB2NC9mb3VfY29yZS5jXFxuaW5kZXggYWIwOWRmY2RlY2JkNS4uOGNmMGQ0M2FjYjQxMiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jXFxuKysrIGIvbmV0L2lwdjQvZm91X2NvcmUuY1xcbkBAIC05ODAsNiArOTgwLDggQEAgaW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRza2IsIDAsIDAsIGZhbHNlKTtcXG4gXFxuIFxcdGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgZ3VlaGRyKSArIG9wdGxlbjtcXG4rXFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIGhkcmxlbiArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSkpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0c2tiX3B1c2goc2tiLCBoZHJsZW4pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdHVubmVsLmMgYi9uZXQvaXB2NC9pcF90dW5uZWwuY1xcbmluZGV4IDlkMTE0YmQ1NzVmOTIuLjJiZDY4NGViMmJhMjUgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcXG4rKysgYi9uZXQvaXB2NC9pcF90dW5uZWwuY1xcbkBAIC02MDYsNiArNjA2LDcgQEAgdm9pZCBpcF9tZF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gXFx0aWYgKGlwX3R1bm5lbF9lbmNhcChza2IsIFxcdTAwMjZ0dW5faW5mby1cXHUwMDNlZW5jYXAsIFxcdTAwMjZwcm90bywgXFx1MDAyNmZsNCkgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIHR4X2Vycm9yO1xcbitcXHRpbm5lcl9pcGggPSAoY29uc3Qgc3RydWN0IGlwaGRyICopc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYik7XFxuIFxcbiBcXHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcXG4gXFx0aWYgKHVzZV9jYWNoZSlcXG5AQCAtNzY1LDggKzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgICB0dW5uZWwtXFx1MDAzZW5ldCwgUkVBRF9PTkNFKHR1bm5lbC1cXHUwMDNlcGFybXMubGluayksXFxuIFxcdFxcdFxcdCAgICB0dW5uZWwtXFx1MDAzZWZ3bWFyaywgc2tiX2dldF9oYXNoKHNrYiksIDApO1xcbiBcXG4rXFx0ZGYgPSB0bmxfcGFyYW1zLVxcdTAwM2VmcmFnX29mZjtcXG4rXFx0dHRsID0gdG5sX3BhcmFtcy1cXHUwMDNldHRsO1xcbitcXG4gXFx0aWYgKGlwX3R1bm5lbF9lbmNhcChza2IsIFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWVuY2FwLCBcXHUwMDI2cHJvdG9jb2wsIFxcdTAwMjZmbDQpIFxcdTAwM2MgMClcXG4gXFx0XFx0Z290byB0eF9lcnJvcjtcXG4rXFx0aW5uZXJfaXBoID0gKGNvbnN0IHN0cnVjdCBpcGhkciAqKXNrYl9pbm5lcl9uZXR3b3JrX2hlYWRlcihza2IpO1xcbiBcXG4gXFx0aWYgKGNvbm5lY3RlZCBcXHUwMDI2XFx1MDAyNiBtZCkge1xcbiBcXHRcXHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcXG5AQCAtNzk5LDcgKzgwNCw2IEBAIHZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0Z290byB0eF9lcnJvcjtcXG4gXFx0fVxcbiBcXG4tXFx0ZGYgPSB0bmxfcGFyYW1zLVxcdTAwM2VmcmFnX29mZjtcXG4gXFx0aWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApIFxcdTAwMjZcXHUwMDI2ICF0dW5uZWwtXFx1MDAzZWlnbm9yZV9kZilcXG4gXFx0XFx0ZGYgfD0gKGlubmVyX2lwaC1cXHUwMDNlZnJhZ19vZmYgXFx1MDAyNiBodG9ucyhJUF9ERikpO1xcbiBcXG5AQCAtODIxLDcgKzgyNSw2IEBAIHZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0fVxcbiBcXG4gXFx0dG9zID0gaXBfdHVubmVsX2Vjbl9lbmNhcCh0b3MsIGlubmVyX2lwaCwgc2tiKTtcXG4tXFx0dHRsID0gdG5sX3BhcmFtcy1cXHUwMDNldHRsO1xcbiBcXHRpZiAodHRsID09IDApIHtcXG4gXFx0XFx0aWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKVxcbiBcXHRcXHRcXHR0dGwgPSBpbm5lcl9pcGgtXFx1MDAzZXR0bDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTI6MTcuODkyMDUzNzY2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODQ1ODgzODc3ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiLFxuICAgIFwiTkVUX0ZPVV9JUF9UVU5ORUxTXCIsXG4gICAgXCJORVRfSVBJUFwiLFxuICAgIFwiTkVUX0lQR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ndWVfYnVpbGRfaGVhZGVyXCIsXG4gICAgXCJpcF9tZF90dW5uZWxfeG1pdFwiLFxuICAgIFwiaXBfdHVubmVsX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgYnkgcmVvcmRlcmluZyB0aGUgYXNzaWdubWVudCBvZiBgaW5uZXJfaXBoYCBhZnRlciBgaXBfdHVubmVsX2VuY2FwYCwgd2hpY2ggY2FuIHJlYWxsb2NhdGUgdGhlIHNrYiBoZWFkLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBmb3IgYHNrYl9jb3dfaGVhZGAgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIChGT1UvR1VFIGVuY2Fwc3VsYXRpb24gYW5kIElQIHR1bm5lbHMpIHRoYXQgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzg0ODFlZmUyNjUxZDBlMzA2ZjIzODhhZWIzZGM2Mjk2ZWJmOGZjZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE1OjUyOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZm91X2NvcmUuYyBiL25ldC9pcHY0L2ZvdV9jb3JlLmNcbmluZGV4IGFiMDlkZmNkZWNiZDUuLjhjZjBkNDNhY2I0MTIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jXG4rKysgYi9uZXQvaXB2NC9mb3VfY29yZS5jXG5AQCAtOTgwLDYgKzk4MCw4IEBAIGludCBfX2d1ZV9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcbiBcdFx0XHRcdFx0XHRza2IsIDAsIDAsIGZhbHNlKTtcbiBcbiBcdGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgZ3VlaGRyKSArIG9wdGxlbjtcbitcdGlmIChza2JfY293X2hlYWQoc2tiLCBoZHJsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHNrYl9wdXNoKHNrYiwgaGRybGVuKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF90dW5uZWwuYyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5pbmRleCA5ZDExNGJkNTc1ZjkyLi4yYmQ2ODRlYjJiYTI1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcbisrKyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5AQCAtNjA2LDYgKzYwNiw3IEBAIHZvaWQgaXBfbWRfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGlmIChpcF90dW5uZWxfZW5jYXAoc2tiLCBcdTAwMjZ0dW5faW5mby1cdTAwM2VlbmNhcCwgXHUwMDI2cHJvdG8sIFx1MDAyNmZsNCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4rXHRpbm5lcl9pcGggPSAoY29uc3Qgc3RydWN0IGlwaGRyICopc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYik7XG4gXG4gXHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcbiBcdGlmICh1c2VfY2FjaGUpXG5AQCAtNzY1LDggKzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2VuZXQsIFJFQURfT05DRSh0dW5uZWwtXHUwMDNlcGFybXMubGluayksXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2Vmd21hcmssIHNrYl9nZXRfaGFzaChza2IpLCAwKTtcbiBcbitcdGRmID0gdG5sX3BhcmFtcy1cdTAwM2VmcmFnX29mZjtcbitcdHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO1xuK1xuIFx0aWYgKGlwX3R1bm5lbF9lbmNhcChza2IsIFx1MDAyNnR1bm5lbC1cdTAwM2VlbmNhcCwgXHUwMDI2cHJvdG9jb2wsIFx1MDAyNmZsNCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4rXHRpbm5lcl9pcGggPSAoY29uc3Qgc3RydWN0IGlwaGRyICopc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYik7XG4gXG4gXHRpZiAoY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBtZCkge1xuIFx0XHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcbkBAIC03OTksNyArODA0LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRnb3RvIHR4X2Vycm9yO1xuIFx0fVxuIFxuLVx0ZGYgPSB0bmxfcGFyYW1zLVx1MDAzZWZyYWdfb2ZmO1xuIFx0aWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApIFx1MDAyNlx1MDAyNiAhdHVubmVsLVx1MDAzZWlnbm9yZV9kZilcbiBcdFx0ZGYgfD0gKGlubmVyX2lwaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfREYpKTtcbiBcbkBAIC04MjEsNyArODI1LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0fVxuIFxuIFx0dG9zID0gaXBfdHVubmVsX2Vjbl9lbmNhcCh0b3MsIGlubmVyX2lwaCwgc2tiKTtcbi1cdHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO1xuIFx0aWYgKHR0bCA9PSAwKSB7XG4gXHRcdGlmIChwYXlsb2FkX3Byb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSlcbiBcdFx0XHR0dGwgPSBpbm5lcl9pcGgtXHUwMDNldHRsO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTI6MTcuODkyMDU1MTA2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwMzM4MzYxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUdW5uZWxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L2lwdjQvZm91X2NvcmUuY2AgYW5kIGBuZXQvaXB2NC9pcF90dW5uZWwuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB3ZSdyZSBoYW5kbGluZyB0aGUgZW5jYXBzdWxhdGlvbiBvZiBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgd2l0aCBHZW5lcmljIFVEUCBFbmNhcHN1bGF0aW9uIChHVUUpIGFuZCBJUC1pbi1JUCB0dW5uZWxzLlxuXG5JbiBgZm91X2NvcmUuY2AsIHRoZSBwYXRjaCBhZGRzIGEgYHNrYl9jb3dfaGVhZGAgY2FsbCBiZWZvcmUgYHNrYl9wdXNoYC4gVGhpcyB0ZWxscyBtZSB3ZSdyZSBwb3RlbnRpYWxseSBtYWtpbmcgYSBjb3B5LW9uLXdyaXRlIG9mIHRoZSBTS0IncyBoZWFkLiBUaGF0IHN1Z2dlc3RzIHdlIG1pZ2h0IGJlIG1vZGlmeWluZyB0aGUgcGFja2V0IGhlYWRlciBpbiBwbGFjZSwgd2hpY2ggaXMgZmluZSwgYnV0IG5lZWRzIHRvIGJlIGhhbmRsZWQgY2FyZWZ1bGx5LiBUaGUgc3Vic2VxdWVudCBgc2tiX3B1c2hgIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBhZGRpbmcgdGhlIEdVRSBoZWFkZXIuXG5cbk5vdywgdGhlIGludGVyZXN0aW5nIGJpdCBpcyBpbiBgaXBfdHVubmVsLmNgLiBUaGVyZSBhcmUgdHdvIG9jY3VycmVuY2VzIHdoZXJlIGBpcF90dW5uZWxfZW5jYXBgIGlzIGNhbGxlZC4gVGhlIHBhdGNoIGFkZHMgYSBsaW5lIHdoaWNoIGNhc3RzIGEgcG9pbnRlciB0byBgc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYilgIHRvIHRoZSBgaW5uZXJfaXBoYCB2YXJpYWJsZSwgYnV0IHRoZSBwYXRjaCByZW1vdmVzIGBkZiA9IHRubF9wYXJhbXMtXHUwMDNlZnJhZ19vZmY7YCBhbmQgYHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO2AgZnJvbSBiZWxvdyB0aGUgYGlwX3R1bm5lbF9lbmNhcGAgZnVuY3Rpb24uXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCB0aGlzIHdhcyBhIHBvdGVudGlhbCBkYW5nbGluZyBwb2ludGVyIGlzc3VlLiBUaGUgbG9naWMgc3VnZ2VzdGVkIHRoYXQgYGlwX3R1bm5lbF9lbmNhcGAgbWlnaHQgcmVhbGxvY2F0ZSB0aGUgU0tCJ3MgYnVmZmVyIChlc3BlY2lhbGx5IGlmIHRoZSBHVUUgaGVhZGVyIGhhZCB0byBiZSBjb25zdHJ1Y3RlZCwgd2hpY2ggd291bGQgY2FsbCBgc2tiX2Nvd19oZWFkYCksIGFuZCBpZiBgaW5uZXJfaXBoYCB3ZXJlIHJlYWQgKmJlZm9yZSogdGhlIGVuY2Fwc3VsYXRpb24sIGl0IGNvdWxkIHBvaW50IHRvIGdhcmJhZ2UuIEhvd2V2ZXIsIEkgbm93IHJlYWxpemUgdGhlIGNvZGUgcmVhZHMgYGlubmVyX2lwaGAgKmFmdGVyKiB0aGUgYGlwX3R1bm5lbF9lbmNhcGAgY2FsbC4gVGhpcyBkb2Vzbid0IGVudGlyZWx5IG1ha2Ugc2Vuc2UuXG5cbkkgbmVlZCB0byBkaWcgZGVlcGVyLiBJIHdhbnQgdG8gY2hlY2sgaG93IGBpcF90dW5uZWxfZW5jYXBgIGl0c2VsZiBtaWdodCBiZSByZWFsbG9jYXRpbmcgdGhlIFNLQi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBza2JfY293X2hlYWRgIGlzIGRvaW5nIGluIGBfX2d1ZV9idWlsZF9oZWFkZXJgLiBJJ2xsIGFsc28gd2FudCB0byBsb29rIGF0IGBpcF9tZF90dW5uZWxfeG1pdGAgYW5kIGBpcF90dW5uZWxfeG1pdGAuIExldCBtZSBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi4uLiBJIG5lZWQgdG8gc2VlIGlmIHRoZSByZW1vdmFsIG9mIHRoZSBsaW5lcyBoYXMgc29tZSBjb25zZXF1ZW5jZSBJJ20gbm90IHNlZWluZyBpbW1lZGlhdGVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUyOjI1LjY5NTQ0MjEyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ1NzQ4NDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fZ3VlX2J1aWxkX2hlYWRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9mb3UuaD0xNT1pbnQgX19mb3VfYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF90dW5uZWxfZW5jYXAgKmUsXFxuaW5jbHVkZS9uZXQvZm91LmgtMTYtXFx0XFx0ICAgICAgIHU4ICpwcm90b2NvbCwgX19iZTE2ICpzcG9ydCwgaW50IHR5cGUpO1xcbmluY2x1ZGUvbmV0L2ZvdS5oOjE3OmludCBfX2d1ZV9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcXG5pbmNsdWRlL25ldC9mb3UuaC0xOC1cXHRcXHQgICAgICAgdTggKnByb3RvY29sLCBfX2JlMTYgKnNwb3J0LCBpbnQgdHlwZSk7XFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jPTk1ND1FWFBPUlRfU1lNQk9MKF9fZm91X2J1aWxkX2hlYWRlcik7XFxubmV0L2lwdjQvZm91X2NvcmUuYy05NTUtXFxubmV0L2lwdjQvZm91X2NvcmUuYzo5NTY6aW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLFxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtOTU3LVxcdFxcdCAgICAgICB1OCAqcHJvdG9jb2wsIF9fYmUxNiAqc3BvcnQsIGludCB0eXBlKVxcbi0tXFxubmV0L2lwdjQvZm91X2NvcmUuYy0xMDI4LX1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjEwMjk6RVhQT1JUX1NZTUJPTChfX2d1ZV9idWlsZF9oZWFkZXIpO1xcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtMTAzMC1cXG4tLVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmM9MTA2OT1zdGF0aWMgaW50IGd1ZV9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcXG4tLVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtMTA3Ni1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjEwNzc6XFx0ZXJyID0gX19ndWVfYnVpbGRfaGVhZGVyKHNrYiwgZSwgcHJvdG9jb2wsIFxcdTAwMjZzcG9ydCwgdHlwZSk7XFxubmV0L2lwdjQvZm91X2NvcmUuYy0xMDc4LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2Ni9mb3U2LmM9NTc9c3RhdGljIGludCBndWU2X2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLFxcbi0tXFxubmV0L2lwdjYvZm91Ni5jLTY0LVxcbm5ldC9pcHY2L2ZvdTYuYzo2NTpcXHRlcnIgPSBfX2d1ZV9idWlsZF9oZWFkZXIoc2tiLCBlLCBwcm90b2NvbCwgXFx1MDAyNnNwb3J0LCB0eXBlKTtcXG5uZXQvaXB2Ni9mb3U2LmMtNjYtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTI6MjcuNTQxMTk4MDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEyMzE4MTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgZGlnZ2luZyBpbnRvIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbmFsaXR5IOKAkyBGT1UvR1VFIGVuY2Fwc3VsYXRpb24gYW5kIElQIHR1bm5lbHMsIHRvIGJlIHByZWNpc2UuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhhdCBgc2tiX2Nvd19oZWFkYCBjYWxsIHdpdGhpbiBgX19ndWVfYnVpbGRfaGVhZGVyYCBhbmQgdGhlIHJlb3JkZXJpbmcgb2YgdGhlIGBpbm5lcl9pcGhgIGFzc2lnbm1lbnRzIGluIGBpcF90dW5uZWxfeG1pdGAgYW5kIGBpcF9tZF90dW5uZWxfeG1pdGAgYXJlIHRoZSByZWQgZmxhZ3MuIFRoZXNlIGFyZSAqZnVuY3Rpb25hbCogY2hhbmdlcywgYW5kIHRoYXQgc2NyZWFtcyBcImZ1enogbWVcIiBhdCB0aGUgdG9wIG9mIG15IGx1bmdzLiBUaW1lIHRvIHB1dCBteSBmdXp6aW5nIGhhdCBvbiFcblxuTm93LCBiZWZvcmUgSSBjYW4gcmVhbGx5IGRpdmUgaW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21waWxhdGlvbiBjb25kaXRpb25zLiBMZXQncyBzZWUuLi4gYG5ldC9pcHY0L2ZvdV9jb3JlLmNgIGlzIGdvaW5nIHRvIGJlIGNvbXBpbGVkIGlmIGBDT05GSUdfTkVUX0ZPVWAgaXMgc2V0LiBBbmQgZm9yIGBuZXQvaXB2NC9pcF90dW5uZWwuY2AsIGl04oCZcyB0aGUgdXN1YWwgc3VzcGVjdHM6IGBDT05GSUdfTkVUX0lQSVBgLCBgQ09ORklHX05FVF9JUEdSRWAsIGFuZCBzbyBvbi4gUmlnaHQuIEdvdCBpdC4gTm93IEkgY2FuIGJ1aWxkIHRoZSByaWdodCBjb25maWd1cmF0aW9ucyB0byBnZXQgdGhpcyB1bmRlciB0ZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjQ5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUyOjMyLjg1MzUxODA0NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk1ODM5MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvdV9jb3JlXFxcXC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTI2PWdyZS15IDo9IGdyZV9kZW11eC5vXFxubmV0L2lwdjQvTWFrZWZpbGU6Mjc6Zm91LXkgOj0gZm91X2NvcmUubyBmb3VfbmwubyBmb3VfYnBmLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0yOC1vYmotJChDT05GSUdfTkVUX0ZPVSkgKz0gZm91Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTI6MzQuOTQ5MzY0NTY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3OTU0ODUxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IExldmVyYWdpbmcgdGhlIGBORVRfRk9VYCBSZXF1aXJlbWVudCoqXG5cblJpZ2h0LCBzbyBgTkVUX0ZPVWAgaXMgZGVmaW5pdGVseSBhIGtleSBmYWN0b3IgaW4gdGhpcyBzaXR1YXRpb24uIEl0J3MgdGhlIGx5bmNocGluLCB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHRpZXMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUuIEknbSBnb2luZyB0byBuZWVkIHRoaXMgZm9yIHN1cmUuIE5vdywgd2hlcmUgYW0gSSBnb2luZyB0byBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBpc3N1ZT8gV2FpdCwgSSB0aGluayBJIGtub3cgd2hlcmUgdG8gZ28gbmV4dC4gTGV0IG1lIHRoaW5rIGFib3V0IHRoYXQsIGZpcnN0LiBXaGF0IGFib3V0IHRoYXQgYGlwX3R1bm5lbC5jYCBmaWxlPyBDb3VsZCB0aGF0IGJlIGhlbHBmdWw/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NDksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo0MC4xMjg5MTU4N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI2MDE2MDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3R1bm5lbFxcXFwub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cXG5uZXQvaXB2NC9NYWtlZmlsZToxOTpvYmotJChDT05GSUdfTkVUX0lQX1RVTk5FTCkgKz0gaXBfdHVubmVsLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfU1lTQ1RMKSArPSBzeXNjdGxfbmV0X2lwdjQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo0Mi44NTQ5MzU5OTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE4NDk3MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgVHVubmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCB0aGUgYE5FVF9JUF9UVU5ORUxgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGJlaW5nIHB1bGxlZCBpbiBieSB2YXJpb3VzIHR1bm5lbCBjb25maWd1cmF0aW9ucy4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgc291cmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgb3B0aW9uICpyZWFsbHkqIGRvZXMgYW5kIGhvdyBpdCdzIHVzZWQuIEknbGwgaGVhZCBvdmVyIHRvIGBuZXQvaXB2NC9LY29uZmlnYCB0byBleGFtaW5lIGBORVRfSVBfVFVOTkVMYC4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBgbmV0L2lwdjRgIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBJUHY0LXJlbGF0ZWQgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLCBhbmQgYEtjb25maWdgIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwdXJwb3NlIG9mIHRoZXNlIG9wdGlvbnMuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgcHVycG9zZSwgYW5kIHdoYXQgdGhpcyBvcHRpb24gZW5hYmxlcyBhbmQgZGlzYWJsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNDAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo0Ni41NzM0MzU5NTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODgxMDIxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUF9UVU5ORUxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0xODA9Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0xODUtXFxubmV0L2lwdjQvS2NvbmZpZzoxODY6Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2NC9LY29uZmlnLTE4Ny1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo0OC4wNjE1NDQwNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyODc3MTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFRyaXN0YXRlIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGEgdHJpc3RhdGUsIG1lYW5pbmcgaXQncyBkZXBlbmRlbnQgb24gc29tZSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0J3Mgbm90IGEgc3RhbmRhbG9uZSwgc2VsZi1zZWxlY3RpbmcgY2hvaWNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaG8ncyBwdWxsaW5nIHRoZSBzdHJpbmdzIG9uIHRoaXMgb25lP1wiLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyBgTkVUX0lQX1RVTk5FTGAuIFRpbWUgdG8gZGlnIGluIGFuZCB0cmFjZSB0aG9zZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZWxlY3Rpb24gcGF0aCB0byB0cnVseSBncmFzcCBpdHMgcm9sZSBhbmQgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgc3lzdGVtJ3Mgb3ZlcmFsbCBjb25maWd1cmF0aW9uLiBMZXQncyBzZWUgd2hhdCdzIGNvbm5lY3RlZCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM1MywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUyOjUwLjg5MDMxODc2N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NTEzNDI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTkVUX0lQX1RVTk5FTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTY0LVxcdHNlbGVjdCBJTkVUX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWc6MTY1OlxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0xNjYtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0xOTI9Y29uZmlnIE5FVF9JUEdSRVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0xOTQtXFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnOjE5NTpcXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMTk2LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzA2LVxcdHNlbGVjdCBJTkVUX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWc6MzA3OlxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0zMDgtXFx0c2VsZWN0IFhGUk1cXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzE2PWNvbmZpZyBORVRfVURQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMzE3LVxcdHRyaXN0YXRlXFxubmV0L2lwdjQvS2NvbmZpZzozMTg6XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2NC9LY29uZmlnLTMxOS1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNTItXFx0c2VsZWN0IElQVjZfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZzoxNTM6XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTE1NC1cXHRzZWxlY3QgWEZSTVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNjI9Y29uZmlnIElQVjZfU0lUXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE2NC1cXHRzZWxlY3QgSU5FVF9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjE2NTpcXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMTY2LVxcdHNlbGVjdCBJUFY2X05ESVNDX05PREVUWVBFXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTIxMD1jb25maWcgSVBWNl9HUkVcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjEyLVxcdHNlbGVjdCBJUFY2X1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWc6MjEzOlxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yMTQtXFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTI6NTIuMzU1NDU4MTI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Mjk1ODM1NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbnNpZGVyYXRpb25zOlxuXG4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBUdW5uZWxpbmcgT3B0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gVGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHR1bm5lbGluZyBwcm90b2NvbHMsIGBORVRfSVBJUGAsIGBORVRfSVBHUkVgLCBhbmQgYE5FVF9VRFBfVFVOTkVMYCBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBzb2xpZCBvcHRpb25zLiBUaGV5J3JlIGFsbCBwcmV0dHkgc3RhbmRhcmQgYW5kIHdlbGwtdW5kZXJzdG9vZC4gTm93LCB0aGF0IGBORVRfRk9VYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBpbnRyaWd1aW5nOyBpdCBzZWVtcyB0byBiZSBsaW5rZWQgdG8gYE5FVF9VRFBfVFVOTkVMYCBkaXJlY3RseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGVzZSBjb25maWd1cmF0aW9uIGl0ZW1zIGlzIGFjY3VyYXRlLiBUaGUgZGVwZW5kZW5jeSBjaGFpbiBpcyBjbGVhciBlbm91Z2ggdGhhdCBJIHNob3VsZCBnbyBiYWNrIGFuZCByZXZpZXcgaG93IGBORVRfRk9VYCBzcGVjaWZpY2FsbHkgaW50ZXJhY3RzIHdpdGggdGhvc2Ugb3RoZXIgY29uZmlndXJhdGlvbnMsIHRvIHNlZSBpZiBhbnl0aGluZyBnZXRzIHNldCBvciBzZWxlY3RlZCBiYXNlZCBvbiBpdHMgdmFsdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDIsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo1NS44ODUwNDQyNzFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzY1ODU1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9GT1VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0zMTY9Y29uZmlnIE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTMyMC1cXG5uZXQvaXB2NC9LY29uZmlnOjMyMTpjb25maWcgTkVUX0ZPVVxcbm5ldC9pcHY0L0tjb25maWctMzIyLVxcdHRyaXN0YXRlIFxcXCJJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMjktXFxubmV0L2lwdjQvS2NvbmZpZzozMzA6Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xcbm5ldC9pcHY0L0tjb25maWctMzMxLVxcdGJvb2wgXFxcIklQOiBGT1UgZW5jYXBzdWxhdGlvbiBvZiBJUCB0dW5uZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo1Ny4zNjE2MzU5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTA4OTE2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQW5hbHl6aW5nIGBORVRfRk9VYCBTZWxlY3Rpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB3aGF0IHRoZSBgTkVUX0ZPVWAgc2VsZWN0aW9uIGNyaXRlcmlhIGhhdmUgeWllbGRlZC4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBvdXRwdXQgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBiYXNlZCBvbiB3aGF0IGBORVRfRk9VYCBpcyBtZWFudCB0byBjYXB0dXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHRoZSByZXN1bHRzIGFzIGV4cGVjdGVkLCBvciBhcmUgdGhlcmUgYW55IGFub21hbGllcyB0aGF0IHJlcXVpcmUgZnVydGhlciBpbnZlc3RpZ2F0aW9uPyBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIGJpYXNlcywgZWRnZSBjYXNlcywgb3IgdW5mb3Jlc2VlbiBpbnRlcmFjdGlvbnMgd2l0aGluIHRoZSBtb2RlbCB0aGF0IG1pZ2h0IGV4cGxhaW4gYW55IGRpdmVyZ2VuY2UgZnJvbSBteSBwcmlvciBhc3N1bXB0aW9ucy4gVGhpcyBhbHNvIGJyaW5ncyB1cCB3aGF0IFwiTkVUX0ZPVVwiIGlzIHNldCB0byBkbywgc28gSSBoYXZlIGEgZnJhbWUgb2YgcmVmZXJlbmNlLiBUaGlzIGlzIGdvaW5nIHRvIGJlIHF1aWNrIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTMyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6MDAuOTUyNTI5NzUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg5Mjc5NzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9GT1VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTY2PUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzo2NzpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctNjgtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZz02Mj1DT05GSUdfTkVUX0lQVlRJPW1cXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnOjYzOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWctNjQtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnPTY5PUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZzo3MDpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWctNzEtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnPTU5PUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZzo2MDpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWctNjEtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnPTYxPUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZzo2MjpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWctNjMtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZz02MD1DT05GSUdfTkVUX0lQVlRJPW1cXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnOjYxOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctNjItQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTgwPUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzo4MTpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctODItQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc9NTg9Q09ORklHX05FVF9JUFZUST1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc6NTk6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctNjAtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWc9NTk9Q09ORklHX05FVF9JUFZUST1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWc6NjA6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWctNjEtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz02MD1DT05GSUdfTkVUX0lQVlRJPW1cXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnOjYxOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWctNjItQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc9NTU9Q09ORklHX05FVF9JUFZUST1tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc6NTY6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWctNTctQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnPTU2PUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZzo1NzpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWctNTgtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Mzg2ND1icmNtZl9ub3RpZnlfc2NoZWRfc2Nhbl9yZXN1bHRzKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMzg5NS1cXHQvKiBQRk4gZXZlbnQgaXMgbGltaXRlZCB0byBmaXQgNTEyIGJ5dGVzIHNvIHdlIG1heSBnZXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzozODk2OlxcdCAqIG11bHRpcGxlIE5FVF9GT1VORCBldmVudHMuIEZvciBub3cgcGxhY2UgYSB3YXJuaW5nIGhlcmUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMzg5Ny1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTQxNjY9c3RhdGljIHMzMiBicmNtZl9jZmc4MDIxMV9yZXN1bWUoc3RydWN0IHdpcGh5ICp3aXBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTQxODQtXFx0XFx0XFx0YnJjbWZfY2ZnODAyMTFfc2NoZWRfc2Nhbl9zdG9wKGNmZy1cXHUwMDNld2lwaHksIGlmcC1cXHUwMDNlbmRldiwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDE4NTpcXHRcXHRcXHRicmNtZl9md2VoX3VucmVnaXN0ZXIoY2ZnLVxcdTAwM2VwdWIsIEJSQ01GX0VfUEZOX05FVF9GT1VORCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDE4NjpcXHRcXHRcXHRicmNtZl9md2VoX3JlZ2lzdGVyKGNmZy1cXHUwMDNlcHViLCBCUkNNRl9FX1BGTl9ORVRfRk9VTkQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNDE4Ny1cXHRcXHRcXHRcXHRcXHQgICAgYnJjbWZfbm90aWZ5X3NjaGVkX3NjYW5fcmVzdWx0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz00MTk0PXN0YXRpYyB2b2lkIGJyY21mX2NvbmZpZ3VyZV93b3dsKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00MjMxLVxcdFxcdC8qIE5vdyByZXJvdXRlIHRoZSBldmVudCBmb3IgUEZOIHRvIHRoZSB3b3dsIGZ1bmN0aW9uLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjQyMzI6XFx0XFx0YnJjbWZfZndlaF91bnJlZ2lzdGVyKGNmZy1cXHUwMDNlcHViLCBCUkNNRl9FX1BGTl9ORVRfRk9VTkQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjQyMzM6XFx0XFx0YnJjbWZfZndlaF9yZWdpc3RlcihjZmctXFx1MDAzZXB1YiwgQlJDTUZfRV9QRk5fTkVUX0ZPVU5ELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTQyMzQtXFx0XFx0XFx0XFx0ICAgIGJyY21mX3dvd2xfbmRfcmVzdWx0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02Nzc3PXN0YXRpYyB2b2lkIGJyY21mX3JlZ2lzdGVyX2V2ZW50X2hhbmRsZXJzKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02Nzk2LVxcdFxcdFxcdCAgICBicmNtZl9ub3RpZnlfY29ubmVjdF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjY3OTc6XFx0YnJjbWZfZndlaF9yZWdpc3RlcihjZmctXFx1MDAzZXB1YiwgQlJDTUZfRV9QRk5fTkVUX0ZPVU5ELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY3OTgtXFx0XFx0XFx0ICAgIGJyY21mX25vdGlmeV9zY2hlZF9zY2FuX3Jlc3VsdHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Z3ZWguaD0xOD1zdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md2VoLmgtNTgtXFx0QlJDTUZfRU5VTV9ERUYoUk9BTV9QUkVQLCAzMikgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md2VoLmg6NTk6XFx0QlJDTUZfRU5VTV9ERUYoUEZOX05FVF9GT1VORCwgMzMpIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZndlaC5oLTYwLVxcdEJSQ01GX0VOVU1fREVGKFBGTl9ORVRfTE9TVCwgMzQpIFxcXFxcXG4tLVxcbmluY2x1ZGUvbmV0L2ZvdS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG5pbmNsdWRlL25ldC9mb3UuaDoyOiNpZm5kZWYgX19ORVRfRk9VX0hcXG5pbmNsdWRlL25ldC9mb3UuaDozOiNkZWZpbmUgX19ORVRfRk9VX0hcXG5pbmNsdWRlL25ldC9mb3UuaC00LVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zMTY9Y29uZmlnIE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTMyMC1cXG5uZXQvaXB2NC9LY29uZmlnOjMyMTpjb25maWcgTkVUX0ZPVVxcbm5ldC9pcHY0L0tjb25maWctMzIyLVxcdHRyaXN0YXRlIFxcXCJJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMjktXFxubmV0L2lwdjQvS2NvbmZpZzozMzA6Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xcbm5ldC9pcHY0L0tjb25maWctMzMxLVxcdGJvb2wgXFxcIklQOiBGT1UgZW5jYXBzdWxhdGlvbiBvZiBJUCB0dW5uZWxzXFxcIlxcbm5ldC9pcHY0L0tjb25maWctMzMyLVxcdGRlcGVuZHMgb24gTkVUX0lQSVAgfHwgTkVUX0lQR1JFIHx8IElQVjZfU0lUXFxubmV0L2lwdjQvS2NvbmZpZzozMzM6XFx0c2VsZWN0IE5FVF9GT1VcXG5uZXQvaXB2NC9LY29uZmlnLTMzNC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZT0yNz1mb3UteSA6PSBmb3VfY29yZS5vIGZvdV9ubC5vIGZvdV9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19ORVRfRk9VKSArPSBmb3Uub1xcbm5ldC9pcHY0L01ha2VmaWxlLTI5LW9iai0kKENPTkZJR19ORVRfSVBHUkVfREVNVVgpICs9IGdyZS5vXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jPTEwMjk9RVhQT1JUX1NZTUJPTChfX2d1ZV9idWlsZF9oZWFkZXIpO1xcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtMTAzMC1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjEwMzE6I2lmZGVmIENPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFNcXG5uZXQvaXB2NC9mb3VfY29yZS5jLTEwMzItXFxuLS1cXG5uZXQvaXB2NC91ZHBfb2ZmbG9hZC5jPTM1PXN0cnVjdCB1ZHBfdHVubmVsX3R5cGVfZW50cnkge1xcbi0tXFxubmV0L2lwdjQvdWRwX29mZmxvYWQuYy00MS1cXHRcXHRcXHQgICAgICBJU19FTkFCTEVEKENPTkZJR19WWExBTikgKiAyICsgXFxcXFxcbm5ldC9pcHY0L3VkcF9vZmZsb2FkLmM6NDI6XFx0XFx0XFx0ICAgICAgSVNfRU5BQkxFRChDT05GSUdfTkVUX0ZPVSkgKiAyICsgXFxcXFxcbm5ldC9pcHY0L3VkcF9vZmZsb2FkLmMtNDMtXFx0XFx0XFx0ICAgICAgSVNfRU5BQkxFRChDT05GSUdfWEZSTSkgKiAyKVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0yMjg9Y29uZmlnIElQVjZfRk9VXFxubmV0L2lwdjYvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGVcXG5uZXQvaXB2Ni9LY29uZmlnOjIzMDpcXHRkZWZhdWx0IE5FVF9GT1UgXFx1MDAyNlxcdTAwMjYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjMxLVxcbm5ldC9pcHY2L0tjb25maWc9MjMyPWNvbmZpZyBJUFY2X0ZPVV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIzMy1cXHR0cmlzdGF0ZVxcbm5ldC9pcHY2L0tjb25maWc6MjM0OlxcdGRlZmF1bHQgTkVUX0ZPVV9JUF9UVU5ORUxTIFxcdTAwMjZcXHUwMDI2IElQVjZfRk9VXFxubmV0L2lwdjYvS2NvbmZpZy0yMzUtXFx0c2VsZWN0IElQVjZfVFVOTkVMXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnPTc0PUNPTkZJR19ORVRfQ0xTX01BVENIQUxMPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjc1OkNPTkZJR19ORVRfRk9VPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjc2OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWctNzctQ09ORklHX05FVF9JUEdSRT15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTg2PUNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0hMPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjg3OkNPTkZJR19ORVRfRk9VPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjg4OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWctODktQ09ORklHX05FVF9JUEdSRT1tXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUzOjAyLjQ0MTgxNjcxM1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI5OTg5NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLiBGcm9tIHdoYXQgSSBzZWUsIGBORVRfRk9VYCBhbmQgYE5FVF9GT1VfSVBfVFVOTkVMU2AgYXJlIGRlZmluaXRlbHkgc29saWQgY29uZmlndXJhdGlvbnMsIGdvb2Qgc3RhcnRpbmcgcG9pbnRzLiBCdXQsIGJlY2F1c2UgYE5FVF9GT1VfSVBfVFVOTkVMU2AgaGFzIHNvbWUgZGVwZW5kZW5jaWVzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBjb3ZlcmVkLiBSaWdodCwgc28gdGhhdCBtZWFucyBJIG5lZWQgdG8gYWxzbyBjaGVjayBvdXQgYE5FVF9JUElQYCwgb3IgcG90ZW50aWFsbHkgYE5FVF9JUEdSRWAsIG9yIGV2ZW4gYElQVjZfU0lUYCBzaW5jZSB0aGV5J3JlIGFsbCByZWxhdGVkIHRvIHRoZSBgTkVUX0ZPVV9JUF9UVU5ORUxTYCBzZXR1cC4gTGV0J3Mgc3RhcnQgd2l0aCBhIGNsb3NlciBsb29rIGF0IGBORVRfSVBJUGAgYW5kIGBORVRfSVBHUkVgIGFuZCBzZWUgd2hhdCB0aGV5J3JlIGRvaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA2OSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUzOjA2LjI3MTgwOTQzOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4OTk0Mzk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0lQSVBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0xNDk9Y29uZmlnIElQX1BOUF9SQVJQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE2MS1cXG5uZXQvaXB2NC9LY29uZmlnOjE2Mjpjb25maWcgTkVUX0lQSVBcXG5uZXQvaXB2NC9LY29uZmlnLTE2My1cXHR0cmlzdGF0ZSBcXFwiSVA6IHR1bm5lbGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6MDcuNzYxNzU4NTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgwNDk5MzE1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyBgY29uZmlnIE5FVF9JUEdSRWAqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIHJpZ2h0IGluLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBvZiBgTkVUX0lQR1JFYC4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBsaWtlbHkgbG9va2luZyBmb3IgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBHUkUgKEdlbmVyaWMgUm91dGluZyBFbmNhcHN1bGF0aW9uKSB0dW5uZWxzIHdpdGhpbiBhIG5ldHdvcmsgY29uZmlndXJhdGlvbiDigJMgcHJvYmFibHkgcmVsYXRlZCB0byBhIExpbnV4IGtlcm5lbCBvciBuZXR3b3JraW5nIGFwcGxpYW5jZS4gVGhlIHByZWNpc2UgbWVhbmluZyBoaW5nZXMgb24gdGhlIG92ZXJhcmNoaW5nIHByb2JsZW0gSSdtIHRyeWluZyB0byBzb2x2ZSwgYnV0IEkgbmVlZCB0byBzdGFydCBoZXJlLiBJIHdhbnQgdG8gY29uZmlybSBpZiBHUkUgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmZpZ3VyZWQgaW4gYSBub24tc3RhbmRhcmQgd2F5LlxuXG5EZXBlbmRpbmcgb24gd2hhdCBJIGZpbmQsIHRoZSBuZXh0IHF1ZXN0aW9ucyBpbW1lZGlhdGVseSBzcHJpbmcgdG8gbWluZC4gSWYgZW5hYmxlZCwgSSdsbCBuZWVkIHRvIGtub3c6IEFyZSB0aGUgR1JFIHR1bm5lbHMgY29uZmlndXJlZCBzdGF0aWNhbGx5LCBvciBhcmUgdGhleSBtYW5hZ2VkIGR5bmFtaWNhbGx5IChlLmcuLCB1c2luZyBhIHJvdXRpbmcgcHJvdG9jb2wpPyBXaGF0IGFyZSB0aGUgdHVubmVsIGVuZHBvaW50cyAoc291cmNlL2Rlc3RpbmF0aW9uIElQcyk/IFdoYXQgcHJvdG9jb2wgaXMgZW5jYXBzdWxhdGVkIChlLmcuLCBJUHY0LCBJUHY2KT8gV2hhdCdzIHRoZSBNVFUgc2V0dGluZyBmb3IgdGhlIHR1bm5lbCBpbnRlcmZhY2U/IEFueSB1c2Ugb2Yga2V5aW5nIG9yIGNoZWNrc3Vtcz9cblxuSWYgZGlzYWJsZWQsIEknbGwgYXNzZXNzIHdoZXRoZXIgdGhhdCdzIGV4cGVjdGVkIGJlaGF2aW9yLiBJdCBtYXkgYmUgZHVlIHRvIG90aGVyIGNvbnNpZGVyYXRpb25zLCBzZWN1cml0eSBjb25jZXJucywgb3IgYXJjaGl0ZWN0dXJlIG9mIHRoZSBuZXR3b3JrLiBBIGRpc2FibGluZyBzZXR0aW5nIGNvdWxkIHRyaWdnZXIgYW5vdGhlciBxdWVzdGlvbjogaXMgdGhlcmUgYW5vdGhlciB0eXBlIG9mIHR1bm5lbCBjb25maWd1cmF0aW9uPyBPciwgaXMgR1JFIHNpbXBseSByZWR1bmRhbnQ/IEFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzP1xuXG5Fc3NlbnRpYWxseSwgSSdtIHRyeWluZyB0byBlc3RhYmxpc2ggYSBiYXNlbGluZS4gVW5kZXJzdGFuZGluZyB0aGUgc3RhdGUgb2YgYE5FVF9JUEdSRWAgaXMgdGhlIGNyaXRpY2FsIGZpcnN0IHN0ZXAgZm9yIGRpYWdub3NpbmcgYSBHUkUtcmVsYXRlZCBpc3N1ZSBvciBzZXR0aW5nIHVwIGEgbmV3IEdSRSB0dW5uZWwuIEknbSBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgbmV0d29yaydzIHR1bm5lbCBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDI1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6MTIuNTY2NzU0NDQ1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDIyNjc2MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cXG5uZXQvaXB2NC9LY29uZmlnOjE4MDpjb25maWcgTkVUX0lQR1JFX0RFTVVYXFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MTg2PWNvbmZpZyBORVRfSVBfVFVOTkVMXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cXG5uZXQvaXB2NC9LY29uZmlnOjE5Mjpjb25maWcgTkVUX0lQR1JFXFxubmV0L2lwdjQvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgdHVubmVscyBvdmVyIElQXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0yMDYtXFxubmV0L2lwdjQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9JUEdSRV9CUk9BRENBU1RcXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJJUDogYnJvYWRjYXN0IEdSRSBvdmVyIElQXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1MzoxNC45ODk0MzU0NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTUyOTE5ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEtlcm5lbCBNb2R1bGUgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gaW50ZWdyYXRpbmcgdGhlc2UgbmV3IHR1bm5lbGluZyBwcm90b2NvbHMgaW50byB0aGUgc3lzdGVtLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYXBwcm9wcmlhdGUga2VybmVsIHN5bWJvbHMgYXJlIGVuYWJsZWQuIEknbGwgYWRkIGBORVRfRk9VYCwgYE5FVF9GT1VfSVBfVFVOTkVMU2AsIGBORVRfSVBJUGAsIGFuZCBgTkVUX0lQR1JFYCB0byB0aGUgbW9kdWxlIGNvbmZpZ3VyYXRpb24uIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC5cblxuTm93LCB0aGUgY29yZSBvZiB0aGlzIGludGVncmF0aW9uIGxpZXMgaW4gbW9kaWZ5aW5nIHRoZSBwYWNrZXQgaGFuZGxpbmcuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIGl0IHNlZW1zIHRoYXQgYF9fZ3VlX2J1aWxkX2hlYWRlcmAgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIHRoYXQgaGFzIGNoYW5nZWQuIEFkZGl0aW9uYWxseSwgdGhlcmUgYXJlIG1vZGlmaWNhdGlvbnMgdG8gYGlwX21kX3R1bm5lbF94bWl0YCBhbmQgYGlwX3R1bm5lbF94bWl0YCDigJMgcHJvYmFibHkgZm9yIHRoZSB0cmFuc21pc3Npb24gYXNwZWN0LlxuXG5UaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyBhYm91dCBzeW1ib2wgdmlzaWJpbGl0eS4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBhY2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBrZXJuZWwncyBtb2R1bGUgc3lzdGVtPyBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBkaXJlY3RseSBjYWxsIG9yIHVzZSB0aGVtLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBfX2d1ZV9idWlsZF9oZWFkZXJgLCBgaXBfbWRfdHVubmVsX3htaXRgIGFuZCBgaXBfdHVubmVsX3htaXRgIGFyZSBhbGwgZXhwb3J0ZWQsIHdoaWNoIG1lYW5zIEkgY2FuIGRpcmVjdGx5IHV0aWxpemUgdGhlc2UgZnVuY3Rpb25zIHdpdGhpbiBteSBuZXcgbW9kdWxlLiBUaGF0J3MgYSBodWdlIHJlbGllZiwgaXQgbWVhbnMgdGhpcyBpbnRlZ3JhdGlvbiBzaG91bGQgYmUgZmVhc2libGUgYW5kIHRoYXQgSSB3b24ndCBoYXZlIHRvIGp1bXAgdGhyb3VnaCBhbnkgdW5leHBlY3RlZCBob29wcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMzEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6MTkuOTQyMzU3ODVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzMwNDIzMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qaXBfdHVubmVsX3htaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfdHVubmVsLmM9NjcwPXZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTg2Mi19XFxubmV0L2lwdjQvaXBfdHVubmVsLmM6ODYzOkVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF94bWl0KTtcXG5uZXQvaXB2NC9pcF90dW5uZWwuYy04NjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUzOjIxLjg3NTQwNzgzNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU1OTA4Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gYGlwX21kX3R1bm5lbF94bWl0YCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gcmV2aXNpdCBgaXBfbWRfdHVubmVsX3htaXRgLiBJIG5lZWQgdG8gZ2V0IGJhY2sgaW4gdGhlIHdlZWRzIHdpdGggdGhpcyBmdW5jdGlvbi4gSXQncyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBJUC1pbi1JUCB0dW5uZWwgdHJhbnNtaXNzaW9uIHB1enpsZSwgYW5kIEknbSBpdGNoaW5nIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIEkgY2FuIGltcHJvdmUuIExldCdzIG1ha2Ugc3VyZSBpdOKAmXMgaGFuZGxpbmcgdGhlIHBhY2tldCBjb25zdHJ1Y3Rpb24gZWZmaWNpZW50bHkuIEFyZSB0aGUgbWVtb3J5IGNvcGllcyBvcHRpbWl6ZWQ/IEFueSB1bm5lY2Vzc2FyeSBzeXN0ZW0gY2FsbHM/IFdoYXQgYWJvdXQgYWxpZ25tZW50IGlzc3VlcyBpbXBhY3RpbmcgQ1BVIGNhY2hlIHVzYWdlPyBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyAob3IgdGhlIHBhaW4pIGhhcHBlbnMsIHNvIEkgbmVlZCBhIGNsZWFyIG1lbnRhbCBwaWN0dXJlIG9mIGl0cyBpbm5lciB3b3JraW5ncy4gSeKAmWxsIHN0YXJ0IGJ5IHJldmlld2luZyB0aGUgY29kZSBhZ2FpbiB3aXRoIGEgZnJlc2ggcGVyc3BlY3RpdmUsIG1heWJlIHRyYWNlIHNvbWUgcGFja2V0cyB0aHJvdWdoIHRvIHNlZSBob3cgaXQgcGVyZm9ybXMgaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvLiBMZXTigJlzIGlkZW50aWZ5IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBvciB3b3JzZSwgYnVncy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsb29raW5nIGF0IHRoZSBkYXRhIHN0cnVjdHVyZSBtYW5pcHVsYXRpb24uIFRoZSBoZWFkZXIgY29uc3RydWN0aW9uIGxvZ2ljIGlzIHVzdWFsbHkgd2hlcmUgSSBmaW5kIHN1cnByaXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NTgsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1MzoyNS42MzEzMTkyNjRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTUyMzg0NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qaXBfbWRfdHVubmVsX3htaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfdHVubmVsLmM9NTcxPXZvaWQgaXBfbWRfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTY2Ny19XFxubmV0L2lwdjQvaXBfdHVubmVsLmM6NjY4OkVYUE9SVF9TWU1CT0xfR1BMKGlwX21kX3R1bm5lbF94bWl0KTtcXG5uZXQvaXB2NC9pcF90dW5uZWwuYy02NjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUzOjI3LjU0NjU2MjU3N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODk3ODM1NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIGluIHRoZSBmaXJzdCBwZXJzb24gYW5kIGFzc3VtaW5nIHRoZSB1c2VyIGlzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGBfX2d1ZV9idWlsZF9oZWFkZXJgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYF9fZ3VlX2J1aWxkX2hlYWRlcmAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGFzY2VydGFpbiBpdHMgcHVycG9zZS4gR2l2ZW4gdGhlIG5hbWUsIEknbSBleHBlY3RpbmcgaXQgcHJvYmFibHkgY29uc3RydWN0cyBvciBtYW5hZ2VzIHNvbWUgaGVhZGVyIGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgR1VFIGZyYW1ld29yaywgYnV0IGEgcXVpY2sgY29uZmlybWF0aW9uIGlzIGFsd2F5cyB3aXNlLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhhdCBpdCBtaWdodCBpbnZvbHZlIHRhc2tzIGxpa2U6XG5cbiogICAqKlZlcnNpb25pbmc6KiogRG9lcyBpdCBoYW5kbGUgdmVyc2lvbiBpZGVudGlmaWVycyBmb3IgdGhlIGJ1aWx0IGFydGlmYWN0PyBQZXJoYXBzIGl0IGVtYmVkcyB0aGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIGJ1aWxkIHRvb2wgb3IgYSBjb21wb25lbnQ/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogTWF5YmUgaXQgbGlzdHMgdGhlIGRlcGVuZGVuY2llcyBiYWtlZCBpbnRvIHRoZSBmaW5hbCBvdXRwdXQuIEl0J3Mgb2Z0ZW4gaGVscGZ1bCB0byBrbm93IHRoZSBleGFjdCBkZXBlbmRlbmN5IHZlcnNpb25zIHVzZWQgYXQgYnVpbGQgdGltZS5cbiogICAqKk1ldGFkYXRhOioqIERvZXMgaXQgc3RvcmUgYW55IG1ldGFkYXRhIHJlZ2FyZGluZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXRzZWxmPyBUaGluayBidWlsZCBzeXN0ZW0gZGV0YWlscywgY29tcGlsZXIgZmxhZ3MsIGhvc3RuYW1lLCB0aW1lc3RhbXBzLCBldGMuP1xuKiAgICoqQ2hlY2tzdW1zL0hhc2hlczoqKiBDb3VsZCBpdCBjb21wdXRlIGFuZCBpbmNsdWRlIGNoZWNrc3VtcyBvciBjcnlwdG9ncmFwaGljIGhhc2hlcyBmb3IgaW50ZWdyaXR5IHZlcmlmaWNhdGlvbj8gVGhhdOKAmWQgYmUgYSBzbWFydCBhZGRpdGlvbi5cbiogICAqKkZvcm1hdDoqKiBJIGFtIGNvbnNpZGVyaW5nIHdoYXQgZm9ybWF0IGl0IHVzZXMgZm9yIHRoZSBoZWFkZXIuIElzIGl0IGEgcGxhaW4gdGV4dCBmb3JtYXQsIGEgc3RydWN0dXJlZCBmb3JtYXQgbGlrZSBKU09OIG9yIFlBTUwsIG9yIHNvbWV0aGluZyBtb3JlIGJlc3Bva2U/XG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBidWlsZCBwcm9jZXNzLiBJcyBpdCBjYWxsZWQgZWFybHksIGxhdGUsIG9yIGF0IGV2ZXJ5IHN0YWdlPyBJcyBpdCBjcml0aWNhbCBmb3IgY29tcGlsYXRpb24sIGxpbmtpbmcsIG9yIHBvc3QtcHJvY2Vzc2luZz8gSSBhbSBub3cgZm9ybWluZyB0aGUgcXVlc3Rpb25zIHRvIGd1aWRlIHRoZSBleGFtaW5hdGlvbjogV2hhdCBpcyBpdCBjYWxsZWQgd2l0aD8gV2hhdCBkb2VzIGl0IHJldHVybj8gV2hhdCBpcyBpdCB1c2VkIGZvcj8gRG9lcyBpdCB3cml0ZSB0byBhIGZpbGUsIG1vZGlmeSBhbiBpbi1tZW1vcnkgc3RydWN0dXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT9cblxuT25jZSBJIGtub3cgdGhlIGZ1bmRhbWVudGFsIGpvYiwgSSdsbCB0aGVuIG1vdmUgdG93YXJkcyB1bmRlcnN0YW5kaW5nIHRoZSBkZXRhaWxzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBjb21wb25lbnRzIG9mIHRoZSBzeXN0ZW0uIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIHdoaWNoIGFyZSBwcm9iYWJseSB0aGUgZm9sbG93aW5nOlxuXG4qICAgKipTZWN1cml0eToqKiBkb2VzIGl0IGFkZCBhbnkgc2VjdXJpdHkgY29uY2VybnM/XG4qICAgKipQZXJmb3JtYW5jZToqKiBjb3VsZCBpdCBpbXBhY3QgYnVpbGQgdGltZXM/XG4qICAgKipNYWludGFpbmFiaWxpdHk6KiogaXMgdGhlIGNvZGUgY2xlYW4gYW5kIHdlbGwtZG9jdW1lbnRlZD9cblxuSSdtIHN0YXJ0aW5nIHRoZSBtZW50YWwgY2hlY2tsaXN0LiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTQ3LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6MzMuNDQ0NDAwNzIyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMxODI2Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKl9fZ3VlX2J1aWxkX2hlYWRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9mb3VfY29yZS5jPTk1Nj1pbnQgX19ndWVfYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF90dW5uZWxfZW5jYXAgKmUsXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jLTEwMjgtfVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmM6MTAyOTpFWFBPUlRfU1lNQk9MKF9fZ3VlX2J1aWxkX2hlYWRlcik7XFxubmV0L2lwdjQvZm91X2NvcmUuYy0xMDMwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1MzozNS4zNzYyMzU3MTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAyNDY3NTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIFZ1bG5lcmFiaWxpdHkgYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgaGVyZSdzIHRoZSBicmVha2Rvd24gb2YgdGhpcyBwYXRjaCwgYXMgSSBzZWUgaXQuIFRoZSBmb2N1cyBzeW1ib2xzIGxvb2sgcHJvbWlzaW5nLCBhbmQgaXQncyBkZWZpbml0ZWx5IGEgZml4IHdvcnRoIGRpZ2dpbmcgaW50by5cblxuQmFzaWNhbGx5LCB0aGVyZSdzIGEgYnVnIGluIHRoZSBJUCB0dW5uZWwgZW5jYXBzdWxhdGlvbiBwcm9jZXNzIHdoZXJlIGBpcF90dW5uZWxfZW5jYXBgIG1pZ2h0IHJlYWxsb2NhdGUgdGhlIHNrYiAoc29ja2V0IGJ1ZmZlciksIGFuZCB0aGUgY29kZSB3YXMgcmVhZGluZyBgaW5uZXJfaXBoYCAqYmVmb3JlKiB0aGUgcG90ZW50aWFsIHJlYWxsb2NhdGlvbi4gVGhpcywgYXMgd2Uga25vdywgaXMgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIOKAkyBzb21ldGhpbmcgd2UndmUgc2VlbiBleHBsb2l0ZWQgYmVmb3JlLCBJJ20gc3VyZSwgYW5kIHNvbWV0aGluZyB3ZSBhYnNvbHV0ZWx5IG5lZWQgdG8gYWRkcmVzcy4gVGhpcyBwYXRjaCByZW9yZGVycyB0aGUgYXNzaWdubWVudCBzbyB0aGF0IHRoZSByZWFkIG9mIGBpbm5lcl9pcGhgIG9jY3VycyAqYWZ0ZXIqIGFueSByZWFsbG9jYXRpb24sIHByb3RlY3RpbmcgdGhlIGBpbm5lcl9pcGhgIHBvaW50ZXIuIFRoZSBwYXRjaCBhbHNvIGluY2x1ZGVzIGEgY2hlY2sgZm9yIGBza2JfY293X2hlYWRgIGluIGBfX2d1ZV9idWlsZF9oZWFkZXJgLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgsIHNwZWNpZmljYWxseSB0aGF0IGl0J3MgdG91Y2hpbmcgRk9VL0dVRSBlbmNhcHN1bGF0aW9uIGFuZCBJUCB0dW5uZWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljLCB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBXZSdyZSB0YWxraW5nIGFib3V0IGZ1bmRhbWVudGFsIHBhY2tldCBoYW5kbGluZyBoZXJlLCB3aGljaCBtZWFucyB0aGVyZSdzIGEgaGlnaCBwcm9iYWJpbGl0eSBvZiBmaW5kaW5nIGlzc3VlcyB0aGF0IGNvdWxkIGxlYWQgdG8gc2VyaW91cyB2dWxuZXJhYmlsaXRpZXMuXG5cbkluIHN1bW1hcnksIEknbSBtYXJraW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAgYmVjYXVzZSBpdCBkaXJlY3RseSBpbXBhY3RzIGNydWNpYWwgbmV0d29yayBmdW5jdGlvbmFsaXR5IGFuZCBhZGRyZXNzZXMgYSBjbGVhciBtZW1vcnkgc2FmZXR5IGlzc3VlLiBUaGUgZm9jdXMgc3ltYm9scyBJJ20ga2V5aW5nIG9uIGFyZTogYF9fZ3VlX2J1aWxkX2hlYWRlcmAsIGBpcF9tZF90dW5uZWxfeG1pdGAsIGFuZCBgaXBfdHVubmVsX3htaXRgLiBXZSBzaG91bGQgYWxzbyBlbnN1cmUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZCBmb3IgY29tcHJlaGVuc2l2ZSB0ZXN0aW5nOiBgTkVUX0ZPVWAsIGBORVRfRk9VX0lQX1RVTk5FTFNgLCBgTkVUX0lQSVBgLCBhbmQgYE5FVF9JUEdSRWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTcxLCJPdXRwdXRUb2tlbnMiOjE4NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mzo0Mi40MDA5MTM1OTdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTUyMzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiLFxuICAgIFwiTkVUX0ZPVV9JUF9UVU5ORUxTXCIsXG4gICAgXCJORVRfSVBJUFwiLFxuICAgIFwiTkVUX0lQR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ndWVfYnVpbGRfaGVhZGVyXCIsXG4gICAgXCJpcF9tZF90dW5uZWxfeG1pdFwiLFxuICAgIFwiaXBfdHVubmVsX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgYnkgcmVvcmRlcmluZyB0aGUgYXNzaWdubWVudCBvZiBgaW5uZXJfaXBoYCBhZnRlciBgaXBfdHVubmVsX2VuY2FwYCwgd2hpY2ggY2FuIHJlYWxsb2NhdGUgdGhlIHNrYiBoZWFkLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBmb3IgYHNrYl9jb3dfaGVhZGAgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIChGT1UvR1VFIGVuY2Fwc3VsYXRpb24gYW5kIElQIHR1bm5lbHMpIHRoYXQgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRk9VXCIsXG4gICAgXCJORVRfRk9VX0lQX1RVTk5FTFNcIixcbiAgICBcIk5FVF9JUElQXCIsXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2d1ZV9idWlsZF9oZWFkZXJcIixcbiAgICBcImlwX21kX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcF90dW5uZWxfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBieSByZW9yZGVyaW5nIHRoZSBhc3NpZ25tZW50IG9mIGBpbm5lcl9pcGhgIGFmdGVyIGBpcF90dW5uZWxfZW5jYXBgLCB3aGljaCBjYW4gcmVhbGxvY2F0ZSB0aGUgc2tiIGhlYWQuIEl0IGFsc28gYWRkcyBhIGNoZWNrIGZvciBgc2tiX2Nvd19oZWFkYCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgKEZPVS9HVUUgZW5jYXBzdWxhdGlvbiBhbmQgSVAgdHVubmVscykgdGhhdCBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mzo0Mi40ODA0NDU4NjVaIiwiU2VxIjoyOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTM2ODAyMjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6NDIuNDgwOTY3MTU0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE2MTM2Mjc2NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIHZ1bG5lcmFiaWxpdHkuIFRoZSBmdW5jdGlvbiBgaXBfdHVubmVsX2VuY2FwKClgIGNhbiByZWFsbG9jYXRlIHRoZSBgc2tiYCBoZWFkIChmb3IgZXhhbXBsZSwgdmlhIGBza2JfY293X2hlYWQoKWAgd2hpY2ggaXMgYWRkZWQgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcigpYCBieSB0aGlzIHBhdGNoKS4gSWYgYGlubmVyX2lwaGAgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIGBpcF90dW5uZWxfZW5jYXAoKWAgaXMgY2FsbGVkLCBpdCB3aWxsIHBvaW50IHRvIHRoZSBvbGQsIGZyZWVkIGBza2JgIGhlYWQsIGxlYWRpbmcgdG8gYSBVQUYgd2hlbiBgaW5uZXJfaXBoYCBpcyBsYXRlciBkZXJlZmVyZW5jZWQuIEJ5IG1vdmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYGlubmVyX2lwaGAgdG8gYWZ0ZXIgYGlwX3R1bm5lbF9lbmNhcCgpYCwgdGhlIHBhdGNoIGVuc3VyZXMgaXQgcG9pbnRzIHRvIHRoZSBjb3JyZWN0LCBwb3RlbnRpYWxseSByZWFsbG9jYXRlZCBgc2tiYCBoZWFkLlxcblxcblVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nLCBvciBpbmZvLWxlYWsgaW52b2x2ZWQgaW4gdGhpcyBidWcgb3IgaXRzIGZpeC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGNhdGNoaW5nIHRoaXMgY2xhc3Mgb2YgbWVtb3J5IGNvcnJ1cHRpb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzg0ODFlZmUyNjUxZDBlMzA2ZjIzODhhZWIzZGM2Mjk2ZWJmOGZjZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE1OjUyOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZm91X2NvcmUuYyBiL25ldC9pcHY0L2ZvdV9jb3JlLmNcbmluZGV4IGFiMDlkZmNkZWNiZDUuLjhjZjBkNDNhY2I0MTIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jXG4rKysgYi9uZXQvaXB2NC9mb3VfY29yZS5jXG5AQCAtOTgwLDYgKzk4MCw4IEBAIGludCBfX2d1ZV9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcbiBcdFx0XHRcdFx0XHRza2IsIDAsIDAsIGZhbHNlKTtcbiBcbiBcdGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgZ3VlaGRyKSArIG9wdGxlbjtcbitcdGlmIChza2JfY293X2hlYWQoc2tiLCBoZHJsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHNrYl9wdXNoKHNrYiwgaGRybGVuKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF90dW5uZWwuYyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5pbmRleCA5ZDExNGJkNTc1ZjkyLi4yYmQ2ODRlYjJiYTI1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcbisrKyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5AQCAtNjA2LDYgKzYwNiw3IEBAIHZvaWQgaXBfbWRfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGlmIChpcF90dW5uZWxfZW5jYXAoc2tiLCBcdTAwMjZ0dW5faW5mby1cdTAwM2VlbmNhcCwgXHUwMDI2cHJvdG8sIFx1MDAyNmZsNCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4rXHRpbm5lcl9pcGggPSAoY29uc3Qgc3RydWN0IGlwaGRyICopc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYik7XG4gXG4gXHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcbiBcdGlmICh1c2VfY2FjaGUpXG5AQCAtNzY1LDggKzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2VuZXQsIFJFQURfT05DRSh0dW5uZWwtXHUwMDNlcGFybXMubGluayksXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2Vmd21hcmssIHNrYl9nZXRfaGFzaChza2IpLCAwKTtcbiBcbitcdGRmID0gdG5sX3BhcmFtcy1cdTAwM2VmcmFnX29mZjtcbitcdHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO1xuK1xuIFx0aWYgKGlwX3R1bm5lbF9lbmNhcChza2IsIFx1MDAyNnR1bm5lbC1cdTAwM2VlbmNhcCwgXHUwMDI2cHJvdG9jb2wsIFx1MDAyNmZsNCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4rXHRpbm5lcl9pcGggPSAoY29uc3Qgc3RydWN0IGlwaGRyICopc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYik7XG4gXG4gXHRpZiAoY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBtZCkge1xuIFx0XHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcbkBAIC03OTksNyArODA0LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRnb3RvIHR4X2Vycm9yO1xuIFx0fVxuIFxuLVx0ZGYgPSB0bmxfcGFyYW1zLVx1MDAzZWZyYWdfb2ZmO1xuIFx0aWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApIFx1MDAyNlx1MDAyNiAhdHVubmVsLVx1MDAzZWlnbm9yZV9kZilcbiBcdFx0ZGYgfD0gKGlubmVyX2lwaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfREYpKTtcbiBcbkBAIC04MjEsNyArODI1LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0fVxuIFxuIFx0dG9zID0gaXBfdHVubmVsX2Vjbl9lbmNhcCh0b3MsIGlubmVyX2lwaCwgc2tiKTtcbi1cdHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO1xuIFx0aWYgKHR0bCA9PSAwKSB7XG4gXHRcdGlmIChwYXlsb2FkX3Byb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSlcbiBcdFx0XHR0dGwgPSBpbm5lcl9pcGgtXHUwMDNldHRsO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6NDIuNDgwOTY4MTE0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MTM2MjUwMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBOZXR3b3JrIFR1bm5lbGluZyBQYXRjaCoqXG5cbk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IHRhcmdldHMgYSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSwgc3BlY2lmaWNhbGx5IGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgY29uZGl0aW9uIHdpdGhpbiB0aGUgbmV0d29yayB0dW5uZWxpbmcgY29kZS4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gc3RlbSBmcm9tIGhvdyB0aGUgY29kZSBoYW5kbGVzIGBza2JgIChzb2NrZXQgYnVmZmVyKSBoZWFkZXJzLCBwYXJ0aWN1bGFybHkgZHVyaW5nIGVuY2Fwc3VsYXRpb24uXG5cbk15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGZvY3VzZWQgb24gYG5ldC9pcHY0L2ZvdV9jb3JlLmNgIGFuZCBgbmV0L2lwdjQvaXBfdHVubmVsLmNgLiBJbiBgZm91X2NvcmUuY2AsIGEgY2hlY2sgd2l0aCBgc2tiX2Nvd19oZWFkYCBpcyBpbnRyb2R1Y2VkIGJlZm9yZSBwdXNoaW5nIHRoZSBoZWFkZXIuIFRoaXMgaXMgYSBnb29kIHByYWN0aWNlIGFzIGl0IHByZS1lbXB0aXZlbHkgZW5zdXJlcyBlbm91Z2ggaGVhZHJvb20gaW4gdGhlIGBza2JgLCBtaXRpZ2F0aW5nIHRoZSByaXNrIG9mIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIG1lbW9yeSBjb3JydXB0aW9uLlxuXG5UaGUgbW9yZSBpbnRlcmVzdGluZyBwYXJ0LCBob3dldmVyLCBpcyBpbiBgaXBfdHVubmVsLmNgLiBUaGUgb3JpZ2luYWwgY29kZSBpbml0aWFsaXplcyBgaW5uZXJfaXBoYCAoYSBwb2ludGVyIHRvIHRoZSBpbm5lciBJUCBoZWFkZXIpIGJlZm9yZSBjYWxsaW5nIGBpcF90dW5uZWxfZW5jYXBgLiAgTm93LCBpdCBsb29rcyBsaWtlIGBpcF90dW5uZWxfZW5jYXBgIOKAkyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggZnVuY3Rpb25zIGxpa2UgYGZvdV9idWlsZF9oZWFkZXJgIG9yIGBndWVfYnVpbGRfaGVhZGVyYCDigJMgY2FuLCBhbmQgKmRvZXMqLCBjYWxsIGBza2JfY293X2hlYWRgLiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBpc3N1ZS4gVGhlIGBza2JfY293X2hlYWRgIGZ1bmN0aW9uIGNhbiByZWFsbG9jYXRlIHRoZSBtZW1vcnkgb2YgdGhlIGBza2JgIGhlYWQuIElmIHRoaXMgaGFwcGVucyAqYWZ0ZXIqIGBpbm5lcl9pcGhgIGhhcyBiZWVuIHNldCwgYnV0ICpiZWZvcmUqIHRoZSBwb2ludGVyIGlzIHVzZWQsICBgaW5uZXJfaXBoYCBlbmRzIHVwIHBvaW50aW5nIHRvIGEgZGVhbGxvY2F0ZWQgYW5kIHBvc3NpYmx5IG92ZXJ3cml0dGVuIG1lbW9yeSByZWdpb24uIFRoaXMgaXMgdGV4dGJvb2sgVUFGLCBvciBhIGRhbmdsaW5nIHBvaW50ZXIgYnVnLlxuXG5UaGUgcGF0Y2ggcmVzb2x2ZXMgdGhpcyBieSBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgb2YgYGlubmVyX2lwaGAgdG8gKmFmdGVyKiB0aGUgYGlwX3R1bm5lbF9lbmNhcGAgY2FsbC4gVGhpcyB3YXksIHRoZSBwb2ludGVyIGFsd2F5cyBwb2ludHMgdG8gdGhlIHZhbGlkIGFuZCBjb3JyZWN0IChwb3RlbnRpYWxseSByZWFsbG9jYXRlZCkgYHNrYmAgaGVhZC5cblxuR2l2ZW4gdGhhdCB0aGlzIGlzIGEgVUFGIGJ1ZywgYW5kIHRoYXQgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgc3BlY2lmaWNhbGx5IHRvIGRldGVjdCBzdWNoIGlzc3VlcywgdGhlIGZpeCBzZWVtcyBhcHByb3ByaWF0ZS4gSeKAmW0gdGhpbmtpbmcgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvbmNlcm5zIGhlcmU7ICBgc2tiX2Nvd19oZWFkYCByZWFsbG9jYXRlcyBidXQgY29waWVzIHRoZSBvcmlnaW5hbCBkYXRhLCBhbmQgdGhlIG5ldyBoZWFkcm9vbSB3aWxsIGJlIGZpbGxlZCBsYXRlci4gVGhpcyBwYXRjaCBmdW5kYW1lbnRhbGx5IGFkZHJlc3NlcyBhIGRhbmdsaW5nIHBvaW50ZXIsIG5vdCBhbiB1bmluaXRpYWxpemVkIHJlYWQgb3IgaW5mb3JtYXRpb24gbGVhay4gVGhpcyBtZWFucyBhIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlxuXG5UaGVyZWZvcmUsIHRoZSBwYXRjaCBsb29rcyBsaWtlIGl0ICpzdWNjZXNzZnVsbHkqIG1pdGlnYXRlcyBhIFVBRiBieSBlbnN1cmluZyBgaW5uZXJfaXBoYCBwb2ludHMgdG8gdGhlIGNvcnJlY3RseSBhbGxvY2F0ZWQgYW5kIHZhbGlkIGBza2JgIG1lbW9yeS4gTm8gS01TQU4gbmVlZGVkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTksIk91dHB1dFRva2VucyI6MjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUzOjU4LjYxNzIyMjQ4NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKSB2dWxuZXJhYmlsaXR5LiBUaGUgZnVuY3Rpb24gYGlwX3R1bm5lbF9lbmNhcCgpYCBjYW4gcmVhbGxvY2F0ZSB0aGUgYHNrYmAgaGVhZCAoZm9yIGV4YW1wbGUsIHZpYSBgc2tiX2Nvd19oZWFkKClgIHdoaWNoIGlzIGFkZGVkIGluIGBfX2d1ZV9idWlsZF9oZWFkZXIoKWAgYnkgdGhpcyBwYXRjaCkuIElmIGBpbm5lcl9pcGhgIGlzIGluaXRpYWxpemVkIGJlZm9yZSBgaXBfdHVubmVsX2VuY2FwKClgIGlzIGNhbGxlZCwgaXQgd2lsbCBwb2ludCB0byB0aGUgb2xkLCBmcmVlZCBgc2tiYCBoZWFkLCBsZWFkaW5nIHRvIGEgVUFGIHdoZW4gYGlubmVyX2lwaGAgaXMgbGF0ZXIgZGVyZWZlcmVuY2VkLiBCeSBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBpbm5lcl9pcGhgIHRvIGFmdGVyIGBpcF90dW5uZWxfZW5jYXAoKWAsIHRoZSBwYXRjaCBlbnN1cmVzIGl0IHBvaW50cyB0byB0aGUgY29ycmVjdCwgcG90ZW50aWFsbHkgcmVhbGxvY2F0ZWQgYHNrYmAgaGVhZC5cXG5cXG5Vc2UtYWZ0ZXItZnJlZSBidWdzIGFuZCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCwgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgaW5mby1sZWFrIGludm9sdmVkIGluIHRoaXMgYnVnIG9yIGl0cyBmaXguIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIHN0YW5kYXJkIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBjYXRjaGluZyB0aGlzIGNsYXNzIG9mIG1lbW9yeSBjb3JydXB0aW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eS4gVGhlIGZ1bmN0aW9uIGBpcF90dW5uZWxfZW5jYXAoKWAgY2FuIHJlYWxsb2NhdGUgdGhlIGBza2JgIGhlYWQgKGZvciBleGFtcGxlLCB2aWEgYHNrYl9jb3dfaGVhZCgpYCB3aGljaCBpcyBhZGRlZCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyKClgIGJ5IHRoaXMgcGF0Y2gpLiBJZiBgaW5uZXJfaXBoYCBpcyBpbml0aWFsaXplZCBiZWZvcmUgYGlwX3R1bm5lbF9lbmNhcCgpYCBpcyBjYWxsZWQsIGl0IHdpbGwgcG9pbnQgdG8gdGhlIG9sZCwgZnJlZWQgYHNrYmAgaGVhZCwgbGVhZGluZyB0byBhIFVBRiB3aGVuIGBpbm5lcl9pcGhgIGlzIGxhdGVyIGRlcmVmZXJlbmNlZC4gQnkgbW92aW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgaW5uZXJfaXBoYCB0byBhZnRlciBgaXBfdHVubmVsX2VuY2FwKClgLCB0aGUgcGF0Y2ggZW5zdXJlcyBpdCBwb2ludHMgdG8gdGhlIGNvcnJlY3QsIHBvdGVudGlhbGx5IHJlYWxsb2NhdGVkIGBza2JgIGhlYWQuXFxuXFxuVXNlLWFmdGVyLWZyZWUgYnVncyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIHBhZGRpbmcsIG9yIGluZm8tbGVhayBpbnZvbHZlZCBpbiB0aGlzIGJ1ZyBvciBpdHMgZml4LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgY2F0Y2hpbmcgdGhpcyBjbGFzcyBvZiBtZW1vcnkgY29ycnVwdGlvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow7wxsn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-21 15:08:31 +0000 UTC FinishedAt: 2026-08-21 15:54:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU", "NET_FOU_IP_TUNNELS", "NET_IPIP", "NET_IPGRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU", "NET_FOU_IP_TUNNELS", "NET_IPIP", "NET_IPGRE" ], "series_id": "47450a63-4e6a-4eaa-bece-76c10beeb0c7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__gue_build_header", "ip_md_tunnel_xmit", "ip_tunnel_xmit" ], "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+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OywKICAgICYjMzQ7TkVUX0ZPVV9JUF9UVU5ORUxTJiMzNDssCiAgICAmIzM0O05FVF9JUElQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3VlX2J1aWxkX2hlYWRlciYjMzQ7LAogICAgJiMzNDtpcF9tZF90dW5uZWxfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF90dW5uZWxfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eS4gVGhlIGZ1bmN0aW9uIGBpcF90dW5uZWxfZW5jYXAoKWAgY2FuIHJlYWxsb2NhdGUgdGhlIGBza2JgIGhlYWQgKGZvciBleGFtcGxlLCB2aWEgYHNrYl9jb3dfaGVhZCgpYCB3aGljaCBpcyBhZGRlZCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyKClgIGJ5IHRoaXMgcGF0Y2gpLiBJZiBgaW5uZXJfaXBoYCBpcyBpbml0aWFsaXplZCBiZWZvcmUgYGlwX3R1bm5lbF9lbmNhcCgpYCBpcyBjYWxsZWQsIGl0IHdpbGwgcG9pbnQgdG8gdGhlIG9sZCwgZnJlZWQgYHNrYmAgaGVhZCwgbGVhZGluZyB0byBhIFVBRiB3aGVuIGBpbm5lcl9pcGhgIGlzIGxhdGVyIGRlcmVmZXJlbmNlZC4gQnkgbW92aW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgaW5uZXJfaXBoYCB0byBhZnRlciBgaXBfdHVubmVsX2VuY2FwKClgLCB0aGUgcGF0Y2ggZW5zdXJlcyBpdCBwb2ludHMgdG8gdGhlIGNvcnJlY3QsIHBvdGVudGlhbGx5IHJlYWxsb2NhdGVkIGBza2JgIGhlYWQuXG5cblVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nLCBvciBpbmZvLWxlYWsgaW52b2x2ZWQgaW4gdGhpcyBidWcgb3IgaXRzIGZpeC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGNhdGNoaW5nIHRoaXMgY2xhc3Mgb2YgbWVtb3J5IGNvcnJ1cHRpb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBieSByZW9yZGVyaW5nIHRoZSBhc3NpZ25tZW50IG9mIGBpbm5lcl9pcGhgIGFmdGVyIGBpcF90dW5uZWxfZW5jYXBgLCB3aGljaCBjYW4gcmVhbGxvY2F0ZSB0aGUgc2tiIGhlYWQuIEl0IGFsc28gYWRkcyBhIGNoZWNrIGZvciBgc2tiX2Nvd19oZWFkYCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgKEZPVS9HVUUgZW5jYXBzdWxhdGlvbiBhbmQgSVAgdHVubmVscykgdGhhdCBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzg0ODFlZmUyNjUxZDBlMzA2ZjIzODhhZWIzZGM2Mjk2ZWJmOGZjZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE1OjUyOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZvdV9jb3JlLmMgYi9uZXQvaXB2NC9mb3VfY29yZS5jXG5pbmRleCBhYjA5ZGZjZGVjYmQ1Li44Y2YwZDQzYWNiNDEyIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZm91X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvZm91X2NvcmUuY1xuQEAgLTk4MCw2ICYjNDM7OTgwLDggQEAgaW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLFxuIFx0XHRcdFx0XHRcdHNrYiwgMCwgMCwgZmFsc2UpO1xuIFxuIFx0aGRybGVuID0gc2l6ZW9mKHN0cnVjdCBndWVoZHIpICYjNDM7IG9wdGxlbjtcbiYjNDM7XHRpZiAoc2tiX2Nvd19oZWFkKHNrYiwgaGRybGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSkpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHNrYl9wdXNoKHNrYiwgaGRybGVuKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF90dW5uZWwuYyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5pbmRleCA5ZDExNGJkNTc1ZjkyLi4yYmQ2ODRlYjJiYTI1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5AQCAtNjA2LDYgJiM0Mzs2MDYsNyBAQCB2b2lkIGlwX21kX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXG4gXHRpZiAoaXBfdHVubmVsX2VuY2FwKHNrYiwgXHUwMDI2dHVuX2luZm8tXHUwMDNlZW5jYXAsIFx1MDAyNnByb3RvLCBcdTAwMjZmbDQpIFx1MDAzYyAwKVxuIFx0XHRnb3RvIHR4X2Vycm9yO1xuJiM0MztcdGlubmVyX2lwaCA9IChjb25zdCBzdHJ1Y3QgaXBoZHIgKilza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKTtcbiBcbiBcdHVzZV9jYWNoZSA9IGlwX3R1bm5lbF9kc3RfY2FjaGVfdXNhYmxlKHNrYiwgdHVuX2luZm8pO1xuIFx0aWYgKHVzZV9jYWNoZSlcbkBAIC03NjUsOCAmIzQzOzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2VuZXQsIFJFQURfT05DRSh0dW5uZWwtXHUwMDNlcGFybXMubGluayksXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2Vmd21hcmssIHNrYl9nZXRfaGFzaChza2IpLCAwKTtcbiBcbiYjNDM7XHRkZiA9IHRubF9wYXJhbXMtXHUwMDNlZnJhZ19vZmY7XG4mIzQzO1x0dHRsID0gdG5sX3BhcmFtcy1cdTAwM2V0dGw7XG4mIzQzO1xuIFx0aWYgKGlwX3R1bm5lbF9lbmNhcChza2IsIFx1MDAyNnR1bm5lbC1cdTAwM2VlbmNhcCwgXHUwMDI2cHJvdG9jb2wsIFx1MDAyNmZsNCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4mIzQzO1x0aW5uZXJfaXBoID0gKGNvbnN0IHN0cnVjdCBpcGhkciAqKXNrYl9pbm5lcl9uZXR3b3JrX2hlYWRlcihza2IpO1xuIFxuIFx0aWYgKGNvbm5lY3RlZCBcdTAwMjZcdTAwMjYgbWQpIHtcbiBcdFx0dXNlX2NhY2hlID0gaXBfdHVubmVsX2RzdF9jYWNoZV91c2FibGUoc2tiLCB0dW5faW5mbyk7XG5AQCAtNzk5LDcgJiM0Mzs4MDQsNiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4gXHR9XG4gXG4tXHRkZiA9IHRubF9wYXJhbXMtXHUwMDNlZnJhZ19vZmY7XG4gXHRpZiAocGF5bG9hZF9wcm90b2NvbCA9PSBodG9ucyhFVEhfUF9JUCkgXHUwMDI2XHUwMDI2ICF0dW5uZWwtXHUwMDNlaWdub3JlX2RmKVxuIFx0XHRkZiB8PSAoaW5uZXJfaXBoLVx1MDAzZWZyYWdfb2ZmIFx1MDAyNiBodG9ucyhJUF9ERikpO1xuIFxuQEAgLTgyMSw3ICYjNDM7ODI1LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0fVxuIFxuIFx0dG9zID0gaXBfdHVubmVsX2Vjbl9lbmNhcCh0b3MsIGlubmVyX2lwaCwgc2tiKTtcbi1cdHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO1xuIFx0aWYgKHR0bCA9PSAwKSB7XG4gXHRcdGlmIChwYXlsb2FkX3Byb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSlcbiBcdFx0XHR0dGwgPSBpbm5lcl9pcGgtXHUwMDNldHRsO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRk9VJiMzNDssCiAgICAmIzM0O05FVF9GT1VfSVBfVFVOTkVMUyYjMzQ7LAogICAgJiMzNDtORVRfSVBJUCYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2d1ZV9idWlsZF9oZWFkZXImIzM0OywKICAgICYjMzQ7aXBfbWRfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXBfdHVubmVsX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGJ5IHJlb3JkZXJpbmcgdGhlIGFzc2lnbm1lbnQgb2YgYGlubmVyX2lwaGAgYWZ0ZXIgYGlwX3R1bm5lbF9lbmNhcGAsIHdoaWNoIGNhbiByZWFsbG9jYXRlIHRoZSBza2IgaGVhZC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgZm9yIGBza2JfY293X2hlYWRgIGluIGBfX2d1ZV9idWlsZF9oZWFkZXJgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGNvcmUgbmV0d29ya2luZyBsb2dpYyAoRk9VL0dVRSBlbmNhcHN1bGF0aW9uIGFuZCBJUCB0dW5uZWxzKSB0aGF0IGFyZSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ODQ4MWVmZTI2NTFkMGUzMDZmMjM4OGFlYjNkYzYyOTZlYmY4ZmNkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTU6NTI6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9mb3VfY29yZS5jIGIvbmV0L2lwdjQvZm91X2NvcmUuYwppbmRleCBhYjA5ZGZjZGVjYmQ1Li44Y2YwZDQzYWNiNDEyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZvdV9jb3JlLmMKQEAgLTk4MCw2ICYjNDM7OTgwLDggQEAgaW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLAogCQkJCQkJc2tiLCAwLCAwLCBmYWxzZSk7CiAKIAloZHJsZW4gPSBzaXplb2Yoc3RydWN0IGd1ZWhkcikgJiM0Mzsgb3B0bGVuOwomIzQzOwlpZiAoc2tiX2Nvd19oZWFkKHNrYiwgaGRybGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSkpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKIAogCXNrYl9wdXNoKHNrYiwgaGRybGVuKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdHVubmVsLmMgYi9uZXQvaXB2NC9pcF90dW5uZWwuYwppbmRleCA5ZDExNGJkNTc1ZjkyLi4yYmQ2ODRlYjJiYTI1IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF90dW5uZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF90dW5uZWwuYwpAQCAtNjA2LDYgJiM0Mzs2MDYsNyBAQCB2b2lkIGlwX21kX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAlpZiAoaXBfdHVubmVsX2VuY2FwKHNrYiwgJmFtcDt0dW5faW5mby0mZ3Q7ZW5jYXAsICZhbXA7cHJvdG8sICZhbXA7Zmw0KSAmbHQ7IDApCiAJCWdvdG8gdHhfZXJyb3I7CiYjNDM7CWlubmVyX2lwaCA9IChjb25zdCBzdHJ1Y3QgaXBoZHIgKilza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKTsKIAogCXVzZV9jYWNoZSA9IGlwX3R1bm5lbF9kc3RfY2FjaGVfdXNhYmxlKHNrYiwgdHVuX2luZm8pOwogCWlmICh1c2VfY2FjaGUpCkBAIC03NjUsOCAmIzQzOzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgdHVubmVsLSZndDtuZXQsIFJFQURfT05DRSh0dW5uZWwtJmd0O3Bhcm1zLmxpbmspLAogCQkJICAgIHR1bm5lbC0mZ3Q7ZndtYXJrLCBza2JfZ2V0X2hhc2goc2tiKSwgMCk7CiAKJiM0MzsJZGYgPSB0bmxfcGFyYW1zLSZndDtmcmFnX29mZjsKJiM0MzsJdHRsID0gdG5sX3BhcmFtcy0mZ3Q7dHRsOwomIzQzOwogCWlmIChpcF90dW5uZWxfZW5jYXAoc2tiLCAmYW1wO3R1bm5lbC0mZ3Q7ZW5jYXAsICZhbXA7cHJvdG9jb2wsICZhbXA7Zmw0KSAmbHQ7IDApCiAJCWdvdG8gdHhfZXJyb3I7CiYjNDM7CWlubmVyX2lwaCA9IChjb25zdCBzdHJ1Y3QgaXBoZHIgKilza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKTsKIAogCWlmIChjb25uZWN0ZWQgJmFtcDsmYW1wOyBtZCkgewogCQl1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTsKQEAgLTc5OSw3ICYjNDM7ODA0LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQlnb3RvIHR4X2Vycm9yOwogCX0KIAotCWRmID0gdG5sX3BhcmFtcy0mZ3Q7ZnJhZ19vZmY7CiAJaWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApICZhbXA7JmFtcDsgIXR1bm5lbC0mZ3Q7aWdub3JlX2RmKQogCQlkZiB8PSAoaW5uZXJfaXBoLSZndDtmcmFnX29mZiAmYW1wOyBodG9ucyhJUF9ERikpOwogCkBAIC04MjEsNyAmIzQzOzgyNSw2IEBAIHZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl9CiAKIAl0b3MgPSBpcF90dW5uZWxfZWNuX2VuY2FwKHRvcywgaW5uZXJfaXBoLCBza2IpOwotCXR0bCA9IHRubF9wYXJhbXMtJmd0O3R0bDsKIAlpZiAodHRsID09IDApIHsKIAkJaWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQogCQkJdHRsID0gaW5uZXJfaXBoLSZndDt0dGw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjIKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0ODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVHVubmVsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L2lwdjQvZm91X2NvcmUuY2AgYW5kIGBuZXQvaXB2NC9pcF90dW5uZWwuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgdGhlIGVuY2Fwc3VsYXRpb24gb2YgcGFja2V0cywgc3BlY2lmaWNhbGx5IHdpdGggR2VuZXJpYyBVRFAgRW5jYXBzdWxhdGlvbiAoR1VFKSBhbmQgSVAtaW4tSVAgdHVubmVscy4KCkluIGBmb3VfY29yZS5jYCwgdGhlIHBhdGNoIGFkZHMgYSBgc2tiX2Nvd19oZWFkYCBjYWxsIGJlZm9yZSBgc2tiX3B1c2hgLiBUaGlzIHRlbGxzIG1lIHdlJiMzOTtyZSBwb3RlbnRpYWxseSBtYWtpbmcgYSBjb3B5LW9uLXdyaXRlIG9mIHRoZSBTS0ImIzM5O3MgaGVhZC4gVGhhdCBzdWdnZXN0cyB3ZSBtaWdodCBiZSBtb2RpZnlpbmcgdGhlIHBhY2tldCBoZWFkZXIgaW4gcGxhY2UsIHdoaWNoIGlzIGZpbmUsIGJ1dCBuZWVkcyB0byBiZSBoYW5kbGVkIGNhcmVmdWxseS4gVGhlIHN1YnNlcXVlbnQgYHNrYl9wdXNoYCBpcyBzdGFuZGFyZCBwcmFjdGljZSBmb3IgYWRkaW5nIHRoZSBHVUUgaGVhZGVyLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0IGlzIGluIGBpcF90dW5uZWwuY2AuIFRoZXJlIGFyZSB0d28gb2NjdXJyZW5jZXMgd2hlcmUgYGlwX3R1bm5lbF9lbmNhcGAgaXMgY2FsbGVkLiBUaGUgcGF0Y2ggYWRkcyBhIGxpbmUgd2hpY2ggY2FzdHMgYSBwb2ludGVyIHRvIGBza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKWAgdG8gdGhlIGBpbm5lcl9pcGhgIHZhcmlhYmxlLCBidXQgdGhlIHBhdGNoIHJlbW92ZXMgYGRmID0gdG5sX3BhcmFtcy0mZ3Q7ZnJhZ19vZmY7YCBhbmQgYHR0bCA9IHRubF9wYXJhbXMtJmd0O3R0bDtgIGZyb20gYmVsb3cgdGhlIGBpcF90dW5uZWxfZW5jYXBgIGZ1bmN0aW9uLgoKTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHRoaXMgd2FzIGEgcG90ZW50aWFsIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWUuIFRoZSBsb2dpYyBzdWdnZXN0ZWQgdGhhdCBgaXBfdHVubmVsX2VuY2FwYCBtaWdodCByZWFsbG9jYXRlIHRoZSBTS0ImIzM5O3MgYnVmZmVyIChlc3BlY2lhbGx5IGlmIHRoZSBHVUUgaGVhZGVyIGhhZCB0byBiZSBjb25zdHJ1Y3RlZCwgd2hpY2ggd291bGQgY2FsbCBgc2tiX2Nvd19oZWFkYCksIGFuZCBpZiBgaW5uZXJfaXBoYCB3ZXJlIHJlYWQgKmJlZm9yZSogdGhlIGVuY2Fwc3VsYXRpb24sIGl0IGNvdWxkIHBvaW50IHRvIGdhcmJhZ2UuIEhvd2V2ZXIsIEkgbm93IHJlYWxpemUgdGhlIGNvZGUgcmVhZHMgYGlubmVyX2lwaGAgKmFmdGVyKiB0aGUgYGlwX3R1bm5lbF9lbmNhcGAgY2FsbC4gVGhpcyBkb2VzbiYjMzk7dCBlbnRpcmVseSBtYWtlIHNlbnNlLgoKSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEkgd2FudCB0byBjaGVjayBob3cgYGlwX3R1bm5lbF9lbmNhcGAgaXRzZWxmIG1pZ2h0IGJlIHJlYWxsb2NhdGluZyB0aGUgU0tCLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHNrYl9jb3dfaGVhZGAgaXMgZG9pbmcgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAuIEkmIzM5O2xsIGFsc28gd2FudCB0byBsb29rIGF0IGBpcF9tZF90dW5uZWxfeG1pdGAgYW5kIGBpcF90dW5uZWxfeG1pdGAuIExldCBtZSBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24uLi4gSSBuZWVkIHRvIHNlZSBpZiB0aGUgcmVtb3ZhbCBvZiB0aGUgbGluZXMgaGFzIHNvbWUgY29uc2VxdWVuY2UgSSYjMzk7bSBub3Qgc2VlaW5nIGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fZ3VlX2J1aWxkX2hlYWRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9mb3UuaD0xNT1pbnQgX19mb3VfYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF90dW5uZWxfZW5jYXAgKmUsXG5pbmNsdWRlL25ldC9mb3UuaC0xNi1cdFx0ICAgICAgIHU4ICpwcm90b2NvbCwgX19iZTE2ICpzcG9ydCwgaW50IHR5cGUpO1xuaW5jbHVkZS9uZXQvZm91Lmg6MTc6aW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLFxuaW5jbHVkZS9uZXQvZm91LmgtMTgtXHRcdCAgICAgICB1OCAqcHJvdG9jb2wsIF9fYmUxNiAqc3BvcnQsIGludCB0eXBlKTtcbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jPTk1ND1FWFBPUlRfU1lNQk9MKF9fZm91X2J1aWxkX2hlYWRlcik7XG5uZXQvaXB2NC9mb3VfY29yZS5jLTk1NS1cbm5ldC9pcHY0L2ZvdV9jb3JlLmM6OTU2OmludCBfX2d1ZV9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtOTU3LVx0XHQgICAgICAgdTggKnByb3RvY29sLCBfX2JlMTYgKnNwb3J0LCBpbnQgdHlwZSlcbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jLTEwMjgtfVxubmV0L2lwdjQvZm91X2NvcmUuYzoxMDI5OkVYUE9SVF9TWU1CT0woX19ndWVfYnVpbGRfaGVhZGVyKTtcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtMTAzMC1cbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jPTEwNjk9c3RhdGljIGludCBndWVfYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF90dW5uZWxfZW5jYXAgKmUsXG4tLVxubmV0L2lwdjQvZm91X2NvcmUuYy0xMDc2LVxubmV0L2lwdjQvZm91X2NvcmUuYzoxMDc3Olx0ZXJyID0gX19ndWVfYnVpbGRfaGVhZGVyKHNrYiwgZSwgcHJvdG9jb2wsIFx1MDAyNnNwb3J0LCB0eXBlKTtcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtMTA3OC1cdGlmIChlcnIpXG4tLVxubmV0L2lwdjYvZm91Ni5jPTU3PXN0YXRpYyBpbnQgZ3VlNl9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcbi0tXG5uZXQvaXB2Ni9mb3U2LmMtNjQtXG5uZXQvaXB2Ni9mb3U2LmM6NjU6XHRlcnIgPSBfX2d1ZV9idWlsZF9oZWFkZXIoc2tiLCBlLCBwcm90b2NvbCwgXHUwMDI2c3BvcnQsIHR5cGUpO1xubmV0L2lwdjYvZm91Ni5jLTY2LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjQ5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IGRpZ2dpbmcgaW50byBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eSDigJMgRk9VL0dVRSBlbmNhcHN1bGF0aW9uIGFuZCBJUCB0dW5uZWxzLCB0byBiZSBwcmVjaXNlLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRoYXQgYHNrYl9jb3dfaGVhZGAgY2FsbCB3aXRoaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAgYW5kIHRoZSByZW9yZGVyaW5nIG9mIHRoZSBgaW5uZXJfaXBoYCBhc3NpZ25tZW50cyBpbiBgaXBfdHVubmVsX3htaXRgIGFuZCBgaXBfbWRfdHVubmVsX3htaXRgIGFyZSB0aGUgcmVkIGZsYWdzLiBUaGVzZSBhcmUgKmZ1bmN0aW9uYWwqIGNoYW5nZXMsIGFuZCB0aGF0IHNjcmVhbXMgJiMzNDtmdXp6IG1lJiMzNDsgYXQgdGhlIHRvcCBvZiBteSBsdW5ncy4gVGltZSB0byBwdXQgbXkgZnV6emluZyBoYXQgb24hCgpOb3csIGJlZm9yZSBJIGNhbiByZWFsbHkgZGl2ZSBpbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBpbGF0aW9uIGNvbmRpdGlvbnMuIExldCYjMzk7cyBzZWUuLi4gYG5ldC9pcHY0L2ZvdV9jb3JlLmNgIGlzIGdvaW5nIHRvIGJlIGNvbXBpbGVkIGlmIGBDT05GSUdfTkVUX0ZPVWAgaXMgc2V0LiBBbmQgZm9yIGBuZXQvaXB2NC9pcF90dW5uZWwuY2AsIGl04oCZcyB0aGUgdXN1YWwgc3VzcGVjdHM6IGBDT05GSUdfTkVUX0lQSVBgLCBgQ09ORklHX05FVF9JUEdSRWAsIGFuZCBzbyBvbi4gUmlnaHQuIEdvdCBpdC4gTm93IEkgY2FuIGJ1aWxkIHRoZSByaWdodCBjb25maWd1cmF0aW9ucyB0byBnZXQgdGhpcyB1bmRlciB0ZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZvdV9jb3JlXFwubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT0yNj1ncmUteSA6PSBncmVfZGVtdXgub1xubmV0L2lwdjQvTWFrZWZpbGU6Mjc6Zm91LXkgOj0gZm91X2NvcmUubyBmb3VfbmwubyBmb3VfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlLTI4LW9iai0kKENPTkZJR19ORVRfRk9VKSAmIzQzOz0gZm91Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzQ5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IExldmVyYWdpbmcgdGhlIGBORVRfRk9VYCBSZXF1aXJlbWVudCoqCgpSaWdodCwgc28gYE5FVF9GT1VgIGlzIGRlZmluaXRlbHkgYSBrZXkgZmFjdG9yIGluIHRoaXMgc2l0dWF0aW9uLiBJdCYjMzk7cyB0aGUgbHluY2hwaW4sIHRoZSBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgdGllcyBpbnRvIHRoZSBsYXJnZXIgcGljdHVyZS4gSSYjMzk7bSBnb2luZyB0byBuZWVkIHRoaXMgZm9yIHN1cmUuIE5vdywgd2hlcmUgYW0gSSBnb2luZyB0byBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBpc3N1ZT8gV2FpdCwgSSB0aGluayBJIGtub3cgd2hlcmUgdG8gZ28gbmV4dC4gTGV0IG1lIHRoaW5rIGFib3V0IHRoYXQsIGZpcnN0LiBXaGF0IGFib3V0IHRoYXQgYGlwX3R1bm5lbC5jYCBmaWxlPyBDb3VsZCB0aGF0IGJlIGhlbHBmdWw/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBfdHVubmVsXFwubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE4LVxubmV0L2lwdjQvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX05FVF9JUF9UVU5ORUwpICYjNDM7PSBpcF90dW5uZWwub1xubmV0L2lwdjQvTWFrZWZpbGUtMjAtb2JqLSQoQ09ORklHX1NZU0NUTCkgJiM0Mzs9IHN5c2N0bF9uZXRfaXB2NC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA0MAoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBUdW5uZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgdGhlIGBORVRfSVBfVFVOTkVMYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBiZWluZyBwdWxsZWQgaW4gYnkgdmFyaW91cyB0dW5uZWwgY29uZmlndXJhdGlvbnMuIE15IG5leHQgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIGludG8gdGhlIHNvdXJjZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG9wdGlvbiAqcmVhbGx5KiBkb2VzIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gSSYjMzk7bGwgaGVhZCBvdmVyIHRvIGBuZXQvaXB2NC9LY29uZmlnYCB0byBleGFtaW5lIGBORVRfSVBfVFVOTkVMYC4gVGhhdCYjMzk7cyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCDigJMgYG5ldC9pcHY0YCBpcyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIElQdjQtcmVsYXRlZCBuZXR3b3JraW5nIGNvbmZpZ3VyYXRpb24sIGFuZCBgS2NvbmZpZ2AgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHB1cnBvc2Ugb2YgdGhlc2Ugb3B0aW9ucy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBwdXJwb3NlLCBhbmQgd2hhdCB0aGlzIG9wdGlvbiBlbmFibGVzIGFuZCBkaXNhYmxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUF9UVU5ORUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xODA9Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTg1LVxubmV0L2lwdjQvS2NvbmZpZzoxODY6Y29uZmlnIE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMTg3LVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM1MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBUcmlzdGF0ZSBEZXBlbmRlbmN5KioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgdHJpc3RhdGUsIG1lYW5pbmcgaXQmIzM5O3MgZGVwZW5kZW50IG9uIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJdCYjMzk7cyBub3QgYSBzdGFuZGFsb25lLCBzZWxmLXNlbGVjdGluZyBjaG9pY2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1dobyYjMzk7cyBwdWxsaW5nIHRoZSBzdHJpbmdzIG9uIHRoaXMgb25lPyYjMzQ7LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyBgTkVUX0lQX1RVTk5FTGAuIFRpbWUgdG8gZGlnIGluIGFuZCB0cmFjZSB0aG9zZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZWxlY3Rpb24gcGF0aCB0byB0cnVseSBncmFzcCBpdHMgcm9sZSBhbmQgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgc3lzdGVtJiMzOTtzIG92ZXJhbGwgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGNvbm5lY3RlZCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9JUF9UVU5ORUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0xNjQtXHRzZWxlY3QgSU5FVF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWc6MTY1Olx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMTY2LVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MTkyPWNvbmZpZyBORVRfSVBHUkVcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE5NC1cdGRlcGVuZHMgb24gTkVUX0lQR1JFX0RFTVVYXG5uZXQvaXB2NC9LY29uZmlnOjE5NTpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTE5Ni1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMwND1jb25maWcgTkVUX0lQVlRJXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMDYtXHRzZWxlY3QgSU5FVF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWc6MzA3Olx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMzA4LVx0c2VsZWN0IFhGUk1cbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMxNj1jb25maWcgTkVUX1VEUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMzE3LVx0dHJpc3RhdGVcbm5ldC9pcHY0L0tjb25maWc6MzE4Olx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctMzE5LVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNTA9Y29uZmlnIElQVjZfVlRJXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNTItXHRzZWxlY3QgSVBWNl9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTUzOlx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMTU0LVx0c2VsZWN0IFhGUk1cbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE2Mj1jb25maWcgSVBWNl9TSVRcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE2NC1cdHNlbGVjdCBJTkVUX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZzoxNjU6XHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0xNjYtXHRzZWxlY3QgSVBWNl9ORElTQ19OT0RFVFlQRVxuLS1cbm5ldC9pcHY2L0tjb25maWc9MjEwPWNvbmZpZyBJUFY2X0dSRVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjEyLVx0c2VsZWN0IElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnOjIxMzpcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIxNC1cdGRlcGVuZHMgb24gTkVUX0lQR1JFX0RFTVVYXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNDIKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIGNvbnNpZGVyYXRpb25zOgoKKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgVHVubmVsaW5nIE9wdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gVGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHR1bm5lbGluZyBwcm90b2NvbHMsIGBORVRfSVBJUGAsIGBORVRfSVBHUkVgLCBhbmQgYE5FVF9VRFBfVFVOTkVMYCBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBzb2xpZCBvcHRpb25zLiBUaGV5JiMzOTtyZSBhbGwgcHJldHR5IHN0YW5kYXJkIGFuZCB3ZWxsLXVuZGVyc3Rvb2QuIE5vdywgdGhhdCBgTkVUX0ZPVWAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaW50cmlndWluZzsgaXQgc2VlbXMgdG8gYmUgbGlua2VkIHRvIGBORVRfVURQX1RVTk5FTGAgZGlyZWN0bHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlc2UgY29uZmlndXJhdGlvbiBpdGVtcyBpcyBhY2N1cmF0ZS4gVGhlIGRlcGVuZGVuY3kgY2hhaW4gaXMgY2xlYXIgZW5vdWdoIHRoYXQgSSBzaG91bGQgZ28gYmFjayBhbmQgcmV2aWV3IGhvdyBgTkVUX0ZPVWAgc3BlY2lmaWNhbGx5IGludGVyYWN0cyB3aXRoIHRob3NlIG90aGVyIGNvbmZpZ3VyYXRpb25zLCB0byBzZWUgaWYgYW55dGhpbmcgZ2V0cyBzZXQgb3Igc2VsZWN0ZWQgYmFzZWQgb24gaXRzIHZhbHVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0ZPVSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTMxNj1jb25maWcgTkVUX1VEUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMyMC1cbm5ldC9pcHY0L0tjb25maWc6MzIxOmNvbmZpZyBORVRfRk9VXG5uZXQvaXB2NC9LY29uZmlnLTMyMi1cdHRyaXN0YXRlIFwmIzM0O0lQOiBGb28gKElQIHByb3RvY29scykgb3ZlciBVRFBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMyOS1cbm5ldC9pcHY0L0tjb25maWc6MzMwOmNvbmZpZyBORVRfRk9VX0lQX1RVTk5FTFNcbm5ldC9pcHY0L0tjb25maWctMzMxLVx0Ym9vbCBcJiMzNDtJUDogRk9VIGVuY2Fwc3VsYXRpb24gb2YgSVAgdHVubmVsc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTMyCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipBbmFseXppbmcgYE5FVF9GT1VgIFNlbGVjdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgd2hhdCB0aGUgYE5FVF9GT1VgIHNlbGVjdGlvbiBjcml0ZXJpYSBoYXZlIHlpZWxkZWQuIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgb3V0cHV0IGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgYmFzZWQgb24gd2hhdCBgTkVUX0ZPVWAgaXMgbWVhbnQgdG8gY2FwdHVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGFyZSB0aGUgcmVzdWx0cyBhcyBleHBlY3RlZCwgb3IgYXJlIHRoZXJlIGFueSBhbm9tYWxpZXMgdGhhdCByZXF1aXJlIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbj8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCBwb3RlbnRpYWwgYmlhc2VzLCBlZGdlIGNhc2VzLCBvciB1bmZvcmVzZWVuIGludGVyYWN0aW9ucyB3aXRoaW4gdGhlIG1vZGVsIHRoYXQgbWlnaHQgZXhwbGFpbiBhbnkgZGl2ZXJnZW5jZSBmcm9tIG15IHByaW9yIGFzc3VtcHRpb25zLiBUaGlzIGFsc28gYnJpbmdzIHVwIHdoYXQgJiMzNDtORVRfRk9VJiMzNDsgaXMgc2V0IHRvIGRvLCBzbyBJIGhhdmUgYSBmcmFtZSBvZiByZWZlcmVuY2UuIFRoaXMgaXMgZ29pbmcgdG8gYmUgcXVpY2sgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9GT1UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTY2PUNPTkZJR19ORVRfSVBWVEk9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjY3OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTY4LUNPTkZJR19JTkVUX0FIPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnPTYyPUNPTkZJR19ORVRfSVBWVEk9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZzo2MzpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWctNjQtQ09ORklHX0lORVRfQUg9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZz02OT1DT05GSUdfTkVUX0lQVlRJPW1cbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZzo3MDpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZy03MS1DT05GSUdfSU5FVF9BSD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnPTU5PUNPTkZJR19ORVRfSVBWVEk9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnOjYwOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnLTYxLUNPTkZJR19JTkVUX0FIPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc9NjE9Q09ORklHX05FVF9JUFZUST1tXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWc6NjI6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWctNjMtQ09ORklHX0lORVRfQUg9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWc9NjA9Q09ORklHX05FVF9JUFZUST1tXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnOjYxOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZy02Mi1DT05GSUdfSU5FVF9BSD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTgwPUNPTkZJR19ORVRfSVBWVEk9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnOjgxOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTgyLUNPTkZJR19JTkVUX0FIPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9tdm1lMTQ3X2RlZmNvbmZpZz01OD1DT05GSUdfTkVUX0lQVlRJPW1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNDdfZGVmY29uZmlnOjU5OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctNjAtQ09ORklHX0lORVRfQUg9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL212bWUxNnhfZGVmY29uZmlnPTU5PUNPTkZJR19ORVRfSVBWVEk9bVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWc6NjA6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XG5hcmNoL202OGsvY29uZmlncy9tdm1lMTZ4X2RlZmNvbmZpZy02MS1DT05GSUdfSU5FVF9BSD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz02MD1DT05GSUdfTkVUX0lQVlRJPW1cbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWc6NjE6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnLTYyLUNPTkZJR19JTkVUX0FIPW1cbi0tXG5hcmNoL202OGsvY29uZmlncy9zdW4zX2RlZmNvbmZpZz01NT1DT05GSUdfTkVUX0lQVlRJPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjNfZGVmY29uZmlnOjU2OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWctNTctQ09ORklHX0lORVRfQUg9bVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZz01Nj1DT05GSUdfTkVUX0lQVlRJPW1cbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZzo1NzpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZy01OC1DT05GSUdfSU5FVF9BSD1tXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Mzg2ND1icmNtZl9ub3RpZnlfc2NoZWRfc2Nhbl9yZXN1bHRzKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTM4OTUtXHQvKiBQRk4gZXZlbnQgaXMgbGltaXRlZCB0byBmaXQgNTEyIGJ5dGVzIHNvIHdlIG1heSBnZXRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjM4OTY6XHQgKiBtdWx0aXBsZSBORVRfRk9VTkQgZXZlbnRzLiBGb3Igbm93IHBsYWNlIGEgd2FybmluZyBoZXJlLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMzg5Ny1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTQxNjY9c3RhdGljIHMzMiBicmNtZl9jZmc4MDIxMV9yZXN1bWUoc3RydWN0IHdpcGh5ICp3aXBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00MTg0LVx0XHRcdGJyY21mX2NmZzgwMjExX3NjaGVkX3NjYW5fc3RvcChjZmctXHUwMDNld2lwaHksIGlmcC1cdTAwM2VuZGV2LCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjQxODU6XHRcdFx0YnJjbWZfZndlaF91bnJlZ2lzdGVyKGNmZy1cdTAwM2VwdWIsIEJSQ01GX0VfUEZOX05FVF9GT1VORCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo0MTg2Olx0XHRcdGJyY21mX2Z3ZWhfcmVnaXN0ZXIoY2ZnLVx1MDAzZXB1YiwgQlJDTUZfRV9QRk5fTkVUX0ZPVU5ELFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNDE4Ny1cdFx0XHRcdFx0ICAgIGJyY21mX25vdGlmeV9zY2hlZF9zY2FuX3Jlc3VsdHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTQxOTQ9c3RhdGljIHZvaWQgYnJjbWZfY29uZmlndXJlX3dvd2woc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00MjMxLVx0XHQvKiBOb3cgcmVyb3V0ZSB0aGUgZXZlbnQgZm9yIFBGTiB0byB0aGUgd293bCBmdW5jdGlvbi4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjQyMzI6XHRcdGJyY21mX2Z3ZWhfdW5yZWdpc3RlcihjZmctXHUwMDNlcHViLCBCUkNNRl9FX1BGTl9ORVRfRk9VTkQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDIzMzpcdFx0YnJjbWZfZndlaF9yZWdpc3RlcihjZmctXHUwMDNlcHViLCBCUkNNRl9FX1BGTl9ORVRfRk9VTkQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00MjM0LVx0XHRcdFx0ICAgIGJyY21mX3dvd2xfbmRfcmVzdWx0cyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Njc3Nz1zdGF0aWMgdm9pZCBicmNtZl9yZWdpc3Rlcl9ldmVudF9oYW5kbGVycyhzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY3OTYtXHRcdFx0ICAgIGJyY21mX25vdGlmeV9jb25uZWN0X3N0YXR1cyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2Nzk3Olx0YnJjbWZfZndlaF9yZWdpc3RlcihjZmctXHUwMDNlcHViLCBCUkNNRl9FX1BGTl9ORVRfRk9VTkQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02Nzk4LVx0XHRcdCAgICBicmNtZl9ub3RpZnlfc2NoZWRfc2Nhbl9yZXN1bHRzKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZndlaC5oPTE4PXN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md2VoLmgtNTgtXHRCUkNNRl9FTlVNX0RFRihST0FNX1BSRVAsIDMyKSBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Z3ZWguaDo1OTpcdEJSQ01GX0VOVU1fREVGKFBGTl9ORVRfRk9VTkQsIDMzKSBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Z3ZWguaC02MC1cdEJSQ01GX0VOVU1fREVGKFBGTl9ORVRfTE9TVCwgMzQpIFxcXG4tLVxuaW5jbHVkZS9uZXQvZm91LmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuaW5jbHVkZS9uZXQvZm91Lmg6MjojaWZuZGVmIF9fTkVUX0ZPVV9IXG5pbmNsdWRlL25ldC9mb3UuaDozOiNkZWZpbmUgX19ORVRfRk9VX0hcbmluY2x1ZGUvbmV0L2ZvdS5oLTQtXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zMTY9Y29uZmlnIE5FVF9VRFBfVFVOTkVMXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMjAtXG5uZXQvaXB2NC9LY29uZmlnOjMyMTpjb25maWcgTkVUX0ZPVVxubmV0L2lwdjQvS2NvbmZpZy0zMjItXHR0cmlzdGF0ZSBcJiMzNDtJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zMjktXG5uZXQvaXB2NC9LY29uZmlnOjMzMDpjb25maWcgTkVUX0ZPVV9JUF9UVU5ORUxTXG5uZXQvaXB2NC9LY29uZmlnLTMzMS1cdGJvb2wgXCYjMzQ7SVA6IEZPVSBlbmNhcHN1bGF0aW9uIG9mIElQIHR1bm5lbHNcJiMzNDtcbm5ldC9pcHY0L0tjb25maWctMzMyLVx0ZGVwZW5kcyBvbiBORVRfSVBJUCB8fCBORVRfSVBHUkUgfHwgSVBWNl9TSVRcbm5ldC9pcHY0L0tjb25maWc6MzMzOlx0c2VsZWN0IE5FVF9GT1Vcbm5ldC9pcHY0L0tjb25maWctMzM0LVx0aGVscFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlPTI3PWZvdS15IDo9IGZvdV9jb3JlLm8gZm91X25sLm8gZm91X2JwZi5vXG5uZXQvaXB2NC9NYWtlZmlsZToyODpvYmotJChDT05GSUdfTkVUX0ZPVSkgJiM0Mzs9IGZvdS5vXG5uZXQvaXB2NC9NYWtlZmlsZS0yOS1vYmotJChDT05GSUdfTkVUX0lQR1JFX0RFTVVYKSAmIzQzOz0gZ3JlLm9cbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jPTEwMjk9RVhQT1JUX1NZTUJPTChfX2d1ZV9idWlsZF9oZWFkZXIpO1xubmV0L2lwdjQvZm91X2NvcmUuYy0xMDMwLVxubmV0L2lwdjQvZm91X2NvcmUuYzoxMDMxOiNpZmRlZiBDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTXG5uZXQvaXB2NC9mb3VfY29yZS5jLTEwMzItXG4tLVxubmV0L2lwdjQvdWRwX29mZmxvYWQuYz0zNT1zdHJ1Y3QgdWRwX3R1bm5lbF90eXBlX2VudHJ5IHtcbi0tXG5uZXQvaXB2NC91ZHBfb2ZmbG9hZC5jLTQxLVx0XHRcdCAgICAgIElTX0VOQUJMRUQoQ09ORklHX1ZYTEFOKSAqIDIgJiM0MzsgXFxcbm5ldC9pcHY0L3VkcF9vZmZsb2FkLmM6NDI6XHRcdFx0ICAgICAgSVNfRU5BQkxFRChDT05GSUdfTkVUX0ZPVSkgKiAyICYjNDM7IFxcXG5uZXQvaXB2NC91ZHBfb2ZmbG9hZC5jLTQzLVx0XHRcdCAgICAgIElTX0VOQUJMRUQoQ09ORklHX1hGUk0pICogMilcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTIyOD1jb25maWcgSVBWNl9GT1Vcbm5ldC9pcHY2L0tjb25maWctMjI5LVx0dHJpc3RhdGVcbm5ldC9pcHY2L0tjb25maWc6MjMwOlx0ZGVmYXVsdCBORVRfRk9VIFx1MDAyNlx1MDAyNiBJUFY2XG5uZXQvaXB2Ni9LY29uZmlnLTIzMS1cbm5ldC9pcHY2L0tjb25maWc9MjMyPWNvbmZpZyBJUFY2X0ZPVV9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjMzLVx0dHJpc3RhdGVcbm5ldC9pcHY2L0tjb25maWc6MjM0Olx0ZGVmYXVsdCBORVRfRk9VX0lQX1RVTk5FTFMgXHUwMDI2XHUwMDI2IElQVjZfRk9VXG5uZXQvaXB2Ni9LY29uZmlnLTIzNS1cdHNlbGVjdCBJUFY2X1RVTk5FTFxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWc9NzQ9Q09ORklHX05FVF9DTFNfTUFUQ0hBTEw9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZzo3NTpDT05GSUdfTkVUX0ZPVT15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjc2OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy03Ny1DT05GSUdfTkVUX0lQR1JFPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTg2PUNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0hMPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWc6ODc6Q09ORklHX05FVF9GT1U9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZzo4ODpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWctODktQ09ORklHX05FVF9JUEdSRT1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDY5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmV0d29yayBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgbmV0d29yayBjb25maWd1cmF0aW9ucy4gRnJvbSB3aGF0IEkgc2VlLCBgTkVUX0ZPVWAgYW5kIGBORVRfRk9VX0lQX1RVTk5FTFNgIGFyZSBkZWZpbml0ZWx5IHNvbGlkIGNvbmZpZ3VyYXRpb25zLCBnb29kIHN0YXJ0aW5nIHBvaW50cy4gQnV0LCBiZWNhdXNlIGBORVRfRk9VX0lQX1RVTk5FTFNgIGhhcyBzb21lIGRlcGVuZGVuY2llcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgY292ZXJlZC4gUmlnaHQsIHNvIHRoYXQgbWVhbnMgSSBuZWVkIHRvIGFsc28gY2hlY2sgb3V0IGBORVRfSVBJUGAsIG9yIHBvdGVudGlhbGx5IGBORVRfSVBHUkVgLCBvciBldmVuIGBJUFY2X1NJVGAgc2luY2UgdGhleSYjMzk7cmUgYWxsIHJlbGF0ZWQgdG8gdGhlIGBORVRfRk9VX0lQX1RVTk5FTFNgIHNldHVwLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGNsb3NlciBsb29rIGF0IGBORVRfSVBJUGAgYW5kIGBORVRfSVBHUkVgIGFuZCBzZWUgd2hhdCB0aGV5JiMzOTtyZSBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUElQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MTQ5PWNvbmZpZyBJUF9QTlBfUkFSUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTYxLVxubmV0L2lwdjQvS2NvbmZpZzoxNjI6Y29uZmlnIE5FVF9JUElQXG5uZXQvaXB2NC9LY29uZmlnLTE2My1cdHRyaXN0YXRlIFwmIzM0O0lQOiB0dW5uZWxpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0MjUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIGBjb25maWcgTkVUX0lQR1JFYCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSByaWdodCBpbi4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYE5FVF9JUEdSRWAuIEdpdmVuIHRoZSBjb250ZXh0LCBJJiMzOTttIGxpa2VseSBsb29raW5nIGZvciBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIEdSRSAoR2VuZXJpYyBSb3V0aW5nIEVuY2Fwc3VsYXRpb24pIHR1bm5lbHMgd2l0aGluIGEgbmV0d29yayBjb25maWd1cmF0aW9uIOKAkyBwcm9iYWJseSByZWxhdGVkIHRvIGEgTGludXgga2VybmVsIG9yIG5ldHdvcmtpbmcgYXBwbGlhbmNlLiBUaGUgcHJlY2lzZSBtZWFuaW5nIGhpbmdlcyBvbiB0aGUgb3ZlcmFyY2hpbmcgcHJvYmxlbSBJJiMzOTttIHRyeWluZyB0byBzb2x2ZSwgYnV0IEkgbmVlZCB0byBzdGFydCBoZXJlLiBJIHdhbnQgdG8gY29uZmlybSBpZiBHUkUgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmZpZ3VyZWQgaW4gYSBub24tc3RhbmRhcmQgd2F5LgoKRGVwZW5kaW5nIG9uIHdoYXQgSSBmaW5kLCB0aGUgbmV4dCBxdWVzdGlvbnMgaW1tZWRpYXRlbHkgc3ByaW5nIHRvIG1pbmQuIElmIGVuYWJsZWQsIEkmIzM5O2xsIG5lZWQgdG8ga25vdzogQXJlIHRoZSBHUkUgdHVubmVscyBjb25maWd1cmVkIHN0YXRpY2FsbHksIG9yIGFyZSB0aGV5IG1hbmFnZWQgZHluYW1pY2FsbHkgKGUuZy4sIHVzaW5nIGEgcm91dGluZyBwcm90b2NvbCk/IFdoYXQgYXJlIHRoZSB0dW5uZWwgZW5kcG9pbnRzIChzb3VyY2UvZGVzdGluYXRpb24gSVBzKT8gV2hhdCBwcm90b2NvbCBpcyBlbmNhcHN1bGF0ZWQgKGUuZy4sIElQdjQsIElQdjYpPyBXaGF0JiMzOTtzIHRoZSBNVFUgc2V0dGluZyBmb3IgdGhlIHR1bm5lbCBpbnRlcmZhY2U/IEFueSB1c2Ugb2Yga2V5aW5nIG9yIGNoZWNrc3Vtcz8KCklmIGRpc2FibGVkLCBJJiMzOTtsbCBhc3Nlc3Mgd2hldGhlciB0aGF0JiMzOTtzIGV4cGVjdGVkIGJlaGF2aW9yLiBJdCBtYXkgYmUgZHVlIHRvIG90aGVyIGNvbnNpZGVyYXRpb25zLCBzZWN1cml0eSBjb25jZXJucywgb3IgYXJjaGl0ZWN0dXJlIG9mIHRoZSBuZXR3b3JrLiBBIGRpc2FibGluZyBzZXR0aW5nIGNvdWxkIHRyaWdnZXIgYW5vdGhlciBxdWVzdGlvbjogaXMgdGhlcmUgYW5vdGhlciB0eXBlIG9mIHR1bm5lbCBjb25maWd1cmF0aW9uPyBPciwgaXMgR1JFIHNpbXBseSByZWR1bmRhbnQ/IEFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzPwoKRXNzZW50aWFsbHksIEkmIzM5O20gdHJ5aW5nIHRvIGVzdGFibGlzaCBhIGJhc2VsaW5lLiBVbmRlcnN0YW5kaW5nIHRoZSBzdGF0ZSBvZiBgTkVUX0lQR1JFYCBpcyB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcCBmb3IgZGlhZ25vc2luZyBhIEdSRS1yZWxhdGVkIGlzc3VlIG9yIHNldHRpbmcgdXAgYSBuZXcgR1JFIHR1bm5lbC4gSSYjMzk7bSBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgbmV0d29yayYjMzk7cyB0dW5uZWwgYXJjaGl0ZWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0lQR1JFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MTYyPWNvbmZpZyBORVRfSVBJUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTc5LVxubmV0L2lwdjQvS2NvbmZpZzoxODA6Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIGRlbXVsdGlwbGV4ZXJcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTE4Nj1jb25maWcgTkVUX0lQX1RVTk5FTFxuLS1cbm5ldC9pcHY0L0tjb25maWctMTkxLVxubmV0L2lwdjQvS2NvbmZpZzoxOTI6Y29uZmlnIE5FVF9JUEdSRVxubmV0L2lwdjQvS2NvbmZpZy0xOTMtXHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIHR1bm5lbHMgb3ZlciBJUFwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMjA2LVxubmV0L2lwdjQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9JUEdSRV9CUk9BRENBU1Rcbm5ldC9pcHY0L0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtJUDogYnJvYWRjYXN0IEdSRSBvdmVyIElQXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDMxCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEtlcm5lbCBNb2R1bGUgQ29uc2lkZXJhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBpbnRlZ3JhdGluZyB0aGVzZSBuZXcgdHVubmVsaW5nIHByb3RvY29scyBpbnRvIHRoZSBzeXN0ZW0uIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBhcHByb3ByaWF0ZSBrZXJuZWwgc3ltYm9scyBhcmUgZW5hYmxlZC4gSSYjMzk7bGwgYWRkIGBORVRfRk9VYCwgYE5FVF9GT1VfSVBfVFVOTkVMU2AsIGBORVRfSVBJUGAsIGFuZCBgTkVUX0lQR1JFYCB0byB0aGUgbW9kdWxlIGNvbmZpZ3VyYXRpb24uIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4KCk5vdywgdGhlIGNvcmUgb2YgdGhpcyBpbnRlZ3JhdGlvbiBsaWVzIGluIG1vZGlmeWluZyB0aGUgcGFja2V0IGhhbmRsaW5nLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzLCBpdCBzZWVtcyB0aGF0IGBfX2d1ZV9idWlsZF9oZWFkZXJgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiB0aGF0IGhhcyBjaGFuZ2VkLiBBZGRpdGlvbmFsbHksIHRoZXJlIGFyZSBtb2RpZmljYXRpb25zIHRvIGBpcF9tZF90dW5uZWxfeG1pdGAgYW5kIGBpcF90dW5uZWxfeG1pdGAg4oCTIHByb2JhYmx5IGZvciB0aGUgdHJhbnNtaXNzaW9uIGFzcGVjdC4KClRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzIGFib3V0IHN5bWJvbCB2aXNpYmlsaXR5LiBBcmUgdGhlc2UgZnVuY3Rpb25zIGFjY2Vzc2libGUgZnJvbSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBtb2R1bGUgc3lzdGVtPyBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBkaXJlY3RseSBjYWxsIG9yIHVzZSB0aGVtLiBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgX19ndWVfYnVpbGRfaGVhZGVyYCwgYGlwX21kX3R1bm5lbF94bWl0YCBhbmQgYGlwX3R1bm5lbF94bWl0YCBhcmUgYWxsIGV4cG9ydGVkLCB3aGljaCBtZWFucyBJIGNhbiBkaXJlY3RseSB1dGlsaXplIHRoZXNlIGZ1bmN0aW9ucyB3aXRoaW4gbXkgbmV3IG1vZHVsZS4gVGhhdCYjMzk7cyBhIGh1Z2UgcmVsaWVmLCBpdCBtZWFucyB0aGlzIGludGVncmF0aW9uIHNob3VsZCBiZSBmZWFzaWJsZSBhbmQgdGhhdCBJIHdvbiYjMzk7dCBoYXZlIHRvIGp1bXAgdGhyb3VnaCBhbnkgdW5leHBlY3RlZCBob29wcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qaXBfdHVubmVsX3htaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaXBfdHVubmVsLmM9NjcwPXZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF90dW5uZWwuYy04NjItfVxubmV0L2lwdjQvaXBfdHVubmVsLmM6ODYzOkVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF94bWl0KTtcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTg2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE1NTgKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGl2aW5nIGludG8gYGlwX21kX3R1bm5lbF94bWl0YCoqCgpBbHJpZ2h0LCB0aW1lIHRvIHJldmlzaXQgYGlwX21kX3R1bm5lbF94bWl0YC4gSSBuZWVkIHRvIGdldCBiYWNrIGluIHRoZSB3ZWVkcyB3aXRoIHRoaXMgZnVuY3Rpb24uIEl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIElQLWluLUlQIHR1bm5lbCB0cmFuc21pc3Npb24gcHV6emxlLCBhbmQgSSYjMzk7bSBpdGNoaW5nIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgcGVyZm9ybWFuY2UgYm90dGxlbmVjayBJIGNhbiBpbXByb3ZlLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGl04oCZcyBoYW5kbGluZyB0aGUgcGFja2V0IGNvbnN0cnVjdGlvbiBlZmZpY2llbnRseS4gQXJlIHRoZSBtZW1vcnkgY29waWVzIG9wdGltaXplZD8gQW55IHVubmVjZXNzYXJ5IHN5c3RlbSBjYWxscz8gV2hhdCBhYm91dCBhbGlnbm1lbnQgaXNzdWVzIGltcGFjdGluZyBDUFUgY2FjaGUgdXNhZ2U/IFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIChvciB0aGUgcGFpbikgaGFwcGVucywgc28gSSBuZWVkIGEgY2xlYXIgbWVudGFsIHBpY3R1cmUgb2YgaXRzIGlubmVyIHdvcmtpbmdzLiBJ4oCZbGwgc3RhcnQgYnkgcmV2aWV3aW5nIHRoZSBjb2RlIGFnYWluIHdpdGggYSBmcmVzaCBwZXJzcGVjdGl2ZSwgbWF5YmUgdHJhY2Ugc29tZSBwYWNrZXRzIHRocm91Z2ggdG8gc2VlIGhvdyBpdCBwZXJmb3JtcyBpbiBhIHJlYWwtd29ybGQgc2NlbmFyaW8uIExldOKAmXMgaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIG9yIHdvcnNlLCBidWdzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsb29raW5nIGF0IHRoZSBkYXRhIHN0cnVjdHVyZSBtYW5pcHVsYXRpb24uIFRoZSBoZWFkZXIgY29uc3RydWN0aW9uIGxvZ2ljIGlzIHVzdWFsbHkgd2hlcmUgSSBmaW5kIHN1cnByaXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qaXBfbWRfdHVubmVsX3htaXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaXBfdHVubmVsLmM9NTcxPXZvaWQgaXBfbWRfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF90dW5uZWwuYy02NjctfVxubmV0L2lwdjQvaXBfdHVubmVsLmM6NjY4OkVYUE9SVF9TWU1CT0xfR1BMKGlwX21kX3R1bm5lbF94bWl0KTtcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTY2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NDcKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZCwgaW4gdGhlIGZpcnN0IHBlcnNvbiBhbmQgYXNzdW1pbmcgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGBfX2d1ZV9idWlsZF9oZWFkZXJgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgX19ndWVfYnVpbGRfaGVhZGVyYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGl0cyBwdXJwb3NlLiBHaXZlbiB0aGUgbmFtZSwgSSYjMzk7bSBleHBlY3RpbmcgaXQgcHJvYmFibHkgY29uc3RydWN0cyBvciBtYW5hZ2VzIHNvbWUgaGVhZGVyIGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgR1VFIGZyYW1ld29yaywgYnV0IGEgcXVpY2sgY29uZmlybWF0aW9uIGlzIGFsd2F5cyB3aXNlLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoYXQgaXQgbWlnaHQgaW52b2x2ZSB0YXNrcyBsaWtlOgoKKiAgICoqVmVyc2lvbmluZzoqKiBEb2VzIGl0IGhhbmRsZSB2ZXJzaW9uIGlkZW50aWZpZXJzIGZvciB0aGUgYnVpbHQgYXJ0aWZhY3Q/IFBlcmhhcHMgaXQgZW1iZWRzIHRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgYnVpbGQgdG9vbCBvciBhIGNvbXBvbmVudD8KKiAgICoqRGVwZW5kZW5jaWVzOioqIE1heWJlIGl0IGxpc3RzIHRoZSBkZXBlbmRlbmNpZXMgYmFrZWQgaW50byB0aGUgZmluYWwgb3V0cHV0LiBJdCYjMzk7cyBvZnRlbiBoZWxwZnVsIHRvIGtub3cgdGhlIGV4YWN0IGRlcGVuZGVuY3kgdmVyc2lvbnMgdXNlZCBhdCBidWlsZCB0aW1lLgoqICAgKipNZXRhZGF0YToqKiBEb2VzIGl0IHN0b3JlIGFueSBtZXRhZGF0YSByZWdhcmRpbmcgdGhlIGJ1aWxkIGVudmlyb25tZW50IGl0c2VsZj8gVGhpbmsgYnVpbGQgc3lzdGVtIGRldGFpbHMsIGNvbXBpbGVyIGZsYWdzLCBob3N0bmFtZSwgdGltZXN0YW1wcywgZXRjLj8KKiAgICoqQ2hlY2tzdW1zL0hhc2hlczoqKiBDb3VsZCBpdCBjb21wdXRlIGFuZCBpbmNsdWRlIGNoZWNrc3VtcyBvciBjcnlwdG9ncmFwaGljIGhhc2hlcyBmb3IgaW50ZWdyaXR5IHZlcmlmaWNhdGlvbj8gVGhhdOKAmWQgYmUgYSBzbWFydCBhZGRpdGlvbi4KKiAgICoqRm9ybWF0OioqIEkgYW0gY29uc2lkZXJpbmcgd2hhdCBmb3JtYXQgaXQgdXNlcyBmb3IgdGhlIGhlYWRlci4gSXMgaXQgYSBwbGFpbiB0ZXh0IGZvcm1hdCwgYSBzdHJ1Y3R1cmVkIGZvcm1hdCBsaWtlIEpTT04gb3IgWUFNTCwgb3Igc29tZXRoaW5nIG1vcmUgYmVzcG9rZT8KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBidWlsZCBwcm9jZXNzLiBJcyBpdCBjYWxsZWQgZWFybHksIGxhdGUsIG9yIGF0IGV2ZXJ5IHN0YWdlPyBJcyBpdCBjcml0aWNhbCBmb3IgY29tcGlsYXRpb24sIGxpbmtpbmcsIG9yIHBvc3QtcHJvY2Vzc2luZz8gSSBhbSBub3cgZm9ybWluZyB0aGUgcXVlc3Rpb25zIHRvIGd1aWRlIHRoZSBleGFtaW5hdGlvbjogV2hhdCBpcyBpdCBjYWxsZWQgd2l0aD8gV2hhdCBkb2VzIGl0IHJldHVybj8gV2hhdCBpcyBpdCB1c2VkIGZvcj8gRG9lcyBpdCB3cml0ZSB0byBhIGZpbGUsIG1vZGlmeSBhbiBpbi1tZW1vcnkgc3RydWN0dXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8KCk9uY2UgSSBrbm93IHRoZSBmdW5kYW1lbnRhbCBqb2IsIEkmIzM5O2xsIHRoZW4gbW92ZSB0b3dhcmRzIHVuZGVyc3RhbmRpbmcgdGhlIGRldGFpbHMgb2YgaXRzIGltcGxlbWVudGF0aW9uLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIGNvbXBvbmVudHMgb2YgdGhlIHN5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGZvciBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIHdoaWNoIGFyZSBwcm9iYWJseSB0aGUgZm9sbG93aW5nOgoKKiAgICoqU2VjdXJpdHk6KiogZG9lcyBpdCBhZGQgYW55IHNlY3VyaXR5IGNvbmNlcm5zPwoqICAgKipQZXJmb3JtYW5jZToqKiBjb3VsZCBpdCBpbXBhY3QgYnVpbGQgdGltZXM/CiogICAqKk1haW50YWluYWJpbGl0eToqKiBpcyB0aGUgY29kZSBjbGVhbiBhbmQgd2VsbC1kb2N1bWVudGVkPwoKSSYjMzk7bSBzdGFydGluZyB0aGUgbWVudGFsIGNoZWNrbGlzdC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKl9fZ3VlX2J1aWxkX2hlYWRlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9mb3VfY29yZS5jPTk1Nj1pbnQgX19ndWVfYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF90dW5uZWxfZW5jYXAgKmUsXG4tLVxubmV0L2lwdjQvZm91X2NvcmUuYy0xMDI4LX1cbm5ldC9pcHY0L2ZvdV9jb3JlLmM6MTAyOTpFWFBPUlRfU1lNQk9MKF9fZ3VlX2J1aWxkX2hlYWRlcik7XG5uZXQvaXB2NC9mb3VfY29yZS5jLTEwMzAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNTcxCgkJCQkJCQlvdXRwdXQ6IDE4NQoJCQkJCQkJdGhvdWdodHM6IDIyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBWdWxuZXJhYmlsaXR5IGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBicmVha2Rvd24gb2YgdGhpcyBwYXRjaCwgYXMgSSBzZWUgaXQuIFRoZSBmb2N1cyBzeW1ib2xzIGxvb2sgcHJvbWlzaW5nLCBhbmQgaXQmIzM5O3MgZGVmaW5pdGVseSBhIGZpeCB3b3J0aCBkaWdnaW5nIGludG8uCgpCYXNpY2FsbHksIHRoZXJlJiMzOTtzIGEgYnVnIGluIHRoZSBJUCB0dW5uZWwgZW5jYXBzdWxhdGlvbiBwcm9jZXNzIHdoZXJlIGBpcF90dW5uZWxfZW5jYXBgIG1pZ2h0IHJlYWxsb2NhdGUgdGhlIHNrYiAoc29ja2V0IGJ1ZmZlciksIGFuZCB0aGUgY29kZSB3YXMgcmVhZGluZyBgaW5uZXJfaXBoYCAqYmVmb3JlKiB0aGUgcG90ZW50aWFsIHJlYWxsb2NhdGlvbi4gVGhpcywgYXMgd2Uga25vdywgaXMgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIOKAkyBzb21ldGhpbmcgd2UmIzM5O3ZlIHNlZW4gZXhwbG9pdGVkIGJlZm9yZSwgSSYjMzk7bSBzdXJlLCBhbmQgc29tZXRoaW5nIHdlIGFic29sdXRlbHkgbmVlZCB0byBhZGRyZXNzLiBUaGlzIHBhdGNoIHJlb3JkZXJzIHRoZSBhc3NpZ25tZW50IHNvIHRoYXQgdGhlIHJlYWQgb2YgYGlubmVyX2lwaGAgb2NjdXJzICphZnRlciogYW55IHJlYWxsb2NhdGlvbiwgcHJvdGVjdGluZyB0aGUgYGlubmVyX2lwaGAgcG9pbnRlci4gVGhlIHBhdGNoIGFsc28gaW5jbHVkZXMgYSBjaGVjayBmb3IgYHNrYl9jb3dfaGVhZGAgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgsIHNwZWNpZmljYWxseSB0aGF0IGl0JiMzOTtzIHRvdWNoaW5nIEZPVS9HVUUgZW5jYXBzdWxhdGlvbiBhbmQgSVAgdHVubmVsIGNvcmUgbmV0d29ya2luZyBsb2dpYywgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgZnVuZGFtZW50YWwgcGFja2V0IGhhbmRsaW5nIGhlcmUsIHdoaWNoIG1lYW5zIHRoZXJlJiMzOTtzIGEgaGlnaCBwcm9iYWJpbGl0eSBvZiBmaW5kaW5nIGlzc3VlcyB0aGF0IGNvdWxkIGxlYWQgdG8gc2VyaW91cyB2dWxuZXJhYmlsaXRpZXMuCgpJbiBzdW1tYXJ5LCBJJiMzOTttIG1hcmtpbmcgdGhpcyBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYCBiZWNhdXNlIGl0IGRpcmVjdGx5IGltcGFjdHMgY3J1Y2lhbCBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgYW5kIGFkZHJlc3NlcyBhIGNsZWFyIG1lbW9yeSBzYWZldHkgaXNzdWUuIFRoZSBmb2N1cyBzeW1ib2xzIEkmIzM5O20ga2V5aW5nIG9uIGFyZTogYF9fZ3VlX2J1aWxkX2hlYWRlcmAsIGBpcF9tZF90dW5uZWxfeG1pdGAsIGFuZCBgaXBfdHVubmVsX3htaXRgLiBXZSBzaG91bGQgYWxzbyBlbnN1cmUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZCBmb3IgY29tcHJlaGVuc2l2ZSB0ZXN0aW5nOiBgTkVUX0ZPVWAsIGBORVRfRk9VX0lQX1RVTk5FTFNgLCBgTkVUX0lQSVBgLCBhbmQgYE5FVF9JUEdSRWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIxIDE1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRk9VJiMzNDssCiAgICAmIzM0O05FVF9GT1VfSVBfVFVOTkVMUyYjMzQ7LAogICAgJiMzNDtORVRfSVBJUCYjMzQ7LAogICAgJiMzNDtORVRfSVBHUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2d1ZV9idWlsZF9oZWFkZXImIzM0OywKICAgICYjMzQ7aXBfbWRfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXBfdHVubmVsX3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgaW52YWxpZCBtZW1vcnkgYWNjZXNzIGJ5IHJlb3JkZXJpbmcgdGhlIGFzc2lnbm1lbnQgb2YgYGlubmVyX2lwaGAgYWZ0ZXIgYGlwX3R1bm5lbF9lbmNhcGAsIHdoaWNoIGNhbiByZWFsbG9jYXRlIHRoZSBza2IgaGVhZC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgZm9yIGBza2JfY293X2hlYWRgIGluIGBfX2d1ZV9idWlsZF9oZWFkZXJgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIGNvcmUgbmV0d29ya2luZyBsb2dpYyAoRk9VL0dVRSBlbmNhcHN1bGF0aW9uIGFuZCBJUCB0dW5uZWxzKSB0aGF0IGFyZSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OywKICAgICYjMzQ7TkVUX0ZPVV9JUF9UVU5ORUxTJiMzNDssCiAgICAmIzM0O05FVF9JUElQJiMzNDssCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3VlX2J1aWxkX2hlYWRlciYjMzQ7LAogICAgJiMzNDtpcF9tZF90dW5uZWxfeG1pdCYjMzQ7LAogICAgJiMzNDtpcF90dW5uZWxfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgYnkgcmVvcmRlcmluZyB0aGUgYXNzaWdubWVudCBvZiBgaW5uZXJfaXBoYCBhZnRlciBgaXBfdHVubmVsX2VuY2FwYCwgd2hpY2ggY2FuIHJlYWxsb2NhdGUgdGhlIHNrYiBoZWFkLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBmb3IgYHNrYl9jb3dfaGVhZGAgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIChGT1UvR1VFIGVuY2Fwc3VsYXRpb24gYW5kIElQIHR1bm5lbHMpIHRoYXQgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIHZ1bG5lcmFiaWxpdHkuIFRoZSBmdW5jdGlvbiBgaXBfdHVubmVsX2VuY2FwKClgIGNhbiByZWFsbG9jYXRlIHRoZSBgc2tiYCBoZWFkIChmb3IgZXhhbXBsZSwgdmlhIGBza2JfY293X2hlYWQoKWAgd2hpY2ggaXMgYWRkZWQgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcigpYCBieSB0aGlzIHBhdGNoKS4gSWYgYGlubmVyX2lwaGAgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIGBpcF90dW5uZWxfZW5jYXAoKWAgaXMgY2FsbGVkLCBpdCB3aWxsIHBvaW50IHRvIHRoZSBvbGQsIGZyZWVkIGBza2JgIGhlYWQsIGxlYWRpbmcgdG8gYSBVQUYgd2hlbiBgaW5uZXJfaXBoYCBpcyBsYXRlciBkZXJlZmVyZW5jZWQuIEJ5IG1vdmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYGlubmVyX2lwaGAgdG8gYWZ0ZXIgYGlwX3R1bm5lbF9lbmNhcCgpYCwgdGhlIHBhdGNoIGVuc3VyZXMgaXQgcG9pbnRzIHRvIHRoZSBjb3JyZWN0LCBwb3RlbnRpYWxseSByZWFsbG9jYXRlZCBgc2tiYCBoZWFkLlxuXG5Vc2UtYWZ0ZXItZnJlZSBidWdzIGFuZCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCwgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgaW5mby1sZWFrIGludm9sdmVkIGluIHRoaXMgYnVnIG9yIGl0cyBmaXguIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIHN0YW5kYXJkIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBjYXRjaGluZyB0aGlzIGNsYXNzIG9mIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3ODQ4MWVmZTI2NTFkMGUzMDZmMjM4OGFlYjNkYzYyOTZlYmY4ZmNkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMjEgMTU6NTI6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9mb3VfY29yZS5jIGIvbmV0L2lwdjQvZm91X2NvcmUuYwppbmRleCBhYjA5ZGZjZGVjYmQ1Li44Y2YwZDQzYWNiNDEyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZvdV9jb3JlLmMKQEAgLTk4MCw2ICYjNDM7OTgwLDggQEAgaW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLAogCQkJCQkJc2tiLCAwLCAwLCBmYWxzZSk7CiAKIAloZHJsZW4gPSBzaXplb2Yoc3RydWN0IGd1ZWhkcikgJiM0Mzsgb3B0bGVuOwomIzQzOwlpZiAoc2tiX2Nvd19oZWFkKHNrYiwgaGRybGVuICYjNDM7IHNpemVvZihzdHJ1Y3QgdWRwaGRyKSkpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKIAogCXNrYl9wdXNoKHNrYiwgaGRybGVuKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdHVubmVsLmMgYi9uZXQvaXB2NC9pcF90dW5uZWwuYwppbmRleCA5ZDExNGJkNTc1ZjkyLi4yYmQ2ODRlYjJiYTI1IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF90dW5uZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF90dW5uZWwuYwpAQCAtNjA2LDYgJiM0Mzs2MDYsNyBAQCB2b2lkIGlwX21kX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAlpZiAoaXBfdHVubmVsX2VuY2FwKHNrYiwgJmFtcDt0dW5faW5mby0mZ3Q7ZW5jYXAsICZhbXA7cHJvdG8sICZhbXA7Zmw0KSAmbHQ7IDApCiAJCWdvdG8gdHhfZXJyb3I7CiYjNDM7CWlubmVyX2lwaCA9IChjb25zdCBzdHJ1Y3QgaXBoZHIgKilza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKTsKIAogCXVzZV9jYWNoZSA9IGlwX3R1bm5lbF9kc3RfY2FjaGVfdXNhYmxlKHNrYiwgdHVuX2luZm8pOwogCWlmICh1c2VfY2FjaGUpCkBAIC03NjUsOCAmIzQzOzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgdHVubmVsLSZndDtuZXQsIFJFQURfT05DRSh0dW5uZWwtJmd0O3Bhcm1zLmxpbmspLAogCQkJICAgIHR1bm5lbC0mZ3Q7ZndtYXJrLCBza2JfZ2V0X2hhc2goc2tiKSwgMCk7CiAKJiM0MzsJZGYgPSB0bmxfcGFyYW1zLSZndDtmcmFnX29mZjsKJiM0MzsJdHRsID0gdG5sX3BhcmFtcy0mZ3Q7dHRsOwomIzQzOwogCWlmIChpcF90dW5uZWxfZW5jYXAoc2tiLCAmYW1wO3R1bm5lbC0mZ3Q7ZW5jYXAsICZhbXA7cHJvdG9jb2wsICZhbXA7Zmw0KSAmbHQ7IDApCiAJCWdvdG8gdHhfZXJyb3I7CiYjNDM7CWlubmVyX2lwaCA9IChjb25zdCBzdHJ1Y3QgaXBoZHIgKilza2JfaW5uZXJfbmV0d29ya19oZWFkZXIoc2tiKTsKIAogCWlmIChjb25uZWN0ZWQgJmFtcDsmYW1wOyBtZCkgewogCQl1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTsKQEAgLTc5OSw3ICYjNDM7ODA0LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQlnb3RvIHR4X2Vycm9yOwogCX0KIAotCWRmID0gdG5sX3BhcmFtcy0mZ3Q7ZnJhZ19vZmY7CiAJaWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApICZhbXA7JmFtcDsgIXR1bm5lbC0mZ3Q7aWdub3JlX2RmKQogCQlkZiB8PSAoaW5uZXJfaXBoLSZndDtmcmFnX29mZiAmYW1wOyBodG9ucyhJUF9ERikpOwogCkBAIC04MjEsNyAmIzQzOzgyNSw2IEBAIHZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl9CiAKIAl0b3MgPSBpcF90dW5uZWxfZWNuX2VuY2FwKHRvcywgaW5uZXJfaXBoLCBza2IpOwotCXR0bCA9IHRubF9wYXJhbXMtJmd0O3R0bDsKIAlpZiAodHRsID09IDApIHsKIAkJaWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQogCQkJdHRsID0gaW5uZXJfaXBoLSZndDt0dGw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMSAxNTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjU5CgkJCQkJCQlvdXRwdXQ6IDI1NgoJCQkJCQkJdGhvdWdodHM6IDEyMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIE5ldHdvcmsgVHVubmVsaW5nIFBhdGNoKioKCk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IHRhcmdldHMgYSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSwgc3BlY2lmaWNhbGx5IGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgY29uZGl0aW9uIHdpdGhpbiB0aGUgbmV0d29yayB0dW5uZWxpbmcgY29kZS4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gc3RlbSBmcm9tIGhvdyB0aGUgY29kZSBoYW5kbGVzIGBza2JgIChzb2NrZXQgYnVmZmVyKSBoZWFkZXJzLCBwYXJ0aWN1bGFybHkgZHVyaW5nIGVuY2Fwc3VsYXRpb24uCgpNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBmb2N1c2VkIG9uIGBuZXQvaXB2NC9mb3VfY29yZS5jYCBhbmQgYG5ldC9pcHY0L2lwX3R1bm5lbC5jYC4gSW4gYGZvdV9jb3JlLmNgLCBhIGNoZWNrIHdpdGggYHNrYl9jb3dfaGVhZGAgaXMgaW50cm9kdWNlZCBiZWZvcmUgcHVzaGluZyB0aGUgaGVhZGVyLiBUaGlzIGlzIGEgZ29vZCBwcmFjdGljZSBhcyBpdCBwcmUtZW1wdGl2ZWx5IGVuc3VyZXMgZW5vdWdoIGhlYWRyb29tIGluIHRoZSBgc2tiYCwgbWl0aWdhdGluZyB0aGUgcmlzayBvZiBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBtZW1vcnkgY29ycnVwdGlvbi4KClRoZSBtb3JlIGludGVyZXN0aW5nIHBhcnQsIGhvd2V2ZXIsIGlzIGluIGBpcF90dW5uZWwuY2AuIFRoZSBvcmlnaW5hbCBjb2RlIGluaXRpYWxpemVzIGBpbm5lcl9pcGhgIChhIHBvaW50ZXIgdG8gdGhlIGlubmVyIElQIGhlYWRlcikgYmVmb3JlIGNhbGxpbmcgYGlwX3R1bm5lbF9lbmNhcGAuICBOb3csIGl0IGxvb2tzIGxpa2UgYGlwX3R1bm5lbF9lbmNhcGAg4oCTIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCBmdW5jdGlvbnMgbGlrZSBgZm91X2J1aWxkX2hlYWRlcmAgb3IgYGd1ZV9idWlsZF9oZWFkZXJgIOKAkyBjYW4sIGFuZCAqZG9lcyosIGNhbGwgYHNrYl9jb3dfaGVhZGAuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIGlzc3VlLiBUaGUgYHNrYl9jb3dfaGVhZGAgZnVuY3Rpb24gY2FuIHJlYWxsb2NhdGUgdGhlIG1lbW9yeSBvZiB0aGUgYHNrYmAgaGVhZC4gSWYgdGhpcyBoYXBwZW5zICphZnRlciogYGlubmVyX2lwaGAgaGFzIGJlZW4gc2V0LCBidXQgKmJlZm9yZSogdGhlIHBvaW50ZXIgaXMgdXNlZCwgIGBpbm5lcl9pcGhgIGVuZHMgdXAgcG9pbnRpbmcgdG8gYSBkZWFsbG9jYXRlZCBhbmQgcG9zc2libHkgb3ZlcndyaXR0ZW4gbWVtb3J5IHJlZ2lvbi4gVGhpcyBpcyB0ZXh0Ym9vayBVQUYsIG9yIGEgZGFuZ2xpbmcgcG9pbnRlciBidWcuCgpUaGUgcGF0Y2ggcmVzb2x2ZXMgdGhpcyBieSBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgb2YgYGlubmVyX2lwaGAgdG8gKmFmdGVyKiB0aGUgYGlwX3R1bm5lbF9lbmNhcGAgY2FsbC4gVGhpcyB3YXksIHRoZSBwb2ludGVyIGFsd2F5cyBwb2ludHMgdG8gdGhlIHZhbGlkIGFuZCBjb3JyZWN0IChwb3RlbnRpYWxseSByZWFsbG9jYXRlZCkgYHNrYmAgaGVhZC4KCkdpdmVuIHRoYXQgdGhpcyBpcyBhIFVBRiBidWcsIGFuZCB0aGF0IEtBU0FOIChLZXJuZWwgQWRkcmVzcyBTYW5pdGl6ZXIpIGlzIGRlc2lnbmVkIHNwZWNpZmljYWxseSB0byBkZXRlY3Qgc3VjaCBpc3N1ZXMsIHRoZSBmaXggc2VlbXMgYXBwcm9wcmlhdGUuIEnigJltIHRoaW5raW5nIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBjb25jZXJucyBoZXJlOyAgYHNrYl9jb3dfaGVhZGAgcmVhbGxvY2F0ZXMgYnV0IGNvcGllcyB0aGUgb3JpZ2luYWwgZGF0YSwgYW5kIHRoZSBuZXcgaGVhZHJvb20gd2lsbCBiZSBmaWxsZWQgbGF0ZXIuIFRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhZGRyZXNzZXMgYSBkYW5nbGluZyBwb2ludGVyLCBub3QgYW4gdW5pbml0aWFsaXplZCByZWFkIG9yIGluZm9ybWF0aW9uIGxlYWsuIFRoaXMgbWVhbnMgYSBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIHNlc3Npb24gaXMgbm90IG5lZWRlZC4KClRoZXJlZm9yZSwgdGhlIHBhdGNoIGxvb2tzIGxpa2UgaXQgKnN1Y2Nlc3NmdWxseSogbWl0aWdhdGVzIGEgVUFGIGJ5IGVuc3VyaW5nIGBpbm5lcl9pcGhgIHBvaW50cyB0byB0aGUgY29ycmVjdGx5IGFsbG9jYXRlZCBhbmQgdmFsaWQgYHNrYmAgbWVtb3J5LiBObyBLTVNBTiBuZWVkZWQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjEgMTU6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKSB2dWxuZXJhYmlsaXR5LiBUaGUgZnVuY3Rpb24gYGlwX3R1bm5lbF9lbmNhcCgpYCBjYW4gcmVhbGxvY2F0ZSB0aGUgYHNrYmAgaGVhZCAoZm9yIGV4YW1wbGUsIHZpYSBgc2tiX2Nvd19oZWFkKClgIHdoaWNoIGlzIGFkZGVkIGluIGBfX2d1ZV9idWlsZF9oZWFkZXIoKWAgYnkgdGhpcyBwYXRjaCkuIElmIGBpbm5lcl9pcGhgIGlzIGluaXRpYWxpemVkIGJlZm9yZSBgaXBfdHVubmVsX2VuY2FwKClgIGlzIGNhbGxlZCwgaXQgd2lsbCBwb2ludCB0byB0aGUgb2xkLCBmcmVlZCBgc2tiYCBoZWFkLCBsZWFkaW5nIHRvIGEgVUFGIHdoZW4gYGlubmVyX2lwaGAgaXMgbGF0ZXIgZGVyZWZlcmVuY2VkLiBCeSBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBpbm5lcl9pcGhgIHRvIGFmdGVyIGBpcF90dW5uZWxfZW5jYXAoKWAsIHRoZSBwYXRjaCBlbnN1cmVzIGl0IHBvaW50cyB0byB0aGUgY29ycmVjdCwgcG90ZW50aWFsbHkgcmVhbGxvY2F0ZWQgYHNrYmAgaGVhZC5cblxuVXNlLWFmdGVyLWZyZWUgYnVncyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIHBhZGRpbmcsIG9yIGluZm8tbGVhayBpbnZvbHZlZCBpbiB0aGlzIGJ1ZyBvciBpdHMgZml4LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgY2F0Y2hpbmcgdGhpcyBjbGFzcyBvZiBtZW1vcnkgY29ycnVwdGlvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eS4gVGhlIGZ1bmN0aW9uIGBpcF90dW5uZWxfZW5jYXAoKWAgY2FuIHJlYWxsb2NhdGUgdGhlIGBza2JgIGhlYWQgKGZvciBleGFtcGxlLCB2aWEgYHNrYl9jb3dfaGVhZCgpYCB3aGljaCBpcyBhZGRlZCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyKClgIGJ5IHRoaXMgcGF0Y2gpLiBJZiBgaW5uZXJfaXBoYCBpcyBpbml0aWFsaXplZCBiZWZvcmUgYGlwX3R1bm5lbF9lbmNhcCgpYCBpcyBjYWxsZWQsIGl0IHdpbGwgcG9pbnQgdG8gdGhlIG9sZCwgZnJlZWQgYHNrYmAgaGVhZCwgbGVhZGluZyB0byBhIFVBRiB3aGVuIGBpbm5lcl9pcGhgIGlzIGxhdGVyIGRlcmVmZXJlbmNlZC4gQnkgbW92aW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgaW5uZXJfaXBoYCB0byBhZnRlciBgaXBfdHVubmVsX2VuY2FwKClgLCB0aGUgcGF0Y2ggZW5zdXJlcyBpdCBwb2ludHMgdG8gdGhlIGNvcnJlY3QsIHBvdGVudGlhbGx5IHJlYWxsb2NhdGVkIGBza2JgIGhlYWQuXG5cblVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nLCBvciBpbmZvLWxlYWsgaW52b2x2ZWQgaW4gdGhpcyBidWcgb3IgaXRzIGZpeC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGNhdGNoaW5nIHRoaXMgY2xhc3Mgb2YgbWVtb3J5IGNvcnJ1cHRpb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUyOjE2LjIwNzgxMzMxNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjQwOTQ0NTM1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRk9VXCIsXG4gICAgXCJORVRfRk9VX0lQX1RVTk5FTFNcIixcbiAgICBcIk5FVF9JUElQXCIsXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2d1ZV9idWlsZF9oZWFkZXJcIixcbiAgICBcImlwX21kX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcF90dW5uZWxfeG1pdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKSB2dWxuZXJhYmlsaXR5LiBUaGUgZnVuY3Rpb24gYGlwX3R1bm5lbF9lbmNhcCgpYCBjYW4gcmVhbGxvY2F0ZSB0aGUgYHNrYmAgaGVhZCAoZm9yIGV4YW1wbGUsIHZpYSBgc2tiX2Nvd19oZWFkKClgIHdoaWNoIGlzIGFkZGVkIGluIGBfX2d1ZV9idWlsZF9oZWFkZXIoKWAgYnkgdGhpcyBwYXRjaCkuIElmIGBpbm5lcl9pcGhgIGlzIGluaXRpYWxpemVkIGJlZm9yZSBgaXBfdHVubmVsX2VuY2FwKClgIGlzIGNhbGxlZCwgaXQgd2lsbCBwb2ludCB0byB0aGUgb2xkLCBmcmVlZCBgc2tiYCBoZWFkLCBsZWFkaW5nIHRvIGEgVUFGIHdoZW4gYGlubmVyX2lwaGAgaXMgbGF0ZXIgZGVyZWZlcmVuY2VkLiBCeSBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBpbm5lcl9pcGhgIHRvIGFmdGVyIGBpcF90dW5uZWxfZW5jYXAoKWAsIHRoZSBwYXRjaCBlbnN1cmVzIGl0IHBvaW50cyB0byB0aGUgY29ycmVjdCwgcG90ZW50aWFsbHkgcmVhbGxvY2F0ZWQgYHNrYmAgaGVhZC5cXG5cXG5Vc2UtYWZ0ZXItZnJlZSBidWdzIGFuZCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCwgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgaW5mby1sZWFrIGludm9sdmVkIGluIHRoaXMgYnVnIG9yIGl0cyBmaXguIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIHN0YW5kYXJkIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBjYXRjaGluZyB0aGlzIGNsYXNzIG9mIG1lbW9yeSBjb3JydXB0aW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBieSByZW9yZGVyaW5nIHRoZSBhc3NpZ25tZW50IG9mIGBpbm5lcl9pcGhgIGFmdGVyIGBpcF90dW5uZWxfZW5jYXBgLCB3aGljaCBjYW4gcmVhbGxvY2F0ZSB0aGUgc2tiIGhlYWQuIEl0IGFsc28gYWRkcyBhIGNoZWNrIGZvciBgc2tiX2Nvd19oZWFkYCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgKEZPVS9HVUUgZW5jYXBzdWxhdGlvbiBhbmQgSVAgdHVubmVscykgdGhhdCBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1MjoxNi4yMDc4MTg4NDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODM0NjYxMTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ODQ4MWVmZTI2NTFkMGUzMDZmMjM4OGFlYjNkYzYyOTZlYmY4ZmNkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDIxIDE1OjUyOjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZvdV9jb3JlLmMgYi9uZXQvaXB2NC9mb3VfY29yZS5jXFxuaW5kZXggYWIwOWRmY2RlY2JkNS4uOGNmMGQ0M2FjYjQxMiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jXFxuKysrIGIvbmV0L2lwdjQvZm91X2NvcmUuY1xcbkBAIC05ODAsNiArOTgwLDggQEAgaW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRza2IsIDAsIDAsIGZhbHNlKTtcXG4gXFxuIFxcdGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgZ3VlaGRyKSArIG9wdGxlbjtcXG4rXFx0aWYgKHNrYl9jb3dfaGVhZChza2IsIGhkcmxlbiArIHNpemVvZihzdHJ1Y3QgdWRwaGRyKSkpXFxuK1xcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXG4gXFx0c2tiX3B1c2goc2tiLCBoZHJsZW4pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfdHVubmVsLmMgYi9uZXQvaXB2NC9pcF90dW5uZWwuY1xcbmluZGV4IDlkMTE0YmQ1NzVmOTIuLjJiZDY4NGViMmJhMjUgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcXG4rKysgYi9uZXQvaXB2NC9pcF90dW5uZWwuY1xcbkBAIC02MDYsNiArNjA2LDcgQEAgdm9pZCBpcF9tZF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXG4gXFx0aWYgKGlwX3R1bm5lbF9lbmNhcChza2IsIFxcdTAwMjZ0dW5faW5mby1cXHUwMDNlZW5jYXAsIFxcdTAwMjZwcm90bywgXFx1MDAyNmZsNCkgXFx1MDAzYyAwKVxcbiBcXHRcXHRnb3RvIHR4X2Vycm9yO1xcbitcXHRpbm5lcl9pcGggPSAoY29uc3Qgc3RydWN0IGlwaGRyICopc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYik7XFxuIFxcbiBcXHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcXG4gXFx0aWYgKHVzZV9jYWNoZSlcXG5AQCAtNzY1LDggKzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgICB0dW5uZWwtXFx1MDAzZW5ldCwgUkVBRF9PTkNFKHR1bm5lbC1cXHUwMDNlcGFybXMubGluayksXFxuIFxcdFxcdFxcdCAgICB0dW5uZWwtXFx1MDAzZWZ3bWFyaywgc2tiX2dldF9oYXNoKHNrYiksIDApO1xcbiBcXG4rXFx0ZGYgPSB0bmxfcGFyYW1zLVxcdTAwM2VmcmFnX29mZjtcXG4rXFx0dHRsID0gdG5sX3BhcmFtcy1cXHUwMDNldHRsO1xcbitcXG4gXFx0aWYgKGlwX3R1bm5lbF9lbmNhcChza2IsIFxcdTAwMjZ0dW5uZWwtXFx1MDAzZWVuY2FwLCBcXHUwMDI2cHJvdG9jb2wsIFxcdTAwMjZmbDQpIFxcdTAwM2MgMClcXG4gXFx0XFx0Z290byB0eF9lcnJvcjtcXG4rXFx0aW5uZXJfaXBoID0gKGNvbnN0IHN0cnVjdCBpcGhkciAqKXNrYl9pbm5lcl9uZXR3b3JrX2hlYWRlcihza2IpO1xcbiBcXG4gXFx0aWYgKGNvbm5lY3RlZCBcXHUwMDI2XFx1MDAyNiBtZCkge1xcbiBcXHRcXHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcXG5AQCAtNzk5LDcgKzgwNCw2IEBAIHZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0Z290byB0eF9lcnJvcjtcXG4gXFx0fVxcbiBcXG4tXFx0ZGYgPSB0bmxfcGFyYW1zLVxcdTAwM2VmcmFnX29mZjtcXG4gXFx0aWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApIFxcdTAwMjZcXHUwMDI2ICF0dW5uZWwtXFx1MDAzZWlnbm9yZV9kZilcXG4gXFx0XFx0ZGYgfD0gKGlubmVyX2lwaC1cXHUwMDNlZnJhZ19vZmYgXFx1MDAyNiBodG9ucyhJUF9ERikpO1xcbiBcXG5AQCAtODIxLDcgKzgyNSw2IEBAIHZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0fVxcbiBcXG4gXFx0dG9zID0gaXBfdHVubmVsX2Vjbl9lbmNhcCh0b3MsIGlubmVyX2lwaCwgc2tiKTtcXG4tXFx0dHRsID0gdG5sX3BhcmFtcy1cXHUwMDNldHRsO1xcbiBcXHRpZiAodHRsID09IDApIHtcXG4gXFx0XFx0aWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKVxcbiBcXHRcXHRcXHR0dGwgPSBpbm5lcl9pcGgtXFx1MDAzZXR0bDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTI6MTcuODkyMDUzNzY2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODQ1ODgzODc3ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiLFxuICAgIFwiTkVUX0ZPVV9JUF9UVU5ORUxTXCIsXG4gICAgXCJORVRfSVBJUFwiLFxuICAgIFwiTkVUX0lQR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ndWVfYnVpbGRfaGVhZGVyXCIsXG4gICAgXCJpcF9tZF90dW5uZWxfeG1pdFwiLFxuICAgIFwiaXBfdHVubmVsX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgYnkgcmVvcmRlcmluZyB0aGUgYXNzaWdubWVudCBvZiBgaW5uZXJfaXBoYCBhZnRlciBgaXBfdHVubmVsX2VuY2FwYCwgd2hpY2ggY2FuIHJlYWxsb2NhdGUgdGhlIHNrYiBoZWFkLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBmb3IgYHNrYl9jb3dfaGVhZGAgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIChGT1UvR1VFIGVuY2Fwc3VsYXRpb24gYW5kIElQIHR1bm5lbHMpIHRoYXQgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzg0ODFlZmUyNjUxZDBlMzA2ZjIzODhhZWIzZGM2Mjk2ZWJmOGZjZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE1OjUyOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZm91X2NvcmUuYyBiL25ldC9pcHY0L2ZvdV9jb3JlLmNcbmluZGV4IGFiMDlkZmNkZWNiZDUuLjhjZjBkNDNhY2I0MTIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jXG4rKysgYi9uZXQvaXB2NC9mb3VfY29yZS5jXG5AQCAtOTgwLDYgKzk4MCw4IEBAIGludCBfX2d1ZV9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcbiBcdFx0XHRcdFx0XHRza2IsIDAsIDAsIGZhbHNlKTtcbiBcbiBcdGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgZ3VlaGRyKSArIG9wdGxlbjtcbitcdGlmIChza2JfY293X2hlYWQoc2tiLCBoZHJsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHNrYl9wdXNoKHNrYiwgaGRybGVuKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF90dW5uZWwuYyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5pbmRleCA5ZDExNGJkNTc1ZjkyLi4yYmQ2ODRlYjJiYTI1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcbisrKyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5AQCAtNjA2LDYgKzYwNiw3IEBAIHZvaWQgaXBfbWRfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGlmIChpcF90dW5uZWxfZW5jYXAoc2tiLCBcdTAwMjZ0dW5faW5mby1cdTAwM2VlbmNhcCwgXHUwMDI2cHJvdG8sIFx1MDAyNmZsNCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4rXHRpbm5lcl9pcGggPSAoY29uc3Qgc3RydWN0IGlwaGRyICopc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYik7XG4gXG4gXHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcbiBcdGlmICh1c2VfY2FjaGUpXG5AQCAtNzY1LDggKzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2VuZXQsIFJFQURfT05DRSh0dW5uZWwtXHUwMDNlcGFybXMubGluayksXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2Vmd21hcmssIHNrYl9nZXRfaGFzaChza2IpLCAwKTtcbiBcbitcdGRmID0gdG5sX3BhcmFtcy1cdTAwM2VmcmFnX29mZjtcbitcdHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO1xuK1xuIFx0aWYgKGlwX3R1bm5lbF9lbmNhcChza2IsIFx1MDAyNnR1bm5lbC1cdTAwM2VlbmNhcCwgXHUwMDI2cHJvdG9jb2wsIFx1MDAyNmZsNCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4rXHRpbm5lcl9pcGggPSAoY29uc3Qgc3RydWN0IGlwaGRyICopc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYik7XG4gXG4gXHRpZiAoY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBtZCkge1xuIFx0XHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcbkBAIC03OTksNyArODA0LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRnb3RvIHR4X2Vycm9yO1xuIFx0fVxuIFxuLVx0ZGYgPSB0bmxfcGFyYW1zLVx1MDAzZWZyYWdfb2ZmO1xuIFx0aWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApIFx1MDAyNlx1MDAyNiAhdHVubmVsLVx1MDAzZWlnbm9yZV9kZilcbiBcdFx0ZGYgfD0gKGlubmVyX2lwaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfREYpKTtcbiBcbkBAIC04MjEsNyArODI1LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0fVxuIFxuIFx0dG9zID0gaXBfdHVubmVsX2Vjbl9lbmNhcCh0b3MsIGlubmVyX2lwaCwgc2tiKTtcbi1cdHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO1xuIFx0aWYgKHR0bCA9PSAwKSB7XG4gXHRcdGlmIChwYXlsb2FkX3Byb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSlcbiBcdFx0XHR0dGwgPSBpbm5lcl9pcGgtXHUwMDNldHRsO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTI6MTcuODkyMDU1MTA2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwMzM4MzYxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUdW5uZWxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L2lwdjQvZm91X2NvcmUuY2AgYW5kIGBuZXQvaXB2NC9pcF90dW5uZWwuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB3ZSdyZSBoYW5kbGluZyB0aGUgZW5jYXBzdWxhdGlvbiBvZiBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgd2l0aCBHZW5lcmljIFVEUCBFbmNhcHN1bGF0aW9uIChHVUUpIGFuZCBJUC1pbi1JUCB0dW5uZWxzLlxuXG5JbiBgZm91X2NvcmUuY2AsIHRoZSBwYXRjaCBhZGRzIGEgYHNrYl9jb3dfaGVhZGAgY2FsbCBiZWZvcmUgYHNrYl9wdXNoYC4gVGhpcyB0ZWxscyBtZSB3ZSdyZSBwb3RlbnRpYWxseSBtYWtpbmcgYSBjb3B5LW9uLXdyaXRlIG9mIHRoZSBTS0IncyBoZWFkLiBUaGF0IHN1Z2dlc3RzIHdlIG1pZ2h0IGJlIG1vZGlmeWluZyB0aGUgcGFja2V0IGhlYWRlciBpbiBwbGFjZSwgd2hpY2ggaXMgZmluZSwgYnV0IG5lZWRzIHRvIGJlIGhhbmRsZWQgY2FyZWZ1bGx5LiBUaGUgc3Vic2VxdWVudCBgc2tiX3B1c2hgIGlzIHN0YW5kYXJkIHByYWN0aWNlIGZvciBhZGRpbmcgdGhlIEdVRSBoZWFkZXIuXG5cbk5vdywgdGhlIGludGVyZXN0aW5nIGJpdCBpcyBpbiBgaXBfdHVubmVsLmNgLiBUaGVyZSBhcmUgdHdvIG9jY3VycmVuY2VzIHdoZXJlIGBpcF90dW5uZWxfZW5jYXBgIGlzIGNhbGxlZC4gVGhlIHBhdGNoIGFkZHMgYSBsaW5lIHdoaWNoIGNhc3RzIGEgcG9pbnRlciB0byBgc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYilgIHRvIHRoZSBgaW5uZXJfaXBoYCB2YXJpYWJsZSwgYnV0IHRoZSBwYXRjaCByZW1vdmVzIGBkZiA9IHRubF9wYXJhbXMtXHUwMDNlZnJhZ19vZmY7YCBhbmQgYHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO2AgZnJvbSBiZWxvdyB0aGUgYGlwX3R1bm5lbF9lbmNhcGAgZnVuY3Rpb24uXG5cbk15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCB0aGlzIHdhcyBhIHBvdGVudGlhbCBkYW5nbGluZyBwb2ludGVyIGlzc3VlLiBUaGUgbG9naWMgc3VnZ2VzdGVkIHRoYXQgYGlwX3R1bm5lbF9lbmNhcGAgbWlnaHQgcmVhbGxvY2F0ZSB0aGUgU0tCJ3MgYnVmZmVyIChlc3BlY2lhbGx5IGlmIHRoZSBHVUUgaGVhZGVyIGhhZCB0byBiZSBjb25zdHJ1Y3RlZCwgd2hpY2ggd291bGQgY2FsbCBgc2tiX2Nvd19oZWFkYCksIGFuZCBpZiBgaW5uZXJfaXBoYCB3ZXJlIHJlYWQgKmJlZm9yZSogdGhlIGVuY2Fwc3VsYXRpb24sIGl0IGNvdWxkIHBvaW50IHRvIGdhcmJhZ2UuIEhvd2V2ZXIsIEkgbm93IHJlYWxpemUgdGhlIGNvZGUgcmVhZHMgYGlubmVyX2lwaGAgKmFmdGVyKiB0aGUgYGlwX3R1bm5lbF9lbmNhcGAgY2FsbC4gVGhpcyBkb2Vzbid0IGVudGlyZWx5IG1ha2Ugc2Vuc2UuXG5cbkkgbmVlZCB0byBkaWcgZGVlcGVyLiBJIHdhbnQgdG8gY2hlY2sgaG93IGBpcF90dW5uZWxfZW5jYXBgIGl0c2VsZiBtaWdodCBiZSByZWFsbG9jYXRpbmcgdGhlIFNLQi4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBza2JfY293X2hlYWRgIGlzIGRvaW5nIGluIGBfX2d1ZV9idWlsZF9oZWFkZXJgLiBJJ2xsIGFsc28gd2FudCB0byBsb29rIGF0IGBpcF9tZF90dW5uZWxfeG1pdGAgYW5kIGBpcF90dW5uZWxfeG1pdGAuIExldCBtZSBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi4uLiBJIG5lZWQgdG8gc2VlIGlmIHRoZSByZW1vdmFsIG9mIHRoZSBsaW5lcyBoYXMgc29tZSBjb25zZXF1ZW5jZSBJJ20gbm90IHNlZWluZyBpbW1lZGlhdGVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUyOjI1LjY5NTQ0MjEyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ1NzQ4NDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fZ3VlX2J1aWxkX2hlYWRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9mb3UuaD0xNT1pbnQgX19mb3VfYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF90dW5uZWxfZW5jYXAgKmUsXFxuaW5jbHVkZS9uZXQvZm91LmgtMTYtXFx0XFx0ICAgICAgIHU4ICpwcm90b2NvbCwgX19iZTE2ICpzcG9ydCwgaW50IHR5cGUpO1xcbmluY2x1ZGUvbmV0L2ZvdS5oOjE3OmludCBfX2d1ZV9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcXG5pbmNsdWRlL25ldC9mb3UuaC0xOC1cXHRcXHQgICAgICAgdTggKnByb3RvY29sLCBfX2JlMTYgKnNwb3J0LCBpbnQgdHlwZSk7XFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jPTk1ND1FWFBPUlRfU1lNQk9MKF9fZm91X2J1aWxkX2hlYWRlcik7XFxubmV0L2lwdjQvZm91X2NvcmUuYy05NTUtXFxubmV0L2lwdjQvZm91X2NvcmUuYzo5NTY6aW50IF9fZ3VlX2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLFxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtOTU3LVxcdFxcdCAgICAgICB1OCAqcHJvdG9jb2wsIF9fYmUxNiAqc3BvcnQsIGludCB0eXBlKVxcbi0tXFxubmV0L2lwdjQvZm91X2NvcmUuYy0xMDI4LX1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjEwMjk6RVhQT1JUX1NZTUJPTChfX2d1ZV9idWlsZF9oZWFkZXIpO1xcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtMTAzMC1cXG4tLVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmM9MTA2OT1zdGF0aWMgaW50IGd1ZV9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcXG4tLVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtMTA3Ni1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjEwNzc6XFx0ZXJyID0gX19ndWVfYnVpbGRfaGVhZGVyKHNrYiwgZSwgcHJvdG9jb2wsIFxcdTAwMjZzcG9ydCwgdHlwZSk7XFxubmV0L2lwdjQvZm91X2NvcmUuYy0xMDc4LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2Ni9mb3U2LmM9NTc9c3RhdGljIGludCBndWU2X2J1aWxkX2hlYWRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgaXBfdHVubmVsX2VuY2FwICplLFxcbi0tXFxubmV0L2lwdjYvZm91Ni5jLTY0LVxcbm5ldC9pcHY2L2ZvdTYuYzo2NTpcXHRlcnIgPSBfX2d1ZV9idWlsZF9oZWFkZXIoc2tiLCBlLCBwcm90b2NvbCwgXFx1MDAyNnNwb3J0LCB0eXBlKTtcXG5uZXQvaXB2Ni9mb3U2LmMtNjYtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTI6MjcuNTQxMTk4MDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzEyMzE4MTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgZGlnZ2luZyBpbnRvIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbmFsaXR5IOKAkyBGT1UvR1VFIGVuY2Fwc3VsYXRpb24gYW5kIElQIHR1bm5lbHMsIHRvIGJlIHByZWNpc2UuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhhdCBgc2tiX2Nvd19oZWFkYCBjYWxsIHdpdGhpbiBgX19ndWVfYnVpbGRfaGVhZGVyYCBhbmQgdGhlIHJlb3JkZXJpbmcgb2YgdGhlIGBpbm5lcl9pcGhgIGFzc2lnbm1lbnRzIGluIGBpcF90dW5uZWxfeG1pdGAgYW5kIGBpcF9tZF90dW5uZWxfeG1pdGAgYXJlIHRoZSByZWQgZmxhZ3MuIFRoZXNlIGFyZSAqZnVuY3Rpb25hbCogY2hhbmdlcywgYW5kIHRoYXQgc2NyZWFtcyBcImZ1enogbWVcIiBhdCB0aGUgdG9wIG9mIG15IGx1bmdzLiBUaW1lIHRvIHB1dCBteSBmdXp6aW5nIGhhdCBvbiFcblxuTm93LCBiZWZvcmUgSSBjYW4gcmVhbGx5IGRpdmUgaW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21waWxhdGlvbiBjb25kaXRpb25zLiBMZXQncyBzZWUuLi4gYG5ldC9pcHY0L2ZvdV9jb3JlLmNgIGlzIGdvaW5nIHRvIGJlIGNvbXBpbGVkIGlmIGBDT05GSUdfTkVUX0ZPVWAgaXMgc2V0LiBBbmQgZm9yIGBuZXQvaXB2NC9pcF90dW5uZWwuY2AsIGl04oCZcyB0aGUgdXN1YWwgc3VzcGVjdHM6IGBDT05GSUdfTkVUX0lQSVBgLCBgQ09ORklHX05FVF9JUEdSRWAsIGFuZCBzbyBvbi4gUmlnaHQuIEdvdCBpdC4gTm93IEkgY2FuIGJ1aWxkIHRoZSByaWdodCBjb25maWd1cmF0aW9ucyB0byBnZXQgdGhpcyB1bmRlciB0ZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjQ5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUyOjMyLjg1MzUxODA0NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk1ODM5MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvdV9jb3JlXFxcXC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTI2PWdyZS15IDo9IGdyZV9kZW11eC5vXFxubmV0L2lwdjQvTWFrZWZpbGU6Mjc6Zm91LXkgOj0gZm91X2NvcmUubyBmb3VfbmwubyBmb3VfYnBmLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0yOC1vYmotJChDT05GSUdfTkVUX0ZPVSkgKz0gZm91Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTI6MzQuOTQ5MzY0NTY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3OTU0ODUxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IExldmVyYWdpbmcgdGhlIGBORVRfRk9VYCBSZXF1aXJlbWVudCoqXG5cblJpZ2h0LCBzbyBgTkVUX0ZPVWAgaXMgZGVmaW5pdGVseSBhIGtleSBmYWN0b3IgaW4gdGhpcyBzaXR1YXRpb24uIEl0J3MgdGhlIGx5bmNocGluLCB0aGUgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHRpZXMgaW50byB0aGUgbGFyZ2VyIHBpY3R1cmUuIEknbSBnb2luZyB0byBuZWVkIHRoaXMgZm9yIHN1cmUuIE5vdywgd2hlcmUgYW0gSSBnb2luZyB0byBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBpc3N1ZT8gV2FpdCwgSSB0aGluayBJIGtub3cgd2hlcmUgdG8gZ28gbmV4dC4gTGV0IG1lIHRoaW5rIGFib3V0IHRoYXQsIGZpcnN0LiBXaGF0IGFib3V0IHRoYXQgYGlwX3R1bm5lbC5jYCBmaWxlPyBDb3VsZCB0aGF0IGJlIGhlbHBmdWw/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3NDksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo0MC4xMjg5MTU4N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI2MDE2MDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX3R1bm5lbFxcXFwub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cXG5uZXQvaXB2NC9NYWtlZmlsZToxOTpvYmotJChDT05GSUdfTkVUX0lQX1RVTk5FTCkgKz0gaXBfdHVubmVsLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfU1lTQ1RMKSArPSBzeXNjdGxfbmV0X2lwdjQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo0Mi44NTQ5MzU5OTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE4NDk3MjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgVHVubmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCB0aGUgYE5FVF9JUF9UVU5ORUxgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGJlaW5nIHB1bGxlZCBpbiBieSB2YXJpb3VzIHR1bm5lbCBjb25maWd1cmF0aW9ucy4gTXkgbmV4dCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgc291cmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgb3B0aW9uICpyZWFsbHkqIGRvZXMgYW5kIGhvdyBpdCdzIHVzZWQuIEknbGwgaGVhZCBvdmVyIHRvIGBuZXQvaXB2NC9LY29uZmlnYCB0byBleGFtaW5lIGBORVRfSVBfVFVOTkVMYC4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBgbmV0L2lwdjRgIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBJUHY0LXJlbGF0ZWQgbmV0d29ya2luZyBjb25maWd1cmF0aW9uLCBhbmQgYEtjb25maWdgIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwdXJwb3NlIG9mIHRoZXNlIG9wdGlvbnMuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgcHVycG9zZSwgYW5kIHdoYXQgdGhpcyBvcHRpb24gZW5hYmxlcyBhbmQgZGlzYWJsZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNDAsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo0Ni41NzM0MzU5NTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODgxMDIxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUF9UVU5ORUxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0xODA9Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0xODUtXFxubmV0L2lwdjQvS2NvbmZpZzoxODY6Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2NC9LY29uZmlnLTE4Ny1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo0OC4wNjE1NDQwNTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyODc3MTYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFRyaXN0YXRlIERlcGVuZGVuY3kqKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGEgdHJpc3RhdGUsIG1lYW5pbmcgaXQncyBkZXBlbmRlbnQgb24gc29tZSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEl0J3Mgbm90IGEgc3RhbmRhbG9uZSwgc2VsZi1zZWxlY3RpbmcgY2hvaWNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaG8ncyBwdWxsaW5nIHRoZSBzdHJpbmdzIG9uIHRoaXMgb25lP1wiLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyBgTkVUX0lQX1RVTk5FTGAuIFRpbWUgdG8gZGlnIGluIGFuZCB0cmFjZSB0aG9zZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZWxlY3Rpb24gcGF0aCB0byB0cnVseSBncmFzcCBpdHMgcm9sZSBhbmQgaW1wbGljYXRpb25zIHdpdGhpbiB0aGUgc3lzdGVtJ3Mgb3ZlcmFsbCBjb25maWd1cmF0aW9uLiBMZXQncyBzZWUgd2hhdCdzIGNvbm5lY3RlZCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM1MywiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUyOjUwLjg5MDMxODc2N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NTEzNDI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgTkVUX0lQX1RVTk5FTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTY0LVxcdHNlbGVjdCBJTkVUX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWc6MTY1OlxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0xNjYtXFx0aGVscFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0xOTI9Y29uZmlnIE5FVF9JUEdSRVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0xOTQtXFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnOjE5NTpcXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMTk2LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzA2LVxcdHNlbGVjdCBJTkVUX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWc6MzA3OlxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZy0zMDgtXFx0c2VsZWN0IFhGUk1cXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzE2PWNvbmZpZyBORVRfVURQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMzE3LVxcdHRyaXN0YXRlXFxubmV0L2lwdjQvS2NvbmZpZzozMTg6XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2NC9LY29uZmlnLTMxOS1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNTItXFx0c2VsZWN0IElQVjZfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZzoxNTM6XFx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTE1NC1cXHRzZWxlY3QgWEZSTVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNjI9Y29uZmlnIElQVjZfU0lUXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE2NC1cXHRzZWxlY3QgSU5FVF9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjE2NTpcXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMTY2LVxcdHNlbGVjdCBJUFY2X05ESVNDX05PREVUWVBFXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTIxMD1jb25maWcgSVBWNl9HUkVcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjEyLVxcdHNlbGVjdCBJUFY2X1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWc6MjEzOlxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yMTQtXFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTI6NTIuMzU1NDU4MTI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1Mjk1ODM1NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbnNpZGVyYXRpb25zOlxuXG4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBUdW5uZWxpbmcgT3B0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gVGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHR1bm5lbGluZyBwcm90b2NvbHMsIGBORVRfSVBJUGAsIGBORVRfSVBHUkVgLCBhbmQgYE5FVF9VRFBfVFVOTkVMYCBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBzb2xpZCBvcHRpb25zLiBUaGV5J3JlIGFsbCBwcmV0dHkgc3RhbmRhcmQgYW5kIHdlbGwtdW5kZXJzdG9vZC4gTm93LCB0aGF0IGBORVRfRk9VYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBpbnRyaWd1aW5nOyBpdCBzZWVtcyB0byBiZSBsaW5rZWQgdG8gYE5FVF9VRFBfVFVOTkVMYCBkaXJlY3RseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGVzZSBjb25maWd1cmF0aW9uIGl0ZW1zIGlzIGFjY3VyYXRlLiBUaGUgZGVwZW5kZW5jeSBjaGFpbiBpcyBjbGVhciBlbm91Z2ggdGhhdCBJIHNob3VsZCBnbyBiYWNrIGFuZCByZXZpZXcgaG93IGBORVRfRk9VYCBzcGVjaWZpY2FsbHkgaW50ZXJhY3RzIHdpdGggdGhvc2Ugb3RoZXIgY29uZmlndXJhdGlvbnMsIHRvIHNlZSBpZiBhbnl0aGluZyBnZXRzIHNldCBvciBzZWxlY3RlZCBiYXNlZCBvbiBpdHMgdmFsdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDIsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo1NS44ODUwNDQyNzFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzY1ODU1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9GT1VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0zMTY9Y29uZmlnIE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTMyMC1cXG5uZXQvaXB2NC9LY29uZmlnOjMyMTpjb25maWcgTkVUX0ZPVVxcbm5ldC9pcHY0L0tjb25maWctMzIyLVxcdHRyaXN0YXRlIFxcXCJJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMjktXFxubmV0L2lwdjQvS2NvbmZpZzozMzA6Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xcbm5ldC9pcHY0L0tjb25maWctMzMxLVxcdGJvb2wgXFxcIklQOiBGT1UgZW5jYXBzdWxhdGlvbiBvZiBJUCB0dW5uZWxzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mjo1Ny4zNjE2MzU5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTA4OTE2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQW5hbHl6aW5nIGBORVRfRk9VYCBTZWxlY3Rpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB3aGF0IHRoZSBgTkVUX0ZPVWAgc2VsZWN0aW9uIGNyaXRlcmlhIGhhdmUgeWllbGRlZC4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBvdXRwdXQgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBiYXNlZCBvbiB3aGF0IGBORVRfRk9VYCBpcyBtZWFudCB0byBjYXB0dXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHRoZSByZXN1bHRzIGFzIGV4cGVjdGVkLCBvciBhcmUgdGhlcmUgYW55IGFub21hbGllcyB0aGF0IHJlcXVpcmUgZnVydGhlciBpbnZlc3RpZ2F0aW9uPyBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIGJpYXNlcywgZWRnZSBjYXNlcywgb3IgdW5mb3Jlc2VlbiBpbnRlcmFjdGlvbnMgd2l0aGluIHRoZSBtb2RlbCB0aGF0IG1pZ2h0IGV4cGxhaW4gYW55IGRpdmVyZ2VuY2UgZnJvbSBteSBwcmlvciBhc3N1bXB0aW9ucy4gVGhpcyBhbHNvIGJyaW5ncyB1cCB3aGF0IFwiTkVUX0ZPVVwiIGlzIHNldCB0byBkbywgc28gSSBoYXZlIGEgZnJhbWUgb2YgcmVmZXJlbmNlLiBUaGlzIGlzIGdvaW5nIHRvIGJlIHF1aWNrIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTMyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6MDAuOTUyNTI5NzUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDg5Mjc5NzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9GT1VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTY2PUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzo2NzpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctNjgtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXBvbGxvX2RlZmNvbmZpZz02Mj1DT05GSUdfTkVUX0lQVlRJPW1cXG5hcmNoL202OGsvY29uZmlncy9hcG9sbG9fZGVmY29uZmlnOjYzOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxcbmFyY2gvbTY4ay9jb25maWdzL2Fwb2xsb19kZWZjb25maWctNjQtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYXRhcmlfZGVmY29uZmlnPTY5PUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL2F0YXJpX2RlZmNvbmZpZzo3MDpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9hdGFyaV9kZWZjb25maWctNzEtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYnZtZTYwMDBfZGVmY29uZmlnPTU5PUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL2J2bWU2MDAwX2RlZmNvbmZpZzo2MDpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9idm1lNjAwMF9kZWZjb25maWctNjEtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvaHAzMDBfZGVmY29uZmlnPTYxPUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL2hwMzAwX2RlZmNvbmZpZzo2MjpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9ocDMwMF9kZWZjb25maWctNjMtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbWFjX2RlZmNvbmZpZz02MD1DT05GSUdfTkVUX0lQVlRJPW1cXG5hcmNoL202OGsvY29uZmlncy9tYWNfZGVmY29uZmlnOjYxOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxcbmFyY2gvbTY4ay9jb25maWdzL21hY19kZWZjb25maWctNjItQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTgwPUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzo4MTpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctODItQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc9NTg9Q09ORklHX05FVF9JUFZUST1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWc6NTk6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE0N19kZWZjb25maWctNjAtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWc9NTk9Q09ORklHX05FVF9JUFZUST1tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWc6NjA6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXZtZTE2eF9kZWZjb25maWctNjEtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvcTQwX2RlZmNvbmZpZz02MD1DT05GSUdfTkVUX0lQVlRJPW1cXG5hcmNoL202OGsvY29uZmlncy9xNDBfZGVmY29uZmlnOjYxOkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxcbmFyY2gvbTY4ay9jb25maWdzL3E0MF9kZWZjb25maWctNjItQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc9NTU9Q09ORklHX05FVF9JUFZUST1tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWc6NTY6Q09ORklHX05FVF9GT1VfSVBfVFVOTkVMUz15XFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM19kZWZjb25maWctNTctQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3Mvc3VuM3hfZGVmY29uZmlnPTU2PUNPTkZJR19ORVRfSVBWVEk9bVxcbmFyY2gvbTY4ay9jb25maWdzL3N1bjN4X2RlZmNvbmZpZzo1NzpDT05GSUdfTkVUX0ZPVV9JUF9UVU5ORUxTPXlcXG5hcmNoL202OGsvY29uZmlncy9zdW4zeF9kZWZjb25maWctNTgtQ09ORklHX0lORVRfQUg9bVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9Mzg2ND1icmNtZl9ub3RpZnlfc2NoZWRfc2Nhbl9yZXN1bHRzKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMzg5NS1cXHQvKiBQRk4gZXZlbnQgaXMgbGltaXRlZCB0byBmaXQgNTEyIGJ5dGVzIHNvIHdlIG1heSBnZXRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzozODk2OlxcdCAqIG11bHRpcGxlIE5FVF9GT1VORCBldmVudHMuIEZvciBub3cgcGxhY2UgYSB3YXJuaW5nIGhlcmUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMzg5Ny1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTQxNjY9c3RhdGljIHMzMiBicmNtZl9jZmc4MDIxMV9yZXN1bWUoc3RydWN0IHdpcGh5ICp3aXBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTQxODQtXFx0XFx0XFx0YnJjbWZfY2ZnODAyMTFfc2NoZWRfc2Nhbl9zdG9wKGNmZy1cXHUwMDNld2lwaHksIGlmcC1cXHUwMDNlbmRldiwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDE4NTpcXHRcXHRcXHRicmNtZl9md2VoX3VucmVnaXN0ZXIoY2ZnLVxcdTAwM2VwdWIsIEJSQ01GX0VfUEZOX05FVF9GT1VORCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDE4NjpcXHRcXHRcXHRicmNtZl9md2VoX3JlZ2lzdGVyKGNmZy1cXHUwMDNlcHViLCBCUkNNRl9FX1BGTl9ORVRfRk9VTkQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNDE4Ny1cXHRcXHRcXHRcXHRcXHQgICAgYnJjbWZfbm90aWZ5X3NjaGVkX3NjYW5fcmVzdWx0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz00MTk0PXN0YXRpYyB2b2lkIGJyY21mX2NvbmZpZ3VyZV93b3dsKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00MjMxLVxcdFxcdC8qIE5vdyByZXJvdXRlIHRoZSBldmVudCBmb3IgUEZOIHRvIHRoZSB3b3dsIGZ1bmN0aW9uLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjQyMzI6XFx0XFx0YnJjbWZfZndlaF91bnJlZ2lzdGVyKGNmZy1cXHUwMDNlcHViLCBCUkNNRl9FX1BGTl9ORVRfRk9VTkQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjQyMzM6XFx0XFx0YnJjbWZfZndlaF9yZWdpc3RlcihjZmctXFx1MDAzZXB1YiwgQlJDTUZfRV9QRk5fTkVUX0ZPVU5ELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTQyMzQtXFx0XFx0XFx0XFx0ICAgIGJyY21mX3dvd2xfbmRfcmVzdWx0cyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02Nzc3PXN0YXRpYyB2b2lkIGJyY21mX3JlZ2lzdGVyX2V2ZW50X2hhbmRsZXJzKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02Nzk2LVxcdFxcdFxcdCAgICBicmNtZl9ub3RpZnlfY29ubmVjdF9zdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjY3OTc6XFx0YnJjbWZfZndlaF9yZWdpc3RlcihjZmctXFx1MDAzZXB1YiwgQlJDTUZfRV9QRk5fTkVUX0ZPVU5ELFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY3OTgtXFx0XFx0XFx0ICAgIGJyY21mX25vdGlmeV9zY2hlZF9zY2FuX3Jlc3VsdHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2Z3ZWguaD0xOD1zdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md2VoLmgtNTgtXFx0QlJDTUZfRU5VTV9ERUYoUk9BTV9QUkVQLCAzMikgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9md2VoLmg6NTk6XFx0QlJDTUZfRU5VTV9ERUYoUEZOX05FVF9GT1VORCwgMzMpIFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvZndlaC5oLTYwLVxcdEJSQ01GX0VOVU1fREVGKFBGTl9ORVRfTE9TVCwgMzQpIFxcXFxcXG4tLVxcbmluY2x1ZGUvbmV0L2ZvdS5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG5pbmNsdWRlL25ldC9mb3UuaDoyOiNpZm5kZWYgX19ORVRfRk9VX0hcXG5pbmNsdWRlL25ldC9mb3UuaDozOiNkZWZpbmUgX19ORVRfRk9VX0hcXG5pbmNsdWRlL25ldC9mb3UuaC00LVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zMTY9Y29uZmlnIE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTMyMC1cXG5uZXQvaXB2NC9LY29uZmlnOjMyMTpjb25maWcgTkVUX0ZPVVxcbm5ldC9pcHY0L0tjb25maWctMzIyLVxcdHRyaXN0YXRlIFxcXCJJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zMjktXFxubmV0L2lwdjQvS2NvbmZpZzozMzA6Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xcbm5ldC9pcHY0L0tjb25maWctMzMxLVxcdGJvb2wgXFxcIklQOiBGT1UgZW5jYXBzdWxhdGlvbiBvZiBJUCB0dW5uZWxzXFxcIlxcbm5ldC9pcHY0L0tjb25maWctMzMyLVxcdGRlcGVuZHMgb24gTkVUX0lQSVAgfHwgTkVUX0lQR1JFIHx8IElQVjZfU0lUXFxubmV0L2lwdjQvS2NvbmZpZzozMzM6XFx0c2VsZWN0IE5FVF9GT1VcXG5uZXQvaXB2NC9LY29uZmlnLTMzNC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9NYWtlZmlsZT0yNz1mb3UteSA6PSBmb3VfY29yZS5vIGZvdV9ubC5vIGZvdV9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19ORVRfRk9VKSArPSBmb3Uub1xcbm5ldC9pcHY0L01ha2VmaWxlLTI5LW9iai0kKENPTkZJR19ORVRfSVBHUkVfREVNVVgpICs9IGdyZS5vXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jPTEwMjk9RVhQT1JUX1NZTUJPTChfX2d1ZV9idWlsZF9oZWFkZXIpO1xcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtMTAzMC1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjEwMzE6I2lmZGVmIENPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFNcXG5uZXQvaXB2NC9mb3VfY29yZS5jLTEwMzItXFxuLS1cXG5uZXQvaXB2NC91ZHBfb2ZmbG9hZC5jPTM1PXN0cnVjdCB1ZHBfdHVubmVsX3R5cGVfZW50cnkge1xcbi0tXFxubmV0L2lwdjQvdWRwX29mZmxvYWQuYy00MS1cXHRcXHRcXHQgICAgICBJU19FTkFCTEVEKENPTkZJR19WWExBTikgKiAyICsgXFxcXFxcbm5ldC9pcHY0L3VkcF9vZmZsb2FkLmM6NDI6XFx0XFx0XFx0ICAgICAgSVNfRU5BQkxFRChDT05GSUdfTkVUX0ZPVSkgKiAyICsgXFxcXFxcbm5ldC9pcHY0L3VkcF9vZmZsb2FkLmMtNDMtXFx0XFx0XFx0ICAgICAgSVNfRU5BQkxFRChDT05GSUdfWEZSTSkgKiAyKVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0yMjg9Y29uZmlnIElQVjZfRk9VXFxubmV0L2lwdjYvS2NvbmZpZy0yMjktXFx0dHJpc3RhdGVcXG5uZXQvaXB2Ni9LY29uZmlnOjIzMDpcXHRkZWZhdWx0IE5FVF9GT1UgXFx1MDAyNlxcdTAwMjYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjMxLVxcbm5ldC9pcHY2L0tjb25maWc9MjMyPWNvbmZpZyBJUFY2X0ZPVV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIzMy1cXHR0cmlzdGF0ZVxcbm5ldC9pcHY2L0tjb25maWc6MjM0OlxcdGRlZmF1bHQgTkVUX0ZPVV9JUF9UVU5ORUxTIFxcdTAwMjZcXHUwMDI2IElQVjZfRk9VXFxubmV0L2lwdjYvS2NvbmZpZy0yMzUtXFx0c2VsZWN0IElQVjZfVFVOTkVMXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnPTc0PUNPTkZJR19ORVRfQ0xTX01BVENIQUxMPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjc1OkNPTkZJR19ORVRfRk9VPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnOjc2OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWctNzctQ09ORklHX05FVF9JUEdSRT15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnPTg2PUNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0hMPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjg3OkNPTkZJR19ORVRfRk9VPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjg4OkNPTkZJR19ORVRfRk9VX0lQX1RVTk5FTFM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWctODktQ09ORklHX05FVF9JUEdSRT1tXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUzOjAyLjQ0MTgxNjcxM1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI5OTg5NDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zLiBGcm9tIHdoYXQgSSBzZWUsIGBORVRfRk9VYCBhbmQgYE5FVF9GT1VfSVBfVFVOTkVMU2AgYXJlIGRlZmluaXRlbHkgc29saWQgY29uZmlndXJhdGlvbnMsIGdvb2Qgc3RhcnRpbmcgcG9pbnRzLiBCdXQsIGJlY2F1c2UgYE5FVF9GT1VfSVBfVFVOTkVMU2AgaGFzIHNvbWUgZGVwZW5kZW5jaWVzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBjb3ZlcmVkLiBSaWdodCwgc28gdGhhdCBtZWFucyBJIG5lZWQgdG8gYWxzbyBjaGVjayBvdXQgYE5FVF9JUElQYCwgb3IgcG90ZW50aWFsbHkgYE5FVF9JUEdSRWAsIG9yIGV2ZW4gYElQVjZfU0lUYCBzaW5jZSB0aGV5J3JlIGFsbCByZWxhdGVkIHRvIHRoZSBgTkVUX0ZPVV9JUF9UVU5ORUxTYCBzZXR1cC4gTGV0J3Mgc3RhcnQgd2l0aCBhIGNsb3NlciBsb29rIGF0IGBORVRfSVBJUGAgYW5kIGBORVRfSVBHUkVgIGFuZCBzZWUgd2hhdCB0aGV5J3JlIGRvaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA2OSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUzOjA2LjI3MTgwOTQzOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4OTk0Mzk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0lQSVBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0xNDk9Y29uZmlnIElQX1BOUF9SQVJQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE2MS1cXG5uZXQvaXB2NC9LY29uZmlnOjE2Mjpjb25maWcgTkVUX0lQSVBcXG5uZXQvaXB2NC9LY29uZmlnLTE2My1cXHR0cmlzdGF0ZSBcXFwiSVA6IHR1bm5lbGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6MDcuNzYxNzU4NTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgwNDk5MzE1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDaGVja2luZyBgY29uZmlnIE5FVF9JUEdSRWAqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIHJpZ2h0IGluLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBvZiBgTkVUX0lQR1JFYC4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBsaWtlbHkgbG9va2luZyBmb3IgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBHUkUgKEdlbmVyaWMgUm91dGluZyBFbmNhcHN1bGF0aW9uKSB0dW5uZWxzIHdpdGhpbiBhIG5ldHdvcmsgY29uZmlndXJhdGlvbiDigJMgcHJvYmFibHkgcmVsYXRlZCB0byBhIExpbnV4IGtlcm5lbCBvciBuZXR3b3JraW5nIGFwcGxpYW5jZS4gVGhlIHByZWNpc2UgbWVhbmluZyBoaW5nZXMgb24gdGhlIG92ZXJhcmNoaW5nIHByb2JsZW0gSSdtIHRyeWluZyB0byBzb2x2ZSwgYnV0IEkgbmVlZCB0byBzdGFydCBoZXJlLiBJIHdhbnQgdG8gY29uZmlybSBpZiBHUkUgaXMgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmZpZ3VyZWQgaW4gYSBub24tc3RhbmRhcmQgd2F5LlxuXG5EZXBlbmRpbmcgb24gd2hhdCBJIGZpbmQsIHRoZSBuZXh0IHF1ZXN0aW9ucyBpbW1lZGlhdGVseSBzcHJpbmcgdG8gbWluZC4gSWYgZW5hYmxlZCwgSSdsbCBuZWVkIHRvIGtub3c6IEFyZSB0aGUgR1JFIHR1bm5lbHMgY29uZmlndXJlZCBzdGF0aWNhbGx5LCBvciBhcmUgdGhleSBtYW5hZ2VkIGR5bmFtaWNhbGx5IChlLmcuLCB1c2luZyBhIHJvdXRpbmcgcHJvdG9jb2wpPyBXaGF0IGFyZSB0aGUgdHVubmVsIGVuZHBvaW50cyAoc291cmNlL2Rlc3RpbmF0aW9uIElQcyk/IFdoYXQgcHJvdG9jb2wgaXMgZW5jYXBzdWxhdGVkIChlLmcuLCBJUHY0LCBJUHY2KT8gV2hhdCdzIHRoZSBNVFUgc2V0dGluZyBmb3IgdGhlIHR1bm5lbCBpbnRlcmZhY2U/IEFueSB1c2Ugb2Yga2V5aW5nIG9yIGNoZWNrc3Vtcz9cblxuSWYgZGlzYWJsZWQsIEknbGwgYXNzZXNzIHdoZXRoZXIgdGhhdCdzIGV4cGVjdGVkIGJlaGF2aW9yLiBJdCBtYXkgYmUgZHVlIHRvIG90aGVyIGNvbnNpZGVyYXRpb25zLCBzZWN1cml0eSBjb25jZXJucywgb3IgYXJjaGl0ZWN0dXJlIG9mIHRoZSBuZXR3b3JrLiBBIGRpc2FibGluZyBzZXR0aW5nIGNvdWxkIHRyaWdnZXIgYW5vdGhlciBxdWVzdGlvbjogaXMgdGhlcmUgYW5vdGhlciB0eXBlIG9mIHR1bm5lbCBjb25maWd1cmF0aW9uPyBPciwgaXMgR1JFIHNpbXBseSByZWR1bmRhbnQ/IEFyZSB0aGVyZSBhbnkgZGVwZW5kZW5jaWVzP1xuXG5Fc3NlbnRpYWxseSwgSSdtIHRyeWluZyB0byBlc3RhYmxpc2ggYSBiYXNlbGluZS4gVW5kZXJzdGFuZGluZyB0aGUgc3RhdGUgb2YgYE5FVF9JUEdSRWAgaXMgdGhlIGNyaXRpY2FsIGZpcnN0IHN0ZXAgZm9yIGRpYWdub3NpbmcgYSBHUkUtcmVsYXRlZCBpc3N1ZSBvciBzZXR0aW5nIHVwIGEgbmV3IEdSRSB0dW5uZWwuIEknbSBidWlsZGluZyBhIG1lbnRhbCBtb2RlbCBvZiB0aGUgbmV0d29yaydzIHR1bm5lbCBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDI1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6MTIuNTY2NzU0NDQ1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDIyNjc2MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvS2NvbmZpZz0xNjI9Y29uZmlnIE5FVF9JUElQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cXG5uZXQvaXB2NC9LY29uZmlnOjE4MDpjb25maWcgTkVUX0lQR1JFX0RFTVVYXFxubmV0L2lwdjQvS2NvbmZpZy0xODEtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MTg2PWNvbmZpZyBORVRfSVBfVFVOTkVMXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cXG5uZXQvaXB2NC9LY29uZmlnOjE5Mjpjb25maWcgTkVUX0lQR1JFXFxubmV0L2lwdjQvS2NvbmZpZy0xOTMtXFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgdHVubmVscyBvdmVyIElQXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0yMDYtXFxubmV0L2lwdjQvS2NvbmZpZzoyMDc6Y29uZmlnIE5FVF9JUEdSRV9CUk9BRENBU1RcXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJJUDogYnJvYWRjYXN0IEdSRSBvdmVyIElQXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1MzoxNC45ODk0MzU0NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTUyOTE5ODk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEtlcm5lbCBNb2R1bGUgQ29uc2lkZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gaW50ZWdyYXRpbmcgdGhlc2UgbmV3IHR1bm5lbGluZyBwcm90b2NvbHMgaW50byB0aGUgc3lzdGVtLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYXBwcm9wcmlhdGUga2VybmVsIHN5bWJvbHMgYXJlIGVuYWJsZWQuIEknbGwgYWRkIGBORVRfRk9VYCwgYE5FVF9GT1VfSVBfVFVOTkVMU2AsIGBORVRfSVBJUGAsIGFuZCBgTkVUX0lQR1JFYCB0byB0aGUgbW9kdWxlIGNvbmZpZ3VyYXRpb24uIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC5cblxuTm93LCB0aGUgY29yZSBvZiB0aGlzIGludGVncmF0aW9uIGxpZXMgaW4gbW9kaWZ5aW5nIHRoZSBwYWNrZXQgaGFuZGxpbmcuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMsIGl0IHNlZW1zIHRoYXQgYF9fZ3VlX2J1aWxkX2hlYWRlcmAgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIHRoYXQgaGFzIGNoYW5nZWQuIEFkZGl0aW9uYWxseSwgdGhlcmUgYXJlIG1vZGlmaWNhdGlvbnMgdG8gYGlwX21kX3R1bm5lbF94bWl0YCBhbmQgYGlwX3R1bm5lbF94bWl0YCDigJMgcHJvYmFibHkgZm9yIHRoZSB0cmFuc21pc3Npb24gYXNwZWN0LlxuXG5UaGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyBhYm91dCBzeW1ib2wgdmlzaWJpbGl0eS4gQXJlIHRoZXNlIGZ1bmN0aW9ucyBhY2Nlc3NpYmxlIGZyb20gd2l0aGluIHRoZSBrZXJuZWwncyBtb2R1bGUgc3lzdGVtPyBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBkaXJlY3RseSBjYWxsIG9yIHVzZSB0aGVtLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBfX2d1ZV9idWlsZF9oZWFkZXJgLCBgaXBfbWRfdHVubmVsX3htaXRgIGFuZCBgaXBfdHVubmVsX3htaXRgIGFyZSBhbGwgZXhwb3J0ZWQsIHdoaWNoIG1lYW5zIEkgY2FuIGRpcmVjdGx5IHV0aWxpemUgdGhlc2UgZnVuY3Rpb25zIHdpdGhpbiBteSBuZXcgbW9kdWxlLiBUaGF0J3MgYSBodWdlIHJlbGllZiwgaXQgbWVhbnMgdGhpcyBpbnRlZ3JhdGlvbiBzaG91bGQgYmUgZmVhc2libGUgYW5kIHRoYXQgSSB3b24ndCBoYXZlIHRvIGp1bXAgdGhyb3VnaCBhbnkgdW5leHBlY3RlZCBob29wcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMzEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6MTkuOTQyMzU3ODVaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzMwNDIzMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qaXBfdHVubmVsX3htaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfdHVubmVsLmM9NjcwPXZvaWQgaXBfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTg2Mi19XFxubmV0L2lwdjQvaXBfdHVubmVsLmM6ODYzOkVYUE9SVF9TWU1CT0xfR1BMKGlwX3R1bm5lbF94bWl0KTtcXG5uZXQvaXB2NC9pcF90dW5uZWwuYy04NjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUzOjIxLjg3NTQwNzgzNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzU1OTA4Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gYGlwX21kX3R1bm5lbF94bWl0YCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gcmV2aXNpdCBgaXBfbWRfdHVubmVsX3htaXRgLiBJIG5lZWQgdG8gZ2V0IGJhY2sgaW4gdGhlIHdlZWRzIHdpdGggdGhpcyBmdW5jdGlvbi4gSXQncyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBJUC1pbi1JUCB0dW5uZWwgdHJhbnNtaXNzaW9uIHB1enpsZSwgYW5kIEknbSBpdGNoaW5nIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrIEkgY2FuIGltcHJvdmUuIExldCdzIG1ha2Ugc3VyZSBpdOKAmXMgaGFuZGxpbmcgdGhlIHBhY2tldCBjb25zdHJ1Y3Rpb24gZWZmaWNpZW50bHkuIEFyZSB0aGUgbWVtb3J5IGNvcGllcyBvcHRpbWl6ZWQ/IEFueSB1bm5lY2Vzc2FyeSBzeXN0ZW0gY2FsbHM/IFdoYXQgYWJvdXQgYWxpZ25tZW50IGlzc3VlcyBpbXBhY3RpbmcgQ1BVIGNhY2hlIHVzYWdlPyBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyAob3IgdGhlIHBhaW4pIGhhcHBlbnMsIHNvIEkgbmVlZCBhIGNsZWFyIG1lbnRhbCBwaWN0dXJlIG9mIGl0cyBpbm5lciB3b3JraW5ncy4gSeKAmWxsIHN0YXJ0IGJ5IHJldmlld2luZyB0aGUgY29kZSBhZ2FpbiB3aXRoIGEgZnJlc2ggcGVyc3BlY3RpdmUsIG1heWJlIHRyYWNlIHNvbWUgcGFja2V0cyB0aHJvdWdoIHRvIHNlZSBob3cgaXQgcGVyZm9ybXMgaW4gYSByZWFsLXdvcmxkIHNjZW5hcmlvLiBMZXTigJlzIGlkZW50aWZ5IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBvciB3b3JzZSwgYnVncy4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsb29raW5nIGF0IHRoZSBkYXRhIHN0cnVjdHVyZSBtYW5pcHVsYXRpb24uIFRoZSBoZWFkZXIgY29uc3RydWN0aW9uIGxvZ2ljIGlzIHVzdWFsbHkgd2hlcmUgSSBmaW5kIHN1cnByaXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1NTgsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1MzoyNS42MzEzMTkyNjRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTUyMzg0NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qaXBfbWRfdHVubmVsX3htaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfdHVubmVsLmM9NTcxPXZvaWQgaXBfbWRfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L2lwX3R1bm5lbC5jLTY2Ny19XFxubmV0L2lwdjQvaXBfdHVubmVsLmM6NjY4OkVYUE9SVF9TWU1CT0xfR1BMKGlwX21kX3R1bm5lbF94bWl0KTtcXG5uZXQvaXB2NC9pcF90dW5uZWwuYy02NjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUzOjI3LjU0NjU2MjU3N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODk3ODM1NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIGluIHRoZSBmaXJzdCBwZXJzb24gYW5kIGFzc3VtaW5nIHRoZSB1c2VyIGlzIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIGBfX2d1ZV9idWlsZF9oZWFkZXJgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYF9fZ3VlX2J1aWxkX2hlYWRlcmAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGFzY2VydGFpbiBpdHMgcHVycG9zZS4gR2l2ZW4gdGhlIG5hbWUsIEknbSBleHBlY3RpbmcgaXQgcHJvYmFibHkgY29uc3RydWN0cyBvciBtYW5hZ2VzIHNvbWUgaGVhZGVyIGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgR1VFIGZyYW1ld29yaywgYnV0IGEgcXVpY2sgY29uZmlybWF0aW9uIGlzIGFsd2F5cyB3aXNlLiBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhhdCBpdCBtaWdodCBpbnZvbHZlIHRhc2tzIGxpa2U6XG5cbiogICAqKlZlcnNpb25pbmc6KiogRG9lcyBpdCBoYW5kbGUgdmVyc2lvbiBpZGVudGlmaWVycyBmb3IgdGhlIGJ1aWx0IGFydGlmYWN0PyBQZXJoYXBzIGl0IGVtYmVkcyB0aGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIGJ1aWxkIHRvb2wgb3IgYSBjb21wb25lbnQ/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogTWF5YmUgaXQgbGlzdHMgdGhlIGRlcGVuZGVuY2llcyBiYWtlZCBpbnRvIHRoZSBmaW5hbCBvdXRwdXQuIEl0J3Mgb2Z0ZW4gaGVscGZ1bCB0byBrbm93IHRoZSBleGFjdCBkZXBlbmRlbmN5IHZlcnNpb25zIHVzZWQgYXQgYnVpbGQgdGltZS5cbiogICAqKk1ldGFkYXRhOioqIERvZXMgaXQgc3RvcmUgYW55IG1ldGFkYXRhIHJlZ2FyZGluZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXRzZWxmPyBUaGluayBidWlsZCBzeXN0ZW0gZGV0YWlscywgY29tcGlsZXIgZmxhZ3MsIGhvc3RuYW1lLCB0aW1lc3RhbXBzLCBldGMuP1xuKiAgICoqQ2hlY2tzdW1zL0hhc2hlczoqKiBDb3VsZCBpdCBjb21wdXRlIGFuZCBpbmNsdWRlIGNoZWNrc3VtcyBvciBjcnlwdG9ncmFwaGljIGhhc2hlcyBmb3IgaW50ZWdyaXR5IHZlcmlmaWNhdGlvbj8gVGhhdOKAmWQgYmUgYSBzbWFydCBhZGRpdGlvbi5cbiogICAqKkZvcm1hdDoqKiBJIGFtIGNvbnNpZGVyaW5nIHdoYXQgZm9ybWF0IGl0IHVzZXMgZm9yIHRoZSBoZWFkZXIuIElzIGl0IGEgcGxhaW4gdGV4dCBmb3JtYXQsIGEgc3RydWN0dXJlZCBmb3JtYXQgbGlrZSBKU09OIG9yIFlBTUwsIG9yIHNvbWV0aGluZyBtb3JlIGJlc3Bva2U/XG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBidWlsZCBwcm9jZXNzLiBJcyBpdCBjYWxsZWQgZWFybHksIGxhdGUsIG9yIGF0IGV2ZXJ5IHN0YWdlPyBJcyBpdCBjcml0aWNhbCBmb3IgY29tcGlsYXRpb24sIGxpbmtpbmcsIG9yIHBvc3QtcHJvY2Vzc2luZz8gSSBhbSBub3cgZm9ybWluZyB0aGUgcXVlc3Rpb25zIHRvIGd1aWRlIHRoZSBleGFtaW5hdGlvbjogV2hhdCBpcyBpdCBjYWxsZWQgd2l0aD8gV2hhdCBkb2VzIGl0IHJldHVybj8gV2hhdCBpcyBpdCB1c2VkIGZvcj8gRG9lcyBpdCB3cml0ZSB0byBhIGZpbGUsIG1vZGlmeSBhbiBpbi1tZW1vcnkgc3RydWN0dXJlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT9cblxuT25jZSBJIGtub3cgdGhlIGZ1bmRhbWVudGFsIGpvYiwgSSdsbCB0aGVuIG1vdmUgdG93YXJkcyB1bmRlcnN0YW5kaW5nIHRoZSBkZXRhaWxzIG9mIGl0cyBpbXBsZW1lbnRhdGlvbiwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBjb21wb25lbnRzIG9mIHRoZSBzeXN0ZW0uIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4sIHdoaWNoIGFyZSBwcm9iYWJseSB0aGUgZm9sbG93aW5nOlxuXG4qICAgKipTZWN1cml0eToqKiBkb2VzIGl0IGFkZCBhbnkgc2VjdXJpdHkgY29uY2VybnM/XG4qICAgKipQZXJmb3JtYW5jZToqKiBjb3VsZCBpdCBpbXBhY3QgYnVpbGQgdGltZXM/XG4qICAgKipNYWludGFpbmFiaWxpdHk6KiogaXMgdGhlIGNvZGUgY2xlYW4gYW5kIHdlbGwtZG9jdW1lbnRlZD9cblxuSSdtIHN0YXJ0aW5nIHRoZSBtZW50YWwgY2hlY2tsaXN0LiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTQ3LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6MzMuNDQ0NDAwNzIyWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMxODI2Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKl9fZ3VlX2J1aWxkX2hlYWRlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9mb3VfY29yZS5jPTk1Nj1pbnQgX19ndWVfYnVpbGRfaGVhZGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpcF90dW5uZWxfZW5jYXAgKmUsXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jLTEwMjgtfVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmM6MTAyOTpFWFBPUlRfU1lNQk9MKF9fZ3VlX2J1aWxkX2hlYWRlcik7XFxubmV0L2lwdjQvZm91X2NvcmUuYy0xMDMwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1MzozNS4zNzYyMzU3MTdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzAyNDY3NTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIFZ1bG5lcmFiaWxpdHkgYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgaGVyZSdzIHRoZSBicmVha2Rvd24gb2YgdGhpcyBwYXRjaCwgYXMgSSBzZWUgaXQuIFRoZSBmb2N1cyBzeW1ib2xzIGxvb2sgcHJvbWlzaW5nLCBhbmQgaXQncyBkZWZpbml0ZWx5IGEgZml4IHdvcnRoIGRpZ2dpbmcgaW50by5cblxuQmFzaWNhbGx5LCB0aGVyZSdzIGEgYnVnIGluIHRoZSBJUCB0dW5uZWwgZW5jYXBzdWxhdGlvbiBwcm9jZXNzIHdoZXJlIGBpcF90dW5uZWxfZW5jYXBgIG1pZ2h0IHJlYWxsb2NhdGUgdGhlIHNrYiAoc29ja2V0IGJ1ZmZlciksIGFuZCB0aGUgY29kZSB3YXMgcmVhZGluZyBgaW5uZXJfaXBoYCAqYmVmb3JlKiB0aGUgcG90ZW50aWFsIHJlYWxsb2NhdGlvbi4gVGhpcywgYXMgd2Uga25vdywgaXMgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSB1c2UtYWZ0ZXItZnJlZSBvciBhIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIOKAkyBzb21ldGhpbmcgd2UndmUgc2VlbiBleHBsb2l0ZWQgYmVmb3JlLCBJJ20gc3VyZSwgYW5kIHNvbWV0aGluZyB3ZSBhYnNvbHV0ZWx5IG5lZWQgdG8gYWRkcmVzcy4gVGhpcyBwYXRjaCByZW9yZGVycyB0aGUgYXNzaWdubWVudCBzbyB0aGF0IHRoZSByZWFkIG9mIGBpbm5lcl9pcGhgIG9jY3VycyAqYWZ0ZXIqIGFueSByZWFsbG9jYXRpb24sIHByb3RlY3RpbmcgdGhlIGBpbm5lcl9pcGhgIHBvaW50ZXIuIFRoZSBwYXRjaCBhbHNvIGluY2x1ZGVzIGEgY2hlY2sgZm9yIGBza2JfY293X2hlYWRgIGluIGBfX2d1ZV9idWlsZF9oZWFkZXJgLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgsIHNwZWNpZmljYWxseSB0aGF0IGl0J3MgdG91Y2hpbmcgRk9VL0dVRSBlbmNhcHN1bGF0aW9uIGFuZCBJUCB0dW5uZWwgY29yZSBuZXR3b3JraW5nIGxvZ2ljLCB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBXZSdyZSB0YWxraW5nIGFib3V0IGZ1bmRhbWVudGFsIHBhY2tldCBoYW5kbGluZyBoZXJlLCB3aGljaCBtZWFucyB0aGVyZSdzIGEgaGlnaCBwcm9iYWJpbGl0eSBvZiBmaW5kaW5nIGlzc3VlcyB0aGF0IGNvdWxkIGxlYWQgdG8gc2VyaW91cyB2dWxuZXJhYmlsaXRpZXMuXG5cbkluIHN1bW1hcnksIEknbSBtYXJraW5nIHRoaXMgYXMgYFdvcnRoRnV6emluZzogdHJ1ZWAgYmVjYXVzZSBpdCBkaXJlY3RseSBpbXBhY3RzIGNydWNpYWwgbmV0d29yayBmdW5jdGlvbmFsaXR5IGFuZCBhZGRyZXNzZXMgYSBjbGVhciBtZW1vcnkgc2FmZXR5IGlzc3VlLiBUaGUgZm9jdXMgc3ltYm9scyBJJ20ga2V5aW5nIG9uIGFyZTogYF9fZ3VlX2J1aWxkX2hlYWRlcmAsIGBpcF9tZF90dW5uZWxfeG1pdGAsIGFuZCBgaXBfdHVubmVsX3htaXRgLiBXZSBzaG91bGQgYWxzbyBlbnN1cmUgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgZW5hYmxlZCBmb3IgY29tcHJlaGVuc2l2ZSB0ZXN0aW5nOiBgTkVUX0ZPVWAsIGBORVRfRk9VX0lQX1RVTk5FTFNgLCBgTkVUX0lQSVBgLCBhbmQgYE5FVF9JUEdSRWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNTcxLCJPdXRwdXRUb2tlbnMiOjE4NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mzo0Mi40MDA5MTM1OTdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTUyMzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiLFxuICAgIFwiTkVUX0ZPVV9JUF9UVU5ORUxTXCIsXG4gICAgXCJORVRfSVBJUFwiLFxuICAgIFwiTkVUX0lQR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ndWVfYnVpbGRfaGVhZGVyXCIsXG4gICAgXCJpcF9tZF90dW5uZWxfeG1pdFwiLFxuICAgIFwiaXBfdHVubmVsX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MgYnkgcmVvcmRlcmluZyB0aGUgYXNzaWdubWVudCBvZiBgaW5uZXJfaXBoYCBhZnRlciBgaXBfdHVubmVsX2VuY2FwYCwgd2hpY2ggY2FuIHJlYWxsb2NhdGUgdGhlIHNrYiBoZWFkLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBmb3IgYHNrYl9jb3dfaGVhZGAgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcmAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIChGT1UvR1VFIGVuY2Fwc3VsYXRpb24gYW5kIElQIHR1bm5lbHMpIHRoYXQgYXJlIHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRk9VXCIsXG4gICAgXCJORVRfRk9VX0lQX1RVTk5FTFNcIixcbiAgICBcIk5FVF9JUElQXCIsXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2d1ZV9idWlsZF9oZWFkZXJcIixcbiAgICBcImlwX21kX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcF90dW5uZWxfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGludmFsaWQgbWVtb3J5IGFjY2VzcyBieSByZW9yZGVyaW5nIHRoZSBhc3NpZ25tZW50IG9mIGBpbm5lcl9pcGhgIGFmdGVyIGBpcF90dW5uZWxfZW5jYXBgLCB3aGljaCBjYW4gcmVhbGxvY2F0ZSB0aGUgc2tiIGhlYWQuIEl0IGFsc28gYWRkcyBhIGNoZWNrIGZvciBgc2tiX2Nvd19oZWFkYCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiBjb3JlIG5ldHdvcmtpbmcgbG9naWMgKEZPVS9HVUUgZW5jYXBzdWxhdGlvbiBhbmQgSVAgdHVubmVscykgdGhhdCBhcmUgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMVQxNTo1Mzo0Mi40ODA0NDU4NjVaIiwiU2VxIjoyOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTM2ODAyMjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6NDIuNDgwOTY3MTU0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE2MTM2Mjc2NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHVzZS1hZnRlci1mcmVlIChVQUYpIHZ1bG5lcmFiaWxpdHkuIFRoZSBmdW5jdGlvbiBgaXBfdHVubmVsX2VuY2FwKClgIGNhbiByZWFsbG9jYXRlIHRoZSBgc2tiYCBoZWFkIChmb3IgZXhhbXBsZSwgdmlhIGBza2JfY293X2hlYWQoKWAgd2hpY2ggaXMgYWRkZWQgaW4gYF9fZ3VlX2J1aWxkX2hlYWRlcigpYCBieSB0aGlzIHBhdGNoKS4gSWYgYGlubmVyX2lwaGAgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIGBpcF90dW5uZWxfZW5jYXAoKWAgaXMgY2FsbGVkLCBpdCB3aWxsIHBvaW50IHRvIHRoZSBvbGQsIGZyZWVkIGBza2JgIGhlYWQsIGxlYWRpbmcgdG8gYSBVQUYgd2hlbiBgaW5uZXJfaXBoYCBpcyBsYXRlciBkZXJlZmVyZW5jZWQuIEJ5IG1vdmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYGlubmVyX2lwaGAgdG8gYWZ0ZXIgYGlwX3R1bm5lbF9lbmNhcCgpYCwgdGhlIHBhdGNoIGVuc3VyZXMgaXQgcG9pbnRzIHRvIHRoZSBjb3JyZWN0LCBwb3RlbnRpYWxseSByZWFsbG9jYXRlZCBgc2tiYCBoZWFkLlxcblxcblVzZS1hZnRlci1mcmVlIGJ1Z3MgYW5kIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYXJlIHJlbGlhYmx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGVyZSBpcyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkLCB1bmluaXRpYWxpemVkIHN0cnVjdHVyZSBwYWRkaW5nLCBvciBpbmZvLWxlYWsgaW52b2x2ZWQgaW4gdGhpcyBidWcgb3IgaXRzIGZpeC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeSwgYXMgc3RhbmRhcmQgS0FTQU4gaXMgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIGNhdGNoaW5nIHRoaXMgY2xhc3Mgb2YgbWVtb3J5IGNvcnJ1cHRpb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzg0ODFlZmUyNjUxZDBlMzA2ZjIzODhhZWIzZGM2Mjk2ZWJmOGZjZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDIxIDE1OjUyOjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZm91X2NvcmUuYyBiL25ldC9pcHY0L2ZvdV9jb3JlLmNcbmluZGV4IGFiMDlkZmNkZWNiZDUuLjhjZjBkNDNhY2I0MTIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jXG4rKysgYi9uZXQvaXB2NC9mb3VfY29yZS5jXG5AQCAtOTgwLDYgKzk4MCw4IEBAIGludCBfX2d1ZV9idWlsZF9oZWFkZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGlwX3R1bm5lbF9lbmNhcCAqZSxcbiBcdFx0XHRcdFx0XHRza2IsIDAsIDAsIGZhbHNlKTtcbiBcbiBcdGhkcmxlbiA9IHNpemVvZihzdHJ1Y3QgZ3VlaGRyKSArIG9wdGxlbjtcbitcdGlmIChza2JfY293X2hlYWQoc2tiLCBoZHJsZW4gKyBzaXplb2Yoc3RydWN0IHVkcGhkcikpKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHNrYl9wdXNoKHNrYiwgaGRybGVuKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF90dW5uZWwuYyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5pbmRleCA5ZDExNGJkNTc1ZjkyLi4yYmQ2ODRlYjJiYTI1IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfdHVubmVsLmNcbisrKyBiL25ldC9pcHY0L2lwX3R1bm5lbC5jXG5AQCAtNjA2LDYgKzYwNiw3IEBAIHZvaWQgaXBfbWRfdHVubmVsX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGlmIChpcF90dW5uZWxfZW5jYXAoc2tiLCBcdTAwMjZ0dW5faW5mby1cdTAwM2VlbmNhcCwgXHUwMDI2cHJvdG8sIFx1MDAyNmZsNCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4rXHRpbm5lcl9pcGggPSAoY29uc3Qgc3RydWN0IGlwaGRyICopc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYik7XG4gXG4gXHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcbiBcdGlmICh1c2VfY2FjaGUpXG5AQCAtNzY1LDggKzc2NiwxMiBAQCB2b2lkIGlwX3R1bm5lbF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2VuZXQsIFJFQURfT05DRSh0dW5uZWwtXHUwMDNlcGFybXMubGluayksXG4gXHRcdFx0ICAgIHR1bm5lbC1cdTAwM2Vmd21hcmssIHNrYl9nZXRfaGFzaChza2IpLCAwKTtcbiBcbitcdGRmID0gdG5sX3BhcmFtcy1cdTAwM2VmcmFnX29mZjtcbitcdHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO1xuK1xuIFx0aWYgKGlwX3R1bm5lbF9lbmNhcChza2IsIFx1MDAyNnR1bm5lbC1cdTAwM2VlbmNhcCwgXHUwMDI2cHJvdG9jb2wsIFx1MDAyNmZsNCkgXHUwMDNjIDApXG4gXHRcdGdvdG8gdHhfZXJyb3I7XG4rXHRpbm5lcl9pcGggPSAoY29uc3Qgc3RydWN0IGlwaGRyICopc2tiX2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYik7XG4gXG4gXHRpZiAoY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBtZCkge1xuIFx0XHR1c2VfY2FjaGUgPSBpcF90dW5uZWxfZHN0X2NhY2hlX3VzYWJsZShza2IsIHR1bl9pbmZvKTtcbkBAIC03OTksNyArODA0LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRnb3RvIHR4X2Vycm9yO1xuIFx0fVxuIFxuLVx0ZGYgPSB0bmxfcGFyYW1zLVx1MDAzZWZyYWdfb2ZmO1xuIFx0aWYgKHBheWxvYWRfcHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApIFx1MDAyNlx1MDAyNiAhdHVubmVsLVx1MDAzZWlnbm9yZV9kZilcbiBcdFx0ZGYgfD0gKGlubmVyX2lwaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfREYpKTtcbiBcbkBAIC04MjEsNyArODI1LDYgQEAgdm9pZCBpcF90dW5uZWxfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0fVxuIFxuIFx0dG9zID0gaXBfdHVubmVsX2Vjbl9lbmNhcCh0b3MsIGlubmVyX2lwaCwgc2tiKTtcbi1cdHR0bCA9IHRubF9wYXJhbXMtXHUwMDNldHRsO1xuIFx0aWYgKHR0bCA9PSAwKSB7XG4gXHRcdGlmIChwYXlsb2FkX3Byb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSlcbiBcdFx0XHR0dGwgPSBpbm5lcl9pcGgtXHUwMDNldHRsO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjFUMTU6NTM6NDIuNDgwOTY4MTE0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MTM2MjUwMjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBOZXR3b3JrIFR1bm5lbGluZyBQYXRjaCoqXG5cbk9rYXksIGxldCBtZSBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IHRhcmdldHMgYSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZSwgc3BlY2lmaWNhbGx5IGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgY29uZGl0aW9uIHdpdGhpbiB0aGUgbmV0d29yayB0dW5uZWxpbmcgY29kZS4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gc3RlbSBmcm9tIGhvdyB0aGUgY29kZSBoYW5kbGVzIGBza2JgIChzb2NrZXQgYnVmZmVyKSBoZWFkZXJzLCBwYXJ0aWN1bGFybHkgZHVyaW5nIGVuY2Fwc3VsYXRpb24uXG5cbk15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGZvY3VzZWQgb24gYG5ldC9pcHY0L2ZvdV9jb3JlLmNgIGFuZCBgbmV0L2lwdjQvaXBfdHVubmVsLmNgLiBJbiBgZm91X2NvcmUuY2AsIGEgY2hlY2sgd2l0aCBgc2tiX2Nvd19oZWFkYCBpcyBpbnRyb2R1Y2VkIGJlZm9yZSBwdXNoaW5nIHRoZSBoZWFkZXIuIFRoaXMgaXMgYSBnb29kIHByYWN0aWNlIGFzIGl0IHByZS1lbXB0aXZlbHkgZW5zdXJlcyBlbm91Z2ggaGVhZHJvb20gaW4gdGhlIGBza2JgLCBtaXRpZ2F0aW5nIHRoZSByaXNrIG9mIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIG1lbW9yeSBjb3JydXB0aW9uLlxuXG5UaGUgbW9yZSBpbnRlcmVzdGluZyBwYXJ0LCBob3dldmVyLCBpcyBpbiBgaXBfdHVubmVsLmNgLiBUaGUgb3JpZ2luYWwgY29kZSBpbml0aWFsaXplcyBgaW5uZXJfaXBoYCAoYSBwb2ludGVyIHRvIHRoZSBpbm5lciBJUCBoZWFkZXIpIGJlZm9yZSBjYWxsaW5nIGBpcF90dW5uZWxfZW5jYXBgLiAgTm93LCBpdCBsb29rcyBsaWtlIGBpcF90dW5uZWxfZW5jYXBgIOKAkyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggZnVuY3Rpb25zIGxpa2UgYGZvdV9idWlsZF9oZWFkZXJgIG9yIGBndWVfYnVpbGRfaGVhZGVyYCDigJMgY2FuLCBhbmQgKmRvZXMqLCBjYWxsIGBza2JfY293X2hlYWRgLiBUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBpc3N1ZS4gVGhlIGBza2JfY293X2hlYWRgIGZ1bmN0aW9uIGNhbiByZWFsbG9jYXRlIHRoZSBtZW1vcnkgb2YgdGhlIGBza2JgIGhlYWQuIElmIHRoaXMgaGFwcGVucyAqYWZ0ZXIqIGBpbm5lcl9pcGhgIGhhcyBiZWVuIHNldCwgYnV0ICpiZWZvcmUqIHRoZSBwb2ludGVyIGlzIHVzZWQsICBgaW5uZXJfaXBoYCBlbmRzIHVwIHBvaW50aW5nIHRvIGEgZGVhbGxvY2F0ZWQgYW5kIHBvc3NpYmx5IG92ZXJ3cml0dGVuIG1lbW9yeSByZWdpb24uIFRoaXMgaXMgdGV4dGJvb2sgVUFGLCBvciBhIGRhbmdsaW5nIHBvaW50ZXIgYnVnLlxuXG5UaGUgcGF0Y2ggcmVzb2x2ZXMgdGhpcyBieSBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgb2YgYGlubmVyX2lwaGAgdG8gKmFmdGVyKiB0aGUgYGlwX3R1bm5lbF9lbmNhcGAgY2FsbC4gVGhpcyB3YXksIHRoZSBwb2ludGVyIGFsd2F5cyBwb2ludHMgdG8gdGhlIHZhbGlkIGFuZCBjb3JyZWN0IChwb3RlbnRpYWxseSByZWFsbG9jYXRlZCkgYHNrYmAgaGVhZC5cblxuR2l2ZW4gdGhhdCB0aGlzIGlzIGEgVUFGIGJ1ZywgYW5kIHRoYXQgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgaXMgZGVzaWduZWQgc3BlY2lmaWNhbGx5IHRvIGRldGVjdCBzdWNoIGlzc3VlcywgdGhlIGZpeCBzZWVtcyBhcHByb3ByaWF0ZS4gSeKAmW0gdGhpbmtpbmcgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvbmNlcm5zIGhlcmU7ICBgc2tiX2Nvd19oZWFkYCByZWFsbG9jYXRlcyBidXQgY29waWVzIHRoZSBvcmlnaW5hbCBkYXRhLCBhbmQgdGhlIG5ldyBoZWFkcm9vbSB3aWxsIGJlIGZpbGxlZCBsYXRlci4gVGhpcyBwYXRjaCBmdW5kYW1lbnRhbGx5IGFkZHJlc3NlcyBhIGRhbmdsaW5nIHBvaW50ZXIsIG5vdCBhbiB1bmluaXRpYWxpemVkIHJlYWQgb3IgaW5mb3JtYXRpb24gbGVhay4gVGhpcyBtZWFucyBhIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlxuXG5UaGVyZWZvcmUsIHRoZSBwYXRjaCBsb29rcyBsaWtlIGl0ICpzdWNjZXNzZnVsbHkqIG1pdGlnYXRlcyBhIFVBRiBieSBlbnN1cmluZyBgaW5uZXJfaXBoYCBwb2ludHMgdG8gdGhlIGNvcnJlY3RseSBhbGxvY2F0ZWQgYW5kIHZhbGlkIGBza2JgIG1lbW9yeS4gTm8gS01TQU4gbmVlZGVkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NTksIk91dHB1dFRva2VucyI6MjU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIxVDE1OjUzOjU4LjYxNzIyMjQ4NFoiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB1c2UtYWZ0ZXItZnJlZSAoVUFGKSB2dWxuZXJhYmlsaXR5LiBUaGUgZnVuY3Rpb24gYGlwX3R1bm5lbF9lbmNhcCgpYCBjYW4gcmVhbGxvY2F0ZSB0aGUgYHNrYmAgaGVhZCAoZm9yIGV4YW1wbGUsIHZpYSBgc2tiX2Nvd19oZWFkKClgIHdoaWNoIGlzIGFkZGVkIGluIGBfX2d1ZV9idWlsZF9oZWFkZXIoKWAgYnkgdGhpcyBwYXRjaCkuIElmIGBpbm5lcl9pcGhgIGlzIGluaXRpYWxpemVkIGJlZm9yZSBgaXBfdHVubmVsX2VuY2FwKClgIGlzIGNhbGxlZCwgaXQgd2lsbCBwb2ludCB0byB0aGUgb2xkLCBmcmVlZCBgc2tiYCBoZWFkLCBsZWFkaW5nIHRvIGEgVUFGIHdoZW4gYGlubmVyX2lwaGAgaXMgbGF0ZXIgZGVyZWZlcmVuY2VkLiBCeSBtb3ZpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBpbm5lcl9pcGhgIHRvIGFmdGVyIGBpcF90dW5uZWxfZW5jYXAoKWAsIHRoZSBwYXRjaCBlbnN1cmVzIGl0IHBvaW50cyB0byB0aGUgY29ycmVjdCwgcG90ZW50aWFsbHkgcmVhbGxvY2F0ZWQgYHNrYmAgaGVhZC5cXG5cXG5Vc2UtYWZ0ZXItZnJlZSBidWdzIGFuZCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFyZSByZWxpYWJseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlcmUgaXMgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCwgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmUgcGFkZGluZywgb3IgaW5mby1sZWFrIGludm9sdmVkIGluIHRoaXMgYnVnIG9yIGl0cyBmaXguIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnksIGFzIHN0YW5kYXJkIEtBU0FOIGlzIHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciBjYXRjaGluZyB0aGlzIGNsYXNzIG9mIG1lbW9yeSBjb3JydXB0aW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgdXNlLWFmdGVyLWZyZWUgKFVBRikgdnVsbmVyYWJpbGl0eS4gVGhlIGZ1bmN0aW9uIGBpcF90dW5uZWxfZW5jYXAoKWAgY2FuIHJlYWxsb2NhdGUgdGhlIGBza2JgIGhlYWQgKGZvciBleGFtcGxlLCB2aWEgYHNrYl9jb3dfaGVhZCgpYCB3aGljaCBpcyBhZGRlZCBpbiBgX19ndWVfYnVpbGRfaGVhZGVyKClgIGJ5IHRoaXMgcGF0Y2gpLiBJZiBgaW5uZXJfaXBoYCBpcyBpbml0aWFsaXplZCBiZWZvcmUgYGlwX3R1bm5lbF9lbmNhcCgpYCBpcyBjYWxsZWQsIGl0IHdpbGwgcG9pbnQgdG8gdGhlIG9sZCwgZnJlZWQgYHNrYmAgaGVhZCwgbGVhZGluZyB0byBhIFVBRiB3aGVuIGBpbm5lcl9pcGhgIGlzIGxhdGVyIGRlcmVmZXJlbmNlZC4gQnkgbW92aW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgaW5uZXJfaXBoYCB0byBhZnRlciBgaXBfdHVubmVsX2VuY2FwKClgLCB0aGUgcGF0Y2ggZW5zdXJlcyBpdCBwb2ludHMgdG8gdGhlIGNvcnJlY3QsIHBvdGVudGlhbGx5IHJlYWxsb2NhdGVkIGBza2JgIGhlYWQuXFxuXFxuVXNlLWFmdGVyLWZyZWUgYnVncyBhbmQgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhcmUgcmVsaWFibHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZXJlIGlzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWQsIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlIHBhZGRpbmcsIG9yIGluZm8tbGVhayBpbnZvbHZlZCBpbiB0aGlzIGJ1ZyBvciBpdHMgZml4LiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LCBhcyBzdGFuZGFyZCBLQVNBTiBpcyB0aGUgYXBwcm9wcmlhdGUgdG9vbCBmb3IgY2F0Y2hpbmcgdGhpcyBjbGFzcyBvZiBtZW1vcnkgY29ycnVwdGlvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow7wxsn[1] Phase: Succeeded StartedAt: 2026-08-21 15:54:10 +0000 UTC FinishedAt: 2026-08-21 15:54:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-21 15:54:10 +0000 UTC FinishedAt: 2026-08-21 15:54:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2] Phase: Succeeded StartedAt: 2026-08-21 15:54:10 +0000 UTC FinishedAt: 2026-08-21 19:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-21 15:54:10 +0000 UTC FinishedAt: 2026-08-21 19:32:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-21 15:54:10 +0000 UTC FinishedAt: 2026-08-21 15:54:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-21 15:54:10 +0000 UTC FinishedAt: 2026-08-21 15:54:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7wxsn/series-workflow7wxsn-convert-artifact-679891101/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-21 15:54:20 +0000 UTC FinishedAt: 2026-08-21 16:10:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-21 15:54:20 +0000 UTC FinishedAt: 2026-08-21 16:10:42 +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:*7faed5b7-40a0-4a57-918d-0bc6f435911e,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-workflow7wxsn/series-workflow7wxsn-convert-artifact-679891101/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": "2f2fe0eb-1ea3-40cd-80b6-ae4fcba04781", "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-workflow7wxsn/series-workflow7wxsn-build-action-691716563/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-21 15:54:20 +0000 UTC FinishedAt: 2026-08-21 16:10:32 +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:*7faed5b7-40a0-4a57-918d-0bc6f435911e,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-workflow7wxsn/series-workflow7wxsn-convert-artifact-679891101/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": "2f2fe0eb-1ea3-40cd-80b6-ae4fcba04781", "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-workflow7wxsn/series-workflow7wxsn-build-action-691716563/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-21 16:10:42 +0000 UTC FinishedAt: 2026-08-21 16:10:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-21 16:10:42 +0000 UTC FinishedAt: 2026-08-21 16:10:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-21 16:10:42 +0000 UTC FinishedAt: 2026-08-21 16:10:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-21 16:10:42 +0000 UTC FinishedAt: 2026-08-21 16:10:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7wxsn/series-workflow7wxsn-convert-artifact-2254748024/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-21 16:10:52 +0000 UTC FinishedAt: 2026-08-21 16:12:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-21 16:10:52 +0000 UTC FinishedAt: 2026-08-21 16:12:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2f2fe0eb-1ea3-40cd-80b6-ae4fcba04781,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-workflow7wxsn/series-workflow7wxsn-build-action-691716563/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-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-21 16:12:59 +0000 UTC FinishedAt: 2026-08-21 16:12:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-21 16:12:59 +0000 UTC FinishedAt: 2026-08-21 16:12:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-21 16:12:59 +0000 UTC FinishedAt: 2026-08-21 16:29:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-21 16:12:59 +0000 UTC FinishedAt: 2026-08-21 16:29:09 +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:*7faed5b7-40a0-4a57-918d-0bc6f435911e,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-workflow7wxsn/series-workflow7wxsn-convert-artifact-2254748024/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": "9ea969b8-de5a-4979-ac1f-2fb78cfd7e9d", "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-workflow7wxsn/series-workflow7wxsn-build-action-269377124/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-21 16:12:59 +0000 UTC FinishedAt: 2026-08-21 16:28:59 +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:*7faed5b7-40a0-4a57-918d-0bc6f435911e,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-workflow7wxsn/series-workflow7wxsn-convert-artifact-2254748024/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": "9ea969b8-de5a-4979-ac1f-2fb78cfd7e9d", "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-workflow7wxsn/series-workflow7wxsn-build-action-269377124/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-21 16:29:09 +0000 UTC FinishedAt: 2026-08-21 16:29:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-21 16:29:09 +0000 UTC FinishedAt: 2026-08-21 16:29:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-21 16:29:09 +0000 UTC FinishedAt: 2026-08-21 16:30:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-21 16:29:09 +0000 UTC FinishedAt: 2026-08-21 16:30:48 +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:*9ea969b8-de5a-4979-ac1f-2fb78cfd7e9d,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-workflow7wxsn/series-workflow7wxsn-build-action-269377124/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-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-21 16:30:58 +0000 UTC FinishedAt: 2026-08-21 19:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-21 16:30:58 +0000 UTC FinishedAt: 2026-08-21 19:32:35 +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":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"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:*2f2fe0eb-1ea3-40cd-80b6-ae4fcba04781,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9ea969b8-de5a-4979-ac1f-2fb78cfd7e9d,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-workflow7wxsn/series-workflow7wxsn-build-action-691716563/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-workflow7wxsn/series-workflow7wxsn-build-action-269377124/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-21 16:30:58 +0000 UTC FinishedAt: 2026-08-21 16:31:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-21 16:30:58 +0000 UTC FinishedAt: 2026-08-21 16:31:03 +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":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"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-workflow7wxsn/series-workflow7wxsn-convert-artifact-3074040017/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-21 16:30:58 +0000 UTC FinishedAt: 2026-08-21 16:30:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-21 16:30:58 +0000 UTC FinishedAt: 2026-08-21 16:30:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-21 16:30:58 +0000 UTC FinishedAt: 2026-08-21 16:30:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-21 16:31:08 +0000 UTC FinishedAt: 2026-08-21 19:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7wxsn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gue_build_header","ip_md_tunnel_xmit","ip_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5a8cd539ac19f7a68e68e1d25ef9ca2ff55b8500","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU","NET_FOU_IP_TUNNELS","NET_IPIP","NET_IPGRE"],"series_id":"47450a63-4e6a-4eaa-bece-76c10beeb0c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-21 16:31:08 +0000 UTC FinishedAt: 2026-08-21 19:32:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2f2fe0eb-1ea3-40cd-80b6-ae4fcba04781,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9ea969b8-de5a-4979-ac1f-2fb78cfd7e9d,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-workflow7wxsn/series-workflow7wxsn-build-action-691716563/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-workflow7wxsn/series-workflow7wxsn-build-action-269377124/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-workflow7wxsn/series-workflow7wxsn-convert-artifact-3074040017/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,}