Name: series-workflow2tkfj Phase: Succeeded StartedAt: 2026-07-17 22:34:43 +0000 UTC FinishedAt: 2026-07-18 00:02:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[0] Phase: Succeeded StartedAt: 2026-07-17 22:34:43 +0000 UTC FinishedAt: 2026-07-17 22:51:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 22:34:43 +0000 UTC FinishedAt: 2026-07-17 22:51:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "7fc2c3dcae28347a30ccd76c8817e5719005f1c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "7fc2c3dcae28347a30ccd76c8817e5719005f1c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "9c9709ad-8eec-4b02-97b9-07d925acf52f" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_mem_alloc", "bpf_mem_free", "bpf_mem_cache_alloc", "bpf_mem_cache_free", "htab_map_mem_usage" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX21lbV9hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfbWVtX2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX21lbV9jYWNoZV9hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfbWVtX2NhY2hlX2ZyZWUmIzM0OywKICAgICYjMzQ7aHRhYl9tYXBfbWVtX3VzYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBieSBhbGlnbmluZyB0aGUgc2l6ZSBvZiBsbGlzdF9ub2RlIHRvIDggYnl0ZXMgYW5kIGNvcnJlY3RseSBwbGFjaW5nIHRoZSBwZXJjcHUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBCUEYgbWFwcyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ2MDVjZTgyNGQ3YjM4MTBmYWRhMWE4NGY4MmM1NWMwYmM2MWRmN2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMjo1MDo0MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hhc2h0YWIuYyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jXG5pbmRleCAzZGQ5YjQ5MjRhZTRmYi4uOTAwYzE4NTFkMjY0NWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2hhc2h0YWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oYXNodGFiLmNcbkBAIC0yMzM3LDcgJiM0MzsyMzM3LDcgQEAgc3RhdGljIHU2NCBodGFiX21hcF9tZW1fdXNhZ2UoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcClcbiBcdFx0ZWxzZSBpZiAoIWxydSlcbiBcdFx0XHR1c2FnZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBodGFiX2VsZW0gKikgKiBudW1fcG9zc2libGVfY3B1cygpO1xuIFx0fSBlbHNlIHtcbi0jZGVmaW5lIExMSVNUX05PREVfU1ogc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKVxuJiM0MzsjZGVmaW5lIExMSVNUX05PREVfU1ogQUxJR04oc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKSwgOClcbiBcbiBcdFx0bnVtX2VudHJpZXMgPSBodGFiLVx1MDAzZXVzZV9wZXJjcHVfY291bnRlciA/XG4gXHRcdFx0XHRcdCAgcGVyY3B1X2NvdW50ZXJfc3VtKFx1MDAyNmh0YWItXHUwMDNlcGNvdW50KSA6XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9tZW1hbGxvYy5jIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jXG5pbmRleCBlOTY2MmRiNzE5OGZlMC4uY2E3NTU1YjFkYTM0ZmMgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xuQEAgLTMzLDcgJiM0MzszMyw3IEBAXG4gICogRXZlcnkgYWxsb2NhdGVkIG9iamVjdGVkIGlzIHBhZGRlZCB3aXRoIGV4dHJhIDggYnl0ZXMgdGhhdCBjb250YWluc1xuICAqIHN0cnVjdCBsbGlzdF9ub2RlLlxuICAqL1xuLSNkZWZpbmUgTExJU1RfTk9ERV9TWiBzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpXG4mIzQzOyNkZWZpbmUgTExJU1RfTk9ERV9TWiBBTElHTihzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpLCA4KVxuIFxuICNkZWZpbmUgQlBGX01FTV9BTExPQ19TSVpFX01BWCA0MDk2XG4gXG5AQCAtMTQyLDcgJiM0MzsxNDIsNyBAQCBzdGF0aWMgc3RydWN0IGxsaXN0X25vZGUgbm90cmFjZSAqX19sbGlzdF9kZWxfZmlyc3Qoc3RydWN0IGxsaXN0X2hlYWQgKmhlYWQpXG4gc3RhdGljIHZvaWQgKl9fYWxsb2Moc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBub2RlLCBnZnBfdCBmbGFncylcbiB7XG4gXHRpZiAoYy1cdTAwM2VwZXJjcHVfc2l6ZSkge1xuLVx0XHR2b2lkIF9fcGVyY3B1ICoqb2JqID0ga21hbGxvY19ub2RlKGMtXHUwMDNlcGVyY3B1X3NpemUsIGZsYWdzLCBub2RlKTtcbiYjNDM7XHRcdHZvaWQgKm9iaiA9IGttYWxsb2Nfbm9kZShjLVx1MDAzZXBlcmNwdV9zaXplLCBmbGFncywgbm9kZSk7XG4gXHRcdHZvaWQgX19wZXJjcHUgKnBwdHIgPSBfX2FsbG9jX3BlcmNwdV9nZnAoYy1cdTAwM2V1bml0X3NpemUsIDgsIGZsYWdzKTtcbiBcbiBcdFx0aWYgKCFvYmogfHwgIXBwdHIpIHtcbkBAIC0xNTAsNyAmIzQzOzE1MCw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgbm9kZSwgZ2ZwX3QgZmxhZ3MpXG4gXHRcdFx0a2ZyZWUob2JqKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuLVx0XHRvYmpbMV0gPSBwcHRyO1xuJiM0MztcdFx0Kih2b2lkIF9fcGVyY3B1ICoqKShvYmogJiM0MzsgTExJU1RfTk9ERV9TWikgPSBwcHRyO1xuIFx0XHRyZXR1cm4gb2JqO1xuIFx0fVxuIFxuQEAgLTI1Nyw3ICYjNDM7MjU3LDcgQEAgc3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKVxuIHN0YXRpYyB2b2lkIGZyZWVfb25lKHZvaWQgKm9iaiwgYm9vbCBwZXJjcHUpXG4ge1xuIFx0aWYgKHBlcmNwdSlcbi1cdFx0ZnJlZV9wZXJjcHUoKCh2b2lkIF9fcGVyY3B1ICoqKW9iailbMV0pO1xuJiM0MztcdFx0ZnJlZV9wZXJjcHUoKih2b2lkIF9fcGVyY3B1ICoqKShvYmogJiM0MzsgTExJU1RfTk9ERV9TWikpO1xuIFxuIFx0a2ZyZWUob2JqKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfbWVtX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9tZW1fZnJlZSYjMzQ7LAogICAgJiMzNDticGZfbWVtX2NhY2hlX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9tZW1fY2FjaGVfZnJlZSYjMzQ7LAogICAgJiMzNDtodGFiX21hcF9tZW1fdXNhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IGFsaWduaW5nIHRoZSBzaXplIG9mIGxsaXN0X25vZGUgdG8gOCBieXRlcyBhbmQgY29ycmVjdGx5IHBsYWNpbmcgdGhlIHBlcmNwdSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiBtYXBzIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkNjA1Y2U4MjRkN2IzODEwZmFkYTFhODRmODJjNTVjMGJjNjFkZjdmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTcgMjI6NTA6NDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hhc2h0YWIuYyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jCmluZGV4IDNkZDliNDkyNGFlNGZiLi45MDBjMTg1MWQyNjQ1ZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9oYXNodGFiLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oYXNodGFiLmMKQEAgLTIzMzcsNyAmIzQzOzIzMzcsNyBAQCBzdGF0aWMgdTY0IGh0YWJfbWFwX21lbV91c2FnZShjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwKQogCQllbHNlIGlmICghbHJ1KQogCQkJdXNhZ2UgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgaHRhYl9lbGVtICopICogbnVtX3Bvc3NpYmxlX2NwdXMoKTsKIAl9IGVsc2UgewotI2RlZmluZSBMTElTVF9OT0RFX1NaIHNpemVvZihzdHJ1Y3QgbGxpc3Rfbm9kZSkKJiM0MzsjZGVmaW5lIExMSVNUX05PREVfU1ogQUxJR04oc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKSwgOCkKIAogCQludW1fZW50cmllcyA9IGh0YWItJmd0O3VzZV9wZXJjcHVfY291bnRlciA/CiAJCQkJCSAgcGVyY3B1X2NvdW50ZXJfc3VtKCZhbXA7aHRhYi0mZ3Q7cGNvdW50KSA6CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmMKaW5kZXggZTk2NjJkYjcxOThmZTAuLmNhNzU1NWIxZGEzNGZjIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9tZW1hbGxvYy5jCkBAIC0zMyw3ICYjNDM7MzMsNyBAQAogICogRXZlcnkgYWxsb2NhdGVkIG9iamVjdGVkIGlzIHBhZGRlZCB3aXRoIGV4dHJhIDggYnl0ZXMgdGhhdCBjb250YWlucwogICogc3RydWN0IGxsaXN0X25vZGUuCiAgKi8KLSNkZWZpbmUgTExJU1RfTk9ERV9TWiBzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpCiYjNDM7I2RlZmluZSBMTElTVF9OT0RFX1NaIEFMSUdOKHNpemVvZihzdHJ1Y3QgbGxpc3Rfbm9kZSksIDgpCiAKICNkZWZpbmUgQlBGX01FTV9BTExPQ19TSVpFX01BWCA0MDk2CiAKQEAgLTE0Miw3ICYjNDM7MTQyLDcgQEAgc3RhdGljIHN0cnVjdCBsbGlzdF9ub2RlIG5vdHJhY2UgKl9fbGxpc3RfZGVsX2ZpcnN0KHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKQogc3RhdGljIHZvaWQgKl9fYWxsb2Moc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBub2RlLCBnZnBfdCBmbGFncykKIHsKIAlpZiAoYy0mZ3Q7cGVyY3B1X3NpemUpIHsKLQkJdm9pZCBfX3BlcmNwdSAqKm9iaiA9IGttYWxsb2Nfbm9kZShjLSZndDtwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpOwomIzQzOwkJdm9pZCAqb2JqID0ga21hbGxvY19ub2RlKGMtJmd0O3BlcmNwdV9zaXplLCBmbGFncywgbm9kZSk7CiAJCXZvaWQgX19wZXJjcHUgKnBwdHIgPSBfX2FsbG9jX3BlcmNwdV9nZnAoYy0mZ3Q7dW5pdF9zaXplLCA4LCBmbGFncyk7CiAKIAkJaWYgKCFvYmogfHwgIXBwdHIpIHsKQEAgLTE1MCw3ICYjNDM7MTUwLDcgQEAgc3RhdGljIHZvaWQgKl9fYWxsb2Moc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBub2RlLCBnZnBfdCBmbGFncykKIAkJCWtmcmVlKG9iaik7CiAJCQlyZXR1cm4gTlVMTDsKIAkJfQotCQlvYmpbMV0gPSBwcHRyOwomIzQzOwkJKih2b2lkIF9fcGVyY3B1ICoqKShvYmogJiM0MzsgTExJU1RfTk9ERV9TWikgPSBwcHRyOwogCQlyZXR1cm4gb2JqOwogCX0KIApAQCAtMjU3LDcgJiM0MzsyNTcsNyBAQCBzdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpCiBzdGF0aWMgdm9pZCBmcmVlX29uZSh2b2lkICpvYmosIGJvb2wgcGVyY3B1KQogewogCWlmIChwZXJjcHUpCi0JCWZyZWVfcGVyY3B1KCgodm9pZCBfX3BlcmNwdSAqKilvYmopWzFdKTsKJiM0MzsJCWZyZWVfcGVyY3B1KCoodm9pZCBfX3BlcmNwdSAqKikob2JqICYjNDM7IExMSVNUX05PREVfU1opKTsKIAogCWtmcmVlKG9iaik7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBCUEYgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBga2VybmVsL2JwZi9oYXNodGFiLmNgIGFuZCBga2VybmVsL2JwZi9tZW1hbGxvYy5jYC4gTXkgaW5pdGlhbCBpbnN0aW5jdCB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gYSBmdW5kYW1lbnRhbCBhc3BlY3Qgb2YgQlBGIG1lbW9yeSBtYW5hZ2VtZW50LiBMZXQmIzM5O3MgZGlnIGluLgoKVGhlIGZpcnN0IGNoYW5nZSwgYExMSVNUX05PREVfU1pgIGJlaW5nIGFkanVzdGVkIHRvIGFuIDgtYnl0ZSBhbGlnbmVkIHNpemUsIGluZGljYXRlcyBhIGxpa2VseSBjb25jZXJuIHdpdGggbWVtb3J5IGFsaWdubWVudCB3aXRoaW4gdGhlIGxpbmtlZCBsaXN0IG5vZGUgc3RydWN0dXJlcy4gVGhpcyBjb3VsZCBiZSBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBvciwgbW9yZSBjcml0aWNhbGx5LCBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBwZXItQ1BVIGRhdGEuIEEgbWlzYWxpZ25lZCBhY2Nlc3MgaW4gQlBGIGNvdWxkIGxlYWQgdG8gc2lnbmlmaWNhbnQgcHJvYmxlbXMuCgpUaGUgYGttYWxsb2Nfbm9kZWAgY2hhbmdlcyB3aXRoaW4gYF9fYWxsb2NgIGluIGBtZW1hbGxvYy5jYCBhcmUgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIFdlJiMzOTtyZSBtb3ZpbmcgZnJvbSBhIGB2b2lkIF9fcGVyY3B1ICoqb2JqYCB0byBgdm9pZCAqb2JqYC4gVGhpcyBsb29rcyBsaWtlIGEgY2hhbmdlIHRvIGhvdyB0aGUgcGVyLUNQVSBkYXRhIGlzIGJlaW5nIHN0b3JlZCBhbmQgYWNjZXNzZWQuIFRoZSBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbnMgdG8gaG93IHdlICpzZXQqIGFuZCAqZnJlZSogdGhhdCBkYXRhIChgKih2b2lkIF9fcGVyY3B1ICoqKShvYmogJiM0MzsgTExJU1RfTk9ERV9TWikgPSBwcHRyO2AgYW5kIGBmcmVlX3BlcmNwdSgqKHZvaWQgX19wZXJjcHUgKiopKG9iaiAmIzQzOyBMTElTVF9OT0RFX1NaKSk7YCByZXNwZWN0aXZlbHkpIGNsZWFybHkgc2hvdyBhIHNoaWZ0IGluIG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMuIEl0IGFwcGVhcnMgd2UmIzM5O3JlIG5vdyBzdG9yaW5nIGEgcG9pbnRlciB0byBwZXItQ1BVIGRhdGEgYXQgYW4gb2Zmc2V0LiBUaGlzIHN1Z2dlc3RzIHdlIGFyZSBsaWtlbHkgcGFja2luZyBwZXItQ1BVIGRhdGEgYWxvbmdzaWRlIHRoZSBsaW5rZWQgbGlzdCBub2RlIHN0cnVjdHVyZS4gVGhpcyBjb21wYWN0aW9uIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLgoKVGhpcyByZWVrcyBvZiBhIEJQRiBtZW1vcnkgYWxsb2NhdGlvbiBvcHRpbWl6YXRpb24gb3IsIHBvc3NpYmx5LCBhIGNyaXRpY2FsIGJ1ZyBmaXggcmVsYXRlZCB0byBob3cgcGVyLUNQVSBkYXRhIGlzIGhhbmRsZWQgYW5kIGFsbG9jYXRlZCBpbiB0aGUgQlBGIGNvbnRleHQuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgY291bGQgaGF2ZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggd2FycmFudHMgc2VyaW91cyBhdHRlbnRpb24gZm9yIGZ1enppbmcuIEkmIzM5O2xsIGZsYWcgaXQgYXMgYFdvcnRoRnV6emluZz10cnVlYC4KCkZvciB0aGUgZnV6emluZyB0YXJnZXRzLCB0aGUgYF9fYWxsb2NgLCBgYWxsb2NfYnVsa2AsIGBmcmVlX29uZWAsIGFuZCBgaHRhYl9tYXBfbWVtX3VzYWdlYCBmdW5jdGlvbnMganVtcCBvdXQgYXMgdGhlIGtleSBhcmVhcyB0byBwcm9iZS4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgYW5kIGNsZWFudXAgZnVuY3Rpb25zLgoKRmluYWxseSwgcmVnYXJkaW5nIGNvbmZpZyBvcHRpb25zLCB0aGUgYEJQRl9TWVNDQUxMYCBjb25maWcgaXMgdGhlIHBlcnRpbmVudCBvbmUuIEkgc2hvdWxkIHZlcmlmeSB0aGF0IHRoYXQmIzM5O3MgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzMxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCUEYgTWVtb3J5IEFsbG9jYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyB1c2luZyBgQlBGX1NZU0NBTExgLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGF0JiMzOTtzIHN1ZmZpY2llbnQgZm9yIG15IHB1cnBvc2VzLiBHaXZlbiB0aGUgYXBwbGljYXRpb24mIzM5O3MgcmVsaWFuY2Ugb24gQlBGIG1hcHMsIGl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGlzIGluIHBsYXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbm5lciB3b3JraW5ncyB0byBlbnN1cmUgZWZmaWNpZW50IHJlc291cmNlIG1hbmFnZW1lbnQuCgpNeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIHJlbGV2YW50IHN5bWJvbHMgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGBfX2FsbG9jYCwgYGZyZWVfb25lYCwgYW5kIGBodGFiX21hcF9tZW1fdXNhZ2VgLiBJJiMzOTtsbCB3YW50IHRvIGNoZWNrIGlmIGBfX2FsbG9jYCBhbmQgYGZyZWVfb25lYCBhcmUgc3RhdGljLiBBaCB5ZXMsIHRoZXkmIzM5O3JlIHN0YXRpYyB3aXRoaW4gYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AuIAoKU2luY2UgdGhleSYjMzk7cmUgc3RhdGljLCBJJiMzOTtsbCBuZWVkIHRvIGV4cG9zZSB0aGVpciBmdW5jdGlvbmFsaXR5IHRocm91Z2ggYSB3cmFwcGVyLiBJIHRoaW5rIEkmIzM5O2xsIGFkZCBgYnBmX21lbV9hbGxvY2AsIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgbmFtZWQsIHRoYXQgY2FuIGNhbGwgdGhvc2UgZnVuY3Rpb25zLCBhbGxvd2luZyBjb250cm9sbGVkIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiBteSBzY29wZS4gVGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGxldmVsIG9mIGNvbnRyb2wgSSYjMzk7bSBhZnRlciwgZ2l2ZW4gdGhlIGNvbnN0cmFpbnRzIG9mIHRob3NlIHN0YXRpYyBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvbWVtYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL21lbWFsbG9jLmM9MTMwPXN0YXRpYyBzdHJ1Y3QgbGxpc3Rfbm9kZSBub3RyYWNlICpfX2xsaXN0X2RlbF9maXJzdChzdHJ1Y3QgbGxpc3RfaGVhZCAqaGVhZClcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTQxLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjE0MjpzdGF0aWMgdm9pZCAqX19hbGxvYyhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IG5vZGUsIGdmcF90IGZsYWdzKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTE0My17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTE0NS1cdFx0dm9pZCAqb2JqID0ga21hbGxvY19ub2RlKGMtXHUwMDNlcGVyY3B1X3NpemUsIGZsYWdzLCBub2RlKTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoxNDY6XHRcdHZvaWQgX19wZXJjcHUgKnBwdHIgPSBfX2FsbG9jX3BlcmNwdV9nZnAoYy1cdTAwM2V1bml0X3NpemUsIDgsIGZsYWdzKTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xNDctXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTIwNz1zdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTI0Ny1cdFx0ICovXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MjQ4Olx0XHRvYmogPSBfX2FsbG9jKGMsIG5vZGUsIGdmcCk7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjQ5LVx0XHRpZiAoIW9iailcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9NTAyPWludCBicGZfbWVtX2FsbG9jX2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSwgYm9vbCBwZXJjcHUpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTUxNy1cdGlmIChzaXplKSB7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTE4Olx0XHRwYyA9IF9fYWxsb2NfcGVyY3B1X2dmcChzaXplb2YoKnBjKSwgOCwgR0ZQX0tFUk5FTCk7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNTE5LVx0XHRpZiAoIXBjKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NDQtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTQ1Olx0cGNjID0gX19hbGxvY19wZXJjcHVfZ2ZwKHNpemVvZigqY2MpLCA4LCBHRlBfS0VSTkVMKTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NDYtXHRpZiAoIXBjYylcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9NTcwPWludCBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NzMtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTc0Olx0cGNjID0gX19hbGxvY19wZXJjcHVfZ2ZwKHNpemVvZihzdHJ1Y3QgYnBmX21lbV9jYWNoZXMpLCA4LCBHRlBfS0VSTkVMKTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NzUtXHRpZiAoIXBjYylcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9OTc5PXZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGdmcF90IGZsYWdzKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05OTEtXHRcdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk5MjpcdFx0cmV0ID0gX19hbGxvYyhjLCBOVU1BX05PX05PREUsIEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9BQ0NPVU5UKTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05OTMtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUyMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6CgoqKk1lbW9yeSBBbGxvY2F0aW9uIGFuZCBEZWFsbG9jYXRpb24gaW4gdGhlIEJQRiBTdWJzeXN0ZW0qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgYnBmX21lbV9jYWNoZV9hbGxvY19mbGFnc2Agc2VlbXMgdG8gYmUgb3VyIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IHdpdGggc3BlY2lmaWMgZmxhZ3MuIEl0LCBhbmQgbGlrZWx5IG90aGVyIEJQRi1yZWxhdGVkIGFsbG9jYXRpb24gcGF0aHdheXMsIGV2ZW50dWFsbHkgZnVubmVsIGRvd24gdG8gdGhpcyBgX19hbGxvY2AgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIGNvcmUgYWxsb2NhdGlvbiBwcmltaXRpdmUsIHRoZSB3b3JraG9yc2UuIEludGVyZXN0aW5nLgoKQW5kLCBpZiBJJiMzOTttIGludGVycHJldGluZyB0aGlzIGNvcnJlY3RseSwgYGFsbG9jX2J1bGtgIGFsc28gdXNlcyBgX19hbGxvY2AuIFRoaXMgc3VnZ2VzdHMgdGhlcmUmIzM5O3Mgc29tZSBzaGFyZWQgdW5kZXJseWluZyBtZWNoYW5pc20gZm9yIGJvdGggc2luZ2xlIGFsbG9jYXRpb25zIGFuZCBidWxrIGFsbG9jYXRpb25zLiBUaGlzIGlzIHNlbnNpYmxlLCBpdCBtaW5pbWl6ZXMgY29kZSBkdXBsaWNhdGlvbiBhbmQgbGlrZWx5IG9wdGltaXplcyBmb3IgY29tbW9uIHVuZGVybHlpbmcgaGFyZHdhcmUgYmVoYXZpb3IuCgpPbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgY29pbiwgYGZyZWVfb25lYCBpcyBjcml0aWNhbCBmb3IgcmVsZWFzaW5nIHRoZSBtZW1vcnksIGFuZCBpdCBsb29rcyBsaWtlIGl0IGdldHMgY2FsbGVkIGZyb20gdHdvIGRpc3RpbmN0IHBsYWNlczogYGZyZWVfYnVsa2AsIHdoaWNoIGhhbmRsZXMgcmVsZWFzaW5nIGNodW5rcyBhbGxvY2F0ZWQgaW4gYnVsaywgYW5kIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgLiBUaGUgbGF0dGVyIGxpa2VseSBoYW5kbGVzIGZyZWVpbmcgbWVtb3J5IHRoYXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGFzc29jaWF0ZWQgd2l0aCBCUEYgYWxsb2NhdGlvbiBzdHJ1Y3R1cmVzIHdoZW4gdGhvc2Ugc3RydWN0dXJlcyB0aGVtc2VsdmVzIGFyZSBkZXN0cm95ZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgY2xlYW5lZCB1cCB3aGVuIHRoZSBCUEYgbWVtb3J5IG1hbmFnZXIgaXMgc2h1dCBkb3duLiBUaGUgY29tbW9uYWxpdHkgd2l0aCBgZnJlZV9idWxrYCBzdWdnZXN0cyB0aGF0IHRoZSBzaW5nbGUtb2JqZWN0IGZyZWVpbmcgc3RyYXRlZ3kgYW5kIGJ1bGsgZnJlZWluZyBzaGFyZSBrZXkgZWxlbWVudHMsIGFnYWluIGltcHJvdmluZyBlZmZpY2llbmN5LgoKT2theSwgc28gdGhlIGZsb3cgaXM6IEFsbG9jYXRpb24gY2FsbHMgbGVhZCB0byBgX19hbGxvY2AuIEZyZWVpbmcgaGFwcGVucyB2aWEgYGZyZWVfb25lYCwgY2FsbGVkIGJ5IGBmcmVlX2J1bGtgIGFuZCBhIGRlc3RydWN0b3IsIHdoaWNoIG1hbmFnZXMgZnJlZWluZyB0aGUgbWVtb3J5LiBHb3QgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnJlZV9vbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL21lbWFsbG9jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9tZW1hbGxvYy5jPTIwNz1zdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTI1Ni1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoyNTc6c3RhdGljIHZvaWQgZnJlZV9vbmUodm9pZCAqb2JqLCBib29sIHBlcmNwdSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0yNTgte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz0yNjU9c3RhdGljIGludCBmcmVlX2FsbChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgc3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZSwgYm9vbCBwZXJjcHUpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTI3Mi1cdFx0XHRjLVx1MDAzZWR0b3IoKHZvaWQgKilwb3MgJiM0MzsgTExJU1RfTk9ERV9TWiwgYy1cdTAwM2VkdG9yX2N0eCk7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MjczOlx0XHRmcmVlX29uZShwb3MsIHBlcmNwdSk7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjc0LVx0XHRjbnQmIzQzOyYjNDM7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxODcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgUkNVOgoKKipEaWdnaW5nIGludG8gdGhlIE1lbW9yeSBSZWNsYW1hdGlvbiBGbG93KioKCkFscmlnaHQsIHNvIGBmcmVlX2FsbGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgdWx0aW1hdGVseSByZXNwb25zaWJsZSBmb3IgY2xlYW5pbmcgdXAgYSBidW5jaCBvZiBtZW1vcnkgYmxvY2tzLCBhbmQgSSBzZWUgaXQmIzM5O3MgY2FsbGluZyBgZnJlZV9vbmVgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBwYXR0ZXJuIC0gYGZyZWVfYWxsYCBsaWtlbHkgaXRlcmF0ZXMgdGhyb3VnaCBhIGxpc3Qgb3Igc3RydWN0dXJlLCBhbmQgZm9yIGVhY2ggaW5kaXZpZHVhbCBlbGVtZW50LCBpdCBjYWxscyBgZnJlZV9vbmVgIHRvIGRvIHRoZSBhY3R1YWwgbWVtb3J5IGRlYWxsb2NhdGlvbi4gTWFrZXMgcGVyZmVjdCBzZW5zZS4KClRoZW4gSSBzZWUgdGhhdCBgX19mcmVlX3JjdWAgaXMgdGhlIG9uZSBjYWxsaW5nIGBmcmVlX2FsbGAuIFRoYXQgdGVsbHMgbWUgd2UgYXJlIGRlYWxpbmcgd2l0aCBSQ1UsIHNvIHRoZXNlIGZyZWVzIGFyZSBsaWtlbHkgYmVpbmcgZG9uZSBpbiBhIGRlZmVycmVkIG1hbm5lciwgZW5zdXJpbmcgc2FmZXR5IGR1cmluZyBjb25jdXJyZW50IHJlYWQgb3BlcmF0aW9ucy4gT2theSwgdGhhdCYjMzk7cyBpbXBvcnRhbnQgY29udGV4dC4gVGhpcyB3aG9sZSBmbG93IGlzIGNsZWFybHkgdGllZCB0byBSQ1UtYmFzZWQgcmVjbGFtYXRpb24uIE5vdywgd2hlcmUgYXJlIHRoZSBtZW1vcnkgdXNhZ2Ugc3RhdHM/IFRpbWUgdG8gY2hlY2sgYGh0YWJfbWFwX21lbV91c2FnZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmFjayBvciBhY2NvdW50IGZvciB3aGF0ZXZlciBpcyBiZWluZyBmcmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHRhYl9tYXBfbWVtX3VzYWdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oYXNodGFiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oYXNodGFiLmM9MjI2Mz1zdGF0aWMgbG9uZyBicGZfZm9yX2VhY2hfaGFzaF9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIGJwZl9jYWxsYmFja190IGNhbGxiYWNrX2ZuLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzMTUtXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyMzE2OnN0YXRpYyB1NjQgaHRhYl9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzE3LXtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yMzU1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjM3MC1cdC5tYXBfY2hlY2tfYnRmID0gaHRhYl9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjM3MTpcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjM3Mi1cdEJBVENIX09QUyhodGFiKSxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yMzc3PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX2xydV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzOTMtXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0Zixcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjIzOTQ6XHQubWFwX21lbV91c2FnZSA9IGh0YWJfbWFwX21lbV91c2FnZSxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzOTUtXHRCQVRDSF9PUFMoaHRhYl9scnUpLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI1NTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfcGVyY3B1X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU3My1cdC5tYXBfY2hlY2tfYnRmID0gaHRhYl9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU3NDpcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU3NS1cdEJBVENIX09QUyhodGFiX3BlcmNwdSksXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU4MD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfcGVyY3B1X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5NC1cdC5tYXBfY2hlY2tfYnRmID0gaHRhYl9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU5NTpcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5Ni1cdEJBVENIX09QUyhodGFiX2xydV9wZXJjcHUpLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI3MjY9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfb2ZfbWFwc19tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3MzctXHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNzM4Olx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNzM5LVx0QkFUQ0hfT1BTKGh0YWIpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjk0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBNZW1vcnkgQWxsb2NhdGlvbiBpbiB0aGUgQlBGIFN1YnN5c3RlbSoqCgpBbHJpZ2h0LCBzbyBgaHRhYl9tYXBfbWVtX3VzYWdlYCDigJMgdGhhdCYjMzk7cyBhIG1hcCBvcGVyYXRpb24sIHVuZGVyc3Rvb2QuIE15IG1pbmQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBzb21ldGhpbmcgdGhhdCYjMzk7cyBsaWtlbHkgY29udHJpYnV0aW5nIHRvIG1lbW9yeSB1c2FnZSB3aXRoaW4gdGhlIEJQRiBjb250ZXh0LiBOb3csIEkgc2VlIGBicGZfbWVtX2NhY2hlX2FsbG9jX2ZsYWdzYCBtZW50aW9uZWQuIEFoLCBpdCYjMzk7cyBjYWxsZWQgYnkgYm90aCBgYnBmX21lbV9jYWNoZV9hbGxvY2AgYW5kIGBicGZfbWVtX2FsbG9jYC4gVGhhdCB0ZWxscyBtZSBpdCYjMzk7cyBjZW50cmFsIHRvIGhvdyBtZW1vcnkgaXMgcmVxdWVzdGVkIHdpdGhpbiB0aGUgQlBGIHN1YnN5c3RlbSwgc2luY2UgaXQgaXMgYSBjb21tb24gZmFjdG9yIHRvIHRob3NlIHR3byBhbGxvY2F0b3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gTGV0JiMzOTtzIGRlbHZlIGludG8gYGJwZl9tZW1fY2FjaGVfYWxsb2NgIGZpcnN0IHRvIGdhaW4gc29tZSBpbnNpZ2h0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNhY2hlIGFsbG9jYXRpb24gb3BlcmF0ZXMsIHNpbmNlIHRoYXQmIzM5O3Mgd2hlcmUgYGJwZl9tZW1fY2FjaGVfYWxsb2NfZmxhZ3NgIGNvbWVzIGluLiBUaGF0IHNob3VsZCBwcm92aWRlIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGVzZSBmbGFncyBvbiBvdmVyYWxsIG1lbW9yeSBjb25zdW1wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX21lbV9jYWNoZV9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvbWVtYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL21lbWFsbG9jLmM9NDM4PXN0YXRpYyB2b2lkIG5vdHJhY2UgaXJxX3dvcmtfcmFpc2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTQ0Mi1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo0NDM6LyogRm9yIHR5cGljYWwgYnBmIG1hcCBjYXNlIHRoYXQgdXNlcyBicGZfbWVtX2NhY2hlX2FsbG9jIGFuZCBzaW5nbGUgYnVja2V0XG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNDQ0LSAqIHRoZSBmcmVlbGlzdCBjYWNoZSB3aWxsIGJlIGVsZW1fc2l6ZSAqIDY0IChvciBsZXNzKSBvbiBlYWNoIGNwdS5cbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9OTE3PXZvaWQgbm90cmFjZSBicGZfbWVtX2ZyZWVfcmN1KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgdm9pZCAqcHRyKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MzItXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTMzOnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTM0LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9OTY3PXZvaWQgYnBmX21lbV9jYWNoZV9yYXdfZnJlZSh2b2lkICpwdHIpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk3NS0vKiBXaGVuIGZsYWdzID09IEdGUF9LRVJORUwsIGl0IHNpZ25hbHMgdGhhdCB0aGUgY2FsbGVyIHdpbGwgbm90IGNhdXNlXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTc2OiAqIGRlYWRsb2NrIHdoZW4gdXNpbmcga21hbGxvYy4gYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncygpIHdpbGwgdXNlXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTc3LSAqIGttYWxsb2MgaWYgdGhlIGZyZWVfbGxpc3QgaXMgZW1wdHkuXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTc4LSAqL1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk3OTp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fY2FjaGVfYWxsb2NfZmxhZ3Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBnZnBfdCBmbGFncylcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05ODAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDczCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgQlBGIE1lbW9yeSBBbGxvY2F0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYGJwZl9tZW1fY2FjaGVfYWxsb2NgIGFuZCBgYnBmX21lbV9jYWNoZV9hbGxvY19mbGFnc2AgYXJlIGJlaW5nIHVzZWQgb3IgZXhwb3J0ZWQsIHdoaWNoIG1lYW5zIG90aGVyIEJQRiBjb2RlIHJlbGllcyBvbiB0aGVtLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdywgYW5kIGl0JiMzOTtzIGEga2V5IHBvaW50LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIsIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlc2Ugc3BlY2lmaWMgYWxsb2NhdGlvbiBmdW5jdGlvbnMgdG8gdGhlIGJhc2UuIExldCYjMzk7cyBkaWcgaW50byBgYnBmX21lbV9hbGxvY2AgYW5kIHNlZSBob3cgaXQgaXMgdGllZCB0byB0aGVzZSBjYWNoZSBhbGxvY2F0b3JzLCBzbyB0aGF0IEkgaGF2ZSB0aGUgY29tcGxldGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX21lbV9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvbWVtYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL21lbWFsbG9jLmMtNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFfd29yay5oXHUwMDNlXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzojaW5jbHVkZSBcdTAwM2NsaW51eC9icGZfbWVtX2FsbG9jLmhcdTAwM2Vcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy04LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21lbWNvbnRyb2wuaFx1MDAzZVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz00ODE9c3RhdGljIHZvaWQgcHJlZmlsbF9tZW1fY2FjaGUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjcHUpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTUwMS0gKi9cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo1MDI6aW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MDMte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NjktXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTcwOmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU3MS17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU4My1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo1ODQ6aW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU4NS17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTY0MD1zdGF0aWMgdm9pZCBjaGVja19tZW1fY2FjaGUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTY1MC1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo2NTE6c3RhdGljIHZvaWQgY2hlY2tfbGVha2VkX29ianMoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTY1Mi17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTY3My1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo2NzQ6c3RhdGljIHZvaWQgZnJlZV9tZW1fYWxsb2Nfbm9fYmFycmllcihzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNjc1LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNjg1LVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjY4NjpzdGF0aWMgdm9pZCBmcmVlX21lbV9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNjg3LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9NzAzPXN0YXRpYyB2b2lkIGZyZWVfbWVtX2FsbG9jX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03MDQte1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjcwNTpcdHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYnBmX21lbV9hbGxvYywgd29yayk7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzA2LVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03MTAtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzExOnN0YXRpYyB2b2lkIGRlc3Ryb3lfbWVtX2FsbG9jKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHJjdV9pbl9wcm9ncmVzcylcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03MTIte1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjcxMzpcdHN0cnVjdCBicGZfbWVtX2FsbG9jICpjb3B5O1xua2VybmVsL2JwZi9tZW1hbGxvYy5jLTcxNC1cbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzM1LVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjczNjp2b2lkIGJwZl9tZW1fYWxsb2NfZGVzdHJveShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzM3LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9Nzc2PXN0YXRpYyB2b2lkIG5vdHJhY2UgKnVuaXRfYWxsb2Moc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTc4My1cdCAqIHByb2dfQVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjc4NDpcdCAqICAgYnBmX21lbV9hbGxvY1xua2VybmVsL2JwZi9tZW1hbGxvYy5jLTc4NS1cdCAqICAgICAgcHJlZW1wdGlvbiBvciBpcnEgLVx1MDAzZSBwcm9nX0Jcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo3ODY6XHQgKiAgICAgICAgYnBmX21lbV9hbGxvY1xua2VybmVsL2JwZi9tZW1hbGxvYy5jLTc4Ny1cdCAqXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTg1OT1zdGF0aWMgdm9pZCBub3RyYWNlIHVuaXRfZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHZvaWQgKnB0cilcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtODgyLSAqL1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjg4Mzp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBzaXplX3Qgc2l6ZSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy04ODQte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MDAtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTAxOnZvaWQgbm90cmFjZSBicGZfbWVtX2ZyZWUoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTAyLXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTE2LVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjkxNzp2b2lkIG5vdHJhY2UgYnBmX21lbV9mcmVlX3JjdShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MTgte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MzItXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTMzOnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTM0LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTQwLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk0MTp2b2lkIG5vdHJhY2UgYnBmX21lbV9jYWNoZV9mcmVlKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgdm9pZCAqcHRyKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk0Mi17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk0OC1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5NDk6dm9pZCBub3RyYWNlIGJwZl9tZW1fY2FjaGVfZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTUwLXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTYxLSAqIEl0IGNvdWxkIGJlIHVzZWQgd2hlbiB0aGUgcmN1X3Rhc2tzX3RyYWNlIGNhbGxiYWNrIGRvZXMgbm90IGhhdmVcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5NjI6ICogYSBob2xkIG9uIHRoZSBvcmlnaW5hbCBicGZfbWVtX2FsbG9jIG9iamVjdCB0aGF0IGFsbG9jYXRlZCB0aGVcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NjMtICogJiMzOTtwdHImIzM5Oy4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoZSB1bmNvbW1vbiBjb2RlIHBhdGguXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTY0OiAqIE90aGVyd2lzZSwgdGhlIGJwZl9tZW1fYWxsb2MmIzM5O3MgZnJlZV9sbGlzdCBjYW5ub3QgYmUgcmVmaWxsZWRcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NjUtICogYW5kIG1heSBhZmZlY3QgcGVyZm9ybWFuY2UuXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTk2Nz12b2lkIGJwZl9tZW1fY2FjaGVfcmF3X2ZyZWUodm9pZCAqcHRyKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NzgtICovXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTc5OnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGdmcF90IGZsYWdzKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk4MC17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMDEtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MTAwMjppbnQgYnBmX21lbV9hbGxvY19jaGVja19zaXplKGJvb2wgcGVyY3B1LCBzaXplX3Qgc2l6ZSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xMDAzLXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTAxMS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoxMDEyOnZvaWQgYnBmX21lbV9hbGxvY19zZXRfZHRvcihzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKCpkdG9yKSh2b2lkICpvYmosIHZvaWQgKmN0eCksXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTAxMy1cdFx0XHQgICAgdm9pZCAoKmR0b3JfY3R4X2ZyZWUpKHZvaWQgKmN0eCksIHZvaWQgKmN0eClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI0MQoJCQkJCQkJb3V0cHV0OiAxMzUKCQkJCQkJCXRob3VnaHRzOiA1NTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFkZCBhIGZldyBrZXkgZnVuY3Rpb25zIHRvIGBGb2N1c1N5bWJvbHNgLiBTcGVjaWZpY2FsbHksIGBicGZfbWVtX2FsbG9jYCwgYGJwZl9tZW1fZnJlZWAsIGBicGZfbWVtX2NhY2hlX2FsbG9jYCwgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIGFuZCBgaHRhYl9tYXBfbWVtX3VzYWdlYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIHRob3NlIHN5bWJvbHMgd2lsbCBiZSBpbXBvcnRhbnQgZm9yIGZvY3VzZWQgZnV6emluZy4KCk5leHQsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYEJQRl9TWVNDQUxMYCBpcyB0aGUgb25seSBjb25maWcgZW5hYmxpbmcgQlBGLiBZZXMsIGEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBCUEYgaXMgc29sZWx5IGRlcGVuZGVudCBvbiBgQlBGX1NZU0NBTExgIGJlaW5nIHNldC4gR29vZC4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGF0Y2ggaXRzZWxmLiBJIHNlZSBhIGNoYW5nZSB0byB0aGUgYExMSVNUX05PREVfU1pgIGRlZmluaXRpb246CgpgYGBjCi0jZGVmaW5lIExMSVNUX05PREVfU1ogc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKQomIzQzOyNkZWZpbmUgTExJU1RfTk9ERV9TWiBBTElHTihzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpLCA4KQpgYGAKCkFoLCBhbGlnbmluZyB0aGUgYHN0cnVjdCBsbGlzdF9ub2RlYCBzaXplIHRvIDggYnl0ZXMuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIHNvIGxldCYjMzk7cyBjaGVjayBob3cgaXQmIzM5O3MgdXNlZC4gTG9va2luZyBmdXJ0aGVyIGRvd24gaW4gdGhlIHBhdGNoLCBJIHNlZSB0aGlzIGluIHRoZSBgX19hbGxvY2AgZnVuY3Rpb246CgpgYGBjCi0JCXZvaWQgX19wZXJjcHUgKipvYmogPSBrbWFsbG9jX25vZGUoYy0mZ3Q7cGVyY3B1X3NpemUsIGZsYWdzLCBub2RlKTsKJiM0MzsJCXZvaWQgKm9iaiA9IGttYWxsb2Nfbm9kZShjLSZndDtwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpOwogCQl2b2lkIF9fcGVyY3B1ICpwcHRyID0gX19hbGxvY19wZXJjcHVfZ2ZwKGMtJmd0O3VuaXRfc2l6ZSwgOCwgZmxhZ3MpOwogCiAJCWlmICghb2JqIHx8ICFwcHRyKSB7CkBAIC0xNTAsNyAmIzQzOzE1MCw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgbm9kZSwgZ2ZwX3QgZmxhZ3MpCiAJCQlrZnJlZShvYmopOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KLQkJb2JqWzFdID0gcHB0cjsKJiM0MzsJCSoodm9pZCBfX3BlcmNwdSAqKikob2JqICYjNDM7IExMSVNUX05PREVfU1opID0gcHB0cjsKIAkJcmV0dXJuIG9iajsKYGBgCgpPa2F5LCB0aGUgY29kZSBub3cgY29ycmVjdGx5IHBsYWNlcyB0aGUgcGVyY3B1IHBvaW50ZXIgYWZ0ZXIgdGhlIGFsaWduZWQgYGxsaXN0X25vZGVgLiBUaGUgb3JpZ2luYWwgYG9ialsxXWAgbGlrZWx5IGhhZCBhIGJ1ZywgYmVjYXVzZSBpdCBhc3N1bWVkIHRoZSBzaXplIG9mIGBzdHJ1Y3QgbGxpc3Rfbm9kZWAgd2FzIGEgbXVsdGlwbGUgb2YgOC4gVGhhdCBtaWdodCBub3QgYmUgdHJ1ZSwgZXNwZWNpYWxseSBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYW5kIHRoaXMgcGF0Y2ggZml4ZXMgdGhhdC4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGNsZWFybHkgZml4ZXMgYSBidWcgYWZmZWN0aW5nIEJQRiBtYXBzLiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPXRydWVgLgoKKiAgICoqRm9jdXNTeW1ib2xzOioqIGBicGZfbWVtX2FsbG9jYCwgYGJwZl9tZW1fZnJlZWAsIGBicGZfbWVtX2NhY2hlX2FsbG9jYCwgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIGBodGFiX21hcF9tZW1fdXNhZ2VgLgoqICAgKipFbmFibGVDb25maWdzOioqIGBCUEZfU1lTQ0FMTGAuCiogICAqKlJlYXNvbmluZzoqKiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBCUEYgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMgYnkgYWxpZ25pbmcgdGhlIHNpemUgb2YgbGxpc3Rfbm9kZSB0byA4IGJ5dGVzIGFuZCBjb3JyZWN0bHkgcGxhY2luZyB0aGUgcGVyY3B1IHBvaW50ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgQlBGIG1hcHMuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX21lbV9hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfbWVtX2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX21lbV9jYWNoZV9hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfbWVtX2NhY2hlX2ZyZWUmIzM0OywKICAgICYjMzQ7aHRhYl9tYXBfbWVtX3VzYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBieSBhbGlnbmluZyB0aGUgc2l6ZSBvZiBsbGlzdF9ub2RlIHRvIDggYnl0ZXMgYW5kIGNvcnJlY3RseSBwbGFjaW5nIHRoZSBwZXJjcHUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBCUEYgbWFwcyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfbWVtX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9tZW1fZnJlZSYjMzQ7LAogICAgJiMzNDticGZfbWVtX2NhY2hlX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9tZW1fY2FjaGVfZnJlZSYjMzQ7LAogICAgJiMzNDtodGFiX21hcF9tZW1fdXNhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IGFsaWduaW5nIHRoZSBzaXplIG9mIGxsaXN0X25vZGUgdG8gOCBieXRlcyBhbmQgY29ycmVjdGx5IHBsYWNpbmcgdGhlIHBlcmNwdSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiBtYXBzIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTA6NDQuNzY4NjU2MzQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2MDU0MDExMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfbWVtX2FsbG9jXCIsXG4gICAgXCJicGZfbWVtX2ZyZWVcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfYWxsb2NcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfZnJlZVwiLFxuICAgIFwiaHRhYl9tYXBfbWVtX3VzYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IGFsaWduaW5nIHRoZSBzaXplIG9mIGxsaXN0X25vZGUgdG8gOCBieXRlcyBhbmQgY29ycmVjdGx5IHBsYWNpbmcgdGhlIHBlcmNwdSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiBtYXBzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MDo0NC43Njg2NjI3NTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTY4NTgxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ2MDVjZTgyNGQ3YjM4MTBmYWRhMWE4NGY4MmM1NWMwYmM2MWRmN2ZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMjI6NTA6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oYXNodGFiLmMgYi9rZXJuZWwvYnBmL2hhc2h0YWIuY1xcbmluZGV4IDNkZDliNDkyNGFlNGZiLi45MDBjMTg1MWQyNjQ1ZCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2hhc2h0YWIuY1xcbisrKyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jXFxuQEAgLTIzMzcsNyArMjMzNyw3IEBAIHN0YXRpYyB1NjQgaHRhYl9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXFxuIFxcdFxcdGVsc2UgaWYgKCFscnUpXFxuIFxcdFxcdFxcdHVzYWdlICs9IHNpemVvZihzdHJ1Y3QgaHRhYl9lbGVtICopICogbnVtX3Bvc3NpYmxlX2NwdXMoKTtcXG4gXFx0fSBlbHNlIHtcXG4tI2RlZmluZSBMTElTVF9OT0RFX1NaIHNpemVvZihzdHJ1Y3QgbGxpc3Rfbm9kZSlcXG4rI2RlZmluZSBMTElTVF9OT0RFX1NaIEFMSUdOKHNpemVvZihzdHJ1Y3QgbGxpc3Rfbm9kZSksIDgpXFxuIFxcbiBcXHRcXHRudW1fZW50cmllcyA9IGh0YWItXFx1MDAzZXVzZV9wZXJjcHVfY291bnRlciA/XFxuIFxcdFxcdFxcdFxcdFxcdCAgcGVyY3B1X2NvdW50ZXJfc3VtKFxcdTAwMjZodGFiLVxcdTAwM2VwY291bnQpIDpcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9tZW1hbGxvYy5jIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jXFxuaW5kZXggZTk2NjJkYjcxOThmZTAuLmNhNzU1NWIxZGEzNGZjIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xcbisrKyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xcbkBAIC0zMyw3ICszMyw3IEBAXFxuICAqIEV2ZXJ5IGFsbG9jYXRlZCBvYmplY3RlZCBpcyBwYWRkZWQgd2l0aCBleHRyYSA4IGJ5dGVzIHRoYXQgY29udGFpbnNcXG4gICogc3RydWN0IGxsaXN0X25vZGUuXFxuICAqL1xcbi0jZGVmaW5lIExMSVNUX05PREVfU1ogc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKVxcbisjZGVmaW5lIExMSVNUX05PREVfU1ogQUxJR04oc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKSwgOClcXG4gXFxuICNkZWZpbmUgQlBGX01FTV9BTExPQ19TSVpFX01BWCA0MDk2XFxuIFxcbkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIHN0cnVjdCBsbGlzdF9ub2RlIG5vdHJhY2UgKl9fbGxpc3RfZGVsX2ZpcnN0KHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKVxcbiBzdGF0aWMgdm9pZCAqX19hbGxvYyhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IG5vZGUsIGdmcF90IGZsYWdzKVxcbiB7XFxuIFxcdGlmIChjLVxcdTAwM2VwZXJjcHVfc2l6ZSkge1xcbi1cXHRcXHR2b2lkIF9fcGVyY3B1ICoqb2JqID0ga21hbGxvY19ub2RlKGMtXFx1MDAzZXBlcmNwdV9zaXplLCBmbGFncywgbm9kZSk7XFxuK1xcdFxcdHZvaWQgKm9iaiA9IGttYWxsb2Nfbm9kZShjLVxcdTAwM2VwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpO1xcbiBcXHRcXHR2b2lkIF9fcGVyY3B1ICpwcHRyID0gX19hbGxvY19wZXJjcHVfZ2ZwKGMtXFx1MDAzZXVuaXRfc2l6ZSwgOCwgZmxhZ3MpO1xcbiBcXG4gXFx0XFx0aWYgKCFvYmogfHwgIXBwdHIpIHtcXG5AQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgbm9kZSwgZ2ZwX3QgZmxhZ3MpXFxuIFxcdFxcdFxcdGtmcmVlKG9iaik7XFxuIFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHRcXHR9XFxuLVxcdFxcdG9ialsxXSA9IHBwdHI7XFxuK1xcdFxcdCoodm9pZCBfX3BlcmNwdSAqKikob2JqICsgTExJU1RfTk9ERV9TWikgPSBwcHRyO1xcbiBcXHRcXHRyZXR1cm4gb2JqO1xcbiBcXHR9XFxuIFxcbkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKVxcbiBzdGF0aWMgdm9pZCBmcmVlX29uZSh2b2lkICpvYmosIGJvb2wgcGVyY3B1KVxcbiB7XFxuIFxcdGlmIChwZXJjcHUpXFxuLVxcdFxcdGZyZWVfcGVyY3B1KCgodm9pZCBfX3BlcmNwdSAqKilvYmopWzFdKTtcXG4rXFx0XFx0ZnJlZV9wZXJjcHUoKih2b2lkIF9fcGVyY3B1ICoqKShvYmogKyBMTElTVF9OT0RFX1NaKSk7XFxuIFxcbiBcXHRrZnJlZShvYmopO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjQ1LjIwNTAzMTcxNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxNjkwMTY3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfbWVtX2FsbG9jXCIsXG4gICAgXCJicGZfbWVtX2ZyZWVcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfYWxsb2NcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfZnJlZVwiLFxuICAgIFwiaHRhYl9tYXBfbWVtX3VzYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IGFsaWduaW5nIHRoZSBzaXplIG9mIGxsaXN0X25vZGUgdG8gOCBieXRlcyBhbmQgY29ycmVjdGx5IHBsYWNpbmcgdGhlIHBlcmNwdSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiBtYXBzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ2MDVjZTgyNGQ3YjM4MTBmYWRhMWE4NGY4MmM1NWMwYmM2MWRmN2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMjo1MDo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGFzaHRhYi5jIGIva2VybmVsL2JwZi9oYXNodGFiLmNcbmluZGV4IDNkZDliNDkyNGFlNGZiLi45MDBjMTg1MWQyNjQ1ZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvaGFzaHRhYi5jXG4rKysgYi9rZXJuZWwvYnBmL2hhc2h0YWIuY1xuQEAgLTIzMzcsNyArMjMzNyw3IEBAIHN0YXRpYyB1NjQgaHRhYl9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXG4gXHRcdGVsc2UgaWYgKCFscnUpXG4gXHRcdFx0dXNhZ2UgKz0gc2l6ZW9mKHN0cnVjdCBodGFiX2VsZW0gKikgKiBudW1fcG9zc2libGVfY3B1cygpO1xuIFx0fSBlbHNlIHtcbi0jZGVmaW5lIExMSVNUX05PREVfU1ogc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKVxuKyNkZWZpbmUgTExJU1RfTk9ERV9TWiBBTElHTihzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpLCA4KVxuIFxuIFx0XHRudW1fZW50cmllcyA9IGh0YWItXHUwMDNldXNlX3BlcmNwdV9jb3VudGVyID9cbiBcdFx0XHRcdFx0ICBwZXJjcHVfY291bnRlcl9zdW0oXHUwMDI2aHRhYi1cdTAwM2VwY291bnQpIDpcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbmluZGV4IGU5NjYyZGI3MTk4ZmUwLi5jYTc1NTViMWRhMzRmYyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xuKysrIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jXG5AQCAtMzMsNyArMzMsNyBAQFxuICAqIEV2ZXJ5IGFsbG9jYXRlZCBvYmplY3RlZCBpcyBwYWRkZWQgd2l0aCBleHRyYSA4IGJ5dGVzIHRoYXQgY29udGFpbnNcbiAgKiBzdHJ1Y3QgbGxpc3Rfbm9kZS5cbiAgKi9cbi0jZGVmaW5lIExMSVNUX05PREVfU1ogc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKVxuKyNkZWZpbmUgTExJU1RfTk9ERV9TWiBBTElHTihzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpLCA4KVxuIFxuICNkZWZpbmUgQlBGX01FTV9BTExPQ19TSVpFX01BWCA0MDk2XG4gXG5AQCAtMTQyLDcgKzE0Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgbGxpc3Rfbm9kZSBub3RyYWNlICpfX2xsaXN0X2RlbF9maXJzdChzdHJ1Y3QgbGxpc3RfaGVhZCAqaGVhZClcbiBzdGF0aWMgdm9pZCAqX19hbGxvYyhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IG5vZGUsIGdmcF90IGZsYWdzKVxuIHtcbiBcdGlmIChjLVx1MDAzZXBlcmNwdV9zaXplKSB7XG4tXHRcdHZvaWQgX19wZXJjcHUgKipvYmogPSBrbWFsbG9jX25vZGUoYy1cdTAwM2VwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuK1x0XHR2b2lkICpvYmogPSBrbWFsbG9jX25vZGUoYy1cdTAwM2VwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuIFx0XHR2b2lkIF9fcGVyY3B1ICpwcHRyID0gX19hbGxvY19wZXJjcHVfZ2ZwKGMtXHUwMDNldW5pdF9zaXplLCA4LCBmbGFncyk7XG4gXG4gXHRcdGlmICghb2JqIHx8ICFwcHRyKSB7XG5AQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgbm9kZSwgZ2ZwX3QgZmxhZ3MpXG4gXHRcdFx0a2ZyZWUob2JqKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuLVx0XHRvYmpbMV0gPSBwcHRyO1xuK1x0XHQqKHZvaWQgX19wZXJjcHUgKiopKG9iaiArIExMSVNUX05PREVfU1opID0gcHB0cjtcbiBcdFx0cmV0dXJuIG9iajtcbiBcdH1cbiBcbkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKVxuIHN0YXRpYyB2b2lkIGZyZWVfb25lKHZvaWQgKm9iaiwgYm9vbCBwZXJjcHUpXG4ge1xuIFx0aWYgKHBlcmNwdSlcbi1cdFx0ZnJlZV9wZXJjcHUoKCh2b2lkIF9fcGVyY3B1ICoqKW9iailbMV0pO1xuK1x0XHRmcmVlX3BlcmNwdSgqKHZvaWQgX19wZXJjcHUgKiopKG9iaiArIExMSVNUX05PREVfU1opKTtcbiBcbiBcdGtmcmVlKG9iaik7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTA6NDUuMjA1MDM0MjY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg5NjkxMjE3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIEJQRiBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGtlcm5lbC9icGYvaGFzaHRhYi5jYCBhbmQgYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AuIE15IGluaXRpYWwgaW5zdGluY3QgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIGEgZnVuZGFtZW50YWwgYXNwZWN0IG9mIEJQRiBtZW1vcnkgbWFuYWdlbWVudC4gTGV0J3MgZGlnIGluLlxuXG5UaGUgZmlyc3QgY2hhbmdlLCBgTExJU1RfTk9ERV9TWmAgYmVpbmcgYWRqdXN0ZWQgdG8gYW4gOC1ieXRlIGFsaWduZWQgc2l6ZSwgaW5kaWNhdGVzIGEgbGlrZWx5IGNvbmNlcm4gd2l0aCBtZW1vcnkgYWxpZ25tZW50IHdpdGhpbiB0aGUgbGlua2VkIGxpc3Qgbm9kZSBzdHJ1Y3R1cmVzLiBUaGlzIGNvdWxkIGJlIGNydWNpYWwgZm9yIHBlcmZvcm1hbmNlIG9yLCBtb3JlIGNyaXRpY2FsbHksIGNvcnJlY3RuZXNzLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBlci1DUFUgZGF0YS4gQSBtaXNhbGlnbmVkIGFjY2VzcyBpbiBCUEYgY291bGQgbGVhZCB0byBzaWduaWZpY2FudCBwcm9ibGVtcy5cblxuVGhlIGBrbWFsbG9jX25vZGVgIGNoYW5nZXMgd2l0aGluIGBfX2FsbG9jYCBpbiBgbWVtYWxsb2MuY2AgYXJlIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLiBXZSdyZSBtb3ZpbmcgZnJvbSBhIGB2b2lkIF9fcGVyY3B1ICoqb2JqYCB0byBgdm9pZCAqb2JqYC4gVGhpcyBsb29rcyBsaWtlIGEgY2hhbmdlIHRvIGhvdyB0aGUgcGVyLUNQVSBkYXRhIGlzIGJlaW5nIHN0b3JlZCBhbmQgYWNjZXNzZWQuIFRoZSBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbnMgdG8gaG93IHdlICpzZXQqIGFuZCAqZnJlZSogdGhhdCBkYXRhIChgKih2b2lkIF9fcGVyY3B1ICoqKShvYmogKyBMTElTVF9OT0RFX1NaKSA9IHBwdHI7YCBhbmQgYGZyZWVfcGVyY3B1KCoodm9pZCBfX3BlcmNwdSAqKikob2JqICsgTExJU1RfTk9ERV9TWikpO2AgcmVzcGVjdGl2ZWx5KSBjbGVhcmx5IHNob3cgYSBzaGlmdCBpbiBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zLiBJdCBhcHBlYXJzIHdlJ3JlIG5vdyBzdG9yaW5nIGEgcG9pbnRlciB0byBwZXItQ1BVIGRhdGEgYXQgYW4gb2Zmc2V0LiBUaGlzIHN1Z2dlc3RzIHdlIGFyZSBsaWtlbHkgcGFja2luZyBwZXItQ1BVIGRhdGEgYWxvbmdzaWRlIHRoZSBsaW5rZWQgbGlzdCBub2RlIHN0cnVjdHVyZS4gVGhpcyBjb21wYWN0aW9uIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLlxuXG5UaGlzIHJlZWtzIG9mIGEgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIG9wdGltaXphdGlvbiBvciwgcG9zc2libHksIGEgY3JpdGljYWwgYnVnIGZpeCByZWxhdGVkIHRvIGhvdyBwZXItQ1BVIGRhdGEgaXMgaGFuZGxlZCBhbmQgYWxsb2NhdGVkIGluIHRoZSBCUEYgY29udGV4dC4gVGhpcyBpcyBzb21ldGhpbmcgdGhhdCBjb3VsZCBoYXZlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIHdhcnJhbnRzIHNlcmlvdXMgYXR0ZW50aW9uIGZvciBmdXp6aW5nLiBJJ2xsIGZsYWcgaXQgYXMgYFdvcnRoRnV6emluZz10cnVlYC5cblxuRm9yIHRoZSBmdXp6aW5nIHRhcmdldHMsIHRoZSBgX19hbGxvY2AsIGBhbGxvY19idWxrYCwgYGZyZWVfb25lYCwgYW5kIGBodGFiX21hcF9tZW1fdXNhZ2VgIGZ1bmN0aW9ucyBqdW1wIG91dCBhcyB0aGUga2V5IGFyZWFzIHRvIHByb2JlLiBUaGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBhbmQgY2xlYW51cCBmdW5jdGlvbnMuXG5cbkZpbmFsbHksIHJlZ2FyZGluZyBjb25maWcgb3B0aW9ucywgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIGlzIHRoZSBwZXJ0aW5lbnQgb25lLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCB0aGF0J3MgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjUxLjEwMTk0ODcwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQyNDU3MjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjUzLjA0NDQxMTQ4NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTE2MTc0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBNZW1vcnkgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgdXNpbmcgYEJQRl9TWVNDQUxMYCwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhhdCdzIHN1ZmZpY2llbnQgZm9yIG15IHB1cnBvc2VzLiBHaXZlbiB0aGUgYXBwbGljYXRpb24ncyByZWxpYW5jZSBvbiBCUEYgbWFwcywgaXQncyBjbGVhciB0aGF0IHRoZSBCUEYgbWVtb3J5IGFsbG9jYXRvciBpcyBpbiBwbGF5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW5uZXIgd29ya2luZ3MgdG8gZW5zdXJlIGVmZmljaWVudCByZXNvdXJjZSBtYW5hZ2VtZW50LlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIHJlbGV2YW50IHN5bWJvbHMgaGVyZS4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgYF9fYWxsb2NgLCBgZnJlZV9vbmVgLCBhbmQgYGh0YWJfbWFwX21lbV91c2FnZWAuIEknbGwgd2FudCB0byBjaGVjayBpZiBgX19hbGxvY2AgYW5kIGBmcmVlX29uZWAgYXJlIHN0YXRpYy4gQWggeWVzLCB0aGV5J3JlIHN0YXRpYyB3aXRoaW4gYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AuIFxuXG5TaW5jZSB0aGV5J3JlIHN0YXRpYywgSSdsbCBuZWVkIHRvIGV4cG9zZSB0aGVpciBmdW5jdGlvbmFsaXR5IHRocm91Z2ggYSB3cmFwcGVyLiBJIHRoaW5rIEknbGwgYWRkIGBicGZfbWVtX2FsbG9jYCwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCwgdGhhdCBjYW4gY2FsbCB0aG9zZSBmdW5jdGlvbnMsIGFsbG93aW5nIGNvbnRyb2xsZWQgbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIG15IHNjb3BlLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgbGV2ZWwgb2YgY29udHJvbCBJJ20gYWZ0ZXIsIGdpdmVuIHRoZSBjb25zdHJhaW50cyBvZiB0aG9zZSBzdGF0aWMgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzMxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjU2LjQ1NjAzMDQzNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc1MjU3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvbWVtYWxsb2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL21lbWFsbG9jLmM9MTMwPXN0YXRpYyBzdHJ1Y3QgbGxpc3Rfbm9kZSBub3RyYWNlICpfX2xsaXN0X2RlbF9maXJzdChzdHJ1Y3QgbGxpc3RfaGVhZCAqaGVhZClcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xNDEtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjE0MjpzdGF0aWMgdm9pZCAqX19hbGxvYyhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IG5vZGUsIGdmcF90IGZsYWdzKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xNDMte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTE0NS1cXHRcXHR2b2lkICpvYmogPSBrbWFsbG9jX25vZGUoYy1cXHUwMDNlcGVyY3B1X3NpemUsIGZsYWdzLCBub2RlKTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MTQ2OlxcdFxcdHZvaWQgX19wZXJjcHUgKnBwdHIgPSBfX2FsbG9jX3BlcmNwdV9nZnAoYy1cXHUwMDNldW5pdF9zaXplLCA4LCBmbGFncyk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTE0Ny1cXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz0yMDc9c3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTI0Ny1cXHRcXHQgKi9cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MjQ4OlxcdFxcdG9iaiA9IF9fYWxsb2MoYywgbm9kZSwgZ2ZwKTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjQ5LVxcdFxcdGlmICghb2JqKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTUwMj1pbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTUxNy1cXHRpZiAoc2l6ZSkge1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo1MTg6XFx0XFx0cGMgPSBfX2FsbG9jX3BlcmNwdV9nZnAoc2l6ZW9mKCpwYyksIDgsIEdGUF9LRVJORUwpO1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTktXFx0XFx0aWYgKCFwYylcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NDQtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjU0NTpcXHRwY2MgPSBfX2FsbG9jX3BlcmNwdV9nZnAoc2l6ZW9mKCpjYyksIDgsIEdGUF9LRVJORUwpO1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NDYtXFx0aWYgKCFwY2MpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9NTcwPWludCBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU3My1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTc0OlxcdHBjYyA9IF9fYWxsb2NfcGVyY3B1X2dmcChzaXplb2Yoc3RydWN0IGJwZl9tZW1fY2FjaGVzKSwgOCwgR0ZQX0tFUk5FTCk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU3NS1cXHRpZiAoIXBjYylcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz05Nzk9dm9pZCBub3RyYWNlICpicGZfbWVtX2NhY2hlX2FsbG9jX2ZsYWdzKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTkxLVxcdFxcdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5OTI6XFx0XFx0cmV0ID0gX19hbGxvYyhjLCBOVU1BX05PX05PREUsIEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9BQ0NPVU5UKTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTkzLVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjU2LjUzMzc5NDE0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDY4NDQ1MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKk1lbW9yeSBBbGxvY2F0aW9uIGFuZCBEZWFsbG9jYXRpb24gaW4gdGhlIEJQRiBTdWJzeXN0ZW0qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgYnBmX21lbV9jYWNoZV9hbGxvY19mbGFnc2Agc2VlbXMgdG8gYmUgb3VyIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IHdpdGggc3BlY2lmaWMgZmxhZ3MuIEl0LCBhbmQgbGlrZWx5IG90aGVyIEJQRi1yZWxhdGVkIGFsbG9jYXRpb24gcGF0aHdheXMsIGV2ZW50dWFsbHkgZnVubmVsIGRvd24gdG8gdGhpcyBgX19hbGxvY2AgZnVuY3Rpb24uIFRoYXQncyB0aGUgY29yZSBhbGxvY2F0aW9uIHByaW1pdGl2ZSwgdGhlIHdvcmtob3JzZS4gSW50ZXJlc3RpbmcuXG5cbkFuZCwgaWYgSSdtIGludGVycHJldGluZyB0aGlzIGNvcnJlY3RseSwgYGFsbG9jX2J1bGtgIGFsc28gdXNlcyBgX19hbGxvY2AuIFRoaXMgc3VnZ2VzdHMgdGhlcmUncyBzb21lIHNoYXJlZCB1bmRlcmx5aW5nIG1lY2hhbmlzbSBmb3IgYm90aCBzaW5nbGUgYWxsb2NhdGlvbnMgYW5kIGJ1bGsgYWxsb2NhdGlvbnMuIFRoaXMgaXMgc2Vuc2libGUsIGl0IG1pbmltaXplcyBjb2RlIGR1cGxpY2F0aW9uIGFuZCBsaWtlbHkgb3B0aW1pemVzIGZvciBjb21tb24gdW5kZXJseWluZyBoYXJkd2FyZSBiZWhhdmlvci5cblxuT24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGNvaW4sIGBmcmVlX29uZWAgaXMgY3JpdGljYWwgZm9yIHJlbGVhc2luZyB0aGUgbWVtb3J5LCBhbmQgaXQgbG9va3MgbGlrZSBpdCBnZXRzIGNhbGxlZCBmcm9tIHR3byBkaXN0aW5jdCBwbGFjZXM6IGBmcmVlX2J1bGtgLCB3aGljaCBoYW5kbGVzIHJlbGVhc2luZyBjaHVua3MgYWxsb2NhdGVkIGluIGJ1bGssIGFuZCBgYnBmX21lbV9hbGxvY19kZXN0cm95YC4gVGhlIGxhdHRlciBsaWtlbHkgaGFuZGxlcyBmcmVlaW5nIG1lbW9yeSB0aGF0J3Mgc3BlY2lmaWNhbGx5IGFzc29jaWF0ZWQgd2l0aCBCUEYgYWxsb2NhdGlvbiBzdHJ1Y3R1cmVzIHdoZW4gdGhvc2Ugc3RydWN0dXJlcyB0aGVtc2VsdmVzIGFyZSBkZXN0cm95ZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgY2xlYW5lZCB1cCB3aGVuIHRoZSBCUEYgbWVtb3J5IG1hbmFnZXIgaXMgc2h1dCBkb3duLiBUaGUgY29tbW9uYWxpdHkgd2l0aCBgZnJlZV9idWxrYCBzdWdnZXN0cyB0aGF0IHRoZSBzaW5nbGUtb2JqZWN0IGZyZWVpbmcgc3RyYXRlZ3kgYW5kIGJ1bGsgZnJlZWluZyBzaGFyZSBrZXkgZWxlbWVudHMsIGFnYWluIGltcHJvdmluZyBlZmZpY2llbmN5LlxuXG5Pa2F5LCBzbyB0aGUgZmxvdyBpczogQWxsb2NhdGlvbiBjYWxscyBsZWFkIHRvIGBfX2FsbG9jYC4gRnJlZWluZyBoYXBwZW5zIHZpYSBgZnJlZV9vbmVgLCBjYWxsZWQgYnkgYGZyZWVfYnVsa2AgYW5kIGEgZGVzdHJ1Y3Rvciwgd2hpY2ggbWFuYWdlcyBmcmVlaW5nIHRoZSBtZW1vcnkuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUyMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjAwLjI4MDY0MDIzNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTY1Mzk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmcmVlX29uZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL21lbWFsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9tZW1hbGxvYy5jPTIwNz1zdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjU2LVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoyNTc6c3RhdGljIHZvaWQgZnJlZV9vbmUodm9pZCAqb2JqLCBib29sIHBlcmNwdSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjU4LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz0yNjU9c3RhdGljIGludCBmcmVlX2FsbChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgc3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZSwgYm9vbCBwZXJjcHUpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjcyLVxcdFxcdFxcdGMtXFx1MDAzZWR0b3IoKHZvaWQgKilwb3MgKyBMTElTVF9OT0RFX1NaLCBjLVxcdTAwM2VkdG9yX2N0eCk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjI3MzpcXHRcXHRmcmVlX29uZShwb3MsIHBlcmNwdSk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTI3NC1cXHRcXHRjbnQrKztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTE6MDAuMzM2MzAwODU1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1MTU5MjI0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiB0aGUgd2VlZHMgb2YgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIFJDVTpcblxuKipEaWdnaW5nIGludG8gdGhlIE1lbW9yeSBSZWNsYW1hdGlvbiBGbG93KipcblxuQWxyaWdodCwgc28gYGZyZWVfYWxsYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCdzIHVsdGltYXRlbHkgcmVzcG9uc2libGUgZm9yIGNsZWFuaW5nIHVwIGEgYnVuY2ggb2YgbWVtb3J5IGJsb2NrcywgYW5kIEkgc2VlIGl0J3MgY2FsbGluZyBgZnJlZV9vbmVgLiBUaGF0J3MgYSBjbGFzc2ljIHBhdHRlcm4gLSBgZnJlZV9hbGxgIGxpa2VseSBpdGVyYXRlcyB0aHJvdWdoIGEgbGlzdCBvciBzdHJ1Y3R1cmUsIGFuZCBmb3IgZWFjaCBpbmRpdmlkdWFsIGVsZW1lbnQsIGl0IGNhbGxzIGBmcmVlX29uZWAgdG8gZG8gdGhlIGFjdHVhbCBtZW1vcnkgZGVhbGxvY2F0aW9uLiBNYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5UaGVuIEkgc2VlIHRoYXQgYF9fZnJlZV9yY3VgIGlzIHRoZSBvbmUgY2FsbGluZyBgZnJlZV9hbGxgLiBUaGF0IHRlbGxzIG1lIHdlIGFyZSBkZWFsaW5nIHdpdGggUkNVLCBzbyB0aGVzZSBmcmVlcyBhcmUgbGlrZWx5IGJlaW5nIGRvbmUgaW4gYSBkZWZlcnJlZCBtYW5uZXIsIGVuc3VyaW5nIHNhZmV0eSBkdXJpbmcgY29uY3VycmVudCByZWFkIG9wZXJhdGlvbnMuIE9rYXksIHRoYXQncyBpbXBvcnRhbnQgY29udGV4dC4gVGhpcyB3aG9sZSBmbG93IGlzIGNsZWFybHkgdGllZCB0byBSQ1UtYmFzZWQgcmVjbGFtYXRpb24uIE5vdywgd2hlcmUgYXJlIHRoZSBtZW1vcnkgdXNhZ2Ugc3RhdHM/IFRpbWUgdG8gY2hlY2sgYGh0YWJfbWFwX21lbV91c2FnZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmFjayBvciBhY2NvdW50IGZvciB3aGF0ZXZlciBpcyBiZWluZyBmcmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE4NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjAzLjY4Nzg5NTAxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY5MzU3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHRhYl9tYXBfbWVtX3VzYWdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTIyNjM9c3RhdGljIGxvbmcgYnBmX2Zvcl9lYWNoX2hhc2hfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBicGZfY2FsbGJhY2tfdCBjYWxsYmFja19mbixcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzMTUtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjMxNjpzdGF0aWMgdTY0IGh0YWJfbWFwX21lbV91c2FnZShjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwKVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzMTcte1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MjM1NT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjM3MC1cXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyMzcxOlxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzNzItXFx0QkFUQ0hfT1BTKGh0YWIpLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MjM3Nz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzOTMtXFx0Lm1hcF9jaGVja19idGYgPSBodGFiX21hcF9jaGVja19idGYsXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjM5NDpcXHQubWFwX21lbV91c2FnZSA9IGh0YWJfbWFwX21lbV91c2FnZSxcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzk1LVxcdEJBVENIX09QUyhodGFiX2xydSksXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNTU4PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX3BlcmNwdV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU3My1cXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNTc0OlxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI1NzUtXFx0QkFUQ0hfT1BTKGh0YWJfcGVyY3B1KSxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI1ODA9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfbHJ1X3BlcmNwdV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5NC1cXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNTk1OlxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI1OTYtXFx0QkFUQ0hfT1BTKGh0YWJfbHJ1X3BlcmNwdSksXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNzI2PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX29mX21hcHNfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3MzctXFx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI3Mzg6XFx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjczOS1cXHRCQVRDSF9PUFMoaHRhYiksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjAzLjc0NDgzNTczNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE2OTk3MzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIE1lbW9yeSBBbGxvY2F0aW9uIGluIHRoZSBCUEYgU3Vic3lzdGVtKipcblxuQWxyaWdodCwgc28gYGh0YWJfbWFwX21lbV91c2FnZWAg4oCTIHRoYXQncyBhIG1hcCBvcGVyYXRpb24sIHVuZGVyc3Rvb2QuIE15IG1pbmQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBzb21ldGhpbmcgdGhhdCdzIGxpa2VseSBjb250cmlidXRpbmcgdG8gbWVtb3J5IHVzYWdlIHdpdGhpbiB0aGUgQlBGIGNvbnRleHQuIE5vdywgSSBzZWUgYGJwZl9tZW1fY2FjaGVfYWxsb2NfZmxhZ3NgIG1lbnRpb25lZC4gQWgsIGl0J3MgY2FsbGVkIGJ5IGJvdGggYGJwZl9tZW1fY2FjaGVfYWxsb2NgIGFuZCBgYnBmX21lbV9hbGxvY2AuIFRoYXQgdGVsbHMgbWUgaXQncyBjZW50cmFsIHRvIGhvdyBtZW1vcnkgaXMgcmVxdWVzdGVkIHdpdGhpbiB0aGUgQlBGIHN1YnN5c3RlbSwgc2luY2UgaXQgaXMgYSBjb21tb24gZmFjdG9yIHRvIHRob3NlIHR3byBhbGxvY2F0b3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gTGV0J3MgZGVsdmUgaW50byBgYnBmX21lbV9jYWNoZV9hbGxvY2AgZmlyc3QgdG8gZ2FpbiBzb21lIGluc2lnaHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY2FjaGUgYWxsb2NhdGlvbiBvcGVyYXRlcywgc2luY2UgdGhhdCdzIHdoZXJlIGBicGZfbWVtX2NhY2hlX2FsbG9jX2ZsYWdzYCBjb21lcyBpbi4gVGhhdCBzaG91bGQgcHJvdmlkZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhlc2UgZmxhZ3Mgb24gb3ZlcmFsbCBtZW1vcnkgY29uc3VtcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyOTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MTowNy4wNjE4MzUwMThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDEyMjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9tZW1fY2FjaGVfYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9tZW1hbGxvYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvbWVtYWxsb2MuYz00Mzg9c3RhdGljIHZvaWQgbm90cmFjZSBpcnFfd29ya19yYWlzZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy00NDItXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjQ0MzovKiBGb3IgdHlwaWNhbCBicGYgbWFwIGNhc2UgdGhhdCB1c2VzIGJwZl9tZW1fY2FjaGVfYWxsb2MgYW5kIHNpbmdsZSBidWNrZXRcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNDQ0LSAqIHRoZSBmcmVlbGlzdCBjYWNoZSB3aWxsIGJlIGVsZW1fc2l6ZSAqIDY0IChvciBsZXNzKSBvbiBlYWNoIGNwdS5cXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz05MTc9dm9pZCBub3RyYWNlIGJwZl9tZW1fZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTMyLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MzM6dm9pZCBub3RyYWNlICpicGZfbWVtX2NhY2hlX2FsbG9jKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTM0LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz05Njc9dm9pZCBicGZfbWVtX2NhY2hlX3Jhd19mcmVlKHZvaWQgKnB0cilcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NzUtLyogV2hlbiBmbGFncyA9PSBHRlBfS0VSTkVMLCBpdCBzaWduYWxzIHRoYXQgdGhlIGNhbGxlciB3aWxsIG5vdCBjYXVzZVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5NzY6ICogZGVhZGxvY2sgd2hlbiB1c2luZyBrbWFsbG9jLiBicGZfbWVtX2NhY2hlX2FsbG9jX2ZsYWdzKCkgd2lsbCB1c2VcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTc3LSAqIGttYWxsb2MgaWYgdGhlIGZyZWVfbGxpc3QgaXMgZW1wdHkuXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk3OC0gKi9cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTc5OnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGdmcF90IGZsYWdzKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05ODAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MTowNy4xMTgyNTIxNDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc2MzA1MTQ5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqSW52ZXN0aWdhdGluZyBCUEYgTWVtb3J5IEFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBicGZfbWVtX2NhY2hlX2FsbG9jYCBhbmQgYGJwZl9tZW1fY2FjaGVfYWxsb2NfZmxhZ3NgIGFyZSBiZWluZyB1c2VkIG9yIGV4cG9ydGVkLCB3aGljaCBtZWFucyBvdGhlciBCUEYgY29kZSByZWxpZXMgb24gdGhlbS4gVGhhdCdzIGdvb2QgdG8ga25vdywgYW5kIGl0J3MgYSBrZXkgcG9pbnQuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciwgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGVzZSBzcGVjaWZpYyBhbGxvY2F0aW9uIGZ1bmN0aW9ucyB0byB0aGUgYmFzZS4gTGV0J3MgZGlnIGludG8gYGJwZl9tZW1fYWxsb2NgIGFuZCBzZWUgaG93IGl0IGlzIHRpZWQgdG8gdGhlc2UgY2FjaGUgYWxsb2NhdG9ycywgc28gdGhhdCBJIGhhdmUgdGhlIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNzMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MTowOS44ODEzMDU5MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0MDk0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX21lbV9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL21lbWFsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9tZW1hbGxvYy5jLTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lycV93b3JrLmhcXHUwMDNlXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjc6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZl9tZW1fYWxsb2MuaFxcdTAwM2VcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOC0jaW5jbHVkZSBcXHUwMDNjbGludXgvbWVtY29udHJvbC5oXFx1MDAzZVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTQ4MT1zdGF0aWMgdm9pZCBwcmVmaWxsX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNwdSlcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MDEtICovXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjUwMjppbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MDMte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU2OS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTcwOmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NzEte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU4My1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTg0OmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNTg1LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz02NDA9c3RhdGljIHZvaWQgY2hlY2tfbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTY1MC1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NjUxOnN0YXRpYyB2b2lkIGNoZWNrX2xlYWtlZF9vYmpzKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNjUyLXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy02NzMtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjY3NDpzdGF0aWMgdm9pZCBmcmVlX21lbV9hbGxvY19ub19iYXJyaWVyKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNjc1LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy02ODUtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjY4NjpzdGF0aWMgdm9pZCBmcmVlX21lbV9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTY4Ny17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9NzAzPXN0YXRpYyB2b2lkIGZyZWVfbWVtX2FsbG9jX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzA0LXtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzA1OlxcdHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYnBmX21lbV9hbGxvYywgd29yayk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTcwNi1cXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03MTAtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjcxMTpzdGF0aWMgdm9pZCBkZXN0cm95X21lbV9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCByY3VfaW5fcHJvZ3Jlc3MpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTcxMi17XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjcxMzpcXHRzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqY29weTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzE0LVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTczNS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzM2OnZvaWQgYnBmX21lbV9hbGxvY19kZXN0cm95KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzM3LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz03NzY9c3RhdGljIHZvaWQgbm90cmFjZSAqdW5pdF9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03ODMtXFx0ICogcHJvZ19BXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjc4NDpcXHQgKiAgIGJwZl9tZW1fYWxsb2NcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzg1LVxcdCAqICAgICAgcHJlZW1wdGlvbiBvciBpcnEgLVxcdTAwM2UgcHJvZ19CXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjc4NjpcXHQgKiAgICAgICAgYnBmX21lbV9hbGxvY1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03ODctXFx0ICpcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz04NTk9c3RhdGljIHZvaWQgbm90cmFjZSB1bml0X2ZyZWVfcmN1KHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCB2b2lkICpwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtODgyLSAqL1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo4ODM6dm9pZCBub3RyYWNlICpicGZfbWVtX2FsbG9jKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc2l6ZV90IHNpemUpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTg4NC17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTAwLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MDE6dm9pZCBub3RyYWNlIGJwZl9tZW1fZnJlZShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTAyLXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MTYtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjkxNzp2b2lkIG5vdHJhY2UgYnBmX21lbV9mcmVlX3JjdShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTE4LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MzItXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjkzMzp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fY2FjaGVfYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MzQte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk0MC1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTQxOnZvaWQgbm90cmFjZSBicGZfbWVtX2NhY2hlX2ZyZWUoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk0Mi17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTQ4LVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5NDk6dm9pZCBub3RyYWNlIGJwZl9tZW1fY2FjaGVfZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk1MC17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTYxLSAqIEl0IGNvdWxkIGJlIHVzZWQgd2hlbiB0aGUgcmN1X3Rhc2tzX3RyYWNlIGNhbGxiYWNrIGRvZXMgbm90IGhhdmVcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTYyOiAqIGEgaG9sZCBvbiB0aGUgb3JpZ2luYWwgYnBmX21lbV9hbGxvYyBvYmplY3QgdGhhdCBhbGxvY2F0ZWQgdGhlXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk2My0gKiAncHRyJy4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoZSB1bmNvbW1vbiBjb2RlIHBhdGguXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk2NDogKiBPdGhlcndpc2UsIHRoZSBicGZfbWVtX2FsbG9jJ3MgZnJlZV9sbGlzdCBjYW5ub3QgYmUgcmVmaWxsZWRcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTY1LSAqIGFuZCBtYXkgYWZmZWN0IHBlcmZvcm1hbmNlLlxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTk2Nz12b2lkIGJwZl9tZW1fY2FjaGVfcmF3X2ZyZWUodm9pZCAqcHRyKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk3OC0gKi9cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTc5OnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGdmcF90IGZsYWdzKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05ODAte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMDEtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjEwMDI6aW50IGJwZl9tZW1fYWxsb2NfY2hlY2tfc2l6ZShib29sIHBlcmNwdSwgc2l6ZV90IHNpemUpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMDMte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMTEtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjEwMTI6dm9pZCBicGZfbWVtX2FsbG9jX3NldF9kdG9yKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgdm9pZCAoKmR0b3IpKHZvaWQgKm9iaiwgdm9pZCAqY3R4KSxcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTAxMy1cXHRcXHRcXHQgICAgdm9pZCAoKmR0b3JfY3R4X2ZyZWUpKHZvaWQgKmN0eCksIHZvaWQgKmN0eClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTE6MDkuOTM5NzE5ODE5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNTk3MjUxNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhZGQgYSBmZXcga2V5IGZ1bmN0aW9ucyB0byBgRm9jdXNTeW1ib2xzYC4gU3BlY2lmaWNhbGx5LCBgYnBmX21lbV9hbGxvY2AsIGBicGZfbWVtX2ZyZWVgLCBgYnBmX21lbV9jYWNoZV9hbGxvY2AsIGBicGZfbWVtX2NhY2hlX2ZyZWVgLCBhbmQgYGh0YWJfbWFwX21lbV91c2FnZWAuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyB0aG9zZSBzeW1ib2xzIHdpbGwgYmUgaW1wb3J0YW50IGZvciBmb2N1c2VkIGZ1enppbmcuXG5cbk5leHQsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYEJQRl9TWVNDQUxMYCBpcyB0aGUgb25seSBjb25maWcgZW5hYmxpbmcgQlBGLiBZZXMsIGEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBCUEYgaXMgc29sZWx5IGRlcGVuZGVudCBvbiBgQlBGX1NZU0NBTExgIGJlaW5nIHNldC4gR29vZC5cblxuTm93LCBsZXQncyBkaXZlIGludG8gdGhlIHBhdGNoIGl0c2VsZi4gSSBzZWUgYSBjaGFuZ2UgdG8gdGhlIGBMTElTVF9OT0RFX1NaYCBkZWZpbml0aW9uOlxuXG5gYGBjXG4tI2RlZmluZSBMTElTVF9OT0RFX1NaIHNpemVvZihzdHJ1Y3QgbGxpc3Rfbm9kZSlcbisjZGVmaW5lIExMSVNUX05PREVfU1ogQUxJR04oc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKSwgOClcbmBgYFxuXG5BaCwgYWxpZ25pbmcgdGhlIGBzdHJ1Y3QgbGxpc3Rfbm9kZWAgc2l6ZSB0byA4IGJ5dGVzLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIHNvIGxldCdzIGNoZWNrIGhvdyBpdCdzIHVzZWQuIExvb2tpbmcgZnVydGhlciBkb3duIGluIHRoZSBwYXRjaCwgSSBzZWUgdGhpcyBpbiB0aGUgYF9fYWxsb2NgIGZ1bmN0aW9uOlxuXG5gYGBjXG4tXHRcdHZvaWQgX19wZXJjcHUgKipvYmogPSBrbWFsbG9jX25vZGUoYy1cdTAwM2VwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuK1x0XHR2b2lkICpvYmogPSBrbWFsbG9jX25vZGUoYy1cdTAwM2VwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuIFx0XHR2b2lkIF9fcGVyY3B1ICpwcHRyID0gX19hbGxvY19wZXJjcHVfZ2ZwKGMtXHUwMDNldW5pdF9zaXplLCA4LCBmbGFncyk7XG4gXG4gXHRcdGlmICghb2JqIHx8ICFwcHRyKSB7XG5AQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgbm9kZSwgZ2ZwX3QgZmxhZ3MpXG4gXHRcdFx0a2ZyZWUob2JqKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuLVx0XHRvYmpbMV0gPSBwcHRyO1xuK1x0XHQqKHZvaWQgX19wZXJjcHUgKiopKG9iaiArIExMSVNUX05PREVfU1opID0gcHB0cjtcbiBcdFx0cmV0dXJuIG9iajtcbmBgYFxuXG5Pa2F5LCB0aGUgY29kZSBub3cgY29ycmVjdGx5IHBsYWNlcyB0aGUgcGVyY3B1IHBvaW50ZXIgYWZ0ZXIgdGhlIGFsaWduZWQgYGxsaXN0X25vZGVgLiBUaGUgb3JpZ2luYWwgYG9ialsxXWAgbGlrZWx5IGhhZCBhIGJ1ZywgYmVjYXVzZSBpdCBhc3N1bWVkIHRoZSBzaXplIG9mIGBzdHJ1Y3QgbGxpc3Rfbm9kZWAgd2FzIGEgbXVsdGlwbGUgb2YgOC4gVGhhdCBtaWdodCBub3QgYmUgdHJ1ZSwgZXNwZWNpYWxseSBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYW5kIHRoaXMgcGF0Y2ggZml4ZXMgdGhhdC5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgY2xlYXJseSBmaXhlcyBhIGJ1ZyBhZmZlY3RpbmcgQlBGIG1hcHMuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYC5cblxuKiAgICoqRm9jdXNTeW1ib2xzOioqIGBicGZfbWVtX2FsbG9jYCwgYGJwZl9tZW1fZnJlZWAsIGBicGZfbWVtX2NhY2hlX2FsbG9jYCwgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIGBodGFiX21hcF9tZW1fdXNhZ2VgLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgQlBGX1NZU0NBTExgLlxuKiAgICoqUmVhc29uaW5nOioqIFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBieSBhbGlnbmluZyB0aGUgc2l6ZSBvZiBsbGlzdF9ub2RlIHRvIDggYnl0ZXMgYW5kIGNvcnJlY3RseSBwbGFjaW5nIHRoZSBwZXJjcHUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBCUEYgbWFwcy5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjQxLCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MToxOC4yOTk0NDcyNDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDU5NzU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfbWVtX2FsbG9jXCIsXG4gICAgXCJicGZfbWVtX2ZyZWVcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfYWxsb2NcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfZnJlZVwiLFxuICAgIFwiaHRhYl9tYXBfbWVtX3VzYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IGFsaWduaW5nIHRoZSBzaXplIG9mIGxsaXN0X25vZGUgdG8gOCBieXRlcyBhbmQgY29ycmVjdGx5IHBsYWNpbmcgdGhlIHBlcmNwdSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiBtYXBzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX21lbV9hbGxvY1wiLFxuICAgIFwiYnBmX21lbV9mcmVlXCIsXG4gICAgXCJicGZfbWVtX2NhY2hlX2FsbG9jXCIsXG4gICAgXCJicGZfbWVtX2NhY2hlX2ZyZWVcIixcbiAgICBcImh0YWJfbWFwX21lbV91c2FnZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBieSBhbGlnbmluZyB0aGUgc2l6ZSBvZiBsbGlzdF9ub2RlIHRvIDggYnl0ZXMgYW5kIGNvcnJlY3RseSBwbGFjaW5nIHRoZSBwZXJjcHUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBCUEYgbWFwcyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow2tkfj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 22:34:43 +0000 UTC FinishedAt: 2026-07-17 22:51:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "7fc2c3dcae28347a30ccd76c8817e5719005f1c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "7fc2c3dcae28347a30ccd76c8817e5719005f1c3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "9c9709ad-8eec-4b02-97b9-07d925acf52f" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_mem_alloc", "bpf_mem_free", "bpf_mem_cache_alloc", "bpf_mem_cache_free", "htab_map_mem_usage" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX21lbV9hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfbWVtX2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX21lbV9jYWNoZV9hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfbWVtX2NhY2hlX2ZyZWUmIzM0OywKICAgICYjMzQ7aHRhYl9tYXBfbWVtX3VzYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBieSBhbGlnbmluZyB0aGUgc2l6ZSBvZiBsbGlzdF9ub2RlIHRvIDggYnl0ZXMgYW5kIGNvcnJlY3RseSBwbGFjaW5nIHRoZSBwZXJjcHUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBCUEYgbWFwcyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQ2MDVjZTgyNGQ3YjM4MTBmYWRhMWE4NGY4MmM1NWMwYmM2MWRmN2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMjo1MDo0MiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hhc2h0YWIuYyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jXG5pbmRleCAzZGQ5YjQ5MjRhZTRmYi4uOTAwYzE4NTFkMjY0NWQgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL2hhc2h0YWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oYXNodGFiLmNcbkBAIC0yMzM3LDcgJiM0MzsyMzM3LDcgQEAgc3RhdGljIHU2NCBodGFiX21hcF9tZW1fdXNhZ2UoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcClcbiBcdFx0ZWxzZSBpZiAoIWxydSlcbiBcdFx0XHR1c2FnZSAmIzQzOz0gc2l6ZW9mKHN0cnVjdCBodGFiX2VsZW0gKikgKiBudW1fcG9zc2libGVfY3B1cygpO1xuIFx0fSBlbHNlIHtcbi0jZGVmaW5lIExMSVNUX05PREVfU1ogc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKVxuJiM0MzsjZGVmaW5lIExMSVNUX05PREVfU1ogQUxJR04oc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKSwgOClcbiBcbiBcdFx0bnVtX2VudHJpZXMgPSBodGFiLVx1MDAzZXVzZV9wZXJjcHVfY291bnRlciA/XG4gXHRcdFx0XHRcdCAgcGVyY3B1X2NvdW50ZXJfc3VtKFx1MDAyNmh0YWItXHUwMDNlcGNvdW50KSA6XG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9tZW1hbGxvYy5jIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jXG5pbmRleCBlOTY2MmRiNzE5OGZlMC4uY2E3NTU1YjFkYTM0ZmMgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xuQEAgLTMzLDcgJiM0MzszMyw3IEBAXG4gICogRXZlcnkgYWxsb2NhdGVkIG9iamVjdGVkIGlzIHBhZGRlZCB3aXRoIGV4dHJhIDggYnl0ZXMgdGhhdCBjb250YWluc1xuICAqIHN0cnVjdCBsbGlzdF9ub2RlLlxuICAqL1xuLSNkZWZpbmUgTExJU1RfTk9ERV9TWiBzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpXG4mIzQzOyNkZWZpbmUgTExJU1RfTk9ERV9TWiBBTElHTihzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpLCA4KVxuIFxuICNkZWZpbmUgQlBGX01FTV9BTExPQ19TSVpFX01BWCA0MDk2XG4gXG5AQCAtMTQyLDcgJiM0MzsxNDIsNyBAQCBzdGF0aWMgc3RydWN0IGxsaXN0X25vZGUgbm90cmFjZSAqX19sbGlzdF9kZWxfZmlyc3Qoc3RydWN0IGxsaXN0X2hlYWQgKmhlYWQpXG4gc3RhdGljIHZvaWQgKl9fYWxsb2Moc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBub2RlLCBnZnBfdCBmbGFncylcbiB7XG4gXHRpZiAoYy1cdTAwM2VwZXJjcHVfc2l6ZSkge1xuLVx0XHR2b2lkIF9fcGVyY3B1ICoqb2JqID0ga21hbGxvY19ub2RlKGMtXHUwMDNlcGVyY3B1X3NpemUsIGZsYWdzLCBub2RlKTtcbiYjNDM7XHRcdHZvaWQgKm9iaiA9IGttYWxsb2Nfbm9kZShjLVx1MDAzZXBlcmNwdV9zaXplLCBmbGFncywgbm9kZSk7XG4gXHRcdHZvaWQgX19wZXJjcHUgKnBwdHIgPSBfX2FsbG9jX3BlcmNwdV9nZnAoYy1cdTAwM2V1bml0X3NpemUsIDgsIGZsYWdzKTtcbiBcbiBcdFx0aWYgKCFvYmogfHwgIXBwdHIpIHtcbkBAIC0xNTAsNyAmIzQzOzE1MCw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgbm9kZSwgZ2ZwX3QgZmxhZ3MpXG4gXHRcdFx0a2ZyZWUob2JqKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuLVx0XHRvYmpbMV0gPSBwcHRyO1xuJiM0MztcdFx0Kih2b2lkIF9fcGVyY3B1ICoqKShvYmogJiM0MzsgTExJU1RfTk9ERV9TWikgPSBwcHRyO1xuIFx0XHRyZXR1cm4gb2JqO1xuIFx0fVxuIFxuQEAgLTI1Nyw3ICYjNDM7MjU3LDcgQEAgc3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKVxuIHN0YXRpYyB2b2lkIGZyZWVfb25lKHZvaWQgKm9iaiwgYm9vbCBwZXJjcHUpXG4ge1xuIFx0aWYgKHBlcmNwdSlcbi1cdFx0ZnJlZV9wZXJjcHUoKCh2b2lkIF9fcGVyY3B1ICoqKW9iailbMV0pO1xuJiM0MztcdFx0ZnJlZV9wZXJjcHUoKih2b2lkIF9fcGVyY3B1ICoqKShvYmogJiM0MzsgTExJU1RfTk9ERV9TWikpO1xuIFxuIFx0a2ZyZWUob2JqKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfbWVtX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9tZW1fZnJlZSYjMzQ7LAogICAgJiMzNDticGZfbWVtX2NhY2hlX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9tZW1fY2FjaGVfZnJlZSYjMzQ7LAogICAgJiMzNDtodGFiX21hcF9tZW1fdXNhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IGFsaWduaW5nIHRoZSBzaXplIG9mIGxsaXN0X25vZGUgdG8gOCBieXRlcyBhbmQgY29ycmVjdGx5IHBsYWNpbmcgdGhlIHBlcmNwdSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiBtYXBzIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkNjA1Y2U4MjRkN2IzODEwZmFkYTFhODRmODJjNTVjMGJjNjFkZjdmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTcgMjI6NTA6NDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2hhc2h0YWIuYyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jCmluZGV4IDNkZDliNDkyNGFlNGZiLi45MDBjMTg1MWQyNjQ1ZCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi9oYXNodGFiLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9oYXNodGFiLmMKQEAgLTIzMzcsNyAmIzQzOzIzMzcsNyBAQCBzdGF0aWMgdTY0IGh0YWJfbWFwX21lbV91c2FnZShjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwKQogCQllbHNlIGlmICghbHJ1KQogCQkJdXNhZ2UgJiM0Mzs9IHNpemVvZihzdHJ1Y3QgaHRhYl9lbGVtICopICogbnVtX3Bvc3NpYmxlX2NwdXMoKTsKIAl9IGVsc2UgewotI2RlZmluZSBMTElTVF9OT0RFX1NaIHNpemVvZihzdHJ1Y3QgbGxpc3Rfbm9kZSkKJiM0MzsjZGVmaW5lIExMSVNUX05PREVfU1ogQUxJR04oc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKSwgOCkKIAogCQludW1fZW50cmllcyA9IGh0YWItJmd0O3VzZV9wZXJjcHVfY291bnRlciA/CiAJCQkJCSAgcGVyY3B1X2NvdW50ZXJfc3VtKCZhbXA7aHRhYi0mZ3Q7cGNvdW50KSA6CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmMKaW5kZXggZTk2NjJkYjcxOThmZTAuLmNhNzU1NWIxZGEzNGZjIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi9tZW1hbGxvYy5jCkBAIC0zMyw3ICYjNDM7MzMsNyBAQAogICogRXZlcnkgYWxsb2NhdGVkIG9iamVjdGVkIGlzIHBhZGRlZCB3aXRoIGV4dHJhIDggYnl0ZXMgdGhhdCBjb250YWlucwogICogc3RydWN0IGxsaXN0X25vZGUuCiAgKi8KLSNkZWZpbmUgTExJU1RfTk9ERV9TWiBzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpCiYjNDM7I2RlZmluZSBMTElTVF9OT0RFX1NaIEFMSUdOKHNpemVvZihzdHJ1Y3QgbGxpc3Rfbm9kZSksIDgpCiAKICNkZWZpbmUgQlBGX01FTV9BTExPQ19TSVpFX01BWCA0MDk2CiAKQEAgLTE0Miw3ICYjNDM7MTQyLDcgQEAgc3RhdGljIHN0cnVjdCBsbGlzdF9ub2RlIG5vdHJhY2UgKl9fbGxpc3RfZGVsX2ZpcnN0KHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKQogc3RhdGljIHZvaWQgKl9fYWxsb2Moc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBub2RlLCBnZnBfdCBmbGFncykKIHsKIAlpZiAoYy0mZ3Q7cGVyY3B1X3NpemUpIHsKLQkJdm9pZCBfX3BlcmNwdSAqKm9iaiA9IGttYWxsb2Nfbm9kZShjLSZndDtwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpOwomIzQzOwkJdm9pZCAqb2JqID0ga21hbGxvY19ub2RlKGMtJmd0O3BlcmNwdV9zaXplLCBmbGFncywgbm9kZSk7CiAJCXZvaWQgX19wZXJjcHUgKnBwdHIgPSBfX2FsbG9jX3BlcmNwdV9nZnAoYy0mZ3Q7dW5pdF9zaXplLCA4LCBmbGFncyk7CiAKIAkJaWYgKCFvYmogfHwgIXBwdHIpIHsKQEAgLTE1MCw3ICYjNDM7MTUwLDcgQEAgc3RhdGljIHZvaWQgKl9fYWxsb2Moc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBub2RlLCBnZnBfdCBmbGFncykKIAkJCWtmcmVlKG9iaik7CiAJCQlyZXR1cm4gTlVMTDsKIAkJfQotCQlvYmpbMV0gPSBwcHRyOwomIzQzOwkJKih2b2lkIF9fcGVyY3B1ICoqKShvYmogJiM0MzsgTExJU1RfTk9ERV9TWikgPSBwcHRyOwogCQlyZXR1cm4gb2JqOwogCX0KIApAQCAtMjU3LDcgJiM0MzsyNTcsNyBAQCBzdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpCiBzdGF0aWMgdm9pZCBmcmVlX29uZSh2b2lkICpvYmosIGJvb2wgcGVyY3B1KQogewogCWlmIChwZXJjcHUpCi0JCWZyZWVfcGVyY3B1KCgodm9pZCBfX3BlcmNwdSAqKilvYmopWzFdKTsKJiM0MzsJCWZyZWVfcGVyY3B1KCoodm9pZCBfX3BlcmNwdSAqKikob2JqICYjNDM7IExMSVNUX05PREVfU1opKTsKIAogCWtmcmVlKG9iaik7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBCUEYgTWVtb3J5IEFsbG9jYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBga2VybmVsL2JwZi9oYXNodGFiLmNgIGFuZCBga2VybmVsL2JwZi9tZW1hbGxvYy5jYC4gTXkgaW5pdGlhbCBpbnN0aW5jdCB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gYSBmdW5kYW1lbnRhbCBhc3BlY3Qgb2YgQlBGIG1lbW9yeSBtYW5hZ2VtZW50LiBMZXQmIzM5O3MgZGlnIGluLgoKVGhlIGZpcnN0IGNoYW5nZSwgYExMSVNUX05PREVfU1pgIGJlaW5nIGFkanVzdGVkIHRvIGFuIDgtYnl0ZSBhbGlnbmVkIHNpemUsIGluZGljYXRlcyBhIGxpa2VseSBjb25jZXJuIHdpdGggbWVtb3J5IGFsaWdubWVudCB3aXRoaW4gdGhlIGxpbmtlZCBsaXN0IG5vZGUgc3RydWN0dXJlcy4gVGhpcyBjb3VsZCBiZSBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBvciwgbW9yZSBjcml0aWNhbGx5LCBjb3JyZWN0bmVzcywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBwZXItQ1BVIGRhdGEuIEEgbWlzYWxpZ25lZCBhY2Nlc3MgaW4gQlBGIGNvdWxkIGxlYWQgdG8gc2lnbmlmaWNhbnQgcHJvYmxlbXMuCgpUaGUgYGttYWxsb2Nfbm9kZWAgY2hhbmdlcyB3aXRoaW4gYF9fYWxsb2NgIGluIGBtZW1hbGxvYy5jYCBhcmUgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcuIFdlJiMzOTtyZSBtb3ZpbmcgZnJvbSBhIGB2b2lkIF9fcGVyY3B1ICoqb2JqYCB0byBgdm9pZCAqb2JqYC4gVGhpcyBsb29rcyBsaWtlIGEgY2hhbmdlIHRvIGhvdyB0aGUgcGVyLUNQVSBkYXRhIGlzIGJlaW5nIHN0b3JlZCBhbmQgYWNjZXNzZWQuIFRoZSBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbnMgdG8gaG93IHdlICpzZXQqIGFuZCAqZnJlZSogdGhhdCBkYXRhIChgKih2b2lkIF9fcGVyY3B1ICoqKShvYmogJiM0MzsgTExJU1RfTk9ERV9TWikgPSBwcHRyO2AgYW5kIGBmcmVlX3BlcmNwdSgqKHZvaWQgX19wZXJjcHUgKiopKG9iaiAmIzQzOyBMTElTVF9OT0RFX1NaKSk7YCByZXNwZWN0aXZlbHkpIGNsZWFybHkgc2hvdyBhIHNoaWZ0IGluIG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMuIEl0IGFwcGVhcnMgd2UmIzM5O3JlIG5vdyBzdG9yaW5nIGEgcG9pbnRlciB0byBwZXItQ1BVIGRhdGEgYXQgYW4gb2Zmc2V0LiBUaGlzIHN1Z2dlc3RzIHdlIGFyZSBsaWtlbHkgcGFja2luZyBwZXItQ1BVIGRhdGEgYWxvbmdzaWRlIHRoZSBsaW5rZWQgbGlzdCBub2RlIHN0cnVjdHVyZS4gVGhpcyBjb21wYWN0aW9uIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLgoKVGhpcyByZWVrcyBvZiBhIEJQRiBtZW1vcnkgYWxsb2NhdGlvbiBvcHRpbWl6YXRpb24gb3IsIHBvc3NpYmx5LCBhIGNyaXRpY2FsIGJ1ZyBmaXggcmVsYXRlZCB0byBob3cgcGVyLUNQVSBkYXRhIGlzIGhhbmRsZWQgYW5kIGFsbG9jYXRlZCBpbiB0aGUgQlBGIGNvbnRleHQuIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgY291bGQgaGF2ZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMuCgpUaGVyZWZvcmUsIHRoaXMgcGF0Y2ggd2FycmFudHMgc2VyaW91cyBhdHRlbnRpb24gZm9yIGZ1enppbmcuIEkmIzM5O2xsIGZsYWcgaXQgYXMgYFdvcnRoRnV6emluZz10cnVlYC4KCkZvciB0aGUgZnV6emluZyB0YXJnZXRzLCB0aGUgYF9fYWxsb2NgLCBgYWxsb2NfYnVsa2AsIGBmcmVlX29uZWAsIGFuZCBgaHRhYl9tYXBfbWVtX3VzYWdlYCBmdW5jdGlvbnMganVtcCBvdXQgYXMgdGhlIGtleSBhcmVhcyB0byBwcm9iZS4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgYW5kIGNsZWFudXAgZnVuY3Rpb25zLgoKRmluYWxseSwgcmVnYXJkaW5nIGNvbmZpZyBvcHRpb25zLCB0aGUgYEJQRl9TWVNDQUxMYCBjb25maWcgaXMgdGhlIHBlcnRpbmVudCBvbmUuIEkgc2hvdWxkIHZlcmlmeSB0aGF0IHRoYXQmIzM5O3MgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnLTI2LVxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9LY29uZmlnLTI4LVx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzMxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBCUEYgTWVtb3J5IEFsbG9jYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyB1c2luZyBgQlBGX1NZU0NBTExgLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGF0JiMzOTtzIHN1ZmZpY2llbnQgZm9yIG15IHB1cnBvc2VzLiBHaXZlbiB0aGUgYXBwbGljYXRpb24mIzM5O3MgcmVsaWFuY2Ugb24gQlBGIG1hcHMsIGl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlIEJQRiBtZW1vcnkgYWxsb2NhdG9yIGlzIGluIHBsYXkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbm5lciB3b3JraW5ncyB0byBlbnN1cmUgZWZmaWNpZW50IHJlc291cmNlIG1hbmFnZW1lbnQuCgpNeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIHJlbGV2YW50IHN5bWJvbHMgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGBfX2FsbG9jYCwgYGZyZWVfb25lYCwgYW5kIGBodGFiX21hcF9tZW1fdXNhZ2VgLiBJJiMzOTtsbCB3YW50IHRvIGNoZWNrIGlmIGBfX2FsbG9jYCBhbmQgYGZyZWVfb25lYCBhcmUgc3RhdGljLiBBaCB5ZXMsIHRoZXkmIzM5O3JlIHN0YXRpYyB3aXRoaW4gYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AuIAoKU2luY2UgdGhleSYjMzk7cmUgc3RhdGljLCBJJiMzOTtsbCBuZWVkIHRvIGV4cG9zZSB0aGVpciBmdW5jdGlvbmFsaXR5IHRocm91Z2ggYSB3cmFwcGVyLiBJIHRoaW5rIEkmIzM5O2xsIGFkZCBgYnBmX21lbV9hbGxvY2AsIG9yIHNvbWV0aGluZyBzaW1pbGFybHkgbmFtZWQsIHRoYXQgY2FuIGNhbGwgdGhvc2UgZnVuY3Rpb25zLCBhbGxvd2luZyBjb250cm9sbGVkIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhpbiBteSBzY29wZS4gVGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGxldmVsIG9mIGNvbnRyb2wgSSYjMzk7bSBhZnRlciwgZ2l2ZW4gdGhlIGNvbnN0cmFpbnRzIG9mIHRob3NlIHN0YXRpYyBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvbWVtYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL21lbWFsbG9jLmM9MTMwPXN0YXRpYyBzdHJ1Y3QgbGxpc3Rfbm9kZSBub3RyYWNlICpfX2xsaXN0X2RlbF9maXJzdChzdHJ1Y3QgbGxpc3RfaGVhZCAqaGVhZClcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTQxLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjE0MjpzdGF0aWMgdm9pZCAqX19hbGxvYyhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IG5vZGUsIGdmcF90IGZsYWdzKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTE0My17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTE0NS1cdFx0dm9pZCAqb2JqID0ga21hbGxvY19ub2RlKGMtXHUwMDNlcGVyY3B1X3NpemUsIGZsYWdzLCBub2RlKTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoxNDY6XHRcdHZvaWQgX19wZXJjcHUgKnBwdHIgPSBfX2FsbG9jX3BlcmNwdV9nZnAoYy1cdTAwM2V1bml0X3NpemUsIDgsIGZsYWdzKTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xNDctXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTIwNz1zdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTI0Ny1cdFx0ICovXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MjQ4Olx0XHRvYmogPSBfX2FsbG9jKGMsIG5vZGUsIGdmcCk7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjQ5LVx0XHRpZiAoIW9iailcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9NTAyPWludCBicGZfbWVtX2FsbG9jX2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSwgYm9vbCBwZXJjcHUpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTUxNy1cdGlmIChzaXplKSB7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTE4Olx0XHRwYyA9IF9fYWxsb2NfcGVyY3B1X2dmcChzaXplb2YoKnBjKSwgOCwgR0ZQX0tFUk5FTCk7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNTE5LVx0XHRpZiAoIXBjKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NDQtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTQ1Olx0cGNjID0gX19hbGxvY19wZXJjcHVfZ2ZwKHNpemVvZigqY2MpLCA4LCBHRlBfS0VSTkVMKTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NDYtXHRpZiAoIXBjYylcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9NTcwPWludCBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NzMtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTc0Olx0cGNjID0gX19hbGxvY19wZXJjcHVfZ2ZwKHNpemVvZihzdHJ1Y3QgYnBmX21lbV9jYWNoZXMpLCA4LCBHRlBfS0VSTkVMKTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NzUtXHRpZiAoIXBjYylcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9OTc5PXZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGdmcF90IGZsYWdzKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05OTEtXHRcdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk5MjpcdFx0cmV0ID0gX19hbGxvYyhjLCBOVU1BX05PX05PREUsIEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9BQ0NPVU5UKTtcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05OTMtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUyMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6CgoqKk1lbW9yeSBBbGxvY2F0aW9uIGFuZCBEZWFsbG9jYXRpb24gaW4gdGhlIEJQRiBTdWJzeXN0ZW0qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBgYnBmX21lbV9jYWNoZV9hbGxvY19mbGFnc2Agc2VlbXMgdG8gYmUgb3VyIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IHdpdGggc3BlY2lmaWMgZmxhZ3MuIEl0LCBhbmQgbGlrZWx5IG90aGVyIEJQRi1yZWxhdGVkIGFsbG9jYXRpb24gcGF0aHdheXMsIGV2ZW50dWFsbHkgZnVubmVsIGRvd24gdG8gdGhpcyBgX19hbGxvY2AgZnVuY3Rpb24uIFRoYXQmIzM5O3MgdGhlIGNvcmUgYWxsb2NhdGlvbiBwcmltaXRpdmUsIHRoZSB3b3JraG9yc2UuIEludGVyZXN0aW5nLgoKQW5kLCBpZiBJJiMzOTttIGludGVycHJldGluZyB0aGlzIGNvcnJlY3RseSwgYGFsbG9jX2J1bGtgIGFsc28gdXNlcyBgX19hbGxvY2AuIFRoaXMgc3VnZ2VzdHMgdGhlcmUmIzM5O3Mgc29tZSBzaGFyZWQgdW5kZXJseWluZyBtZWNoYW5pc20gZm9yIGJvdGggc2luZ2xlIGFsbG9jYXRpb25zIGFuZCBidWxrIGFsbG9jYXRpb25zLiBUaGlzIGlzIHNlbnNpYmxlLCBpdCBtaW5pbWl6ZXMgY29kZSBkdXBsaWNhdGlvbiBhbmQgbGlrZWx5IG9wdGltaXplcyBmb3IgY29tbW9uIHVuZGVybHlpbmcgaGFyZHdhcmUgYmVoYXZpb3IuCgpPbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgY29pbiwgYGZyZWVfb25lYCBpcyBjcml0aWNhbCBmb3IgcmVsZWFzaW5nIHRoZSBtZW1vcnksIGFuZCBpdCBsb29rcyBsaWtlIGl0IGdldHMgY2FsbGVkIGZyb20gdHdvIGRpc3RpbmN0IHBsYWNlczogYGZyZWVfYnVsa2AsIHdoaWNoIGhhbmRsZXMgcmVsZWFzaW5nIGNodW5rcyBhbGxvY2F0ZWQgaW4gYnVsaywgYW5kIGBicGZfbWVtX2FsbG9jX2Rlc3Ryb3lgLiBUaGUgbGF0dGVyIGxpa2VseSBoYW5kbGVzIGZyZWVpbmcgbWVtb3J5IHRoYXQmIzM5O3Mgc3BlY2lmaWNhbGx5IGFzc29jaWF0ZWQgd2l0aCBCUEYgYWxsb2NhdGlvbiBzdHJ1Y3R1cmVzIHdoZW4gdGhvc2Ugc3RydWN0dXJlcyB0aGVtc2VsdmVzIGFyZSBkZXN0cm95ZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgY2xlYW5lZCB1cCB3aGVuIHRoZSBCUEYgbWVtb3J5IG1hbmFnZXIgaXMgc2h1dCBkb3duLiBUaGUgY29tbW9uYWxpdHkgd2l0aCBgZnJlZV9idWxrYCBzdWdnZXN0cyB0aGF0IHRoZSBzaW5nbGUtb2JqZWN0IGZyZWVpbmcgc3RyYXRlZ3kgYW5kIGJ1bGsgZnJlZWluZyBzaGFyZSBrZXkgZWxlbWVudHMsIGFnYWluIGltcHJvdmluZyBlZmZpY2llbmN5LgoKT2theSwgc28gdGhlIGZsb3cgaXM6IEFsbG9jYXRpb24gY2FsbHMgbGVhZCB0byBgX19hbGxvY2AuIEZyZWVpbmcgaGFwcGVucyB2aWEgYGZyZWVfb25lYCwgY2FsbGVkIGJ5IGBmcmVlX2J1bGtgIGFuZCBhIGRlc3RydWN0b3IsIHdoaWNoIG1hbmFnZXMgZnJlZWluZyB0aGUgbWVtb3J5LiBHb3QgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnJlZV9vbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL21lbWFsbG9jLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9tZW1hbGxvYy5jPTIwNz1zdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTI1Ni1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoyNTc6c3RhdGljIHZvaWQgZnJlZV9vbmUodm9pZCAqb2JqLCBib29sIHBlcmNwdSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0yNTgte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz0yNjU9c3RhdGljIGludCBmcmVlX2FsbChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgc3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZSwgYm9vbCBwZXJjcHUpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTI3Mi1cdFx0XHRjLVx1MDAzZWR0b3IoKHZvaWQgKilwb3MgJiM0MzsgTExJU1RfTk9ERV9TWiwgYy1cdTAwM2VkdG9yX2N0eCk7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MjczOlx0XHRmcmVlX29uZShwb3MsIHBlcmNwdSk7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjc0LVx0XHRjbnQmIzQzOyYjNDM7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDIyOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxODcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgUkNVOgoKKipEaWdnaW5nIGludG8gdGhlIE1lbW9yeSBSZWNsYW1hdGlvbiBGbG93KioKCkFscmlnaHQsIHNvIGBmcmVlX2FsbGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQmIzM5O3MgdWx0aW1hdGVseSByZXNwb25zaWJsZSBmb3IgY2xlYW5pbmcgdXAgYSBidW5jaCBvZiBtZW1vcnkgYmxvY2tzLCBhbmQgSSBzZWUgaXQmIzM5O3MgY2FsbGluZyBgZnJlZV9vbmVgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBwYXR0ZXJuIC0gYGZyZWVfYWxsYCBsaWtlbHkgaXRlcmF0ZXMgdGhyb3VnaCBhIGxpc3Qgb3Igc3RydWN0dXJlLCBhbmQgZm9yIGVhY2ggaW5kaXZpZHVhbCBlbGVtZW50LCBpdCBjYWxscyBgZnJlZV9vbmVgIHRvIGRvIHRoZSBhY3R1YWwgbWVtb3J5IGRlYWxsb2NhdGlvbi4gTWFrZXMgcGVyZmVjdCBzZW5zZS4KClRoZW4gSSBzZWUgdGhhdCBgX19mcmVlX3JjdWAgaXMgdGhlIG9uZSBjYWxsaW5nIGBmcmVlX2FsbGAuIFRoYXQgdGVsbHMgbWUgd2UgYXJlIGRlYWxpbmcgd2l0aCBSQ1UsIHNvIHRoZXNlIGZyZWVzIGFyZSBsaWtlbHkgYmVpbmcgZG9uZSBpbiBhIGRlZmVycmVkIG1hbm5lciwgZW5zdXJpbmcgc2FmZXR5IGR1cmluZyBjb25jdXJyZW50IHJlYWQgb3BlcmF0aW9ucy4gT2theSwgdGhhdCYjMzk7cyBpbXBvcnRhbnQgY29udGV4dC4gVGhpcyB3aG9sZSBmbG93IGlzIGNsZWFybHkgdGllZCB0byBSQ1UtYmFzZWQgcmVjbGFtYXRpb24uIE5vdywgd2hlcmUgYXJlIHRoZSBtZW1vcnkgdXNhZ2Ugc3RhdHM/IFRpbWUgdG8gY2hlY2sgYGh0YWJfbWFwX21lbV91c2FnZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmFjayBvciBhY2NvdW50IGZvciB3aGF0ZXZlciBpcyBiZWluZyBmcmVlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHRhYl9tYXBfbWVtX3VzYWdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oYXNodGFiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9oYXNodGFiLmM9MjI2Mz1zdGF0aWMgbG9uZyBicGZfZm9yX2VhY2hfaGFzaF9lbGVtKHN0cnVjdCBicGZfbWFwICptYXAsIGJwZl9jYWxsYmFja190IGNhbGxiYWNrX2ZuLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzMTUtXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyMzE2OnN0YXRpYyB1NjQgaHRhYl9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzE3LXtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yMzU1PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjM3MC1cdC5tYXBfY2hlY2tfYnRmID0gaHRhYl9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjM3MTpcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjM3Mi1cdEJBVENIX09QUyhodGFiKSxcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yMzc3PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX2xydV9tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzOTMtXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0Zixcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjIzOTQ6XHQubWFwX21lbV91c2FnZSA9IGh0YWJfbWFwX21lbV91c2FnZSxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzOTUtXHRCQVRDSF9PUFMoaHRhYl9scnUpLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI1NTg9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfcGVyY3B1X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU3My1cdC5tYXBfY2hlY2tfYnRmID0gaHRhYl9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU3NDpcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU3NS1cdEJBVENIX09QUyhodGFiX3BlcmNwdSksXG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmM9MjU4MD1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfcGVyY3B1X21hcF9vcHMgPSB7XG4tLVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5NC1cdC5tYXBfY2hlY2tfYnRmID0gaHRhYl9tYXBfY2hlY2tfYnRmLFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjU5NTpcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5Ni1cdEJBVENIX09QUyhodGFiX2xydV9wZXJjcHUpLFxuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI3MjY9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfb2ZfbWFwc19tYXBfb3BzID0ge1xuLS1cbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3MzctXHQubWFwX2NoZWNrX2J0ZiA9IG1hcF9jaGVja19ub19idGYsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNzM4Olx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNzM5LVx0QkFUQ0hfT1BTKGh0YWIpLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjk0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBNZW1vcnkgQWxsb2NhdGlvbiBpbiB0aGUgQlBGIFN1YnN5c3RlbSoqCgpBbHJpZ2h0LCBzbyBgaHRhYl9tYXBfbWVtX3VzYWdlYCDigJMgdGhhdCYjMzk7cyBhIG1hcCBvcGVyYXRpb24sIHVuZGVyc3Rvb2QuIE15IG1pbmQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBzb21ldGhpbmcgdGhhdCYjMzk7cyBsaWtlbHkgY29udHJpYnV0aW5nIHRvIG1lbW9yeSB1c2FnZSB3aXRoaW4gdGhlIEJQRiBjb250ZXh0LiBOb3csIEkgc2VlIGBicGZfbWVtX2NhY2hlX2FsbG9jX2ZsYWdzYCBtZW50aW9uZWQuIEFoLCBpdCYjMzk7cyBjYWxsZWQgYnkgYm90aCBgYnBmX21lbV9jYWNoZV9hbGxvY2AgYW5kIGBicGZfbWVtX2FsbG9jYC4gVGhhdCB0ZWxscyBtZSBpdCYjMzk7cyBjZW50cmFsIHRvIGhvdyBtZW1vcnkgaXMgcmVxdWVzdGVkIHdpdGhpbiB0aGUgQlBGIHN1YnN5c3RlbSwgc2luY2UgaXQgaXMgYSBjb21tb24gZmFjdG9yIHRvIHRob3NlIHR3byBhbGxvY2F0b3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gTGV0JiMzOTtzIGRlbHZlIGludG8gYGJwZl9tZW1fY2FjaGVfYWxsb2NgIGZpcnN0IHRvIGdhaW4gc29tZSBpbnNpZ2h0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGNhY2hlIGFsbG9jYXRpb24gb3BlcmF0ZXMsIHNpbmNlIHRoYXQmIzM5O3Mgd2hlcmUgYGJwZl9tZW1fY2FjaGVfYWxsb2NfZmxhZ3NgIGNvbWVzIGluLiBUaGF0IHNob3VsZCBwcm92aWRlIGEgZ29vZCBqdW1waW5nLW9mZiBwb2ludCB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGVzZSBmbGFncyBvbiBvdmVyYWxsIG1lbW9yeSBjb25zdW1wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX21lbV9jYWNoZV9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvbWVtYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL21lbWFsbG9jLmM9NDM4PXN0YXRpYyB2b2lkIG5vdHJhY2UgaXJxX3dvcmtfcmFpc2Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTQ0Mi1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo0NDM6LyogRm9yIHR5cGljYWwgYnBmIG1hcCBjYXNlIHRoYXQgdXNlcyBicGZfbWVtX2NhY2hlX2FsbG9jIGFuZCBzaW5nbGUgYnVja2V0XG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNDQ0LSAqIHRoZSBmcmVlbGlzdCBjYWNoZSB3aWxsIGJlIGVsZW1fc2l6ZSAqIDY0IChvciBsZXNzKSBvbiBlYWNoIGNwdS5cbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9OTE3PXZvaWQgbm90cmFjZSBicGZfbWVtX2ZyZWVfcmN1KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgdm9pZCAqcHRyKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MzItXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTMzOnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTM0LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9OTY3PXZvaWQgYnBmX21lbV9jYWNoZV9yYXdfZnJlZSh2b2lkICpwdHIpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk3NS0vKiBXaGVuIGZsYWdzID09IEdGUF9LRVJORUwsIGl0IHNpZ25hbHMgdGhhdCB0aGUgY2FsbGVyIHdpbGwgbm90IGNhdXNlXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTc2OiAqIGRlYWRsb2NrIHdoZW4gdXNpbmcga21hbGxvYy4gYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncygpIHdpbGwgdXNlXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTc3LSAqIGttYWxsb2MgaWYgdGhlIGZyZWVfbGxpc3QgaXMgZW1wdHkuXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTc4LSAqL1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk3OTp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fY2FjaGVfYWxsb2NfZmxhZ3Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBnZnBfdCBmbGFncylcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05ODAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAyMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDczCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgQlBGIE1lbW9yeSBBbGxvY2F0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYGJwZl9tZW1fY2FjaGVfYWxsb2NgIGFuZCBgYnBmX21lbV9jYWNoZV9hbGxvY19mbGFnc2AgYXJlIGJlaW5nIHVzZWQgb3IgZXhwb3J0ZWQsIHdoaWNoIG1lYW5zIG90aGVyIEJQRiBjb2RlIHJlbGllcyBvbiB0aGVtLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdywgYW5kIGl0JiMzOTtzIGEga2V5IHBvaW50LiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIsIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlc2Ugc3BlY2lmaWMgYWxsb2NhdGlvbiBmdW5jdGlvbnMgdG8gdGhlIGJhc2UuIExldCYjMzk7cyBkaWcgaW50byBgYnBmX21lbV9hbGxvY2AgYW5kIHNlZSBob3cgaXQgaXMgdGllZCB0byB0aGVzZSBjYWNoZSBhbGxvY2F0b3JzLCBzbyB0aGF0IEkgaGF2ZSB0aGUgY29tcGxldGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX21lbV9hbGxvYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvbWVtYWxsb2MuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL21lbWFsbG9jLmMtNi0jaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFfd29yay5oXHUwMDNlXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzojaW5jbHVkZSBcdTAwM2NsaW51eC9icGZfbWVtX2FsbG9jLmhcdTAwM2Vcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy04LSNpbmNsdWRlIFx1MDAzY2xpbnV4L21lbWNvbnRyb2wuaFx1MDAzZVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYz00ODE9c3RhdGljIHZvaWQgcHJlZmlsbF9tZW1fY2FjaGUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIGludCBjcHUpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTUwMS0gKi9cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo1MDI6aW50IGJwZl9tZW1fYWxsb2NfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplLCBib29sIHBlcmNwdSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MDMte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NjktXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTcwOmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU3MS17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU4My1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo1ODQ6aW50IGJwZl9tZW1fYWxsb2NfcGVyY3B1X3VuaXRfaW5pdChzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCBzaXplKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU4NS17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTY0MD1zdGF0aWMgdm9pZCBjaGVja19tZW1fY2FjaGUoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTY1MC1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo2NTE6c3RhdGljIHZvaWQgY2hlY2tfbGVha2VkX29ianMoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTY1Mi17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTY3My1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo2NzQ6c3RhdGljIHZvaWQgZnJlZV9tZW1fYWxsb2Nfbm9fYmFycmllcihzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNjc1LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNjg1LVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjY4NjpzdGF0aWMgdm9pZCBmcmVlX21lbV9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNjg3LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9NzAzPXN0YXRpYyB2b2lkIGZyZWVfbWVtX2FsbG9jX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03MDQte1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjcwNTpcdHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYnBmX21lbV9hbGxvYywgd29yayk7XG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzA2LVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03MTAtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzExOnN0YXRpYyB2b2lkIGRlc3Ryb3lfbWVtX2FsbG9jKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHJjdV9pbl9wcm9ncmVzcylcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03MTIte1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjcxMzpcdHN0cnVjdCBicGZfbWVtX2FsbG9jICpjb3B5O1xua2VybmVsL2JwZi9tZW1hbGxvYy5jLTcxNC1cbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzM1LVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjczNjp2b2lkIGJwZl9tZW1fYWxsb2NfZGVzdHJveShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzM3LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9Nzc2PXN0YXRpYyB2b2lkIG5vdHJhY2UgKnVuaXRfYWxsb2Moc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMpXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTc4My1cdCAqIHByb2dfQVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjc4NDpcdCAqICAgYnBmX21lbV9hbGxvY1xua2VybmVsL2JwZi9tZW1hbGxvYy5jLTc4NS1cdCAqICAgICAgcHJlZW1wdGlvbiBvciBpcnEgLVx1MDAzZSBwcm9nX0Jcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo3ODY6XHQgKiAgICAgICAgYnBmX21lbV9hbGxvY1xua2VybmVsL2JwZi9tZW1hbGxvYy5jLTc4Ny1cdCAqXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTg1OT1zdGF0aWMgdm9pZCBub3RyYWNlIHVuaXRfZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fY2FjaGUgKmMsIHZvaWQgKnB0cilcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtODgyLSAqL1xua2VybmVsL2JwZi9tZW1hbGxvYy5jOjg4Mzp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBzaXplX3Qgc2l6ZSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy04ODQte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MDAtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTAxOnZvaWQgbm90cmFjZSBicGZfbWVtX2ZyZWUoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTAyLXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTE2LVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjkxNzp2b2lkIG5vdHJhY2UgYnBmX21lbV9mcmVlX3JjdShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MTgte1xuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MzItXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTMzOnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTM0LXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTQwLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk0MTp2b2lkIG5vdHJhY2UgYnBmX21lbV9jYWNoZV9mcmVlKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgdm9pZCAqcHRyKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk0Mi17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk0OC1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5NDk6dm9pZCBub3RyYWNlIGJwZl9tZW1fY2FjaGVfZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTUwLXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTYxLSAqIEl0IGNvdWxkIGJlIHVzZWQgd2hlbiB0aGUgcmN1X3Rhc2tzX3RyYWNlIGNhbGxiYWNrIGRvZXMgbm90IGhhdmVcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5NjI6ICogYSBob2xkIG9uIHRoZSBvcmlnaW5hbCBicGZfbWVtX2FsbG9jIG9iamVjdCB0aGF0IGFsbG9jYXRlZCB0aGVcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NjMtICogJiMzOTtwdHImIzM5Oy4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoZSB1bmNvbW1vbiBjb2RlIHBhdGguXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTY0OiAqIE90aGVyd2lzZSwgdGhlIGJwZl9tZW1fYWxsb2MmIzM5O3MgZnJlZV9sbGlzdCBjYW5ub3QgYmUgcmVmaWxsZWRcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NjUtICogYW5kIG1heSBhZmZlY3QgcGVyZm9ybWFuY2UuXG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTk2Nz12b2lkIGJwZl9tZW1fY2FjaGVfcmF3X2ZyZWUodm9pZCAqcHRyKVxuLS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NzgtICovXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTc5OnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGdmcF90IGZsYWdzKVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk4MC17XG4tLVxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMDEtXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MTAwMjppbnQgYnBmX21lbV9hbGxvY19jaGVja19zaXplKGJvb2wgcGVyY3B1LCBzaXplX3Qgc2l6ZSlcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xMDAzLXtcbi0tXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTAxMS1cbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoxMDEyOnZvaWQgYnBmX21lbV9hbGxvY19zZXRfZHRvcihzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKCpkdG9yKSh2b2lkICpvYmosIHZvaWQgKmN0eCksXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTAxMy1cdFx0XHQgICAgdm9pZCAoKmR0b3JfY3R4X2ZyZWUpKHZvaWQgKmN0eCksIHZvaWQgKmN0eClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTI0MQoJCQkJCQkJb3V0cHV0OiAxMzUKCQkJCQkJCXRob3VnaHRzOiA1NTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQlBGIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFkZCBhIGZldyBrZXkgZnVuY3Rpb25zIHRvIGBGb2N1c1N5bWJvbHNgLiBTcGVjaWZpY2FsbHksIGBicGZfbWVtX2FsbG9jYCwgYGJwZl9tZW1fZnJlZWAsIGBicGZfbWVtX2NhY2hlX2FsbG9jYCwgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIGFuZCBgaHRhYl9tYXBfbWVtX3VzYWdlYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIHRob3NlIHN5bWJvbHMgd2lsbCBiZSBpbXBvcnRhbnQgZm9yIGZvY3VzZWQgZnV6emluZy4KCk5leHQsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYEJQRl9TWVNDQUxMYCBpcyB0aGUgb25seSBjb25maWcgZW5hYmxpbmcgQlBGLiBZZXMsIGEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBCUEYgaXMgc29sZWx5IGRlcGVuZGVudCBvbiBgQlBGX1NZU0NBTExgIGJlaW5nIHNldC4gR29vZC4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgcGF0Y2ggaXRzZWxmLiBJIHNlZSBhIGNoYW5nZSB0byB0aGUgYExMSVNUX05PREVfU1pgIGRlZmluaXRpb246CgpgYGBjCi0jZGVmaW5lIExMSVNUX05PREVfU1ogc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKQomIzQzOyNkZWZpbmUgTExJU1RfTk9ERV9TWiBBTElHTihzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpLCA4KQpgYGAKCkFoLCBhbGlnbmluZyB0aGUgYHN0cnVjdCBsbGlzdF9ub2RlYCBzaXplIHRvIDggYnl0ZXMuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIHNvIGxldCYjMzk7cyBjaGVjayBob3cgaXQmIzM5O3MgdXNlZC4gTG9va2luZyBmdXJ0aGVyIGRvd24gaW4gdGhlIHBhdGNoLCBJIHNlZSB0aGlzIGluIHRoZSBgX19hbGxvY2AgZnVuY3Rpb246CgpgYGBjCi0JCXZvaWQgX19wZXJjcHUgKipvYmogPSBrbWFsbG9jX25vZGUoYy0mZ3Q7cGVyY3B1X3NpemUsIGZsYWdzLCBub2RlKTsKJiM0MzsJCXZvaWQgKm9iaiA9IGttYWxsb2Nfbm9kZShjLSZndDtwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpOwogCQl2b2lkIF9fcGVyY3B1ICpwcHRyID0gX19hbGxvY19wZXJjcHVfZ2ZwKGMtJmd0O3VuaXRfc2l6ZSwgOCwgZmxhZ3MpOwogCiAJCWlmICghb2JqIHx8ICFwcHRyKSB7CkBAIC0xNTAsNyAmIzQzOzE1MCw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgbm9kZSwgZ2ZwX3QgZmxhZ3MpCiAJCQlrZnJlZShvYmopOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KLQkJb2JqWzFdID0gcHB0cjsKJiM0MzsJCSoodm9pZCBfX3BlcmNwdSAqKikob2JqICYjNDM7IExMSVNUX05PREVfU1opID0gcHB0cjsKIAkJcmV0dXJuIG9iajsKYGBgCgpPa2F5LCB0aGUgY29kZSBub3cgY29ycmVjdGx5IHBsYWNlcyB0aGUgcGVyY3B1IHBvaW50ZXIgYWZ0ZXIgdGhlIGFsaWduZWQgYGxsaXN0X25vZGVgLiBUaGUgb3JpZ2luYWwgYG9ialsxXWAgbGlrZWx5IGhhZCBhIGJ1ZywgYmVjYXVzZSBpdCBhc3N1bWVkIHRoZSBzaXplIG9mIGBzdHJ1Y3QgbGxpc3Rfbm9kZWAgd2FzIGEgbXVsdGlwbGUgb2YgOC4gVGhhdCBtaWdodCBub3QgYmUgdHJ1ZSwgZXNwZWNpYWxseSBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYW5kIHRoaXMgcGF0Y2ggZml4ZXMgdGhhdC4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGNsZWFybHkgZml4ZXMgYSBidWcgYWZmZWN0aW5nIEJQRiBtYXBzLiBUaGVyZWZvcmUsIEkmIzM5O20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPXRydWVgLgoKKiAgICoqRm9jdXNTeW1ib2xzOioqIGBicGZfbWVtX2FsbG9jYCwgYGJwZl9tZW1fZnJlZWAsIGBicGZfbWVtX2NhY2hlX2FsbG9jYCwgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIGBodGFiX21hcF9tZW1fdXNhZ2VgLgoqICAgKipFbmFibGVDb25maWdzOioqIGBCUEZfU1lTQ0FMTGAuCiogICAqKlJlYXNvbmluZzoqKiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBCUEYgbWVtb3J5IGFsbG9jYXRpb24gbG9naWMgYnkgYWxpZ25pbmcgdGhlIHNpemUgb2YgbGxpc3Rfbm9kZSB0byA4IGJ5dGVzIGFuZCBjb3JyZWN0bHkgcGxhY2luZyB0aGUgcGVyY3B1IHBvaW50ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgQlBGIG1hcHMuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMjI6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX21lbV9hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfbWVtX2ZyZWUmIzM0OywKICAgICYjMzQ7YnBmX21lbV9jYWNoZV9hbGxvYyYjMzQ7LAogICAgJiMzNDticGZfbWVtX2NhY2hlX2ZyZWUmIzM0OywKICAgICYjMzQ7aHRhYl9tYXBfbWVtX3VzYWdlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBieSBhbGlnbmluZyB0aGUgc2l6ZSBvZiBsbGlzdF9ub2RlIHRvIDggYnl0ZXMgYW5kIGNvcnJlY3RseSBwbGFjaW5nIHRoZSBwZXJjcHUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBCUEYgbWFwcyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfbWVtX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9tZW1fZnJlZSYjMzQ7LAogICAgJiMzNDticGZfbWVtX2NhY2hlX2FsbG9jJiMzNDssCiAgICAmIzM0O2JwZl9tZW1fY2FjaGVfZnJlZSYjMzQ7LAogICAgJiMzNDtodGFiX21hcF9tZW1fdXNhZ2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IGFsaWduaW5nIHRoZSBzaXplIG9mIGxsaXN0X25vZGUgdG8gOCBieXRlcyBhbmQgY29ycmVjdGx5IHBsYWNpbmcgdGhlIHBlcmNwdSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiBtYXBzIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTA6NDQuNzY4NjU2MzQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM2MDU0MDExMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfbWVtX2FsbG9jXCIsXG4gICAgXCJicGZfbWVtX2ZyZWVcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfYWxsb2NcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfZnJlZVwiLFxuICAgIFwiaHRhYl9tYXBfbWVtX3VzYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IGFsaWduaW5nIHRoZSBzaXplIG9mIGxsaXN0X25vZGUgdG8gOCBieXRlcyBhbmQgY29ycmVjdGx5IHBsYWNpbmcgdGhlIHBlcmNwdSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiBtYXBzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MDo0NC43Njg2NjI3NTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTY4NTgxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ2MDVjZTgyNGQ3YjM4MTBmYWRhMWE4NGY4MmM1NWMwYmM2MWRmN2ZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMjI6NTA6NDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9oYXNodGFiLmMgYi9rZXJuZWwvYnBmL2hhc2h0YWIuY1xcbmluZGV4IDNkZDliNDkyNGFlNGZiLi45MDBjMTg1MWQyNjQ1ZCAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL2hhc2h0YWIuY1xcbisrKyBiL2tlcm5lbC9icGYvaGFzaHRhYi5jXFxuQEAgLTIzMzcsNyArMjMzNyw3IEBAIHN0YXRpYyB1NjQgaHRhYl9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXFxuIFxcdFxcdGVsc2UgaWYgKCFscnUpXFxuIFxcdFxcdFxcdHVzYWdlICs9IHNpemVvZihzdHJ1Y3QgaHRhYl9lbGVtICopICogbnVtX3Bvc3NpYmxlX2NwdXMoKTtcXG4gXFx0fSBlbHNlIHtcXG4tI2RlZmluZSBMTElTVF9OT0RFX1NaIHNpemVvZihzdHJ1Y3QgbGxpc3Rfbm9kZSlcXG4rI2RlZmluZSBMTElTVF9OT0RFX1NaIEFMSUdOKHNpemVvZihzdHJ1Y3QgbGxpc3Rfbm9kZSksIDgpXFxuIFxcbiBcXHRcXHRudW1fZW50cmllcyA9IGh0YWItXFx1MDAzZXVzZV9wZXJjcHVfY291bnRlciA/XFxuIFxcdFxcdFxcdFxcdFxcdCAgcGVyY3B1X2NvdW50ZXJfc3VtKFxcdTAwMjZodGFiLVxcdTAwM2VwY291bnQpIDpcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9tZW1hbGxvYy5jIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jXFxuaW5kZXggZTk2NjJkYjcxOThmZTAuLmNhNzU1NWIxZGEzNGZjIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xcbisrKyBiL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xcbkBAIC0zMyw3ICszMyw3IEBAXFxuICAqIEV2ZXJ5IGFsbG9jYXRlZCBvYmplY3RlZCBpcyBwYWRkZWQgd2l0aCBleHRyYSA4IGJ5dGVzIHRoYXQgY29udGFpbnNcXG4gICogc3RydWN0IGxsaXN0X25vZGUuXFxuICAqL1xcbi0jZGVmaW5lIExMSVNUX05PREVfU1ogc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKVxcbisjZGVmaW5lIExMSVNUX05PREVfU1ogQUxJR04oc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKSwgOClcXG4gXFxuICNkZWZpbmUgQlBGX01FTV9BTExPQ19TSVpFX01BWCA0MDk2XFxuIFxcbkBAIC0xNDIsNyArMTQyLDcgQEAgc3RhdGljIHN0cnVjdCBsbGlzdF9ub2RlIG5vdHJhY2UgKl9fbGxpc3RfZGVsX2ZpcnN0KHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKVxcbiBzdGF0aWMgdm9pZCAqX19hbGxvYyhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IG5vZGUsIGdmcF90IGZsYWdzKVxcbiB7XFxuIFxcdGlmIChjLVxcdTAwM2VwZXJjcHVfc2l6ZSkge1xcbi1cXHRcXHR2b2lkIF9fcGVyY3B1ICoqb2JqID0ga21hbGxvY19ub2RlKGMtXFx1MDAzZXBlcmNwdV9zaXplLCBmbGFncywgbm9kZSk7XFxuK1xcdFxcdHZvaWQgKm9iaiA9IGttYWxsb2Nfbm9kZShjLVxcdTAwM2VwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpO1xcbiBcXHRcXHR2b2lkIF9fcGVyY3B1ICpwcHRyID0gX19hbGxvY19wZXJjcHVfZ2ZwKGMtXFx1MDAzZXVuaXRfc2l6ZSwgOCwgZmxhZ3MpO1xcbiBcXG4gXFx0XFx0aWYgKCFvYmogfHwgIXBwdHIpIHtcXG5AQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgbm9kZSwgZ2ZwX3QgZmxhZ3MpXFxuIFxcdFxcdFxcdGtmcmVlKG9iaik7XFxuIFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHRcXHR9XFxuLVxcdFxcdG9ialsxXSA9IHBwdHI7XFxuK1xcdFxcdCoodm9pZCBfX3BlcmNwdSAqKikob2JqICsgTExJU1RfTk9ERV9TWikgPSBwcHRyO1xcbiBcXHRcXHRyZXR1cm4gb2JqO1xcbiBcXHR9XFxuIFxcbkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKVxcbiBzdGF0aWMgdm9pZCBmcmVlX29uZSh2b2lkICpvYmosIGJvb2wgcGVyY3B1KVxcbiB7XFxuIFxcdGlmIChwZXJjcHUpXFxuLVxcdFxcdGZyZWVfcGVyY3B1KCgodm9pZCBfX3BlcmNwdSAqKilvYmopWzFdKTtcXG4rXFx0XFx0ZnJlZV9wZXJjcHUoKih2b2lkIF9fcGVyY3B1ICoqKShvYmogKyBMTElTVF9OT0RFX1NaKSk7XFxuIFxcbiBcXHRrZnJlZShvYmopO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjQ1LjIwNTAzMTcxNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxNjkwMTY3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfbWVtX2FsbG9jXCIsXG4gICAgXCJicGZfbWVtX2ZyZWVcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfYWxsb2NcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfZnJlZVwiLFxuICAgIFwiaHRhYl9tYXBfbWVtX3VzYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IGFsaWduaW5nIHRoZSBzaXplIG9mIGxsaXN0X25vZGUgdG8gOCBieXRlcyBhbmQgY29ycmVjdGx5IHBsYWNpbmcgdGhlIHBlcmNwdSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiBtYXBzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ2MDVjZTgyNGQ3YjM4MTBmYWRhMWE4NGY4MmM1NWMwYmM2MWRmN2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxNyAyMjo1MDo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvaGFzaHRhYi5jIGIva2VybmVsL2JwZi9oYXNodGFiLmNcbmluZGV4IDNkZDliNDkyNGFlNGZiLi45MDBjMTg1MWQyNjQ1ZCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvaGFzaHRhYi5jXG4rKysgYi9rZXJuZWwvYnBmL2hhc2h0YWIuY1xuQEAgLTIzMzcsNyArMjMzNyw3IEBAIHN0YXRpYyB1NjQgaHRhYl9tYXBfbWVtX3VzYWdlKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApXG4gXHRcdGVsc2UgaWYgKCFscnUpXG4gXHRcdFx0dXNhZ2UgKz0gc2l6ZW9mKHN0cnVjdCBodGFiX2VsZW0gKikgKiBudW1fcG9zc2libGVfY3B1cygpO1xuIFx0fSBlbHNlIHtcbi0jZGVmaW5lIExMSVNUX05PREVfU1ogc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKVxuKyNkZWZpbmUgTExJU1RfTk9ERV9TWiBBTElHTihzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpLCA4KVxuIFxuIFx0XHRudW1fZW50cmllcyA9IGh0YWItXHUwMDNldXNlX3BlcmNwdV9jb3VudGVyID9cbiBcdFx0XHRcdFx0ICBwZXJjcHVfY291bnRlcl9zdW0oXHUwMDI2aHRhYi1cdTAwM2VwY291bnQpIDpcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL21lbWFsbG9jLmMgYi9rZXJuZWwvYnBmL21lbWFsbG9jLmNcbmluZGV4IGU5NjYyZGI3MTk4ZmUwLi5jYTc1NTViMWRhMzRmYyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvbWVtYWxsb2MuY1xuKysrIGIva2VybmVsL2JwZi9tZW1hbGxvYy5jXG5AQCAtMzMsNyArMzMsNyBAQFxuICAqIEV2ZXJ5IGFsbG9jYXRlZCBvYmplY3RlZCBpcyBwYWRkZWQgd2l0aCBleHRyYSA4IGJ5dGVzIHRoYXQgY29udGFpbnNcbiAgKiBzdHJ1Y3QgbGxpc3Rfbm9kZS5cbiAgKi9cbi0jZGVmaW5lIExMSVNUX05PREVfU1ogc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKVxuKyNkZWZpbmUgTExJU1RfTk9ERV9TWiBBTElHTihzaXplb2Yoc3RydWN0IGxsaXN0X25vZGUpLCA4KVxuIFxuICNkZWZpbmUgQlBGX01FTV9BTExPQ19TSVpFX01BWCA0MDk2XG4gXG5AQCAtMTQyLDcgKzE0Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgbGxpc3Rfbm9kZSBub3RyYWNlICpfX2xsaXN0X2RlbF9maXJzdChzdHJ1Y3QgbGxpc3RfaGVhZCAqaGVhZClcbiBzdGF0aWMgdm9pZCAqX19hbGxvYyhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IG5vZGUsIGdmcF90IGZsYWdzKVxuIHtcbiBcdGlmIChjLVx1MDAzZXBlcmNwdV9zaXplKSB7XG4tXHRcdHZvaWQgX19wZXJjcHUgKipvYmogPSBrbWFsbG9jX25vZGUoYy1cdTAwM2VwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuK1x0XHR2b2lkICpvYmogPSBrbWFsbG9jX25vZGUoYy1cdTAwM2VwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuIFx0XHR2b2lkIF9fcGVyY3B1ICpwcHRyID0gX19hbGxvY19wZXJjcHVfZ2ZwKGMtXHUwMDNldW5pdF9zaXplLCA4LCBmbGFncyk7XG4gXG4gXHRcdGlmICghb2JqIHx8ICFwcHRyKSB7XG5AQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgbm9kZSwgZ2ZwX3QgZmxhZ3MpXG4gXHRcdFx0a2ZyZWUob2JqKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuLVx0XHRvYmpbMV0gPSBwcHRyO1xuK1x0XHQqKHZvaWQgX19wZXJjcHUgKiopKG9iaiArIExMSVNUX05PREVfU1opID0gcHB0cjtcbiBcdFx0cmV0dXJuIG9iajtcbiBcdH1cbiBcbkBAIC0yNTcsNyArMjU3LDcgQEAgc3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKVxuIHN0YXRpYyB2b2lkIGZyZWVfb25lKHZvaWQgKm9iaiwgYm9vbCBwZXJjcHUpXG4ge1xuIFx0aWYgKHBlcmNwdSlcbi1cdFx0ZnJlZV9wZXJjcHUoKCh2b2lkIF9fcGVyY3B1ICoqKW9iailbMV0pO1xuK1x0XHRmcmVlX3BlcmNwdSgqKHZvaWQgX19wZXJjcHUgKiopKG9iaiArIExMSVNUX05PREVfU1opKTtcbiBcbiBcdGtmcmVlKG9iaik7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTA6NDUuMjA1MDM0MjY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg5NjkxMjE3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIEJQRiBNZW1vcnkgQWxsb2NhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGtlcm5lbC9icGYvaGFzaHRhYi5jYCBhbmQgYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AuIE15IGluaXRpYWwgaW5zdGluY3QgdGVsbHMgbWUgdGhpcyBpcyByZWxhdGVkIHRvIGEgZnVuZGFtZW50YWwgYXNwZWN0IG9mIEJQRiBtZW1vcnkgbWFuYWdlbWVudC4gTGV0J3MgZGlnIGluLlxuXG5UaGUgZmlyc3QgY2hhbmdlLCBgTExJU1RfTk9ERV9TWmAgYmVpbmcgYWRqdXN0ZWQgdG8gYW4gOC1ieXRlIGFsaWduZWQgc2l6ZSwgaW5kaWNhdGVzIGEgbGlrZWx5IGNvbmNlcm4gd2l0aCBtZW1vcnkgYWxpZ25tZW50IHdpdGhpbiB0aGUgbGlua2VkIGxpc3Qgbm9kZSBzdHJ1Y3R1cmVzLiBUaGlzIGNvdWxkIGJlIGNydWNpYWwgZm9yIHBlcmZvcm1hbmNlIG9yLCBtb3JlIGNyaXRpY2FsbHksIGNvcnJlY3RuZXNzLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBlci1DUFUgZGF0YS4gQSBtaXNhbGlnbmVkIGFjY2VzcyBpbiBCUEYgY291bGQgbGVhZCB0byBzaWduaWZpY2FudCBwcm9ibGVtcy5cblxuVGhlIGBrbWFsbG9jX25vZGVgIGNoYW5nZXMgd2l0aGluIGBfX2FsbG9jYCBpbiBgbWVtYWxsb2MuY2AgYXJlIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLiBXZSdyZSBtb3ZpbmcgZnJvbSBhIGB2b2lkIF9fcGVyY3B1ICoqb2JqYCB0byBgdm9pZCAqb2JqYC4gVGhpcyBsb29rcyBsaWtlIGEgY2hhbmdlIHRvIGhvdyB0aGUgcGVyLUNQVSBkYXRhIGlzIGJlaW5nIHN0b3JlZCBhbmQgYWNjZXNzZWQuIFRoZSBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbnMgdG8gaG93IHdlICpzZXQqIGFuZCAqZnJlZSogdGhhdCBkYXRhIChgKih2b2lkIF9fcGVyY3B1ICoqKShvYmogKyBMTElTVF9OT0RFX1NaKSA9IHBwdHI7YCBhbmQgYGZyZWVfcGVyY3B1KCoodm9pZCBfX3BlcmNwdSAqKikob2JqICsgTExJU1RfTk9ERV9TWikpO2AgcmVzcGVjdGl2ZWx5KSBjbGVhcmx5IHNob3cgYSBzaGlmdCBpbiBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zLiBJdCBhcHBlYXJzIHdlJ3JlIG5vdyBzdG9yaW5nIGEgcG9pbnRlciB0byBwZXItQ1BVIGRhdGEgYXQgYW4gb2Zmc2V0LiBUaGlzIHN1Z2dlc3RzIHdlIGFyZSBsaWtlbHkgcGFja2luZyBwZXItQ1BVIGRhdGEgYWxvbmdzaWRlIHRoZSBsaW5rZWQgbGlzdCBub2RlIHN0cnVjdHVyZS4gVGhpcyBjb21wYWN0aW9uIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLlxuXG5UaGlzIHJlZWtzIG9mIGEgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIG9wdGltaXphdGlvbiBvciwgcG9zc2libHksIGEgY3JpdGljYWwgYnVnIGZpeCByZWxhdGVkIHRvIGhvdyBwZXItQ1BVIGRhdGEgaXMgaGFuZGxlZCBhbmQgYWxsb2NhdGVkIGluIHRoZSBCUEYgY29udGV4dC4gVGhpcyBpcyBzb21ldGhpbmcgdGhhdCBjb3VsZCBoYXZlIHNlY3VyaXR5IGltcGxpY2F0aW9ucy5cblxuVGhlcmVmb3JlLCB0aGlzIHBhdGNoIHdhcnJhbnRzIHNlcmlvdXMgYXR0ZW50aW9uIGZvciBmdXp6aW5nLiBJJ2xsIGZsYWcgaXQgYXMgYFdvcnRoRnV6emluZz10cnVlYC5cblxuRm9yIHRoZSBmdXp6aW5nIHRhcmdldHMsIHRoZSBgX19hbGxvY2AsIGBhbGxvY19idWxrYCwgYGZyZWVfb25lYCwgYW5kIGBodGFiX21hcF9tZW1fdXNhZ2VgIGZ1bmN0aW9ucyBqdW1wIG91dCBhcyB0aGUga2V5IGFyZWFzIHRvIHByb2JlLiBUaGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBhbmQgY2xlYW51cCBmdW5jdGlvbnMuXG5cbkZpbmFsbHksIHJlZ2FyZGluZyBjb25maWcgb3B0aW9ucywgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIGlzIHRoZSBwZXJ0aW5lbnQgb25lLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCB0aGF0J3MgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ0NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjUxLjEwMTk0ODcwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQyNDU3MjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjUzLjA0NDQxMTQ4NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTE2MTc0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBNZW1vcnkgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgdXNpbmcgYEJQRl9TWVNDQUxMYCwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhhdCdzIHN1ZmZpY2llbnQgZm9yIG15IHB1cnBvc2VzLiBHaXZlbiB0aGUgYXBwbGljYXRpb24ncyByZWxpYW5jZSBvbiBCUEYgbWFwcywgaXQncyBjbGVhciB0aGF0IHRoZSBCUEYgbWVtb3J5IGFsbG9jYXRvciBpcyBpbiBwbGF5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW5uZXIgd29ya2luZ3MgdG8gZW5zdXJlIGVmZmljaWVudCByZXNvdXJjZSBtYW5hZ2VtZW50LlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlIHJlbGV2YW50IHN5bWJvbHMgaGVyZS4gSSdsbCBuZWVkIHRvIHNjcnV0aW5pemUgYF9fYWxsb2NgLCBgZnJlZV9vbmVgLCBhbmQgYGh0YWJfbWFwX21lbV91c2FnZWAuIEknbGwgd2FudCB0byBjaGVjayBpZiBgX19hbGxvY2AgYW5kIGBmcmVlX29uZWAgYXJlIHN0YXRpYy4gQWggeWVzLCB0aGV5J3JlIHN0YXRpYyB3aXRoaW4gYGtlcm5lbC9icGYvbWVtYWxsb2MuY2AuIFxuXG5TaW5jZSB0aGV5J3JlIHN0YXRpYywgSSdsbCBuZWVkIHRvIGV4cG9zZSB0aGVpciBmdW5jdGlvbmFsaXR5IHRocm91Z2ggYSB3cmFwcGVyLiBJIHRoaW5rIEknbGwgYWRkIGBicGZfbWVtX2FsbG9jYCwgb3Igc29tZXRoaW5nIHNpbWlsYXJseSBuYW1lZCwgdGhhdCBjYW4gY2FsbCB0aG9zZSBmdW5jdGlvbnMsIGFsbG93aW5nIGNvbnRyb2xsZWQgbWVtb3J5IGFsbG9jYXRpb24gd2l0aGluIG15IHNjb3BlLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgbGV2ZWwgb2YgY29udHJvbCBJJ20gYWZ0ZXIsIGdpdmVuIHRoZSBjb25zdHJhaW50cyBvZiB0aG9zZSBzdGF0aWMgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzMxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjU2LjQ1NjAzMDQzNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Nzc1MjU3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvbWVtYWxsb2MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL21lbWFsbG9jLmM9MTMwPXN0YXRpYyBzdHJ1Y3QgbGxpc3Rfbm9kZSBub3RyYWNlICpfX2xsaXN0X2RlbF9maXJzdChzdHJ1Y3QgbGxpc3RfaGVhZCAqaGVhZClcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xNDEtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjE0MjpzdGF0aWMgdm9pZCAqX19hbGxvYyhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IG5vZGUsIGdmcF90IGZsYWdzKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy0xNDMte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTE0NS1cXHRcXHR2b2lkICpvYmogPSBrbWFsbG9jX25vZGUoYy1cXHUwMDNlcGVyY3B1X3NpemUsIGZsYWdzLCBub2RlKTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MTQ2OlxcdFxcdHZvaWQgX19wZXJjcHUgKnBwdHIgPSBfX2FsbG9jX3BlcmNwdV9nZnAoYy1cXHUwMDNldW5pdF9zaXplLCA4LCBmbGFncyk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTE0Ny1cXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz0yMDc9c3RhdGljIHZvaWQgYWxsb2NfYnVsayhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNudCwgaW50IG5vZGUsIGJvb2wgYXRvbWljKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTI0Ny1cXHRcXHQgKi9cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6MjQ4OlxcdFxcdG9iaiA9IF9fYWxsb2MoYywgbm9kZSwgZ2ZwKTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjQ5LVxcdFxcdGlmICghb2JqKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTUwMj1pbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTUxNy1cXHRpZiAoc2l6ZSkge1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo1MTg6XFx0XFx0cGMgPSBfX2FsbG9jX3BlcmNwdV9nZnAoc2l6ZW9mKCpwYyksIDgsIEdGUF9LRVJORUwpO1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MTktXFx0XFx0aWYgKCFwYylcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NDQtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjU0NTpcXHRwY2MgPSBfX2FsbG9jX3BlcmNwdV9nZnAoc2l6ZW9mKCpjYyksIDgsIEdGUF9LRVJORUwpO1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NDYtXFx0aWYgKCFwY2MpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9NTcwPWludCBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU3My1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTc0OlxcdHBjYyA9IF9fYWxsb2NfcGVyY3B1X2dmcChzaXplb2Yoc3RydWN0IGJwZl9tZW1fY2FjaGVzKSwgOCwgR0ZQX0tFUk5FTCk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU3NS1cXHRpZiAoIXBjYylcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz05Nzk9dm9pZCBub3RyYWNlICpicGZfbWVtX2NhY2hlX2FsbG9jX2ZsYWdzKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgZ2ZwX3QgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTkxLVxcdFxcdG9sZF9tZW1jZyA9IHNldF9hY3RpdmVfbWVtY2cobWVtY2cpO1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5OTI6XFx0XFx0cmV0ID0gX19hbGxvYyhjLCBOVU1BX05PX05PREUsIEdGUF9LRVJORUwgfCBfX0dGUF9OT1dBUk4gfCBfX0dGUF9BQ0NPVU5UKTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTkzLVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUwOjU2LjUzMzc5NDE0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDY4NDQ1MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBmb3JtYXR0ZWQgYXMgcmVxdWVzdGVkOlxuXG4qKk1lbW9yeSBBbGxvY2F0aW9uIGFuZCBEZWFsbG9jYXRpb24gaW4gdGhlIEJQRiBTdWJzeXN0ZW0qKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJ20gc2VlaW5nLCBgYnBmX21lbV9jYWNoZV9hbGxvY19mbGFnc2Agc2VlbXMgdG8gYmUgb3VyIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IHdpdGggc3BlY2lmaWMgZmxhZ3MuIEl0LCBhbmQgbGlrZWx5IG90aGVyIEJQRi1yZWxhdGVkIGFsbG9jYXRpb24gcGF0aHdheXMsIGV2ZW50dWFsbHkgZnVubmVsIGRvd24gdG8gdGhpcyBgX19hbGxvY2AgZnVuY3Rpb24uIFRoYXQncyB0aGUgY29yZSBhbGxvY2F0aW9uIHByaW1pdGl2ZSwgdGhlIHdvcmtob3JzZS4gSW50ZXJlc3RpbmcuXG5cbkFuZCwgaWYgSSdtIGludGVycHJldGluZyB0aGlzIGNvcnJlY3RseSwgYGFsbG9jX2J1bGtgIGFsc28gdXNlcyBgX19hbGxvY2AuIFRoaXMgc3VnZ2VzdHMgdGhlcmUncyBzb21lIHNoYXJlZCB1bmRlcmx5aW5nIG1lY2hhbmlzbSBmb3IgYm90aCBzaW5nbGUgYWxsb2NhdGlvbnMgYW5kIGJ1bGsgYWxsb2NhdGlvbnMuIFRoaXMgaXMgc2Vuc2libGUsIGl0IG1pbmltaXplcyBjb2RlIGR1cGxpY2F0aW9uIGFuZCBsaWtlbHkgb3B0aW1pemVzIGZvciBjb21tb24gdW5kZXJseWluZyBoYXJkd2FyZSBiZWhhdmlvci5cblxuT24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGNvaW4sIGBmcmVlX29uZWAgaXMgY3JpdGljYWwgZm9yIHJlbGVhc2luZyB0aGUgbWVtb3J5LCBhbmQgaXQgbG9va3MgbGlrZSBpdCBnZXRzIGNhbGxlZCBmcm9tIHR3byBkaXN0aW5jdCBwbGFjZXM6IGBmcmVlX2J1bGtgLCB3aGljaCBoYW5kbGVzIHJlbGVhc2luZyBjaHVua3MgYWxsb2NhdGVkIGluIGJ1bGssIGFuZCBgYnBmX21lbV9hbGxvY19kZXN0cm95YC4gVGhlIGxhdHRlciBsaWtlbHkgaGFuZGxlcyBmcmVlaW5nIG1lbW9yeSB0aGF0J3Mgc3BlY2lmaWNhbGx5IGFzc29jaWF0ZWQgd2l0aCBCUEYgYWxsb2NhdGlvbiBzdHJ1Y3R1cmVzIHdoZW4gdGhvc2Ugc3RydWN0dXJlcyB0aGVtc2VsdmVzIGFyZSBkZXN0cm95ZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIGVuc3VyaW5nIGV2ZXJ5dGhpbmcgaXMgcHJvcGVybHkgY2xlYW5lZCB1cCB3aGVuIHRoZSBCUEYgbWVtb3J5IG1hbmFnZXIgaXMgc2h1dCBkb3duLiBUaGUgY29tbW9uYWxpdHkgd2l0aCBgZnJlZV9idWxrYCBzdWdnZXN0cyB0aGF0IHRoZSBzaW5nbGUtb2JqZWN0IGZyZWVpbmcgc3RyYXRlZ3kgYW5kIGJ1bGsgZnJlZWluZyBzaGFyZSBrZXkgZWxlbWVudHMsIGFnYWluIGltcHJvdmluZyBlZmZpY2llbmN5LlxuXG5Pa2F5LCBzbyB0aGUgZmxvdyBpczogQWxsb2NhdGlvbiBjYWxscyBsZWFkIHRvIGBfX2FsbG9jYC4gRnJlZWluZyBoYXBwZW5zIHZpYSBgZnJlZV9vbmVgLCBjYWxsZWQgYnkgYGZyZWVfYnVsa2AgYW5kIGEgZGVzdHJ1Y3Rvciwgd2hpY2ggbWFuYWdlcyBmcmVlaW5nIHRoZSBtZW1vcnkuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUyMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjAwLjI4MDY0MDIzNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTY1Mzk4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmcmVlX29uZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL21lbWFsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9tZW1hbGxvYy5jPTIwNz1zdGF0aWMgdm9pZCBhbGxvY19idWxrKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgY250LCBpbnQgbm9kZSwgYm9vbCBhdG9taWMpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjU2LVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzoyNTc6c3RhdGljIHZvaWQgZnJlZV9vbmUodm9pZCAqb2JqLCBib29sIHBlcmNwdSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjU4LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz0yNjU9c3RhdGljIGludCBmcmVlX2FsbChzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgc3RydWN0IGxsaXN0X25vZGUgKmxsbm9kZSwgYm9vbCBwZXJjcHUpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMjcyLVxcdFxcdFxcdGMtXFx1MDAzZWR0b3IoKHZvaWQgKilwb3MgKyBMTElTVF9OT0RFX1NaLCBjLVxcdTAwM2VkdG9yX2N0eCk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjI3MzpcXHRcXHRmcmVlX29uZShwb3MsIHBlcmNwdSk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTI3NC1cXHRcXHRjbnQrKztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTE6MDAuMzM2MzAwODU1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1MTU5MjI0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiB0aGUgd2VlZHMgb2YgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIFJDVTpcblxuKipEaWdnaW5nIGludG8gdGhlIE1lbW9yeSBSZWNsYW1hdGlvbiBGbG93KipcblxuQWxyaWdodCwgc28gYGZyZWVfYWxsYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCdzIHVsdGltYXRlbHkgcmVzcG9uc2libGUgZm9yIGNsZWFuaW5nIHVwIGEgYnVuY2ggb2YgbWVtb3J5IGJsb2NrcywgYW5kIEkgc2VlIGl0J3MgY2FsbGluZyBgZnJlZV9vbmVgLiBUaGF0J3MgYSBjbGFzc2ljIHBhdHRlcm4gLSBgZnJlZV9hbGxgIGxpa2VseSBpdGVyYXRlcyB0aHJvdWdoIGEgbGlzdCBvciBzdHJ1Y3R1cmUsIGFuZCBmb3IgZWFjaCBpbmRpdmlkdWFsIGVsZW1lbnQsIGl0IGNhbGxzIGBmcmVlX29uZWAgdG8gZG8gdGhlIGFjdHVhbCBtZW1vcnkgZGVhbGxvY2F0aW9uLiBNYWtlcyBwZXJmZWN0IHNlbnNlLlxuXG5UaGVuIEkgc2VlIHRoYXQgYF9fZnJlZV9yY3VgIGlzIHRoZSBvbmUgY2FsbGluZyBgZnJlZV9hbGxgLiBUaGF0IHRlbGxzIG1lIHdlIGFyZSBkZWFsaW5nIHdpdGggUkNVLCBzbyB0aGVzZSBmcmVlcyBhcmUgbGlrZWx5IGJlaW5nIGRvbmUgaW4gYSBkZWZlcnJlZCBtYW5uZXIsIGVuc3VyaW5nIHNhZmV0eSBkdXJpbmcgY29uY3VycmVudCByZWFkIG9wZXJhdGlvbnMuIE9rYXksIHRoYXQncyBpbXBvcnRhbnQgY29udGV4dC4gVGhpcyB3aG9sZSBmbG93IGlzIGNsZWFybHkgdGllZCB0byBSQ1UtYmFzZWQgcmVjbGFtYXRpb24uIE5vdywgd2hlcmUgYXJlIHRoZSBtZW1vcnkgdXNhZ2Ugc3RhdHM/IFRpbWUgdG8gY2hlY2sgYGh0YWJfbWFwX21lbV91c2FnZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byB0cmFjayBvciBhY2NvdW50IGZvciB3aGF0ZXZlciBpcyBiZWluZyBmcmVlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE4NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjAzLjY4Nzg5NTAxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY5MzU3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHRhYl9tYXBfbWVtX3VzYWdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGFzaHRhYi5jPTIyNjM9c3RhdGljIGxvbmcgYnBmX2Zvcl9lYWNoX2hhc2hfZWxlbShzdHJ1Y3QgYnBmX21hcCAqbWFwLCBicGZfY2FsbGJhY2tfdCBjYWxsYmFja19mbixcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzMTUtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjMxNjpzdGF0aWMgdTY0IGh0YWJfbWFwX21lbV91c2FnZShjb25zdCBzdHJ1Y3QgYnBmX21hcCAqbWFwKVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzMTcte1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MjM1NT1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjM3MC1cXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyMzcxOlxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzNzItXFx0QkFUQ0hfT1BTKGh0YWIpLFxcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmM9MjM3Nz1jb25zdCBzdHJ1Y3QgYnBmX21hcF9vcHMgaHRhYl9scnVfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTIzOTMtXFx0Lm1hcF9jaGVja19idGYgPSBodGFiX21hcF9jaGVja19idGYsXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjM5NDpcXHQubWFwX21lbV91c2FnZSA9IGh0YWJfbWFwX21lbV91c2FnZSxcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yMzk1LVxcdEJBVENIX09QUyhodGFiX2xydSksXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNTU4PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX3BlcmNwdV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU3My1cXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNTc0OlxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI1NzUtXFx0QkFUQ0hfT1BTKGh0YWJfcGVyY3B1KSxcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jPTI1ODA9Y29uc3Qgc3RydWN0IGJwZl9tYXBfb3BzIGh0YWJfbHJ1X3BlcmNwdV9tYXBfb3BzID0ge1xcbi0tXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjU5NC1cXHQubWFwX2NoZWNrX2J0ZiA9IGh0YWJfbWFwX2NoZWNrX2J0ZixcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYzoyNTk1OlxcdC5tYXBfbWVtX3VzYWdlID0gaHRhYl9tYXBfbWVtX3VzYWdlLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI1OTYtXFx0QkFUQ0hfT1BTKGh0YWJfbHJ1X3BlcmNwdSksXFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNzI2PWNvbnN0IHN0cnVjdCBicGZfbWFwX29wcyBodGFiX29mX21hcHNfbWFwX29wcyA9IHtcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI3MzctXFx0Lm1hcF9jaGVja19idGYgPSBtYXBfY2hlY2tfbm9fYnRmLFxcbmtlcm5lbC9icGYvaGFzaHRhYi5jOjI3Mzg6XFx0Lm1hcF9tZW1fdXNhZ2UgPSBodGFiX21hcF9tZW1fdXNhZ2UsXFxua2VybmVsL2JwZi9oYXNodGFiLmMtMjczOS1cXHRCQVRDSF9PUFMoaHRhYiksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDIyOjUxOjAzLjc0NDgzNTczNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE2OTk3MzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIE1lbW9yeSBBbGxvY2F0aW9uIGluIHRoZSBCUEYgU3Vic3lzdGVtKipcblxuQWxyaWdodCwgc28gYGh0YWJfbWFwX21lbV91c2FnZWAg4oCTIHRoYXQncyBhIG1hcCBvcGVyYXRpb24sIHVuZGVyc3Rvb2QuIE15IG1pbmQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBzb21ldGhpbmcgdGhhdCdzIGxpa2VseSBjb250cmlidXRpbmcgdG8gbWVtb3J5IHVzYWdlIHdpdGhpbiB0aGUgQlBGIGNvbnRleHQuIE5vdywgSSBzZWUgYGJwZl9tZW1fY2FjaGVfYWxsb2NfZmxhZ3NgIG1lbnRpb25lZC4gQWgsIGl0J3MgY2FsbGVkIGJ5IGJvdGggYGJwZl9tZW1fY2FjaGVfYWxsb2NgIGFuZCBgYnBmX21lbV9hbGxvY2AuIFRoYXQgdGVsbHMgbWUgaXQncyBjZW50cmFsIHRvIGhvdyBtZW1vcnkgaXMgcmVxdWVzdGVkIHdpdGhpbiB0aGUgQlBGIHN1YnN5c3RlbSwgc2luY2UgaXQgaXMgYSBjb21tb24gZmFjdG9yIHRvIHRob3NlIHR3byBhbGxvY2F0b3JzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGJldHRlci4gTGV0J3MgZGVsdmUgaW50byBgYnBmX21lbV9jYWNoZV9hbGxvY2AgZmlyc3QgdG8gZ2FpbiBzb21lIGluc2lnaHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY2FjaGUgYWxsb2NhdGlvbiBvcGVyYXRlcywgc2luY2UgdGhhdCdzIHdoZXJlIGBicGZfbWVtX2NhY2hlX2FsbG9jX2ZsYWdzYCBjb21lcyBpbi4gVGhhdCBzaG91bGQgcHJvdmlkZSBhIGdvb2QganVtcGluZy1vZmYgcG9pbnQgdG8gYXNzZXNzIHRoZSBpbXBhY3Qgb2YgdGhlc2UgZmxhZ3Mgb24gb3ZlcmFsbCBtZW1vcnkgY29uc3VtcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyOTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MTowNy4wNjE4MzUwMThaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NDEyMjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9tZW1fY2FjaGVfYWxsb2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9tZW1hbGxvYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvbWVtYWxsb2MuYz00Mzg9c3RhdGljIHZvaWQgbm90cmFjZSBpcnFfd29ya19yYWlzZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy00NDItXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjQ0MzovKiBGb3IgdHlwaWNhbCBicGYgbWFwIGNhc2UgdGhhdCB1c2VzIGJwZl9tZW1fY2FjaGVfYWxsb2MgYW5kIHNpbmdsZSBidWNrZXRcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNDQ0LSAqIHRoZSBmcmVlbGlzdCBjYWNoZSB3aWxsIGJlIGVsZW1fc2l6ZSAqIDY0IChvciBsZXNzKSBvbiBlYWNoIGNwdS5cXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz05MTc9dm9pZCBub3RyYWNlIGJwZl9tZW1fZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTMyLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MzM6dm9pZCBub3RyYWNlICpicGZfbWVtX2NhY2hlX2FsbG9jKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTM0LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz05Njc9dm9pZCBicGZfbWVtX2NhY2hlX3Jhd19mcmVlKHZvaWQgKnB0cilcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05NzUtLyogV2hlbiBmbGFncyA9PSBHRlBfS0VSTkVMLCBpdCBzaWduYWxzIHRoYXQgdGhlIGNhbGxlciB3aWxsIG5vdCBjYXVzZVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5NzY6ICogZGVhZGxvY2sgd2hlbiB1c2luZyBrbWFsbG9jLiBicGZfbWVtX2NhY2hlX2FsbG9jX2ZsYWdzKCkgd2lsbCB1c2VcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTc3LSAqIGttYWxsb2MgaWYgdGhlIGZyZWVfbGxpc3QgaXMgZW1wdHkuXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk3OC0gKi9cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTc5OnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGdmcF90IGZsYWdzKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05ODAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MTowNy4xMTgyNTIxNDdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc2MzA1MTQ5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqSW52ZXN0aWdhdGluZyBCUEYgTWVtb3J5IEFsbG9jYXRpb24qKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBicGZfbWVtX2NhY2hlX2FsbG9jYCBhbmQgYGJwZl9tZW1fY2FjaGVfYWxsb2NfZmxhZ3NgIGFyZSBiZWluZyB1c2VkIG9yIGV4cG9ydGVkLCB3aGljaCBtZWFucyBvdGhlciBCUEYgY29kZSByZWxpZXMgb24gdGhlbS4gVGhhdCdzIGdvb2QgdG8ga25vdywgYW5kIGl0J3MgYSBrZXkgcG9pbnQuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciwgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGVzZSBzcGVjaWZpYyBhbGxvY2F0aW9uIGZ1bmN0aW9ucyB0byB0aGUgYmFzZS4gTGV0J3MgZGlnIGludG8gYGJwZl9tZW1fYWxsb2NgIGFuZCBzZWUgaG93IGl0IGlzIHRpZWQgdG8gdGhlc2UgY2FjaGUgYWxsb2NhdG9ycywgc28gdGhhdCBJIGhhdmUgdGhlIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNzMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MTowOS44ODEzMDU5MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0MDk0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX21lbV9hbGxvY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL21lbWFsbG9jLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9tZW1hbGxvYy5jLTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lycV93b3JrLmhcXHUwMDNlXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjc6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZl9tZW1fYWxsb2MuaFxcdTAwM2VcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOC0jaW5jbHVkZSBcXHUwMDNjbGludXgvbWVtY29udHJvbC5oXFx1MDAzZVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTQ4MT1zdGF0aWMgdm9pZCBwcmVmaWxsX21lbV9jYWNoZShzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYywgaW50IGNwdSlcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MDEtICovXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjUwMjppbnQgYnBmX21lbV9hbGxvY19pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgaW50IHNpemUsIGJvb2wgcGVyY3B1KVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01MDMte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU2OS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTcwOmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV9pbml0KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy01NzEte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTU4My1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NTg0OmludCBicGZfbWVtX2FsbG9jX3BlcmNwdV91bml0X2luaXQoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCBpbnQgc2l6ZSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNTg1LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz02NDA9c3RhdGljIHZvaWQgY2hlY2tfbWVtX2NhY2hlKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTY1MC1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NjUxOnN0YXRpYyB2b2lkIGNoZWNrX2xlYWtlZF9vYmpzKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNjUyLXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy02NzMtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjY3NDpzdGF0aWMgdm9pZCBmcmVlX21lbV9hbGxvY19ub19iYXJyaWVyKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNjc1LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy02ODUtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjY4NjpzdGF0aWMgdm9pZCBmcmVlX21lbV9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTY4Ny17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM9NzAzPXN0YXRpYyB2b2lkIGZyZWVfbWVtX2FsbG9jX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzA0LXtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzA1OlxcdHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYnBmX21lbV9hbGxvYywgd29yayk7XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTcwNi1cXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03MTAtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjcxMTpzdGF0aWMgdm9pZCBkZXN0cm95X21lbV9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGludCByY3VfaW5fcHJvZ3Jlc3MpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTcxMi17XFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjcxMzpcXHRzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqY29weTtcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzE0LVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTczNS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6NzM2OnZvaWQgYnBmX21lbV9hbGxvY19kZXN0cm95KHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSlcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzM3LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz03NzY9c3RhdGljIHZvaWQgbm90cmFjZSAqdW5pdF9hbGxvYyhzdHJ1Y3QgYnBmX21lbV9jYWNoZSAqYylcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03ODMtXFx0ICogcHJvZ19BXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjc4NDpcXHQgKiAgIGJwZl9tZW1fYWxsb2NcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtNzg1LVxcdCAqICAgICAgcHJlZW1wdGlvbiBvciBpcnEgLVxcdTAwM2UgcHJvZ19CXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjc4NjpcXHQgKiAgICAgICAgYnBmX21lbV9hbGxvY1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy03ODctXFx0ICpcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYz04NTk9c3RhdGljIHZvaWQgbm90cmFjZSB1bml0X2ZyZWVfcmN1KHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCB2b2lkICpwdHIpXFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtODgyLSAqL1xcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo4ODM6dm9pZCBub3RyYWNlICpicGZfbWVtX2FsbG9jKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgc2l6ZV90IHNpemUpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTg4NC17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTAwLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5MDE6dm9pZCBub3RyYWNlIGJwZl9tZW1fZnJlZShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTAyLXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MTYtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjkxNzp2b2lkIG5vdHJhY2UgYnBmX21lbV9mcmVlX3JjdShzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIHZvaWQgKnB0cilcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTE4LXtcXG4tLVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MzItXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjkzMzp2b2lkIG5vdHJhY2UgKmJwZl9tZW1fY2FjaGVfYWxsb2Moc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05MzQte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk0MC1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTQxOnZvaWQgbm90cmFjZSBicGZfbWVtX2NhY2hlX2ZyZWUoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk0Mi17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTQ4LVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYzo5NDk6dm9pZCBub3RyYWNlIGJwZl9tZW1fY2FjaGVfZnJlZV9yY3Uoc3RydWN0IGJwZl9tZW1fYWxsb2MgKm1hLCB2b2lkICpwdHIpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk1MC17XFxuLS1cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTYxLSAqIEl0IGNvdWxkIGJlIHVzZWQgd2hlbiB0aGUgcmN1X3Rhc2tzX3RyYWNlIGNhbGxiYWNrIGRvZXMgbm90IGhhdmVcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTYyOiAqIGEgaG9sZCBvbiB0aGUgb3JpZ2luYWwgYnBmX21lbV9hbGxvYyBvYmplY3QgdGhhdCBhbGxvY2F0ZWQgdGhlXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk2My0gKiAncHRyJy4gVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoZSB1bmNvbW1vbiBjb2RlIHBhdGguXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjk2NDogKiBPdGhlcndpc2UsIHRoZSBicGZfbWVtX2FsbG9jJ3MgZnJlZV9sbGlzdCBjYW5ub3QgYmUgcmVmaWxsZWRcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtOTY1LSAqIGFuZCBtYXkgYWZmZWN0IHBlcmZvcm1hbmNlLlxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jPTk2Nz12b2lkIGJwZl9tZW1fY2FjaGVfcmF3X2ZyZWUodm9pZCAqcHRyKVxcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTk3OC0gKi9cXG5rZXJuZWwvYnBmL21lbWFsbG9jLmM6OTc5OnZvaWQgbm90cmFjZSAqYnBmX21lbV9jYWNoZV9hbGxvY19mbGFncyhzdHJ1Y3QgYnBmX21lbV9hbGxvYyAqbWEsIGdmcF90IGZsYWdzKVxcbmtlcm5lbC9icGYvbWVtYWxsb2MuYy05ODAte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMDEtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjEwMDI6aW50IGJwZl9tZW1fYWxsb2NfY2hlY2tfc2l6ZShib29sIHBlcmNwdSwgc2l6ZV90IHNpemUpXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMDMte1xcbi0tXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jLTEwMTEtXFxua2VybmVsL2JwZi9tZW1hbGxvYy5jOjEwMTI6dm9pZCBicGZfbWVtX2FsbG9jX3NldF9kdG9yKHN0cnVjdCBicGZfbWVtX2FsbG9jICptYSwgdm9pZCAoKmR0b3IpKHZvaWQgKm9iaiwgdm9pZCAqY3R4KSxcXG5rZXJuZWwvYnBmL21lbWFsbG9jLmMtMTAxMy1cXHRcXHRcXHQgICAgdm9pZCAoKmR0b3JfY3R4X2ZyZWUpKHZvaWQgKmN0eCksIHZvaWQgKmN0eClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMjI6NTE6MDkuOTM5NzE5ODE5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNTk3MjUxNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIE1lbW9yeSBBbGxvY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhZGQgYSBmZXcga2V5IGZ1bmN0aW9ucyB0byBgRm9jdXNTeW1ib2xzYC4gU3BlY2lmaWNhbGx5LCBgYnBmX21lbV9hbGxvY2AsIGBicGZfbWVtX2ZyZWVgLCBgYnBmX21lbV9jYWNoZV9hbGxvY2AsIGBicGZfbWVtX2NhY2hlX2ZyZWVgLCBhbmQgYGh0YWJfbWFwX21lbV91c2FnZWAuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyB0aG9zZSBzeW1ib2xzIHdpbGwgYmUgaW1wb3J0YW50IGZvciBmb2N1c2VkIGZ1enppbmcuXG5cbk5leHQsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYEJQRl9TWVNDQUxMYCBpcyB0aGUgb25seSBjb25maWcgZW5hYmxpbmcgQlBGLiBZZXMsIGEgcXVpY2sgY2hlY2sgY29uZmlybXMgdGhhdCBCUEYgaXMgc29sZWx5IGRlcGVuZGVudCBvbiBgQlBGX1NZU0NBTExgIGJlaW5nIHNldC4gR29vZC5cblxuTm93LCBsZXQncyBkaXZlIGludG8gdGhlIHBhdGNoIGl0c2VsZi4gSSBzZWUgYSBjaGFuZ2UgdG8gdGhlIGBMTElTVF9OT0RFX1NaYCBkZWZpbml0aW9uOlxuXG5gYGBjXG4tI2RlZmluZSBMTElTVF9OT0RFX1NaIHNpemVvZihzdHJ1Y3QgbGxpc3Rfbm9kZSlcbisjZGVmaW5lIExMSVNUX05PREVfU1ogQUxJR04oc2l6ZW9mKHN0cnVjdCBsbGlzdF9ub2RlKSwgOClcbmBgYFxuXG5BaCwgYWxpZ25pbmcgdGhlIGBzdHJ1Y3QgbGxpc3Rfbm9kZWAgc2l6ZSB0byA4IGJ5dGVzLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3RpbmcsIHNvIGxldCdzIGNoZWNrIGhvdyBpdCdzIHVzZWQuIExvb2tpbmcgZnVydGhlciBkb3duIGluIHRoZSBwYXRjaCwgSSBzZWUgdGhpcyBpbiB0aGUgYF9fYWxsb2NgIGZ1bmN0aW9uOlxuXG5gYGBjXG4tXHRcdHZvaWQgX19wZXJjcHUgKipvYmogPSBrbWFsbG9jX25vZGUoYy1cdTAwM2VwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuK1x0XHR2b2lkICpvYmogPSBrbWFsbG9jX25vZGUoYy1cdTAwM2VwZXJjcHVfc2l6ZSwgZmxhZ3MsIG5vZGUpO1xuIFx0XHR2b2lkIF9fcGVyY3B1ICpwcHRyID0gX19hbGxvY19wZXJjcHVfZ2ZwKGMtXHUwMDNldW5pdF9zaXplLCA4LCBmbGFncyk7XG4gXG4gXHRcdGlmICghb2JqIHx8ICFwcHRyKSB7XG5AQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyB2b2lkICpfX2FsbG9jKHN0cnVjdCBicGZfbWVtX2NhY2hlICpjLCBpbnQgbm9kZSwgZ2ZwX3QgZmxhZ3MpXG4gXHRcdFx0a2ZyZWUob2JqKTtcbiBcdFx0XHRyZXR1cm4gTlVMTDtcbiBcdFx0fVxuLVx0XHRvYmpbMV0gPSBwcHRyO1xuK1x0XHQqKHZvaWQgX19wZXJjcHUgKiopKG9iaiArIExMSVNUX05PREVfU1opID0gcHB0cjtcbiBcdFx0cmV0dXJuIG9iajtcbmBgYFxuXG5Pa2F5LCB0aGUgY29kZSBub3cgY29ycmVjdGx5IHBsYWNlcyB0aGUgcGVyY3B1IHBvaW50ZXIgYWZ0ZXIgdGhlIGFsaWduZWQgYGxsaXN0X25vZGVgLiBUaGUgb3JpZ2luYWwgYG9ialsxXWAgbGlrZWx5IGhhZCBhIGJ1ZywgYmVjYXVzZSBpdCBhc3N1bWVkIHRoZSBzaXplIG9mIGBzdHJ1Y3QgbGxpc3Rfbm9kZWAgd2FzIGEgbXVsdGlwbGUgb2YgOC4gVGhhdCBtaWdodCBub3QgYmUgdHJ1ZSwgZXNwZWNpYWxseSBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYW5kIHRoaXMgcGF0Y2ggZml4ZXMgdGhhdC5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgY2xlYXJseSBmaXhlcyBhIGJ1ZyBhZmZlY3RpbmcgQlBGIG1hcHMuIFRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYC5cblxuKiAgICoqRm9jdXNTeW1ib2xzOioqIGBicGZfbWVtX2FsbG9jYCwgYGJwZl9tZW1fZnJlZWAsIGBicGZfbWVtX2NhY2hlX2FsbG9jYCwgYGJwZl9tZW1fY2FjaGVfZnJlZWAsIGBodGFiX21hcF9tZW1fdXNhZ2VgLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgQlBGX1NZU0NBTExgLlxuKiAgICoqUmVhc29uaW5nOioqIFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBieSBhbGlnbmluZyB0aGUgc2l6ZSBvZiBsbGlzdF9ub2RlIHRvIDggYnl0ZXMgYW5kIGNvcnJlY3RseSBwbGFjaW5nIHRoZSBwZXJjcHUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBCUEYgbWFwcy5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MjQxLCJPdXRwdXRUb2tlbnMiOjEzNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QyMjo1MToxOC4yOTk0NDcyNDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDU5NzU4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfbWVtX2FsbG9jXCIsXG4gICAgXCJicGZfbWVtX2ZyZWVcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfYWxsb2NcIixcbiAgICBcImJwZl9tZW1fY2FjaGVfZnJlZVwiLFxuICAgIFwiaHRhYl9tYXBfbWVtX3VzYWdlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgQlBGIG1lbW9yeSBhbGxvY2F0aW9uIGxvZ2ljIGJ5IGFsaWduaW5nIHRoZSBzaXplIG9mIGxsaXN0X25vZGUgdG8gOCBieXRlcyBhbmQgY29ycmVjdGx5IHBsYWNpbmcgdGhlIHBlcmNwdSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIEJQRiBtYXBzIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX21lbV9hbGxvY1wiLFxuICAgIFwiYnBmX21lbV9mcmVlXCIsXG4gICAgXCJicGZfbWVtX2NhY2hlX2FsbG9jXCIsXG4gICAgXCJicGZfbWVtX2NhY2hlX2ZyZWVcIixcbiAgICBcImh0YWJfbWFwX21lbV91c2FnZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIEJQRiBtZW1vcnkgYWxsb2NhdGlvbiBsb2dpYyBieSBhbGlnbmluZyB0aGUgc2l6ZSBvZiBsbGlzdF9ub2RlIHRvIDggYnl0ZXMgYW5kIGNvcnJlY3RseSBwbGFjaW5nIHRoZSBwZXJjcHUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBCUEYgbWFwcyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow2tkfj[1] Phase: Succeeded StartedAt: 2026-07-17 22:51:30 +0000 UTC FinishedAt: 2026-07-17 22:51:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 22:51:30 +0000 UTC FinishedAt: 2026-07-17 22:51:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2] Phase: Succeeded StartedAt: 2026-07-17 22:51:30 +0000 UTC FinishedAt: 2026-07-18 00:02:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-17 22:51:30 +0000 UTC FinishedAt: 2026-07-18 00:02:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-17 22:51:30 +0000 UTC FinishedAt: 2026-07-17 22:51:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-17 22:51:30 +0000 UTC FinishedAt: 2026-07-17 22:51:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflow2tkfj/series-workflow2tkfj-convert-artifact-1374983380/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-17 22:51:40 +0000 UTC FinishedAt: 2026-07-17 23:24:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-17 22:51:40 +0000 UTC FinishedAt: 2026-07-17 23:24:51 +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:*d1d463bb-b280-4f96-a46b-691a06348206,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-workflow2tkfj/series-workflow2tkfj-convert-artifact-1374983380/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": "58a28ead-3bfb-4dae-8a03-ae9297bbd4dd", "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-workflow2tkfj/series-workflow2tkfj-build-action-3527200850/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-17 22:51:40 +0000 UTC FinishedAt: 2026-07-17 23:24:41 +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:*d1d463bb-b280-4f96-a46b-691a06348206,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-workflow2tkfj/series-workflow2tkfj-convert-artifact-1374983380/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": "58a28ead-3bfb-4dae-8a03-ae9297bbd4dd", "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-workflow2tkfj/series-workflow2tkfj-build-action-3527200850/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-17 23:24:51 +0000 UTC FinishedAt: 2026-07-17 23:24:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-17 23:24:51 +0000 UTC FinishedAt: 2026-07-17 23:24:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-17 23:24:51 +0000 UTC FinishedAt: 2026-07-17 23:25:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-17 23:24:51 +0000 UTC FinishedAt: 2026-07-17 23:25:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflow2tkfj/series-workflow2tkfj-convert-artifact-2099866771/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-17 23:25:12 +0000 UTC FinishedAt: 2026-07-17 23:27:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-17 23:25:12 +0000 UTC FinishedAt: 2026-07-17 23:27:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*58a28ead-3bfb-4dae-8a03-ae9297bbd4dd,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-workflow2tkfj/series-workflow2tkfj-build-action-3527200850/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-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-17 23:27:24 +0000 UTC FinishedAt: 2026-07-17 23:27:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-17 23:27:24 +0000 UTC FinishedAt: 2026-07-17 23:27:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-17 23:27:24 +0000 UTC FinishedAt: 2026-07-17 23:58:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-17 23:27:24 +0000 UTC FinishedAt: 2026-07-17 23:58:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*d1d463bb-b280-4f96-a46b-691a06348206,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-workflow2tkfj/series-workflow2tkfj-convert-artifact-2099866771/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": "837f5bf9-6154-491e-9d6a-4355e7a74035", "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-workflow2tkfj/series-workflow2tkfj-build-action-1460159175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-17 23:27:24 +0000 UTC FinishedAt: 2026-07-17 23:58:49 +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:*d1d463bb-b280-4f96-a46b-691a06348206,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-workflow2tkfj/series-workflow2tkfj-convert-artifact-2099866771/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": "837f5bf9-6154-491e-9d6a-4355e7a74035", "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-workflow2tkfj/series-workflow2tkfj-build-action-1460159175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-17 23:58:59 +0000 UTC FinishedAt: 2026-07-17 23:58:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-17 23:58:59 +0000 UTC FinishedAt: 2026-07-17 23:58:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-17 23:58:59 +0000 UTC FinishedAt: 2026-07-18 00:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-17 23:58:59 +0000 UTC FinishedAt: 2026-07-18 00:00:59 +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:*837f5bf9-6154-491e-9d6a-4355e7a74035,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-workflow2tkfj/series-workflow2tkfj-build-action-1460159175/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-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-18 00:01:09 +0000 UTC FinishedAt: 2026-07-18 00:02:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-18 00:01:09 +0000 UTC FinishedAt: 2026-07-18 00:02:22 +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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"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:*58a28ead-3bfb-4dae-8a03-ae9297bbd4dd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*837f5bf9-6154-491e-9d6a-4355e7a74035,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-workflow2tkfj/series-workflow2tkfj-build-action-3527200850/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-workflow2tkfj/series-workflow2tkfj-build-action-1460159175/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-18 00:01:09 +0000 UTC FinishedAt: 2026-07-18 00:01:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-18 00:01:09 +0000 UTC FinishedAt: 2026-07-18 00:01:17 +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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"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-workflow2tkfj/series-workflow2tkfj-convert-artifact-2280808716/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-18 00:01:09 +0000 UTC FinishedAt: 2026-07-18 00:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-18 00:01:09 +0000 UTC FinishedAt: 2026-07-18 00:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-18 00:01:09 +0000 UTC FinishedAt: 2026-07-18 00:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-18 00:01:19 +0000 UTC FinishedAt: 2026-07-18 00:02:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2tkfj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_mem_alloc","bpf_mem_free","bpf_mem_cache_alloc","bpf_mem_cache_free","htab_map_mem_usage"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7fc2c3dcae28347a30ccd76c8817e5719005f1c3","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"9c9709ad-8eec-4b02-97b9-07d925acf52f","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-18 00:01:19 +0000 UTC FinishedAt: 2026-07-18 00:02:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*58a28ead-3bfb-4dae-8a03-ae9297bbd4dd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*837f5bf9-6154-491e-9d6a-4355e7a74035,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-workflow2tkfj/series-workflow2tkfj-build-action-3527200850/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-workflow2tkfj/series-workflow2tkfj-build-action-1460159175/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-workflow2tkfj/series-workflow2tkfj-convert-artifact-2280808716/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}