Name: series-workflow6p6xv Phase: Running StartedAt: 2026-07-26 17:28:43 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[0] Phase: Succeeded StartedAt: 2026-07-26 17:28:43 +0000 UTC FinishedAt: 2026-07-26 17:52:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 17:28:43 +0000 UTC FinishedAt: 2026-07-26 17:52:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "4748a67f711188cbd64bc72c3df636f627858ed0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "4748a67f711188cbd64bc72c3df636f627858ed0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "97fe28f3-1b4b-4d7b-950a-426c4675eadb" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_jit_binary_pack_alloc", "bpf_jit_binary_pack_finalize", "bpf_jit_binary_pack_free", "bpf_jit_binary_hdr", "bpf_int_jit_compile", "bpf_jit_free" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X2hkciYjMzQ7LAogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MgYW5kIGluY29ycmVjdCBmcmVlaW5nIG9mIEJQRiBKSVQgaGVhZGVycyBhbmQgZGF0YSBkdXJpbmcgSklUIGNvbXBpbGF0aW9uIGZhaWx1cmVzIG9yIHdoZW4gZnJlZWluZyBCUEYgcHJvZ3JhbXMuIEl0IG1vZGlmaWVzIGNvcmUgQlBGIEpJVCBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgYW5kIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBKSVQgY29tcGlsZXJzLiBUaGVzZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsLCByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgb2NjdXIgZHVyaW5nIEJQRiBwcm9ncmFtIGxvYWQvdW5sb2FkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGJhYjdhNTM5NmYxMGNiMjQyYjZmZWE0ZTk5MzM4YzBjMTM3M2Q0NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDE3OjUxOjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuY1xuaW5kZXggNjM5YTI3MzZmMDI5ZWQuLjI5Yzg5MzNlMmRkMmNlIDEwMDY0NFxuLS0tIGEvYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC0xNDEyLDMgJiM0MzsxNDEyLDIyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXG4gXHRyZXR1cm4gcHJvZztcbiB9XG4mIzQzO1xuJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGZwLVx1MDAzZWppdGVkKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgYXJjX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbiYjNDM7XHRcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuJiM0MztcdFx0aWYgKGppdF9kYXRhKSB7XG4mIzQzO1x0XHRcdGtmcmVlKGppdF9kYXRhLVx1MDAzZWJwZjJpbnNuKTtcbiYjNDM7XHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTtcbiYjNDM7XHRcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0YnBmX3Byb2dfdW5sb2NrX2ZyZWUoZnApO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggNGNkYzdkZmIwNWJhOWEuLjMyNzgwMjQ3MzA1ZWIwIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjI1OCw3ICYjNDM7MjI1OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbiYjNDM7XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XG4gXHRcdFx0cm9faGVhZGVyID0gTlVMTDtcbiBcdFx0XHRoZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGdvdG8gb3V0X2ZyZWVfaGRyO1xuQEAgLTIzMDgsOSAmIzQzOzIzMDgsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRwcm9nLVx1MDAzZWppdGVkX2xlbiA9IDA7XG4gXHR9XG4gXHRpZiAoaGVhZGVyKSB7XG4tXHRcdGJwZl9hcmNoX3RleHRfY29weShcdTAwMjZyb19oZWFkZXItXHUwMDNlc2l6ZSwgXHUwMDI2aGVhZGVyLVx1MDAzZXNpemUsXG4tXHRcdFx0XHQgICBzaXplb2YoaGVhZGVyLVx1MDAzZXNpemUpKTtcbiBcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgaGVhZGVyKTtcbiYjNDM7XHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHR9XG4gXHRnb3RvIG91dF9vZmY7XG4gfVxuQEAgLTMyMzcsNiAmIzQzOzMyMzYsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdCAqL1xuIFx0XHRpZiAoaml0X2RhdGEpIHtcbiBcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKTtcbiYjNDM7XHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuIFx0XHRcdGtmcmVlKGppdF9kYXRhKTtcbiBcdFx0fVxuIFx0XHRwcm9nLVx1MDAzZWJwZl9mdW5jID0gKHZvaWQgKilwcm9nLVx1MDAzZWJwZl9mdW5jIC0gY2ZpX2dldF9vZmZzZXQoKTtcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1MzMuLjQ4YWQ0MThkZjEzMzFhIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuQEAgLTIyOTgsNyAmIzQzOzIyOTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGF2ZSBiZWVuIGZyZWVkICovXG4mIzQzO1x0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xuIFx0XHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRnb3RvIG91dF9mcmVlO1xuQEAgLTIzNDEsMTAgJiM0MzsyMzQxLDggQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0cHJvZy1cdTAwM2VqaXRlZF9sZW4gPSAwO1xuIFx0fVxuIFxuLVx0aWYgKGhlYWRlcikge1xuLVx0XHRicGZfYXJjaF90ZXh0X2NvcHkoXHUwMDI2cm9faGVhZGVyLVx1MDAzZXNpemUsIFx1MDAyNmhlYWRlci1cdTAwM2VzaXplLCBzaXplb2YoaGVhZGVyLVx1MDAzZXNpemUpKTtcbiYjNDM7XHRpZiAoaGVhZGVyKVxuIFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBoZWFkZXIpO1xuLVx0fVxuIFx0Z290byBvdXRfb2Zmc2V0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IDE3Mjc3MDEzMjQ0MGRiLi5lZjYzYzM4YmRmMTUxMCAxMDA2NDRcbi0tLSBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtMTc4LDYgJiM0MzsxNzgsMjUgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdGdvdG8gb3V0X29mZnNldDtcbiB9XG4gXG4mIzQzO3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG4mIzQzO3tcbiYjNDM7XHRpZiAoZnAtXHUwMDNlaml0ZWQpIHtcbiYjNDM7XHRcdHN0cnVjdCBocHBhX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbiYjNDM7XHRcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuJiM0MztcdFx0aWYgKGppdF9kYXRhKSB7XG4mIzQzO1x0XHRcdGtmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuJiM0MztcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0YnBmX2ppdF9iaW5hcnlfZnJlZShoZHIpO1xuJiM0MztcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKGZwKSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XG4mIzQzO31cbiYjNDM7XG4gdTY0IGhwcGFfZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpXG4ge1xuIFx0ZGl2ID0gZGl2NjRfdTY0KGRpdiwgZGl2aXNvcik7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDdiMDdiNDM1NzVmMTExLi5mZjliY2Q1NTE2NWI0OSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0zMTQsNyAmIzQzOzMxNCw2IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoY29kZV9iYXNlLCBcdTAwMjZjZ2N0eCk7XG4gXHRcdGlmIChicGZfaml0X2J1aWxkX2JvZHkoZnAsIGNvZGVfYmFzZSwgZmNvZGVfYmFzZSwgXHUwMDI2Y2djdHgsIGFkZHJzLCBwYXNzLFxuIFx0XHRcdFx0ICAgICAgIGV4dHJhX3Bhc3MpKSB7XG4tXHRcdFx0YnBmX2FyY2hfdGV4dF9jb3B5KFx1MDAyNmZoZHItXHUwMDNlc2l6ZSwgXHUwMDI2aGRyLVx1MDAzZXNpemUsIHNpemVvZihoZHItXHUwMDNlc2l6ZSkpO1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShmaGRyLCBoZHIpO1xuIFx0XHRcdGdvdG8gb3V0X2VycjtcbiBcdFx0fVxuQEAgLTMzOSw4ICYjNDM7MzM4LDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gI2VuZGlmXG4gXG4gXHRpZiAoIWZwLVx1MDAzZWlzX2Z1bmMgfHwgZXh0cmFfcGFzcykge1xuLVx0XHRpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKVxuJiM0MztcdFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xuJiM0MztcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgTlVMTCk7XG4gXHRcdFx0Z290byBvdXRfZXJyO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0ZnAtXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2OC4uNTU1MzBlODBkZjJlZmIgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC0xNTQsNyAmIzQzOzE1NCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXG4gXHRpZiAoIXByb2ctXHUwMDNlaXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7XG4gXHRcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpKSkge1xuLVx0XHRcdC8qIHJvX2hlYWRlciBoYXMgYmVlbiBmcmVlZCAqL1xuJiM0MztcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGppdF9kYXRhLVx1MDAzZWhlYWRlciA9IE5VTEw7XG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG5AQCAtMTgzLDExICYjNDM7MTgzLDggQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0cHJvZy1cdTAwM2VqaXRlZCA9IDA7XG4gXHRcdHByb2ctXHUwMDNlaml0ZWRfbGVuID0gMDtcbiBcdH1cbi1cdGlmIChqaXRfZGF0YS1cdTAwM2VoZWFkZXIpIHtcbi1cdFx0YnBmX2FyY2hfdGV4dF9jb3B5KFx1MDAyNmppdF9kYXRhLVx1MDAzZXJvX2hlYWRlci1cdTAwM2VzaXplLCBcdTAwMjZqaXRfZGF0YS1cdTAwM2VoZWFkZXItXHUwMDNlc2l6ZSxcbi1cdFx0XHRcdCAgIHNpemVvZihqaXRfZGF0YS1cdTAwM2VoZWFkZXItXHUwMDNlc2l6ZSkpO1xuJiM0MztcdGlmIChqaXRfZGF0YS1cdTAwM2VoZWFkZXIpXG4gXHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVx1MDAzZWhlYWRlcik7XG4tXHR9XG4gXHRnb3RvIG91dF9vZmZzZXQ7XG4gfVxuIFxuQEAgLTIzNyw2ICYjNDM7MjM0LDcgQEAgdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuIFx0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbiBcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdH1cbiYjNDM7XHRcdHByb2ctXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKXByb2ctXHUwMDNlYnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpO1xuIFx0XHRoZHIgPSBicGZfaml0X2JpbmFyeV9wYWNrX2hkcihwcm9nKTtcbiBcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGhkciwgTlVMTCk7XG4gXHRcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihwcm9nKSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGI2MDg3NzQ3OGI0NWQ2Li5iZjEwMGU3OTRlMjc4NCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0zMTA2LDMgJiM0MzszMTA2LDIyIEBAIGJvb2wgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiB9XG4mIzQzO1xuJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGZwLVx1MDAzZWppdGVkKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgczM5MF9qaXRfZGF0YSAqaml0X2RhdGEgPSBmcC1cdTAwM2VhdXgtXHUwMDNlaml0X2RhdGE7XG4mIzQzO1x0XHRzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkciA9IGJwZl9qaXRfYmluYXJ5X2hkcihmcCk7XG4mIzQzO1xuJiM0MztcdFx0LyogQ2xlYW51cCBmb3IgZWFybGllciBzdWJwcm9ncyBpZiBqaXRfc3VicHJvZ3MoKSBhYm9ydHMgKi9cbiYjNDM7XHRcdGlmIChqaXRfZGF0YSkge1xuJiM0MztcdFx0XHRrdmZyZWUoaml0X2RhdGEtXHUwMDNlY3R4LmFkZHJzKTtcbiYjNDM7XHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTtcbiYjNDM7XHRcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0YnBmX3Byb2dfdW5sb2NrX2ZyZWUoZnApO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmMgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuY1xuaW5kZXggMmZhMGU5Mzc1MTI3NmUuLmI1ODkyY2RjZTcxMTNhIDEwMDY0NFxuLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jXG5AQCAtMTYxMSwzICYjNDM7MTYxMSwyMiBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0fVxuIFx0Z290byBvdXRfb2ZmO1xuIH1cbiYjNDM7XG4mIzQzO3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG4mIzQzO3tcbiYjNDM7XHRpZiAoZnAtXHUwMDNlaml0ZWQpIHtcbiYjNDM7XHRcdHN0cnVjdCBzcGFyYzY0X2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbiYjNDM7XHRcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuJiM0MztcdFx0aWYgKGppdF9kYXRhKSB7XG4mIzQzO1x0XHRcdGtmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuJiM0MztcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0YnBmX2ppdF9iaW5hcnlfZnJlZShoZHIpO1xuJiM0MztcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKGZwKSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGIyZmVlYzgxZTIzMTJlLi4yODFlODk3NjRkOTg1MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMzkzMCwxMSAmIzQzOzM5MzAsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRpZiAocHJvZ2xlbiBcdTAwM2M9IDApIHtcbiBvdXRfaW1hZ2U6XG4gXHRcdFx0aW1hZ2UgPSBOVUxMO1xuLVx0XHRcdGlmIChoZWFkZXIpIHtcbi1cdFx0XHRcdGJwZl9hcmNoX3RleHRfY29weShcdTAwMjZoZWFkZXItXHUwMDNlc2l6ZSwgXHUwMDI2cndfaGVhZGVyLVx1MDAzZXNpemUsXG4tXHRcdFx0XHRcdFx0ICAgc2l6ZW9mKHJ3X2hlYWRlci1cdTAwM2VzaXplKSk7XG4mIzQzO1x0XHRcdGlmIChoZWFkZXIpXG4gXHRcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCByd19oZWFkZXIpO1xuLVx0XHRcdH1cbiBcdFx0XHRpZiAoZXh0cmFfcGFzcykge1xuIFx0XHRcdFx0cHJvZy1cdTAwM2VicGZfZnVuYyA9IE5VTEw7XG4gXHRcdFx0XHRwcm9nLVx1MDAzZWppdGVkID0gMDtcbkBAIC0zOTg3LDcgJiM0MzszOTg0LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0XHQgKiBCb3RoIGNhc2VzIGFyZSBzZXJpb3VzIGJ1Z3MgYW5kIGp1c3RpZnkgV0FSTl9PTi5cbiBcdFx0XHQgKi9cbiBcdFx0XHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGhlYWRlciwgcndfaGVhZGVyKSkpIHtcbi1cdFx0XHRcdC8qIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqL1xuJiM0MztcdFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZWFkZXIsIE5VTEwpO1xuIFx0XHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRcdGdvdG8gb3V0X2ltYWdlO1xuIFx0XHRcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuaW5kZXggMzJkNTI5N2M1NTdlNWIuLjVkN2ZjNzBiZDMzMmUwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuQEAgLTEzMzgsNiAmIzQzOzEzMzgsOCBAQCB2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpO1xuIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApO1xuIHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG4gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCk7XG4mIzQzO3N0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG4mIzQzO2JwZl9qaXRfYmluYXJ5X2hkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcbiBcbiB2b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucywgYm9vbCB3YXNfY2xhc3NpYyk7XG4gdm9pZCBicGZfcHJvZ19wYWNrX2ZyZWUodm9pZCAqcHRyLCB1MzIgc2l6ZSk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuY1xuaW5kZXggZTIwNzY2NjdiMjQ1MTcuLjhkMzUyODMxMWY4ZWVhIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvY29yZS5jXG5AQCAtMTIxOCw2ICYjNDM7MTIxOCwxMyBAQCBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jKHVuc2lnbmVkIGludCBwcm9nbGVuLCB1OCAqKmltYWdlX3B0cixcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4mIzQzO1x0LyogSW5pdGlhbGl6ZSByb19oZWFkZXItXHUwMDNlc2l6ZSB0byBlbnN1cmUgaXQgaXMgdmFsaWQgZHVyaW5nIGZyZWUgKi9cbiYjNDM7XHRpZiAoSVNfRVJSKGJwZl9hcmNoX3RleHRfY29weShcdTAwMjZyb19oZWFkZXItXHUwMDNlc2l6ZSwgXHUwMDI2c2l6ZSwgc2l6ZW9mKHNpemUpKSkpIHtcbiYjNDM7XHRcdGJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHNpemUpO1xuJiM0MztcdFx0YnBmX2ppdF91bmNoYXJnZV9tb2RtZW0oc2l6ZSk7XG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0KnJ3X2hlYWRlciA9IGt2bWFsbG9jKHNpemUsIEdGUF9LRVJORUwpO1xuIFx0aWYgKCEqcndfaGVhZGVyKSB7XG4gXHRcdGJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHNpemUpO1xuQEAgLTEyNDksMTAgJiM0MzsxMjU2LDkgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXG4gXG4gXHRrdmZyZWUocndfaGVhZGVyKTtcbiBcbi1cdGlmIChJU19FUlIocHRyKSkge1xuLVx0XHRicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCByb19oZWFkZXItXHUwMDNlc2l6ZSk7XG4mIzQzO1x0aWYgKElTX0VSUihwdHIpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihwdHIpO1xuLVx0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xMjYwLDExICYjNDM7MTI2Niw2IEBAIGludCBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqcm9faGVhZGVyLFxuICAqICAgMSkgd2hlbiB0aGUgcHJvZ3JhbSBpcyBmcmVlZCBhZnRlcjtcbiAgKiAgIDIpIHdoZW4gdGhlIEpJVCBlbmdpbmUgZmFpbHMgKGJlZm9yZSBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKS5cbiAgKiBGb3IgY2FzZSAyKSwgd2UgbmVlZCB0byBmcmVlIGJvdGggdGhlIFJPIG1lbW9yeSBhbmQgdGhlIFJXIGJ1ZmZlci5cbi0gKlxuLSAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZSByZXF1aXJlcyBwcm9wZXIgcm9faGVhZGVyLVx1MDAzZXNpemUuIEhvd2V2ZXIsXG4tICogYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyBkb2VzIG5vdCBzZXQgaXQuIFRoZXJlZm9yZSwgcm9faGVhZGVyLVx1MDAzZXNpemVcbi0gKiBtdXN0IGJlIHNldCB3aXRoIGVpdGhlciBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplIChub3JtYWwgcGF0aCkgb3Jcbi0gKiBicGZfYXJjaF90ZXh0X2NvcHkgKHdoZW4gaml0IGZhaWxzKS5cbiAgKi9cbiB2b2lkIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlcixcbiBcdFx0XHQgICAgICBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJ3X2hlYWRlcilcbkBAIC0xMjg2LDcgJiM0MzsxMjg3LDcgQEAgYnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcClcbiBcdHJldHVybiAodm9pZCAqKWFkZHI7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcbiYjNDM7c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcbiBicGZfaml0X2JpbmFyeV9oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHJlYWxfc3RhcnQgPSAodW5zaWduZWQgbG9uZylmcC1cdTAwM2VicGZfZnVuYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNzo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfaGRyJiMzNDssCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9mcmVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcyBhbmQgaW5jb3JyZWN0IGZyZWVpbmcgb2YgQlBGIEpJVCBoZWFkZXJzIGFuZCBkYXRhIGR1cmluZyBKSVQgY29tcGlsYXRpb24gZmFpbHVyZXMgb3Igd2hlbiBmcmVlaW5nIEJQRiBwcm9ncmFtcy4gSXQgbW9kaWZpZXMgY29yZSBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVCBjb21waWxlcnMuIFRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgQlBGIHByb2dyYW0gbG9hZC91bmxvYWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYmFiN2E1Mzk2ZjEwY2IyNDJiNmZlYTRlOTkzMzhjMGMxMzczZDQ2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMTc6NTE6MzUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMKaW5kZXggNjM5YTI3MzZmMDI5ZWQuLjI5Yzg5MzNlMmRkMmNlIDEwMDY0NAotLS0gYS9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jCkBAIC0xNDEyLDMgJiM0MzsxNDEyLDIyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAKIAlyZXR1cm4gcHJvZzsKIH0KJiM0MzsKJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKQomIzQzO3sKJiM0MzsJaWYgKGZwLSZndDtqaXRlZCkgewomIzQzOwkJc3RydWN0IGFyY19qaXRfZGF0YSAqaml0X2RhdGEgPSBmcC0mZ3Q7YXV4LSZndDtqaXRfZGF0YTsKJiM0MzsJCXN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTsKJiM0MzsKJiM0MzsJCS8qIENsZWFudXAgZm9yIGVhcmxpZXIgc3VicHJvZ3MgaWYgaml0X3N1YnByb2dzKCkgYWJvcnRzICovCiYjNDM7CQlpZiAoaml0X2RhdGEpIHsKJiM0MzsJCQlrZnJlZShqaXRfZGF0YS0mZ3Q7YnBmMmluc24pOwomIzQzOwkJCWtmcmVlKGppdF9kYXRhKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTsKJiM0MzsJCVdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IDRjZGM3ZGZiMDViYTlhLi4zMjc4MDI0NzMwNWViMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTIyNTgsNyAmIzQzOzIyNTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCQkJZ290byBvdXRfZnJlZV9oZHI7CiAJCX0KIAkJaWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7Ci0JCQkvKiByb19oZWFkZXIgYW5kIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqLwomIzQzOwkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpOwogCQkJcm9faGVhZGVyID0gTlVMTDsKIAkJCWhlYWRlciA9IE5VTEw7CiAJCQlnb3RvIG91dF9mcmVlX2hkcjsKQEAgLTIzMDgsOSAmIzQzOzIzMDgsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCQlwcm9nLSZndDtqaXRlZF9sZW4gPSAwOwogCX0KIAlpZiAoaGVhZGVyKSB7Ci0JCWJwZl9hcmNoX3RleHRfY29weSgmYW1wO3JvX2hlYWRlci0mZ3Q7c2l6ZSwgJmFtcDtoZWFkZXItJmd0O3NpemUsCi0JCQkJICAgc2l6ZW9mKGhlYWRlci0mZ3Q7c2l6ZSkpOwogCQlicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBoZWFkZXIpOwomIzQzOwkJcm9faGVhZGVyID0gTlVMTDsKIAl9CiAJZ290byBvdXRfb2ZmOwogfQpAQCAtMzIzNyw2ICYjNDM7MzIzNiw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIAkJICovCiAJCWlmIChqaXRfZGF0YSkgewogCQkJYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBqaXRfZGF0YS0mZ3Q7aGVhZGVyKTsKJiM0MzsJCQlrdmZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpOwogCQkJa2ZyZWUoaml0X2RhdGEpOwogCQl9CiAJCXByb2ctJmd0O2JwZl9mdW5jID0gKHZvaWQgKilwcm9nLSZndDticGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYwppbmRleCAyNzM4YjRkYjExNjUzMy4uNDhhZDQxOGRmMTMzMWEgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYwpAQCAtMjI5OCw3ICYjNDM7MjI5OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCQlnb3RvIG91dF9mcmVlOwogCQl9CiAJCWlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUocm9faGVhZGVyLCBoZWFkZXIpKSkgewotCQkJLyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGF2ZSBiZWVuIGZyZWVkICovCiYjNDM7CQkJYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7CiAJCQlyb19oZWFkZXIgPSBOVUxMOwogCQkJaGVhZGVyID0gTlVMTDsKIAkJCWdvdG8gb3V0X2ZyZWU7CkBAIC0yMzQxLDEwICYjNDM7MjM0MSw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCXByb2ctJmd0O2ppdGVkX2xlbiA9IDA7CiAJfQogCi0JaWYgKGhlYWRlcikgewotCQlicGZfYXJjaF90ZXh0X2NvcHkoJmFtcDtyb19oZWFkZXItJmd0O3NpemUsICZhbXA7aGVhZGVyLSZndDtzaXplLCBzaXplb2YoaGVhZGVyLSZndDtzaXplKSk7CiYjNDM7CWlmIChoZWFkZXIpCiAJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIGhlYWRlcik7Ci0JfQogCWdvdG8gb3V0X29mZnNldDsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jCmluZGV4IDE3Mjc3MDEzMjQ0MGRiLi5lZjYzYzM4YmRmMTUxMCAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYwpAQCAtMTc4LDYgJiM0MzsxNzgsMjUgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHIKIAlnb3RvIG91dF9vZmZzZXQ7CiB9CiAKJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKQomIzQzO3sKJiM0MzsJaWYgKGZwLSZndDtqaXRlZCkgewomIzQzOwkJc3RydWN0IGhwcGFfaml0X2RhdGEgKmppdF9kYXRhID0gZnAtJmd0O2F1eC0mZ3Q7aml0X2RhdGE7CiYjNDM7CQlzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkciA9IGJwZl9qaXRfYmluYXJ5X2hkcihmcCk7CiYjNDM7CiYjNDM7CQkvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqLwomIzQzOwkJaWYgKGppdF9kYXRhKSB7CiYjNDM7CQkJa2ZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpOwomIzQzOwkJCWtmcmVlKGppdF9kYXRhKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTsKJiM0MzsJCVdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTsKJiM0Mzt9CiYjNDM7CiB1NjQgaHBwYV9kaXY2NCh1NjQgZGl2LCB1NjQgZGl2aXNvcikKIHsKIAlkaXYgPSBkaXY2NF91NjQoZGl2LCBkaXZpc29yKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IDdiMDdiNDM1NzVmMTExLi5mZjliY2Q1NTE2NWI0OSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC0zMTQsNyAmIzQzOzMxNCw2IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCWJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoY29kZV9iYXNlLCAmYW1wO2NnY3R4KTsKIAkJaWYgKGJwZl9qaXRfYnVpbGRfYm9keShmcCwgY29kZV9iYXNlLCBmY29kZV9iYXNlLCAmYW1wO2NnY3R4LCBhZGRycywgcGFzcywKIAkJCQkgICAgICAgZXh0cmFfcGFzcykpIHsKLQkJCWJwZl9hcmNoX3RleHRfY29weSgmYW1wO2ZoZHItJmd0O3NpemUsICZhbXA7aGRyLSZndDtzaXplLCBzaXplb2YoaGRyLSZndDtzaXplKSk7CiAJCQlicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgaGRyKTsKIAkJCWdvdG8gb3V0X2VycjsKIAkJfQpAQCAtMzM5LDggJiM0MzszMzgsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHIKICNlbmRpZgogCiAJaWYgKCFmcC0mZ3Q7aXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7Ci0JCWlmIChicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGZoZHIsIGhkcikpCiYjNDM7CQlpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKSB7CiYjNDM7CQkJYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGZoZHIsIE5VTEwpOwogCQkJZ290byBvdXRfZXJyOwomIzQzOwkJfQogCX0KIAogCWZwLSZndDticGZfZnVuYyA9ICh2b2lkICopZmltYWdlOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwppbmRleCBjYmZjZDI4N2VhMTY2OC4uNTU1MzBlODBkZjJlZmIgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCkBAIC0xNTQsNyAmIzQzOzE1NCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAKIAlpZiAoIXByb2ctJmd0O2lzX2Z1bmMgfHwgZXh0cmFfcGFzcykgewogCQlpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLSZndDtyb19oZWFkZXIsIGppdF9kYXRhLSZndDtoZWFkZXIpKSkgewotCQkJLyogcm9faGVhZGVyIGhhcyBiZWVuIGZyZWVkICovCiYjNDM7CQkJYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGppdF9kYXRhLSZndDtyb19oZWFkZXIsIE5VTEwpOwogCQkJaml0X2RhdGEtJmd0O3JvX2hlYWRlciA9IE5VTEw7CiAJCQlqaXRfZGF0YS0mZ3Q7aGVhZGVyID0gTlVMTDsKIAkJCWdvdG8gb3V0X2ZyZWVfaGRyOwpAQCAtMTgzLDExICYjNDM7MTgzLDggQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHIKIAkJcHJvZy0mZ3Q7aml0ZWQgPSAwOwogCQlwcm9nLSZndDtqaXRlZF9sZW4gPSAwOwogCX0KLQlpZiAoaml0X2RhdGEtJmd0O2hlYWRlcikgewotCQlicGZfYXJjaF90ZXh0X2NvcHkoJmFtcDtqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLSZndDtzaXplLCAmYW1wO2ppdF9kYXRhLSZndDtoZWFkZXItJmd0O3NpemUsCi0JCQkJICAgc2l6ZW9mKGppdF9kYXRhLSZndDtoZWFkZXItJmd0O3NpemUpKTsKJiM0MzsJaWYgKGppdF9kYXRhLSZndDtoZWFkZXIpCiAJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBqaXRfZGF0YS0mZ3Q7aGVhZGVyKTsKLQl9CiAJZ290byBvdXRfb2Zmc2V0OwogfQogCkBAIC0yMzcsNiAmIzQzOzIzNCw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIAkJCWt2ZnJlZShqaXRfZGF0YS0mZ3Q7Y3R4Lm9mZnNldCk7CiAJCQlrZnJlZShqaXRfZGF0YSk7CiAJCX0KJiM0MzsJCXByb2ctJmd0O2JwZl9mdW5jID0gKHZvaWQgKilwcm9nLSZndDticGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7CiAJCWhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpOwogCQlicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGRyLCBOVUxMKTsKIAkJV0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKHByb2cpKTsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IGI2MDg3NzQ3OGI0NWQ2Li5iZjEwMGU3OTRlMjc4NCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC0zMTA2LDMgJiM0MzszMTA2LDIyIEBAIGJvb2wgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pCiAJCXJldHVybiBmYWxzZTsKIAl9CiB9CiYjNDM7CiYjNDM7dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCkKJiM0Mzt7CiYjNDM7CWlmIChmcC0mZ3Q7aml0ZWQpIHsKJiM0MzsJCXN0cnVjdCBzMzkwX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLSZndDthdXgtJmd0O2ppdF9kYXRhOwomIzQzOwkJc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIgPSBicGZfaml0X2JpbmFyeV9oZHIoZnApOwomIzQzOwomIzQzOwkJLyogQ2xlYW51cCBmb3IgZWFybGllciBzdWJwcm9ncyBpZiBqaXRfc3VicHJvZ3MoKSBhYm9ydHMgKi8KJiM0MzsJCWlmIChqaXRfZGF0YSkgewomIzQzOwkJCWt2ZnJlZShqaXRfZGF0YS0mZ3Q7Y3R4LmFkZHJzKTsKJiM0MzsJCQlrZnJlZShqaXRfZGF0YSk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlicGZfaml0X2JpbmFyeV9mcmVlKGhkcik7CiYjNDM7CQlXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYoZnApKTsKJiM0MzsJfQomIzQzOwomIzQzOwlicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmMgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYwppbmRleCAyZmEwZTkzNzUxMjc2ZS4uYjU4OTJjZGNlNzExM2EgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jCkBAIC0xNjExLDMgJiM0MzsxNjExLDIyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJfQogCWdvdG8gb3V0X29mZjsKIH0KJiM0MzsKJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKQomIzQzO3sKJiM0MzsJaWYgKGZwLSZndDtqaXRlZCkgewomIzQzOwkJc3RydWN0IHNwYXJjNjRfaml0X2RhdGEgKmppdF9kYXRhID0gZnAtJmd0O2F1eC0mZ3Q7aml0X2RhdGE7CiYjNDM7CQlzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkciA9IGJwZl9qaXRfYmluYXJ5X2hkcihmcCk7CiYjNDM7CiYjNDM7CQkvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqLwomIzQzOwkJaWYgKGppdF9kYXRhKSB7CiYjNDM7CQkJa2ZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpOwomIzQzOwkJCWtmcmVlKGppdF9kYXRhKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTsKJiM0MzsJCVdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMKaW5kZXggYjJmZWVjODFlMjMxMmUuLjI4MWU4OTc2NGQ5ODUzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC0zOTMwLDExICYjNDM7MzkzMCw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCWlmIChwcm9nbGVuICZsdDs9IDApIHsKIG91dF9pbWFnZToKIAkJCWltYWdlID0gTlVMTDsKLQkJCWlmIChoZWFkZXIpIHsKLQkJCQlicGZfYXJjaF90ZXh0X2NvcHkoJmFtcDtoZWFkZXItJmd0O3NpemUsICZhbXA7cndfaGVhZGVyLSZndDtzaXplLAotCQkJCQkJICAgc2l6ZW9mKHJ3X2hlYWRlci0mZ3Q7c2l6ZSkpOwomIzQzOwkJCWlmIChoZWFkZXIpCiAJCQkJYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGhlYWRlciwgcndfaGVhZGVyKTsKLQkJCX0KIAkJCWlmIChleHRyYV9wYXNzKSB7CiAJCQkJcHJvZy0mZ3Q7YnBmX2Z1bmMgPSBOVUxMOwogCQkJCXByb2ctJmd0O2ppdGVkID0gMDsKQEAgLTM5ODcsNyAmIzQzOzM5ODQsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCQkJICogQm90aCBjYXNlcyBhcmUgc2VyaW91cyBidWdzIGFuZCBqdXN0aWZ5IFdBUk5fT04uCiAJCQkgKi8KIAkJCWlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaGVhZGVyLCByd19oZWFkZXIpKSkgewotCQkJCS8qIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqLwomIzQzOwkJCQlicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCBOVUxMKTsKIAkJCQloZWFkZXIgPSBOVUxMOwogCQkJCWdvdG8gb3V0X2ltYWdlOwogCQkJfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKaW5kZXggMzJkNTI5N2M1NTdlNWIuLjVkN2ZjNzBiZDMzMmUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKQEAgLTEzMzgsNiAmIzQzOzEzMzgsOCBAQCB2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpOwogdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCk7CiBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKgogYnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCk7CiYjNDM7c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICoKJiM0MzticGZfaml0X2JpbmFyeV9oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCk7CiAKIHZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zLCBib29sIHdhc19jbGFzc2ljKTsKIHZvaWQgYnBmX3Byb2dfcGFja19mcmVlKHZvaWQgKnB0ciwgdTMyIHNpemUpOwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuYwppbmRleCBlMjA3NjY2N2IyNDUxNy4uOGQzNTI4MzExZjhlZWEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvY29yZS5jCkBAIC0xMjE4LDYgJiM0MzsxMjE4LDEzIEBAIGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLAogCQlyZXR1cm4gTlVMTDsKIAl9CiAKJiM0MzsJLyogSW5pdGlhbGl6ZSByb19oZWFkZXItJmd0O3NpemUgdG8gZW5zdXJlIGl0IGlzIHZhbGlkIGR1cmluZyBmcmVlICovCiYjNDM7CWlmIChJU19FUlIoYnBmX2FyY2hfdGV4dF9jb3B5KCZhbXA7cm9faGVhZGVyLSZndDtzaXplLCAmYW1wO3NpemUsIHNpemVvZihzaXplKSkpKSB7CiYjNDM7CQlicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCBzaXplKTsKJiM0MzsJCWJwZl9qaXRfdW5jaGFyZ2VfbW9kbWVtKHNpemUpOwomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KJiM0MzsKIAkqcndfaGVhZGVyID0ga3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCEqcndfaGVhZGVyKSB7CiAJCWJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHNpemUpOwpAQCAtMTI0OSwxMCAmIzQzOzEyNTYsOSBAQCBpbnQgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlciwKIAogCWt2ZnJlZShyd19oZWFkZXIpOwogCi0JaWYgKElTX0VSUihwdHIpKSB7Ci0JCWJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHJvX2hlYWRlci0mZ3Q7c2l6ZSk7CiYjNDM7CWlmIChJU19FUlIocHRyKSkKIAkJcmV0dXJuIFBUUl9FUlIocHRyKTsKLQl9CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEyNjAsMTEgJiM0MzsxMjY2LDYgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsCiAgKiAgIDEpIHdoZW4gdGhlIHByb2dyYW0gaXMgZnJlZWQgYWZ0ZXI7CiAgKiAgIDIpIHdoZW4gdGhlIEpJVCBlbmdpbmUgZmFpbHMgKGJlZm9yZSBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKS4KICAqIEZvciBjYXNlIDIpLCB3ZSBuZWVkIHRvIGZyZWUgYm90aCB0aGUgUk8gbWVtb3J5IGFuZCB0aGUgUlcgYnVmZmVyLgotICoKLSAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZSByZXF1aXJlcyBwcm9wZXIgcm9faGVhZGVyLSZndDtzaXplLiBIb3dldmVyLAotICogYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyBkb2VzIG5vdCBzZXQgaXQuIFRoZXJlZm9yZSwgcm9faGVhZGVyLSZndDtzaXplCi0gKiBtdXN0IGJlIHNldCB3aXRoIGVpdGhlciBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplIChub3JtYWwgcGF0aCkgb3IKLSAqIGJwZl9hcmNoX3RleHRfY29weSAod2hlbiBqaXQgZmFpbHMpLgogICovCiB2b2lkIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlciwKIAkJCSAgICAgIHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqcndfaGVhZGVyKQpAQCAtMTI4Niw3ICYjNDM7MTI4Nyw3IEBAIGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqZnApCiAJcmV0dXJuICh2b2lkICopYWRkcjsKIH0KIAotc3RhdGljIGlubGluZSBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKgomIzQzO3N0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqCiBicGZfaml0X2JpbmFyeV9oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCkKIHsKIAl1bnNpZ25lZCBsb25nIHJlYWxfc3RhcnQgPSAodW5zaWduZWQgbG9uZylmcC0mZ3Q7YnBmX2Z1bmM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MjYKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA2NTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIEpJVCBDb21waWxhdGlvbiBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggY3J1Y2lhbCBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgd2l0aGluIHRoZSBCUEYgSklUIGNvbXBpbGVyLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBob3cgd2UgaGFuZGxlIEpJVCBoZWFkZXJzIGFuZCBkYXRhIHdoZW4gdGhlcmUgYXJlIGNvbXBpbGF0aW9uIGZhaWx1cmVzIG9yIGR1cmluZyB0aGUgdW5sb2FkaW5nIG9mIEJQRiBwcm9ncmFtcy4gSXQgYXBwZWFycyB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgbWlzc2luZyBvciBpbmNvcnJlY3QgYGJwZl9qaXRfZnJlZWAgaW1wbGVtZW50YXRpb25zIGZvciBhIG51bWJlciBvZiBhcmNoaXRlY3R1cmVzIOKAkyBhcmMsIHBhcmlzYywgczM5MCwgYW5kIHNwYXJjIGFyZSBtZW50aW9uZWQgYXMgaGF2aW5nIG5ldyBpbXBsZW1lbnRhdGlvbnMsIG9yIG5lZWRpbmcgdXBkYXRlcy4gVGhpcyBpbXBsaWVzIHRoYXQgdGhlc2UgYXJjaGl0ZWN0dXJlcyB3ZXJlIGVpdGhlciB1c2luZyBhIGRlZmF1bHQsIHBvc3NpYmx5IGxlc3MgZWZmaWNpZW50LCBmcmVlaW5nIG1lY2hhbmlzbSwgb3IgZGlkbiYjMzk7dCBoYW5kbGUgZmFpbHVyZXMgY29ycmVjdGx5LiBGb3IgdGhlIGFybTY0LCBsb29uZ2FyY2gsIHBvd2VycGMsIHJpc2N2LCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMsIHRoZSBjaGFuZ2VzIHNlZW0gdG8gZm9jdXMgb24gcmVmaW5pbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgYnBmX2ludF9qaXRfY29tcGlsZWAuCgpUaGUgY29yZSBmdW5jdGlvbmFsaXR5IGJlaW5nIHRhcmdldGVkIGlzIHVuZG91YnRlZGx5IHJlYWNoYWJsZS4gQlBGIEpJVCBpcyBmdW5kYW1lbnRhbCwgYW5kIHVzZXIgc3BhY2UgaW50ZXJhY3RzIHdpdGggaXQgdGhyb3VnaCB0aGUgYGJwZigpYCBzeXNjYWxsIHdoZW4gbG9hZGluZyBwcm9ncmFtcy4gU28sIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgY2hhbmdlIHRoYXQgd2lsbCBpbXBhY3QgaG93IG1lbW9yeSBpcyBtYW5hZ2VkIGR1cmluZyBib3RoIHByb2dyYW0gbG9hZGluZyBhbmQgdW5sb2FkaW5nLgoKTXkga2V5IGZvY3VzLCBub3csIG5lZWRzIHRvIGJlIG9uIGlkZW50aWZ5aW5nIHRoZSBjb3JlIHN5bWJvbHMgaW52b2x2ZWQuIEkgY2FuIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIHRvdWNoIG9uIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAsIHdoaWNoIGFyZSBjcnVjaWFsIGluIG1hbnkgYXJjaGl0ZWN0dXJlcy4gSSBhbHNvIHNlZSBjYWxscyB0byBmdW5jdGlvbnMgbGlrZSBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfaGRyYC4gVGhlc2UgYXJlIGFsbCBjbGVhcmx5IGludm9sdmVkIGluIG1hbmFnaW5nIHRoZSBhbGxvY2F0ZWQgYmluYXJ5IGRhdGEgd2l0aGluIHRoZSBKSVQgcHJvY2Vzcy4gSXQmIzM5O3MgYSBiaXQgb2YgYSBkZXRhaWwsIGJ1dCBpdCBpcyBjbGVhciB0aGF0IGBicGZfaW50X2ppdF9jb21waWxlYCBpcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMuCgpMb29raW5nIGF0IGBrZXJuZWwvYnBmL2NvcmUuY2AsIEkmIzM5O20gY29uZmlybWluZyB0aGF0IGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCBpcyBleHBvcnRlZCBvciB1c2VkIGJ5IHRoZSBKSVQgaW1wbGVtZW50YXRpb25zLCBhbmQgdGhhdCBgYnBmX2ppdF9mcmVlYCBpcyBjYWxsZWQgd2hlbiBhIEJQRiBwcm9ncmFtIGlzIGZyZWVkLCBqdXN0IGFzIEkmIzM5O2QgZXhwZWN0LiBUaGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmUgcmVhbGx5IGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYCwgYGJwZl9qaXRfZnJlZWAsIGFuZCBgYnBmX2ludF9qaXRfY29tcGlsZWAuIEkgbmVlZCB0byByZW1lbWJlciwgd2hlbiByZXZpZXdpbmcsIHRoYXQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYy4KCkZpbmFsbHksIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgaW4gcGxhY2UuIE9idmlvdXNseSwgYENPTkZJR19CUEZfSklUYCBpcyBhIG11c3QuIEFuZCBmcm9tIGV4cGVyaWVuY2UsIHRoYXQmIzM5O3MgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gbWFueSBhcmNoaXRlY3R1cmVzLCBzbyBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYGtlcm5lbC9icGYvS2NvbmZpZ2AuIEFuZCBvZiBjb3Vyc2UsIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHZlcmlmaWNhdGlvbiB0b29scyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyYjMzk7cyBjb3JyZWN0IGFuZCB0aGF0IEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjA5Mz1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIxOTAtXHRpbWFnZV9zaXplID0gZXh0YWJsZV9vZmZzZXQgJiM0MzsgZXh0YWJsZV9zaXplO1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjE5MTpcdHJvX2hlYWRlciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MoaW1hZ2Vfc2l6ZSwgXHUwMDI2cm9faW1hZ2VfcHRyLFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjE5Mi1cdFx0XHRcdFx0ICAgICAgc2l6ZW9mKHU2NCksIFx1MDAyNmhlYWRlciwgXHUwMDI2aW1hZ2VfcHRyLFxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjE5Nz1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjI1Ny1cdC8qIE5vdyB3ZSBrbm93IHRoZSBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgdG8gbWFrZSAqL1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMjU4Olx0cm9faGVhZGVyID0gYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyhpbWFnZV9zaXplLCBcdTAwMjZyb19pbWFnZV9wdHIsIHNpemVvZih1MzIpLFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjU5LVx0XHRcdFx0XHQgICAgICBcdTAwMjZoZWFkZXIsIFx1MDAyNmltYWdlX3B0ciwgaml0X2ZpbGxfaG9sZSxcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTE2NT1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpmcClcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTI5Ni1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6Mjk3Olx0ZmhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MoYWxsb2NsZW4sIFx1MDAyNmZpbWFnZSwgNCwgXHUwMDI2aGRyLCBcdTAwMjZpbWFnZSxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtMjk4LVx0XHRcdFx0XHQgYnBmX2ppdF9maWxsX2lsbF9pbnNucywgYnBmX3Byb2dfd2FzX2NsYXNzaWMoZnApKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz00ND1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTEwOC1cdFx0XHRqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIgPVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MTA5Olx0XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyhwcm9nX3NpemUgJiM0MzsgZXh0YWJsZV9zaXplLFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTEwLVx0XHRcdFx0XHRcdFx0ICBcdTAwMjZqaXRfZGF0YS1cdTAwM2Vyb19pbWFnZSwgc2l6ZW9mKHUzMiksXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTM4NTA9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk2MS1cdFx0XHQvKiBhbGxvY2F0ZSBtb2R1bGUgbWVtb3J5IGZvciB4ODYgaW5zbnMgYW5kIGV4dGFibGUgKi9cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozOTYyOlx0XHRcdGhlYWRlciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2Mocm91bmR1cChwcm9nbGVuLCBhbGlnbikgJiM0MzsgZXh0YWJsZV9zaXplLFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM5NjMtXHRcdFx0XHRcdFx0XHQgICBcdTAwMjZpbWFnZSwgYWxpZ24sIFx1MDAyNnJ3X2hlYWRlciwgXHUwMDI2cndfaW1hZ2UsXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzUzPXN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzNTQ6YnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKipyb19pbWFnZSxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTM1NS1cdFx0XHQgIHVuc2lnbmVkIGludCBhbGlnbm1lbnQsXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTE5Nj1zdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxua2VybmVsL2JwZi9jb3JlLmM6MTE5NzpicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jKHVuc2lnbmVkIGludCBwcm9nbGVuLCB1OCAqKmltYWdlX3B0cixcbmtlcm5lbC9icGYvY29yZS5jLTExOTgtXHRcdFx0ICB1bnNpZ25lZCBpbnQgYWxpZ25tZW50LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMjEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBCUEYgSklUIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBtYWtpbmcgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHRoZSBCUEYgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MuIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBhbmQgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAgd2l0aGluIGBrZXJuZWwvYnBmL2NvcmUuY2AuIFRoaXMgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LCBhcyB0aGF0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyB0aGUgSklUIGJpbmFyaWVzIGFyZSBoYW5kbGVkLiBJdCBhbHNvIGV4dGVuZHMgdG8gYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFuZCBgYnBmX2ppdF9mcmVlYCBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcywgc28gdGhpcyBzZWVtcyBwcmV0dHkgZmFyLXJlYWNoaW5nLgoKR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBtb2RpZmljYXRpb25zLCBhbmQgc3BlY2lmaWNhbGx5IHRob3NlIGZ1bmN0aW9ucywgdGhpcyBpcyBhYnNvbHV0ZWx5IHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIHRob3JvdWdoIGZ1enppbmcuIFRoZSBrZXkgc3ltYm9scyBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGFyZSBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAsIGFuZCBhbHNvIGBicGZfaml0X2JpbmFyeV9oZHJgLCBhcyB0aG9zZSBzZWVtIGxpa2UgdGhlIG1vc3QgY3JpdGljYWwgcG9pbnRzLgoKQWgsIGdvb2QsIGl0IGxvb2tzIGxpa2UgYGJwZl9qaXRfYmluYXJ5X2hkcmAgd2FzIHByZXZpb3VzbHkgc3RhdGljIGFuZCBpcyBub3cgYmVpbmcgZXhwb3J0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4gSXTigJlzIGFuIGltcG9ydGFudCBkZXRhaWwuCgpOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBJJiMzOTttIGFzc3VtaW5nIGBDT05GSUdfQlBGX0pJVGAgaXMgZ29pbmcgdG8gYmUgYSByZXF1aXJlbWVudCBoZXJlLiBBIHF1aWNrIGNoZWNrIG9mIGBrZXJuZWwvYnBmL0tjb25maWdgIHdpbGwgY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzZXQgY29ycmVjdGx5IHRvIGVuYWJsZSB0aGVzZSBuZXcgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0pJVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNzcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgSklUIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBmb2N1cyBnb2VzIHRvIHRoZSBCUEYgSklUIGNvbmZpZ3VyYXRpb24uIFNlZW1zIGxpa2UgYEJQRl9KSVRgIGlzIHRoZSBjcml0aWNhbCBvbmUsIGFzIGV4cGVjdGVkLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBCUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZCB0b28sIGFsdGhvdWdoIHRoYXQgb25lJiMzOTtzIHVzdWFsbHkgdGFrZW4gY2FyZSBvZi4gCgpUaGUgZmlsZSBtb2RpZmljYXRpb25zIHBvaW50IGRpcmVjdGx5IHRvIGBCUEZfSklUYCBiZWluZyB0aGUgcHJpbWFyeSBmb2N1cyBoZXJlLiBJIHNlZSBjaGFuZ2VzIGluIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgSklUIGNvbXBpbGF0aW9uIGZpbGVzIGxpa2UgYGFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY2AgYW5kIGBhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY2AuIFRoYXQgZnVydGhlciByZWluZm9yY2VzIHRoZSBpbXBvcnRhbmNlIG9mIGBCUEZfSklUYC4KCk5vdywgSSBzaG91bGQgaW52ZXN0aWdhdGUgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIHByb2Nlc3MsIGVzcGVjaWFsbHkgYGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2NgIHdpdGhpbiBga2VybmVsL2JwZi9jb3JlLmNgLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0JiMzOTtzIGltcGFjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2NvcmUuYz0xMTk2PXN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG5rZXJuZWwvYnBmL2NvcmUuYzoxMTk3OmJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLFxua2VybmVsL2JwZi9jb3JlLmMtMTE5OC1cdFx0XHQgIHVuc2lnbmVkIGludCBhbGlnbm1lbnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NDcKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0OTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gQlBGIEpJVCBDb21waWxhdGlvbiAmYW1wOyBGcmVlaW5nKioKCk9rYXksIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGZvciB0aGlzLiBJIG5lZWQgdG8gZXhhbWluZSBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfaGRyYC4gQXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCBtZXJpdCBhdHRlbnRpb24/IEFoLCB5ZXMsIGBicGZfaml0X2ZyZWVgIGlzIG1vZGlmaWVkIGluIHF1aXRlIGEgZmV3IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmaWxlczogYGFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuY2AsIGBhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY2AsIGFuZCBzbyBvbi4gU2ltaWxhcmx5LCBgYnBmX2ludF9qaXRfY29tcGlsZWAgaGFzIG11bHRpcGxlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuCgpTaW5jZSB0aGV5JiMzOTtyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAgYXJlIGV4Y2VsbGVudCBjYW5kaWRhdGVzIGZvciBkZWVwZXIgaW52ZXN0aWdhdGlvbi4gVGhleSByZXByZXNlbnQgY3J1Y2lhbCBwb2ludHMgd2hlcmUgdGhlIEpJVCBwcm9jZXNzIGNhbiBkaXZlcmdlIGJhc2VkIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiBOb3csIHdoaWxlIGBicGZfaW50X2ppdF9jb21waWxlYCBsb29rcyBsaWtlIGl0IG1pZ2h0IGJlIGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjayBkdXJpbmcgcHJvZ3JhbSBsb2FkLCBpdCYjMzk7cyBhY3R1YWxseSBleGFjdGx5IHdoYXQgd2Ugd2FudCB0byBmdXp6IOKAkyB0aGUgQlBGIHByb2dyYW0gbG9hZCBwcm9jZXNzLiBJdCYjMzk7cyBhIGNvbnRyb2wgcGF0aCwgbm90IGEgaG90IHBhdGggaW4gdGhlIGRhdGEgcGF0aC4gU28sIGJvdGggYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFuZCBgYnBmX2ppdF9mcmVlYCBhcmUgc29saWQgcGlja3MuCgpJIHNob3VsZCB2ZXJpZnkgaWYgYGJwZl9qaXRfZnJlZWAgaXMgZGVmaW5lZCBhcyBhIHdlYWsgZnVuY3Rpb24gaW4gYGtlcm5lbC9icGYvY29yZS5jYCBvciBwdXJlbHkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLiBUaGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHRoZSBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIGJwZl9qaXRfZnJlZVxcKCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM9MTQwMz1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYy0xNDE1LVxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jOjE0MTY6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYy0xNDE3LXtcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0zMjEyPWJvb2wgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzIyMy1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjMyMjQ6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzIyNS17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMTk3PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzQ4LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMzQ5OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM1MC17XG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jPTQ0PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jLTE4MC1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYzoxODE6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYy0xODIte1xuLS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9NDYzPWludCBicGZfYXJjaF90ZXh0X2ludmFsaWRhdGUodm9pZCAqZHN0LCBzaXplX3QgbGVuKVxuLS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNDc3LVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo0Nzg6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNDc5LXtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0yMTA9aW50IGJwZl9hcmNoX3RleHRfaW52YWxpZGF0ZSh2b2lkICpkc3QsIHNpemVfdCBsZW4pXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMjIwLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MjIxOnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTIyMi17XG4tLVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYz0zMDk4PWJvb2wgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0zMTA5LVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYzozMTEwOnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTMxMTEte1xuLS1cbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF8zMi5jPTY1Mj1jb25kX2JyYW5jaDpcdFx0XHRmX29mZnNldCA9IGFkZHJzW2kgJiM0MzsgZmlsdGVyW2ldLmpmXTtcbi0tXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfMzIuYy03NTctXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfMzIuYzo3NTg6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF8zMi5jLTc1OS17XG4tLVxuYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmM9MTQ4MD1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jLTE2MTQtXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYzoxNjE1OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYy0xNjE2LXtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9NDA2Mj1ib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtNDA2Ni1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MDY3OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDY4LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEzMzc9dm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTMzODp2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMzOS1zdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTQ3Mz1icGZfaml0X2FkZF9wb2tlX2Rlc2NyaXB0b3Ioc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTQ3OC1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTQ3OTpzdGF0aWMgaW5saW5lIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTE0ODAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk0NAoJCQkJCQkJb3V0cHV0OiAyMDUKCQkJCQkJCXRob3VnaHRzOiA1MjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEJQRiBKSVQgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgYnBmX2ppdF9mcmVlYCBhbmQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFyZSBpbXBsZW1lbnRlZCBhY3Jvc3MgYWxsIHRoZSBhcmNoaXRlY3R1cmVzIHdlJiMzOTtyZSBjb25jZXJuZWQgd2l0aCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMsIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYCwgYW5kIGBicGZfaml0X2JpbmFyeV9oZHJgIHJlc2lkZSBpbiBga2VybmVsL2JwZi9jb3JlLmNgLgoKTXkgZm9jdXMgc3ltYm9scywgYmFzZWQgb24gdGhlIGRpZmYsIGFyZSBnb2luZyB0byBiZToKKiAgIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYAoqICAgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgCiogICBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYAoqICAgYGJwZl9qaXRfYmluYXJ5X2hkcmAKKiAgIGBicGZfaW50X2ppdF9jb21waWxlYAoqICAgYGJwZl9qaXRfZnJlZWAKClRoZSBuZWNlc3NhcnkgY29uZmlnIGlzIGRlZmluaXRlbHkgYEJQRl9KSVRgLiBBbmQgbGV0JiMzOTtzIG5vdCBmb3JnZXQgdGhlIGJhc2ljczogYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZXNzZW50aWFsIGZvciBsb2FkaW5nIEJQRiBwcm9ncmFtcy4gU28sIEkmIzM5O2xsIGJlIHN1cmUgdG8gaW5jbHVkZSBib3RoIGBCUEZfSklUYCBhbmQgYEJQRl9TWVNDQUxMYCBpbiB0aGUgY2hlY2tzLgoKTm93LCBsZXQmIzM5O3MgcmVjYXAgdGhlIHBhdGNoJiMzOTtzIHB1cnBvc2UuIEl0JiMzOTtzIGFib3V0IGZpeGluZyBtZW1vcnkgbGVha3MgYW5kIGluY29ycmVjdCBmcmVlaW5nIG9mIEJQRiBKSVQgaGVhZGVycyBhbmQgZGF0YS4gVGhpcyBoYXBwZW5zIGR1cmluZyBKSVQgY29tcGlsYXRpb24gZmFpbHVyZXMgb3Igd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIHVubG9hZGVkLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgY29yZSBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgSklUIGNvbXBpbGVycy4gVGhpcyBpcyBhbGwgZnVuY3Rpb25hbCwgdXNlci1zcGFjZSBhY2Nlc3NpYmxlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsLiBUaGlzIGlzIGdvaW5nIHRvIG5lZWQgZnV6emluZyB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGR1cmluZyBsb2FkL3VubG9hZCBvcGVyYXRpb25zLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCBgYnBmX2ppdF9iaW5hcnlfaGRyYCDigJMgaXMgaXQgd29ydGggYSBkZWRpY2F0ZWQgZm9jdXM/IEl0JiMzOTtzIGEgc21hbGwgaGVscGVyIGZ1bmN0aW9uLiBGcm9tIGxvb2tpbmcgYXQgaXQsIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0IGV4dHJhY3RzIHRoZSBoZWFkZXIuIFdoaWxlIGl0JiMzOTtzIHNpbXBsZSwgaXQmIzM5O3MgcGFydCBvZiB0aGUgcGljdHVyZSwgc28gSSYjMzk7bGwgaW5jbHVkZSBpdC4KCk9rYXksIGxldCBtZSBkb3VibGUtY2hlY2sgYGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2NgIGlzIGV4cG9ydGVkOyB5ZXAsIGl0JiMzOTtzIGluIGNvcmUuYyBhbmQgYXJjaGl0ZWN0dXJlIEpJVHMgdXNlIGl0LgoKUmlnaHQsIEkmIzM5O20gY29uZmlkZW50IHdpdGggdGhpcy4gSSB3aWxsIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X2hkciYjMzQ7LAogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MgYW5kIGluY29ycmVjdCBmcmVlaW5nIG9mIEJQRiBKSVQgaGVhZGVycyBhbmQgZGF0YSBkdXJpbmcgSklUIGNvbXBpbGF0aW9uIGZhaWx1cmVzIG9yIHdoZW4gZnJlZWluZyBCUEYgcHJvZ3JhbXMuIEl0IG1vZGlmaWVzIGNvcmUgQlBGIEpJVCBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgYW5kIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBKSVQgY29tcGlsZXJzLiBUaGVzZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsLCByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgb2NjdXIgZHVyaW5nIEJQRiBwcm9ncmFtIGxvYWQvdW5sb2FkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9oZHImIzM0OywKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbWVtb3J5IGxlYWtzIGFuZCBpbmNvcnJlY3QgZnJlZWluZyBvZiBCUEYgSklUIGhlYWRlcnMgYW5kIGRhdGEgZHVyaW5nIEpJVCBjb21waWxhdGlvbiBmYWlsdXJlcyBvciB3aGVuIGZyZWVpbmcgQlBGIHByb2dyYW1zLiBJdCBtb2RpZmllcyBjb3JlIEJQRiBKSVQgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFuZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgSklUIGNvbXBpbGVycy4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCwgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIG9jY3VyIGR1cmluZyBCUEYgcHJvZ3JhbSBsb2FkL3VubG9hZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjUxOjM2Ljk1NTIwNTgzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTg1MjU5MDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY1wiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9oZHJcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcyBhbmQgaW5jb3JyZWN0IGZyZWVpbmcgb2YgQlBGIEpJVCBoZWFkZXJzIGFuZCBkYXRhIGR1cmluZyBKSVQgY29tcGlsYXRpb24gZmFpbHVyZXMgb3Igd2hlbiBmcmVlaW5nIEJQRiBwcm9ncmFtcy4gSXQgbW9kaWZpZXMgY29yZSBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVCBjb21waWxlcnMuIFRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgQlBGIHByb2dyYW0gbG9hZC91bmxvYWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjUxOjM2Ljk1NTIxMTQ0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzMDg0MjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGJhYjdhNTM5NmYxMGNiMjQyYjZmZWE0ZTk5MzM4YzBjMTM3M2Q0NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAxNzo1MTozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmNcXG5pbmRleCA2MzlhMjczNmYwMjllZC4uMjljODkzM2UyZGQyY2UgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jXFxuKysrIGIvYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTE0MTIsMyArMTQxMiwyMiBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXG4gXFx0cmV0dXJuIHByb2c7XFxuIH1cXG4rXFxuK3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuK3tcXG4rXFx0aWYgKGZwLVxcdTAwM2VqaXRlZCkge1xcbitcXHRcXHRzdHJ1Y3QgYXJjX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVxcdTAwM2VhdXgtXFx1MDAzZWppdF9kYXRhO1xcbitcXHRcXHRzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkciA9IGJwZl9qaXRfYmluYXJ5X2hkcihmcCk7XFxuK1xcbitcXHRcXHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xcbitcXHRcXHRpZiAoaml0X2RhdGEpIHtcXG4rXFx0XFx0XFx0a2ZyZWUoaml0X2RhdGEtXFx1MDAzZWJwZjJpbnNuKTtcXG4rXFx0XFx0XFx0a2ZyZWUoaml0X2RhdGEpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRicGZfaml0X2JpbmFyeV9mcmVlKGhkcik7XFxuK1xcdFxcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpO1xcbitcXHR9XFxuK1xcbitcXHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xcbmluZGV4IDRjZGM3ZGZiMDViYTlhLi4zMjc4MDI0NzMwNWViMCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xcbisrKyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXFxuQEAgLTIyNTgsNyArMjI1OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfaGRyO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUocm9faGVhZGVyLCBoZWFkZXIpKSkge1xcbi1cXHRcXHRcXHQvKiByb19oZWFkZXIgYW5kIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqL1xcbitcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBOVUxMKTtcXG4gXFx0XFx0XFx0cm9faGVhZGVyID0gTlVMTDtcXG4gXFx0XFx0XFx0aGVhZGVyID0gTlVMTDtcXG4gXFx0XFx0XFx0Z290byBvdXRfZnJlZV9oZHI7XFxuQEAgLTIzMDgsOSArMjMwOCw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdFxcdHByb2ctXFx1MDAzZWppdGVkX2xlbiA9IDA7XFxuIFxcdH1cXG4gXFx0aWYgKGhlYWRlcikge1xcbi1cXHRcXHRicGZfYXJjaF90ZXh0X2NvcHkoXFx1MDAyNnJvX2hlYWRlci1cXHUwMDNlc2l6ZSwgXFx1MDAyNmhlYWRlci1cXHUwMDNlc2l6ZSxcXG4tXFx0XFx0XFx0XFx0ICAgc2l6ZW9mKGhlYWRlci1cXHUwMDNlc2l6ZSkpO1xcbiBcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBoZWFkZXIpO1xcbitcXHRcXHRyb19oZWFkZXIgPSBOVUxMO1xcbiBcXHR9XFxuIFxcdGdvdG8gb3V0X29mZjtcXG4gfVxcbkBAIC0zMjM3LDYgKzMyMzYsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoaml0X2RhdGEpIHtcXG4gXFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKTtcXG4rXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4gXFx0XFx0XFx0a2ZyZWUoaml0X2RhdGEpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdHByb2ctXFx1MDAzZWJwZl9mdW5jID0gKHZvaWQgKilwcm9nLVxcdTAwM2VicGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXFxuaW5kZXggMjczOGI0ZGIxMTY1MzMuLjQ4YWQ0MThkZjEzMzFhIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXFxuQEAgLTIyOTgsNyArMjI5OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWU7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XFxuLVxcdFxcdFxcdC8qIHJvX2hlYWRlciBhbmQgaGVhZGVyIGhhdmUgYmVlbiBmcmVlZCAqL1xcbitcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBOVUxMKTtcXG4gXFx0XFx0XFx0cm9faGVhZGVyID0gTlVMTDtcXG4gXFx0XFx0XFx0aGVhZGVyID0gTlVMTDtcXG4gXFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG5AQCAtMjM0MSwxMCArMjM0MSw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdFxcdHByb2ctXFx1MDAzZWppdGVkX2xlbiA9IDA7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChoZWFkZXIpIHtcXG4tXFx0XFx0YnBmX2FyY2hfdGV4dF9jb3B5KFxcdTAwMjZyb19oZWFkZXItXFx1MDAzZXNpemUsIFxcdTAwMjZoZWFkZXItXFx1MDAzZXNpemUsIHNpemVvZihoZWFkZXItXFx1MDAzZXNpemUpKTtcXG4rXFx0aWYgKGhlYWRlcilcXG4gXFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgaGVhZGVyKTtcXG4tXFx0fVxcbiBcXHRnb3RvIG91dF9vZmZzZXQ7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xcbmluZGV4IDE3Mjc3MDEzMjQ0MGRiLi5lZjYzYzM4YmRmMTUxMCAxMDA2NDRcXG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcXG4rKysgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcXG5AQCAtMTc4LDYgKzE3OCwyNSBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXHRnb3RvIG91dF9vZmZzZXQ7XFxuIH1cXG4gXFxuK3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuK3tcXG4rXFx0aWYgKGZwLVxcdTAwM2VqaXRlZCkge1xcbitcXHRcXHRzdHJ1Y3QgaHBwYV9qaXRfZGF0YSAqaml0X2RhdGEgPSBmcC1cXHUwMDNlYXV4LVxcdTAwM2VqaXRfZGF0YTtcXG4rXFx0XFx0c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIgPSBicGZfaml0X2JpbmFyeV9oZHIoZnApO1xcbitcXG4rXFx0XFx0LyogQ2xlYW51cCBmb3IgZWFybGllciBzdWJwcm9ncyBpZiBqaXRfc3VicHJvZ3MoKSBhYm9ydHMgKi9cXG4rXFx0XFx0aWYgKGppdF9kYXRhKSB7XFxuK1xcdFxcdFxcdGtmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4rXFx0XFx0XFx0a2ZyZWUoaml0X2RhdGEpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRicGZfaml0X2JpbmFyeV9mcmVlKGhkcik7XFxuK1xcdFxcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpO1xcbitcXHR9XFxuK1xcbitcXHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XFxuK31cXG4rXFxuIHU2NCBocHBhX2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKVxcbiB7XFxuIFxcdGRpdiA9IGRpdjY0X3U2NChkaXYsIGRpdmlzb3IpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuY1xcbmluZGV4IDdiMDdiNDM1NzVmMTExLi5mZjliY2Q1NTE2NWI0OSAxMDA2NDRcXG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXFxuKysrIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuY1xcbkBAIC0zMTQsNyArMzE0LDYgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0XFx0YnBmX2ppdF9idWlsZF9wcm9sb2d1ZShjb2RlX2Jhc2UsIFxcdTAwMjZjZ2N0eCk7XFxuIFxcdFxcdGlmIChicGZfaml0X2J1aWxkX2JvZHkoZnAsIGNvZGVfYmFzZSwgZmNvZGVfYmFzZSwgXFx1MDAyNmNnY3R4LCBhZGRycywgcGFzcyxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIGV4dHJhX3Bhc3MpKSB7XFxuLVxcdFxcdFxcdGJwZl9hcmNoX3RleHRfY29weShcXHUwMDI2Zmhkci1cXHUwMDNlc2l6ZSwgXFx1MDAyNmhkci1cXHUwMDNlc2l6ZSwgc2l6ZW9mKGhkci1cXHUwMDNlc2l6ZSkpO1xcbiBcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgaGRyKTtcXG4gXFx0XFx0XFx0Z290byBvdXRfZXJyO1xcbiBcXHRcXHR9XFxuQEAgLTMzOSw4ICszMzgsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gI2VuZGlmXFxuIFxcbiBcXHRpZiAoIWZwLVxcdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcXG4tXFx0XFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSlcXG4rXFx0XFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xcbitcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgTlVMTCk7XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2VycjtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRmcC1cXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbmluZGV4IGNiZmNkMjg3ZWExNjY4Li41NTUzMGU4MGRmMmVmYiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTE1NCw3ICsxNTQsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXG4gXFx0aWYgKCFwcm9nLVxcdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcXG4gXFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKSkpIHtcXG4tXFx0XFx0XFx0Lyogcm9faGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXFxuK1xcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcXG4gXFx0XFx0XFx0aml0X2RhdGEtXFx1MDAzZXJvX2hlYWRlciA9IE5VTEw7XFxuIFxcdFxcdFxcdGppdF9kYXRhLVxcdTAwM2VoZWFkZXIgPSBOVUxMO1xcbiBcXHRcXHRcXHRnb3RvIG91dF9mcmVlX2hkcjtcXG5AQCAtMTgzLDExICsxODMsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXHRcXHRwcm9nLVxcdTAwM2VqaXRlZCA9IDA7XFxuIFxcdFxcdHByb2ctXFx1MDAzZWppdGVkX2xlbiA9IDA7XFxuIFxcdH1cXG4tXFx0aWYgKGppdF9kYXRhLVxcdTAwM2VoZWFkZXIpIHtcXG4tXFx0XFx0YnBmX2FyY2hfdGV4dF9jb3B5KFxcdTAwMjZqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLVxcdTAwM2VzaXplLCBcXHUwMDI2aml0X2RhdGEtXFx1MDAzZWhlYWRlci1cXHUwMDNlc2l6ZSxcXG4tXFx0XFx0XFx0XFx0ICAgc2l6ZW9mKGppdF9kYXRhLVxcdTAwM2VoZWFkZXItXFx1MDAzZXNpemUpKTtcXG4rXFx0aWYgKGppdF9kYXRhLVxcdTAwM2VoZWFkZXIpXFxuIFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKTtcXG4tXFx0fVxcbiBcXHRnb3RvIG91dF9vZmZzZXQ7XFxuIH1cXG4gXFxuQEAgLTIzNyw2ICsyMzQsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuIFxcdFxcdFxcdGt2ZnJlZShqaXRfZGF0YS1cXHUwMDNlY3R4Lm9mZnNldCk7XFxuIFxcdFxcdFxcdGtmcmVlKGppdF9kYXRhKTtcXG4gXFx0XFx0fVxcbitcXHRcXHRwcm9nLVxcdTAwM2VicGZfZnVuYyA9ICh2b2lkICopcHJvZy1cXHUwMDNlYnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpO1xcbiBcXHRcXHRoZHIgPSBicGZfaml0X2JpbmFyeV9wYWNrX2hkcihwcm9nKTtcXG4gXFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGhkciwgTlVMTCk7XFxuIFxcdFxcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihwcm9nKSk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggYjYwODc3NDc4YjQ1ZDYuLmJmMTAwZTc5NGUyNzg0IDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jXFxuQEAgLTMxMDYsMyArMzEwNiwyMiBAQCBib29sIGJwZl9qaXRfaW5saW5lc19oZWxwZXJfY2FsbChzMzIgaW1tKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdH1cXG4gfVxcbitcXG4rdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcXG4re1xcbitcXHRpZiAoZnAtXFx1MDAzZWppdGVkKSB7XFxuK1xcdFxcdHN0cnVjdCBzMzkwX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVxcdTAwM2VhdXgtXFx1MDAzZWppdF9kYXRhO1xcbitcXHRcXHRzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkciA9IGJwZl9qaXRfYmluYXJ5X2hkcihmcCk7XFxuK1xcbitcXHRcXHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xcbitcXHRcXHRpZiAoaml0X2RhdGEpIHtcXG4rXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHguYWRkcnMpO1xcbitcXHRcXHRcXHRrZnJlZShqaXRfZGF0YSk7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTtcXG4rXFx0XFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKGZwKSk7XFxuK1xcdH1cXG4rXFxuK1xcdGJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTtcXG4rfVxcbmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jXFxuaW5kZXggMmZhMGU5Mzc1MTI3NmUuLmI1ODkyY2RjZTcxMTNhIDEwMDY0NFxcbi0tLSBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jXFxuKysrIGIvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmNcXG5AQCAtMTYxMSwzICsxNjExLDIyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdH1cXG4gXFx0Z290byBvdXRfb2ZmO1xcbiB9XFxuK1xcbit2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxcbit7XFxuK1xcdGlmIChmcC1cXHUwMDNlaml0ZWQpIHtcXG4rXFx0XFx0c3RydWN0IHNwYXJjNjRfaml0X2RhdGEgKmppdF9kYXRhID0gZnAtXFx1MDAzZWF1eC1cXHUwMDNlaml0X2RhdGE7XFxuK1xcdFxcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTtcXG4rXFxuK1xcdFxcdC8qIENsZWFudXAgZm9yIGVhcmxpZXIgc3VicHJvZ3MgaWYgaml0X3N1YnByb2dzKCkgYWJvcnRzICovXFxuK1xcdFxcdGlmIChqaXRfZGF0YSkge1xcbitcXHRcXHRcXHRrZnJlZShqaXRfZGF0YS1cXHUwMDNlY3R4Lm9mZnNldCk7XFxuK1xcdFxcdFxcdGtmcmVlKGppdF9kYXRhKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0YnBmX2ppdF9iaW5hcnlfZnJlZShoZHIpO1xcbitcXHRcXHRXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYoZnApKTtcXG4rXFx0fVxcbitcXG4rXFx0YnBmX3Byb2dfdW5sb2NrX2ZyZWUoZnApO1xcbit9XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbmluZGV4IGIyZmVlYzgxZTIzMTJlLi4yODFlODk3NjRkOTg1MyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcXG5AQCAtMzkzMCwxMSArMzkzMCw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdFxcdGlmIChwcm9nbGVuIFxcdTAwM2M9IDApIHtcXG4gb3V0X2ltYWdlOlxcbiBcXHRcXHRcXHRpbWFnZSA9IE5VTEw7XFxuLVxcdFxcdFxcdGlmIChoZWFkZXIpIHtcXG4tXFx0XFx0XFx0XFx0YnBmX2FyY2hfdGV4dF9jb3B5KFxcdTAwMjZoZWFkZXItXFx1MDAzZXNpemUsIFxcdTAwMjZyd19oZWFkZXItXFx1MDAzZXNpemUsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgIHNpemVvZihyd19oZWFkZXItXFx1MDAzZXNpemUpKTtcXG4rXFx0XFx0XFx0aWYgKGhlYWRlcilcXG4gXFx0XFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGhlYWRlciwgcndfaGVhZGVyKTtcXG4tXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRpZiAoZXh0cmFfcGFzcykge1xcbiBcXHRcXHRcXHRcXHRwcm9nLVxcdTAwM2VicGZfZnVuYyA9IE5VTEw7XFxuIFxcdFxcdFxcdFxcdHByb2ctXFx1MDAzZWppdGVkID0gMDtcXG5AQCAtMzk4Nyw3ICszOTg0LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0XFx0XFx0ICogQm90aCBjYXNlcyBhcmUgc2VyaW91cyBidWdzIGFuZCBqdXN0aWZ5IFdBUk5fT04uXFxuIFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGhlYWRlciwgcndfaGVhZGVyKSkpIHtcXG4tXFx0XFx0XFx0XFx0LyogaGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXFxuK1xcdFxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZWFkZXIsIE5VTEwpO1xcbiBcXHRcXHRcXHRcXHRoZWFkZXIgPSBOVUxMO1xcbiBcXHRcXHRcXHRcXHRnb3RvIG91dF9pbWFnZTtcXG4gXFx0XFx0XFx0fVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbmluZGV4IDMyZDUyOTdjNTU3ZTViLi41ZDdmYzcwYmQzMzJlMCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbkBAIC0xMzM4LDYgKzEzMzgsOCBAQCB2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpO1xcbiB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcXG4gc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcXG4gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCk7XFxuK3N0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXFxuK2JwZl9qaXRfYmluYXJ5X2hkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcXG4gXFxuIHZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zLCBib29sIHdhc19jbGFzc2ljKTtcXG4gdm9pZCBicGZfcHJvZ19wYWNrX2ZyZWUodm9pZCAqcHRyLCB1MzIgc2l6ZSk7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvY29yZS5jIGIva2VybmVsL2JwZi9jb3JlLmNcXG5pbmRleCBlMjA3NjY2N2IyNDUxNy4uOGQzNTI4MzExZjhlZWEgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcXG4rKysgYi9rZXJuZWwvYnBmL2NvcmUuY1xcbkBAIC0xMjE4LDYgKzEyMTgsMTMgQEAgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbitcXHQvKiBJbml0aWFsaXplIHJvX2hlYWRlci1cXHUwMDNlc2l6ZSB0byBlbnN1cmUgaXQgaXMgdmFsaWQgZHVyaW5nIGZyZWUgKi9cXG4rXFx0aWYgKElTX0VSUihicGZfYXJjaF90ZXh0X2NvcHkoXFx1MDAyNnJvX2hlYWRlci1cXHUwMDNlc2l6ZSwgXFx1MDAyNnNpemUsIHNpemVvZihzaXplKSkpKSB7XFxuK1xcdFxcdGJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHNpemUpO1xcbitcXHRcXHRicGZfaml0X3VuY2hhcmdlX21vZG1lbShzaXplKTtcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4rXFxuIFxcdCpyd19oZWFkZXIgPSBrdm1hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCEqcndfaGVhZGVyKSB7XFxuIFxcdFxcdGJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHNpemUpO1xcbkBAIC0xMjQ5LDEwICsxMjU2LDkgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXFxuIFxcbiBcXHRrdmZyZWUocndfaGVhZGVyKTtcXG4gXFxuLVxcdGlmIChJU19FUlIocHRyKSkge1xcbi1cXHRcXHRicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCByb19oZWFkZXItXFx1MDAzZXNpemUpO1xcbitcXHRpZiAoSVNfRVJSKHB0cikpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHB0cik7XFxuLVxcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC0xMjYwLDExICsxMjY2LDYgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXFxuICAqICAgMSkgd2hlbiB0aGUgcHJvZ3JhbSBpcyBmcmVlZCBhZnRlcjtcXG4gICogICAyKSB3aGVuIHRoZSBKSVQgZW5naW5lIGZhaWxzIChiZWZvcmUgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSkuXFxuICAqIEZvciBjYXNlIDIpLCB3ZSBuZWVkIHRvIGZyZWUgYm90aCB0aGUgUk8gbWVtb3J5IGFuZCB0aGUgUlcgYnVmZmVyLlxcbi0gKlxcbi0gKiBicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUgcmVxdWlyZXMgcHJvcGVyIHJvX2hlYWRlci1cXHUwMDNlc2l6ZS4gSG93ZXZlcixcXG4tICogYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyBkb2VzIG5vdCBzZXQgaXQuIFRoZXJlZm9yZSwgcm9faGVhZGVyLVxcdTAwM2VzaXplXFxuLSAqIG11c3QgYmUgc2V0IHdpdGggZWl0aGVyIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUgKG5vcm1hbCBwYXRoKSBvclxcbi0gKiBicGZfYXJjaF90ZXh0X2NvcHkgKHdoZW4gaml0IGZhaWxzKS5cXG4gICovXFxuIHZvaWQgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqcm9faGVhZGVyLFxcbiBcXHRcXHRcXHQgICAgICBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJ3X2hlYWRlcilcXG5AQCAtMTI4Niw3ICsxMjg3LDcgQEAgYnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcClcXG4gXFx0cmV0dXJuICh2b2lkICopYWRkcjtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxcbitzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxcbiBicGZfaml0X2JpbmFyeV9oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcClcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIHJlYWxfc3RhcnQgPSAodW5zaWduZWQgbG9uZylmcC1cXHUwMDNlYnBmX2Z1bmM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjUxOjM3LjQ0OTA0OTk5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQxNDkxMzg4MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY1wiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9oZHJcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcyBhbmQgaW5jb3JyZWN0IGZyZWVpbmcgb2YgQlBGIEpJVCBoZWFkZXJzIGFuZCBkYXRhIGR1cmluZyBKSVQgY29tcGlsYXRpb24gZmFpbHVyZXMgb3Igd2hlbiBmcmVlaW5nIEJQRiBwcm9ncmFtcy4gSXQgbW9kaWZpZXMgY29yZSBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVCBjb21waWxlcnMuIFRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgQlBGIHByb2dyYW0gbG9hZC91bmxvYWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBiYWI3YTUzOTZmMTBjYjI0MmI2ZmVhNGU5OTMzOGMwYzEzNzNkNDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxNzo1MTozNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuY1xuaW5kZXggNjM5YTI3MzZmMDI5ZWQuLjI5Yzg5MzNlMmRkMmNlIDEwMDY0NFxuLS0tIGEvYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jXG4rKysgYi9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC0xNDEyLDMgKzE0MTIsMjIgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcbiBcdHJldHVybiBwcm9nO1xuIH1cbitcbit2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuK3tcbitcdGlmIChmcC1cdTAwM2VqaXRlZCkge1xuK1x0XHRzdHJ1Y3QgYXJjX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbitcdFx0c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIgPSBicGZfaml0X2JpbmFyeV9oZHIoZnApO1xuK1xuK1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuK1x0XHRpZiAoaml0X2RhdGEpIHtcbitcdFx0XHRrZnJlZShqaXRfZGF0YS1cdTAwM2VicGYyaW5zbik7XG4rXHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuK1x0XHR9XG4rXG4rXHRcdGJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTtcbitcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKGZwKSk7XG4rXHR9XG4rXG4rXHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XG4rfVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDRjZGM3ZGZiMDViYTlhLi4zMjc4MDI0NzMwNWViMCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTIyNTgsNyArMjI1OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbitcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRyb19oZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGhlYWRlciA9IE5VTEw7XG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG5AQCAtMjMwOCw5ICsyMzA4LDggQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0cHJvZy1cdTAwM2VqaXRlZF9sZW4gPSAwO1xuIFx0fVxuIFx0aWYgKGhlYWRlcikge1xuLVx0XHRicGZfYXJjaF90ZXh0X2NvcHkoXHUwMDI2cm9faGVhZGVyLVx1MDAzZXNpemUsIFx1MDAyNmhlYWRlci1cdTAwM2VzaXplLFxuLVx0XHRcdFx0ICAgc2l6ZW9mKGhlYWRlci1cdTAwM2VzaXplKSk7XG4gXHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIGhlYWRlcik7XG4rXHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHR9XG4gXHRnb3RvIG91dF9vZmY7XG4gfVxuQEAgLTMyMzcsNiArMzIzNiw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbiBcdFx0ICovXG4gXHRcdGlmIChqaXRfZGF0YSkge1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuK1x0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbiBcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdH1cbiBcdFx0cHJvZy1cdTAwM2VicGZfZnVuYyA9ICh2b2lkICopcHJvZy1cdTAwM2VicGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbmluZGV4IDI3MzhiNGRiMTE2NTMzLi40OGFkNDE4ZGYxMzMxYSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbkBAIC0yMjk4LDcgKzIyOTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGF2ZSBiZWVuIGZyZWVkICovXG4rXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XG4gXHRcdFx0cm9faGVhZGVyID0gTlVMTDtcbiBcdFx0XHRoZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG5AQCAtMjM0MSwxMCArMjM0MSw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdHByb2ctXHUwMDNlaml0ZWRfbGVuID0gMDtcbiBcdH1cbiBcbi1cdGlmIChoZWFkZXIpIHtcbi1cdFx0YnBmX2FyY2hfdGV4dF9jb3B5KFx1MDAyNnJvX2hlYWRlci1cdTAwM2VzaXplLCBcdTAwMjZoZWFkZXItXHUwMDNlc2l6ZSwgc2l6ZW9mKGhlYWRlci1cdTAwM2VzaXplKSk7XG4rXHRpZiAoaGVhZGVyKVxuIFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBoZWFkZXIpO1xuLVx0fVxuIFx0Z290byBvdXRfb2Zmc2V0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IDE3Mjc3MDEzMjQ0MGRiLi5lZjYzYzM4YmRmMTUxMCAxMDA2NDRcbi0tLSBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xuKysrIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtMTc4LDYgKzE3OCwyNSBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0Z290byBvdXRfb2Zmc2V0O1xuIH1cbiBcbit2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuK3tcbitcdGlmIChmcC1cdTAwM2VqaXRlZCkge1xuK1x0XHRzdHJ1Y3QgaHBwYV9qaXRfZGF0YSAqaml0X2RhdGEgPSBmcC1cdTAwM2VhdXgtXHUwMDNlaml0X2RhdGE7XG4rXHRcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTtcbitcbitcdFx0LyogQ2xlYW51cCBmb3IgZWFybGllciBzdWJwcm9ncyBpZiBqaXRfc3VicHJvZ3MoKSBhYm9ydHMgKi9cbitcdFx0aWYgKGppdF9kYXRhKSB7XG4rXHRcdFx0a2ZyZWUoaml0X2RhdGEtXHUwMDNlY3R4Lm9mZnNldCk7XG4rXHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuK1x0XHR9XG4rXG4rXHRcdGJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTtcbitcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKGZwKSk7XG4rXHR9XG4rXG4rXHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XG4rfVxuK1xuIHU2NCBocHBhX2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKVxuIHtcbiBcdGRpdiA9IGRpdjY0X3U2NChkaXYsIGRpdmlzb3IpO1xuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCA3YjA3YjQzNTc1ZjExMS4uZmY5YmNkNTUxNjViNDkgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMzE0LDcgKzMxNCw2IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoY29kZV9iYXNlLCBcdTAwMjZjZ2N0eCk7XG4gXHRcdGlmIChicGZfaml0X2J1aWxkX2JvZHkoZnAsIGNvZGVfYmFzZSwgZmNvZGVfYmFzZSwgXHUwMDI2Y2djdHgsIGFkZHJzLCBwYXNzLFxuIFx0XHRcdFx0ICAgICAgIGV4dHJhX3Bhc3MpKSB7XG4tXHRcdFx0YnBmX2FyY2hfdGV4dF9jb3B5KFx1MDAyNmZoZHItXHUwMDNlc2l6ZSwgXHUwMDI2aGRyLVx1MDAzZXNpemUsIHNpemVvZihoZHItXHUwMDNlc2l6ZSkpO1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShmaGRyLCBoZHIpO1xuIFx0XHRcdGdvdG8gb3V0X2VycjtcbiBcdFx0fVxuQEAgLTMzOSw4ICszMzgsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiAjZW5kaWZcbiBcbiBcdGlmICghZnAtXHUwMDNlaXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7XG4tXHRcdGlmIChicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGZoZHIsIGhkcikpXG4rXHRcdGlmIChicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGZoZHIsIGhkcikpIHtcbitcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgTlVMTCk7XG4gXHRcdFx0Z290byBvdXRfZXJyO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHRmcC1cdTAwM2VicGZfZnVuYyA9ICh2b2lkICopZmltYWdlO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IGNiZmNkMjg3ZWExNjY4Li41NTUzMGU4MGRmMmVmYiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTE1NCw3ICsxNTQsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFxuIFx0aWYgKCFwcm9nLVx1MDAzZWlzX2Z1bmMgfHwgZXh0cmFfcGFzcykge1xuIFx0XHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKSkpIHtcbi1cdFx0XHQvKiByb19oZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbitcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGppdF9kYXRhLVx1MDAzZWhlYWRlciA9IE5VTEw7XG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG5AQCAtMTgzLDExICsxODMsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRwcm9nLVx1MDAzZWppdGVkID0gMDtcbiBcdFx0cHJvZy1cdTAwM2VqaXRlZF9sZW4gPSAwO1xuIFx0fVxuLVx0aWYgKGppdF9kYXRhLVx1MDAzZWhlYWRlcikge1xuLVx0XHRicGZfYXJjaF90ZXh0X2NvcHkoXHUwMDI2aml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLVx1MDAzZXNpemUsIFx1MDAyNmppdF9kYXRhLVx1MDAzZWhlYWRlci1cdTAwM2VzaXplLFxuLVx0XHRcdFx0ICAgc2l6ZW9mKGppdF9kYXRhLVx1MDAzZWhlYWRlci1cdTAwM2VzaXplKSk7XG4rXHRpZiAoaml0X2RhdGEtXHUwMDNlaGVhZGVyKVxuIFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuLVx0fVxuIFx0Z290byBvdXRfb2Zmc2V0O1xuIH1cbiBcbkBAIC0yMzcsNiArMjM0LDcgQEAgdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuIFx0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbiBcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdH1cbitcdFx0cHJvZy1cdTAwM2VicGZfZnVuYyA9ICh2b2lkICopcHJvZy1cdTAwM2VicGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7XG4gXHRcdGhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpO1xuIFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGRyLCBOVUxMKTtcbiBcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKHByb2cpKTtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggYjYwODc3NDc4YjQ1ZDYuLmJmMTAwZTc5NGUyNzg0IDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuKysrIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTMxMDYsMyArMzEwNiwyMiBAQCBib29sIGJwZl9qaXRfaW5saW5lc19oZWxwZXJfY2FsbChzMzIgaW1tKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gfVxuK1xuK3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG4re1xuK1x0aWYgKGZwLVx1MDAzZWppdGVkKSB7XG4rXHRcdHN0cnVjdCBzMzkwX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbitcdFx0c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIgPSBicGZfaml0X2JpbmFyeV9oZHIoZnApO1xuK1xuK1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuK1x0XHRpZiAoaml0X2RhdGEpIHtcbitcdFx0XHRrdmZyZWUoaml0X2RhdGEtXHUwMDNlY3R4LmFkZHJzKTtcbitcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4rXHRcdH1cbitcbitcdFx0YnBmX2ppdF9iaW5hcnlfZnJlZShoZHIpO1xuK1x0XHRXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYoZnApKTtcbitcdH1cbitcbitcdGJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmMgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuY1xuaW5kZXggMmZhMGU5Mzc1MTI3NmUuLmI1ODkyY2RjZTcxMTNhIDEwMDY0NFxuLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmNcbisrKyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jXG5AQCAtMTYxMSwzICsxNjExLDIyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHR9XG4gXHRnb3RvIG91dF9vZmY7XG4gfVxuK1xuK3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG4re1xuK1x0aWYgKGZwLVx1MDAzZWppdGVkKSB7XG4rXHRcdHN0cnVjdCBzcGFyYzY0X2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbitcdFx0c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIgPSBicGZfaml0X2JpbmFyeV9oZHIoZnApO1xuK1xuK1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuK1x0XHRpZiAoaml0X2RhdGEpIHtcbitcdFx0XHRrZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbitcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4rXHRcdH1cbitcbitcdFx0YnBmX2ppdF9iaW5hcnlfZnJlZShoZHIpO1xuK1x0XHRXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYoZnApKTtcbitcdH1cbitcbitcdGJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCBiMmZlZWM4MWUyMzEyZS4uMjgxZTg5NzY0ZDk4NTMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTM5MzAsMTEgKzM5MzAsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRpZiAocHJvZ2xlbiBcdTAwM2M9IDApIHtcbiBvdXRfaW1hZ2U6XG4gXHRcdFx0aW1hZ2UgPSBOVUxMO1xuLVx0XHRcdGlmIChoZWFkZXIpIHtcbi1cdFx0XHRcdGJwZl9hcmNoX3RleHRfY29weShcdTAwMjZoZWFkZXItXHUwMDNlc2l6ZSwgXHUwMDI2cndfaGVhZGVyLVx1MDAzZXNpemUsXG4tXHRcdFx0XHRcdFx0ICAgc2l6ZW9mKHJ3X2hlYWRlci1cdTAwM2VzaXplKSk7XG4rXHRcdFx0aWYgKGhlYWRlcilcbiBcdFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZWFkZXIsIHJ3X2hlYWRlcik7XG4tXHRcdFx0fVxuIFx0XHRcdGlmIChleHRyYV9wYXNzKSB7XG4gXHRcdFx0XHRwcm9nLVx1MDAzZWJwZl9mdW5jID0gTlVMTDtcbiBcdFx0XHRcdHByb2ctXHUwMDNlaml0ZWQgPSAwO1xuQEAgLTM5ODcsNyArMzk4NCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdFx0ICogQm90aCBjYXNlcyBhcmUgc2VyaW91cyBidWdzIGFuZCBqdXN0aWZ5IFdBUk5fT04uXG4gXHRcdFx0ICovXG4gXHRcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShoZWFkZXIsIHJ3X2hlYWRlcikpKSB7XG4tXHRcdFx0XHQvKiBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbitcdFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZWFkZXIsIE5VTEwpO1xuIFx0XHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRcdGdvdG8gb3V0X2ltYWdlO1xuIFx0XHRcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuaW5kZXggMzJkNTI5N2M1NTdlNWIuLjVkN2ZjNzBiZDMzMmUwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuKysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuQEAgLTEzMzgsNiArMTMzOCw4IEBAIHZvaWQgYnBmX2ppdF9mcmVlX2V4ZWModm9pZCAqYWRkcik7XG4gdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCk7XG4gc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcbiBicGZfaml0X2JpbmFyeV9wYWNrX2hkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcbitzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxuK2JwZl9qaXRfYmluYXJ5X2hkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcbiBcbiB2b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucywgYm9vbCB3YXNfY2xhc3NpYyk7XG4gdm9pZCBicGZfcHJvZ19wYWNrX2ZyZWUodm9pZCAqcHRyLCB1MzIgc2l6ZSk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuY1xuaW5kZXggZTIwNzY2NjdiMjQ1MTcuLjhkMzUyODMxMWY4ZWVhIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcbisrKyBiL2tlcm5lbC9icGYvY29yZS5jXG5AQCAtMTIxOCw2ICsxMjE4LDEzIEBAIGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLFxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbitcdC8qIEluaXRpYWxpemUgcm9faGVhZGVyLVx1MDAzZXNpemUgdG8gZW5zdXJlIGl0IGlzIHZhbGlkIGR1cmluZyBmcmVlICovXG4rXHRpZiAoSVNfRVJSKGJwZl9hcmNoX3RleHRfY29weShcdTAwMjZyb19oZWFkZXItXHUwMDNlc2l6ZSwgXHUwMDI2c2l6ZSwgc2l6ZW9mKHNpemUpKSkpIHtcbitcdFx0YnBmX3Byb2dfcGFja19mcmVlKHJvX2hlYWRlciwgc2l6ZSk7XG4rXHRcdGJwZl9qaXRfdW5jaGFyZ2VfbW9kbWVtKHNpemUpO1xuK1x0XHRyZXR1cm4gTlVMTDtcbitcdH1cbitcbiBcdCpyd19oZWFkZXIgPSBrdm1hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghKnJ3X2hlYWRlcikge1xuIFx0XHRicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCBzaXplKTtcbkBAIC0xMjQ5LDEwICsxMjU2LDkgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXG4gXG4gXHRrdmZyZWUocndfaGVhZGVyKTtcbiBcbi1cdGlmIChJU19FUlIocHRyKSkge1xuLVx0XHRicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCByb19oZWFkZXItXHUwMDNlc2l6ZSk7XG4rXHRpZiAoSVNfRVJSKHB0cikpXG4gXHRcdHJldHVybiBQVFJfRVJSKHB0cik7XG4tXHR9XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtMTI2MCwxMSArMTI2Niw2IEBAIGludCBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqcm9faGVhZGVyLFxuICAqICAgMSkgd2hlbiB0aGUgcHJvZ3JhbSBpcyBmcmVlZCBhZnRlcjtcbiAgKiAgIDIpIHdoZW4gdGhlIEpJVCBlbmdpbmUgZmFpbHMgKGJlZm9yZSBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKS5cbiAgKiBGb3IgY2FzZSAyKSwgd2UgbmVlZCB0byBmcmVlIGJvdGggdGhlIFJPIG1lbW9yeSBhbmQgdGhlIFJXIGJ1ZmZlci5cbi0gKlxuLSAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZSByZXF1aXJlcyBwcm9wZXIgcm9faGVhZGVyLVx1MDAzZXNpemUuIEhvd2V2ZXIsXG4tICogYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyBkb2VzIG5vdCBzZXQgaXQuIFRoZXJlZm9yZSwgcm9faGVhZGVyLVx1MDAzZXNpemVcbi0gKiBtdXN0IGJlIHNldCB3aXRoIGVpdGhlciBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplIChub3JtYWwgcGF0aCkgb3Jcbi0gKiBicGZfYXJjaF90ZXh0X2NvcHkgKHdoZW4gaml0IGZhaWxzKS5cbiAgKi9cbiB2b2lkIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlcixcbiBcdFx0XHQgICAgICBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJ3X2hlYWRlcilcbkBAIC0xMjg2LDcgKzEyODcsNyBAQCBicGZfaml0X2JpbmFyeV9wYWNrX2hkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuIFx0cmV0dXJuICh2b2lkICopYWRkcjtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxuK3N0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG4gYnBmX2ppdF9iaW5hcnlfaGRyKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqZnApXG4ge1xuIFx0dW5zaWduZWQgbG9uZyByZWFsX3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpZnAtXHUwMDNlYnBmX2Z1bmM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MTozNy40NDkwNTEyMzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTgyNTgyNjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBKSVQgQ29tcGlsYXRpb24gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0J3MgZGVhbGluZyB3aXRoIGNydWNpYWwgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIHdpdGhpbiB0aGUgQlBGIEpJVCBjb21waWxlciwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gaG93IHdlIGhhbmRsZSBKSVQgaGVhZGVycyBhbmQgZGF0YSB3aGVuIHRoZXJlIGFyZSBjb21waWxhdGlvbiBmYWlsdXJlcyBvciBkdXJpbmcgdGhlIHVubG9hZGluZyBvZiBCUEYgcHJvZ3JhbXMuIEl0IGFwcGVhcnMgdGhhdCB0aGUgcGF0Y2ggYWRkcmVzc2VzIG1pc3Npbmcgb3IgaW5jb3JyZWN0IGBicGZfaml0X2ZyZWVgIGltcGxlbWVudGF0aW9ucyBmb3IgYSBudW1iZXIgb2YgYXJjaGl0ZWN0dXJlcyDigJMgYXJjLCBwYXJpc2MsIHMzOTAsIGFuZCBzcGFyYyBhcmUgbWVudGlvbmVkIGFzIGhhdmluZyBuZXcgaW1wbGVtZW50YXRpb25zLCBvciBuZWVkaW5nIHVwZGF0ZXMuIFRoaXMgaW1wbGllcyB0aGF0IHRoZXNlIGFyY2hpdGVjdHVyZXMgd2VyZSBlaXRoZXIgdXNpbmcgYSBkZWZhdWx0LCBwb3NzaWJseSBsZXNzIGVmZmljaWVudCwgZnJlZWluZyBtZWNoYW5pc20sIG9yIGRpZG4ndCBoYW5kbGUgZmFpbHVyZXMgY29ycmVjdGx5LiBGb3IgdGhlIGFybTY0LCBsb29uZ2FyY2gsIHBvd2VycGMsIHJpc2N2LCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMsIHRoZSBjaGFuZ2VzIHNlZW0gdG8gZm9jdXMgb24gcmVmaW5pbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgYnBmX2ludF9qaXRfY29tcGlsZWAuXG5cblRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYmVpbmcgdGFyZ2V0ZWQgaXMgdW5kb3VidGVkbHkgcmVhY2hhYmxlLiBCUEYgSklUIGlzIGZ1bmRhbWVudGFsLCBhbmQgdXNlciBzcGFjZSBpbnRlcmFjdHMgd2l0aCBpdCB0aHJvdWdoIHRoZSBgYnBmKClgIHN5c2NhbGwgd2hlbiBsb2FkaW5nIHByb2dyYW1zLiBTbywgd2UncmUgdGFsa2luZyBhYm91dCBhIGNoYW5nZSB0aGF0IHdpbGwgaW1wYWN0IGhvdyBtZW1vcnkgaXMgbWFuYWdlZCBkdXJpbmcgYm90aCBwcm9ncmFtIGxvYWRpbmcgYW5kIHVubG9hZGluZy5cblxuTXkga2V5IGZvY3VzLCBub3csIG5lZWRzIHRvIGJlIG9uIGlkZW50aWZ5aW5nIHRoZSBjb3JlIHN5bWJvbHMgaW52b2x2ZWQuIEkgY2FuIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIHRvdWNoIG9uIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAsIHdoaWNoIGFyZSBjcnVjaWFsIGluIG1hbnkgYXJjaGl0ZWN0dXJlcy4gSSBhbHNvIHNlZSBjYWxscyB0byBmdW5jdGlvbnMgbGlrZSBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfaGRyYC4gVGhlc2UgYXJlIGFsbCBjbGVhcmx5IGludm9sdmVkIGluIG1hbmFnaW5nIHRoZSBhbGxvY2F0ZWQgYmluYXJ5IGRhdGEgd2l0aGluIHRoZSBKSVQgcHJvY2Vzcy4gSXQncyBhIGJpdCBvZiBhIGRldGFpbCwgYnV0IGl0IGlzIGNsZWFyIHRoYXQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYy5cblxuTG9va2luZyBhdCBga2VybmVsL2JwZi9jb3JlLmNgLCBJJ20gY29uZmlybWluZyB0aGF0IGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCBpcyBleHBvcnRlZCBvciB1c2VkIGJ5IHRoZSBKSVQgaW1wbGVtZW50YXRpb25zLCBhbmQgdGhhdCBgYnBmX2ppdF9mcmVlYCBpcyBjYWxsZWQgd2hlbiBhIEJQRiBwcm9ncmFtIGlzIGZyZWVkLCBqdXN0IGFzIEknZCBleHBlY3QuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSByZWFsbHkgYGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2NgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWVgLCBgYnBmX2ppdF9mcmVlYCwgYW5kIGBicGZfaW50X2ppdF9jb21waWxlYC4gSSBuZWVkIHRvIHJlbWVtYmVyLCB3aGVuIHJldmlld2luZywgdGhhdCBgYnBmX2ludF9qaXRfY29tcGlsZWAgaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbnMgYXJlIGluIHBsYWNlLiBPYnZpb3VzbHksIGBDT05GSUdfQlBGX0pJVGAgaXMgYSBtdXN0LiBBbmQgZnJvbSBleHBlcmllbmNlLCB0aGF0J3MgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gbWFueSBhcmNoaXRlY3R1cmVzLCBzbyBJJ2xsIGRvdWJsZS1jaGVjayBga2VybmVsL2JwZi9LY29uZmlnYC4gQW5kIG9mIGNvdXJzZSwgSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB2ZXJpZmljYXRpb24gdG9vbHMgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcncyBjb3JyZWN0IGFuZCB0aGF0IEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MjYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MTo0Ni40MzE2MzY3MDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYwNjc0ODUzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jPTIwOTM9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIxOTAtXFx0aW1hZ2Vfc2l6ZSA9IGV4dGFibGVfb2Zmc2V0ICsgZXh0YWJsZV9zaXplO1xcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjIxOTE6XFx0cm9faGVhZGVyID0gYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyhpbWFnZV9zaXplLCBcXHUwMDI2cm9faW1hZ2VfcHRyLFxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIxOTItXFx0XFx0XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHU2NCksIFxcdTAwMjZoZWFkZXIsIFxcdTAwMjZpbWFnZV9wdHIsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxOTc9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjI1Ny1cXHQvKiBOb3cgd2Uga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIHRvIG1ha2UgKi9cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyNTg6XFx0cm9faGVhZGVyID0gYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyhpbWFnZV9zaXplLCBcXHUwMDI2cm9faW1hZ2VfcHRyLCBzaXplb2YodTMyKSxcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyNTktXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmhlYWRlciwgXFx1MDAyNmltYWdlX3B0ciwgaml0X2ZpbGxfaG9sZSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9MTY1PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0yOTYtXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzoyOTc6XFx0ZmhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MoYWxsb2NsZW4sIFxcdTAwMjZmaW1hZ2UsIDQsIFxcdTAwMjZoZHIsIFxcdTAwMjZpbWFnZSxcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTI5OC1cXHRcXHRcXHRcXHRcXHQgYnBmX2ppdF9maWxsX2lsbF9pbnNucywgYnBmX3Byb2dfd2FzX2NsYXNzaWMoZnApKTtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jPTQ0PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0xMDgtXFx0XFx0XFx0aml0X2RhdGEtXFx1MDAzZXJvX2hlYWRlciA9XFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MTA5OlxcdFxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MocHJvZ19zaXplICsgZXh0YWJsZV9zaXplLFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTExMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZqaXRfZGF0YS1cXHUwMDNlcm9faW1hZ2UsIHNpemVvZih1MzIpLFxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTM4NTA9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zOTYxLVxcdFxcdFxcdC8qIGFsbG9jYXRlIG1vZHVsZSBtZW1vcnkgZm9yIHg4NiBpbnNucyBhbmQgZXh0YWJsZSAqL1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozOTYyOlxcdFxcdFxcdGhlYWRlciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2Mocm91bmR1cChwcm9nbGVuLCBhbGlnbikgKyBleHRhYmxlX3NpemUsXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM5NjMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNmltYWdlLCBhbGlnbiwgXFx1MDAyNnJ3X2hlYWRlciwgXFx1MDAyNnJ3X2ltYWdlLFxcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzUzPXN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzU0OmJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqcm9faW1hZ2UsXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzU1LVxcdFxcdFxcdCAgdW5zaWduZWQgaW50IGFsaWdubWVudCxcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTExOTY9c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcXG5rZXJuZWwvYnBmL2NvcmUuYzoxMTk3OmJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLFxcbmtlcm5lbC9icGYvY29yZS5jLTExOTgtXFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgYWxpZ25tZW50LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MTo0OS4wMzgzOTQxMzNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzg0NTA2MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgQlBGIEpJVCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBtYWtpbmcgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHRoZSBCUEYgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MuIEkgc2VlIGl0J3MgdG91Y2hpbmcgYGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2NgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYCB3aXRoaW4gYGtlcm5lbC9icGYvY29yZS5jYC4gVGhpcyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QsIGFzIHRoYXQncyB0aGUgY29yZSBvZiBob3cgdGhlIEpJVCBiaW5hcmllcyBhcmUgaGFuZGxlZC4gSXQgYWxzbyBleHRlbmRzIHRvIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAgYWNyb3NzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMsIHNvIHRoaXMgc2VlbXMgcHJldHR5IGZhci1yZWFjaGluZy5cblxuR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBtb2RpZmljYXRpb25zLCBhbmQgc3BlY2lmaWNhbGx5IHRob3NlIGZ1bmN0aW9ucywgdGhpcyBpcyBhYnNvbHV0ZWx5IHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIHRob3JvdWdoIGZ1enppbmcuIFRoZSBrZXkgc3ltYm9scyBJJ20gZ29pbmcgdG8gZm9jdXMgb24gYXJlIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYCwgYW5kIGFsc28gYGJwZl9qaXRfYmluYXJ5X2hkcmAsIGFzIHRob3NlIHNlZW0gbGlrZSB0aGUgbW9zdCBjcml0aWNhbCBwb2ludHMuXG5cbkFoLCBnb29kLCBpdCBsb29rcyBsaWtlIGBicGZfaml0X2JpbmFyeV9oZHJgIHdhcyBwcmV2aW91c2x5IHN0YXRpYyBhbmQgaXMgbm93IGJlaW5nIGV4cG9ydGVkLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4gSXTigJlzIGFuIGltcG9ydGFudCBkZXRhaWwuXG5cbk5vdywgbGV0J3Mgc2VlIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSSdtIGFzc3VtaW5nIGBDT05GSUdfQlBGX0pJVGAgaXMgZ29pbmcgdG8gYmUgYSByZXF1aXJlbWVudCBoZXJlLiBBIHF1aWNrIGNoZWNrIG9mIGBrZXJuZWwvYnBmL0tjb25maWdgIHdpbGwgY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzZXQgY29ycmVjdGx5IHRvIGVuYWJsZSB0aGVzZSBuZXcgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIyMSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MTo1NC40MjI5MDIzOTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExODc5NzAzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0pJVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXFxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXFxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MTo1Ni41NDE3MDYxMzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDgwODAwMDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIEpJVCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGZvY3VzIGdvZXMgdG8gdGhlIEJQRiBKSVQgY29uZmlndXJhdGlvbi4gU2VlbXMgbGlrZSBgQlBGX0pJVGAgaXMgdGhlIGNyaXRpY2FsIG9uZSwgYXMgZXhwZWN0ZWQuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQgdG9vLCBhbHRob3VnaCB0aGF0IG9uZSdzIHVzdWFsbHkgdGFrZW4gY2FyZSBvZi4gXG5cblRoZSBmaWxlIG1vZGlmaWNhdGlvbnMgcG9pbnQgZGlyZWN0bHkgdG8gYEJQRl9KSVRgIGJlaW5nIHRoZSBwcmltYXJ5IGZvY3VzIGhlcmUuIEkgc2VlIGNoYW5nZXMgaW4gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBKSVQgY29tcGlsYXRpb24gZmlsZXMgbGlrZSBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYCBhbmQgYGFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jYC4gVGhhdCBmdXJ0aGVyIHJlaW5mb3JjZXMgdGhlIGltcG9ydGFuY2Ugb2YgYEJQRl9KSVRgLlxuXG5Ob3csIEkgc2hvdWxkIGludmVzdGlnYXRlIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBwcm9jZXNzLCBlc3BlY2lhbGx5IGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCB3aXRoaW4gYGtlcm5lbC9icGYvY29yZS5jYC4gTGV0J3Mgc2VlIGhvdyB0aGF0J3MgaW1wYWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDc3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjUyOjAxLjAyMjUwODg1N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTc2MjI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvY29yZS5jPTExOTY9c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcXG5rZXJuZWwvYnBmL2NvcmUuYzoxMTk3OmJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLFxcbmtlcm5lbC9icGYvY29yZS5jLTExOTgtXFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgYWxpZ25tZW50LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MjowMS4wODIyODExMTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzM5MjY2NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEJQRiBKSVQgQ29tcGlsYXRpb24gXHUwMDI2IEZyZWVpbmcqKlxuXG5Pa2F5LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGZvciB0aGlzLiBJIG5lZWQgdG8gZXhhbWluZSBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfaGRyYC4gQXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCBtZXJpdCBhdHRlbnRpb24/IEFoLCB5ZXMsIGBicGZfaml0X2ZyZWVgIGlzIG1vZGlmaWVkIGluIHF1aXRlIGEgZmV3IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmaWxlczogYGFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuY2AsIGBhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY2AsIGFuZCBzbyBvbi4gU2ltaWxhcmx5LCBgYnBmX2ludF9qaXRfY29tcGlsZWAgaGFzIG11bHRpcGxlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuXG5cblNpbmNlIHRoZXkncmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIGBicGZfaml0X2ZyZWVgIGFyZSBleGNlbGxlbnQgY2FuZGlkYXRlcyBmb3IgZGVlcGVyIGludmVzdGlnYXRpb24uIFRoZXkgcmVwcmVzZW50IGNydWNpYWwgcG9pbnRzIHdoZXJlIHRoZSBKSVQgcHJvY2VzcyBjYW4gZGl2ZXJnZSBiYXNlZCBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gTm93LCB3aGlsZSBgYnBmX2ludF9qaXRfY29tcGlsZWAgbG9va3MgbGlrZSBpdCBtaWdodCBiZSBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgZHVyaW5nIHByb2dyYW0gbG9hZCwgaXQncyBhY3R1YWxseSBleGFjdGx5IHdoYXQgd2Ugd2FudCB0byBmdXp6IOKAkyB0aGUgQlBGIHByb2dyYW0gbG9hZCBwcm9jZXNzLiBJdCdzIGEgY29udHJvbCBwYXRoLCBub3QgYSBob3QgcGF0aCBpbiB0aGUgZGF0YSBwYXRoLiBTbywgYm90aCBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIGBicGZfaml0X2ZyZWVgIGFyZSBzb2xpZCBwaWNrcy5cblxuSSBzaG91bGQgdmVyaWZ5IGlmIGBicGZfaml0X2ZyZWVgIGlzIGRlZmluZWQgYXMgYSB3ZWFrIGZ1bmN0aW9uIGluIGBrZXJuZWwvYnBmL2NvcmUuY2Agb3IgcHVyZWx5IGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gVGhhdCB3aWxsIGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB0aGUgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1NDcsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTc6NTI6MDcuODIxNTQ5ODcyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI2NzMwNTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZvaWQgYnBmX2ppdF9mcmVlXFxcXChcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jPTE0MDM9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYy0xNDE1LVxcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYzoxNDE2OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTE0MTcte1xcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MzIxMj1ib29sIGJwZl9qaXRfaW5saW5lc19oZWxwZXJfY2FsbChzMzIgaW1tKVxcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzIyMy1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzozMjI0OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0zMjI1LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjE5Nz1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzQ4LVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjM0OTp2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzUwLXtcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYz00ND1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jLTE4MC1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmM6MTgxOnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jLTE4Mi17XFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTQ2Mz1pbnQgYnBmX2FyY2hfdGV4dF9pbnZhbGlkYXRlKHZvaWQgKmRzdCwgc2l6ZV90IGxlbilcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNDc3LVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6NDc4OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy00Nzkte1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9MjEwPWludCBicGZfYXJjaF90ZXh0X2ludmFsaWRhdGUodm9pZCAqZHN0LCBzaXplX3QgbGVuKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMjIwLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jOjIyMTp2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMjIyLXtcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MzA5OD1ib29sIGJwZl9qaXRfaW5saW5lc19oZWxwZXJfY2FsbChzMzIgaW1tKVxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0zMTA5LVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MzExMDp2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMzExMS17XFxuLS1cXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfMzIuYz02NTI9Y29uZF9icmFuY2g6XFx0XFx0XFx0Zl9vZmZzZXQgPSBhZGRyc1tpICsgZmlsdGVyW2ldLmpmXTtcXG4tLVxcbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF8zMi5jLTc1Ny1cXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfMzIuYzo3NTg6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfMzIuYy03NTkte1xcbi0tXFxuYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmM9MTQ4MD1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmMtMTYxNC1cXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYzoxNjE1OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmMtMTYxNi17XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9NDA2Mj1ib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDY2LVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MDY3OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtNDA2OC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEzMzc9dm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMzg6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzM5LXN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTE0NzM9YnBmX2ppdF9hZGRfcG9rZV9kZXNjcmlwdG9yKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTQ3OC1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjE0Nzk6c3RhdGljIGlubGluZSB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTQ4MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjUyOjEwLjE0ODI4NjQzOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzEzOTEzOTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBCUEYgSklUIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgYGJwZl9qaXRfZnJlZWAgYW5kIGBicGZfaW50X2ppdF9jb21waWxlYCBhcmUgaW1wbGVtZW50ZWQgYWNyb3NzIGFsbCB0aGUgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBjb25jZXJuZWQgd2l0aCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMsIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYCwgYW5kIGBicGZfaml0X2JpbmFyeV9oZHJgIHJlc2lkZSBpbiBga2VybmVsL2JwZi9jb3JlLmNgLlxuXG5NeSBmb2N1cyBzeW1ib2xzLCBiYXNlZCBvbiB0aGUgZGlmZiwgYXJlIGdvaW5nIHRvIGJlOlxuKiAgIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYFxuKiAgIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYFxuKiAgIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWVgXG4qICAgYGJwZl9qaXRfYmluYXJ5X2hkcmBcbiogICBgYnBmX2ludF9qaXRfY29tcGlsZWBcbiogICBgYnBmX2ppdF9mcmVlYFxuXG5UaGUgbmVjZXNzYXJ5IGNvbmZpZyBpcyBkZWZpbml0ZWx5IGBCUEZfSklUYC4gQW5kIGxldCdzIG5vdCBmb3JnZXQgdGhlIGJhc2ljczogYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZXNzZW50aWFsIGZvciBsb2FkaW5nIEJQRiBwcm9ncmFtcy4gU28sIEknbGwgYmUgc3VyZSB0byBpbmNsdWRlIGJvdGggYEJQRl9KSVRgIGFuZCBgQlBGX1NZU0NBTExgIGluIHRoZSBjaGVja3MuXG5cbk5vdywgbGV0J3MgcmVjYXAgdGhlIHBhdGNoJ3MgcHVycG9zZS4gSXQncyBhYm91dCBmaXhpbmcgbWVtb3J5IGxlYWtzIGFuZCBpbmNvcnJlY3QgZnJlZWluZyBvZiBCUEYgSklUIGhlYWRlcnMgYW5kIGRhdGEuIFRoaXMgaGFwcGVucyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uIGZhaWx1cmVzIG9yIHdoZW4gQlBGIHByb2dyYW1zIGFyZSB1bmxvYWRlZC4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGNvcmUgQlBGIEpJVCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVCBjb21waWxlcnMuIFRoaXMgaXMgYWxsIGZ1bmN0aW9uYWwsIHVzZXItc3BhY2UgYWNjZXNzaWJsZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbC4gVGhpcyBpcyBnb2luZyB0byBuZWVkIGZ1enppbmcgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBkdXJpbmcgbG9hZC91bmxvYWQgb3BlcmF0aW9ucy5cblxuSSdtIHRoaW5raW5nIGFib3V0IGBicGZfaml0X2JpbmFyeV9oZHJgIOKAkyBpcyBpdCB3b3J0aCBhIGRlZGljYXRlZCBmb2N1cz8gSXQncyBhIHNtYWxsIGhlbHBlciBmdW5jdGlvbi4gRnJvbSBsb29raW5nIGF0IGl0LCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0IGV4dHJhY3RzIHRoZSBoZWFkZXIuIFdoaWxlIGl0J3Mgc2ltcGxlLCBpdCdzIHBhcnQgb2YgdGhlIHBpY3R1cmUsIHNvIEknbGwgaW5jbHVkZSBpdC5cblxuT2theSwgbGV0IG1lIGRvdWJsZS1jaGVjayBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AgaXMgZXhwb3J0ZWQ7IHllcCwgaXQncyBpbiBjb3JlLmMgYW5kIGFyY2hpdGVjdHVyZSBKSVRzIHVzZSBpdC5cblxuUmlnaHQsIEknbSBjb25maWRlbnQgd2l0aCB0aGlzLiBJIHdpbGwgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk0NCwiT3V0cHV0VG9rZW5zIjoyMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTc6NTI6MTguODYyMjAyMTMxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgyMzIxMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY1wiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9oZHJcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcyBhbmQgaW5jb3JyZWN0IGZyZWVpbmcgb2YgQlBGIEpJVCBoZWFkZXJzIGFuZCBkYXRhIGR1cmluZyBKSVQgY29tcGlsYXRpb24gZmFpbHVyZXMgb3Igd2hlbiBmcmVlaW5nIEJQRiBwcm9ncmFtcy4gSXQgbW9kaWZpZXMgY29yZSBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVCBjb21waWxlcnMuIFRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgQlBGIHByb2dyYW0gbG9hZC91bmxvYWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWVcIixcbiAgICBcImJwZl9qaXRfYmluYXJ5X2hkclwiLFxuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiYnBmX2ppdF9mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbWVtb3J5IGxlYWtzIGFuZCBpbmNvcnJlY3QgZnJlZWluZyBvZiBCUEYgSklUIGhlYWRlcnMgYW5kIGRhdGEgZHVyaW5nIEpJVCBjb21waWxhdGlvbiBmYWlsdXJlcyBvciB3aGVuIGZyZWVpbmcgQlBGIHByb2dyYW1zLiBJdCBtb2RpZmllcyBjb3JlIEJQRiBKSVQgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFuZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgSklUIGNvbXBpbGVycy4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCwgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIG9jY3VyIGR1cmluZyBCUEYgcHJvZ3JhbSBsb2FkL3VubG9hZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p6xv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 17:28:43 +0000 UTC FinishedAt: 2026-07-26 17:52:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "4748a67f711188cbd64bc72c3df636f627858ed0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "4748a67f711188cbd64bc72c3df636f627858ed0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL" ], "series_id": "97fe28f3-1b4b-4d7b-950a-426c4675eadb" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_jit_binary_pack_alloc", "bpf_jit_binary_pack_finalize", "bpf_jit_binary_pack_free", "bpf_jit_binary_hdr", "bpf_int_jit_compile", "bpf_jit_free" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X2hkciYjMzQ7LAogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MgYW5kIGluY29ycmVjdCBmcmVlaW5nIG9mIEJQRiBKSVQgaGVhZGVycyBhbmQgZGF0YSBkdXJpbmcgSklUIGNvbXBpbGF0aW9uIGZhaWx1cmVzIG9yIHdoZW4gZnJlZWluZyBCUEYgcHJvZ3JhbXMuIEl0IG1vZGlmaWVzIGNvcmUgQlBGIEpJVCBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgYW5kIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBKSVQgY29tcGlsZXJzLiBUaGVzZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsLCByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgb2NjdXIgZHVyaW5nIEJQRiBwcm9ncmFtIGxvYWQvdW5sb2FkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGJhYjdhNTM5NmYxMGNiMjQyYjZmZWE0ZTk5MzM4YzBjMTM3M2Q0NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDI2IDE3OjUxOjM1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuY1xuaW5kZXggNjM5YTI3MzZmMDI5ZWQuLjI5Yzg5MzNlMmRkMmNlIDEwMDY0NFxuLS0tIGEvYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC0xNDEyLDMgJiM0MzsxNDEyLDIyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXG4gXHRyZXR1cm4gcHJvZztcbiB9XG4mIzQzO1xuJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGZwLVx1MDAzZWppdGVkKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgYXJjX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbiYjNDM7XHRcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuJiM0MztcdFx0aWYgKGppdF9kYXRhKSB7XG4mIzQzO1x0XHRcdGtmcmVlKGppdF9kYXRhLVx1MDAzZWJwZjJpbnNuKTtcbiYjNDM7XHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTtcbiYjNDM7XHRcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0YnBmX3Byb2dfdW5sb2NrX2ZyZWUoZnApO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggNGNkYzdkZmIwNWJhOWEuLjMyNzgwMjQ3MzA1ZWIwIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMjI1OCw3ICYjNDM7MjI1OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbiYjNDM7XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XG4gXHRcdFx0cm9faGVhZGVyID0gTlVMTDtcbiBcdFx0XHRoZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGdvdG8gb3V0X2ZyZWVfaGRyO1xuQEAgLTIzMDgsOSAmIzQzOzIzMDgsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRwcm9nLVx1MDAzZWppdGVkX2xlbiA9IDA7XG4gXHR9XG4gXHRpZiAoaGVhZGVyKSB7XG4tXHRcdGJwZl9hcmNoX3RleHRfY29weShcdTAwMjZyb19oZWFkZXItXHUwMDNlc2l6ZSwgXHUwMDI2aGVhZGVyLVx1MDAzZXNpemUsXG4tXHRcdFx0XHQgICBzaXplb2YoaGVhZGVyLVx1MDAzZXNpemUpKTtcbiBcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgaGVhZGVyKTtcbiYjNDM7XHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHR9XG4gXHRnb3RvIG91dF9vZmY7XG4gfVxuQEAgLTMyMzcsNiAmIzQzOzMyMzYsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4gXHRcdCAqL1xuIFx0XHRpZiAoaml0X2RhdGEpIHtcbiBcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKTtcbiYjNDM7XHRcdFx0a3ZmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuIFx0XHRcdGtmcmVlKGppdF9kYXRhKTtcbiBcdFx0fVxuIFx0XHRwcm9nLVx1MDAzZWJwZl9mdW5jID0gKHZvaWQgKilwcm9nLVx1MDAzZWJwZl9mdW5jIC0gY2ZpX2dldF9vZmZzZXQoKTtcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1MzMuLjQ4YWQ0MThkZjEzMzFhIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuQEAgLTIyOTgsNyAmIzQzOzIyOTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGF2ZSBiZWVuIGZyZWVkICovXG4mIzQzO1x0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpO1xuIFx0XHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRnb3RvIG91dF9mcmVlO1xuQEAgLTIzNDEsMTAgJiM0MzsyMzQxLDggQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0cHJvZy1cdTAwM2VqaXRlZF9sZW4gPSAwO1xuIFx0fVxuIFxuLVx0aWYgKGhlYWRlcikge1xuLVx0XHRicGZfYXJjaF90ZXh0X2NvcHkoXHUwMDI2cm9faGVhZGVyLVx1MDAzZXNpemUsIFx1MDAyNmhlYWRlci1cdTAwM2VzaXplLCBzaXplb2YoaGVhZGVyLVx1MDAzZXNpemUpKTtcbiYjNDM7XHRpZiAoaGVhZGVyKVxuIFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBoZWFkZXIpO1xuLVx0fVxuIFx0Z290byBvdXRfb2Zmc2V0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IDE3Mjc3MDEzMjQ0MGRiLi5lZjYzYzM4YmRmMTUxMCAxMDA2NDRcbi0tLSBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtMTc4LDYgJiM0MzsxNzgsMjUgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdGdvdG8gb3V0X29mZnNldDtcbiB9XG4gXG4mIzQzO3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG4mIzQzO3tcbiYjNDM7XHRpZiAoZnAtXHUwMDNlaml0ZWQpIHtcbiYjNDM7XHRcdHN0cnVjdCBocHBhX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbiYjNDM7XHRcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuJiM0MztcdFx0aWYgKGppdF9kYXRhKSB7XG4mIzQzO1x0XHRcdGtmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuJiM0MztcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0YnBmX2ppdF9iaW5hcnlfZnJlZShoZHIpO1xuJiM0MztcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKGZwKSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XG4mIzQzO31cbiYjNDM7XG4gdTY0IGhwcGFfZGl2NjQodTY0IGRpdiwgdTY0IGRpdmlzb3IpXG4ge1xuIFx0ZGl2ID0gZGl2NjRfdTY0KGRpdiwgZGl2aXNvcik7XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDdiMDdiNDM1NzVmMTExLi5mZjliY2Q1NTE2NWI0OSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0zMTQsNyAmIzQzOzMxNCw2IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoY29kZV9iYXNlLCBcdTAwMjZjZ2N0eCk7XG4gXHRcdGlmIChicGZfaml0X2J1aWxkX2JvZHkoZnAsIGNvZGVfYmFzZSwgZmNvZGVfYmFzZSwgXHUwMDI2Y2djdHgsIGFkZHJzLCBwYXNzLFxuIFx0XHRcdFx0ICAgICAgIGV4dHJhX3Bhc3MpKSB7XG4tXHRcdFx0YnBmX2FyY2hfdGV4dF9jb3B5KFx1MDAyNmZoZHItXHUwMDNlc2l6ZSwgXHUwMDI2aGRyLVx1MDAzZXNpemUsIHNpemVvZihoZHItXHUwMDNlc2l6ZSkpO1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShmaGRyLCBoZHIpO1xuIFx0XHRcdGdvdG8gb3V0X2VycjtcbiBcdFx0fVxuQEAgLTMzOSw4ICYjNDM7MzM4LDEwIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gI2VuZGlmXG4gXG4gXHRpZiAoIWZwLVx1MDAzZWlzX2Z1bmMgfHwgZXh0cmFfcGFzcykge1xuLVx0XHRpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKVxuJiM0MztcdFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xuJiM0MztcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgTlVMTCk7XG4gXHRcdFx0Z290byBvdXRfZXJyO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0ZnAtXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG5pbmRleCBjYmZjZDI4N2VhMTY2OC4uNTU1MzBlODBkZjJlZmIgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC0xNTQsNyAmIzQzOzE1NCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXG4gXHRpZiAoIXByb2ctXHUwMDNlaXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7XG4gXHRcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpKSkge1xuLVx0XHRcdC8qIHJvX2hlYWRlciBoYXMgYmVlbiBmcmVlZCAqL1xuJiM0MztcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGppdF9kYXRhLVx1MDAzZWhlYWRlciA9IE5VTEw7XG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG5AQCAtMTgzLDExICYjNDM7MTgzLDggQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0cHJvZy1cdTAwM2VqaXRlZCA9IDA7XG4gXHRcdHByb2ctXHUwMDNlaml0ZWRfbGVuID0gMDtcbiBcdH1cbi1cdGlmIChqaXRfZGF0YS1cdTAwM2VoZWFkZXIpIHtcbi1cdFx0YnBmX2FyY2hfdGV4dF9jb3B5KFx1MDAyNmppdF9kYXRhLVx1MDAzZXJvX2hlYWRlci1cdTAwM2VzaXplLCBcdTAwMjZqaXRfZGF0YS1cdTAwM2VoZWFkZXItXHUwMDNlc2l6ZSxcbi1cdFx0XHRcdCAgIHNpemVvZihqaXRfZGF0YS1cdTAwM2VoZWFkZXItXHUwMDNlc2l6ZSkpO1xuJiM0MztcdGlmIChqaXRfZGF0YS1cdTAwM2VoZWFkZXIpXG4gXHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIsIGppdF9kYXRhLVx1MDAzZWhlYWRlcik7XG4tXHR9XG4gXHRnb3RvIG91dF9vZmZzZXQ7XG4gfVxuIFxuQEAgLTIzNyw2ICYjNDM7MjM0LDcgQEAgdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuIFx0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbiBcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdH1cbiYjNDM7XHRcdHByb2ctXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKXByb2ctXHUwMDNlYnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpO1xuIFx0XHRoZHIgPSBicGZfaml0X2JpbmFyeV9wYWNrX2hkcihwcm9nKTtcbiBcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGhkciwgTlVMTCk7XG4gXHRcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihwcm9nKSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGI2MDg3NzQ3OGI0NWQ2Li5iZjEwMGU3OTRlMjc4NCAxMDA2NDRcbi0tLSBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcbkBAIC0zMTA2LDMgJiM0MzszMTA2LDIyIEBAIGJvb2wgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiB9XG4mIzQzO1xuJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGZwLVx1MDAzZWppdGVkKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgczM5MF9qaXRfZGF0YSAqaml0X2RhdGEgPSBmcC1cdTAwM2VhdXgtXHUwMDNlaml0X2RhdGE7XG4mIzQzO1x0XHRzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkciA9IGJwZl9qaXRfYmluYXJ5X2hkcihmcCk7XG4mIzQzO1xuJiM0MztcdFx0LyogQ2xlYW51cCBmb3IgZWFybGllciBzdWJwcm9ncyBpZiBqaXRfc3VicHJvZ3MoKSBhYm9ydHMgKi9cbiYjNDM7XHRcdGlmIChqaXRfZGF0YSkge1xuJiM0MztcdFx0XHRrdmZyZWUoaml0X2RhdGEtXHUwMDNlY3R4LmFkZHJzKTtcbiYjNDM7XHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTtcbiYjNDM7XHRcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0YnBmX3Byb2dfdW5sb2NrX2ZyZWUoZnApO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmMgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuY1xuaW5kZXggMmZhMGU5Mzc1MTI3NmUuLmI1ODkyY2RjZTcxMTNhIDEwMDY0NFxuLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jXG5AQCAtMTYxMSwzICYjNDM7MTYxMSwyMiBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0fVxuIFx0Z290byBvdXRfb2ZmO1xuIH1cbiYjNDM7XG4mIzQzO3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG4mIzQzO3tcbiYjNDM7XHRpZiAoZnAtXHUwMDNlaml0ZWQpIHtcbiYjNDM7XHRcdHN0cnVjdCBzcGFyYzY0X2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbiYjNDM7XHRcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTtcbiYjNDM7XG4mIzQzO1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuJiM0MztcdFx0aWYgKGppdF9kYXRhKSB7XG4mIzQzO1x0XHRcdGtmcmVlKGppdF9kYXRhLVx1MDAzZWN0eC5vZmZzZXQpO1xuJiM0MztcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0YnBmX2ppdF9iaW5hcnlfZnJlZShoZHIpO1xuJiM0MztcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKGZwKSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XG4mIzQzO31cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IGIyZmVlYzgxZTIzMTJlLi4yODFlODk3NjRkOTg1MyAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMzkzMCwxMSAmIzQzOzM5MzAsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRpZiAocHJvZ2xlbiBcdTAwM2M9IDApIHtcbiBvdXRfaW1hZ2U6XG4gXHRcdFx0aW1hZ2UgPSBOVUxMO1xuLVx0XHRcdGlmIChoZWFkZXIpIHtcbi1cdFx0XHRcdGJwZl9hcmNoX3RleHRfY29weShcdTAwMjZoZWFkZXItXHUwMDNlc2l6ZSwgXHUwMDI2cndfaGVhZGVyLVx1MDAzZXNpemUsXG4tXHRcdFx0XHRcdFx0ICAgc2l6ZW9mKHJ3X2hlYWRlci1cdTAwM2VzaXplKSk7XG4mIzQzO1x0XHRcdGlmIChoZWFkZXIpXG4gXHRcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCByd19oZWFkZXIpO1xuLVx0XHRcdH1cbiBcdFx0XHRpZiAoZXh0cmFfcGFzcykge1xuIFx0XHRcdFx0cHJvZy1cdTAwM2VicGZfZnVuYyA9IE5VTEw7XG4gXHRcdFx0XHRwcm9nLVx1MDAzZWppdGVkID0gMDtcbkBAIC0zOTg3LDcgJiM0MzszOTg0LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0XHQgKiBCb3RoIGNhc2VzIGFyZSBzZXJpb3VzIGJ1Z3MgYW5kIGp1c3RpZnkgV0FSTl9PTi5cbiBcdFx0XHQgKi9cbiBcdFx0XHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGhlYWRlciwgcndfaGVhZGVyKSkpIHtcbi1cdFx0XHRcdC8qIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqL1xuJiM0MztcdFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZWFkZXIsIE5VTEwpO1xuIFx0XHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRcdGdvdG8gb3V0X2ltYWdlO1xuIFx0XHRcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuaW5kZXggMzJkNTI5N2M1NTdlNWIuLjVkN2ZjNzBiZDMzMmUwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuQEAgLTEzMzgsNiAmIzQzOzEzMzgsOCBAQCB2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpO1xuIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApO1xuIHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG4gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCk7XG4mIzQzO3N0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG4mIzQzO2JwZl9qaXRfYmluYXJ5X2hkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcbiBcbiB2b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucywgYm9vbCB3YXNfY2xhc3NpYyk7XG4gdm9pZCBicGZfcHJvZ19wYWNrX2ZyZWUodm9pZCAqcHRyLCB1MzIgc2l6ZSk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuY1xuaW5kZXggZTIwNzY2NjdiMjQ1MTcuLjhkMzUyODMxMWY4ZWVhIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvY29yZS5jXG5AQCAtMTIxOCw2ICYjNDM7MTIxOCwxMyBAQCBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jKHVuc2lnbmVkIGludCBwcm9nbGVuLCB1OCAqKmltYWdlX3B0cixcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG4mIzQzO1x0LyogSW5pdGlhbGl6ZSByb19oZWFkZXItXHUwMDNlc2l6ZSB0byBlbnN1cmUgaXQgaXMgdmFsaWQgZHVyaW5nIGZyZWUgKi9cbiYjNDM7XHRpZiAoSVNfRVJSKGJwZl9hcmNoX3RleHRfY29weShcdTAwMjZyb19oZWFkZXItXHUwMDNlc2l6ZSwgXHUwMDI2c2l6ZSwgc2l6ZW9mKHNpemUpKSkpIHtcbiYjNDM7XHRcdGJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHNpemUpO1xuJiM0MztcdFx0YnBmX2ppdF91bmNoYXJnZV9tb2RtZW0oc2l6ZSk7XG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0KnJ3X2hlYWRlciA9IGt2bWFsbG9jKHNpemUsIEdGUF9LRVJORUwpO1xuIFx0aWYgKCEqcndfaGVhZGVyKSB7XG4gXHRcdGJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHNpemUpO1xuQEAgLTEyNDksMTAgJiM0MzsxMjU2LDkgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXG4gXG4gXHRrdmZyZWUocndfaGVhZGVyKTtcbiBcbi1cdGlmIChJU19FUlIocHRyKSkge1xuLVx0XHRicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCByb19oZWFkZXItXHUwMDNlc2l6ZSk7XG4mIzQzO1x0aWYgKElTX0VSUihwdHIpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihwdHIpO1xuLVx0fVxuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xMjYwLDExICYjNDM7MTI2Niw2IEBAIGludCBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqcm9faGVhZGVyLFxuICAqICAgMSkgd2hlbiB0aGUgcHJvZ3JhbSBpcyBmcmVlZCBhZnRlcjtcbiAgKiAgIDIpIHdoZW4gdGhlIEpJVCBlbmdpbmUgZmFpbHMgKGJlZm9yZSBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKS5cbiAgKiBGb3IgY2FzZSAyKSwgd2UgbmVlZCB0byBmcmVlIGJvdGggdGhlIFJPIG1lbW9yeSBhbmQgdGhlIFJXIGJ1ZmZlci5cbi0gKlxuLSAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZSByZXF1aXJlcyBwcm9wZXIgcm9faGVhZGVyLVx1MDAzZXNpemUuIEhvd2V2ZXIsXG4tICogYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyBkb2VzIG5vdCBzZXQgaXQuIFRoZXJlZm9yZSwgcm9faGVhZGVyLVx1MDAzZXNpemVcbi0gKiBtdXN0IGJlIHNldCB3aXRoIGVpdGhlciBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplIChub3JtYWwgcGF0aCkgb3Jcbi0gKiBicGZfYXJjaF90ZXh0X2NvcHkgKHdoZW4gaml0IGZhaWxzKS5cbiAgKi9cbiB2b2lkIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlcixcbiBcdFx0XHQgICAgICBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJ3X2hlYWRlcilcbkBAIC0xMjg2LDcgJiM0MzsxMjg3LDcgQEAgYnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcClcbiBcdHJldHVybiAodm9pZCAqKWFkZHI7XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcbiYjNDM7c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcbiBicGZfaml0X2JpbmFyeV9oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcClcbiB7XG4gXHR1bnNpZ25lZCBsb25nIHJlYWxfc3RhcnQgPSAodW5zaWduZWQgbG9uZylmcC1cdTAwM2VicGZfZnVuYztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNzo1MTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX0pJVCYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfaGRyJiMzNDssCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9mcmVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcyBhbmQgaW5jb3JyZWN0IGZyZWVpbmcgb2YgQlBGIEpJVCBoZWFkZXJzIGFuZCBkYXRhIGR1cmluZyBKSVQgY29tcGlsYXRpb24gZmFpbHVyZXMgb3Igd2hlbiBmcmVlaW5nIEJQRiBwcm9ncmFtcy4gSXQgbW9kaWZpZXMgY29yZSBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVCBjb21waWxlcnMuIFRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgQlBGIHByb2dyYW0gbG9hZC91bmxvYWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYmFiN2E1Mzk2ZjEwY2IyNDJiNmZlYTRlOTkzMzhjMGMxMzczZDQ2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMjYgMTc6NTE6MzUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMKaW5kZXggNjM5YTI3MzZmMDI5ZWQuLjI5Yzg5MzNlMmRkMmNlIDEwMDY0NAotLS0gYS9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jCkBAIC0xNDEyLDMgJiM0MzsxNDEyLDIyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAKIAlyZXR1cm4gcHJvZzsKIH0KJiM0MzsKJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKQomIzQzO3sKJiM0MzsJaWYgKGZwLSZndDtqaXRlZCkgewomIzQzOwkJc3RydWN0IGFyY19qaXRfZGF0YSAqaml0X2RhdGEgPSBmcC0mZ3Q7YXV4LSZndDtqaXRfZGF0YTsKJiM0MzsJCXN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTsKJiM0MzsKJiM0MzsJCS8qIENsZWFudXAgZm9yIGVhcmxpZXIgc3VicHJvZ3MgaWYgaml0X3N1YnByb2dzKCkgYWJvcnRzICovCiYjNDM7CQlpZiAoaml0X2RhdGEpIHsKJiM0MzsJCQlrZnJlZShqaXRfZGF0YS0mZ3Q7YnBmMmluc24pOwomIzQzOwkJCWtmcmVlKGppdF9kYXRhKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTsKJiM0MzsJCVdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IDRjZGM3ZGZiMDViYTlhLi4zMjc4MDI0NzMwNWViMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMKQEAgLTIyNTgsNyAmIzQzOzIyNTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCQkJZ290byBvdXRfZnJlZV9oZHI7CiAJCX0KIAkJaWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7Ci0JCQkvKiByb19oZWFkZXIgYW5kIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqLwomIzQzOwkJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIE5VTEwpOwogCQkJcm9faGVhZGVyID0gTlVMTDsKIAkJCWhlYWRlciA9IE5VTEw7CiAJCQlnb3RvIG91dF9mcmVlX2hkcjsKQEAgLTIzMDgsOSAmIzQzOzIzMDgsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCQlwcm9nLSZndDtqaXRlZF9sZW4gPSAwOwogCX0KIAlpZiAoaGVhZGVyKSB7Ci0JCWJwZl9hcmNoX3RleHRfY29weSgmYW1wO3JvX2hlYWRlci0mZ3Q7c2l6ZSwgJmFtcDtoZWFkZXItJmd0O3NpemUsCi0JCQkJICAgc2l6ZW9mKGhlYWRlci0mZ3Q7c2l6ZSkpOwogCQlicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBoZWFkZXIpOwomIzQzOwkJcm9faGVhZGVyID0gTlVMTDsKIAl9CiAJZ290byBvdXRfb2ZmOwogfQpAQCAtMzIzNyw2ICYjNDM7MzIzNiw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIAkJICovCiAJCWlmIChqaXRfZGF0YSkgewogCQkJYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBqaXRfZGF0YS0mZ3Q7aGVhZGVyKTsKJiM0MzsJCQlrdmZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpOwogCQkJa2ZyZWUoaml0X2RhdGEpOwogCQl9CiAJCXByb2ctJmd0O2JwZl9mdW5jID0gKHZvaWQgKilwcm9nLSZndDticGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYwppbmRleCAyNzM4YjRkYjExNjUzMy4uNDhhZDQxOGRmMTMzMWEgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYwpAQCAtMjI5OCw3ICYjNDM7MjI5OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCQlnb3RvIG91dF9mcmVlOwogCQl9CiAJCWlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUocm9faGVhZGVyLCBoZWFkZXIpKSkgewotCQkJLyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGF2ZSBiZWVuIGZyZWVkICovCiYjNDM7CQkJYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7CiAJCQlyb19oZWFkZXIgPSBOVUxMOwogCQkJaGVhZGVyID0gTlVMTDsKIAkJCWdvdG8gb3V0X2ZyZWU7CkBAIC0yMzQxLDEwICYjNDM7MjM0MSw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCXByb2ctJmd0O2ppdGVkX2xlbiA9IDA7CiAJfQogCi0JaWYgKGhlYWRlcikgewotCQlicGZfYXJjaF90ZXh0X2NvcHkoJmFtcDtyb19oZWFkZXItJmd0O3NpemUsICZhbXA7aGVhZGVyLSZndDtzaXplLCBzaXplb2YoaGVhZGVyLSZndDtzaXplKSk7CiYjNDM7CWlmIChoZWFkZXIpCiAJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIGhlYWRlcik7Ci0JfQogCWdvdG8gb3V0X29mZnNldDsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jCmluZGV4IDE3Mjc3MDEzMjQ0MGRiLi5lZjYzYzM4YmRmMTUxMCAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYwpAQCAtMTc4LDYgJiM0MzsxNzgsMjUgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHIKIAlnb3RvIG91dF9vZmZzZXQ7CiB9CiAKJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKQomIzQzO3sKJiM0MzsJaWYgKGZwLSZndDtqaXRlZCkgewomIzQzOwkJc3RydWN0IGhwcGFfaml0X2RhdGEgKmppdF9kYXRhID0gZnAtJmd0O2F1eC0mZ3Q7aml0X2RhdGE7CiYjNDM7CQlzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkciA9IGJwZl9qaXRfYmluYXJ5X2hkcihmcCk7CiYjNDM7CiYjNDM7CQkvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqLwomIzQzOwkJaWYgKGppdF9kYXRhKSB7CiYjNDM7CQkJa2ZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpOwomIzQzOwkJCWtmcmVlKGppdF9kYXRhKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTsKJiM0MzsJCVdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTsKJiM0Mzt9CiYjNDM7CiB1NjQgaHBwYV9kaXY2NCh1NjQgZGl2LCB1NjQgZGl2aXNvcikKIHsKIAlkaXYgPSBkaXY2NF91NjQoZGl2LCBkaXZpc29yKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IDdiMDdiNDM1NzVmMTExLi5mZjliY2Q1NTE2NWI0OSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC0zMTQsNyAmIzQzOzMxNCw2IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCWJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoY29kZV9iYXNlLCAmYW1wO2NnY3R4KTsKIAkJaWYgKGJwZl9qaXRfYnVpbGRfYm9keShmcCwgY29kZV9iYXNlLCBmY29kZV9iYXNlLCAmYW1wO2NnY3R4LCBhZGRycywgcGFzcywKIAkJCQkgICAgICAgZXh0cmFfcGFzcykpIHsKLQkJCWJwZl9hcmNoX3RleHRfY29weSgmYW1wO2ZoZHItJmd0O3NpemUsICZhbXA7aGRyLSZndDtzaXplLCBzaXplb2YoaGRyLSZndDtzaXplKSk7CiAJCQlicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgaGRyKTsKIAkJCWdvdG8gb3V0X2VycjsKIAkJfQpAQCAtMzM5LDggJiM0MzszMzgsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHIKICNlbmRpZgogCiAJaWYgKCFmcC0mZ3Q7aXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7Ci0JCWlmIChicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGZoZHIsIGhkcikpCiYjNDM7CQlpZiAoYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShmaGRyLCBoZHIpKSB7CiYjNDM7CQkJYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGZoZHIsIE5VTEwpOwogCQkJZ290byBvdXRfZXJyOwomIzQzOwkJfQogCX0KIAogCWZwLSZndDticGZfZnVuYyA9ICh2b2lkICopZmltYWdlOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYwppbmRleCBjYmZjZDI4N2VhMTY2OC4uNTU1MzBlODBkZjJlZmIgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jCkBAIC0xNTQsNyAmIzQzOzE1NCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAKIAlpZiAoIXByb2ctJmd0O2lzX2Z1bmMgfHwgZXh0cmFfcGFzcykgewogCQlpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLSZndDtyb19oZWFkZXIsIGppdF9kYXRhLSZndDtoZWFkZXIpKSkgewotCQkJLyogcm9faGVhZGVyIGhhcyBiZWVuIGZyZWVkICovCiYjNDM7CQkJYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGppdF9kYXRhLSZndDtyb19oZWFkZXIsIE5VTEwpOwogCQkJaml0X2RhdGEtJmd0O3JvX2hlYWRlciA9IE5VTEw7CiAJCQlqaXRfZGF0YS0mZ3Q7aGVhZGVyID0gTlVMTDsKIAkJCWdvdG8gb3V0X2ZyZWVfaGRyOwpAQCAtMTgzLDExICYjNDM7MTgzLDggQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHIKIAkJcHJvZy0mZ3Q7aml0ZWQgPSAwOwogCQlwcm9nLSZndDtqaXRlZF9sZW4gPSAwOwogCX0KLQlpZiAoaml0X2RhdGEtJmd0O2hlYWRlcikgewotCQlicGZfYXJjaF90ZXh0X2NvcHkoJmFtcDtqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLSZndDtzaXplLCAmYW1wO2ppdF9kYXRhLSZndDtoZWFkZXItJmd0O3NpemUsCi0JCQkJICAgc2l6ZW9mKGppdF9kYXRhLSZndDtoZWFkZXItJmd0O3NpemUpKTsKJiM0MzsJaWYgKGppdF9kYXRhLSZndDtoZWFkZXIpCiAJCWJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS0mZ3Q7cm9faGVhZGVyLCBqaXRfZGF0YS0mZ3Q7aGVhZGVyKTsKLQl9CiAJZ290byBvdXRfb2Zmc2V0OwogfQogCkBAIC0yMzcsNiAmIzQzOzIzNCw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZykKIAkJCWt2ZnJlZShqaXRfZGF0YS0mZ3Q7Y3R4Lm9mZnNldCk7CiAJCQlrZnJlZShqaXRfZGF0YSk7CiAJCX0KJiM0MzsJCXByb2ctJmd0O2JwZl9mdW5jID0gKHZvaWQgKilwcm9nLSZndDticGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7CiAJCWhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpOwogCQlicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGRyLCBOVUxMKTsKIAkJV0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKHByb2cpKTsKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jCmluZGV4IGI2MDg3NzQ3OGI0NWQ2Li5iZjEwMGU3OTRlMjc4NCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC0zMTA2LDMgJiM0MzszMTA2LDIyIEBAIGJvb2wgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pCiAJCXJldHVybiBmYWxzZTsKIAl9CiB9CiYjNDM7CiYjNDM7dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCkKJiM0Mzt7CiYjNDM7CWlmIChmcC0mZ3Q7aml0ZWQpIHsKJiM0MzsJCXN0cnVjdCBzMzkwX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLSZndDthdXgtJmd0O2ppdF9kYXRhOwomIzQzOwkJc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIgPSBicGZfaml0X2JpbmFyeV9oZHIoZnApOwomIzQzOwomIzQzOwkJLyogQ2xlYW51cCBmb3IgZWFybGllciBzdWJwcm9ncyBpZiBqaXRfc3VicHJvZ3MoKSBhYm9ydHMgKi8KJiM0MzsJCWlmIChqaXRfZGF0YSkgewomIzQzOwkJCWt2ZnJlZShqaXRfZGF0YS0mZ3Q7Y3R4LmFkZHJzKTsKJiM0MzsJCQlrZnJlZShqaXRfZGF0YSk7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlicGZfaml0X2JpbmFyeV9mcmVlKGhkcik7CiYjNDM7CQlXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYoZnApKTsKJiM0MzsJfQomIzQzOwomIzQzOwlicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmMgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYwppbmRleCAyZmEwZTkzNzUxMjc2ZS4uYjU4OTJjZGNlNzExM2EgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jCkBAIC0xNjExLDMgJiM0MzsxNjExLDIyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJfQogCWdvdG8gb3V0X29mZjsKIH0KJiM0MzsKJiM0Mzt2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKQomIzQzO3sKJiM0MzsJaWYgKGZwLSZndDtqaXRlZCkgewomIzQzOwkJc3RydWN0IHNwYXJjNjRfaml0X2RhdGEgKmppdF9kYXRhID0gZnAtJmd0O2F1eC0mZ3Q7aml0X2RhdGE7CiYjNDM7CQlzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkciA9IGJwZl9qaXRfYmluYXJ5X2hkcihmcCk7CiYjNDM7CiYjNDM7CQkvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqLwomIzQzOwkJaWYgKGppdF9kYXRhKSB7CiYjNDM7CQkJa2ZyZWUoaml0X2RhdGEtJmd0O2N0eC5vZmZzZXQpOwomIzQzOwkJCWtmcmVlKGppdF9kYXRhKTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTsKJiM0MzsJCVdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTsKJiM0Mzt9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMKaW5kZXggYjJmZWVjODFlMjMxMmUuLjI4MWU4OTc2NGQ5ODUzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jCkBAIC0zOTMwLDExICYjNDM7MzkzMCw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByCiAJCWlmIChwcm9nbGVuICZsdDs9IDApIHsKIG91dF9pbWFnZToKIAkJCWltYWdlID0gTlVMTDsKLQkJCWlmIChoZWFkZXIpIHsKLQkJCQlicGZfYXJjaF90ZXh0X2NvcHkoJmFtcDtoZWFkZXItJmd0O3NpemUsICZhbXA7cndfaGVhZGVyLSZndDtzaXplLAotCQkJCQkJICAgc2l6ZW9mKHJ3X2hlYWRlci0mZ3Q7c2l6ZSkpOwomIzQzOwkJCWlmIChoZWFkZXIpCiAJCQkJYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGhlYWRlciwgcndfaGVhZGVyKTsKLQkJCX0KIAkJCWlmIChleHRyYV9wYXNzKSB7CiAJCQkJcHJvZy0mZ3Q7YnBmX2Z1bmMgPSBOVUxMOwogCQkJCXByb2ctJmd0O2ppdGVkID0gMDsKQEAgLTM5ODcsNyAmIzQzOzM5ODQsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcgogCQkJICogQm90aCBjYXNlcyBhcmUgc2VyaW91cyBidWdzIGFuZCBqdXN0aWZ5IFdBUk5fT04uCiAJCQkgKi8KIAkJCWlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaGVhZGVyLCByd19oZWFkZXIpKSkgewotCQkJCS8qIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqLwomIzQzOwkJCQlicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGVhZGVyLCBOVUxMKTsKIAkJCQloZWFkZXIgPSBOVUxMOwogCQkJCWdvdG8gb3V0X2ltYWdlOwogCQkJfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaCBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKaW5kZXggMzJkNTI5N2M1NTdlNWIuLjVkN2ZjNzBiZDMzMmUwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZmlsdGVyLmgKQEAgLTEzMzgsNiAmIzQzOzEzMzgsOCBAQCB2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpOwogdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCk7CiBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKgogYnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCk7CiYjNDM7c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICoKJiM0MzticGZfaml0X2JpbmFyeV9oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCk7CiAKIHZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zLCBib29sIHdhc19jbGFzc2ljKTsKIHZvaWQgYnBmX3Byb2dfcGFja19mcmVlKHZvaWQgKnB0ciwgdTMyIHNpemUpOwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuYwppbmRleCBlMjA3NjY2N2IyNDUxNy4uOGQzNTI4MzExZjhlZWEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvY29yZS5jCkBAIC0xMjE4LDYgJiM0MzsxMjE4LDEzIEBAIGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLAogCQlyZXR1cm4gTlVMTDsKIAl9CiAKJiM0MzsJLyogSW5pdGlhbGl6ZSByb19oZWFkZXItJmd0O3NpemUgdG8gZW5zdXJlIGl0IGlzIHZhbGlkIGR1cmluZyBmcmVlICovCiYjNDM7CWlmIChJU19FUlIoYnBmX2FyY2hfdGV4dF9jb3B5KCZhbXA7cm9faGVhZGVyLSZndDtzaXplLCAmYW1wO3NpemUsIHNpemVvZihzaXplKSkpKSB7CiYjNDM7CQlicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCBzaXplKTsKJiM0MzsJCWJwZl9qaXRfdW5jaGFyZ2VfbW9kbWVtKHNpemUpOwomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CX0KJiM0MzsKIAkqcndfaGVhZGVyID0ga3ZtYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCEqcndfaGVhZGVyKSB7CiAJCWJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHNpemUpOwpAQCAtMTI0OSwxMCAmIzQzOzEyNTYsOSBAQCBpbnQgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlciwKIAogCWt2ZnJlZShyd19oZWFkZXIpOwogCi0JaWYgKElTX0VSUihwdHIpKSB7Ci0JCWJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHJvX2hlYWRlci0mZ3Q7c2l6ZSk7CiYjNDM7CWlmIChJU19FUlIocHRyKSkKIAkJcmV0dXJuIFBUUl9FUlIocHRyKTsKLQl9CiYjNDM7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEyNjAsMTEgJiM0MzsxMjY2LDYgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsCiAgKiAgIDEpIHdoZW4gdGhlIHByb2dyYW0gaXMgZnJlZWQgYWZ0ZXI7CiAgKiAgIDIpIHdoZW4gdGhlIEpJVCBlbmdpbmUgZmFpbHMgKGJlZm9yZSBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKS4KICAqIEZvciBjYXNlIDIpLCB3ZSBuZWVkIHRvIGZyZWUgYm90aCB0aGUgUk8gbWVtb3J5IGFuZCB0aGUgUlcgYnVmZmVyLgotICoKLSAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZSByZXF1aXJlcyBwcm9wZXIgcm9faGVhZGVyLSZndDtzaXplLiBIb3dldmVyLAotICogYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyBkb2VzIG5vdCBzZXQgaXQuIFRoZXJlZm9yZSwgcm9faGVhZGVyLSZndDtzaXplCi0gKiBtdXN0IGJlIHNldCB3aXRoIGVpdGhlciBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplIChub3JtYWwgcGF0aCkgb3IKLSAqIGJwZl9hcmNoX3RleHRfY29weSAod2hlbiBqaXQgZmFpbHMpLgogICovCiB2b2lkIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlciwKIAkJCSAgICAgIHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqcndfaGVhZGVyKQpAQCAtMTI4Niw3ICYjNDM7MTI4Nyw3IEBAIGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqZnApCiAJcmV0dXJuICh2b2lkICopYWRkcjsKIH0KIAotc3RhdGljIGlubGluZSBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKgomIzQzO3N0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqCiBicGZfaml0X2JpbmFyeV9oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCkKIHsKIAl1bnNpZ25lZCBsb25nIHJlYWxfc3RhcnQgPSAodW5zaWduZWQgbG9uZylmcC0mZ3Q7YnBmX2Z1bmM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4MjYKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA2NTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIEpJVCBDb21waWxhdGlvbiBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggY3J1Y2lhbCBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgd2l0aGluIHRoZSBCUEYgSklUIGNvbXBpbGVyLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBob3cgd2UgaGFuZGxlIEpJVCBoZWFkZXJzIGFuZCBkYXRhIHdoZW4gdGhlcmUgYXJlIGNvbXBpbGF0aW9uIGZhaWx1cmVzIG9yIGR1cmluZyB0aGUgdW5sb2FkaW5nIG9mIEJQRiBwcm9ncmFtcy4gSXQgYXBwZWFycyB0aGF0IHRoZSBwYXRjaCBhZGRyZXNzZXMgbWlzc2luZyBvciBpbmNvcnJlY3QgYGJwZl9qaXRfZnJlZWAgaW1wbGVtZW50YXRpb25zIGZvciBhIG51bWJlciBvZiBhcmNoaXRlY3R1cmVzIOKAkyBhcmMsIHBhcmlzYywgczM5MCwgYW5kIHNwYXJjIGFyZSBtZW50aW9uZWQgYXMgaGF2aW5nIG5ldyBpbXBsZW1lbnRhdGlvbnMsIG9yIG5lZWRpbmcgdXBkYXRlcy4gVGhpcyBpbXBsaWVzIHRoYXQgdGhlc2UgYXJjaGl0ZWN0dXJlcyB3ZXJlIGVpdGhlciB1c2luZyBhIGRlZmF1bHQsIHBvc3NpYmx5IGxlc3MgZWZmaWNpZW50LCBmcmVlaW5nIG1lY2hhbmlzbSwgb3IgZGlkbiYjMzk7dCBoYW5kbGUgZmFpbHVyZXMgY29ycmVjdGx5LiBGb3IgdGhlIGFybTY0LCBsb29uZ2FyY2gsIHBvd2VycGMsIHJpc2N2LCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMsIHRoZSBjaGFuZ2VzIHNlZW0gdG8gZm9jdXMgb24gcmVmaW5pbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgYnBmX2ludF9qaXRfY29tcGlsZWAuCgpUaGUgY29yZSBmdW5jdGlvbmFsaXR5IGJlaW5nIHRhcmdldGVkIGlzIHVuZG91YnRlZGx5IHJlYWNoYWJsZS4gQlBGIEpJVCBpcyBmdW5kYW1lbnRhbCwgYW5kIHVzZXIgc3BhY2UgaW50ZXJhY3RzIHdpdGggaXQgdGhyb3VnaCB0aGUgYGJwZigpYCBzeXNjYWxsIHdoZW4gbG9hZGluZyBwcm9ncmFtcy4gU28sIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgY2hhbmdlIHRoYXQgd2lsbCBpbXBhY3QgaG93IG1lbW9yeSBpcyBtYW5hZ2VkIGR1cmluZyBib3RoIHByb2dyYW0gbG9hZGluZyBhbmQgdW5sb2FkaW5nLgoKTXkga2V5IGZvY3VzLCBub3csIG5lZWRzIHRvIGJlIG9uIGlkZW50aWZ5aW5nIHRoZSBjb3JlIHN5bWJvbHMgaW52b2x2ZWQuIEkgY2FuIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIHRvdWNoIG9uIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAsIHdoaWNoIGFyZSBjcnVjaWFsIGluIG1hbnkgYXJjaGl0ZWN0dXJlcy4gSSBhbHNvIHNlZSBjYWxscyB0byBmdW5jdGlvbnMgbGlrZSBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfaGRyYC4gVGhlc2UgYXJlIGFsbCBjbGVhcmx5IGludm9sdmVkIGluIG1hbmFnaW5nIHRoZSBhbGxvY2F0ZWQgYmluYXJ5IGRhdGEgd2l0aGluIHRoZSBKSVQgcHJvY2Vzcy4gSXQmIzM5O3MgYSBiaXQgb2YgYSBkZXRhaWwsIGJ1dCBpdCBpcyBjbGVhciB0aGF0IGBicGZfaW50X2ppdF9jb21waWxlYCBpcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMuCgpMb29raW5nIGF0IGBrZXJuZWwvYnBmL2NvcmUuY2AsIEkmIzM5O20gY29uZmlybWluZyB0aGF0IGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCBpcyBleHBvcnRlZCBvciB1c2VkIGJ5IHRoZSBKSVQgaW1wbGVtZW50YXRpb25zLCBhbmQgdGhhdCBgYnBmX2ppdF9mcmVlYCBpcyBjYWxsZWQgd2hlbiBhIEJQRiBwcm9ncmFtIGlzIGZyZWVkLCBqdXN0IGFzIEkmIzM5O2QgZXhwZWN0LiBUaGUga2V5IGZ1bmN0aW9ucyB0byBmb2N1cyBvbiBhcmUgcmVhbGx5IGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYCwgYGJwZl9qaXRfZnJlZWAsIGFuZCBgYnBmX2ludF9qaXRfY29tcGlsZWAuIEkgbmVlZCB0byByZW1lbWJlciwgd2hlbiByZXZpZXdpbmcsIHRoYXQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYy4KCkZpbmFsbHksIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyBhcmUgaW4gcGxhY2UuIE9idmlvdXNseSwgYENPTkZJR19CUEZfSklUYCBpcyBhIG11c3QuIEFuZCBmcm9tIGV4cGVyaWVuY2UsIHRoYXQmIzM5O3MgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gbWFueSBhcmNoaXRlY3R1cmVzLCBzbyBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYGtlcm5lbC9icGYvS2NvbmZpZ2AuIEFuZCBvZiBjb3Vyc2UsIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHZlcmlmaWNhdGlvbiB0b29scyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyYjMzk7cyBjb3JyZWN0IGFuZCB0aGF0IEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MjA5Mz1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIxOTAtXHRpbWFnZV9zaXplID0gZXh0YWJsZV9vZmZzZXQgJiM0MzsgZXh0YWJsZV9zaXplO1xuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MjE5MTpcdHJvX2hlYWRlciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MoaW1hZ2Vfc2l6ZSwgXHUwMDI2cm9faW1hZ2VfcHRyLFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMjE5Mi1cdFx0XHRcdFx0ICAgICAgc2l6ZW9mKHU2NCksIFx1MDAyNmhlYWRlciwgXHUwMDI2aW1hZ2VfcHRyLFxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjE5Nz1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjI1Ny1cdC8qIE5vdyB3ZSBrbm93IHRoZSBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgdG8gbWFrZSAqL1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMjU4Olx0cm9faGVhZGVyID0gYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyhpbWFnZV9zaXplLCBcdTAwMjZyb19pbWFnZV9wdHIsIHNpemVvZih1MzIpLFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMjU5LVx0XHRcdFx0XHQgICAgICBcdTAwMjZoZWFkZXIsIFx1MDAyNmltYWdlX3B0ciwgaml0X2ZpbGxfaG9sZSxcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTE2NT1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpmcClcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTI5Ni1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6Mjk3Olx0ZmhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MoYWxsb2NsZW4sIFx1MDAyNmZpbWFnZSwgNCwgXHUwMDI2aGRyLCBcdTAwMjZpbWFnZSxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtMjk4LVx0XHRcdFx0XHQgYnBmX2ppdF9maWxsX2lsbF9pbnNucywgYnBmX3Byb2dfd2FzX2NsYXNzaWMoZnApKTtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz00ND1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTEwOC1cdFx0XHRqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIgPVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MTA5Olx0XHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyhwcm9nX3NpemUgJiM0MzsgZXh0YWJsZV9zaXplLFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMTEwLVx0XHRcdFx0XHRcdFx0ICBcdTAwMjZqaXRfZGF0YS1cdTAwM2Vyb19pbWFnZSwgc2l6ZW9mKHUzMiksXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTM4NTA9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtMzk2MS1cdFx0XHQvKiBhbGxvY2F0ZSBtb2R1bGUgbWVtb3J5IGZvciB4ODYgaW5zbnMgYW5kIGV4dGFibGUgKi9cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozOTYyOlx0XHRcdGhlYWRlciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2Mocm91bmR1cChwcm9nbGVuLCBhbGlnbikgJiM0MzsgZXh0YWJsZV9zaXplLFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM5NjMtXHRcdFx0XHRcdFx0XHQgICBcdTAwMjZpbWFnZSwgYWxpZ24sIFx1MDAyNnJ3X2hlYWRlciwgXHUwMDI2cndfaW1hZ2UsXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzUzPXN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzNTQ6YnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKipyb19pbWFnZSxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTM1NS1cdFx0XHQgIHVuc2lnbmVkIGludCBhbGlnbm1lbnQsXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTE5Nj1zdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxua2VybmVsL2JwZi9jb3JlLmM6MTE5NzpicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jKHVuc2lnbmVkIGludCBwcm9nbGVuLCB1OCAqKmltYWdlX3B0cixcbmtlcm5lbC9icGYvY29yZS5jLTExOTgtXHRcdFx0ICB1bnNpZ25lZCBpbnQgYWxpZ25tZW50LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMjEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBCUEYgSklUIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBtYWtpbmcgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHRoZSBCUEYgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MuIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBhbmQgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAgd2l0aGluIGBrZXJuZWwvYnBmL2NvcmUuY2AuIFRoaXMgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LCBhcyB0aGF0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyB0aGUgSklUIGJpbmFyaWVzIGFyZSBoYW5kbGVkLiBJdCBhbHNvIGV4dGVuZHMgdG8gYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFuZCBgYnBmX2ppdF9mcmVlYCBhY3Jvc3MgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcywgc28gdGhpcyBzZWVtcyBwcmV0dHkgZmFyLXJlYWNoaW5nLgoKR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBtb2RpZmljYXRpb25zLCBhbmQgc3BlY2lmaWNhbGx5IHRob3NlIGZ1bmN0aW9ucywgdGhpcyBpcyBhYnNvbHV0ZWx5IHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIHRob3JvdWdoIGZ1enppbmcuIFRoZSBrZXkgc3ltYm9scyBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGFyZSBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAsIGFuZCBhbHNvIGBicGZfaml0X2JpbmFyeV9oZHJgLCBhcyB0aG9zZSBzZWVtIGxpa2UgdGhlIG1vc3QgY3JpdGljYWwgcG9pbnRzLgoKQWgsIGdvb2QsIGl0IGxvb2tzIGxpa2UgYGJwZl9qaXRfYmluYXJ5X2hkcmAgd2FzIHByZXZpb3VzbHkgc3RhdGljIGFuZCBpcyBub3cgYmVpbmcgZXhwb3J0ZWQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4gSXTigJlzIGFuIGltcG9ydGFudCBkZXRhaWwuCgpOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBJJiMzOTttIGFzc3VtaW5nIGBDT05GSUdfQlBGX0pJVGAgaXMgZ29pbmcgdG8gYmUgYSByZXF1aXJlbWVudCBoZXJlLiBBIHF1aWNrIGNoZWNrIG9mIGBrZXJuZWwvYnBmL0tjb25maWdgIHdpbGwgY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzZXQgY29ycmVjdGx5IHRvIGVuYWJsZSB0aGVzZSBuZXcgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0pJVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNzcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgSklUIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBmb2N1cyBnb2VzIHRvIHRoZSBCUEYgSklUIGNvbmZpZ3VyYXRpb24uIFNlZW1zIGxpa2UgYEJQRl9KSVRgIGlzIHRoZSBjcml0aWNhbCBvbmUsIGFzIGV4cGVjdGVkLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBCUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZCB0b28sIGFsdGhvdWdoIHRoYXQgb25lJiMzOTtzIHVzdWFsbHkgdGFrZW4gY2FyZSBvZi4gCgpUaGUgZmlsZSBtb2RpZmljYXRpb25zIHBvaW50IGRpcmVjdGx5IHRvIGBCUEZfSklUYCBiZWluZyB0aGUgcHJpbWFyeSBmb2N1cyBoZXJlLiBJIHNlZSBjaGFuZ2VzIGluIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgSklUIGNvbXBpbGF0aW9uIGZpbGVzIGxpa2UgYGFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY2AgYW5kIGBhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY2AuIFRoYXQgZnVydGhlciByZWluZm9yY2VzIHRoZSBpbXBvcnRhbmNlIG9mIGBCUEZfSklUYC4KCk5vdywgSSBzaG91bGQgaW52ZXN0aWdhdGUgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIHByb2Nlc3MsIGVzcGVjaWFsbHkgYGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2NgIHdpdGhpbiBga2VybmVsL2JwZi9jb3JlLmNgLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGF0JiMzOTtzIGltcGFjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2NvcmUuYz0xMTk2PXN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG5rZXJuZWwvYnBmL2NvcmUuYzoxMTk3OmJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLFxua2VybmVsL2JwZi9jb3JlLmMtMTE5OC1cdFx0XHQgIHVuc2lnbmVkIGludCBhbGlnbm1lbnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NDcKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0OTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gQlBGIEpJVCBDb21waWxhdGlvbiAmYW1wOyBGcmVlaW5nKioKCk9rYXksIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGZvciB0aGlzLiBJIG5lZWQgdG8gZXhhbWluZSBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfaGRyYC4gQXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCBtZXJpdCBhdHRlbnRpb24/IEFoLCB5ZXMsIGBicGZfaml0X2ZyZWVgIGlzIG1vZGlmaWVkIGluIHF1aXRlIGEgZmV3IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmaWxlczogYGFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuY2AsIGBhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY2AsIGFuZCBzbyBvbi4gU2ltaWxhcmx5LCBgYnBmX2ludF9qaXRfY29tcGlsZWAgaGFzIG11bHRpcGxlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuCgpTaW5jZSB0aGV5JiMzOTtyZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMsIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAgYXJlIGV4Y2VsbGVudCBjYW5kaWRhdGVzIGZvciBkZWVwZXIgaW52ZXN0aWdhdGlvbi4gVGhleSByZXByZXNlbnQgY3J1Y2lhbCBwb2ludHMgd2hlcmUgdGhlIEpJVCBwcm9jZXNzIGNhbiBkaXZlcmdlIGJhc2VkIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiBOb3csIHdoaWxlIGBicGZfaW50X2ppdF9jb21waWxlYCBsb29rcyBsaWtlIGl0IG1pZ2h0IGJlIGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjayBkdXJpbmcgcHJvZ3JhbSBsb2FkLCBpdCYjMzk7cyBhY3R1YWxseSBleGFjdGx5IHdoYXQgd2Ugd2FudCB0byBmdXp6IOKAkyB0aGUgQlBGIHByb2dyYW0gbG9hZCBwcm9jZXNzLiBJdCYjMzk7cyBhIGNvbnRyb2wgcGF0aCwgbm90IGEgaG90IHBhdGggaW4gdGhlIGRhdGEgcGF0aC4gU28sIGJvdGggYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFuZCBgYnBmX2ppdF9mcmVlYCBhcmUgc29saWQgcGlja3MuCgpJIHNob3VsZCB2ZXJpZnkgaWYgYGJwZl9qaXRfZnJlZWAgaXMgZGVmaW5lZCBhcyBhIHdlYWsgZnVuY3Rpb24gaW4gYGtlcm5lbC9icGYvY29yZS5jYCBvciBwdXJlbHkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLiBUaGF0IHdpbGwgaW5mbHVlbmNlIGhvdyBJIGFwcHJvYWNoIHRoZSBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2b2lkIGJwZl9qaXRfZnJlZVxcKCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmM9MTQwMz1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYy0xNDE1LVxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jOjE0MTY6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYy0xNDE3LXtcbi0tXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0zMjEyPWJvb2wgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzIyMy1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjMyMjQ6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzIyNS17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMTk3PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzQ4LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyMzQ5OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM1MC17XG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jPTQ0PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jLTE4MC1cbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYzoxODE6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYy0xODIte1xuLS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9NDYzPWludCBicGZfYXJjaF90ZXh0X2ludmFsaWRhdGUodm9pZCAqZHN0LCBzaXplX3QgbGVuKVxuLS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNDc3LVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzo0Nzg6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNDc5LXtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYz0yMTA9aW50IGJwZl9hcmNoX3RleHRfaW52YWxpZGF0ZSh2b2lkICpkc3QsIHNpemVfdCBsZW4pXG4tLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMjIwLVxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MjIxOnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTIyMi17XG4tLVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYz0zMDk4PWJvb2wgYnBmX2ppdF9pbmxpbmVzX2hlbHBlcl9jYWxsKHMzMiBpbW0pXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0zMTA5LVxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYzozMTEwOnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG5hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jLTMxMTEte1xuLS1cbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF8zMi5jPTY1Mj1jb25kX2JyYW5jaDpcdFx0XHRmX29mZnNldCA9IGFkZHJzW2kgJiM0MzsgZmlsdGVyW2ldLmpmXTtcbi0tXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfMzIuYy03NTctXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfMzIuYzo3NTg6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF8zMi5jLTc1OS17XG4tLVxuYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmM9MTQ4MD1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jLTE2MTQtXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYzoxNjE1OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYy0xNjE2LXtcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9NDA2Mj1ib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtNDA2Ni1cbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MDY3OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDY4LXtcbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEzMzc9dm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTMzODp2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTMzOS1zdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTQ3Mz1icGZfaml0X2FkZF9wb2tlX2Rlc2NyaXB0b3Ioc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTQ3OC1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTQ3OTpzdGF0aWMgaW5saW5lIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTE0ODAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk0NAoJCQkJCQkJb3V0cHV0OiAyMDUKCQkJCQkJCXRob3VnaHRzOiA1MjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEJQRiBKSVQgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgYnBmX2ppdF9mcmVlYCBhbmQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGFyZSBpbXBsZW1lbnRlZCBhY3Jvc3MgYWxsIHRoZSBhcmNoaXRlY3R1cmVzIHdlJiMzOTtyZSBjb25jZXJuZWQgd2l0aCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMsIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYCwgYW5kIGBicGZfaml0X2JpbmFyeV9oZHJgIHJlc2lkZSBpbiBga2VybmVsL2JwZi9jb3JlLmNgLgoKTXkgZm9jdXMgc3ltYm9scywgYmFzZWQgb24gdGhlIGRpZmYsIGFyZSBnb2luZyB0byBiZToKKiAgIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYAoqICAgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgCiogICBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYAoqICAgYGJwZl9qaXRfYmluYXJ5X2hkcmAKKiAgIGBicGZfaW50X2ppdF9jb21waWxlYAoqICAgYGJwZl9qaXRfZnJlZWAKClRoZSBuZWNlc3NhcnkgY29uZmlnIGlzIGRlZmluaXRlbHkgYEJQRl9KSVRgLiBBbmQgbGV0JiMzOTtzIG5vdCBmb3JnZXQgdGhlIGJhc2ljczogYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZXNzZW50aWFsIGZvciBsb2FkaW5nIEJQRiBwcm9ncmFtcy4gU28sIEkmIzM5O2xsIGJlIHN1cmUgdG8gaW5jbHVkZSBib3RoIGBCUEZfSklUYCBhbmQgYEJQRl9TWVNDQUxMYCBpbiB0aGUgY2hlY2tzLgoKTm93LCBsZXQmIzM5O3MgcmVjYXAgdGhlIHBhdGNoJiMzOTtzIHB1cnBvc2UuIEl0JiMzOTtzIGFib3V0IGZpeGluZyBtZW1vcnkgbGVha3MgYW5kIGluY29ycmVjdCBmcmVlaW5nIG9mIEJQRiBKSVQgaGVhZGVycyBhbmQgZGF0YS4gVGhpcyBoYXBwZW5zIGR1cmluZyBKSVQgY29tcGlsYXRpb24gZmFpbHVyZXMgb3Igd2hlbiBCUEYgcHJvZ3JhbXMgYXJlIHVubG9hZGVkLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgY29yZSBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgSklUIGNvbXBpbGVycy4gVGhpcyBpcyBhbGwgZnVuY3Rpb25hbCwgdXNlci1zcGFjZSBhY2Nlc3NpYmxlIHZpYSB0aGUgYGJwZigpYCBzeXNjYWxsLiBUaGlzIGlzIGdvaW5nIHRvIG5lZWQgZnV6emluZyB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGR1cmluZyBsb2FkL3VubG9hZCBvcGVyYXRpb25zLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCBgYnBmX2ppdF9iaW5hcnlfaGRyYCDigJMgaXMgaXQgd29ydGggYSBkZWRpY2F0ZWQgZm9jdXM/IEl0JiMzOTtzIGEgc21hbGwgaGVscGVyIGZ1bmN0aW9uLiBGcm9tIGxvb2tpbmcgYXQgaXQsIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0IGV4dHJhY3RzIHRoZSBoZWFkZXIuIFdoaWxlIGl0JiMzOTtzIHNpbXBsZSwgaXQmIzM5O3MgcGFydCBvZiB0aGUgcGljdHVyZSwgc28gSSYjMzk7bGwgaW5jbHVkZSBpdC4KCk9rYXksIGxldCBtZSBkb3VibGUtY2hlY2sgYGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2NgIGlzIGV4cG9ydGVkOyB5ZXAsIGl0JiMzOTtzIGluIGNvcmUuYyBhbmQgYXJjaGl0ZWN0dXJlIEpJVHMgdXNlIGl0LgoKUmlnaHQsIEkmIzM5O20gY29uZmlkZW50IHdpdGggdGhpcy4gSSB3aWxsIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUmIzM0OywKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X2hkciYjMzQ7LAogICAgJiMzNDticGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBtZW1vcnkgbGVha3MgYW5kIGluY29ycmVjdCBmcmVlaW5nIG9mIEJQRiBKSVQgaGVhZGVycyBhbmQgZGF0YSBkdXJpbmcgSklUIGNvbXBpbGF0aW9uIGZhaWx1cmVzIG9yIHdoZW4gZnJlZWluZyBCUEYgcHJvZ3JhbXMuIEl0IG1vZGlmaWVzIGNvcmUgQlBGIEpJVCBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgYW5kIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBKSVQgY29tcGlsZXJzLiBUaGVzZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsLCByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgb2NjdXIgZHVyaW5nIEJQRiBwcm9ncmFtIGxvYWQvdW5sb2FkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2JpbmFyeV9oZHImIzM0OywKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDticGZfaml0X2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgbWVtb3J5IGxlYWtzIGFuZCBpbmNvcnJlY3QgZnJlZWluZyBvZiBCUEYgSklUIGhlYWRlcnMgYW5kIGRhdGEgZHVyaW5nIEpJVCBjb21waWxhdGlvbiBmYWlsdXJlcyBvciB3aGVuIGZyZWVpbmcgQlBGIHByb2dyYW1zLiBJdCBtb2RpZmllcyBjb3JlIEJQRiBKSVQgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFuZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgSklUIGNvbXBpbGVycy4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCwgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIG9jY3VyIGR1cmluZyBCUEYgcHJvZ3JhbSBsb2FkL3VubG9hZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjUxOjM2Ljk1NTIwNTgzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTg1MjU5MDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY1wiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9oZHJcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcyBhbmQgaW5jb3JyZWN0IGZyZWVpbmcgb2YgQlBGIEpJVCBoZWFkZXJzIGFuZCBkYXRhIGR1cmluZyBKSVQgY29tcGlsYXRpb24gZmFpbHVyZXMgb3Igd2hlbiBmcmVlaW5nIEJQRiBwcm9ncmFtcy4gSXQgbW9kaWZpZXMgY29yZSBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVCBjb21waWxlcnMuIFRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgQlBGIHByb2dyYW0gbG9hZC91bmxvYWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjUxOjM2Ljk1NTIxMTQ0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDkzMDg0MjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGJhYjdhNTM5NmYxMGNiMjQyYjZmZWE0ZTk5MzM4YzBjMTM3M2Q0NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1bCAyNiAxNzo1MTozNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmNcXG5pbmRleCA2MzlhMjczNmYwMjllZC4uMjljODkzM2UyZGQyY2UgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jXFxuKysrIGIvYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTE0MTIsMyArMTQxMiwyMiBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXG4gXFx0cmV0dXJuIHByb2c7XFxuIH1cXG4rXFxuK3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuK3tcXG4rXFx0aWYgKGZwLVxcdTAwM2VqaXRlZCkge1xcbitcXHRcXHRzdHJ1Y3QgYXJjX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVxcdTAwM2VhdXgtXFx1MDAzZWppdF9kYXRhO1xcbitcXHRcXHRzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkciA9IGJwZl9qaXRfYmluYXJ5X2hkcihmcCk7XFxuK1xcbitcXHRcXHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xcbitcXHRcXHRpZiAoaml0X2RhdGEpIHtcXG4rXFx0XFx0XFx0a2ZyZWUoaml0X2RhdGEtXFx1MDAzZWJwZjJpbnNuKTtcXG4rXFx0XFx0XFx0a2ZyZWUoaml0X2RhdGEpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRicGZfaml0X2JpbmFyeV9mcmVlKGhkcik7XFxuK1xcdFxcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpO1xcbitcXHR9XFxuK1xcbitcXHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XFxuK31cXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xcbmluZGV4IDRjZGM3ZGZiMDViYTlhLi4zMjc4MDI0NzMwNWViMCAxMDA2NDRcXG4tLS0gYS9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xcbisrKyBiL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXFxuQEAgLTIyNTgsNyArMjI1OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfaGRyO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGlmIChXQVJOX09OKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUocm9faGVhZGVyLCBoZWFkZXIpKSkge1xcbi1cXHRcXHRcXHQvKiByb19oZWFkZXIgYW5kIGhlYWRlciBoYXMgYmVlbiBmcmVlZCAqL1xcbitcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBOVUxMKTtcXG4gXFx0XFx0XFx0cm9faGVhZGVyID0gTlVMTDtcXG4gXFx0XFx0XFx0aGVhZGVyID0gTlVMTDtcXG4gXFx0XFx0XFx0Z290byBvdXRfZnJlZV9oZHI7XFxuQEAgLTIzMDgsOSArMjMwOCw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdFxcdHByb2ctXFx1MDAzZWppdGVkX2xlbiA9IDA7XFxuIFxcdH1cXG4gXFx0aWYgKGhlYWRlcikge1xcbi1cXHRcXHRicGZfYXJjaF90ZXh0X2NvcHkoXFx1MDAyNnJvX2hlYWRlci1cXHUwMDNlc2l6ZSwgXFx1MDAyNmhlYWRlci1cXHUwMDNlc2l6ZSxcXG4tXFx0XFx0XFx0XFx0ICAgc2l6ZW9mKGhlYWRlci1cXHUwMDNlc2l6ZSkpO1xcbiBcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBoZWFkZXIpO1xcbitcXHRcXHRyb19oZWFkZXIgPSBOVUxMO1xcbiBcXHR9XFxuIFxcdGdvdG8gb3V0X29mZjtcXG4gfVxcbkBAIC0zMjM3LDYgKzMyMzYsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAoaml0X2RhdGEpIHtcXG4gXFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKTtcXG4rXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4gXFx0XFx0XFx0a2ZyZWUoaml0X2RhdGEpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdHByb2ctXFx1MDAzZWJwZl9mdW5jID0gKHZvaWQgKilwcm9nLVxcdTAwM2VicGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXFxuaW5kZXggMjczOGI0ZGIxMTY1MzMuLjQ4YWQ0MThkZjEzMzFhIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jXFxuQEAgLTIyOTgsNyArMjI5OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWU7XFxuIFxcdFxcdH1cXG4gXFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XFxuLVxcdFxcdFxcdC8qIHJvX2hlYWRlciBhbmQgaGVhZGVyIGhhdmUgYmVlbiBmcmVlZCAqL1xcbitcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBOVUxMKTtcXG4gXFx0XFx0XFx0cm9faGVhZGVyID0gTlVMTDtcXG4gXFx0XFx0XFx0aGVhZGVyID0gTlVMTDtcXG4gXFx0XFx0XFx0Z290byBvdXRfZnJlZTtcXG5AQCAtMjM0MSwxMCArMjM0MSw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdFxcdHByb2ctXFx1MDAzZWppdGVkX2xlbiA9IDA7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChoZWFkZXIpIHtcXG4tXFx0XFx0YnBmX2FyY2hfdGV4dF9jb3B5KFxcdTAwMjZyb19oZWFkZXItXFx1MDAzZXNpemUsIFxcdTAwMjZoZWFkZXItXFx1MDAzZXNpemUsIHNpemVvZihoZWFkZXItXFx1MDAzZXNpemUpKTtcXG4rXFx0aWYgKGhlYWRlcilcXG4gXFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgaGVhZGVyKTtcXG4tXFx0fVxcbiBcXHRnb3RvIG91dF9vZmZzZXQ7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xcbmluZGV4IDE3Mjc3MDEzMjQ0MGRiLi5lZjYzYzM4YmRmMTUxMCAxMDA2NDRcXG4tLS0gYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcXG4rKysgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcXG5AQCAtMTc4LDYgKzE3OCwyNSBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXHRnb3RvIG91dF9vZmZzZXQ7XFxuIH1cXG4gXFxuK3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuK3tcXG4rXFx0aWYgKGZwLVxcdTAwM2VqaXRlZCkge1xcbitcXHRcXHRzdHJ1Y3QgaHBwYV9qaXRfZGF0YSAqaml0X2RhdGEgPSBmcC1cXHUwMDNlYXV4LVxcdTAwM2VqaXRfZGF0YTtcXG4rXFx0XFx0c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIgPSBicGZfaml0X2JpbmFyeV9oZHIoZnApO1xcbitcXG4rXFx0XFx0LyogQ2xlYW51cCBmb3IgZWFybGllciBzdWJwcm9ncyBpZiBqaXRfc3VicHJvZ3MoKSBhYm9ydHMgKi9cXG4rXFx0XFx0aWYgKGppdF9kYXRhKSB7XFxuK1xcdFxcdFxcdGtmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHgub2Zmc2V0KTtcXG4rXFx0XFx0XFx0a2ZyZWUoaml0X2RhdGEpO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRicGZfaml0X2JpbmFyeV9mcmVlKGhkcik7XFxuK1xcdFxcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihmcCkpO1xcbitcXHR9XFxuK1xcbitcXHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XFxuK31cXG4rXFxuIHU2NCBocHBhX2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKVxcbiB7XFxuIFxcdGRpdiA9IGRpdjY0X3U2NChkaXYsIGRpdmlzb3IpO1xcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuY1xcbmluZGV4IDdiMDdiNDM1NzVmMTExLi5mZjliY2Q1NTE2NWI0OSAxMDA2NDRcXG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXFxuKysrIGIvYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuY1xcbkBAIC0zMTQsNyArMzE0LDYgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0XFx0YnBmX2ppdF9idWlsZF9wcm9sb2d1ZShjb2RlX2Jhc2UsIFxcdTAwMjZjZ2N0eCk7XFxuIFxcdFxcdGlmIChicGZfaml0X2J1aWxkX2JvZHkoZnAsIGNvZGVfYmFzZSwgZmNvZGVfYmFzZSwgXFx1MDAyNmNnY3R4LCBhZGRycywgcGFzcyxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIGV4dHJhX3Bhc3MpKSB7XFxuLVxcdFxcdFxcdGJwZl9hcmNoX3RleHRfY29weShcXHUwMDI2Zmhkci1cXHUwMDNlc2l6ZSwgXFx1MDAyNmhkci1cXHUwMDNlc2l6ZSwgc2l6ZW9mKGhkci1cXHUwMDNlc2l6ZSkpO1xcbiBcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgaGRyKTtcXG4gXFx0XFx0XFx0Z290byBvdXRfZXJyO1xcbiBcXHRcXHR9XFxuQEAgLTMzOSw4ICszMzgsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gI2VuZGlmXFxuIFxcbiBcXHRpZiAoIWZwLVxcdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcXG4tXFx0XFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSlcXG4rXFx0XFx0aWYgKGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoZmhkciwgaGRyKSkge1xcbitcXHRcXHRcXHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgTlVMTCk7XFxuIFxcdFxcdFxcdGdvdG8gb3V0X2VycjtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbiBcXHRmcC1cXHUwMDNlYnBmX2Z1bmMgPSAodm9pZCAqKWZpbWFnZTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbmluZGV4IGNiZmNkMjg3ZWExNjY4Li41NTUzMGU4MGRmMmVmYiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xcbisrKyBiL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXFxuQEAgLTE1NCw3ICsxNTQsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXG4gXFx0aWYgKCFwcm9nLVxcdTAwM2Vpc19mdW5jIHx8IGV4dHJhX3Bhc3MpIHtcXG4gXFx0XFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKSkpIHtcXG4tXFx0XFx0XFx0Lyogcm9faGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXFxuK1xcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcXG4gXFx0XFx0XFx0aml0X2RhdGEtXFx1MDAzZXJvX2hlYWRlciA9IE5VTEw7XFxuIFxcdFxcdFxcdGppdF9kYXRhLVxcdTAwM2VoZWFkZXIgPSBOVUxMO1xcbiBcXHRcXHRcXHRnb3RvIG91dF9mcmVlX2hkcjtcXG5AQCAtMTgzLDExICsxODMsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxcbiBcXHRcXHRwcm9nLVxcdTAwM2VqaXRlZCA9IDA7XFxuIFxcdFxcdHByb2ctXFx1MDAzZWppdGVkX2xlbiA9IDA7XFxuIFxcdH1cXG4tXFx0aWYgKGppdF9kYXRhLVxcdTAwM2VoZWFkZXIpIHtcXG4tXFx0XFx0YnBmX2FyY2hfdGV4dF9jb3B5KFxcdTAwMjZqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLVxcdTAwM2VzaXplLCBcXHUwMDI2aml0X2RhdGEtXFx1MDAzZWhlYWRlci1cXHUwMDNlc2l6ZSxcXG4tXFx0XFx0XFx0XFx0ICAgc2l6ZW9mKGppdF9kYXRhLVxcdTAwM2VoZWFkZXItXFx1MDAzZXNpemUpKTtcXG4rXFx0aWYgKGppdF9kYXRhLVxcdTAwM2VoZWFkZXIpXFxuIFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShqaXRfZGF0YS1cXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cXHUwMDNlaGVhZGVyKTtcXG4tXFx0fVxcbiBcXHRnb3RvIG91dF9vZmZzZXQ7XFxuIH1cXG4gXFxuQEAgLTIzNyw2ICsyMzQsNyBAQCB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuIFxcdFxcdFxcdGt2ZnJlZShqaXRfZGF0YS1cXHUwMDNlY3R4Lm9mZnNldCk7XFxuIFxcdFxcdFxcdGtmcmVlKGppdF9kYXRhKTtcXG4gXFx0XFx0fVxcbitcXHRcXHRwcm9nLVxcdTAwM2VicGZfZnVuYyA9ICh2b2lkICopcHJvZy1cXHUwMDNlYnBmX2Z1bmMgLSBjZmlfZ2V0X29mZnNldCgpO1xcbiBcXHRcXHRoZHIgPSBicGZfaml0X2JpbmFyeV9wYWNrX2hkcihwcm9nKTtcXG4gXFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGhkciwgTlVMTCk7XFxuIFxcdFxcdFdBUk5fT05fT05DRSghYnBmX3Byb2dfa2FsbHN5bXNfdmVyaWZ5X29mZihwcm9nKSk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jXFxuaW5kZXggYjYwODc3NDc4YjQ1ZDYuLmJmMTAwZTc5NGUyNzg0IDEwMDY0NFxcbi0tLSBhL2FyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jXFxuQEAgLTMxMDYsMyArMzEwNiwyMiBAQCBib29sIGJwZl9qaXRfaW5saW5lc19oZWxwZXJfY2FsbChzMzIgaW1tKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdH1cXG4gfVxcbitcXG4rdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcXG4re1xcbitcXHRpZiAoZnAtXFx1MDAzZWppdGVkKSB7XFxuK1xcdFxcdHN0cnVjdCBzMzkwX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVxcdTAwM2VhdXgtXFx1MDAzZWppdF9kYXRhO1xcbitcXHRcXHRzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKmhkciA9IGJwZl9qaXRfYmluYXJ5X2hkcihmcCk7XFxuK1xcbitcXHRcXHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xcbitcXHRcXHRpZiAoaml0X2RhdGEpIHtcXG4rXFx0XFx0XFx0a3ZmcmVlKGppdF9kYXRhLVxcdTAwM2VjdHguYWRkcnMpO1xcbitcXHRcXHRcXHRrZnJlZShqaXRfZGF0YSk7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTtcXG4rXFx0XFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKGZwKSk7XFxuK1xcdH1cXG4rXFxuK1xcdGJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTtcXG4rfVxcbmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jXFxuaW5kZXggMmZhMGU5Mzc1MTI3NmUuLmI1ODkyY2RjZTcxMTNhIDEwMDY0NFxcbi0tLSBhL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jXFxuKysrIGIvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmNcXG5AQCAtMTYxMSwzICsxNjExLDIyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdH1cXG4gXFx0Z290byBvdXRfb2ZmO1xcbiB9XFxuK1xcbit2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxcbit7XFxuK1xcdGlmIChmcC1cXHUwMDNlaml0ZWQpIHtcXG4rXFx0XFx0c3RydWN0IHNwYXJjNjRfaml0X2RhdGEgKmppdF9kYXRhID0gZnAtXFx1MDAzZWF1eC1cXHUwMDNlaml0X2RhdGE7XFxuK1xcdFxcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTtcXG4rXFxuK1xcdFxcdC8qIENsZWFudXAgZm9yIGVhcmxpZXIgc3VicHJvZ3MgaWYgaml0X3N1YnByb2dzKCkgYWJvcnRzICovXFxuK1xcdFxcdGlmIChqaXRfZGF0YSkge1xcbitcXHRcXHRcXHRrZnJlZShqaXRfZGF0YS1cXHUwMDNlY3R4Lm9mZnNldCk7XFxuK1xcdFxcdFxcdGtmcmVlKGppdF9kYXRhKTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0YnBmX2ppdF9iaW5hcnlfZnJlZShoZHIpO1xcbitcXHRcXHRXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYoZnApKTtcXG4rXFx0fVxcbitcXG4rXFx0YnBmX3Byb2dfdW5sb2NrX2ZyZWUoZnApO1xcbit9XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xcbmluZGV4IGIyZmVlYzgxZTIzMTJlLi4yODFlODk3NjRkOTg1MyAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcXG4rKysgYi9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcXG5AQCAtMzkzMCwxMSArMzkzMCw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXFxuIFxcdFxcdGlmIChwcm9nbGVuIFxcdTAwM2M9IDApIHtcXG4gb3V0X2ltYWdlOlxcbiBcXHRcXHRcXHRpbWFnZSA9IE5VTEw7XFxuLVxcdFxcdFxcdGlmIChoZWFkZXIpIHtcXG4tXFx0XFx0XFx0XFx0YnBmX2FyY2hfdGV4dF9jb3B5KFxcdTAwMjZoZWFkZXItXFx1MDAzZXNpemUsIFxcdTAwMjZyd19oZWFkZXItXFx1MDAzZXNpemUsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgIHNpemVvZihyd19oZWFkZXItXFx1MDAzZXNpemUpKTtcXG4rXFx0XFx0XFx0aWYgKGhlYWRlcilcXG4gXFx0XFx0XFx0XFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKGhlYWRlciwgcndfaGVhZGVyKTtcXG4tXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRpZiAoZXh0cmFfcGFzcykge1xcbiBcXHRcXHRcXHRcXHRwcm9nLVxcdTAwM2VicGZfZnVuYyA9IE5VTEw7XFxuIFxcdFxcdFxcdFxcdHByb2ctXFx1MDAzZWppdGVkID0gMDtcXG5AQCAtMzk4Nyw3ICszOTg0LDcgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcXG4gXFx0XFx0XFx0ICogQm90aCBjYXNlcyBhcmUgc2VyaW91cyBidWdzIGFuZCBqdXN0aWZ5IFdBUk5fT04uXFxuIFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGhlYWRlciwgcndfaGVhZGVyKSkpIHtcXG4tXFx0XFx0XFx0XFx0LyogaGVhZGVyIGhhcyBiZWVuIGZyZWVkICovXFxuK1xcdFxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZWFkZXIsIE5VTEwpO1xcbiBcXHRcXHRcXHRcXHRoZWFkZXIgPSBOVUxMO1xcbiBcXHRcXHRcXHRcXHRnb3RvIG91dF9pbWFnZTtcXG4gXFx0XFx0XFx0fVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbmluZGV4IDMyZDUyOTdjNTU3ZTViLi41ZDdmYzcwYmQzMzJlMCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxcbkBAIC0xMzM4LDYgKzEzMzgsOCBAQCB2b2lkIGJwZl9qaXRfZnJlZV9leGVjKHZvaWQgKmFkZHIpO1xcbiB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcXG4gc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcXG4gYnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcCk7XFxuK3N0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXFxuK2JwZl9qaXRfYmluYXJ5X2hkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcXG4gXFxuIHZvaWQgKmJwZl9wcm9nX3BhY2tfYWxsb2ModTMyIHNpemUsIGJwZl9qaXRfZmlsbF9ob2xlX3QgYnBmX2ZpbGxfaWxsX2luc25zLCBib29sIHdhc19jbGFzc2ljKTtcXG4gdm9pZCBicGZfcHJvZ19wYWNrX2ZyZWUodm9pZCAqcHRyLCB1MzIgc2l6ZSk7XFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvY29yZS5jIGIva2VybmVsL2JwZi9jb3JlLmNcXG5pbmRleCBlMjA3NjY2N2IyNDUxNy4uOGQzNTI4MzExZjhlZWEgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcXG4rKysgYi9rZXJuZWwvYnBmL2NvcmUuY1xcbkBAIC0xMjE4LDYgKzEyMTgsMTMgQEAgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKippbWFnZV9wdHIsXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHR9XFxuIFxcbitcXHQvKiBJbml0aWFsaXplIHJvX2hlYWRlci1cXHUwMDNlc2l6ZSB0byBlbnN1cmUgaXQgaXMgdmFsaWQgZHVyaW5nIGZyZWUgKi9cXG4rXFx0aWYgKElTX0VSUihicGZfYXJjaF90ZXh0X2NvcHkoXFx1MDAyNnJvX2hlYWRlci1cXHUwMDNlc2l6ZSwgXFx1MDAyNnNpemUsIHNpemVvZihzaXplKSkpKSB7XFxuK1xcdFxcdGJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHNpemUpO1xcbitcXHRcXHRicGZfaml0X3VuY2hhcmdlX21vZG1lbShzaXplKTtcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4rXFxuIFxcdCpyd19oZWFkZXIgPSBrdm1hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCEqcndfaGVhZGVyKSB7XFxuIFxcdFxcdGJwZl9wcm9nX3BhY2tfZnJlZShyb19oZWFkZXIsIHNpemUpO1xcbkBAIC0xMjQ5LDEwICsxMjU2LDkgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXFxuIFxcbiBcXHRrdmZyZWUocndfaGVhZGVyKTtcXG4gXFxuLVxcdGlmIChJU19FUlIocHRyKSkge1xcbi1cXHRcXHRicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCByb19oZWFkZXItXFx1MDAzZXNpemUpO1xcbitcXHRpZiAoSVNfRVJSKHB0cikpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKHB0cik7XFxuLVxcdH1cXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC0xMjYwLDExICsxMjY2LDYgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXFxuICAqICAgMSkgd2hlbiB0aGUgcHJvZ3JhbSBpcyBmcmVlZCBhZnRlcjtcXG4gICogICAyKSB3aGVuIHRoZSBKSVQgZW5naW5lIGZhaWxzIChiZWZvcmUgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZSkuXFxuICAqIEZvciBjYXNlIDIpLCB3ZSBuZWVkIHRvIGZyZWUgYm90aCB0aGUgUk8gbWVtb3J5IGFuZCB0aGUgUlcgYnVmZmVyLlxcbi0gKlxcbi0gKiBicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUgcmVxdWlyZXMgcHJvcGVyIHJvX2hlYWRlci1cXHUwMDNlc2l6ZS4gSG93ZXZlcixcXG4tICogYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyBkb2VzIG5vdCBzZXQgaXQuIFRoZXJlZm9yZSwgcm9faGVhZGVyLVxcdTAwM2VzaXplXFxuLSAqIG11c3QgYmUgc2V0IHdpdGggZWl0aGVyIGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUgKG5vcm1hbCBwYXRoKSBvclxcbi0gKiBicGZfYXJjaF90ZXh0X2NvcHkgKHdoZW4gaml0IGZhaWxzKS5cXG4gICovXFxuIHZvaWQgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqcm9faGVhZGVyLFxcbiBcXHRcXHRcXHQgICAgICBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJ3X2hlYWRlcilcXG5AQCAtMTI4Niw3ICsxMjg3LDcgQEAgYnBmX2ppdF9iaW5hcnlfcGFja19oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcClcXG4gXFx0cmV0dXJuICh2b2lkICopYWRkcjtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxcbitzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxcbiBicGZfaml0X2JpbmFyeV9oZHIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpmcClcXG4ge1xcbiBcXHR1bnNpZ25lZCBsb25nIHJlYWxfc3RhcnQgPSAodW5zaWduZWQgbG9uZylmcC1cXHUwMDNlYnBmX2Z1bmM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjUxOjM3LjQ0OTA0OTk5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQxNDkxMzg4MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY1wiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9oZHJcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcyBhbmQgaW5jb3JyZWN0IGZyZWVpbmcgb2YgQlBGIEpJVCBoZWFkZXJzIGFuZCBkYXRhIGR1cmluZyBKSVQgY29tcGlsYXRpb24gZmFpbHVyZXMgb3Igd2hlbiBmcmVlaW5nIEJQRiBwcm9ncmFtcy4gSXQgbW9kaWZpZXMgY29yZSBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVCBjb21waWxlcnMuIFRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgQlBGIHByb2dyYW0gbG9hZC91bmxvYWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBiYWI3YTUzOTZmMTBjYjI0MmI2ZmVhNGU5OTMzOGMwYzEzNzNkNDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxNzo1MTozNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYyBiL2FyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuY1xuaW5kZXggNjM5YTI3MzZmMDI5ZWQuLjI5Yzg5MzNlMmRkMmNlIDEwMDY0NFxuLS0tIGEvYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jXG4rKysgYi9hcmNoL2FyYy9uZXQvYnBmX2ppdF9jb3JlLmNcbkBAIC0xNDEyLDMgKzE0MTIsMjIgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcbiBcdHJldHVybiBwcm9nO1xuIH1cbitcbit2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuK3tcbitcdGlmIChmcC1cdTAwM2VqaXRlZCkge1xuK1x0XHRzdHJ1Y3QgYXJjX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbitcdFx0c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIgPSBicGZfaml0X2JpbmFyeV9oZHIoZnApO1xuK1xuK1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuK1x0XHRpZiAoaml0X2RhdGEpIHtcbitcdFx0XHRrZnJlZShqaXRfZGF0YS1cdTAwM2VicGYyaW5zbik7XG4rXHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuK1x0XHR9XG4rXG4rXHRcdGJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTtcbitcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKGZwKSk7XG4rXHR9XG4rXG4rXHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XG4rfVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmNcbmluZGV4IDRjZGM3ZGZiMDViYTlhLi4zMjc4MDI0NzMwNWViMCAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTIyNTgsNyArMjI1OCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbitcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRyb19oZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGhlYWRlciA9IE5VTEw7XG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG5AQCAtMjMwOCw5ICsyMzA4LDggQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiBcdFx0cHJvZy1cdTAwM2VqaXRlZF9sZW4gPSAwO1xuIFx0fVxuIFx0aWYgKGhlYWRlcikge1xuLVx0XHRicGZfYXJjaF90ZXh0X2NvcHkoXHUwMDI2cm9faGVhZGVyLVx1MDAzZXNpemUsIFx1MDAyNmhlYWRlci1cdTAwM2VzaXplLFxuLVx0XHRcdFx0ICAgc2l6ZW9mKGhlYWRlci1cdTAwM2VzaXplKSk7XG4gXHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShyb19oZWFkZXIsIGhlYWRlcik7XG4rXHRcdHJvX2hlYWRlciA9IE5VTEw7XG4gXHR9XG4gXHRnb3RvIG91dF9vZmY7XG4gfVxuQEAgLTMyMzcsNiArMzIzNiw3IEBAIHZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbiBcdFx0ICovXG4gXHRcdGlmIChqaXRfZGF0YSkge1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuK1x0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbiBcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdH1cbiBcdFx0cHJvZy1cdTAwM2VicGZfZnVuYyA9ICh2b2lkICopcHJvZy1cdTAwM2VicGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbmluZGV4IDI3MzhiNGRiMTE2NTMzLi40OGFkNDE4ZGYxMzMxYSAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbkBAIC0yMjk4LDcgKzIyOTgsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG4gXHRcdH1cbiBcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShyb19oZWFkZXIsIGhlYWRlcikpKSB7XG4tXHRcdFx0Lyogcm9faGVhZGVyIGFuZCBoZWFkZXIgaGF2ZSBiZWVuIGZyZWVkICovXG4rXHRcdFx0YnBmX2ppdF9iaW5hcnlfcGFja19mcmVlKHJvX2hlYWRlciwgTlVMTCk7XG4gXHRcdFx0cm9faGVhZGVyID0gTlVMTDtcbiBcdFx0XHRoZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGdvdG8gb3V0X2ZyZWU7XG5AQCAtMjM0MSwxMCArMjM0MSw4IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdHByb2ctXHUwMDNlaml0ZWRfbGVuID0gMDtcbiBcdH1cbiBcbi1cdGlmIChoZWFkZXIpIHtcbi1cdFx0YnBmX2FyY2hfdGV4dF9jb3B5KFx1MDAyNnJvX2hlYWRlci1cdTAwM2VzaXplLCBcdTAwMjZoZWFkZXItXHUwMDNlc2l6ZSwgc2l6ZW9mKGhlYWRlci1cdTAwM2VzaXplKSk7XG4rXHRpZiAoaGVhZGVyKVxuIFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUocm9faGVhZGVyLCBoZWFkZXIpO1xuLVx0fVxuIFx0Z290byBvdXRfb2Zmc2V0O1xuIH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmMgYi9hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IDE3Mjc3MDEzMjQ0MGRiLi5lZjYzYzM4YmRmMTUxMCAxMDA2NDRcbi0tLSBhL2FyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuY1xuKysrIGIvYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jXG5AQCAtMTc4LDYgKzE3OCwyNSBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0Z290byBvdXRfb2Zmc2V0O1xuIH1cbiBcbit2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuK3tcbitcdGlmIChmcC1cdTAwM2VqaXRlZCkge1xuK1x0XHRzdHJ1Y3QgaHBwYV9qaXRfZGF0YSAqaml0X2RhdGEgPSBmcC1cdTAwM2VhdXgtXHUwMDNlaml0X2RhdGE7XG4rXHRcdHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqaGRyID0gYnBmX2ppdF9iaW5hcnlfaGRyKGZwKTtcbitcbitcdFx0LyogQ2xlYW51cCBmb3IgZWFybGllciBzdWJwcm9ncyBpZiBqaXRfc3VicHJvZ3MoKSBhYm9ydHMgKi9cbitcdFx0aWYgKGppdF9kYXRhKSB7XG4rXHRcdFx0a2ZyZWUoaml0X2RhdGEtXHUwMDNlY3R4Lm9mZnNldCk7XG4rXHRcdFx0a2ZyZWUoaml0X2RhdGEpO1xuK1x0XHR9XG4rXG4rXHRcdGJwZl9qaXRfYmluYXJ5X2ZyZWUoaGRyKTtcbitcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKGZwKSk7XG4rXHR9XG4rXG4rXHRicGZfcHJvZ191bmxvY2tfZnJlZShmcCk7XG4rfVxuK1xuIHU2NCBocHBhX2RpdjY0KHU2NCBkaXYsIHU2NCBkaXZpc29yKVxuIHtcbiBcdGRpdiA9IGRpdjY0X3U2NChkaXYsIGRpdmlzb3IpO1xuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCA3YjA3YjQzNTc1ZjExMS4uZmY5YmNkNTUxNjViNDkgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXG4rKysgYi9hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jXG5AQCAtMzE0LDcgKzMxNCw2IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdGJwZl9qaXRfYnVpbGRfcHJvbG9ndWUoY29kZV9iYXNlLCBcdTAwMjZjZ2N0eCk7XG4gXHRcdGlmIChicGZfaml0X2J1aWxkX2JvZHkoZnAsIGNvZGVfYmFzZSwgZmNvZGVfYmFzZSwgXHUwMDI2Y2djdHgsIGFkZHJzLCBwYXNzLFxuIFx0XHRcdFx0ICAgICAgIGV4dHJhX3Bhc3MpKSB7XG4tXHRcdFx0YnBmX2FyY2hfdGV4dF9jb3B5KFx1MDAyNmZoZHItXHUwMDNlc2l6ZSwgXHUwMDI2aGRyLVx1MDAzZXNpemUsIHNpemVvZihoZHItXHUwMDNlc2l6ZSkpO1xuIFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShmaGRyLCBoZHIpO1xuIFx0XHRcdGdvdG8gb3V0X2VycjtcbiBcdFx0fVxuQEAgLTMzOSw4ICszMzgsMTAgQEAgc3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJcbiAjZW5kaWZcbiBcbiBcdGlmICghZnAtXHUwMDNlaXNfZnVuYyB8fCBleHRyYV9wYXNzKSB7XG4tXHRcdGlmIChicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGZoZHIsIGhkcikpXG4rXHRcdGlmIChicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGZoZHIsIGhkcikpIHtcbitcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoZmhkciwgTlVMTCk7XG4gXHRcdFx0Z290byBvdXRfZXJyO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHRmcC1cdTAwM2VicGZfZnVuYyA9ICh2b2lkICopZmltYWdlO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jIGIvYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmNcbmluZGV4IGNiZmNkMjg3ZWExNjY4Li41NTUzMGU4MGRmMmVmYiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jXG4rKysgYi9hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuY1xuQEAgLTE1NCw3ICsxNTQsNyBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFxuIFx0aWYgKCFwcm9nLVx1MDAzZWlzX2Z1bmMgfHwgZXh0cmFfcGFzcykge1xuIFx0XHRpZiAoV0FSTl9PTihicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKGppdF9kYXRhLVx1MDAzZXJvX2hlYWRlciwgaml0X2RhdGEtXHUwMDNlaGVhZGVyKSkpIHtcbi1cdFx0XHQvKiByb19oZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbitcdFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBOVUxMKTtcbiBcdFx0XHRqaXRfZGF0YS1cdTAwM2Vyb19oZWFkZXIgPSBOVUxMO1xuIFx0XHRcdGppdF9kYXRhLVx1MDAzZWhlYWRlciA9IE5VTEw7XG4gXHRcdFx0Z290byBvdXRfZnJlZV9oZHI7XG5AQCAtMTgzLDExICsxODMsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRwcm9nLVx1MDAzZWppdGVkID0gMDtcbiBcdFx0cHJvZy1cdTAwM2VqaXRlZF9sZW4gPSAwO1xuIFx0fVxuLVx0aWYgKGppdF9kYXRhLVx1MDAzZWhlYWRlcikge1xuLVx0XHRicGZfYXJjaF90ZXh0X2NvcHkoXHUwMDI2aml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLVx1MDAzZXNpemUsIFx1MDAyNmppdF9kYXRhLVx1MDAzZWhlYWRlci1cdTAwM2VzaXplLFxuLVx0XHRcdFx0ICAgc2l6ZW9mKGppdF9kYXRhLVx1MDAzZWhlYWRlci1cdTAwM2VzaXplKSk7XG4rXHRpZiAoaml0X2RhdGEtXHUwMDNlaGVhZGVyKVxuIFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaml0X2RhdGEtXHUwMDNlcm9faGVhZGVyLCBqaXRfZGF0YS1cdTAwM2VoZWFkZXIpO1xuLVx0fVxuIFx0Z290byBvdXRfb2Zmc2V0O1xuIH1cbiBcbkBAIC0yMzcsNiArMjM0LDcgQEAgdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuIFx0XHRcdGt2ZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbiBcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4gXHRcdH1cbitcdFx0cHJvZy1cdTAwM2VicGZfZnVuYyA9ICh2b2lkICopcHJvZy1cdTAwM2VicGZfZnVuYyAtIGNmaV9nZXRfb2Zmc2V0KCk7XG4gXHRcdGhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfaGRyKHByb2cpO1xuIFx0XHRicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWUoaGRyLCBOVUxMKTtcbiBcdFx0V0FSTl9PTl9PTkNFKCFicGZfcHJvZ19rYWxsc3ltc192ZXJpZnlfb2ZmKHByb2cpKTtcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuaW5kZXggYjYwODc3NDc4YjQ1ZDYuLmJmMTAwZTc5NGUyNzg0IDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuKysrIGIvYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTMxMDYsMyArMzEwNiwyMiBAQCBib29sIGJwZl9qaXRfaW5saW5lc19oZWxwZXJfY2FsbChzMzIgaW1tKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gfVxuK1xuK3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG4re1xuK1x0aWYgKGZwLVx1MDAzZWppdGVkKSB7XG4rXHRcdHN0cnVjdCBzMzkwX2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbitcdFx0c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIgPSBicGZfaml0X2JpbmFyeV9oZHIoZnApO1xuK1xuK1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuK1x0XHRpZiAoaml0X2RhdGEpIHtcbitcdFx0XHRrdmZyZWUoaml0X2RhdGEtXHUwMDNlY3R4LmFkZHJzKTtcbitcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4rXHRcdH1cbitcbitcdFx0YnBmX2ppdF9iaW5hcnlfZnJlZShoZHIpO1xuK1x0XHRXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYoZnApKTtcbitcdH1cbitcbitcdGJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmMgYi9hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuY1xuaW5kZXggMmZhMGU5Mzc1MTI3NmUuLmI1ODkyY2RjZTcxMTNhIDEwMDY0NFxuLS0tIGEvYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmNcbisrKyBiL2FyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF82NC5jXG5AQCAtMTYxMSwzICsxNjExLDIyIEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHR9XG4gXHRnb3RvIG91dF9vZmY7XG4gfVxuK1xuK3ZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXG4re1xuK1x0aWYgKGZwLVx1MDAzZWppdGVkKSB7XG4rXHRcdHN0cnVjdCBzcGFyYzY0X2ppdF9kYXRhICpqaXRfZGF0YSA9IGZwLVx1MDAzZWF1eC1cdTAwM2VqaXRfZGF0YTtcbitcdFx0c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpoZHIgPSBicGZfaml0X2JpbmFyeV9oZHIoZnApO1xuK1xuK1x0XHQvKiBDbGVhbnVwIGZvciBlYXJsaWVyIHN1YnByb2dzIGlmIGppdF9zdWJwcm9ncygpIGFib3J0cyAqL1xuK1x0XHRpZiAoaml0X2RhdGEpIHtcbitcdFx0XHRrZnJlZShqaXRfZGF0YS1cdTAwM2VjdHgub2Zmc2V0KTtcbitcdFx0XHRrZnJlZShqaXRfZGF0YSk7XG4rXHRcdH1cbitcbitcdFx0YnBmX2ppdF9iaW5hcnlfZnJlZShoZHIpO1xuK1x0XHRXQVJOX09OX09OQ0UoIWJwZl9wcm9nX2thbGxzeW1zX3ZlcmlmeV9vZmYoZnApKTtcbitcdH1cbitcbitcdGJwZl9wcm9nX3VubG9ja19mcmVlKGZwKTtcbit9XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jIGIvYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jXG5pbmRleCBiMmZlZWM4MWUyMzEyZS4uMjgxZTg5NzY0ZDk4NTMgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmNcbisrKyBiL2FyY2gveDg2L25ldC9icGZfaml0X2NvbXAuY1xuQEAgLTM5MzAsMTEgKzM5MzAsOCBAQCBzdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wclxuIFx0XHRpZiAocHJvZ2xlbiBcdTAwM2M9IDApIHtcbiBvdXRfaW1hZ2U6XG4gXHRcdFx0aW1hZ2UgPSBOVUxMO1xuLVx0XHRcdGlmIChoZWFkZXIpIHtcbi1cdFx0XHRcdGJwZl9hcmNoX3RleHRfY29weShcdTAwMjZoZWFkZXItXHUwMDNlc2l6ZSwgXHUwMDI2cndfaGVhZGVyLVx1MDAzZXNpemUsXG4tXHRcdFx0XHRcdFx0ICAgc2l6ZW9mKHJ3X2hlYWRlci1cdTAwM2VzaXplKSk7XG4rXHRcdFx0aWYgKGhlYWRlcilcbiBcdFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZWFkZXIsIHJ3X2hlYWRlcik7XG4tXHRcdFx0fVxuIFx0XHRcdGlmIChleHRyYV9wYXNzKSB7XG4gXHRcdFx0XHRwcm9nLVx1MDAzZWJwZl9mdW5jID0gTlVMTDtcbiBcdFx0XHRcdHByb2ctXHUwMDNlaml0ZWQgPSAwO1xuQEAgLTM5ODcsNyArMzk4NCw3IEBAIHN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3ByXG4gXHRcdFx0ICogQm90aCBjYXNlcyBhcmUgc2VyaW91cyBidWdzIGFuZCBqdXN0aWZ5IFdBUk5fT04uXG4gXHRcdFx0ICovXG4gXHRcdFx0aWYgKFdBUk5fT04oYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZShoZWFkZXIsIHJ3X2hlYWRlcikpKSB7XG4tXHRcdFx0XHQvKiBoZWFkZXIgaGFzIGJlZW4gZnJlZWQgKi9cbitcdFx0XHRcdGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShoZWFkZXIsIE5VTEwpO1xuIFx0XHRcdFx0aGVhZGVyID0gTlVMTDtcbiBcdFx0XHRcdGdvdG8gb3V0X2ltYWdlO1xuIFx0XHRcdH1cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuaW5kZXggMzJkNTI5N2M1NTdlNWIuLjVkN2ZjNzBiZDMzMmUwIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuKysrIGIvaW5jbHVkZS9saW51eC9maWx0ZXIuaFxuQEAgLTEzMzgsNiArMTMzOCw4IEBAIHZvaWQgYnBmX2ppdF9mcmVlX2V4ZWModm9pZCAqYWRkcik7XG4gdm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCk7XG4gc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcbiBicGZfaml0X2JpbmFyeV9wYWNrX2hkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcbitzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxuK2JwZl9qaXRfYmluYXJ5X2hkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKTtcbiBcbiB2b2lkICpicGZfcHJvZ19wYWNrX2FsbG9jKHUzMiBzaXplLCBicGZfaml0X2ZpbGxfaG9sZV90IGJwZl9maWxsX2lsbF9pbnNucywgYm9vbCB3YXNfY2xhc3NpYyk7XG4gdm9pZCBicGZfcHJvZ19wYWNrX2ZyZWUodm9pZCAqcHRyLCB1MzIgc2l6ZSk7XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9rZXJuZWwvYnBmL2NvcmUuY1xuaW5kZXggZTIwNzY2NjdiMjQ1MTcuLjhkMzUyODMxMWY4ZWVhIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9jb3JlLmNcbisrKyBiL2tlcm5lbC9icGYvY29yZS5jXG5AQCAtMTIxOCw2ICsxMjE4LDEzIEBAIGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLFxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdH1cbiBcbitcdC8qIEluaXRpYWxpemUgcm9faGVhZGVyLVx1MDAzZXNpemUgdG8gZW5zdXJlIGl0IGlzIHZhbGlkIGR1cmluZyBmcmVlICovXG4rXHRpZiAoSVNfRVJSKGJwZl9hcmNoX3RleHRfY29weShcdTAwMjZyb19oZWFkZXItXHUwMDNlc2l6ZSwgXHUwMDI2c2l6ZSwgc2l6ZW9mKHNpemUpKSkpIHtcbitcdFx0YnBmX3Byb2dfcGFja19mcmVlKHJvX2hlYWRlciwgc2l6ZSk7XG4rXHRcdGJwZl9qaXRfdW5jaGFyZ2VfbW9kbWVtKHNpemUpO1xuK1x0XHRyZXR1cm4gTlVMTDtcbitcdH1cbitcbiBcdCpyd19oZWFkZXIgPSBrdm1hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghKnJ3X2hlYWRlcikge1xuIFx0XHRicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCBzaXplKTtcbkBAIC0xMjQ5LDEwICsxMjU2LDkgQEAgaW50IGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemUoc3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpyb19oZWFkZXIsXG4gXG4gXHRrdmZyZWUocndfaGVhZGVyKTtcbiBcbi1cdGlmIChJU19FUlIocHRyKSkge1xuLVx0XHRicGZfcHJvZ19wYWNrX2ZyZWUocm9faGVhZGVyLCByb19oZWFkZXItXHUwMDNlc2l6ZSk7XG4rXHRpZiAoSVNfRVJSKHB0cikpXG4gXHRcdHJldHVybiBQVFJfRVJSKHB0cik7XG4tXHR9XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtMTI2MCwxMSArMTI2Niw2IEBAIGludCBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKHN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqcm9faGVhZGVyLFxuICAqICAgMSkgd2hlbiB0aGUgcHJvZ3JhbSBpcyBmcmVlZCBhZnRlcjtcbiAgKiAgIDIpIHdoZW4gdGhlIEpJVCBlbmdpbmUgZmFpbHMgKGJlZm9yZSBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplKS5cbiAgKiBGb3IgY2FzZSAyKSwgd2UgbmVlZCB0byBmcmVlIGJvdGggdGhlIFJPIG1lbW9yeSBhbmQgdGhlIFJXIGJ1ZmZlci5cbi0gKlxuLSAqIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZSByZXF1aXJlcyBwcm9wZXIgcm9faGVhZGVyLVx1MDAzZXNpemUuIEhvd2V2ZXIsXG4tICogYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyBkb2VzIG5vdCBzZXQgaXQuIFRoZXJlZm9yZSwgcm9faGVhZGVyLVx1MDAzZXNpemVcbi0gKiBtdXN0IGJlIHNldCB3aXRoIGVpdGhlciBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplIChub3JtYWwgcGF0aCkgb3Jcbi0gKiBicGZfYXJjaF90ZXh0X2NvcHkgKHdoZW4gaml0IGZhaWxzKS5cbiAgKi9cbiB2b2lkIGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZShzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJvX2hlYWRlcixcbiBcdFx0XHQgICAgICBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKnJ3X2hlYWRlcilcbkBAIC0xMjg2LDcgKzEyODcsNyBAQCBicGZfaml0X2JpbmFyeV9wYWNrX2hkcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxuIFx0cmV0dXJuICh2b2lkICopYWRkcjtcbiB9XG4gXG4tc3RhdGljIGlubGluZSBzdHJ1Y3QgYnBmX2JpbmFyeV9oZWFkZXIgKlxuK3N0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXG4gYnBmX2ppdF9iaW5hcnlfaGRyKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqZnApXG4ge1xuIFx0dW5zaWduZWQgbG9uZyByZWFsX3N0YXJ0ID0gKHVuc2lnbmVkIGxvbmcpZnAtXHUwMDNlYnBmX2Z1bmM7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MTozNy40NDkwNTEyMzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTgyNTgyNjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBKSVQgQ29tcGlsYXRpb24gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0J3MgZGVhbGluZyB3aXRoIGNydWNpYWwgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIHdpdGhpbiB0aGUgQlBGIEpJVCBjb21waWxlciwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gaG93IHdlIGhhbmRsZSBKSVQgaGVhZGVycyBhbmQgZGF0YSB3aGVuIHRoZXJlIGFyZSBjb21waWxhdGlvbiBmYWlsdXJlcyBvciBkdXJpbmcgdGhlIHVubG9hZGluZyBvZiBCUEYgcHJvZ3JhbXMuIEl0IGFwcGVhcnMgdGhhdCB0aGUgcGF0Y2ggYWRkcmVzc2VzIG1pc3Npbmcgb3IgaW5jb3JyZWN0IGBicGZfaml0X2ZyZWVgIGltcGxlbWVudGF0aW9ucyBmb3IgYSBudW1iZXIgb2YgYXJjaGl0ZWN0dXJlcyDigJMgYXJjLCBwYXJpc2MsIHMzOTAsIGFuZCBzcGFyYyBhcmUgbWVudGlvbmVkIGFzIGhhdmluZyBuZXcgaW1wbGVtZW50YXRpb25zLCBvciBuZWVkaW5nIHVwZGF0ZXMuIFRoaXMgaW1wbGllcyB0aGF0IHRoZXNlIGFyY2hpdGVjdHVyZXMgd2VyZSBlaXRoZXIgdXNpbmcgYSBkZWZhdWx0LCBwb3NzaWJseSBsZXNzIGVmZmljaWVudCwgZnJlZWluZyBtZWNoYW5pc20sIG9yIGRpZG4ndCBoYW5kbGUgZmFpbHVyZXMgY29ycmVjdGx5LiBGb3IgdGhlIGFybTY0LCBsb29uZ2FyY2gsIHBvd2VycGMsIHJpc2N2LCBhbmQgeDg2IGFyY2hpdGVjdHVyZXMsIHRoZSBjaGFuZ2VzIHNlZW0gdG8gZm9jdXMgb24gcmVmaW5pbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgYnBmX2ludF9qaXRfY29tcGlsZWAuXG5cblRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgYmVpbmcgdGFyZ2V0ZWQgaXMgdW5kb3VidGVkbHkgcmVhY2hhYmxlLiBCUEYgSklUIGlzIGZ1bmRhbWVudGFsLCBhbmQgdXNlciBzcGFjZSBpbnRlcmFjdHMgd2l0aCBpdCB0aHJvdWdoIHRoZSBgYnBmKClgIHN5c2NhbGwgd2hlbiBsb2FkaW5nIHByb2dyYW1zLiBTbywgd2UncmUgdGFsa2luZyBhYm91dCBhIGNoYW5nZSB0aGF0IHdpbGwgaW1wYWN0IGhvdyBtZW1vcnkgaXMgbWFuYWdlZCBkdXJpbmcgYm90aCBwcm9ncmFtIGxvYWRpbmcgYW5kIHVubG9hZGluZy5cblxuTXkga2V5IGZvY3VzLCBub3csIG5lZWRzIHRvIGJlIG9uIGlkZW50aWZ5aW5nIHRoZSBjb3JlIHN5bWJvbHMgaW52b2x2ZWQuIEkgY2FuIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIHRvdWNoIG9uIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAsIHdoaWNoIGFyZSBjcnVjaWFsIGluIG1hbnkgYXJjaGl0ZWN0dXJlcy4gSSBhbHNvIHNlZSBjYWxscyB0byBmdW5jdGlvbnMgbGlrZSBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfaGRyYC4gVGhlc2UgYXJlIGFsbCBjbGVhcmx5IGludm9sdmVkIGluIG1hbmFnaW5nIHRoZSBhbGxvY2F0ZWQgYmluYXJ5IGRhdGEgd2l0aGluIHRoZSBKSVQgcHJvY2Vzcy4gSXQncyBhIGJpdCBvZiBhIGRldGFpbCwgYnV0IGl0IGlzIGNsZWFyIHRoYXQgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGlzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYy5cblxuTG9va2luZyBhdCBga2VybmVsL2JwZi9jb3JlLmNgLCBJJ20gY29uZmlybWluZyB0aGF0IGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCBpcyBleHBvcnRlZCBvciB1c2VkIGJ5IHRoZSBKSVQgaW1wbGVtZW50YXRpb25zLCBhbmQgdGhhdCBgYnBmX2ppdF9mcmVlYCBpcyBjYWxsZWQgd2hlbiBhIEJQRiBwcm9ncmFtIGlzIGZyZWVkLCBqdXN0IGFzIEknZCBleHBlY3QuIFRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSByZWFsbHkgYGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2NgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWVgLCBgYnBmX2ppdF9mcmVlYCwgYW5kIGBicGZfaW50X2ppdF9jb21waWxlYC4gSSBuZWVkIHRvIHJlbWVtYmVyLCB3aGVuIHJldmlld2luZywgdGhhdCBgYnBmX2ludF9qaXRfY29tcGlsZWAgaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBrZXJuZWwgY29uZmlndXJhdGlvbnMgYXJlIGluIHBsYWNlLiBPYnZpb3VzbHksIGBDT05GSUdfQlBGX0pJVGAgaXMgYSBtdXN0LiBBbmQgZnJvbSBleHBlcmllbmNlLCB0aGF0J3MgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gbWFueSBhcmNoaXRlY3R1cmVzLCBzbyBJJ2xsIGRvdWJsZS1jaGVjayBga2VybmVsL2JwZi9LY29uZmlnYC4gQW5kIG9mIGNvdXJzZSwgSSdsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB2ZXJpZmljYXRpb24gdG9vbHMgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcncyBjb3JyZWN0IGFuZCB0aGF0IEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MjYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MTo0Ni40MzE2MzY3MDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYwNjc0ODUzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jPTIwOTM9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIxOTAtXFx0aW1hZ2Vfc2l6ZSA9IGV4dGFibGVfb2Zmc2V0ICsgZXh0YWJsZV9zaXplO1xcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjIxOTE6XFx0cm9faGVhZGVyID0gYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyhpbWFnZV9zaXplLCBcXHUwMDI2cm9faW1hZ2VfcHRyLFxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTIxOTItXFx0XFx0XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHU2NCksIFxcdTAwMjZoZWFkZXIsIFxcdTAwMjZpbWFnZV9wdHIsXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxOTc9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjI1Ny1cXHQvKiBOb3cgd2Uga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIHRvIG1ha2UgKi9cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyNTg6XFx0cm9faGVhZGVyID0gYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyhpbWFnZV9zaXplLCBcXHUwMDI2cm9faW1hZ2VfcHRyLCBzaXplb2YodTMyKSxcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyNTktXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmhlYWRlciwgXFx1MDAyNmltYWdlX3B0ciwgaml0X2ZpbGxfaG9sZSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9MTY1PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy0yOTYtXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYzoyOTc6XFx0ZmhkciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MoYWxsb2NsZW4sIFxcdTAwMjZmaW1hZ2UsIDQsIFxcdTAwMjZoZHIsIFxcdTAwMjZpbWFnZSxcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jLTI5OC1cXHRcXHRcXHRcXHRcXHQgYnBmX2ppdF9maWxsX2lsbF9pbnNucywgYnBmX3Byb2dfd2FzX2NsYXNzaWMoZnApKTtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jPTQ0PXN0cnVjdCBicGZfcHJvZyAqYnBmX2ludF9qaXRfY29tcGlsZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvcmUuYy0xMDgtXFx0XFx0XFx0aml0X2RhdGEtXFx1MDAzZXJvX2hlYWRlciA9XFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM6MTA5OlxcdFxcdFxcdFxcdGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2MocHJvZ19zaXplICsgZXh0YWJsZV9zaXplLFxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jLTExMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIFxcdTAwMjZqaXRfZGF0YS1cXHUwMDNlcm9faW1hZ2UsIHNpemVvZih1MzIpLFxcbi0tXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTM4NTA9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy0zOTYxLVxcdFxcdFxcdC8qIGFsbG9jYXRlIG1vZHVsZSBtZW1vcnkgZm9yIHg4NiBpbnNucyBhbmQgZXh0YWJsZSAqL1xcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzozOTYyOlxcdFxcdFxcdGhlYWRlciA9IGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2Mocm91bmR1cChwcm9nbGVuLCBhbGlnbikgKyBleHRhYmxlX3NpemUsXFxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTM5NjMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNmltYWdlLCBhbGlnbiwgXFx1MDAyNnJ3X2hlYWRlciwgXFx1MDAyNnJ3X2ltYWdlLFxcbi0tXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMzUzPXN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMzU0OmJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqcm9faW1hZ2UsXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzU1LVxcdFxcdFxcdCAgdW5zaWduZWQgaW50IGFsaWdubWVudCxcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTExOTY9c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcXG5rZXJuZWwvYnBmL2NvcmUuYzoxMTk3OmJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLFxcbmtlcm5lbC9icGYvY29yZS5jLTExOTgtXFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgYWxpZ25tZW50LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MTo0OS4wMzgzOTQxMzNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzg0NTA2MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgQlBGIEpJVCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBtYWtpbmcgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHRoZSBCUEYgSklUIGNvbXBpbGF0aW9uIHByb2Nlc3MuIEkgc2VlIGl0J3MgdG91Y2hpbmcgYGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2NgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYCB3aXRoaW4gYGtlcm5lbC9icGYvY29yZS5jYC4gVGhpcyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QsIGFzIHRoYXQncyB0aGUgY29yZSBvZiBob3cgdGhlIEpJVCBiaW5hcmllcyBhcmUgaGFuZGxlZC4gSXQgYWxzbyBleHRlbmRzIHRvIGBicGZfaW50X2ppdF9jb21waWxlYCBhbmQgYGJwZl9qaXRfZnJlZWAgYWNyb3NzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMsIHNvIHRoaXMgc2VlbXMgcHJldHR5IGZhci1yZWFjaGluZy5cblxuR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBtb2RpZmljYXRpb25zLCBhbmQgc3BlY2lmaWNhbGx5IHRob3NlIGZ1bmN0aW9ucywgdGhpcyBpcyBhYnNvbHV0ZWx5IHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIHRob3JvdWdoIGZ1enppbmcuIFRoZSBrZXkgc3ltYm9scyBJJ20gZ29pbmcgdG8gZm9jdXMgb24gYXJlIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYCwgYW5kIGFsc28gYGJwZl9qaXRfYmluYXJ5X2hkcmAsIGFzIHRob3NlIHNlZW0gbGlrZSB0aGUgbW9zdCBjcml0aWNhbCBwb2ludHMuXG5cbkFoLCBnb29kLCBpdCBsb29rcyBsaWtlIGBicGZfaml0X2JpbmFyeV9oZHJgIHdhcyBwcmV2aW91c2x5IHN0YXRpYyBhbmQgaXMgbm93IGJlaW5nIGV4cG9ydGVkLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4gSXTigJlzIGFuIGltcG9ydGFudCBkZXRhaWwuXG5cbk5vdywgbGV0J3Mgc2VlIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSSdtIGFzc3VtaW5nIGBDT05GSUdfQlBGX0pJVGAgaXMgZ29pbmcgdG8gYmUgYSByZXF1aXJlbWVudCBoZXJlLiBBIHF1aWNrIGNoZWNrIG9mIGBrZXJuZWwvYnBmL0tjb25maWdgIHdpbGwgY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBlbnZpcm9ubWVudCBpcyBzZXQgY29ycmVjdGx5IHRvIGVuYWJsZSB0aGVzZSBuZXcgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIyMSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MTo1NC40MjI5MDIzOTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExODc5NzAzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQlBGX0pJVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXFxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXFxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MTo1Ni41NDE3MDYxMzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDgwODAwMDI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIEpJVCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGZvY3VzIGdvZXMgdG8gdGhlIEJQRiBKSVQgY29uZmlndXJhdGlvbi4gU2VlbXMgbGlrZSBgQlBGX0pJVGAgaXMgdGhlIGNyaXRpY2FsIG9uZSwgYXMgZXhwZWN0ZWQuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQgdG9vLCBhbHRob3VnaCB0aGF0IG9uZSdzIHVzdWFsbHkgdGFrZW4gY2FyZSBvZi4gXG5cblRoZSBmaWxlIG1vZGlmaWNhdGlvbnMgcG9pbnQgZGlyZWN0bHkgdG8gYEJQRl9KSVRgIGJlaW5nIHRoZSBwcmltYXJ5IGZvY3VzIGhlcmUuIEkgc2VlIGNoYW5nZXMgaW4gdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBKSVQgY29tcGlsYXRpb24gZmlsZXMgbGlrZSBgYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jYCBhbmQgYGFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jYC4gVGhhdCBmdXJ0aGVyIHJlaW5mb3JjZXMgdGhlIGltcG9ydGFuY2Ugb2YgYEJQRl9KSVRgLlxuXG5Ob3csIEkgc2hvdWxkIGludmVzdGlnYXRlIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBwcm9jZXNzLCBlc3BlY2lhbGx5IGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCB3aXRoaW4gYGtlcm5lbC9icGYvY29yZS5jYC4gTGV0J3Mgc2VlIGhvdyB0aGF0J3MgaW1wYWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDc3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjUyOjAxLjAyMjUwODg1N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTc2MjI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvY29yZS5jPTExOTY9c3RydWN0IGJwZl9iaW5hcnlfaGVhZGVyICpcXG5rZXJuZWwvYnBmL2NvcmUuYzoxMTk3OmJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1hZ2VfcHRyLFxcbmtlcm5lbC9icGYvY29yZS5jLTExOTgtXFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgYWxpZ25tZW50LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNzo1MjowMS4wODIyODExMTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzM5MjY2NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEJQRiBKSVQgQ29tcGlsYXRpb24gXHUwMDI2IEZyZWVpbmcqKlxuXG5Pa2F5LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGZvciB0aGlzLiBJIG5lZWQgdG8gZXhhbWluZSBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AsIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZnJlZWAsIGFuZCBgYnBmX2ppdF9iaW5hcnlfaGRyYC4gQXJlIHRoZXJlIGFueSBvdGhlcnMgdGhhdCBtZXJpdCBhdHRlbnRpb24/IEFoLCB5ZXMsIGBicGZfaml0X2ZyZWVgIGlzIG1vZGlmaWVkIGluIHF1aXRlIGEgZmV3IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmaWxlczogYGFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuY2AsIGBhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuY2AsIGFuZCBzbyBvbi4gU2ltaWxhcmx5LCBgYnBmX2ludF9qaXRfY29tcGlsZWAgaGFzIG11bHRpcGxlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuXG5cblNpbmNlIHRoZXkncmUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIGBicGZfaml0X2ZyZWVgIGFyZSBleGNlbGxlbnQgY2FuZGlkYXRlcyBmb3IgZGVlcGVyIGludmVzdGlnYXRpb24uIFRoZXkgcmVwcmVzZW50IGNydWNpYWwgcG9pbnRzIHdoZXJlIHRoZSBKSVQgcHJvY2VzcyBjYW4gZGl2ZXJnZSBiYXNlZCBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4gTm93LCB3aGlsZSBgYnBmX2ludF9qaXRfY29tcGlsZWAgbG9va3MgbGlrZSBpdCBtaWdodCBiZSBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2sgZHVyaW5nIHByb2dyYW0gbG9hZCwgaXQncyBhY3R1YWxseSBleGFjdGx5IHdoYXQgd2Ugd2FudCB0byBmdXp6IOKAkyB0aGUgQlBGIHByb2dyYW0gbG9hZCBwcm9jZXNzLiBJdCdzIGEgY29udHJvbCBwYXRoLCBub3QgYSBob3QgcGF0aCBpbiB0aGUgZGF0YSBwYXRoLiBTbywgYm90aCBgYnBmX2ludF9qaXRfY29tcGlsZWAgYW5kIGBicGZfaml0X2ZyZWVgIGFyZSBzb2xpZCBwaWNrcy5cblxuSSBzaG91bGQgdmVyaWZ5IGlmIGBicGZfaml0X2ZyZWVgIGlzIGRlZmluZWQgYXMgYSB3ZWFrIGZ1bmN0aW9uIGluIGBrZXJuZWwvYnBmL2NvcmUuY2Agb3IgcHVyZWx5IGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4gVGhhdCB3aWxsIGluZmx1ZW5jZSBob3cgSSBhcHByb2FjaCB0aGUgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA1NDcsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTc6NTI6MDcuODIxNTQ5ODcyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzI2NzMwNTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZvaWQgYnBmX2ppdF9mcmVlXFxcXChcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jPTE0MDM9c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG4tLVxcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYy0xNDE1LVxcbmFyY2gvYXJjL25ldC9icGZfaml0X2NvcmUuYzoxNDE2OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuYXJjaC9hcmMvbmV0L2JwZl9qaXRfY29yZS5jLTE0MTcte1xcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MzIxMj1ib29sIGJwZl9qaXRfaW5saW5lc19oZWxwZXJfY2FsbChzMzIgaW1tKVxcbi0tXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzIyMy1cXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYzozMjI0OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0zMjI1LXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjE5Nz1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzQ4LVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjM0OTp2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzUwLXtcXG4tLVxcbmFyY2gvcGFyaXNjL25ldC9icGZfaml0X2NvcmUuYz00ND1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jLTE4MC1cXG5hcmNoL3BhcmlzYy9uZXQvYnBmX2ppdF9jb3JlLmM6MTgxOnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuYXJjaC9wYXJpc2MvbmV0L2JwZl9qaXRfY29yZS5jLTE4Mi17XFxuLS1cXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTQ2Mz1pbnQgYnBmX2FyY2hfdGV4dF9pbnZhbGlkYXRlKHZvaWQgKmRzdCwgc2l6ZV90IGxlbilcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNDc3LVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6NDc4OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy00Nzkte1xcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmM9MjEwPWludCBicGZfYXJjaF90ZXh0X2ludmFsaWRhdGUodm9pZCAqZHN0LCBzaXplX3QgbGVuKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMjIwLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29yZS5jOjIyMTp2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb3JlLmMtMjIyLXtcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM9MzA5OD1ib29sIGJwZl9qaXRfaW5saW5lc19oZWxwZXJfY2FsbChzMzIgaW1tKVxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfaml0X2NvbXAuYy0zMTA5LVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmM6MzExMDp2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxcbmFyY2gvczM5MC9uZXQvYnBmX2ppdF9jb21wLmMtMzExMS17XFxuLS1cXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfMzIuYz02NTI9Y29uZF9icmFuY2g6XFx0XFx0XFx0Zl9vZmZzZXQgPSBhZGRyc1tpICsgZmlsdGVyW2ldLmpmXTtcXG4tLVxcbmFyY2gvc3BhcmMvbmV0L2JwZl9qaXRfY29tcF8zMi5jLTc1Ny1cXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfMzIuYzo3NTg6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcClcXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfMzIuYy03NTkte1xcbi0tXFxuYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmM9MTQ4MD1zdHJ1Y3QgYnBmX3Byb2cgKmJwZl9pbnRfaml0X2NvbXBpbGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxuYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmMtMTYxNC1cXG5hcmNoL3NwYXJjL25ldC9icGZfaml0X2NvbXBfNjQuYzoxNjE1OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqZnApXFxuYXJjaC9zcGFyYy9uZXQvYnBmX2ppdF9jb21wXzY0LmMtMTYxNi17XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9NDA2Mj1ib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDY2LVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MDY3OnZvaWQgYnBmX2ppdF9mcmVlKHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmMtNDA2OC17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTEzMzc9dm9pZCBicGZfaml0X2ZyZWVfZXhlYyh2b2lkICphZGRyKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjEzMzg6dm9pZCBicGZfaml0X2ZyZWUoc3RydWN0IGJwZl9wcm9nICpmcCk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMzM5LXN0cnVjdCBicGZfYmluYXJ5X2hlYWRlciAqXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTE0NzM9YnBmX2ppdF9hZGRfcG9rZV9kZXNjcmlwdG9yKHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTQ3OC1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oOjE0Nzk6c3RhdGljIGlubGluZSB2b2lkIGJwZl9qaXRfZnJlZShzdHJ1Y3QgYnBmX3Byb2cgKmZwKVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTQ4MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE3OjUyOjEwLjE0ODI4NjQzOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzEzOTEzOTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBCUEYgSklUIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgYGJwZl9qaXRfZnJlZWAgYW5kIGBicGZfaW50X2ppdF9jb21waWxlYCBhcmUgaW1wbGVtZW50ZWQgYWNyb3NzIGFsbCB0aGUgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBjb25jZXJuZWQgd2l0aCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMsIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYCwgYGJwZl9qaXRfYmluYXJ5X3BhY2tfZmluYWxpemVgLCBgYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlYCwgYW5kIGBicGZfaml0X2JpbmFyeV9oZHJgIHJlc2lkZSBpbiBga2VybmVsL2JwZi9jb3JlLmNgLlxuXG5NeSBmb2N1cyBzeW1ib2xzLCBiYXNlZCBvbiB0aGUgZGlmZiwgYXJlIGdvaW5nIHRvIGJlOlxuKiAgIGBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jYFxuKiAgIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplYFxuKiAgIGBicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWVgXG4qICAgYGJwZl9qaXRfYmluYXJ5X2hkcmBcbiogICBgYnBmX2ludF9qaXRfY29tcGlsZWBcbiogICBgYnBmX2ppdF9mcmVlYFxuXG5UaGUgbmVjZXNzYXJ5IGNvbmZpZyBpcyBkZWZpbml0ZWx5IGBCUEZfSklUYC4gQW5kIGxldCdzIG5vdCBmb3JnZXQgdGhlIGJhc2ljczogYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZXNzZW50aWFsIGZvciBsb2FkaW5nIEJQRiBwcm9ncmFtcy4gU28sIEknbGwgYmUgc3VyZSB0byBpbmNsdWRlIGJvdGggYEJQRl9KSVRgIGFuZCBgQlBGX1NZU0NBTExgIGluIHRoZSBjaGVja3MuXG5cbk5vdywgbGV0J3MgcmVjYXAgdGhlIHBhdGNoJ3MgcHVycG9zZS4gSXQncyBhYm91dCBmaXhpbmcgbWVtb3J5IGxlYWtzIGFuZCBpbmNvcnJlY3QgZnJlZWluZyBvZiBCUEYgSklUIGhlYWRlcnMgYW5kIGRhdGEuIFRoaXMgaGFwcGVucyBkdXJpbmcgSklUIGNvbXBpbGF0aW9uIGZhaWx1cmVzIG9yIHdoZW4gQlBGIHByb2dyYW1zIGFyZSB1bmxvYWRlZC4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGNvcmUgQlBGIEpJVCBtZW1vcnkgbWFuYWdlbWVudCBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVCBjb21waWxlcnMuIFRoaXMgaXMgYWxsIGZ1bmN0aW9uYWwsIHVzZXItc3BhY2UgYWNjZXNzaWJsZSB2aWEgdGhlIGBicGYoKWAgc3lzY2FsbC4gVGhpcyBpcyBnb2luZyB0byBuZWVkIGZ1enppbmcgdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBkdXJpbmcgbG9hZC91bmxvYWQgb3BlcmF0aW9ucy5cblxuSSdtIHRoaW5raW5nIGFib3V0IGBicGZfaml0X2JpbmFyeV9oZHJgIOKAkyBpcyBpdCB3b3J0aCBhIGRlZGljYXRlZCBmb2N1cz8gSXQncyBhIHNtYWxsIGhlbHBlciBmdW5jdGlvbi4gRnJvbSBsb29raW5nIGF0IGl0LCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IGl0IGV4dHJhY3RzIHRoZSBoZWFkZXIuIFdoaWxlIGl0J3Mgc2ltcGxlLCBpdCdzIHBhcnQgb2YgdGhlIHBpY3R1cmUsIHNvIEknbGwgaW5jbHVkZSBpdC5cblxuT2theSwgbGV0IG1lIGRvdWJsZS1jaGVjayBgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY2AgaXMgZXhwb3J0ZWQ7IHllcCwgaXQncyBpbiBjb3JlLmMgYW5kIGFyY2hpdGVjdHVyZSBKSVRzIHVzZSBpdC5cblxuUmlnaHQsIEknbSBjb25maWRlbnQgd2l0aCB0aGlzLiBJIHdpbGwgc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjk0NCwiT3V0cHV0VG9rZW5zIjoyMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTc6NTI6MTguODYyMjAyMTMxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgyMzIxMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvY1wiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19maW5hbGl6ZVwiLFxuICAgIFwiYnBmX2ppdF9iaW5hcnlfcGFja19mcmVlXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9oZHJcIixcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImJwZl9qaXRfZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIG1lbW9yeSBsZWFrcyBhbmQgaW5jb3JyZWN0IGZyZWVpbmcgb2YgQlBGIEpJVCBoZWFkZXJzIGFuZCBkYXRhIGR1cmluZyBKSVQgY29tcGlsYXRpb24gZmFpbHVyZXMgb3Igd2hlbiBmcmVlaW5nIEJQRiBwcm9ncmFtcy4gSXQgbW9kaWZpZXMgY29yZSBCUEYgSklUIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBhbmQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIEpJVCBjb21waWxlcnMuIFRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwsIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBicGYoKSBzeXNjYWxsLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBvY2N1ciBkdXJpbmcgQlBGIHByb2dyYW0gbG9hZC91bmxvYWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9wYWNrX2ZpbmFsaXplXCIsXG4gICAgXCJicGZfaml0X2JpbmFyeV9wYWNrX2ZyZWVcIixcbiAgICBcImJwZl9qaXRfYmluYXJ5X2hkclwiLFxuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiYnBmX2ppdF9mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgbWVtb3J5IGxlYWtzIGFuZCBpbmNvcnJlY3QgZnJlZWluZyBvZiBCUEYgSklUIGhlYWRlcnMgYW5kIGRhdGEgZHVyaW5nIEpJVCBjb21waWxhdGlvbiBmYWlsdXJlcyBvciB3aGVuIGZyZWVpbmcgQlBGIHByb2dyYW1zLiBJdCBtb2RpZmllcyBjb3JlIEJQRiBKSVQgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFuZCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgSklUIGNvbXBpbGVycy4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCwgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBtZW1vcnkgbGVha3Mgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIG9jY3VyIGR1cmluZyBCUEYgcHJvZ3JhbSBsb2FkL3VubG9hZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p6xv[1] Phase: Succeeded StartedAt: 2026-07-26 17:52:29 +0000 UTC FinishedAt: 2026-07-26 17:52:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 17:52:29 +0000 UTC FinishedAt: 2026-07-26 17:52:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2] Phase: Running StartedAt: 2026-07-26 17:52:29 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-07-26 17:52:29 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 17:52:29 +0000 UTC FinishedAt: 2026-07-26 17:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 17:52:29 +0000 UTC FinishedAt: 2026-07-26 17:52:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflow6p6xv/series-workflow6p6xv-convert-artifact-1269226013/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 17:52:39 +0000 UTC FinishedAt: 2026-07-26 18:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 17:52:39 +0000 UTC FinishedAt: 2026-07-26 18:32:35 +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:*1fd065e3-fa8d-4546-afff-079d8110ff80,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-workflow6p6xv/series-workflow6p6xv-convert-artifact-1269226013/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": "87ac8522-1129-4518-9a83-82fc7f7f15cf", "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-workflow6p6xv/series-workflow6p6xv-build-action-1281051475/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 17:52:39 +0000 UTC FinishedAt: 2026-07-26 18:32:25 +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:*1fd065e3-fa8d-4546-afff-079d8110ff80,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-workflow6p6xv/series-workflow6p6xv-convert-artifact-1269226013/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": "87ac8522-1129-4518-9a83-82fc7f7f15cf", "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-workflow6p6xv/series-workflow6p6xv-build-action-1281051475/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 18:32:35 +0000 UTC FinishedAt: 2026-07-26 18:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 18:32:35 +0000 UTC FinishedAt: 2026-07-26 18:32:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 18:32:35 +0000 UTC FinishedAt: 2026-07-26 18:32:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 18:32:35 +0000 UTC FinishedAt: 2026-07-26 18:32:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.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-workflow6p6xv/series-workflow6p6xv-convert-artifact-437355000/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 18:32:56 +0000 UTC FinishedAt: 2026-07-26 18:34:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 18:32:56 +0000 UTC FinishedAt: 2026-07-26 18:34:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*87ac8522-1129-4518-9a83-82fc7f7f15cf,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-workflow6p6xv/series-workflow6p6xv-build-action-1281051475/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-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 18:34:51 +0000 UTC FinishedAt: 2026-07-26 18:34:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 18:34:51 +0000 UTC FinishedAt: 2026-07-26 18:34:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 18:34:51 +0000 UTC FinishedAt: 2026-07-26 19:13:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 18:34:51 +0000 UTC FinishedAt: 2026-07-26 19:13:56 +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:*1fd065e3-fa8d-4546-afff-079d8110ff80,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-workflow6p6xv/series-workflow6p6xv-convert-artifact-437355000/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": "1abe03df-06f7-4beb-86f5-c77668dea7d3", "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-workflow6p6xv/series-workflow6p6xv-build-action-2746951396/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 18:34:51 +0000 UTC FinishedAt: 2026-07-26 19:13:46 +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:*1fd065e3-fa8d-4546-afff-079d8110ff80,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-workflow6p6xv/series-workflow6p6xv-convert-artifact-437355000/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": "1abe03df-06f7-4beb-86f5-c77668dea7d3", "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-workflow6p6xv/series-workflow6p6xv-build-action-2746951396/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-26 19:13:56 +0000 UTC FinishedAt: 2026-07-26 19:13:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-26 19:13:56 +0000 UTC FinishedAt: 2026-07-26 19:13:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-26 19:13:56 +0000 UTC FinishedAt: 2026-07-26 19:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-26 19:13:56 +0000 UTC FinishedAt: 2026-07-26 19:15:54 +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:*1abe03df-06f7-4beb-86f5-c77668dea7d3,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-workflow6p6xv/series-workflow6p6xv-build-action-2746951396/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-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Running StartedAt: 2026-07-26 19:16:04 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Running StartedAt: 2026-07-26 19:16:04 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"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:*87ac8522-1129-4518-9a83-82fc7f7f15cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1abe03df-06f7-4beb-86f5-c77668dea7d3,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-workflow6p6xv/series-workflow6p6xv-build-action-1281051475/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-workflow6p6xv/series-workflow6p6xv-build-action-2746951396/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-26 19:16:04 +0000 UTC FinishedAt: 2026-07-26 19:16:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-26 19:16:04 +0000 UTC FinishedAt: 2026-07-26 19:16:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"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-workflow6p6xv/series-workflow6p6xv-convert-artifact-147851857/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-26 19:16:04 +0000 UTC FinishedAt: 2026-07-26 19:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-26 19:16:04 +0000 UTC FinishedAt: 2026-07-26 19:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-26 19:16:04 +0000 UTC FinishedAt: 2026-07-26 19:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Running StartedAt: 2026-07-26 19:16:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6p6xv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_jit_binary_pack_alloc","bpf_jit_binary_pack_finalize","bpf_jit_binary_pack_free","bpf_jit_binary_hdr","bpf_int_jit_compile","bpf_jit_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4748a67f711188cbd64bc72c3df636f627858ed0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL"],"series_id":"97fe28f3-1b4b-4d7b-950a-426c4675eadb","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Running StartedAt: 2026-07-26 19:16:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*87ac8522-1129-4518-9a83-82fc7f7f15cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1abe03df-06f7-4beb-86f5-c77668dea7d3,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-workflow6p6xv/series-workflow6p6xv-build-action-1281051475/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-workflow6p6xv/series-workflow6p6xv-build-action-2746951396/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-workflow6p6xv/series-workflow6p6xv-convert-artifact-147851857/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil