Name: series-workflowgnhxz Phase: Succeeded StartedAt: 2026-07-26 15:12:08 +0000 UTC FinishedAt: 2026-07-26 20:09:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[0] Phase: Succeeded StartedAt: 2026-07-26 15:12:08 +0000 UTC FinishedAt: 2026-07-26 15:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 15:12:08 +0000 UTC FinishedAt: 2026-07-26 15:38:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "2805abd089576799b15092949420e3f8ba97fabd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF", "BPF_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "2805abd089576799b15092949420e3f8ba97fabd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF", "BPF_EVENTS" ], "series_id": "bba98519-d58a-4cc2-accd-30cfb4081bf6" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_check_attach_target", "bpf_check_attach_btf_id_multi" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIHRyYWNpbmcgcHJvZ3JhbXMgZnJvbSBhdHRhY2hpbmcgdG8gb3RoZXIgQlBGIHByb2dyYW1zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU3YzQzZDQ3OWIwYjVmYTg2OWJhNWExYjYyMjJkMjRhZTUyZjUxNzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxNTozNjowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDUyYmUwYTExOGNjZTA3Li4yMmFjNDdkOWE1NTM4MyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTg5MzUsMTMgJiM0MzsxODkzNSwxNiBAQCBzdGF0aWMgYm9vbCBpc190cmFjaW5nX211bHRpX2lkKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZClcbiB9XG4gXG4gc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnRmICpidGYpXG4mIzQzO1x0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2cpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0O1xuIFx0Y29uc3QgY2hhciAqdG5hbWU7XG4gXG4gXHRzd2l0Y2ggKHByb2ctXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XG4mIzQzO1x0XHRpZiAodGd0X3Byb2cpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgYnRmX2lkKTtcbiBcdFx0aWYgKCF0KVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTE5MzI0LDcgJiM0MzsxOTMyNyw3IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHR9XG4gXG4gXHRcdGlmIChwcm9nLVx1MDAzZXNsZWVwYWJsZSkge1xuLVx0XHRcdHJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYpO1xuJiM0MztcdFx0XHRyZXQgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmLCB0Z3RfcHJvZyk7XG4gXHRcdFx0aWYgKHJldCkge1xuIFx0XHRcdFx0bW9kdWxlX3B1dChtb2QpO1xuIFx0XHRcdFx0YnBmX2xvZyhsb2csIFwmIzM0OyVzIGlzIG5vdCBzbGVlcGFibGVcXG5cJiMzNDssIHRuYW1lKTtcbkBAIC0xOTU3NSw3ICYjNDM7MTk1NzgsNyBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidFxuIFxuIFx0LyogQ2hlY2sgc2xlZXBhYmxlIHByb2dyYW0gYXR0YWNobWVudC4gKi9cbiBcdGlmIChwcm9nLVx1MDAzZXNsZWVwYWJsZSkge1xuLVx0XHRlcnIgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmKTtcbiYjNDM7XHRcdGVyciA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYsIE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBlcnI7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5pbmRleCA0YTg3ZDcxNjNjOGM3Zi4uMjUyM2MwN2ExNmM2NTUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuQEAgLTUsNiAmIzQzOzUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9idGYuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O2JpbmQ0X3Byb2cuc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZnJlcGxhY2VfcHJvZ21hcC5za2VsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7ZmVudHJ5X3NsZWVwYWJsZS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt4ZHBfZHVtbXkuc2tlbC5oXCYjMzQ7XG4gXG4gdHlwZWRlZiBpbnQgKCp0ZXN0X2NiKShzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKTtcbkBAIC01NzYsNiAmIzQzOzU3Nyw2MCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfcmVwbGFjZV9wcm9nbWFwKHZvaWQpXG4gXHRmcmVwbGFjZV9wcm9nbWFwX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZlbnRyeV9zbGVlcGFibGUgKnNrZWwgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCB4ZHBfZHVtbXkgKnNrZWxfeGRwID0gTlVMTDtcbiYjNDM7XHRpbnQgaWZpbmRleCwgcHJvZ19mZCwgZXJyO1xuJiM0MztcdGNoYXIgYnVmZls2NF0gPSB7fTtcbiYjNDM7XG4mIzQzOyNpZm5kZWYgX194ODZfNjRfX1xuJiM0MztcdHRlc3RfX3NraXAoKTtcbiYjNDM7XHRyZXR1cm47XG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7XHRpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgoXCYjMzQ7bG9cJiMzNDspO1xuJiM0MztcdGlmICghQVNTRVJUX0dUKGlmaW5kZXgsIDAsIFwmIzM0O2lmX25hbWV0b2luZGV4XCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0c2tlbF94ZHAgPSB4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWQoKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbF94ZHAsIFwmIzM0O3hkcF9kdW1teV9fb3Blbl9hbmRfbG9hZFwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdHNrZWwgPSBmZW50cnlfc2xlZXBhYmxlX19vcGVuKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O2ZlbnRyeV9zbGVlcGFibGVfX29wZW5cJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXVzZXJfcHRyID0gYnVmZjtcbiYjNDM7XG4mIzQzO1x0cHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsX3hkcC1cdTAwM2Vwcm9ncy5fX3g2NF9zeXNfbm9wKTtcbiYjNDM7XHRlcnIgPSBicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQoc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnlfeGRwLCBwcm9nX2ZkLCBcJiMzNDtfX3g2NF9zeXNfbm9wXCYjMzQ7KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O2JwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldFwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gZmVudHJ5X3NsZWVwYWJsZV9fbG9hZChza2VsKTtcbiYjNDM7XHRBU1NFUlRfRVJSKGVyciwgXCYjMzQ7ZmVudHJ5X3NsZWVwYWJsZV9fbG9hZFwmIzM0Oyk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRza2VsLVx1MDAzZWxpbmtzLmZlbnRyeV94ZHAgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5X3hkcCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3MuZmVudHJ5X3hkcCwgXCYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0c2tlbF94ZHAtXHUwMDNlbGlua3MuX194NjRfc3lzX25vcCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfeGRwKHNrZWxfeGRwLVx1MDAzZXByb2dzLl9feDY0X3N5c19ub3AsXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRpZmluZGV4KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbF94ZHAtXHUwMDNlbGlua3MuX194NjRfc3lzX25vcCwgXCYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF94ZHBcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IHN5c3RlbShcJiMzNDtwaW5nIC1xIC1jIDEgLVcgMSAxMjcuMC4wLjEgXHUwMDNlIC9kZXYvbnVsbFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX09LKGVyciwgXCYjMzQ7cGluZ1wmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VSUihza2VsLVx1MDAzZWJzcy1cdTAwM2VyZXR2YWwsIFwmIzM0O3JldHZhbFwmIzM0Oyk7XG4mIzQzO1xuJiM0MztvdXQ6XG4mIzQzO1x0ZmVudHJ5X3NsZWVwYWJsZV9fZGVzdHJveShza2VsKTtcbiYjNDM7XHR4ZHBfZHVtbXlfX2Rlc3Ryb3koc2tlbF94ZHApO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIE5PVEU6IGFmZmVjdCBvdGhlciB0ZXN0cywgbXVzdCBydW4gaW4gc2VyaWFsIG1vZGUgKi9cbiB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcbiB7XG5AQCAtNjA3LDQgJiM0Mzs2NjIsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcbiBcdFx0dGVzdF9mdW5jX3JlcGxhY2VfaW50X3dpdGhfdm9pZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7ZnJlcGxhY2Vfdm9pZFwmIzM0OykpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlX3ZvaWQoKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzbGVlcGFibGVfZmVudHJ5X3RvX3hkcFwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwKCk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ0YjkzOGY0ODVlMjRjXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jXG5AQCAtMCwwICYjNDM7MSwxOSBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjaW5jbHVkZSBcJiMzNDt2bWxpbnV4LmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcdTAwM2VcbiYjNDM7XG4mIzQzO2NoYXIgTElDRU5TRVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjNDM7XG4mIzQzO3ZvaWQgKnVzZXJfcHRyO1xuJiM0MztpbnQgcmV0dmFsO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O2ZlbnRyeS5zXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coZmVudHJ5X3hkcClcbiYjNDM7e1xuJiM0MztcdGNoYXIgYnVmZls2NF07XG4mIzQzO1xuJiM0MztcdHJldHZhbCA9IGJwZl9jb3B5X2Zyb21fdXNlcihidWZmLCBzaXplb2YoYnVmZiksIHVzZXJfcHRyKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcbmluZGV4IGQ5ODhiMmUwY2VlODQwLi41ZjFlMDc3MTAyMWRmZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXG5AQCAtMTAsNCAmIzQzOzEwLDEwIEBAIGludCB4ZHBfZHVtbXlfcHJvZyhzdHJ1Y3QgeGRwX21kICpjdHgpXG4gXHRyZXR1cm4gWERQX1BBU1M7XG4gfVxuIFxuJiM0MztTRUMoXCYjMzQ7eGRwXCYjMzQ7KVxuJiM0MztpbnQgX194NjRfc3lzX25vcChzdHJ1Y3QgeGRwX21kICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gWERQX1BBU1M7XG4mIzQzO31cbiYjNDM7XG4gY2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcHJldmVudCBzbGVlcGFibGUgdHJhY2luZyBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBvdGhlciBCUEYgcHJvZ3JhbXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTdjNDNkNDc5YjBiNWZhODY5YmE1YTFiNjIyMmQyNGFlNTJmNTE3NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDI2IDE1OjM2OjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDUyYmUwYTExOGNjZTA3Li4yMmFjNDdkOWE1NTM4MyAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTg5MzUsMTMgJiM0MzsxODkzNSwxNiBAQCBzdGF0aWMgYm9vbCBpc190cmFjaW5nX211bHRpX2lkKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCkKIH0KIAogc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLAotCQkJCSAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmKQomIzQzOwkJCQkgIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZykKIHsKIAljb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQ7CiAJY29uc3QgY2hhciAqdG5hbWU7CiAKIAlzd2l0Y2ggKHByb2ctJmd0O3R5cGUpIHsKIAljYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzoKJiM0MzsJCWlmICh0Z3RfcHJvZykKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAkJdCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgYnRmX2lkKTsKIAkJaWYgKCF0KQogCQkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xOTMyNCw3ICYjNDM7MTkzMjcsNyBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAkJfQogCiAJCWlmIChwcm9nLSZndDtzbGVlcGFibGUpIHsKLQkJCXJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYpOwomIzQzOwkJCXJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYsIHRndF9wcm9nKTsKIAkJCWlmIChyZXQpIHsKIAkJCQltb2R1bGVfcHV0KG1vZCk7CiAJCQkJYnBmX2xvZyhsb2csICYjMzQ7JXMgaXMgbm90IHNsZWVwYWJsZVxuJiMzNDssIHRuYW1lKTsKQEAgLTE5NTc1LDcgJiM0MzsxOTU3OCw3IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0CiAKIAkvKiBDaGVjayBzbGVlcGFibGUgcHJvZ3JhbSBhdHRhY2htZW50LiAqLwogCWlmIChwcm9nLSZndDtzbGVlcGFibGUpIHsKLQkJZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0Zik7CiYjNDM7CQllcnIgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmLCBOVUxMKTsKIAkJaWYgKGVycikKIAkJCXJldHVybiBlcnI7CiAJfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jCmluZGV4IDRhODdkNzE2M2M4YzdmLi4yNTIzYzA3YTE2YzY1NSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuYwpAQCAtNSw2ICYjNDM7NSw3IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2J0Zi5oJmd0OwogI2luY2x1ZGUgJiMzNDtiaW5kNF9wcm9nLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2ZyZXBsYWNlX3Byb2dtYXAuc2tlbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2ZlbnRyeV9zbGVlcGFibGUuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7eGRwX2R1bW15LnNrZWwuaCYjMzQ7CiAKIHR5cGVkZWYgaW50ICgqdGVzdF9jYikoc3RydWN0IGJwZl9vYmplY3QgKm9iaik7CkBAIC01NzYsNiAmIzQzOzU3Nyw2MCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfcmVwbGFjZV9wcm9nbWFwKHZvaWQpCiAJZnJlcGxhY2VfcHJvZ21hcF9fZGVzdHJveShza2VsKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHAodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmZW50cnlfc2xlZXBhYmxlICpza2VsID0gTlVMTDsKJiM0MzsJc3RydWN0IHhkcF9kdW1teSAqc2tlbF94ZHAgPSBOVUxMOwomIzQzOwlpbnQgaWZpbmRleCwgcHJvZ19mZCwgZXJyOwomIzQzOwljaGFyIGJ1ZmZbNjRdID0ge307CiYjNDM7CiYjNDM7I2lmbmRlZiBfX3g4Nl82NF9fCiYjNDM7CXRlc3RfX3NraXAoKTsKJiM0MzsJcmV0dXJuOwomIzQzOyNlbmRpZgomIzQzOwomIzQzOwlpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgoJiMzNDtsbyYjMzQ7KTsKJiM0MzsJaWYgKCFBU1NFUlRfR1QoaWZpbmRleCwgMCwgJiMzNDtpZl9uYW1ldG9pbmRleCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbF94ZHAgPSB4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWQoKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLCAmIzM0O3hkcF9kdW1teV9fb3Blbl9hbmRfbG9hZCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbCA9IGZlbnRyeV9zbGVlcGFibGVfX29wZW4oKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7ZmVudHJ5X3NsZWVwYWJsZV9fb3BlbiYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsLSZndDtic3MtJmd0O3VzZXJfcHRyID0gYnVmZjsKJiM0MzsKJiM0MzsJcHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsX3hkcC0mZ3Q7cHJvZ3MuX194NjRfc3lzX25vcCk7CiYjNDM7CWVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsLSZndDtwcm9ncy5mZW50cnlfeGRwLCBwcm9nX2ZkLCAmIzM0O19feDY0X3N5c19ub3AmIzM0Oyk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQmIzM0OykpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKJiM0MzsJZXJyID0gZmVudHJ5X3NsZWVwYWJsZV9fbG9hZChza2VsKTsKJiM0MzsJQVNTRVJUX0VSUihlcnIsICYjMzQ7ZmVudHJ5X3NsZWVwYWJsZV9fbG9hZCYjMzQ7KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsLSZndDtsaW5rcy5mZW50cnlfeGRwID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsLSZndDtwcm9ncy5mZW50cnlfeGRwKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtJmd0O2xpbmtzLmZlbnRyeV94ZHAsICYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsX3hkcC0mZ3Q7bGlua3MuX194NjRfc3lzX25vcCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfeGRwKHNrZWxfeGRwLSZndDtwcm9ncy5fX3g2NF9zeXNfbm9wLAomIzQzOwkJCQkJCQkJaWZpbmRleCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsX3hkcC0mZ3Q7bGlua3MuX194NjRfc3lzX25vcCwgJiMzNDticGZfcHJvZ3JhbV9fYXR0YWNoX3hkcCYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwllcnIgPSBzeXN0ZW0oJiMzNDtwaW5nIC1xIC1jIDEgLVcgMSAxMjcuMC4wLjEgJmd0OyAvZGV2L251bGwmIzM0Oyk7CiYjNDM7CUFTU0VSVF9PSyhlcnIsICYjMzQ7cGluZyYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VSUihza2VsLSZndDtic3MtJmd0O3JldHZhbCwgJiMzNDtyZXR2YWwmIzM0Oyk7CiYjNDM7CiYjNDM7b3V0OgomIzQzOwlmZW50cnlfc2xlZXBhYmxlX19kZXN0cm95KHNrZWwpOwomIzQzOwl4ZHBfZHVtbXlfX2Rlc3Ryb3koc2tlbF94ZHApOwomIzQzO30KJiM0MzsKIC8qIE5PVEU6IGFmZmVjdCBvdGhlciB0ZXN0cywgbXVzdCBydW4gaW4gc2VyaWFsIG1vZGUgKi8KIHZvaWQgc2VyaWFsX3Rlc3RfZmV4aXRfYnBmMmJwZih2b2lkKQogewpAQCAtNjA3LDQgJiM0Mzs2NjIsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZCkKIAkJdGVzdF9mdW5jX3JlcGxhY2VfaW50X3dpdGhfdm9pZCgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7ZnJlcGxhY2Vfdm9pZCYjMzQ7KSkKIAkJdGVzdF9mdW5jX3JlcGxhY2Vfdm9pZCgpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NsZWVwYWJsZV9mZW50cnlfdG9feGRwJiMzNDspKQomIzQzOwkJdGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCgpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ0YjkzOGY0ODVlMjRjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuYwpAQCAtMCwwICYjNDM7MSwxOSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJiMzNDt2bWxpbnV4LmgmIzM0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7CiYjNDM7Y2hhciBMSUNFTlNFW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CiYjNDM7CiYjNDM7dm9pZCAqdXNlcl9wdHI7CiYjNDM7aW50IHJldHZhbDsKJiM0MzsKJiM0MztTRUMoJiMzNDtmZW50cnkucyYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhmZW50cnlfeGRwKQomIzQzO3sKJiM0MzsJY2hhciBidWZmWzY0XTsKJiM0MzsKJiM0MzsJcmV0dmFsID0gYnBmX2NvcHlfZnJvbV91c2VyKGJ1ZmYsIHNpemVvZihidWZmKSwgdXNlcl9wdHIpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMKaW5kZXggZDk4OGIyZTBjZWU4NDAuLjVmMWUwNzcxMDIxZGZlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jCkBAIC0xMCw0ICYjNDM7MTAsMTAgQEAgaW50IHhkcF9kdW1teV9wcm9nKHN0cnVjdCB4ZHBfbWQgKmN0eCkKIAlyZXR1cm4gWERQX1BBU1M7CiB9CiAKJiM0MztTRUMoJiMzNDt4ZHAmIzM0OykKJiM0MztpbnQgX194NjRfc3lzX25vcChzdHJ1Y3QgeGRwX21kICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gWERQX1BBU1M7CiYjNDM7fQomIzQzOwogY2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTIwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOyB0aGV5JiMzOTt2ZSBhZGRlZCBhIG5ldyBjaGVjayB3aXRoaW4gdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbiBpdHNlbGY6CgpgYGBjCiAJc3dpdGNoIChwcm9nLSZndDt0eXBlKSB7CiAJY2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6CiYjNDM7CQlpZiAodGd0X3Byb2cpCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CmBgYAoKUmlnaHQsIHNvIGlmIGEgdHJhY2luZyBCUEYgcHJvZ3JhbSBpcyBzbGVlcGFibGUgYW5kIHdlIGhhdmUgYSBgdGd0X3Byb2dgIChtZWFuaW5nIGl0JiMzOTtzIGJlaW5nIGF0dGFjaGVkIHRvIGFub3RoZXIgcHJvZ3JhbSksIHRoZSBmdW5jdGlvbiBub3cgcmV0dXJucyBgLUVJTlZBTGAuIFRoaXMgZXNzZW50aWFsbHkgZGlzYWxsb3dzIHNsZWVwYWJsZSB0cmFjaW5nIEJQRiBwcm9ncmFtcyBmcm9tIGJlaW5nIGF0dGFjaGVkIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiBpdC4gTWFrZXMgc2Vuc2Ug4oCTIHByb2JhYmx5IHNvbWUgc29ydCBvZiBzYWZldHkgbWVjaGFuaXNtIG9yIGEgY29uc3RyYWludCBvbiBob3cgdGhlc2UgdHJhY2luZyBwcm9ncmFtcyBpbnRlcmFjdCB3aXRoIG90aGVycy4KClRoZSBwYXRjaCBhbHNvIG1lbnRpb25zIHVwZGF0aW5nIHRoZSBjYWxscyB0byBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAgdG8gY29ycmVjdGx5IHBhc3MgdGhlIGB0Z3RfcHJvZ2AgYXJndW1lbnQuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBub3cgdG8gc2VlICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGdyb2sgdGhlIGZsb3cgYW5kIGhvdyB0aGlzIGNoZWNrIGFmZmVjdHMgdGhlIGV4aXN0aW5nIGxvZ2ljLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjYXNlcyB3aGVyZSBgdGd0X3Byb2dgIGlzIGVpdGhlciBOVUxMIG9yIGEgdmFsaWQgcHJvZ3JhbSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIExldCYjMzk7cyBnZXQgdG8gaXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRmX2lkX2FsbG93X3NsZWVwYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg5MzI9c3RhdGljIGJvb2wgaXNfdHJhY2luZ19tdWx0aV9pZChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM2LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTM3OnN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkzOC1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTAzMD1pbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkzMjktXHRcdGlmIChwcm9nLVx1MDAzZXNsZWVwYWJsZSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MzMwOlx0XHRcdHJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYsIHRndF9wcm9nKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzMS1cdFx0XHRpZiAocmV0KSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTM1PWludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1ODAtXHRpZiAocHJvZy1cdTAwM2VzbGVlcGFibGUpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTU4MTpcdFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgTlVMTCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1ODItXHRcdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA4NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAuIEl0JiMzOTtzIHJlamVjdGluZyBzbGVlcGFibGUgdHJhY2luZyBwcm9ncmFtcyBpZiBgdGd0X3Byb2dgIGlzIHByZXNlbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIGl0JiMzOTtzIGEgcmVhY2hhYmxlIGNoYW5nZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgSSBjYW4gZm9jdXMgbXkgZWZmb3J0cy4KCkkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgem9vbSBpbiBvbiB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgY2FsbCBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAuIExldCYjMzk7cyBzZWUuLi4gYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYCBhcmUgdGhlIGNhbGxlcnMgSSYjMzk7bSBsb29raW5nIGZvci4gU2luY2UgYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgIGl0c2VsZiBpcyBzdGF0aWMsIGl0JiMzOTtzIHRob3NlIGNhbGxpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIG15IHByaW1hcnkgdGFyZ2V0cy4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYCBhcmVuJiMzOTt0IGFsc28gc3RhdGljIG9yLCB3b3JzZSwgbm90IGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXkmIzM5O3JlIGFjY2Vzc2libGUgYW5kIHRlc3RhYmxlIHRvIGVmZmVjdGl2ZWx5IGxldmVyYWdlIHRoaXMgY2hhbmdlIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg5OTU9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDI5LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MDMwOmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDMxLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcxMwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzIGZ1bmN0aW9uLCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgZUJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIGhvdyBCVEYgSURzIGFyZSBtYW5hZ2VkIGluIHRoYXQgY29udGV4dC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3N1bWUgdGhpcyByZWxhdGVzIHRvIHNpdHVhdGlvbnMgd2hlcmUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBCVEYgSURzIG9yIHBlcmhhcHMgbXVsdGlwbGUgcHJvZ3JhbXMgYXR0YWNoaW5nIHRvIHRoZSBzYW1lIHRhcmdldCwgb3IgbWF5YmUgaGFuZGxpbmcgbXVsdGlwbGUgQlRGIG9iamVjdHMuIEkgZXhwZWN0IHRoZSAmIzM0O211bHRpJiMzNDsgc3VmZml4IGhpbnRzIGF0IGNvbXBsZXhpdHkgYmV5b25kIGEgc2ltcGxlIG9uZS10by1vbmUgYXR0YWNobWVudCBzY2VuYXJpby4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiYjMzk7cyBhcmd1bWVudHM6IHdoaWNoIGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQ/IFdoYXQga2luZHMgb2YgY2hlY2tzIGFyZSBpdCBwZXJmb3JtaW5nPyBBbnkgcG90ZW50aWFsIGZvciBlcnJvciBjb25kaXRpb25zLCByYWNlIGNvbmRpdGlvbnMgb3IgaW5lZmZpY2llbmNpZXMgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbmVlZCB0byBiZSBub3RlZCwgYW5kIEkmIzM5O2xsIHBheSBzcGVjaWZpYyBhdHRlbnRpb24gdG8gaG93IEJURiB0eXBlIGNvbXBhdGliaWxpdHkgaXMgZW5mb3JjZWQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk0MzU9c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTM0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTM1OmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzNi1cdFx0XHRcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNDkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRHluYW1pYyBOYXR1cmUgb2YgU3lzdGVtcyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIGR5bmFtaWMuIFRoZSBrZXkgaXMgcmVjb2duaXppbmcgdGhhdCB0aGVzZSBlbGVtZW50cyBhcmVuJiMzOTt0IHN0YXRpYzsgdGhleSYjMzk7cmUgY29uc3RhbnRseSBjaGFuZ2luZyBvciBjYXBhYmxlIG9mIGNoYW5naW5nLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhpcyBub24tc3RhdGljIG5hdHVyZSwgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24uIFdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGludm9sdmVkIGhlcmU/IFNwZWNpZmljYWxseSwgd2l0aCB0aGUgY29udGV4dCBiZWluZyBCUEYsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQmIzM5O3MgdGhlIGdhdGVrZWVwZXIsIGlzbiYjMzk7dCBpdD8gSWYgdGhhdCBpc24mIzM5O3QgZW5hYmxlZCwgd2UmIzM5O3JlIGVzc2VudGlhbGx5IGRlYWQgaW4gdGhlIHdhdGVyIGZyb20gdGhlIGdldC1nby4gU28sIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSXQmIzM5O3MgdGhlIGVzc2VudGlhbCBiYXNlbGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mzk1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQmIzM5O3MgKm15KiB0cmFpbiBvZiB0aG91Z2h0OgoKKipDaGVja2luZyB0aGUgQlBGX1NZU0NBTEwgRGVmaW5pdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gbmFpbCBkb3duIGV4YWN0bHkgd2hlcmUgYEJQRl9TWVNDQUxMYCBpcyBkZWZpbmVkIGluIHRoZSBrZXJuZWwuIFRoaXMgaXMgZnVuZGFtZW50YWwsIGVzcGVjaWFsbHkgaWYgSSYjMzk7bSBsb29raW5nIGF0IHBvdGVudGlhbCBzeXN0ZW0gY2FsbCB0cmFjaW5nIHdpdGggQlBGLCBvciBpZiBJJiMzOTttIHdvcmtpbmcgb24gc29tZXRoaW5nIHRoYXQgbGV2ZXJhZ2VzIHN5c2NhbGwgaG9va3MuIEkgbmVlZCB0byBzZWUgdGhlIGhlYWRlciBmaWxlLCB0aGUgaW5jbHVkZSBwYXRoLCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBvZiB0aGUgbWFjcm8uLi4gSXMgaXQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljPyBEb2VzIGl0IHJlbHkgb24gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24ga2VybmVsIHZlcnNpb24gb3IgY29uZmlndXJhdGlvbiBmbGFncz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIHRob3JvdWdobHkgdG8gZW5zdXJlIG15IEJQRiBwcm9ncmFtcyBhcmUgcG9ydGFibGUgYW5kIGJlaGF2ZSBhcyBJIGV4cGVjdC4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgd2l0aCBhIGBncmVwYCBvciBzaW1pbGFyIHRvIHBpbnBvaW50IHRoZSBkZWZpbml0aXZlIGxvY2F0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSAqZGVmaW5pdGlvbiogaXMgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MjIKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgQ29uZmlndXJhdGlvbiBmb3IgVHJhY2luZyoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBjdXJyZW50IHRyYWNpbmcgaXNzdWUsIGxldCYjMzk7cyBqdXN0IG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBmaWxlcyBvciBzZXR0aW5ncyByZWxhdGVkIHRvIHRyYWNpbmcuIFlvdSBrbm93IGhvdyBpdCBpczsgc29tZXRpbWVzIHRoZSBvYnZpb3VzIGdldHMgYnVyaWVkLiBJIHdhbnQgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byBxdWlja2x5IHNjYW4gdGhlIHVzdWFsIHN1c3BlY3RzLCBhbnkgcG90ZW50aWFsIG92ZXJyaWRlcywgYW5kIGFueSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBtaWdodCBiZSBpbmZsdWVuY2luZyB0aGUgdHJhY2luZyBiZWhhdmlvci4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBzb21ldGhpbmcgc2ltcGxlIGlzIHRoZSBjdWxwcml0LCBidXQgSSBhbHdheXMgd2FudCB0byBlbGltaW5hdGUgdGhlIHNpbXBsZSBwb3NzaWJpbGl0aWVzIGZpcnN0LiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkgZGlkbiYjMzk7dCBtaXNzIHNvbWV0aGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgb3IgYSBzZXR0aW5nIEkgdGhvdWdodCBJJiMzOTtkIGhhbmRsZWQgYnV0IGRpZG4mIzM5O3QuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBob3BlZnVsbHkgcHJvdmlkZSBtZSB3aXRoIGEgc29saWQgZm91bmRhdGlvbiBiZWZvcmUgSSBkZWx2ZSBpbnRvIG1vcmUgY29tcGxleCBkZWJ1Z2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfRVZFTlRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1Mi1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xua2VybmVsL3RyYWNlL0tjb25maWctODU0LVx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDIwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEJQRiBWZXJpZmllciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgYEJQRl9TWVNDQUxMYCB0aGluZyBpcyBhIG11c3QtaGF2ZSwgbm8gcXVlc3Rpb24uIEFuZCwgdXN1YWxseSwgYEJQRl9KSVRgIGlzIHByZXR0eSBjcnVjaWFsIGlmIHlvdSYjMzk7cmUgd29ya2luZyB3aXRoIHNsZWVwYWJsZSBwcm9ncmFtcy4gSSYjMzk7bSBub3QgdG90YWxseSBjZXJ0YWluIGl0JiMzOTtzICpzdHJpY3RseSogcmVxdWlyZWQganVzdCBmb3IgdGhlIHZlcmlmaWVyIGl0c2VsZiwgYnV0IGl0JiMzOTtzIGdvb2QgcHJhY3RpY2UuIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBkZXBlbmRlbmNpZXMgYmVmb3JlIEkgbWFrZSBhbnkgbW92ZXMuIFRoZSB2ZXJpZmllciBjYW4gYmUgYSBwYWluIGlmIGl0JiMzOTtzIG1pc2NvbmZpZ3VyZWQuIFRpbWUgdG8gaGVhZCBvdmVyIHRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCBkaWcgaW50byBpdC4gSSYjMzk7bGwgc2VhcmNoIGZvciB0aG9zZSBgQ09ORklHX2AgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoZSB2ZXJpZmllciYjMzk7cyBiZWhhdmlvci4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTQ0Mzk9QlRGX0lEKHN0cnVjdCwgY2dyb3VwKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTQ0NDAtI2VuZGlmXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDQ0MTojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDQyLUJURl9JRChzdHJ1Y3QsIGJwZl9jcHVtYXNrKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE5Nz1CVEZfSURfVU5VU0VEXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTgtI2VuZGlmXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExOTk6I2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMDAtQlRGX0lEKGZ1bmMsIGJwZl9zZXNzaW9uX2Nvb2tpZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDk9QlRGX0lEKGZ1bmMsIGJwZl9pdGVyX251bV9kZXN0cm95KVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjEwOiNpZmRlZiBDT05GSUdfQlBGX0xTTVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjExLUJURl9JRChmdW5jLCBicGZfc2V0X2RlbnRyeV94YXR0cilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMjg9QlRGX0lEKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjI5OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjMwLUJURl9JRChmdW5jLCBicGZfc2Vzc2lvbl9pc19yZXR1cm4pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NzIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBQYXRjaCoqCgpSaWdodCwgc28gdGhlIHBhdGNoIGlzIG5lc3RsZWQgaW4gYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgLiBUaGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIGlzc3VlLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMsIHN1Y2ggYXMgc3BlY2lmaWMga2VybmVsIGZlYXR1cmVzIG9yIG9wdGlvbnMsIGFyZSBlbmFibGluZyBvciBkaXNhYmxpbmcgYmVoYXZpb3Igd2l0aGluIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCB0aGF0IG1heSBjYXVzZSB0aGUgaXNzdWUgYXQgaGFuZC4gVW5kZXJzdGFuZGluZyBhbnkgcG9zc2libGUgZGVwZW5kZW5jaWVzIHdpbGwgaW5mb3JtIHdoZXRoZXIgY2VydGFpbiBidWlsZCBjb25maWd1cmF0aW9ucyBjb3VsZCBiZSB0aGUgcm9vdCBjYXVzZS4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIHVuZGVyIGRpZmZlcmVudCBjb21waWxlIHRpbWUgY29uZGl0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFzIHdlbGwgdG8gZmluZCBhbnkgY2x1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0Zl9pZF9hbGxvd19zbGVlcGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE4OTMyPXN0YXRpYyBib29sIGlzX3RyYWNpbmdfbXVsdGlfaWQoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkzNi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODkzNzpzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg5MzgtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTkwMzA9aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MzI5LVx0XHRpZiAocHJvZy1cdTAwM2VzbGVlcGFibGUpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTMzMDpcdFx0XHRyZXQgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmLCB0Z3RfcHJvZyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkzMzEtXHRcdFx0aWYgKHJldCkge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTUzNT1pbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgwLVx0aWYgKHByb2ctXHUwMDNlc2xlZXBhYmxlKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1ODE6XHRcdGVyciA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYsIE5VTEwpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgyLVx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzUxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgZnVuY3Rpb25hbCBpc3N1ZSB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllci4gSXQmIzM5O3MgYWJvdXQgcHJldmVudGluZyBzbGVlcGFibGUgQlBGIHRyYWNpbmcgcHJvZ3JhbXMgZnJvbSBhdHRhY2hpbmcgdG8gb3RoZXIgQlBGIHByb2dyYW1zLiBUaGlzIGlzIGEgY3J1Y2lhbCBzZWN1cml0eSBjb25zaWRlcmF0aW9uLiBNeSBtYWluIGZvY3VzIGlzIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyBhZmZlY3RlZDogYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYC4KClRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSBpcyBgQlBGX1NZU0NBTExgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS4gQnV0IEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCwgYXMgaXQmIzM5O3MgYmVlbiBhIHdoaWxlLCBhbmQgZW5zdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGhpZGRlbiBkZXBlbmRlbmNpZXMuIEFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEJleW9uZCBgQlBGX1NZU0NBTExgLCBJIGtub3cgd2UgYWxzbyBuZWVkIGBERUJVR19JTkZPX0JURmAgaW4gcGxheSBmb3IgQlRGIHN1cHBvcnQsIHNvIEkgc2hvdWxkIGVuc3VyZSB0aGF0JiMzOTtzIGNvdmVyZWQgYXMgd2VsbC4gQSBxdWljayBzY2FuIG9mIGBrZXJuZWwvYnBmL0tjb25maWdgIHNob3VsZCBjb25maXJtIHRoZSBjb21wbGV0ZSBsaXN0IG9mIHJlbGF0ZWQgY29uZmlncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFQlVHX0lORk9fQlRGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTM3OD1jb25maWcgREVCVUdfSU5GT19TUExJVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTM5Ny1cbmxpYi9LY29uZmlnLmRlYnVnOjM5ODpjb25maWcgREVCVUdfSU5GT19CVEZcbmxpYi9LY29uZmlnLmRlYnVnLTM5OS1cdGJvb2wgXCYjMzQ7R2VuZXJhdGUgQlRGIHR5cGUgaW5mb3JtYXRpb25cJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zz00MTk9Y29uZmlnIFBBSE9MRV9IQVNfTEFOR19FWENMVURFXG4tLVxubGliL0tjb25maWcuZGVidWctNDI3LVxubGliL0tjb25maWcuZGVidWc6NDI4OmNvbmZpZyBERUJVR19JTkZPX0JURl9NT0RVTEVTXG5saWIvS2NvbmZpZy5kZWJ1Zy00MjktXHRib29sIFwmIzM0O0dlbmVyYXRlIEJURiB0eXBlIGluZm9ybWF0aW9uIGZvciBrZXJuZWwgbW9kdWxlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTAwCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipCVEYgRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGFuZCBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGV2ZXJ5dGhpbmcgbGluZWQgdXAgY29ycmVjdGx5IGZvciBCVEYuIEZpcnN0LCBpdCYjMzk7cyBjbGVhciB0aGF0IHdlJiMzOTtyZSBnb2luZyB0byBuZWVkIGBERUJVR19JTkZPX0JURmAuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCByZXF1aXJlbWVudCwgbm8gcXVlc3Rpb24gYWJvdXQgaXQuIEJleW9uZCB0aGF0LCBJIHRoaW5rIGl0JiMzOTtzIHBydWRlbnQgdG8gY2hlY2sgb24gYEJQRl9FVkVOVFNgIHRvbywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbWFrZSBzdXJlIHdlIGhhdmUgYWxsIG91ciBiYXNlcyBjb3ZlcmVkLiBObyBwb2ludCBpbiBtaXNzaW5nIGEgY3J1Y2lhbCBmbGFnIHdoZW4gd2UgY2FuIGJlIGNlcnRhaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfRVZFTlRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1Mi1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xua2VybmVsL3RyYWNlL0tjb25maWctODU0LVx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTU3CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKk15IEJQRiBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIFZlcmlmaWVyIEZpeCoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggdGhhdCYjMzk7cyBjcnVjaWFsIOKAkyBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgYnVnIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyIGl0c2VsZi4gU3BlY2lmaWNhbGx5LCB0aGUgdmVyaWZpZXIgd2FzIGxldHRpbmcgc2xlZXBhYmxlIEJQRiB0cmFjaW5nIHByb2dyYW1zIGF0dGFjaCB3aGVyZSB0aGV5IHNob3VsZG4mIzM5O3QgYmUgYWJsZSB0by4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJpZmllciYjMzk7cyBjb3JlIGxvZ2ljLCBhIGNvcnJlY3Rpb24gaW4gaG93IGl0IGVuZm9yY2VzIHRoZSBydWxlcy4gKkNydWNpYWxseSosIHRoaXMgbWVhbnMgd2UgYWJzb2x1dGVseSAqbmVlZCogdG8gZnV6eiB0aGlzLiBBbnkgY2hhbmdlIHRvIHRoZSB2ZXJpZmllciBsaWtlIHRoaXMgY2FuIGludHJvZHVjZSBzdWJ0bGUsIHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlIGZsYXdzLgoKTXkgcGxhbj8gV2XigJlyZSBnb2luZyB0byBiZSB0aG9yb3VnaC4gSSB3YW50IHRvIGJ1aWxkIGEgZnV6emluZyBjYW1wYWlnbiB0aGF0IHNwZWNpZmljYWxseSB0YXJnZXRzIHRoaXMgaXNzdWUuIEkmIzM5O2xsIGZvY3VzIG9uIGluY2x1ZGluZyBgQlBGX1NZU0NBTExgLCBgREVCVUdfSU5GT19CVEZgLCBhbmQgYEJQRl9FVkVOVFNgIGluIHRoZSB0ZXN0IHNldHVwLiBUaGVzZSBhcmUga2V5IGFyZWFzIHRvIHByb2JlIGZvciBzaWRlIGVmZmVjdHMuIGBCUEZfU1lTQ0FMTGAgd2lsbCBoZWxwIGV4cG9zZSBlZGdlIGNhc2VzIGludGVyYWN0aW5nIHdpdGgga2VybmVsIGNhbGxzLCBgREVCVUdfSU5GT19CVEZgIHdpbGwgaGVscCB1bmNvdmVyIGludGVyYWN0aW9ucyB3aXRoIGRlYnVnIG1ldGFkYXRhLCBhbmQgYEJQRl9FVkVOVFNgIGhlbHBzIHRvIHByb2JlIHRoZSBCUEYgRXZlbnQgc3Vic3lzdGVtLiBUaGVzZSBhcmUgYWxsIGNyaXRpY2FsIGFyZWFzIHdoZXJlIEJQRiB2ZXJpZmljYXRpb24gY2FuIGJlY29tZSBjb21wbGljYXRlZC4KCkFuZCB0byBvcmdhbml6ZSBhbGwgb2YgdGhpcywgdGhlIGJlc3QgdG9vbCBpcyBgc2V0LXJlc3VsdHNgLiBJIHdpbGwgbmVlZCB0byB0cmFjayB3aGF0IGtpbmQgb2YgcmVzdWx0cyB3ZSBnZXQgaGVyZSwgZXNwZWNpYWxseSBhbnkgZnV6emluZyBjcmFzaGVzLCB1bmV4cGVjdGVkIGJlaGF2aW9yLCBvciwgaWRlYWxseSwgbm90aGluZyBhdCBhbGwg4oCTIGluIHdoaWNoIGNhc2UsIHdlIGNhbiBjb25maXJtIHRoZSBmaXggaXMgc29saWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtERUJVR19JTkZPX0JURiYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBwcmV2ZW50IHNsZWVwYWJsZSB0cmFjaW5nIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIHRyYWNpbmcgcHJvZ3JhbXMgZnJvbSBhdHRhY2hpbmcgdG8gb3RoZXIgQlBGIHByb2dyYW1zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjA0LjE3MzAwNjc3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyODUxMTc1MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJERUJVR19JTkZPX0JURlwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja19hdHRhY2hfdGFyZ2V0XCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcHJldmVudCBzbGVlcGFibGUgdHJhY2luZyBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBvdGhlciBCUEYgcHJvZ3JhbXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjowNC4xNzMwMTk2NzlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MTg2MzcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU3YzQzZDQ3OWIwYjVmYTg2OWJhNWExYjYyMjJkMjRhZTUyZjUxNzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMjYgMTU6MzY6MDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggNTJiZTBhMTE4Y2NlMDcuLjIyYWM0N2Q5YTU1MzgzIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC0xODkzNSwxMyArMTg5MzUsMTYgQEAgc3RhdGljIGJvb2wgaXNfdHJhY2luZ19tdWx0aV9pZChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQpXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgYnRmICpidGYpXFxuK1xcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nKVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdDtcXG4gXFx0Y29uc3QgY2hhciAqdG5hbWU7XFxuIFxcbiBcXHRzd2l0Y2ggKHByb2ctXFx1MDAzZXR5cGUpIHtcXG4gXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XFxuK1xcdFxcdGlmICh0Z3RfcHJvZylcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRcXHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBidGZfaWQpO1xcbiBcXHRcXHRpZiAoIXQpXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC0xOTMyNCw3ICsxOTMyNyw3IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAocHJvZy1cXHUwMDNlc2xlZXBhYmxlKSB7XFxuLVxcdFxcdFxcdHJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYpO1xcbitcXHRcXHRcXHRyZXQgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmLCB0Z3RfcHJvZyk7XFxuIFxcdFxcdFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0XFx0XFx0bW9kdWxlX3B1dChtb2QpO1xcbiBcXHRcXHRcXHRcXHRicGZfbG9nKGxvZywgXFxcIiVzIGlzIG5vdCBzbGVlcGFibGVcXFxcblxcXCIsIHRuYW1lKTtcXG5AQCAtMTk1NzUsNyArMTk1NzgsNyBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidFxcbiBcXG4gXFx0LyogQ2hlY2sgc2xlZXBhYmxlIHByb2dyYW0gYXR0YWNobWVudC4gKi9cXG4gXFx0aWYgKHByb2ctXFx1MDAzZXNsZWVwYWJsZSkge1xcbi1cXHRcXHRlcnIgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmKTtcXG4rXFx0XFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgTlVMTCk7XFxuIFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXFxuaW5kZXggNGE4N2Q3MTYzYzhjN2YuLjI1MjNjMDdhMTZjNjU1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xcbkBAIC01LDYgKzUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjYnBmL2J0Zi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiYmluZDRfcHJvZy5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJmcmVwbGFjZV9wcm9nbWFwLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcImZlbnRyeV9zbGVlcGFibGUuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwieGRwX2R1bW15LnNrZWwuaFxcXCJcXG4gXFxuIHR5cGVkZWYgaW50ICgqdGVzdF9jYikoc3RydWN0IGJwZl9vYmplY3QgKm9iaik7XFxuQEAgLTU3Niw2ICs1NzcsNjAgQEAgc3RhdGljIHZvaWQgdGVzdF9mdW5jX3JlcGxhY2VfcHJvZ21hcCh2b2lkKVxcbiBcXHRmcmVwbGFjZV9wcm9nbWFwX19kZXN0cm95KHNrZWwpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IGZlbnRyeV9zbGVlcGFibGUgKnNrZWwgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgeGRwX2R1bW15ICpza2VsX3hkcCA9IE5VTEw7XFxuK1xcdGludCBpZmluZGV4LCBwcm9nX2ZkLCBlcnI7XFxuK1xcdGNoYXIgYnVmZls2NF0gPSB7fTtcXG4rXFxuKyNpZm5kZWYgX194ODZfNjRfX1xcbitcXHR0ZXN0X19za2lwKCk7XFxuK1xcdHJldHVybjtcXG4rI2VuZGlmXFxuK1xcbitcXHRpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgoXFxcImxvXFxcIik7XFxuK1xcdGlmICghQVNTRVJUX0dUKGlmaW5kZXgsIDAsIFxcXCJpZl9uYW1ldG9pbmRleFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRza2VsX3hkcCA9IHhkcF9kdW1teV9fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbF94ZHAsIFxcXCJ4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWRcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0c2tlbCA9IGZlbnRyeV9zbGVlcGFibGVfX29wZW4oKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJmZW50cnlfc2xlZXBhYmxlX19vcGVuXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2V1c2VyX3B0ciA9IGJ1ZmY7XFxuK1xcbitcXHRwcm9nX2ZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWxfeGRwLVxcdTAwM2Vwcm9ncy5fX3g2NF9zeXNfbm9wKTtcXG4rXFx0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwtXFx1MDAzZXByb2dzLmZlbnRyeV94ZHAsIHByb2dfZmQsIFxcXCJfX3g2NF9zeXNfbm9wXFxcIik7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldFxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdGVyciA9IGZlbnRyeV9zbGVlcGFibGVfX2xvYWQoc2tlbCk7XFxuK1xcdEFTU0VSVF9FUlIoZXJyLCBcXFwiZmVudHJ5X3NsZWVwYWJsZV9fbG9hZFxcXCIpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdHNrZWwtXFx1MDAzZWxpbmtzLmZlbnRyeV94ZHAgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlKHNrZWwtXFx1MDAzZXByb2dzLmZlbnRyeV94ZHApO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cXHUwMDNlbGlua3MuZmVudHJ5X3hkcCwgXFxcImJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2VcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRza2VsX3hkcC1cXHUwMDNlbGlua3MuX194NjRfc3lzX25vcCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfeGRwKHNrZWxfeGRwLVxcdTAwM2Vwcm9ncy5fX3g2NF9zeXNfbm9wLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpZmluZGV4KTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLVxcdTAwM2VsaW5rcy5fX3g2NF9zeXNfbm9wLCBcXFwiYnBmX3Byb2dyYW1fX2F0dGFjaF94ZHBcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRlcnIgPSBzeXN0ZW0oXFxcInBpbmcgLXEgLWMgMSAtVyAxIDEyNy4wLjAuMSBcXHUwMDNlIC9kZXYvbnVsbFxcXCIpO1xcbitcXHRBU1NFUlRfT0soZXJyLCBcXFwicGluZ1xcXCIpO1xcbitcXHRBU1NFUlRfRVJSKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlcmV0dmFsLCBcXFwicmV0dmFsXFxcIik7XFxuK1xcbitvdXQ6XFxuK1xcdGZlbnRyeV9zbGVlcGFibGVfX2Rlc3Ryb3koc2tlbCk7XFxuK1xcdHhkcF9kdW1teV9fZGVzdHJveShza2VsX3hkcCk7XFxuK31cXG4rXFxuIC8qIE5PVEU6IGFmZmVjdCBvdGhlciB0ZXN0cywgbXVzdCBydW4gaW4gc2VyaWFsIG1vZGUgKi9cXG4gdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXFxuIHtcXG5AQCAtNjA3LDQgKzY2Miw2IEBAIHZvaWQgc2VyaWFsX3Rlc3RfZmV4aXRfYnBmMmJwZih2b2lkKVxcbiBcXHRcXHR0ZXN0X2Z1bmNfcmVwbGFjZV9pbnRfd2l0aF92b2lkKCk7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJmcmVwbGFjZV92b2lkXFxcIikpXFxuIFxcdFxcdHRlc3RfZnVuY19yZXBsYWNlX3ZvaWQoKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNsZWVwYWJsZV9mZW50cnlfdG9feGRwXFxcIikpXFxuK1xcdFxcdHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHAoKTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ0YjkzOGY0ODVlMjRjXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmNcXG5AQCAtMCwwICsxLDE5IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNpbmNsdWRlIFxcXCJ2bWxpbnV4LmhcXFwiXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXFx1MDAzZVxcbitcXG4rY2hhciBMSUNFTlNFW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG4rXFxuK3ZvaWQgKnVzZXJfcHRyO1xcbitpbnQgcmV0dmFsO1xcbitcXG4rU0VDKFxcXCJmZW50cnkuc1xcXCIpXFxuK2ludCBCUEZfUFJPRyhmZW50cnlfeGRwKVxcbit7XFxuK1xcdGNoYXIgYnVmZls2NF07XFxuK1xcbitcXHRyZXR2YWwgPSBicGZfY29weV9mcm9tX3VzZXIoYnVmZiwgc2l6ZW9mKGJ1ZmYpLCB1c2VyX3B0cik7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcXG5pbmRleCBkOTg4YjJlMGNlZTg0MC4uNWYxZTA3NzEwMjFkZmUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXFxuQEAgLTEwLDQgKzEwLDEwIEBAIGludCB4ZHBfZHVtbXlfcHJvZyhzdHJ1Y3QgeGRwX21kICpjdHgpXFxuIFxcdHJldHVybiBYRFBfUEFTUztcXG4gfVxcbiBcXG4rU0VDKFxcXCJ4ZHBcXFwiKVxcbitpbnQgX194NjRfc3lzX25vcChzdHJ1Y3QgeGRwX21kICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIFhEUF9QQVNTO1xcbit9XFxuK1xcbiBjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MDUuMDM2OTc1NTgyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTE5ODcxODUwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBwcmV2ZW50IHNsZWVwYWJsZSB0cmFjaW5nIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3YzQzZDQ3OWIwYjVmYTg2OWJhNWExYjYyMjJkMjRhZTUyZjUxNzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxNTozNjowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggNTJiZTBhMTE4Y2NlMDcuLjIyYWM0N2Q5YTU1MzgzIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0xODkzNSwxMyArMTg5MzUsMTYgQEAgc3RhdGljIGJvb2wgaXNfdHJhY2luZ19tdWx0aV9pZChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQpXG4gfVxuIFxuIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmKVxuK1x0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2cpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0O1xuIFx0Y29uc3QgY2hhciAqdG5hbWU7XG4gXG4gXHRzd2l0Y2ggKHByb2ctXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XG4rXHRcdGlmICh0Z3RfcHJvZylcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgYnRmX2lkKTtcbiBcdFx0aWYgKCF0KVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTE5MzI0LDcgKzE5MzI3LDcgQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRcdH1cbiBcbiBcdFx0aWYgKHByb2ctXHUwMDNlc2xlZXBhYmxlKSB7XG4tXHRcdFx0cmV0ID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0Zik7XG4rXHRcdFx0cmV0ID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgdGd0X3Byb2cpO1xuIFx0XHRcdGlmIChyZXQpIHtcbiBcdFx0XHRcdG1vZHVsZV9wdXQobW9kKTtcbiBcdFx0XHRcdGJwZl9sb2cobG9nLCBcIiVzIGlzIG5vdCBzbGVlcGFibGVcXG5cIiwgdG5hbWUpO1xuQEAgLTE5NTc1LDcgKzE5NTc4LDcgQEAgaW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRcbiBcbiBcdC8qIENoZWNrIHNsZWVwYWJsZSBwcm9ncmFtIGF0dGFjaG1lbnQuICovXG4gXHRpZiAocHJvZy1cdTAwM2VzbGVlcGFibGUpIHtcbi1cdFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0Zik7XG4rXHRcdGVyciA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYsIE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBlcnI7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5pbmRleCA0YTg3ZDcxNjNjOGM3Zi4uMjUyM2MwN2ExNmM2NTUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuQEAgLTUsNiArNSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2J0Zi5oXHUwMDNlXG4gI2luY2x1ZGUgXCJiaW5kNF9wcm9nLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJmcmVwbGFjZV9wcm9nbWFwLnNrZWwuaFwiXG4rI2luY2x1ZGUgXCJmZW50cnlfc2xlZXBhYmxlLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ4ZHBfZHVtbXkuc2tlbC5oXCJcbiBcbiB0eXBlZGVmIGludCAoKnRlc3RfY2IpKHN0cnVjdCBicGZfb2JqZWN0ICpvYmopO1xuQEAgLTU3Niw2ICs1NzcsNjAgQEAgc3RhdGljIHZvaWQgdGVzdF9mdW5jX3JlcGxhY2VfcHJvZ21hcCh2b2lkKVxuIFx0ZnJlcGxhY2VfcHJvZ21hcF9fZGVzdHJveShza2VsKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCh2b2lkKVxuK3tcbitcdHN0cnVjdCBmZW50cnlfc2xlZXBhYmxlICpza2VsID0gTlVMTDtcbitcdHN0cnVjdCB4ZHBfZHVtbXkgKnNrZWxfeGRwID0gTlVMTDtcbitcdGludCBpZmluZGV4LCBwcm9nX2ZkLCBlcnI7XG4rXHRjaGFyIGJ1ZmZbNjRdID0ge307XG4rXG4rI2lmbmRlZiBfX3g4Nl82NF9fXG4rXHR0ZXN0X19za2lwKCk7XG4rXHRyZXR1cm47XG4rI2VuZGlmXG4rXG4rXHRpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgoXCJsb1wiKTtcbitcdGlmICghQVNTRVJUX0dUKGlmaW5kZXgsIDAsIFwiaWZfbmFtZXRvaW5kZXhcIikpXG4rXHRcdHJldHVybjtcbitcbitcdHNrZWxfeGRwID0geGRwX2R1bW15X19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbF94ZHAsIFwieGRwX2R1bW15X19vcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRza2VsID0gZmVudHJ5X3NsZWVwYWJsZV9fb3BlbigpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwiZmVudHJ5X3NsZWVwYWJsZV9fb3BlblwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRza2VsLVx1MDAzZWJzcy1cdTAwM2V1c2VyX3B0ciA9IGJ1ZmY7XG4rXG4rXHRwcm9nX2ZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWxfeGRwLVx1MDAzZXByb2dzLl9feDY0X3N5c19ub3ApO1xuK1x0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5X3hkcCwgcHJvZ19mZCwgXCJfX3g2NF9zeXNfbm9wXCIpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldFwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRlcnIgPSBmZW50cnlfc2xlZXBhYmxlX19sb2FkKHNrZWwpO1xuK1x0QVNTRVJUX0VSUihlcnIsIFwiZmVudHJ5X3NsZWVwYWJsZV9fbG9hZFwiKTtcbitcdGlmIChlcnIpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0c2tlbC1cdTAwM2VsaW5rcy5mZW50cnlfeGRwID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsLVx1MDAzZXByb2dzLmZlbnRyeV94ZHApO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3MuZmVudHJ5X3hkcCwgXCJicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdHNrZWxfeGRwLVx1MDAzZWxpbmtzLl9feDY0X3N5c19ub3AgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3hkcChza2VsX3hkcC1cdTAwM2Vwcm9ncy5fX3g2NF9zeXNfbm9wLFxuK1x0XHRcdFx0XHRcdFx0XHRpZmluZGV4KTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsX3hkcC1cdTAwM2VsaW5rcy5fX3g2NF9zeXNfbm9wLCBcImJwZl9wcm9ncmFtX19hdHRhY2hfeGRwXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdGVyciA9IHN5c3RlbShcInBpbmcgLXEgLWMgMSAtVyAxIDEyNy4wLjAuMSBcdTAwM2UgL2Rldi9udWxsXCIpO1xuK1x0QVNTRVJUX09LKGVyciwgXCJwaW5nXCIpO1xuK1x0QVNTRVJUX0VSUihza2VsLVx1MDAzZWJzcy1cdTAwM2VyZXR2YWwsIFwicmV0dmFsXCIpO1xuK1xuK291dDpcbitcdGZlbnRyeV9zbGVlcGFibGVfX2Rlc3Ryb3koc2tlbCk7XG4rXHR4ZHBfZHVtbXlfX2Rlc3Ryb3koc2tlbF94ZHApO1xuK31cbitcbiAvKiBOT1RFOiBhZmZlY3Qgb3RoZXIgdGVzdHMsIG11c3QgcnVuIGluIHNlcmlhbCBtb2RlICovXG4gdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXG4ge1xuQEAgLTYwNyw0ICs2NjIsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcbiBcdFx0dGVzdF9mdW5jX3JlcGxhY2VfaW50X3dpdGhfdm9pZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJmcmVwbGFjZV92b2lkXCIpKVxuIFx0XHR0ZXN0X2Z1bmNfcmVwbGFjZV92b2lkKCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNsZWVwYWJsZV9mZW50cnlfdG9feGRwXCIpKVxuK1x0XHR0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwKCk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ0YjkzOGY0ODVlMjRjXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jXG5AQCAtMCwwICsxLDE5IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjaW5jbHVkZSBcInZtbGludXguaFwiXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuK1xuK2NoYXIgTElDRU5TRVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuK3ZvaWQgKnVzZXJfcHRyO1xuK2ludCByZXR2YWw7XG4rXG4rU0VDKFwiZmVudHJ5LnNcIilcbitpbnQgQlBGX1BST0coZmVudHJ5X3hkcClcbit7XG4rXHRjaGFyIGJ1ZmZbNjRdO1xuK1xuK1x0cmV0dmFsID0gYnBmX2NvcHlfZnJvbV91c2VyKGJ1ZmYsIHNpemVvZihidWZmKSwgdXNlcl9wdHIpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuY1xuaW5kZXggZDk4OGIyZTBjZWU4NDAuLjVmMWUwNzcxMDIxZGZlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcbkBAIC0xMCw0ICsxMCwxMCBAQCBpbnQgeGRwX2R1bW15X3Byb2coc3RydWN0IHhkcF9tZCAqY3R4KVxuIFx0cmV0dXJuIFhEUF9QQVNTO1xuIH1cbiBcbitTRUMoXCJ4ZHBcIilcbitpbnQgX194NjRfc3lzX25vcChzdHJ1Y3QgeGRwX21kICpjdHgpXG4re1xuK1x0cmV0dXJuIFhEUF9QQVNTO1xuK31cbitcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjowNS4wMzY5ODE0ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQ5Mzk5ODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbi4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDsgdGhleSd2ZSBhZGRlZCBhIG5ldyBjaGVjayB3aXRoaW4gdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbiBpdHNlbGY6XG5cbmBgYGNcbiBcdHN3aXRjaCAocHJvZy1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcbitcdFx0aWYgKHRndF9wcm9nKVxuK1x0XHRcdHJldHVybiAtRUlOVkFMO1xuYGBgXG5cblJpZ2h0LCBzbyBpZiBhIHRyYWNpbmcgQlBGIHByb2dyYW0gaXMgc2xlZXBhYmxlIGFuZCB3ZSBoYXZlIGEgYHRndF9wcm9nYCAobWVhbmluZyBpdCdzIGJlaW5nIGF0dGFjaGVkIHRvIGFub3RoZXIgcHJvZ3JhbSksIHRoZSBmdW5jdGlvbiBub3cgcmV0dXJucyBgLUVJTlZBTGAuIFRoaXMgZXNzZW50aWFsbHkgZGlzYWxsb3dzIHNsZWVwYWJsZSB0cmFjaW5nIEJQRiBwcm9ncmFtcyBmcm9tIGJlaW5nIGF0dGFjaGVkIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhhdCdzIHRoZSBjb3JlIG9mIGl0LiBNYWtlcyBzZW5zZSDigJMgcHJvYmFibHkgc29tZSBzb3J0IG9mIHNhZmV0eSBtZWNoYW5pc20gb3IgYSBjb25zdHJhaW50IG9uIGhvdyB0aGVzZSB0cmFjaW5nIHByb2dyYW1zIGludGVyYWN0IHdpdGggb3RoZXJzLlxuXG5UaGUgcGF0Y2ggYWxzbyBtZW50aW9ucyB1cGRhdGluZyB0aGUgY2FsbHMgdG8gYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgIHRvIGNvcnJlY3RseSBwYXNzIHRoZSBgdGd0X3Byb2dgIGFyZ3VtZW50LiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgbm93IHRvIHNlZSAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBncm9rIHRoZSBmbG93IGFuZCBob3cgdGhpcyBjaGVjayBhZmZlY3RzIHRoZSBleGlzdGluZyBsb2dpYy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjYXNlcyB3aGVyZSBgdGd0X3Byb2dgIGlzIGVpdGhlciBOVUxMIG9yIGEgdmFsaWQgcHJvZ3JhbSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIExldCdzIGdldCB0byBpdCFcblxuXG4iLCJJbnB1dFRva2VucyI6NDEyMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjA5LjY4NjM4NTk0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU3MDAyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRmX2lkX2FsbG93X3NsZWVwYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE4OTMyPXN0YXRpYyBib29sIGlzX3RyYWNpbmdfbXVsdGlfaWQoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM2LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODkzNzpzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM4LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MDMwPWludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MzI5LVxcdFxcdGlmIChwcm9nLVxcdTAwM2VzbGVlcGFibGUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkzMzA6XFx0XFx0XFx0cmV0ID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgdGd0X3Byb2cpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzMS1cXHRcXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1MzU9aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgwLVxcdGlmIChwcm9nLVxcdTAwM2VzbGVlcGFibGUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1ODE6XFx0XFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgTlVMTCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgyLVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjA5Ljc5MjA5MzM3M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMTQ1MTk5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAuIEl0J3MgcmVqZWN0aW5nIHNsZWVwYWJsZSB0cmFjaW5nIHByb2dyYW1zIGlmIGB0Z3RfcHJvZ2AgaXMgcHJlc2VudC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgZ2l2ZW4gaXQncyBhIHJlYWNoYWJsZSBjaGFuZ2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIEkgY2FuIGZvY3VzIG15IGVmZm9ydHMuXG5cbkknbSB0aGlua2luZyBJIHNob3VsZCB6b29tIGluIG9uIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBjYWxsIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYC4gTGV0J3Mgc2VlLi4uIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgYXJlIHRoZSBjYWxsZXJzIEknbSBsb29raW5nIGZvci4gU2luY2UgYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgIGl0c2VsZiBpcyBzdGF0aWMsIGl0J3MgdGhvc2UgY2FsbGluZyBmdW5jdGlvbnMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgbXkgcHJpbWFyeSB0YXJnZXRzLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgYXJlbid0IGFsc28gc3RhdGljIG9yLCB3b3JzZSwgbm90IGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXkncmUgYWNjZXNzaWJsZSBhbmQgdGVzdGFibGUgdG8gZWZmZWN0aXZlbHkgbGV2ZXJhZ2UgdGhpcyBjaGFuZ2UgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MTQuMTA2NjE3OTAzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzI2NzkyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODk5NT1idGZfYXR0YWNoX2Z1bmNfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTAyOS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkwMzA6aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDMxLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjE0LjIwOTg5NDI3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTIwNzk0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgZnVuY3Rpb24sIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgcGljdHVyZSBvZiBlQlBGIHByb2dyYW0gYXR0YWNobWVudCBhbmQgaG93IEJURiBJRHMgYXJlIG1hbmFnZWQgaW4gdGhhdCBjb250ZXh0LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc3VtZSB0aGlzIHJlbGF0ZXMgdG8gc2l0dWF0aW9ucyB3aGVyZSB3ZSdyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgQlRGIElEcyBvciBwZXJoYXBzIG11bHRpcGxlIHByb2dyYW1zIGF0dGFjaGluZyB0byB0aGUgc2FtZSB0YXJnZXQsIG9yIG1heWJlIGhhbmRsaW5nIG11bHRpcGxlIEJURiBvYmplY3RzLiBJIGV4cGVjdCB0aGUgXCJtdWx0aVwiIHN1ZmZpeCBoaW50cyBhdCBjb21wbGV4aXR5IGJleW9uZCBhIHNpbXBsZSBvbmUtdG8tb25lIGF0dGFjaG1lbnQgc2NlbmFyaW8uIEknbGwgbmVlZCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50czogd2hpY2ggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnZvbHZlZD8gV2hhdCBraW5kcyBvZiBjaGVja3MgYXJlIGl0IHBlcmZvcm1pbmc/IEFueSBwb3RlbnRpYWwgZm9yIGVycm9yIGNvbmRpdGlvbnMsIHJhY2UgY29uZGl0aW9ucyBvciBpbmVmZmljaWVuY2llcyBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBuZWVkIHRvIGJlIG5vdGVkLCBhbmQgSSdsbCBwYXkgc3BlY2lmaWMgYXR0ZW50aW9uIHRvIGhvdyBCVEYgdHlwZSBjb21wYXRpYmlsaXR5IGlzIGVuZm9yY2VkLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzEzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MTcuNjYxOTc3OTI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzUzNTY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTQzNT1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzNC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1MzU6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzNi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MTcuNzk5NTIwNDI3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgzMjk4NDI5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIER5bmFtaWMgTmF0dXJlIG9mIFN5c3RlbXMqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcgZHluYW1pYy4gVGhlIGtleSBpcyByZWNvZ25pemluZyB0aGF0IHRoZXNlIGVsZW1lbnRzIGFyZW4ndCBzdGF0aWM7IHRoZXkncmUgY29uc3RhbnRseSBjaGFuZ2luZyBvciBjYXBhYmxlIG9mIGNoYW5naW5nLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhpcyBub24tc3RhdGljIG5hdHVyZSwgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24uIFdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGludm9sdmVkIGhlcmU/IFNwZWNpZmljYWxseSwgd2l0aCB0aGUgY29udGV4dCBiZWluZyBCUEYsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQncyB0aGUgZ2F0ZWtlZXBlciwgaXNuJ3QgaXQ/IElmIHRoYXQgaXNuJ3QgZW5hYmxlZCwgd2UncmUgZXNzZW50aWFsbHkgZGVhZCBpbiB0aGUgd2F0ZXIgZnJvbSB0aGUgZ2V0LWdvLiBTbywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBJdCdzIHRoZSBlc3NlbnRpYWwgYmFzZWxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjoyMC42MzI1MDkwODZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjY4NTM1NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9TWVNDQUxMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluaXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MjAuNzU1MjA5NzYzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDgwOTY1MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBpdCdzICpteSogdHJhaW4gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyB0aGUgQlBGX1NZU0NBTEwgRGVmaW5pdGlvbioqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIG5haWwgZG93biBleGFjdGx5IHdoZXJlIGBCUEZfU1lTQ0FMTGAgaXMgZGVmaW5lZCBpbiB0aGUga2VybmVsLiBUaGlzIGlzIGZ1bmRhbWVudGFsLCBlc3BlY2lhbGx5IGlmIEknbSBsb29raW5nIGF0IHBvdGVudGlhbCBzeXN0ZW0gY2FsbCB0cmFjaW5nIHdpdGggQlBGLCBvciBpZiBJJ20gd29ya2luZyBvbiBzb21ldGhpbmcgdGhhdCBsZXZlcmFnZXMgc3lzY2FsbCBob29rcy4gSSBuZWVkIHRvIHNlZSB0aGUgaGVhZGVyIGZpbGUsIHRoZSBpbmNsdWRlIHBhdGgsIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIHRoZSBtYWNyby4uLiBJcyBpdCBhcmNoaXRlY3R1cmUtc3BlY2lmaWM/IERvZXMgaXQgcmVseSBvbiBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiBrZXJuZWwgdmVyc2lvbiBvciBjb25maWd1cmF0aW9uIGZsYWdzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBlbnN1cmUgbXkgQlBGIHByb2dyYW1zIGFyZSBwb3J0YWJsZSBhbmQgYmVoYXZlIGFzIEkgZXhwZWN0LiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSB3aXRoIGEgYGdyZXBgIG9yIHNpbWlsYXIgdG8gcGlucG9pbnQgdGhlIGRlZmluaXRpdmUgbG9jYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlICpkZWZpbml0aW9uKiBpcyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mzk1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MjMuOTAzMzEwMDE3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzc5NjE1MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjoyNi42ODI5MzU4MThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEwODE4MTg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIENvbmZpZ3VyYXRpb24gZm9yIFRyYWNpbmcqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBjdXJyZW50IHRyYWNpbmcgaXNzdWUsIGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbid0IG92ZXJsb29rZWQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgb3Igc2V0dGluZ3MgcmVsYXRlZCB0byB0cmFjaW5nLiBZb3Uga25vdyBob3cgaXQgaXM7IHNvbWV0aW1lcyB0aGUgb2J2aW91cyBnZXRzIGJ1cmllZC4gSSB3YW50IHRvIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRoZSB1c3VhbCBzdXNwZWN0cywgYW55IHBvdGVudGlhbCBvdmVycmlkZXMsIGFuZCBhbnkgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIHRyYWNpbmcgYmVoYXZpb3IuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgc29tZXRoaW5nIHNpbXBsZSBpcyB0aGUgY3VscHJpdCwgYnV0IEkgYWx3YXlzIHdhbnQgdG8gZWxpbWluYXRlIHRoZSBzaW1wbGUgcG9zc2liaWxpdGllcyBmaXJzdC4gTGV0J3MgbWFrZSBzdXJlIEkgZGlkbid0IG1pc3Mgc29tZXRoaW5nIGluIHRoZSBkb2N1bWVudGF0aW9uLCBvciBhIHNldHRpbmcgSSB0aG91Z2h0IEknZCBoYW5kbGVkIGJ1dCBkaWRuJ3QuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBob3BlZnVsbHkgcHJvdmlkZSBtZSB3aXRoIGEgc29saWQgZm91bmRhdGlvbiBiZWZvcmUgSSBkZWx2ZSBpbnRvIG1vcmUgY29tcGxleCBkZWJ1Z2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MjIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjoyOS43OTExMjE5NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODkxNzUyNjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9FVkVOVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjMyLjQ4MDMwNzM2N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA5Mjc5MTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBCUEYgVmVyaWZpZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgdGhpcyBgQlBGX1NZU0NBTExgIHRoaW5nIGlzIGEgbXVzdC1oYXZlLCBubyBxdWVzdGlvbi4gQW5kLCB1c3VhbGx5LCBgQlBGX0pJVGAgaXMgcHJldHR5IGNydWNpYWwgaWYgeW91J3JlIHdvcmtpbmcgd2l0aCBzbGVlcGFibGUgcHJvZ3JhbXMuIEknbSBub3QgdG90YWxseSBjZXJ0YWluIGl0J3MgKnN0cmljdGx5KiByZXF1aXJlZCBqdXN0IGZvciB0aGUgdmVyaWZpZXIgaXRzZWxmLCBidXQgaXQncyBnb29kIHByYWN0aWNlLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGJlZm9yZSBJIG1ha2UgYW55IG1vdmVzLiBUaGUgdmVyaWZpZXIgY2FuIGJlIGEgcGFpbiBpZiBpdCdzIG1pc2NvbmZpZ3VyZWQuIFRpbWUgdG8gaGVhZCBvdmVyIHRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCBkaWcgaW50byBpdC4gSSdsbCBzZWFyY2ggZm9yIHRob3NlIGBDT05GSUdfYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIHZlcmlmaWVyJ3MgYmVoYXZpb3IuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDIwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MzUuNzg5NTkwNjk3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA2OTEyNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0JQRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTQ0Mzk9QlRGX0lEKHN0cnVjdCwgY2dyb3VwKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDQwLSNlbmRpZlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NDQxOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDQyLUJURl9JRChzdHJ1Y3QsIGJwZl9jcHVtYXNrKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTk3PUJURl9JRF9VTlVTRURcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTgtI2VuZGlmXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTk5OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIwMC1CVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25fY29va2llKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjA5PUJURl9JRChmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTA6I2lmZGVmIENPTkZJR19CUEZfTFNNXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjExLUJURl9JRChmdW5jLCBicGZfc2V0X2RlbnRyeV94YXR0cilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIyOD1CVEZfSUQoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMpXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjI5OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzMC1CVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25faXNfcmV0dXJuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjozNS44OTAyODk4MThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NzI3MzA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAgUGF0Y2gqKlxuXG5SaWdodCwgc28gdGhlIHBhdGNoIGlzIG5lc3RsZWQgaW4gYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgLiBUaGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIGlzc3VlLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMsIHN1Y2ggYXMgc3BlY2lmaWMga2VybmVsIGZlYXR1cmVzIG9yIG9wdGlvbnMsIGFyZSBlbmFibGluZyBvciBkaXNhYmxpbmcgYmVoYXZpb3Igd2l0aGluIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCB0aGF0IG1heSBjYXVzZSB0aGUgaXNzdWUgYXQgaGFuZC4gVW5kZXJzdGFuZGluZyBhbnkgcG9zc2libGUgZGVwZW5kZW5jaWVzIHdpbGwgaW5mb3JtIHdoZXRoZXIgY2VydGFpbiBidWlsZCBjb25maWd1cmF0aW9ucyBjb3VsZCBiZSB0aGUgcm9vdCBjYXVzZS4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIHVuZGVyIGRpZmZlcmVudCBjb21waWxlIHRpbWUgY29uZGl0aW9ucy4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYXMgd2VsbCB0byBmaW5kIGFueSBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY3MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjM5LjA3NzU2NzM1OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc0MDI2MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRmX2lkX2FsbG93X3NsZWVwYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE4OTMyPXN0YXRpYyBib29sIGlzX3RyYWNpbmdfbXVsdGlfaWQoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM2LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODkzNzpzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM4LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MDMwPWludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MzI5LVxcdFxcdGlmIChwcm9nLVxcdTAwM2VzbGVlcGFibGUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkzMzA6XFx0XFx0XFx0cmV0ID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgdGd0X3Byb2cpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzMS1cXHRcXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1MzU9aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgwLVxcdGlmIChwcm9nLVxcdTAwM2VzbGVlcGFibGUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1ODE6XFx0XFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgTlVMTCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgyLVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjM5LjE2NDk3OTcwN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDMwNTE1ODIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBmdW5jdGlvbmFsIGlzc3VlIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyLiBJdCdzIGFib3V0IHByZXZlbnRpbmcgc2xlZXBhYmxlIEJQRiB0cmFjaW5nIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGNydWNpYWwgc2VjdXJpdHkgY29uc2lkZXJhdGlvbi4gTXkgbWFpbiBmb2N1cyBpcyBvbiB0aGUgY29yZSBmdW5jdGlvbnMgYWZmZWN0ZWQ6IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuXG5cblRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSBpcyBgQlBGX1NZU0NBTExgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS4gQnV0IEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGF0LCBhcyBpdCdzIGJlZW4gYSB3aGlsZSwgYW5kIGVuc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGhpZGRlbiBkZXBlbmRlbmNpZXMuIEFscmlnaHQsIGxldCdzIHNlZS4gQmV5b25kIGBCUEZfU1lTQ0FMTGAsIEkga25vdyB3ZSBhbHNvIG5lZWQgYERFQlVHX0lORk9fQlRGYCBpbiBwbGF5IGZvciBCVEYgc3VwcG9ydCwgc28gSSBzaG91bGQgZW5zdXJlIHRoYXQncyBjb3ZlcmVkIGFzIHdlbGwuIEEgcXVpY2sgc2NhbiBvZiBga2VybmVsL2JwZi9LY29uZmlnYCBzaG91bGQgY29uZmlybSB0aGUgY29tcGxldGUgbGlzdCBvZiByZWxhdGVkIGNvbmZpZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzNTEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6NDMuNTk1NDk4ODk5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzk5MDA5ODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBERUJVR19JTkZPX0JURlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9Mzc4PWNvbmZpZyBERUJVR19JTkZPX1NQTElUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zOTctXFxubGliL0tjb25maWcuZGVidWc6Mzk4OmNvbmZpZyBERUJVR19JTkZPX0JURlxcbmxpYi9LY29uZmlnLmRlYnVnLTM5OS1cXHRib29sIFxcXCJHZW5lcmF0ZSBCVEYgdHlwZSBpbmZvcm1hdGlvblxcXCJcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnPTQxOT1jb25maWcgUEFIT0xFX0hBU19MQU5HX0VYQ0xVREVcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTQyNy1cXG5saWIvS2NvbmZpZy5kZWJ1Zzo0Mjg6Y29uZmlnIERFQlVHX0lORk9fQlRGX01PRFVMRVNcXG5saWIvS2NvbmZpZy5kZWJ1Zy00MjktXFx0Ym9vbCBcXFwiR2VuZXJhdGUgQlRGIHR5cGUgaW5mb3JtYXRpb24gZm9yIGtlcm5lbCBtb2R1bGVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjo0Ni4zOTQ1MTUyNzhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0NjQyODY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjpcblxuKipCVEYgRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBhbmQgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGxpbmVkIHVwIGNvcnJlY3RseSBmb3IgQlRGLiBGaXJzdCwgaXQncyBjbGVhciB0aGF0IHdlJ3JlIGdvaW5nIHRvIG5lZWQgYERFQlVHX0lORk9fQlRGYC4gVGhhdCdzIGEgZnVuZGFtZW50YWwgcmVxdWlyZW1lbnQsIG5vIHF1ZXN0aW9uIGFib3V0IGl0LiBCZXlvbmQgdGhhdCwgSSB0aGluayBpdCdzIHBydWRlbnQgdG8gY2hlY2sgb24gYEJQRl9FVkVOVFNgIHRvbywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbWFrZSBzdXJlIHdlIGhhdmUgYWxsIG91ciBiYXNlcyBjb3ZlcmVkLiBObyBwb2ludCBpbiBtaXNzaW5nIGEgY3J1Y2lhbCBmbGFnIHdoZW4gd2UgY2FuIGJlIGNlcnRhaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MDAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjo0OS4yNDA5NDgwNzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTc5ODUzNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9FVkVOVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjUxLjkzODk0ODk1NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTI5MDg0MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiBzdW1tYXJpemluZyB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipNeSBCUEYgRnV6emluZyBTdHJhdGVneSBmb3IgVGhpcyBWZXJpZmllciBGaXgqKlxuXG5BbHJpZ2h0LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCB0aGF0J3MgY3J1Y2lhbCDigJMgaXQncyBhZGRyZXNzaW5nIGEgYnVnIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyIGl0c2VsZi4gU3BlY2lmaWNhbGx5LCB0aGUgdmVyaWZpZXIgd2FzIGxldHRpbmcgc2xlZXBhYmxlIEJQRiB0cmFjaW5nIHByb2dyYW1zIGF0dGFjaCB3aGVyZSB0aGV5IHNob3VsZG4ndCBiZSBhYmxlIHRvLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHZlcmlmaWVyJ3MgY29yZSBsb2dpYywgYSBjb3JyZWN0aW9uIGluIGhvdyBpdCBlbmZvcmNlcyB0aGUgcnVsZXMuICpDcnVjaWFsbHkqLCB0aGlzIG1lYW5zIHdlIGFic29sdXRlbHkgKm5lZWQqIHRvIGZ1enogdGhpcy4gQW55IGNoYW5nZSB0byB0aGUgdmVyaWZpZXIgbGlrZSB0aGlzIGNhbiBpbnRyb2R1Y2Ugc3VidGxlLCBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBmbGF3cy5cblxuTXkgcGxhbj8gV2XigJlyZSBnb2luZyB0byBiZSB0aG9yb3VnaC4gSSB3YW50IHRvIGJ1aWxkIGEgZnV6emluZyBjYW1wYWlnbiB0aGF0IHNwZWNpZmljYWxseSB0YXJnZXRzIHRoaXMgaXNzdWUuIEknbGwgZm9jdXMgb24gaW5jbHVkaW5nIGBCUEZfU1lTQ0FMTGAsIGBERUJVR19JTkZPX0JURmAsIGFuZCBgQlBGX0VWRU5UU2AgaW4gdGhlIHRlc3Qgc2V0dXAuIFRoZXNlIGFyZSBrZXkgYXJlYXMgdG8gcHJvYmUgZm9yIHNpZGUgZWZmZWN0cy4gYEJQRl9TWVNDQUxMYCB3aWxsIGhlbHAgZXhwb3NlIGVkZ2UgY2FzZXMgaW50ZXJhY3Rpbmcgd2l0aCBrZXJuZWwgY2FsbHMsIGBERUJVR19JTkZPX0JURmAgd2lsbCBoZWxwIHVuY292ZXIgaW50ZXJhY3Rpb25zIHdpdGggZGVidWcgbWV0YWRhdGEsIGFuZCBgQlBGX0VWRU5UU2AgaGVscHMgdG8gcHJvYmUgdGhlIEJQRiBFdmVudCBzdWJzeXN0ZW0uIFRoZXNlIGFyZSBhbGwgY3JpdGljYWwgYXJlYXMgd2hlcmUgQlBGIHZlcmlmaWNhdGlvbiBjYW4gYmVjb21lIGNvbXBsaWNhdGVkLlxuXG5BbmQgdG8gb3JnYW5pemUgYWxsIG9mIHRoaXMsIHRoZSBiZXN0IHRvb2wgaXMgYHNldC1yZXN1bHRzYC4gSSB3aWxsIG5lZWQgdG8gdHJhY2sgd2hhdCBraW5kIG9mIHJlc3VsdHMgd2UgZ2V0IGhlcmUsIGVzcGVjaWFsbHkgYW55IGZ1enppbmcgY3Jhc2hlcywgdW5leHBlY3RlZCBiZWhhdmlvciwgb3IsIGlkZWFsbHksIG5vdGhpbmcgYXQgYWxsIOKAkyBpbiB3aGljaCBjYXNlLCB3ZSBjYW4gY29uZmlybSB0aGUgZml4IGlzIHNvbGlkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTU3LCJPdXRwdXRUb2tlbnMiOjEyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjU2Ljg2ODAzODYyNVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjExMzk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBwcmV2ZW50IHNsZWVwYWJsZSB0cmFjaW5nIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBwcmV2ZW50IHNsZWVwYWJsZSB0cmFjaW5nIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowgnhxz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 15:12:08 +0000 UTC FinishedAt: 2026-07-26 15:36:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "2805abd089576799b15092949420e3f8ba97fabd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF", "BPF_EVENTS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "2805abd089576799b15092949420e3f8ba97fabd", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "DEBUG_INFO_BTF", "BPF_EVENTS" ], "series_id": "bba98519-d58a-4cc2-accd-30cfb4081bf6" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_check_attach_target", "bpf_check_attach_btf_id_multi" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIHRyYWNpbmcgcHJvZ3JhbXMgZnJvbSBhdHRhY2hpbmcgdG8gb3RoZXIgQlBGIHByb2dyYW1zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU3YzQzZDQ3OWIwYjVmYTg2OWJhNWExYjYyMjJkMjRhZTUyZjUxNzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxNTozNjowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbmluZGV4IDUyYmUwYTExOGNjZTA3Li4yMmFjNDdkOWE1NTM4MyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTg5MzUsMTMgJiM0MzsxODkzNSwxNiBAQCBzdGF0aWMgYm9vbCBpc190cmFjaW5nX211bHRpX2lkKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZClcbiB9XG4gXG4gc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnRmICpidGYpXG4mIzQzO1x0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2cpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0O1xuIFx0Y29uc3QgY2hhciAqdG5hbWU7XG4gXG4gXHRzd2l0Y2ggKHByb2ctXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XG4mIzQzO1x0XHRpZiAodGd0X3Byb2cpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgYnRmX2lkKTtcbiBcdFx0aWYgKCF0KVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTE5MzI0LDcgJiM0MzsxOTMyNyw3IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuIFx0XHR9XG4gXG4gXHRcdGlmIChwcm9nLVx1MDAzZXNsZWVwYWJsZSkge1xuLVx0XHRcdHJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYpO1xuJiM0MztcdFx0XHRyZXQgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmLCB0Z3RfcHJvZyk7XG4gXHRcdFx0aWYgKHJldCkge1xuIFx0XHRcdFx0bW9kdWxlX3B1dChtb2QpO1xuIFx0XHRcdFx0YnBmX2xvZyhsb2csIFwmIzM0OyVzIGlzIG5vdCBzbGVlcGFibGVcXG5cJiMzNDssIHRuYW1lKTtcbkBAIC0xOTU3NSw3ICYjNDM7MTk1NzgsNyBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidFxuIFxuIFx0LyogQ2hlY2sgc2xlZXBhYmxlIHByb2dyYW0gYXR0YWNobWVudC4gKi9cbiBcdGlmIChwcm9nLVx1MDAzZXNsZWVwYWJsZSkge1xuLVx0XHRlcnIgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmKTtcbiYjNDM7XHRcdGVyciA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYsIE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBlcnI7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5pbmRleCA0YTg3ZDcxNjNjOGM3Zi4uMjUyM2MwN2ExNmM2NTUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuQEAgLTUsNiAmIzQzOzUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2JwZi9idGYuaFx1MDAzZVxuICNpbmNsdWRlIFwmIzM0O2JpbmQ0X3Byb2cuc2tlbC5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7ZnJlcGxhY2VfcHJvZ21hcC5za2VsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7ZmVudHJ5X3NsZWVwYWJsZS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt4ZHBfZHVtbXkuc2tlbC5oXCYjMzQ7XG4gXG4gdHlwZWRlZiBpbnQgKCp0ZXN0X2NiKShzdHJ1Y3QgYnBmX29iamVjdCAqb2JqKTtcbkBAIC01NzYsNiAmIzQzOzU3Nyw2MCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfcmVwbGFjZV9wcm9nbWFwKHZvaWQpXG4gXHRmcmVwbGFjZV9wcm9nbWFwX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZlbnRyeV9zbGVlcGFibGUgKnNrZWwgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCB4ZHBfZHVtbXkgKnNrZWxfeGRwID0gTlVMTDtcbiYjNDM7XHRpbnQgaWZpbmRleCwgcHJvZ19mZCwgZXJyO1xuJiM0MztcdGNoYXIgYnVmZls2NF0gPSB7fTtcbiYjNDM7XG4mIzQzOyNpZm5kZWYgX194ODZfNjRfX1xuJiM0MztcdHRlc3RfX3NraXAoKTtcbiYjNDM7XHRyZXR1cm47XG4mIzQzOyNlbmRpZlxuJiM0MztcbiYjNDM7XHRpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgoXCYjMzQ7bG9cJiMzNDspO1xuJiM0MztcdGlmICghQVNTRVJUX0dUKGlmaW5kZXgsIDAsIFwmIzM0O2lmX25hbWV0b2luZGV4XCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0c2tlbF94ZHAgPSB4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWQoKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbF94ZHAsIFwmIzM0O3hkcF9kdW1teV9fb3Blbl9hbmRfbG9hZFwmIzM0OykpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdHNrZWwgPSBmZW50cnlfc2xlZXBhYmxlX19vcGVuKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O2ZlbnRyeV9zbGVlcGFibGVfX29wZW5cJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdHNrZWwtXHUwMDNlYnNzLVx1MDAzZXVzZXJfcHRyID0gYnVmZjtcbiYjNDM7XG4mIzQzO1x0cHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsX3hkcC1cdTAwM2Vwcm9ncy5fX3g2NF9zeXNfbm9wKTtcbiYjNDM7XHRlcnIgPSBicGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQoc2tlbC1cdTAwM2Vwcm9ncy5mZW50cnlfeGRwLCBwcm9nX2ZkLCBcJiMzNDtfX3g2NF9zeXNfbm9wXCYjMzQ7KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PSyhlcnIsIFwmIzM0O2JwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldFwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0ZXJyID0gZmVudHJ5X3NsZWVwYWJsZV9fbG9hZChza2VsKTtcbiYjNDM7XHRBU1NFUlRfRVJSKGVyciwgXCYjMzQ7ZmVudHJ5X3NsZWVwYWJsZV9fbG9hZFwmIzM0Oyk7XG4mIzQzO1x0aWYgKGVycilcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRza2VsLVx1MDAzZWxpbmtzLmZlbnRyeV94ZHAgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlKHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5X3hkcCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3MuZmVudHJ5X3hkcCwgXCYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZVwmIzM0OykpXG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XG4mIzQzO1x0c2tlbF94ZHAtXHUwMDNlbGlua3MuX194NjRfc3lzX25vcCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfeGRwKHNrZWxfeGRwLVx1MDAzZXByb2dzLl9feDY0X3N5c19ub3AsXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRpZmluZGV4KTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbF94ZHAtXHUwMDNlbGlua3MuX194NjRfc3lzX25vcCwgXCYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF94ZHBcJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1xuJiM0MztcdGVyciA9IHN5c3RlbShcJiMzNDtwaW5nIC1xIC1jIDEgLVcgMSAxMjcuMC4wLjEgXHUwMDNlIC9kZXYvbnVsbFwmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX09LKGVyciwgXCYjMzQ7cGluZ1wmIzM0Oyk7XG4mIzQzO1x0QVNTRVJUX0VSUihza2VsLVx1MDAzZWJzcy1cdTAwM2VyZXR2YWwsIFwmIzM0O3JldHZhbFwmIzM0Oyk7XG4mIzQzO1xuJiM0MztvdXQ6XG4mIzQzO1x0ZmVudHJ5X3NsZWVwYWJsZV9fZGVzdHJveShza2VsKTtcbiYjNDM7XHR4ZHBfZHVtbXlfX2Rlc3Ryb3koc2tlbF94ZHApO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIE5PVEU6IGFmZmVjdCBvdGhlciB0ZXN0cywgbXVzdCBydW4gaW4gc2VyaWFsIG1vZGUgKi9cbiB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcbiB7XG5AQCAtNjA3LDQgJiM0Mzs2NjIsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcbiBcdFx0dGVzdF9mdW5jX3JlcGxhY2VfaW50X3dpdGhfdm9pZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCYjMzQ7ZnJlcGxhY2Vfdm9pZFwmIzM0OykpXG4gXHRcdHRlc3RfZnVuY19yZXBsYWNlX3ZvaWQoKTtcbiYjNDM7XHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcJiMzNDtzbGVlcGFibGVfZmVudHJ5X3RvX3hkcFwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwKCk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ0YjkzOGY0ODVlMjRjXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jXG5AQCAtMCwwICYjNDM7MSwxOSBAQFxuJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuJiM0MzsjaW5jbHVkZSBcJiMzNDt2bWxpbnV4LmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjYnBmL2JwZl90cmFjaW5nLmhcdTAwM2VcbiYjNDM7XG4mIzQzO2NoYXIgTElDRU5TRVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjNDM7XG4mIzQzO3ZvaWQgKnVzZXJfcHRyO1xuJiM0MztpbnQgcmV0dmFsO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O2ZlbnRyeS5zXCYjMzQ7KVxuJiM0MztpbnQgQlBGX1BST0coZmVudHJ5X3hkcClcbiYjNDM7e1xuJiM0MztcdGNoYXIgYnVmZls2NF07XG4mIzQzO1xuJiM0MztcdHJldHZhbCA9IGJwZl9jb3B5X2Zyb21fdXNlcihidWZmLCBzaXplb2YoYnVmZiksIHVzZXJfcHRyKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcbmluZGV4IGQ5ODhiMmUwY2VlODQwLi41ZjFlMDc3MTAyMWRmZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXG5AQCAtMTAsNCAmIzQzOzEwLDEwIEBAIGludCB4ZHBfZHVtbXlfcHJvZyhzdHJ1Y3QgeGRwX21kICpjdHgpXG4gXHRyZXR1cm4gWERQX1BBU1M7XG4gfVxuIFxuJiM0MztTRUMoXCYjMzQ7eGRwXCYjMzQ7KVxuJiM0MztpbnQgX194NjRfc3lzX25vcChzdHJ1Y3QgeGRwX21kICpjdHgpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gWERQX1BBU1M7XG4mIzQzO31cbiYjNDM7XG4gY2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7REVCVUdfSU5GT19CVEYmIzM0OywKICAgICYjMzQ7QlBGX0VWRU5UUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfdGFyZ2V0JiMzNDssCiAgICAmIzM0O2JwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcHJldmVudCBzbGVlcGFibGUgdHJhY2luZyBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBvdGhlciBCUEYgcHJvZ3JhbXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTdjNDNkNDc5YjBiNWZhODY5YmE1YTFiNjIyMmQyNGFlNTJmNTE3NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDI2IDE1OjM2OjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDUyYmUwYTExOGNjZTA3Li4yMmFjNDdkOWE1NTM4MyAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTg5MzUsMTMgJiM0MzsxODkzNSwxNiBAQCBzdGF0aWMgYm9vbCBpc190cmFjaW5nX211bHRpX2lkKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCkKIH0KIAogc3RhdGljIGludCBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKHUzMiBidGZfaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLAotCQkJCSAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmKQomIzQzOwkJCQkgIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZykKIHsKIAljb25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQ7CiAJY29uc3QgY2hhciAqdG5hbWU7CiAKIAlzd2l0Y2ggKHByb2ctJmd0O3R5cGUpIHsKIAljYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzoKJiM0MzsJCWlmICh0Z3RfcHJvZykKJiM0MzsJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAkJdCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgYnRmX2lkKTsKIAkJaWYgKCF0KQogCQkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xOTMyNCw3ICYjNDM7MTkzMjcsNyBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywKIAkJfQogCiAJCWlmIChwcm9nLSZndDtzbGVlcGFibGUpIHsKLQkJCXJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYpOwomIzQzOwkJCXJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYsIHRndF9wcm9nKTsKIAkJCWlmIChyZXQpIHsKIAkJCQltb2R1bGVfcHV0KG1vZCk7CiAJCQkJYnBmX2xvZyhsb2csICYjMzQ7JXMgaXMgbm90IHNsZWVwYWJsZVxuJiMzNDssIHRuYW1lKTsKQEAgLTE5NTc1LDcgJiM0MzsxOTU3OCw3IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0CiAKIAkvKiBDaGVjayBzbGVlcGFibGUgcHJvZ3JhbSBhdHRhY2htZW50LiAqLwogCWlmIChwcm9nLSZndDtzbGVlcGFibGUpIHsKLQkJZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0Zik7CiYjNDM7CQllcnIgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmLCBOVUxMKTsKIAkJaWYgKGVycikKIAkJCXJldHVybiBlcnI7CiAJfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jCmluZGV4IDRhODdkNzE2M2M4YzdmLi4yNTIzYzA3YTE2YzY1NSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuYwpAQCAtNSw2ICYjNDM7NSw3IEBACiAjaW5jbHVkZSAmbHQ7YnBmL2J0Zi5oJmd0OwogI2luY2x1ZGUgJiMzNDtiaW5kNF9wcm9nLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O2ZyZXBsYWNlX3Byb2dtYXAuc2tlbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2ZlbnRyeV9zbGVlcGFibGUuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7eGRwX2R1bW15LnNrZWwuaCYjMzQ7CiAKIHR5cGVkZWYgaW50ICgqdGVzdF9jYikoc3RydWN0IGJwZl9vYmplY3QgKm9iaik7CkBAIC01NzYsNiAmIzQzOzU3Nyw2MCBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Z1bmNfcmVwbGFjZV9wcm9nbWFwKHZvaWQpCiAJZnJlcGxhY2VfcHJvZ21hcF9fZGVzdHJveShza2VsKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHAodm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmZW50cnlfc2xlZXBhYmxlICpza2VsID0gTlVMTDsKJiM0MzsJc3RydWN0IHhkcF9kdW1teSAqc2tlbF94ZHAgPSBOVUxMOwomIzQzOwlpbnQgaWZpbmRleCwgcHJvZ19mZCwgZXJyOwomIzQzOwljaGFyIGJ1ZmZbNjRdID0ge307CiYjNDM7CiYjNDM7I2lmbmRlZiBfX3g4Nl82NF9fCiYjNDM7CXRlc3RfX3NraXAoKTsKJiM0MzsJcmV0dXJuOwomIzQzOyNlbmRpZgomIzQzOwomIzQzOwlpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgoJiMzNDtsbyYjMzQ7KTsKJiM0MzsJaWYgKCFBU1NFUlRfR1QoaWZpbmRleCwgMCwgJiMzNDtpZl9uYW1ldG9pbmRleCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbF94ZHAgPSB4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWQoKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLCAmIzM0O3hkcF9kdW1teV9fb3Blbl9hbmRfbG9hZCYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbCA9IGZlbnRyeV9zbGVlcGFibGVfX29wZW4oKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsICYjMzQ7ZmVudHJ5X3NsZWVwYWJsZV9fb3BlbiYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsLSZndDtic3MtJmd0O3VzZXJfcHRyID0gYnVmZjsKJiM0MzsKJiM0MzsJcHJvZ19mZCA9IGJwZl9wcm9ncmFtX19mZChza2VsX3hkcC0mZ3Q7cHJvZ3MuX194NjRfc3lzX25vcCk7CiYjNDM7CWVyciA9IGJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldChza2VsLSZndDtwcm9ncy5mZW50cnlfeGRwLCBwcm9nX2ZkLCAmIzM0O19feDY0X3N5c19ub3AmIzM0Oyk7CiYjNDM7CWlmICghQVNTRVJUX09LKGVyciwgJiMzNDticGZfcHJvZ3JhbV9fc2V0X2F0dGFjaF90YXJnZXQmIzM0OykpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKJiM0MzsJZXJyID0gZmVudHJ5X3NsZWVwYWJsZV9fbG9hZChza2VsKTsKJiM0MzsJQVNTRVJUX0VSUihlcnIsICYjMzQ7ZmVudHJ5X3NsZWVwYWJsZV9fbG9hZCYjMzQ7KTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsLSZndDtsaW5rcy5mZW50cnlfeGRwID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsLSZndDtwcm9ncy5mZW50cnlfeGRwKTsKJiM0MzsJaWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtJmd0O2xpbmtzLmZlbnRyeV94ZHAsICYjMzQ7YnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZSYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlza2VsX3hkcC0mZ3Q7bGlua3MuX194NjRfc3lzX25vcCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfeGRwKHNrZWxfeGRwLSZndDtwcm9ncy5fX3g2NF9zeXNfbm9wLAomIzQzOwkJCQkJCQkJaWZpbmRleCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsX3hkcC0mZ3Q7bGlua3MuX194NjRfc3lzX25vcCwgJiMzNDticGZfcHJvZ3JhbV9fYXR0YWNoX3hkcCYjMzQ7KSkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwllcnIgPSBzeXN0ZW0oJiMzNDtwaW5nIC1xIC1jIDEgLVcgMSAxMjcuMC4wLjEgJmd0OyAvZGV2L251bGwmIzM0Oyk7CiYjNDM7CUFTU0VSVF9PSyhlcnIsICYjMzQ7cGluZyYjMzQ7KTsKJiM0MzsJQVNTRVJUX0VSUihza2VsLSZndDtic3MtJmd0O3JldHZhbCwgJiMzNDtyZXR2YWwmIzM0Oyk7CiYjNDM7CiYjNDM7b3V0OgomIzQzOwlmZW50cnlfc2xlZXBhYmxlX19kZXN0cm95KHNrZWwpOwomIzQzOwl4ZHBfZHVtbXlfX2Rlc3Ryb3koc2tlbF94ZHApOwomIzQzO30KJiM0MzsKIC8qIE5PVEU6IGFmZmVjdCBvdGhlciB0ZXN0cywgbXVzdCBydW4gaW4gc2VyaWFsIG1vZGUgKi8KIHZvaWQgc2VyaWFsX3Rlc3RfZmV4aXRfYnBmMmJwZih2b2lkKQogewpAQCAtNjA3LDQgJiM0Mzs2NjIsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZCkKIAkJdGVzdF9mdW5jX3JlcGxhY2VfaW50X3dpdGhfdm9pZCgpOwogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7ZnJlcGxhY2Vfdm9pZCYjMzQ7KSkKIAkJdGVzdF9mdW5jX3JlcGxhY2Vfdm9pZCgpOwomIzQzOwlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NsZWVwYWJsZV9mZW50cnlfdG9feGRwJiMzNDspKQomIzQzOwkJdGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCgpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ0YjkzOGY0ODVlMjRjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuYwpAQCAtMCwwICYjNDM7MSwxOSBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7I2luY2x1ZGUgJiMzNDt2bWxpbnV4LmgmIzM0OwomIzQzOyNpbmNsdWRlICZsdDticGYvYnBmX2hlbHBlcnMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl90cmFjaW5nLmgmZ3Q7CiYjNDM7CiYjNDM7Y2hhciBMSUNFTlNFW10gU0VDKCYjMzQ7bGljZW5zZSYjMzQ7KSA9ICYjMzQ7R1BMJiMzNDs7CiYjNDM7CiYjNDM7dm9pZCAqdXNlcl9wdHI7CiYjNDM7aW50IHJldHZhbDsKJiM0MzsKJiM0MztTRUMoJiMzNDtmZW50cnkucyYjMzQ7KQomIzQzO2ludCBCUEZfUFJPRyhmZW50cnlfeGRwKQomIzQzO3sKJiM0MzsJY2hhciBidWZmWzY0XTsKJiM0MzsKJiM0MzsJcmV0dmFsID0gYnBmX2NvcHlfZnJvbV91c2VyKGJ1ZmYsIHNpemVvZihidWZmKSwgdXNlcl9wdHIpOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMKaW5kZXggZDk4OGIyZTBjZWU4NDAuLjVmMWUwNzcxMDIxZGZlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jCkBAIC0xMCw0ICYjNDM7MTAsMTAgQEAgaW50IHhkcF9kdW1teV9wcm9nKHN0cnVjdCB4ZHBfbWQgKmN0eCkKIAlyZXR1cm4gWERQX1BBU1M7CiB9CiAKJiM0MztTRUMoJiMzNDt4ZHAmIzM0OykKJiM0MztpbnQgX194NjRfc3lzX25vcChzdHJ1Y3QgeGRwX21kICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gWERQX1BBU1M7CiYjNDM7fQomIzQzOwogY2hhciBfbGljZW5zZVtdIFNFQygmIzM0O2xpY2Vuc2UmIzM0OykgPSAmIzM0O0dQTCYjMzQ7Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTIwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgIGZ1bmN0aW9uLiBJdCBzZWVtcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOyB0aGV5JiMzOTt2ZSBhZGRlZCBhIG5ldyBjaGVjayB3aXRoaW4gdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbiBpdHNlbGY6CgpgYGBjCiAJc3dpdGNoIChwcm9nLSZndDt0eXBlKSB7CiAJY2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6CiYjNDM7CQlpZiAodGd0X3Byb2cpCiYjNDM7CQkJcmV0dXJuIC1FSU5WQUw7CmBgYAoKUmlnaHQsIHNvIGlmIGEgdHJhY2luZyBCUEYgcHJvZ3JhbSBpcyBzbGVlcGFibGUgYW5kIHdlIGhhdmUgYSBgdGd0X3Byb2dgIChtZWFuaW5nIGl0JiMzOTtzIGJlaW5nIGF0dGFjaGVkIHRvIGFub3RoZXIgcHJvZ3JhbSksIHRoZSBmdW5jdGlvbiBub3cgcmV0dXJucyBgLUVJTlZBTGAuIFRoaXMgZXNzZW50aWFsbHkgZGlzYWxsb3dzIHNsZWVwYWJsZSB0cmFjaW5nIEJQRiBwcm9ncmFtcyBmcm9tIGJlaW5nIGF0dGFjaGVkIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiBpdC4gTWFrZXMgc2Vuc2Ug4oCTIHByb2JhYmx5IHNvbWUgc29ydCBvZiBzYWZldHkgbWVjaGFuaXNtIG9yIGEgY29uc3RyYWludCBvbiBob3cgdGhlc2UgdHJhY2luZyBwcm9ncmFtcyBpbnRlcmFjdCB3aXRoIG90aGVycy4KClRoZSBwYXRjaCBhbHNvIG1lbnRpb25zIHVwZGF0aW5nIHRoZSBjYWxscyB0byBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAgdG8gY29ycmVjdGx5IHBhc3MgdGhlIGB0Z3RfcHJvZ2AgYXJndW1lbnQuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBub3cgdG8gc2VlICp3aGVyZSogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIGdyb2sgdGhlIGZsb3cgYW5kIGhvdyB0aGlzIGNoZWNrIGFmZmVjdHMgdGhlIGV4aXN0aW5nIGxvZ2ljLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjYXNlcyB3aGVyZSBgdGd0X3Byb2dgIGlzIGVpdGhlciBOVUxMIG9yIGEgdmFsaWQgcHJvZ3JhbSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIExldCYjMzk7cyBnZXQgdG8gaXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnRmX2lkX2FsbG93X3NsZWVwYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg5MzI9c3RhdGljIGJvb2wgaXNfdHJhY2luZ19tdWx0aV9pZChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM2LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE4OTM3OnN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkzOC1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTAzMD1pbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkzMjktXHRcdGlmIChwcm9nLVx1MDAzZXNsZWVwYWJsZSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MzMwOlx0XHRcdHJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYsIHRndF9wcm9nKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzMS1cdFx0XHRpZiAocmV0KSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NTM1PWludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1ODAtXHRpZiAocHJvZy1cdTAwM2VzbGVlcGFibGUpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTU4MTpcdFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgTlVMTCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1ODItXHRcdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA4NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAuIEl0JiMzOTtzIHJlamVjdGluZyBzbGVlcGFibGUgdHJhY2luZyBwcm9ncmFtcyBpZiBgdGd0X3Byb2dgIGlzIHByZXNlbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGdpdmVuIGl0JiMzOTtzIGEgcmVhY2hhYmxlIGNoYW5nZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgSSBjYW4gZm9jdXMgbXkgZWZmb3J0cy4KCkkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgem9vbSBpbiBvbiB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgY2FsbCBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAuIExldCYjMzk7cyBzZWUuLi4gYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYCBhcmUgdGhlIGNhbGxlcnMgSSYjMzk7bSBsb29raW5nIGZvci4gU2luY2UgYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgIGl0c2VsZiBpcyBzdGF0aWMsIGl0JiMzOTtzIHRob3NlIGNhbGxpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIG15IHByaW1hcnkgdGFyZ2V0cy4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYCBhcmVuJiMzOTt0IGFsc28gc3RhdGljIG9yLCB3b3JzZSwgbm90IGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXkmIzM5O3JlIGFjY2Vzc2libGUgYW5kIHRlc3RhYmxlIHRvIGVmZmVjdGl2ZWx5IGxldmVyYWdlIHRoaXMgY2hhbmdlIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTg5OTU9YnRmX2F0dGFjaF9mdW5jX3Byb3RvKHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csIHN0cnVjdCBidGYgKmJ0ZiwgdTMyIGZ1bmNfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDI5LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MDMwOmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDMxLVx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcxMwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGlzIGZ1bmN0aW9uLCBgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUgb2YgZUJQRiBwcm9ncmFtIGF0dGFjaG1lbnQgYW5kIGhvdyBCVEYgSURzIGFyZSBtYW5hZ2VkIGluIHRoYXQgY29udGV4dC4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBhc3N1bWUgdGhpcyByZWxhdGVzIHRvIHNpdHVhdGlvbnMgd2hlcmUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBCVEYgSURzIG9yIHBlcmhhcHMgbXVsdGlwbGUgcHJvZ3JhbXMgYXR0YWNoaW5nIHRvIHRoZSBzYW1lIHRhcmdldCwgb3IgbWF5YmUgaGFuZGxpbmcgbXVsdGlwbGUgQlRGIG9iamVjdHMuIEkgZXhwZWN0IHRoZSAmIzM0O211bHRpJiMzNDsgc3VmZml4IGhpbnRzIGF0IGNvbXBsZXhpdHkgYmV5b25kIGEgc2ltcGxlIG9uZS10by1vbmUgYXR0YWNobWVudCBzY2VuYXJpby4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbiYjMzk7cyBhcmd1bWVudHM6IHdoaWNoIGRhdGEgc3RydWN0dXJlcyBhcmUgaW52b2x2ZWQ/IFdoYXQga2luZHMgb2YgY2hlY2tzIGFyZSBpdCBwZXJmb3JtaW5nPyBBbnkgcG90ZW50aWFsIGZvciBlcnJvciBjb25kaXRpb25zLCByYWNlIGNvbmRpdGlvbnMgb3IgaW5lZmZpY2llbmNpZXMgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbmVlZCB0byBiZSBub3RlZCwgYW5kIEkmIzM5O2xsIHBheSBzcGVjaWZpYyBhdHRlbnRpb24gdG8gaG93IEJURiB0eXBlIGNvbXBhdGliaWxpdHkgaXMgZW5mb3JjZWQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk0MzU9c3RhdGljIGludCBjaGVja19hdHRhY2hfYnRmX2lkKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTM0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTM1OmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzNi1cdFx0XHRcdCAgc3RydWN0IGJwZl9hdHRhY2hfdGFyZ2V0X2luZm8gKnRndF9pbmZvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNDkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgRHluYW1pYyBOYXR1cmUgb2YgU3lzdGVtcyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIGR5bmFtaWMuIFRoZSBrZXkgaXMgcmVjb2duaXppbmcgdGhhdCB0aGVzZSBlbGVtZW50cyBhcmVuJiMzOTt0IHN0YXRpYzsgdGhleSYjMzk7cmUgY29uc3RhbnRseSBjaGFuZ2luZyBvciBjYXBhYmxlIG9mIGNoYW5naW5nLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhpcyBub24tc3RhdGljIG5hdHVyZSwgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24uIFdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGludm9sdmVkIGhlcmU/IFNwZWNpZmljYWxseSwgd2l0aCB0aGUgY29udGV4dCBiZWluZyBCUEYsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQmIzM5O3MgdGhlIGdhdGVrZWVwZXIsIGlzbiYjMzk7dCBpdD8gSWYgdGhhdCBpc24mIzM5O3QgZW5hYmxlZCwgd2UmIzM5O3JlIGVzc2VudGlhbGx5IGRlYWQgaW4gdGhlIHdhdGVyIGZyb20gdGhlIGdldC1nby4gU28sIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4gSXQmIzM5O3MgdGhlIGVzc2VudGlhbCBiYXNlbGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX1NZU0NBTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbml0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mzk1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQmIzM5O3MgKm15KiB0cmFpbiBvZiB0aG91Z2h0OgoKKipDaGVja2luZyB0aGUgQlBGX1NZU0NBTEwgRGVmaW5pdGlvbioqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gbmFpbCBkb3duIGV4YWN0bHkgd2hlcmUgYEJQRl9TWVNDQUxMYCBpcyBkZWZpbmVkIGluIHRoZSBrZXJuZWwuIFRoaXMgaXMgZnVuZGFtZW50YWwsIGVzcGVjaWFsbHkgaWYgSSYjMzk7bSBsb29raW5nIGF0IHBvdGVudGlhbCBzeXN0ZW0gY2FsbCB0cmFjaW5nIHdpdGggQlBGLCBvciBpZiBJJiMzOTttIHdvcmtpbmcgb24gc29tZXRoaW5nIHRoYXQgbGV2ZXJhZ2VzIHN5c2NhbGwgaG9va3MuIEkgbmVlZCB0byBzZWUgdGhlIGhlYWRlciBmaWxlLCB0aGUgaW5jbHVkZSBwYXRoLCB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBvZiB0aGUgbWFjcm8uLi4gSXMgaXQgYXJjaGl0ZWN0dXJlLXNwZWNpZmljPyBEb2VzIGl0IHJlbHkgb24gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24ga2VybmVsIHZlcnNpb24gb3IgY29uZmlndXJhdGlvbiBmbGFncz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIHRob3JvdWdobHkgdG8gZW5zdXJlIG15IEJQRiBwcm9ncmFtcyBhcmUgcG9ydGFibGUgYW5kIGJlaGF2ZSBhcyBJIGV4cGVjdC4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgd2l0aCBhIGBncmVwYCBvciBzaW1pbGFyIHRvIHBpbnBvaW50IHRoZSBkZWZpbml0aXZlIGxvY2F0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSAqZGVmaW5pdGlvbiogaXMgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MjIKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgQ29uZmlndXJhdGlvbiBmb3IgVHJhY2luZyoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBjdXJyZW50IHRyYWNpbmcgaXNzdWUsIGxldCYjMzk7cyBqdXN0IG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgaGF2ZW4mIzM5O3Qgb3Zlcmxvb2tlZCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBmaWxlcyBvciBzZXR0aW5ncyByZWxhdGVkIHRvIHRyYWNpbmcuIFlvdSBrbm93IGhvdyBpdCBpczsgc29tZXRpbWVzIHRoZSBvYnZpb3VzIGdldHMgYnVyaWVkLiBJIHdhbnQgdG8gYmUgdGhvcm91Z2guIEkgbmVlZCB0byBxdWlja2x5IHNjYW4gdGhlIHVzdWFsIHN1c3BlY3RzLCBhbnkgcG90ZW50aWFsIG92ZXJyaWRlcywgYW5kIGFueSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBtaWdodCBiZSBpbmZsdWVuY2luZyB0aGUgdHJhY2luZyBiZWhhdmlvci4gTXkgZ3V0IGZlZWxpbmcgaXMgdGhhdCBzb21ldGhpbmcgc2ltcGxlIGlzIHRoZSBjdWxwcml0LCBidXQgSSBhbHdheXMgd2FudCB0byBlbGltaW5hdGUgdGhlIHNpbXBsZSBwb3NzaWJpbGl0aWVzIGZpcnN0LiBMZXQmIzM5O3MgbWFrZSBzdXJlIEkgZGlkbiYjMzk7dCBtaXNzIHNvbWV0aGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgb3IgYSBzZXR0aW5nIEkgdGhvdWdodCBJJiMzOTtkIGhhbmRsZWQgYnV0IGRpZG4mIzM5O3QuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBob3BlZnVsbHkgcHJvdmlkZSBtZSB3aXRoIGEgc29saWQgZm91bmRhdGlvbiBiZWZvcmUgSSBkZWx2ZSBpbnRvIG1vcmUgY29tcGxleCBkZWJ1Z2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfRVZFTlRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1Mi1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xua2VybmVsL3RyYWNlL0tjb25maWctODU0LVx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDIwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIEJQRiBWZXJpZmllciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgYEJQRl9TWVNDQUxMYCB0aGluZyBpcyBhIG11c3QtaGF2ZSwgbm8gcXVlc3Rpb24uIEFuZCwgdXN1YWxseSwgYEJQRl9KSVRgIGlzIHByZXR0eSBjcnVjaWFsIGlmIHlvdSYjMzk7cmUgd29ya2luZyB3aXRoIHNsZWVwYWJsZSBwcm9ncmFtcy4gSSYjMzk7bSBub3QgdG90YWxseSBjZXJ0YWluIGl0JiMzOTtzICpzdHJpY3RseSogcmVxdWlyZWQganVzdCBmb3IgdGhlIHZlcmlmaWVyIGl0c2VsZiwgYnV0IGl0JiMzOTtzIGdvb2QgcHJhY3RpY2UuIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSBkZXBlbmRlbmNpZXMgYmVmb3JlIEkgbWFrZSBhbnkgbW92ZXMuIFRoZSB2ZXJpZmllciBjYW4gYmUgYSBwYWluIGlmIGl0JiMzOTtzIG1pc2NvbmZpZ3VyZWQuIFRpbWUgdG8gaGVhZCBvdmVyIHRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCBkaWcgaW50byBpdC4gSSYjMzk7bGwgc2VhcmNoIGZvciB0aG9zZSBgQ09ORklHX2AgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoZSB2ZXJpZmllciYjMzk7cyBiZWhhdmlvci4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTQ0Mzk9QlRGX0lEKHN0cnVjdCwgY2dyb3VwKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTQ0NDAtI2VuZGlmXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDQ0MTojaWZkZWYgQ09ORklHX0JQRl9KSVRcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDQyLUJURl9JRChzdHJ1Y3QsIGJwZl9jcHVtYXNrKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE5Nz1CVEZfSURfVU5VU0VEXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTgtI2VuZGlmXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExOTk6I2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMDAtQlRGX0lEKGZ1bmMsIGJwZl9zZXNzaW9uX2Nvb2tpZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDk9QlRGX0lEKGZ1bmMsIGJwZl9pdGVyX251bV9kZXN0cm95KVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjEwOiNpZmRlZiBDT05GSUdfQlBGX0xTTVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjExLUJURl9JRChmdW5jLCBicGZfc2V0X2RlbnRyeV94YXR0cilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMjg9QlRGX0lEKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjI5OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjMwLUJURl9JRChmdW5jLCBicGZfc2Vzc2lvbl9pc19yZXR1cm4pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NzIKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBQYXRjaCoqCgpSaWdodCwgc28gdGhlIHBhdGNoIGlzIG5lc3RsZWQgaW4gYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgLiBUaGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIGlzc3VlLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMsIHN1Y2ggYXMgc3BlY2lmaWMga2VybmVsIGZlYXR1cmVzIG9yIG9wdGlvbnMsIGFyZSBlbmFibGluZyBvciBkaXNhYmxpbmcgYmVoYXZpb3Igd2l0aGluIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCB0aGF0IG1heSBjYXVzZSB0aGUgaXNzdWUgYXQgaGFuZC4gVW5kZXJzdGFuZGluZyBhbnkgcG9zc2libGUgZGVwZW5kZW5jaWVzIHdpbGwgaW5mb3JtIHdoZXRoZXIgY2VydGFpbiBidWlsZCBjb25maWd1cmF0aW9ucyBjb3VsZCBiZSB0aGUgcm9vdCBjYXVzZS4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIHVuZGVyIGRpZmZlcmVudCBjb21waWxlIHRpbWUgY29uZGl0aW9ucy4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFzIHdlbGwgdG8gZmluZCBhbnkgY2x1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2J0Zl9pZF9hbGxvd19zbGVlcGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTE4OTMyPXN0YXRpYyBib29sIGlzX3RyYWNpbmdfbXVsdGlfaWQoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xODkzNi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODkzNzpzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTg5MzgtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZiwgY29uc3Qgc3RydWN0IGJwZl9wcm9nICp0Z3RfcHJvZylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTkwMzA9aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MzI5LVx0XHRpZiAocHJvZy1cdTAwM2VzbGVlcGFibGUpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTMzMDpcdFx0XHRyZXQgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmLCB0Z3RfcHJvZyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkzMzEtXHRcdFx0aWYgKHJldCkge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTUzNT1pbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgwLVx0aWYgKHByb2ctXHUwMDNlc2xlZXBhYmxlKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1ODE6XHRcdGVyciA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYsIE5VTEwpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgyLVx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzUxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgZnVuY3Rpb25hbCBpc3N1ZSB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllci4gSXQmIzM5O3MgYWJvdXQgcHJldmVudGluZyBzbGVlcGFibGUgQlBGIHRyYWNpbmcgcHJvZ3JhbXMgZnJvbSBhdHRhY2hpbmcgdG8gb3RoZXIgQlBGIHByb2dyYW1zLiBUaGlzIGlzIGEgY3J1Y2lhbCBzZWN1cml0eSBjb25zaWRlcmF0aW9uLiBNeSBtYWluIGZvY3VzIGlzIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyBhZmZlY3RlZDogYGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0YCBhbmQgYGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpYC4KClRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSBpcyBgQlBGX1NZU0NBTExgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS4gQnV0IEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCwgYXMgaXQmIzM5O3MgYmVlbiBhIHdoaWxlLCBhbmQgZW5zdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGhpZGRlbiBkZXBlbmRlbmNpZXMuIEFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEJleW9uZCBgQlBGX1NZU0NBTExgLCBJIGtub3cgd2UgYWxzbyBuZWVkIGBERUJVR19JTkZPX0JURmAgaW4gcGxheSBmb3IgQlRGIHN1cHBvcnQsIHNvIEkgc2hvdWxkIGVuc3VyZSB0aGF0JiMzOTtzIGNvdmVyZWQgYXMgd2VsbC4gQSBxdWljayBzY2FuIG9mIGBrZXJuZWwvYnBmL0tjb25maWdgIHNob3VsZCBjb25maXJtIHRoZSBjb21wbGV0ZSBsaXN0IG9mIHJlbGF0ZWQgY29uZmlncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFQlVHX0lORk9fQlRGJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTM3OD1jb25maWcgREVCVUdfSU5GT19TUExJVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTM5Ny1cbmxpYi9LY29uZmlnLmRlYnVnOjM5ODpjb25maWcgREVCVUdfSU5GT19CVEZcbmxpYi9LY29uZmlnLmRlYnVnLTM5OS1cdGJvb2wgXCYjMzQ7R2VuZXJhdGUgQlRGIHR5cGUgaW5mb3JtYXRpb25cJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zz00MTk9Y29uZmlnIFBBSE9MRV9IQVNfTEFOR19FWENMVURFXG4tLVxubGliL0tjb25maWcuZGVidWctNDI3LVxubGliL0tjb25maWcuZGVidWc6NDI4OmNvbmZpZyBERUJVR19JTkZPX0JURl9NT0RVTEVTXG5saWIvS2NvbmZpZy5kZWJ1Zy00MjktXHRib29sIFwmIzM0O0dlbmVyYXRlIEJURiB0eXBlIGluZm9ybWF0aW9uIGZvciBrZXJuZWwgbW9kdWxlc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTAwCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipCVEYgRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGFuZCBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGV2ZXJ5dGhpbmcgbGluZWQgdXAgY29ycmVjdGx5IGZvciBCVEYuIEZpcnN0LCBpdCYjMzk7cyBjbGVhciB0aGF0IHdlJiMzOTtyZSBnb2luZyB0byBuZWVkIGBERUJVR19JTkZPX0JURmAuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCByZXF1aXJlbWVudCwgbm8gcXVlc3Rpb24gYWJvdXQgaXQuIEJleW9uZCB0aGF0LCBJIHRoaW5rIGl0JiMzOTtzIHBydWRlbnQgdG8gY2hlY2sgb24gYEJQRl9FVkVOVFNgIHRvbywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbWFrZSBzdXJlIHdlIGhhdmUgYWxsIG91ciBiYXNlcyBjb3ZlcmVkLiBObyBwb2ludCBpbiBtaXNzaW5nIGEgY3J1Y2lhbCBmbGFnIHdoZW4gd2UgY2FuIGJlIGNlcnRhaW4hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfRVZFTlRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xuLS1cbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1Mi1cbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xua2VybmVsL3RyYWNlL0tjb25maWctODU0LVx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTU3CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKk15IEJQRiBGdXp6aW5nIFN0cmF0ZWd5IGZvciBUaGlzIFZlcmlmaWVyIEZpeCoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0Y2ggdGhhdCYjMzk7cyBjcnVjaWFsIOKAkyBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgYnVnIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyIGl0c2VsZi4gU3BlY2lmaWNhbGx5LCB0aGUgdmVyaWZpZXIgd2FzIGxldHRpbmcgc2xlZXBhYmxlIEJQRiB0cmFjaW5nIHByb2dyYW1zIGF0dGFjaCB3aGVyZSB0aGV5IHNob3VsZG4mIzM5O3QgYmUgYWJsZSB0by4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB2ZXJpZmllciYjMzk7cyBjb3JlIGxvZ2ljLCBhIGNvcnJlY3Rpb24gaW4gaG93IGl0IGVuZm9yY2VzIHRoZSBydWxlcy4gKkNydWNpYWxseSosIHRoaXMgbWVhbnMgd2UgYWJzb2x1dGVseSAqbmVlZCogdG8gZnV6eiB0aGlzLiBBbnkgY2hhbmdlIHRvIHRoZSB2ZXJpZmllciBsaWtlIHRoaXMgY2FuIGludHJvZHVjZSBzdWJ0bGUsIHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlIGZsYXdzLgoKTXkgcGxhbj8gV2XigJlyZSBnb2luZyB0byBiZSB0aG9yb3VnaC4gSSB3YW50IHRvIGJ1aWxkIGEgZnV6emluZyBjYW1wYWlnbiB0aGF0IHNwZWNpZmljYWxseSB0YXJnZXRzIHRoaXMgaXNzdWUuIEkmIzM5O2xsIGZvY3VzIG9uIGluY2x1ZGluZyBgQlBGX1NZU0NBTExgLCBgREVCVUdfSU5GT19CVEZgLCBhbmQgYEJQRl9FVkVOVFNgIGluIHRoZSB0ZXN0IHNldHVwLiBUaGVzZSBhcmUga2V5IGFyZWFzIHRvIHByb2JlIGZvciBzaWRlIGVmZmVjdHMuIGBCUEZfU1lTQ0FMTGAgd2lsbCBoZWxwIGV4cG9zZSBlZGdlIGNhc2VzIGludGVyYWN0aW5nIHdpdGgga2VybmVsIGNhbGxzLCBgREVCVUdfSU5GT19CVEZgIHdpbGwgaGVscCB1bmNvdmVyIGludGVyYWN0aW9ucyB3aXRoIGRlYnVnIG1ldGFkYXRhLCBhbmQgYEJQRl9FVkVOVFNgIGhlbHBzIHRvIHByb2JlIHRoZSBCUEYgRXZlbnQgc3Vic3lzdGVtLiBUaGVzZSBhcmUgYWxsIGNyaXRpY2FsIGFyZWFzIHdoZXJlIEJQRiB2ZXJpZmljYXRpb24gY2FuIGJlY29tZSBjb21wbGljYXRlZC4KCkFuZCB0byBvcmdhbml6ZSBhbGwgb2YgdGhpcywgdGhlIGJlc3QgdG9vbCBpcyBgc2V0LXJlc3VsdHNgLiBJIHdpbGwgbmVlZCB0byB0cmFjayB3aGF0IGtpbmQgb2YgcmVzdWx0cyB3ZSBnZXQgaGVyZSwgZXNwZWNpYWxseSBhbnkgZnV6emluZyBjcmFzaGVzLCB1bmV4cGVjdGVkIGJlaGF2aW9yLCBvciwgaWRlYWxseSwgbm90aGluZyBhdCBhbGwg4oCTIGluIHdoaWNoIGNhc2UsIHdlIGNhbiBjb25maXJtIHRoZSBmaXggaXMgc29saWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtERUJVR19JTkZPX0JURiYjMzQ7LAogICAgJiMzNDtCUEZfRVZFTlRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF90YXJnZXQmIzM0OywKICAgICYjMzQ7YnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBwcmV2ZW50IHNsZWVwYWJsZSB0cmFjaW5nIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0RFQlVHX0lORk9fQlRGJiMzNDssCiAgICAmIzM0O0JQRl9FVkVOVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX3RhcmdldCYjMzQ7LAogICAgJiMzNDticGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHByZXZlbnQgc2xlZXBhYmxlIHRyYWNpbmcgcHJvZ3JhbXMgZnJvbSBhdHRhY2hpbmcgdG8gb3RoZXIgQlBGIHByb2dyYW1zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjA0LjE3MzAwNjc3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyODUxMTc1MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJERUJVR19JTkZPX0JURlwiLFxuICAgIFwiQlBGX0VWRU5UU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja19hdHRhY2hfdGFyZ2V0XCIsXG4gICAgXCJicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gcHJldmVudCBzbGVlcGFibGUgdHJhY2luZyBwcm9ncmFtcyBmcm9tIGF0dGFjaGluZyB0byBvdGhlciBCUEYgcHJvZ3JhbXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjowNC4xNzMwMTk2NzlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2MTg2MzcxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU3YzQzZDQ3OWIwYjVmYTg2OWJhNWExYjYyMjJkMjRhZTUyZjUxNzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMjYgMTU6MzY6MDEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggNTJiZTBhMTE4Y2NlMDcuLjIyYWM0N2Q5YTU1MzgzIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC0xODkzNSwxMyArMTg5MzUsMTYgQEAgc3RhdGljIGJvb2wgaXNfdHJhY2luZ19tdWx0aV9pZChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQpXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgYnRmICpidGYpXFxuK1xcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nKVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBidGZfdHlwZSAqdDtcXG4gXFx0Y29uc3QgY2hhciAqdG5hbWU7XFxuIFxcbiBcXHRzd2l0Y2ggKHByb2ctXFx1MDAzZXR5cGUpIHtcXG4gXFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XFxuK1xcdFxcdGlmICh0Z3RfcHJvZylcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRcXHR0ID0gYnRmX3R5cGVfYnlfaWQoYnRmLCBidGZfaWQpO1xcbiBcXHRcXHRpZiAoIXQpXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC0xOTMyNCw3ICsxOTMyNyw3IEBAIGludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHRpZiAocHJvZy1cXHUwMDNlc2xlZXBhYmxlKSB7XFxuLVxcdFxcdFxcdHJldCA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYpO1xcbitcXHRcXHRcXHRyZXQgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmLCB0Z3RfcHJvZyk7XFxuIFxcdFxcdFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0XFx0XFx0bW9kdWxlX3B1dChtb2QpO1xcbiBcXHRcXHRcXHRcXHRicGZfbG9nKGxvZywgXFxcIiVzIGlzIG5vdCBzbGVlcGFibGVcXFxcblxcXCIsIHRuYW1lKTtcXG5AQCAtMTk1NzUsNyArMTk1NzgsNyBAQCBpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidFxcbiBcXG4gXFx0LyogQ2hlY2sgc2xlZXBhYmxlIHByb2dyYW0gYXR0YWNobWVudC4gKi9cXG4gXFx0aWYgKHByb2ctXFx1MDAzZXNsZWVwYWJsZSkge1xcbi1cXHRcXHRlcnIgPSBidGZfaWRfYWxsb3dfc2xlZXBhYmxlKGJ0Zl9pZCwgYWRkciwgcHJvZywgYnRmKTtcXG4rXFx0XFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgTlVMTCk7XFxuIFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdHJldHVybiBlcnI7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXFxuaW5kZXggNGE4N2Q3MTYzYzhjN2YuLjI1MjNjMDdhMTZjNjU1IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xcbkBAIC01LDYgKzUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjYnBmL2J0Zi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiYmluZDRfcHJvZy5za2VsLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJmcmVwbGFjZV9wcm9nbWFwLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcImZlbnRyeV9zbGVlcGFibGUuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwieGRwX2R1bW15LnNrZWwuaFxcXCJcXG4gXFxuIHR5cGVkZWYgaW50ICgqdGVzdF9jYikoc3RydWN0IGJwZl9vYmplY3QgKm9iaik7XFxuQEAgLTU3Niw2ICs1NzcsNjAgQEAgc3RhdGljIHZvaWQgdGVzdF9mdW5jX3JlcGxhY2VfcHJvZ21hcCh2b2lkKVxcbiBcXHRmcmVwbGFjZV9wcm9nbWFwX19kZXN0cm95KHNrZWwpO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IGZlbnRyeV9zbGVlcGFibGUgKnNrZWwgPSBOVUxMO1xcbitcXHRzdHJ1Y3QgeGRwX2R1bW15ICpza2VsX3hkcCA9IE5VTEw7XFxuK1xcdGludCBpZmluZGV4LCBwcm9nX2ZkLCBlcnI7XFxuK1xcdGNoYXIgYnVmZls2NF0gPSB7fTtcXG4rXFxuKyNpZm5kZWYgX194ODZfNjRfX1xcbitcXHR0ZXN0X19za2lwKCk7XFxuK1xcdHJldHVybjtcXG4rI2VuZGlmXFxuK1xcbitcXHRpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgoXFxcImxvXFxcIik7XFxuK1xcdGlmICghQVNTRVJUX0dUKGlmaW5kZXgsIDAsIFxcXCJpZl9uYW1ldG9pbmRleFxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRza2VsX3hkcCA9IHhkcF9kdW1teV9fb3Blbl9hbmRfbG9hZCgpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbF94ZHAsIFxcXCJ4ZHBfZHVtbXlfX29wZW5fYW5kX2xvYWRcXFwiKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0c2tlbCA9IGZlbnRyeV9zbGVlcGFibGVfX29wZW4oKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJmZW50cnlfc2xlZXBhYmxlX19vcGVuXFxcIikpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0c2tlbC1cXHUwMDNlYnNzLVxcdTAwM2V1c2VyX3B0ciA9IGJ1ZmY7XFxuK1xcbitcXHRwcm9nX2ZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWxfeGRwLVxcdTAwM2Vwcm9ncy5fX3g2NF9zeXNfbm9wKTtcXG4rXFx0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwtXFx1MDAzZXByb2dzLmZlbnRyeV94ZHAsIHByb2dfZmQsIFxcXCJfX3g2NF9zeXNfbm9wXFxcIik7XFxuK1xcdGlmICghQVNTRVJUX09LKGVyciwgXFxcImJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldFxcXCIpKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdGVyciA9IGZlbnRyeV9zbGVlcGFibGVfX2xvYWQoc2tlbCk7XFxuK1xcdEFTU0VSVF9FUlIoZXJyLCBcXFwiZmVudHJ5X3NsZWVwYWJsZV9fbG9hZFxcXCIpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRnb3RvIG91dDtcXG4rXFxuK1xcdHNrZWwtXFx1MDAzZWxpbmtzLmZlbnRyeV94ZHAgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlKHNrZWwtXFx1MDAzZXByb2dzLmZlbnRyeV94ZHApO1xcbitcXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cXHUwMDNlbGlua3MuZmVudHJ5X3hkcCwgXFxcImJwZl9wcm9ncmFtX19hdHRhY2hfdHJhY2VcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRza2VsX3hkcC1cXHUwMDNlbGlua3MuX194NjRfc3lzX25vcCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfeGRwKHNrZWxfeGRwLVxcdTAwM2Vwcm9ncy5fX3g2NF9zeXNfbm9wLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRpZmluZGV4KTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWxfeGRwLVxcdTAwM2VsaW5rcy5fX3g2NF9zeXNfbm9wLCBcXFwiYnBmX3Byb2dyYW1fX2F0dGFjaF94ZHBcXFwiKSlcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRlcnIgPSBzeXN0ZW0oXFxcInBpbmcgLXEgLWMgMSAtVyAxIDEyNy4wLjAuMSBcXHUwMDNlIC9kZXYvbnVsbFxcXCIpO1xcbitcXHRBU1NFUlRfT0soZXJyLCBcXFwicGluZ1xcXCIpO1xcbitcXHRBU1NFUlRfRVJSKHNrZWwtXFx1MDAzZWJzcy1cXHUwMDNlcmV0dmFsLCBcXFwicmV0dmFsXFxcIik7XFxuK1xcbitvdXQ6XFxuK1xcdGZlbnRyeV9zbGVlcGFibGVfX2Rlc3Ryb3koc2tlbCk7XFxuK1xcdHhkcF9kdW1teV9fZGVzdHJveShza2VsX3hkcCk7XFxuK31cXG4rXFxuIC8qIE5PVEU6IGFmZmVjdCBvdGhlciB0ZXN0cywgbXVzdCBydW4gaW4gc2VyaWFsIG1vZGUgKi9cXG4gdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXFxuIHtcXG5AQCAtNjA3LDQgKzY2Miw2IEBAIHZvaWQgc2VyaWFsX3Rlc3RfZmV4aXRfYnBmMmJwZih2b2lkKVxcbiBcXHRcXHR0ZXN0X2Z1bmNfcmVwbGFjZV9pbnRfd2l0aF92b2lkKCk7XFxuIFxcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFxcXCJmcmVwbGFjZV92b2lkXFxcIikpXFxuIFxcdFxcdHRlc3RfZnVuY19yZXBsYWNlX3ZvaWQoKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNsZWVwYWJsZV9mZW50cnlfdG9feGRwXFxcIikpXFxuK1xcdFxcdHRlc3Rfc2xlZXBhYmxlX2ZlbnRyeV90b194ZHAoKTtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL2ZlbnRyeV9zbGVlcGFibGUuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ0YjkzOGY0ODVlMjRjXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmNcXG5AQCAtMCwwICsxLDE5IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNpbmNsdWRlIFxcXCJ2bWxpbnV4LmhcXFwiXFxuKyNpbmNsdWRlIFxcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfdHJhY2luZy5oXFx1MDAzZVxcbitcXG4rY2hhciBMSUNFTlNFW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG4rXFxuK3ZvaWQgKnVzZXJfcHRyO1xcbitpbnQgcmV0dmFsO1xcbitcXG4rU0VDKFxcXCJmZW50cnkuc1xcXCIpXFxuK2ludCBCUEZfUFJPRyhmZW50cnlfeGRwKVxcbit7XFxuK1xcdGNoYXIgYnVmZls2NF07XFxuK1xcbitcXHRyZXR2YWwgPSBicGZfY29weV9mcm9tX3VzZXIoYnVmZiwgc2l6ZW9mKGJ1ZmYpLCB1c2VyX3B0cik7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcXG5pbmRleCBkOTg4YjJlMGNlZTg0MC4uNWYxZTA3NzEwMjFkZmUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXFxuQEAgLTEwLDQgKzEwLDEwIEBAIGludCB4ZHBfZHVtbXlfcHJvZyhzdHJ1Y3QgeGRwX21kICpjdHgpXFxuIFxcdHJldHVybiBYRFBfUEFTUztcXG4gfVxcbiBcXG4rU0VDKFxcXCJ4ZHBcXFwiKVxcbitpbnQgX194NjRfc3lzX25vcChzdHJ1Y3QgeGRwX21kICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIFhEUF9QQVNTO1xcbit9XFxuK1xcbiBjaGFyIF9saWNlbnNlW10gU0VDKFxcXCJsaWNlbnNlXFxcIikgPSBcXFwiR1BMXFxcIjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MDUuMDM2OTc1NTgyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTE5ODcxODUwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBwcmV2ZW50IHNsZWVwYWJsZSB0cmFjaW5nIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU3YzQzZDQ3OWIwYjVmYTg2OWJhNWExYjYyMjJkMjRhZTUyZjUxNzRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAxNTozNjowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggNTJiZTBhMTE4Y2NlMDcuLjIyYWM0N2Q5YTU1MzgzIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC0xODkzNSwxMyArMTg5MzUsMTYgQEAgc3RhdGljIGJvb2wgaXNfdHJhY2luZ19tdWx0aV9pZChjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQpXG4gfVxuIFxuIHN0YXRpYyBpbnQgYnRmX2lkX2FsbG93X3NsZWVwYWJsZSh1MzIgYnRmX2lkLCB1bnNpZ25lZCBsb25nIGFkZHIsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcbi1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmKVxuK1x0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnRmICpidGYsIGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqdGd0X3Byb2cpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0O1xuIFx0Y29uc3QgY2hhciAqdG5hbWU7XG4gXG4gXHRzd2l0Y2ggKHByb2ctXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBCUEZfUFJPR19UWVBFX1RSQUNJTkc6XG4rXHRcdGlmICh0Z3RfcHJvZylcbitcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdFx0dCA9IGJ0Zl90eXBlX2J5X2lkKGJ0ZiwgYnRmX2lkKTtcbiBcdFx0aWYgKCF0KVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuQEAgLTE5MzI0LDcgKzE5MzI3LDcgQEAgaW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXG4gXHRcdH1cbiBcbiBcdFx0aWYgKHByb2ctXHUwMDNlc2xlZXBhYmxlKSB7XG4tXHRcdFx0cmV0ID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0Zik7XG4rXHRcdFx0cmV0ID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgdGd0X3Byb2cpO1xuIFx0XHRcdGlmIChyZXQpIHtcbiBcdFx0XHRcdG1vZHVsZV9wdXQobW9kKTtcbiBcdFx0XHRcdGJwZl9sb2cobG9nLCBcIiVzIGlzIG5vdCBzbGVlcGFibGVcXG5cIiwgdG5hbWUpO1xuQEAgLTE5NTc1LDcgKzE5NTc4LDcgQEAgaW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRcbiBcbiBcdC8qIENoZWNrIHNsZWVwYWJsZSBwcm9ncmFtIGF0dGFjaG1lbnQuICovXG4gXHRpZiAocHJvZy1cdTAwM2VzbGVlcGFibGUpIHtcbi1cdFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0Zik7XG4rXHRcdGVyciA9IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUoYnRmX2lkLCBhZGRyLCBwcm9nLCBidGYsIE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBlcnI7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvZmV4aXRfYnBmMmJwZi5jXG5pbmRleCA0YTg3ZDcxNjNjOGM3Zi4uMjUyM2MwN2ExNmM2NTUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9mZXhpdF9icGYyYnBmLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL2ZleGl0X2JwZjJicGYuY1xuQEAgLTUsNiArNSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjYnBmL2J0Zi5oXHUwMDNlXG4gI2luY2x1ZGUgXCJiaW5kNF9wcm9nLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJmcmVwbGFjZV9wcm9nbWFwLnNrZWwuaFwiXG4rI2luY2x1ZGUgXCJmZW50cnlfc2xlZXBhYmxlLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ4ZHBfZHVtbXkuc2tlbC5oXCJcbiBcbiB0eXBlZGVmIGludCAoKnRlc3RfY2IpKHN0cnVjdCBicGZfb2JqZWN0ICpvYmopO1xuQEAgLTU3Niw2ICs1NzcsNjAgQEAgc3RhdGljIHZvaWQgdGVzdF9mdW5jX3JlcGxhY2VfcHJvZ21hcCh2b2lkKVxuIFx0ZnJlcGxhY2VfcHJvZ21hcF9fZGVzdHJveShza2VsKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdGVzdF9zbGVlcGFibGVfZmVudHJ5X3RvX3hkcCh2b2lkKVxuK3tcbitcdHN0cnVjdCBmZW50cnlfc2xlZXBhYmxlICpza2VsID0gTlVMTDtcbitcdHN0cnVjdCB4ZHBfZHVtbXkgKnNrZWxfeGRwID0gTlVMTDtcbitcdGludCBpZmluZGV4LCBwcm9nX2ZkLCBlcnI7XG4rXHRjaGFyIGJ1ZmZbNjRdID0ge307XG4rXG4rI2lmbmRlZiBfX3g4Nl82NF9fXG4rXHR0ZXN0X19za2lwKCk7XG4rXHRyZXR1cm47XG4rI2VuZGlmXG4rXG4rXHRpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgoXCJsb1wiKTtcbitcdGlmICghQVNTRVJUX0dUKGlmaW5kZXgsIDAsIFwiaWZfbmFtZXRvaW5kZXhcIikpXG4rXHRcdHJldHVybjtcbitcbitcdHNrZWxfeGRwID0geGRwX2R1bW15X19vcGVuX2FuZF9sb2FkKCk7XG4rXHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbF94ZHAsIFwieGRwX2R1bW15X19vcGVuX2FuZF9sb2FkXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRza2VsID0gZmVudHJ5X3NsZWVwYWJsZV9fb3BlbigpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwiZmVudHJ5X3NsZWVwYWJsZV9fb3BlblwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRza2VsLVx1MDAzZWJzcy1cdTAwM2V1c2VyX3B0ciA9IGJ1ZmY7XG4rXG4rXHRwcm9nX2ZkID0gYnBmX3Byb2dyYW1fX2ZkKHNrZWxfeGRwLVx1MDAzZXByb2dzLl9feDY0X3N5c19ub3ApO1xuK1x0ZXJyID0gYnBmX3Byb2dyYW1fX3NldF9hdHRhY2hfdGFyZ2V0KHNrZWwtXHUwMDNlcHJvZ3MuZmVudHJ5X3hkcCwgcHJvZ19mZCwgXCJfX3g2NF9zeXNfbm9wXCIpO1xuK1x0aWYgKCFBU1NFUlRfT0soZXJyLCBcImJwZl9wcm9ncmFtX19zZXRfYXR0YWNoX3RhcmdldFwiKSlcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRlcnIgPSBmZW50cnlfc2xlZXBhYmxlX19sb2FkKHNrZWwpO1xuK1x0QVNTRVJUX0VSUihlcnIsIFwiZmVudHJ5X3NsZWVwYWJsZV9fbG9hZFwiKTtcbitcdGlmIChlcnIpXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0c2tlbC1cdTAwM2VsaW5rcy5mZW50cnlfeGRwID0gYnBmX3Byb2dyYW1fX2F0dGFjaF90cmFjZShza2VsLVx1MDAzZXByb2dzLmZlbnRyeV94ZHApO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3MuZmVudHJ5X3hkcCwgXCJicGZfcHJvZ3JhbV9fYXR0YWNoX3RyYWNlXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdHNrZWxfeGRwLVx1MDAzZWxpbmtzLl9feDY0X3N5c19ub3AgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX3hkcChza2VsX3hkcC1cdTAwM2Vwcm9ncy5fX3g2NF9zeXNfbm9wLFxuK1x0XHRcdFx0XHRcdFx0XHRpZmluZGV4KTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsX3hkcC1cdTAwM2VsaW5rcy5fX3g2NF9zeXNfbm9wLCBcImJwZl9wcm9ncmFtX19hdHRhY2hfeGRwXCIpKVxuK1x0XHRnb3RvIG91dDtcbitcbitcdGVyciA9IHN5c3RlbShcInBpbmcgLXEgLWMgMSAtVyAxIDEyNy4wLjAuMSBcdTAwM2UgL2Rldi9udWxsXCIpO1xuK1x0QVNTRVJUX09LKGVyciwgXCJwaW5nXCIpO1xuK1x0QVNTRVJUX0VSUihza2VsLVx1MDAzZWJzcy1cdTAwM2VyZXR2YWwsIFwicmV0dmFsXCIpO1xuK1xuK291dDpcbitcdGZlbnRyeV9zbGVlcGFibGVfX2Rlc3Ryb3koc2tlbCk7XG4rXHR4ZHBfZHVtbXlfX2Rlc3Ryb3koc2tlbF94ZHApO1xuK31cbitcbiAvKiBOT1RFOiBhZmZlY3Qgb3RoZXIgdGVzdHMsIG11c3QgcnVuIGluIHNlcmlhbCBtb2RlICovXG4gdm9pZCBzZXJpYWxfdGVzdF9mZXhpdF9icGYyYnBmKHZvaWQpXG4ge1xuQEAgLTYwNyw0ICs2NjIsNiBAQCB2b2lkIHNlcmlhbF90ZXN0X2ZleGl0X2JwZjJicGYodm9pZClcbiBcdFx0dGVzdF9mdW5jX3JlcGxhY2VfaW50X3dpdGhfdm9pZCgpO1xuIFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXCJmcmVwbGFjZV92b2lkXCIpKVxuIFx0XHR0ZXN0X2Z1bmNfcmVwbGFjZV92b2lkKCk7XG4rXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcInNsZWVwYWJsZV9mZW50cnlfdG9feGRwXCIpKVxuK1x0XHR0ZXN0X3NsZWVwYWJsZV9mZW50cnlfdG9feGRwKCk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9mZW50cnlfc2xlZXBhYmxlLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ0YjkzOGY0ODVlMjRjXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvZmVudHJ5X3NsZWVwYWJsZS5jXG5AQCAtMCwwICsxLDE5IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjaW5jbHVkZSBcInZtbGludXguaFwiXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NicGYvYnBmX3RyYWNpbmcuaFx1MDAzZVxuK1xuK2NoYXIgTElDRU5TRVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuK1xuK3ZvaWQgKnVzZXJfcHRyO1xuK2ludCByZXR2YWw7XG4rXG4rU0VDKFwiZmVudHJ5LnNcIilcbitpbnQgQlBGX1BST0coZmVudHJ5X3hkcClcbit7XG4rXHRjaGFyIGJ1ZmZbNjRdO1xuK1xuK1x0cmV0dmFsID0gYnBmX2NvcHlfZnJvbV91c2VyKGJ1ZmYsIHNpemVvZihidWZmKSwgdXNlcl9wdHIpO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy94ZHBfZHVtbXkuY1xuaW5kZXggZDk4OGIyZTBjZWU4NDAuLjVmMWUwNzcxMDIxZGZlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3hkcF9kdW1teS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MveGRwX2R1bW15LmNcbkBAIC0xMCw0ICsxMCwxMCBAQCBpbnQgeGRwX2R1bW15X3Byb2coc3RydWN0IHhkcF9tZCAqY3R4KVxuIFx0cmV0dXJuIFhEUF9QQVNTO1xuIH1cbiBcbitTRUMoXCJ4ZHBcIilcbitpbnQgX194NjRfc3lzX25vcChzdHJ1Y3QgeGRwX21kICpjdHgpXG4re1xuK1x0cmV0dXJuIFhEUF9QQVNTO1xuK31cbitcbiBjaGFyIF9saWNlbnNlW10gU0VDKFwibGljZW5zZVwiKSA9IFwiR1BMXCI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjowNS4wMzY5ODE0ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQ5Mzk5ODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBWZXJpZmllciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbi4gSXQgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDsgdGhleSd2ZSBhZGRlZCBhIG5ldyBjaGVjayB3aXRoaW4gdGhlIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCBmdW5jdGlvbiBpdHNlbGY6XG5cbmBgYGNcbiBcdHN3aXRjaCAocHJvZy1cdTAwM2V0eXBlKSB7XG4gXHRjYXNlIEJQRl9QUk9HX1RZUEVfVFJBQ0lORzpcbitcdFx0aWYgKHRndF9wcm9nKVxuK1x0XHRcdHJldHVybiAtRUlOVkFMO1xuYGBgXG5cblJpZ2h0LCBzbyBpZiBhIHRyYWNpbmcgQlBGIHByb2dyYW0gaXMgc2xlZXBhYmxlIGFuZCB3ZSBoYXZlIGEgYHRndF9wcm9nYCAobWVhbmluZyBpdCdzIGJlaW5nIGF0dGFjaGVkIHRvIGFub3RoZXIgcHJvZ3JhbSksIHRoZSBmdW5jdGlvbiBub3cgcmV0dXJucyBgLUVJTlZBTGAuIFRoaXMgZXNzZW50aWFsbHkgZGlzYWxsb3dzIHNsZWVwYWJsZSB0cmFjaW5nIEJQRiBwcm9ncmFtcyBmcm9tIGJlaW5nIGF0dGFjaGVkIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhhdCdzIHRoZSBjb3JlIG9mIGl0LiBNYWtlcyBzZW5zZSDigJMgcHJvYmFibHkgc29tZSBzb3J0IG9mIHNhZmV0eSBtZWNoYW5pc20gb3IgYSBjb25zdHJhaW50IG9uIGhvdyB0aGVzZSB0cmFjaW5nIHByb2dyYW1zIGludGVyYWN0IHdpdGggb3RoZXJzLlxuXG5UaGUgcGF0Y2ggYWxzbyBtZW50aW9ucyB1cGRhdGluZyB0aGUgY2FsbHMgdG8gYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgIHRvIGNvcnJlY3RseSBwYXNzIHRoZSBgdGd0X3Byb2dgIGFyZ3VtZW50LiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgbm93IHRvIHNlZSAqd2hlcmUqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBpbXBsaWNhdGlvbnMuIEkgbmVlZCB0byBncm9rIHRoZSBmbG93IGFuZCBob3cgdGhpcyBjaGVjayBhZmZlY3RzIHRoZSBleGlzdGluZyBsb2dpYy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjYXNlcyB3aGVyZSBgdGd0X3Byb2dgIGlzIGVpdGhlciBOVUxMIG9yIGEgdmFsaWQgcHJvZ3JhbSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UuIExldCdzIGdldCB0byBpdCFcblxuXG4iLCJJbnB1dFRva2VucyI6NDEyMCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjA5LjY4NjM4NTk0NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU3MDAyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRmX2lkX2FsbG93X3NsZWVwYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE4OTMyPXN0YXRpYyBib29sIGlzX3RyYWNpbmdfbXVsdGlfaWQoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM2LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODkzNzpzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM4LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MDMwPWludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MzI5LVxcdFxcdGlmIChwcm9nLVxcdTAwM2VzbGVlcGFibGUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkzMzA6XFx0XFx0XFx0cmV0ID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgdGd0X3Byb2cpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzMS1cXHRcXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1MzU9aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgwLVxcdGlmIChwcm9nLVxcdTAwM2VzbGVlcGFibGUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1ODE6XFx0XFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgTlVMTCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgyLVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjA5Ljc5MjA5MzM3M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzMTQ1MTk5ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAuIEl0J3MgcmVqZWN0aW5nIHNsZWVwYWJsZSB0cmFjaW5nIHByb2dyYW1zIGlmIGB0Z3RfcHJvZ2AgaXMgcHJlc2VudC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZywgZ2l2ZW4gaXQncyBhIHJlYWNoYWJsZSBjaGFuZ2UuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIEkgY2FuIGZvY3VzIG15IGVmZm9ydHMuXG5cbkknbSB0aGlua2luZyBJIHNob3VsZCB6b29tIGluIG9uIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBjYWxsIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYC4gTGV0J3Mgc2VlLi4uIGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgYXJlIHRoZSBjYWxsZXJzIEknbSBsb29raW5nIGZvci4gU2luY2UgYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgIGl0c2VsZiBpcyBzdGF0aWMsIGl0J3MgdGhvc2UgY2FsbGluZyBmdW5jdGlvbnMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgbXkgcHJpbWFyeSB0YXJnZXRzLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAgYXJlbid0IGFsc28gc3RhdGljIG9yLCB3b3JzZSwgbm90IGV4cG9ydGVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXkncmUgYWNjZXNzaWJsZSBhbmQgdGVzdGFibGUgdG8gZWZmZWN0aXZlbHkgbGV2ZXJhZ2UgdGhpcyBjaGFuZ2UgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MTQuMTA2NjE3OTAzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzI2NzkyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xODk5NT1idGZfYXR0YWNoX2Z1bmNfcHJvdG8oc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZywgc3RydWN0IGJ0ZiAqYnRmLCB1MzIgZnVuY19pZClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTAyOS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkwMzA6aW50IGJwZl9jaGVja19hdHRhY2hfdGFyZ2V0KHN0cnVjdCBicGZfdmVyaWZpZXJfbG9nICpsb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MDMxLVxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjE0LjIwOTg5NDI3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTIwNzk0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgZnVuY3Rpb24sIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgcGljdHVyZSBvZiBlQlBGIHByb2dyYW0gYXR0YWNobWVudCBhbmQgaG93IEJURiBJRHMgYXJlIG1hbmFnZWQgaW4gdGhhdCBjb250ZXh0LiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGFzc3VtZSB0aGlzIHJlbGF0ZXMgdG8gc2l0dWF0aW9ucyB3aGVyZSB3ZSdyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgQlRGIElEcyBvciBwZXJoYXBzIG11bHRpcGxlIHByb2dyYW1zIGF0dGFjaGluZyB0byB0aGUgc2FtZSB0YXJnZXQsIG9yIG1heWJlIGhhbmRsaW5nIG11bHRpcGxlIEJURiBvYmplY3RzLiBJIGV4cGVjdCB0aGUgXCJtdWx0aVwiIHN1ZmZpeCBoaW50cyBhdCBjb21wbGV4aXR5IGJleW9uZCBhIHNpbXBsZSBvbmUtdG8tb25lIGF0dGFjaG1lbnQgc2NlbmFyaW8uIEknbGwgbmVlZCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50czogd2hpY2ggZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnZvbHZlZD8gV2hhdCBraW5kcyBvZiBjaGVja3MgYXJlIGl0IHBlcmZvcm1pbmc/IEFueSBwb3RlbnRpYWwgZm9yIGVycm9yIGNvbmRpdGlvbnMsIHJhY2UgY29uZGl0aW9ucyBvciBpbmVmZmljaWVuY2llcyBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBuZWVkIHRvIGJlIG5vdGVkLCBhbmQgSSdsbCBwYXkgc3BlY2lmaWMgYXR0ZW50aW9uIHRvIGhvdyBCVEYgdHlwZSBjb21wYXRpYmlsaXR5IGlzIGVuZm9yY2VkLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzEzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MTcuNjYxOTc3OTI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzUzNTY2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTQzNT1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzNC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1MzU6aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTUzNi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MTcuNzk5NTIwNDI3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgzMjk4NDI5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIER5bmFtaWMgTmF0dXJlIG9mIFN5c3RlbXMqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcgZHluYW1pYy4gVGhlIGtleSBpcyByZWNvZ25pemluZyB0aGF0IHRoZXNlIGVsZW1lbnRzIGFyZW4ndCBzdGF0aWM7IHRoZXkncmUgY29uc3RhbnRseSBjaGFuZ2luZyBvciBjYXBhYmxlIG9mIGNoYW5naW5nLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhpcyBub24tc3RhdGljIG5hdHVyZSwgaXMgdG8gaW1tZWRpYXRlbHkgY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24uIFdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIG1pZ2h0IGJlIGludm9sdmVkIGhlcmU/IFNwZWNpZmljYWxseSwgd2l0aCB0aGUgY29udGV4dCBiZWluZyBCUEYsIG15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQncyB0aGUgZ2F0ZWtlZXBlciwgaXNuJ3QgaXQ/IElmIHRoYXQgaXNuJ3QgZW5hYmxlZCwgd2UncmUgZXNzZW50aWFsbHkgZGVhZCBpbiB0aGUgd2F0ZXIgZnJvbSB0aGUgZ2V0LWdvLiBTbywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0LiBJdCdzIHRoZSBlc3NlbnRpYWwgYmFzZWxpbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjoyMC42MzI1MDkwODZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjY4NTM1NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9TWVNDQUxMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluaXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MjAuNzU1MjA5NzYzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDgwOTY1MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBpdCdzICpteSogdHJhaW4gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyB0aGUgQlBGX1NZU0NBTEwgRGVmaW5pdGlvbioqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIG5haWwgZG93biBleGFjdGx5IHdoZXJlIGBCUEZfU1lTQ0FMTGAgaXMgZGVmaW5lZCBpbiB0aGUga2VybmVsLiBUaGlzIGlzIGZ1bmRhbWVudGFsLCBlc3BlY2lhbGx5IGlmIEknbSBsb29raW5nIGF0IHBvdGVudGlhbCBzeXN0ZW0gY2FsbCB0cmFjaW5nIHdpdGggQlBGLCBvciBpZiBJJ20gd29ya2luZyBvbiBzb21ldGhpbmcgdGhhdCBsZXZlcmFnZXMgc3lzY2FsbCBob29rcy4gSSBuZWVkIHRvIHNlZSB0aGUgaGVhZGVyIGZpbGUsIHRoZSBpbmNsdWRlIHBhdGgsIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIHRoZSBtYWNyby4uLiBJcyBpdCBhcmNoaXRlY3R1cmUtc3BlY2lmaWM/IERvZXMgaXQgcmVseSBvbiBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiBrZXJuZWwgdmVyc2lvbiBvciBjb25maWd1cmF0aW9uIGZsYWdzPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgdGhvcm91Z2hseSB0byBlbnN1cmUgbXkgQlBGIHByb2dyYW1zIGFyZSBwb3J0YWJsZSBhbmQgYmVoYXZlIGFzIEkgZXhwZWN0LiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSB3aXRoIGEgYGdyZXBgIG9yIHNpbWlsYXIgdG8gcGlucG9pbnQgdGhlIGRlZmluaXRpdmUgbG9jYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlICpkZWZpbml0aW9uKiBpcyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mzk1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MjMuOTAzMzEwMDE3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzc5NjE1MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9LY29uZmlnPTI1PW1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxua2VybmVsL2JwZi9LY29uZmlnLTI2LVxcbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctMjgtXFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjoyNi42ODI5MzU4MThaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEwODE4MTg5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIENvbmZpZ3VyYXRpb24gZm9yIFRyYWNpbmcqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBjdXJyZW50IHRyYWNpbmcgaXNzdWUsIGxldCdzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbid0IG92ZXJsb29rZWQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgb3Igc2V0dGluZ3MgcmVsYXRlZCB0byB0cmFjaW5nLiBZb3Uga25vdyBob3cgaXQgaXM7IHNvbWV0aW1lcyB0aGUgb2J2aW91cyBnZXRzIGJ1cmllZC4gSSB3YW50IHRvIGJlIHRob3JvdWdoLiBJIG5lZWQgdG8gcXVpY2tseSBzY2FuIHRoZSB1c3VhbCBzdXNwZWN0cywgYW55IHBvdGVudGlhbCBvdmVycmlkZXMsIGFuZCBhbnkgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIHRyYWNpbmcgYmVoYXZpb3IuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgc29tZXRoaW5nIHNpbXBsZSBpcyB0aGUgY3VscHJpdCwgYnV0IEkgYWx3YXlzIHdhbnQgdG8gZWxpbWluYXRlIHRoZSBzaW1wbGUgcG9zc2liaWxpdGllcyBmaXJzdC4gTGV0J3MgbWFrZSBzdXJlIEkgZGlkbid0IG1pc3Mgc29tZXRoaW5nIGluIHRoZSBkb2N1bWVudGF0aW9uLCBvciBhIHNldHRpbmcgSSB0aG91Z2h0IEknZCBoYW5kbGVkIGJ1dCBkaWRuJ3QuIFRoaXMgcXVpY2sgY2hlY2sgd2lsbCBob3BlZnVsbHkgcHJvdmlkZSBtZSB3aXRoIGEgc29saWQgZm91bmRhdGlvbiBiZWZvcmUgSSBkZWx2ZSBpbnRvIG1vcmUgY29tcGxleCBkZWJ1Z2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MjIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjoyOS43OTExMjE5NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODkxNzUyNjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9FVkVOVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjMyLjQ4MDMwNzM2N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA5Mjc5MTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyBCUEYgVmVyaWZpZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgdGhpcyBgQlBGX1NZU0NBTExgIHRoaW5nIGlzIGEgbXVzdC1oYXZlLCBubyBxdWVzdGlvbi4gQW5kLCB1c3VhbGx5LCBgQlBGX0pJVGAgaXMgcHJldHR5IGNydWNpYWwgaWYgeW91J3JlIHdvcmtpbmcgd2l0aCBzbGVlcGFibGUgcHJvZ3JhbXMuIEknbSBub3QgdG90YWxseSBjZXJ0YWluIGl0J3MgKnN0cmljdGx5KiByZXF1aXJlZCBqdXN0IGZvciB0aGUgdmVyaWZpZXIgaXRzZWxmLCBidXQgaXQncyBnb29kIHByYWN0aWNlLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGJlZm9yZSBJIG1ha2UgYW55IG1vdmVzLiBUaGUgdmVyaWZpZXIgY2FuIGJlIGEgcGFpbiBpZiBpdCdzIG1pc2NvbmZpZ3VyZWQuIFRpbWUgdG8gaGVhZCBvdmVyIHRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgIGFuZCBkaWcgaW50byBpdC4gSSdsbCBzZWFyY2ggZm9yIHRob3NlIGBDT05GSUdfYCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhlIHZlcmlmaWVyJ3MgYmVoYXZpb3IuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDIwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6MzUuNzg5NTkwNjk3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA2OTEyNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0JQRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTQ0Mzk9QlRGX0lEKHN0cnVjdCwgY2dyb3VwKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDQwLSNlbmRpZlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0NDQxOiNpZmRlZiBDT05GSUdfQlBGX0pJVFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00NDQyLUJURl9JRChzdHJ1Y3QsIGJwZl9jcHVtYXNrKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTk3PUJURl9JRF9VTlVTRURcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTgtI2VuZGlmXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTk5OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIwMC1CVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25fY29va2llKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjA5PUJURl9JRChmdW5jLCBicGZfaXRlcl9udW1fZGVzdHJveSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTA6I2lmZGVmIENPTkZJR19CUEZfTFNNXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjExLUJURl9JRChmdW5jLCBicGZfc2V0X2RlbnRyeV94YXR0cilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIyOD1CVEZfSUQoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMpXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjI5OiNpZmRlZiBDT05GSUdfQlBGX0VWRU5UU1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzMC1CVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25faXNfcmV0dXJuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjozNS44OTAyODk4MThaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NzI3MzA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgYnRmX2lkX2FsbG93X3NsZWVwYWJsZWAgUGF0Y2gqKlxuXG5SaWdodCwgc28gdGhlIHBhdGNoIGlzIG5lc3RsZWQgaW4gYGJ0Zl9pZF9hbGxvd19zbGVlcGFibGVgLiBUaGUgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSByZWxldmFudCB0byB0aGlzIGlzc3VlLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGNlcnRhaW4gY29uZmlndXJhdGlvbnMsIHN1Y2ggYXMgc3BlY2lmaWMga2VybmVsIGZlYXR1cmVzIG9yIG9wdGlvbnMsIGFyZSBlbmFibGluZyBvciBkaXNhYmxpbmcgYmVoYXZpb3Igd2l0aGluIGBidGZfaWRfYWxsb3dfc2xlZXBhYmxlYCB0aGF0IG1heSBjYXVzZSB0aGUgaXNzdWUgYXQgaGFuZC4gVW5kZXJzdGFuZGluZyBhbnkgcG9zc2libGUgZGVwZW5kZW5jaWVzIHdpbGwgaW5mb3JtIHdoZXRoZXIgY2VydGFpbiBidWlsZCBjb25maWd1cmF0aW9ucyBjb3VsZCBiZSB0aGUgcm9vdCBjYXVzZS4gSSB3YW50IHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIHVuZGVyIGRpZmZlcmVudCBjb21waWxlIHRpbWUgY29uZGl0aW9ucy4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYXMgd2VsbCB0byBmaW5kIGFueSBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY3MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjM5LjA3NzU2NzM1OFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODc0MDI2MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnRmX2lkX2FsbG93X3NsZWVwYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTE4OTMyPXN0YXRpYyBib29sIGlzX3RyYWNpbmdfbXVsdGlfaWQoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM2LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxODkzNzpzdGF0aWMgaW50IGJ0Zl9pZF9hbGxvd19zbGVlcGFibGUodTMyIGJ0Zl9pZCwgdW5zaWduZWQgbG9uZyBhZGRyLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE4OTM4LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLCBjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnRndF9wcm9nKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MDMwPWludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5MzI5LVxcdFxcdGlmIChwcm9nLVxcdTAwM2VzbGVlcGFibGUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTkzMzA6XFx0XFx0XFx0cmV0ID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgdGd0X3Byb2cpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTMzMS1cXHRcXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk1MzU9aW50IGJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpKHN0cnVjdCBidGYgKmJ0Ziwgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIgYnRmX2lkLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgwLVxcdGlmIChwcm9nLVxcdTAwM2VzbGVlcGFibGUpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1ODE6XFx0XFx0ZXJyID0gYnRmX2lkX2FsbG93X3NsZWVwYWJsZShidGZfaWQsIGFkZHIsIHByb2csIGJ0ZiwgTlVMTCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTgyLVxcdFxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjM5LjE2NDk3OTcwN1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDMwNTE1ODIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBWZXJpZmllciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBmdW5jdGlvbmFsIGlzc3VlIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyLiBJdCdzIGFib3V0IHByZXZlbnRpbmcgc2xlZXBhYmxlIEJQRiB0cmFjaW5nIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGNydWNpYWwgc2VjdXJpdHkgY29uc2lkZXJhdGlvbi4gTXkgbWFpbiBmb2N1cyBpcyBvbiB0aGUgY29yZSBmdW5jdGlvbnMgYWZmZWN0ZWQ6IGBicGZfY2hlY2tfYXR0YWNoX3RhcmdldGAgYW5kIGBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aWAuXG5cblRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSBpcyBgQlBGX1NZU0NBTExgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZS4gQnV0IEknbSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGF0LCBhcyBpdCdzIGJlZW4gYSB3aGlsZSwgYW5kIGVuc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGhpZGRlbiBkZXBlbmRlbmNpZXMuIEFscmlnaHQsIGxldCdzIHNlZS4gQmV5b25kIGBCUEZfU1lTQ0FMTGAsIEkga25vdyB3ZSBhbHNvIG5lZWQgYERFQlVHX0lORk9fQlRGYCBpbiBwbGF5IGZvciBCVEYgc3VwcG9ydCwgc28gSSBzaG91bGQgZW5zdXJlIHRoYXQncyBjb3ZlcmVkIGFzIHdlbGwuIEEgcXVpY2sgc2NhbiBvZiBga2VybmVsL2JwZi9LY29uZmlnYCBzaG91bGQgY29uZmlybSB0aGUgY29tcGxldGUgbGlzdCBvZiByZWxhdGVkIGNvbmZpZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzNTEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMTU6MzY6NDMuNTk1NDk4ODk5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzk5MDA5ODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBERUJVR19JTkZPX0JURlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL0tjb25maWcuZGVidWc9Mzc4PWNvbmZpZyBERUJVR19JTkZPX1NQTElUXFxuLS1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zOTctXFxubGliL0tjb25maWcuZGVidWc6Mzk4OmNvbmZpZyBERUJVR19JTkZPX0JURlxcbmxpYi9LY29uZmlnLmRlYnVnLTM5OS1cXHRib29sIFxcXCJHZW5lcmF0ZSBCVEYgdHlwZSBpbmZvcm1hdGlvblxcXCJcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnPTQxOT1jb25maWcgUEFIT0xFX0hBU19MQU5HX0VYQ0xVREVcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTQyNy1cXG5saWIvS2NvbmZpZy5kZWJ1Zzo0Mjg6Y29uZmlnIERFQlVHX0lORk9fQlRGX01PRFVMRVNcXG5saWIvS2NvbmZpZy5kZWJ1Zy00MjktXFx0Ym9vbCBcXFwiR2VuZXJhdGUgQlRGIHR5cGUgaW5mb3JtYXRpb24gZm9yIGtlcm5lbCBtb2R1bGVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjo0Ni4zOTQ1MTUyNzhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0NjQyODY3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHNpdHVhdGlvbjpcblxuKipCVEYgRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBhbmQgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGxpbmVkIHVwIGNvcnJlY3RseSBmb3IgQlRGLiBGaXJzdCwgaXQncyBjbGVhciB0aGF0IHdlJ3JlIGdvaW5nIHRvIG5lZWQgYERFQlVHX0lORk9fQlRGYC4gVGhhdCdzIGEgZnVuZGFtZW50YWwgcmVxdWlyZW1lbnQsIG5vIHF1ZXN0aW9uIGFib3V0IGl0LiBCZXlvbmQgdGhhdCwgSSB0aGluayBpdCdzIHBydWRlbnQgdG8gY2hlY2sgb24gYEJQRl9FVkVOVFNgIHRvbywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgbWFrZSBzdXJlIHdlIGhhdmUgYWxsIG91ciBiYXNlcyBjb3ZlcmVkLiBObyBwb2ludCBpbiBtaXNzaW5nIGEgY3J1Y2lhbCBmbGFnIHdoZW4gd2UgY2FuIGJlIGNlcnRhaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MDAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQxNTozNjo0OS4yNDA5NDgwNzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTc5ODUzNTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9FVkVOVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90cmFjZS9LY29uZmlnPTgzOT1jb25maWcgRVBST0JFX0VWRU5UU1xcbi0tXFxua2VybmVsL3RyYWNlL0tjb25maWctODUyLVxcbmtlcm5lbC90cmFjZS9LY29uZmlnOjg1Mzpjb25maWcgQlBGX0VWRU5UU1xcbmtlcm5lbC90cmFjZS9LY29uZmlnLTg1NC1cXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjUxLjkzODk0ODk1NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTI5MDg0MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiBzdW1tYXJpemluZyB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipNeSBCUEYgRnV6emluZyBTdHJhdGVneSBmb3IgVGhpcyBWZXJpZmllciBGaXgqKlxuXG5BbHJpZ2h0LCBzbyB3ZSd2ZSBnb3QgYSBwYXRjaCB0aGF0J3MgY3J1Y2lhbCDigJMgaXQncyBhZGRyZXNzaW5nIGEgYnVnIHdpdGhpbiB0aGUgQlBGIHZlcmlmaWVyIGl0c2VsZi4gU3BlY2lmaWNhbGx5LCB0aGUgdmVyaWZpZXIgd2FzIGxldHRpbmcgc2xlZXBhYmxlIEJQRiB0cmFjaW5nIHByb2dyYW1zIGF0dGFjaCB3aGVyZSB0aGV5IHNob3VsZG4ndCBiZSBhYmxlIHRvLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHZlcmlmaWVyJ3MgY29yZSBsb2dpYywgYSBjb3JyZWN0aW9uIGluIGhvdyBpdCBlbmZvcmNlcyB0aGUgcnVsZXMuICpDcnVjaWFsbHkqLCB0aGlzIG1lYW5zIHdlIGFic29sdXRlbHkgKm5lZWQqIHRvIGZ1enogdGhpcy4gQW55IGNoYW5nZSB0byB0aGUgdmVyaWZpZXIgbGlrZSB0aGlzIGNhbiBpbnRyb2R1Y2Ugc3VidGxlLCBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBmbGF3cy5cblxuTXkgcGxhbj8gV2XigJlyZSBnb2luZyB0byBiZSB0aG9yb3VnaC4gSSB3YW50IHRvIGJ1aWxkIGEgZnV6emluZyBjYW1wYWlnbiB0aGF0IHNwZWNpZmljYWxseSB0YXJnZXRzIHRoaXMgaXNzdWUuIEknbGwgZm9jdXMgb24gaW5jbHVkaW5nIGBCUEZfU1lTQ0FMTGAsIGBERUJVR19JTkZPX0JURmAsIGFuZCBgQlBGX0VWRU5UU2AgaW4gdGhlIHRlc3Qgc2V0dXAuIFRoZXNlIGFyZSBrZXkgYXJlYXMgdG8gcHJvYmUgZm9yIHNpZGUgZWZmZWN0cy4gYEJQRl9TWVNDQUxMYCB3aWxsIGhlbHAgZXhwb3NlIGVkZ2UgY2FzZXMgaW50ZXJhY3Rpbmcgd2l0aCBrZXJuZWwgY2FsbHMsIGBERUJVR19JTkZPX0JURmAgd2lsbCBoZWxwIHVuY292ZXIgaW50ZXJhY3Rpb25zIHdpdGggZGVidWcgbWV0YWRhdGEsIGFuZCBgQlBGX0VWRU5UU2AgaGVscHMgdG8gcHJvYmUgdGhlIEJQRiBFdmVudCBzdWJzeXN0ZW0uIFRoZXNlIGFyZSBhbGwgY3JpdGljYWwgYXJlYXMgd2hlcmUgQlBGIHZlcmlmaWNhdGlvbiBjYW4gYmVjb21lIGNvbXBsaWNhdGVkLlxuXG5BbmQgdG8gb3JnYW5pemUgYWxsIG9mIHRoaXMsIHRoZSBiZXN0IHRvb2wgaXMgYHNldC1yZXN1bHRzYC4gSSB3aWxsIG5lZWQgdG8gdHJhY2sgd2hhdCBraW5kIG9mIHJlc3VsdHMgd2UgZ2V0IGhlcmUsIGVzcGVjaWFsbHkgYW55IGZ1enppbmcgY3Jhc2hlcywgdW5leHBlY3RlZCBiZWhhdmlvciwgb3IsIGlkZWFsbHksIG5vdGhpbmcgYXQgYWxsIOKAkyBpbiB3aGljaCBjYXNlLCB3ZSBjYW4gY29uZmlybSB0aGUgZml4IGlzIHNvbGlkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTU3LCJPdXRwdXRUb2tlbnMiOjEyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDE1OjM2OjU2Ljg2ODAzODYyNVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NjExMzk1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBwcmV2ZW50IHNsZWVwYWJsZSB0cmFjaW5nIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkRFQlVHX0lORk9fQlRGXCIsXG4gICAgXCJCUEZfRVZFTlRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrX2F0dGFjaF90YXJnZXRcIixcbiAgICBcImJwZl9jaGVja19hdHRhY2hfYnRmX2lkX211bHRpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBwcmV2ZW50IHNsZWVwYWJsZSB0cmFjaW5nIHByb2dyYW1zIGZyb20gYXR0YWNoaW5nIHRvIG90aGVyIEJQRiBwcm9ncmFtcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowgnhxz[1] Phase: Succeeded StartedAt: 2026-07-26 15:38:00 +0000 UTC FinishedAt: 2026-07-26 15:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-26 15:38:00 +0000 UTC FinishedAt: 2026-07-26 15:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2] Phase: Succeeded StartedAt: 2026-07-26 15:38:00 +0000 UTC FinishedAt: 2026-07-26 20:09:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-26 15:38:00 +0000 UTC FinishedAt: 2026-07-26 20:09:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-26 15:38:00 +0000 UTC FinishedAt: 2026-07-26 15:38:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-26 15:38:00 +0000 UTC FinishedAt: 2026-07-26 15:38:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgnhxz/series-workflowgnhxz-convert-artifact-1234236894/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-26 15:38:10 +0000 UTC FinishedAt: 2026-07-26 16:23:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-26 15:38:10 +0000 UTC FinishedAt: 2026-07-26 16:23:08 +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:*e7a55cb6-9974-48f3-87e1-84ddd6f55576,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-workflowgnhxz/series-workflowgnhxz-convert-artifact-1234236894/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": "72a2a8ab-8d32-4ced-bd21-0b3f04451d14", "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-workflowgnhxz/series-workflowgnhxz-build-action-520951492/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-26 15:38:10 +0000 UTC FinishedAt: 2026-07-26 16:22:58 +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:*e7a55cb6-9974-48f3-87e1-84ddd6f55576,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-workflowgnhxz/series-workflowgnhxz-convert-artifact-1234236894/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": "72a2a8ab-8d32-4ced-bd21-0b3f04451d14", "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-workflowgnhxz/series-workflowgnhxz-build-action-520951492/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-26 16:23:08 +0000 UTC FinishedAt: 2026-07-26 16:23:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-26 16:23:08 +0000 UTC FinishedAt: 2026-07-26 16:23:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-26 16:23:08 +0000 UTC FinishedAt: 2026-07-26 16:23:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-26 16:23:08 +0000 UTC FinishedAt: 2026-07-26 16:23:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgnhxz/series-workflowgnhxz-convert-artifact-3395260817/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-26 16:23:18 +0000 UTC FinishedAt: 2026-07-26 16:25:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-26 16:23:18 +0000 UTC FinishedAt: 2026-07-26 16:25:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*72a2a8ab-8d32-4ced-bd21-0b3f04451d14,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-workflowgnhxz/series-workflowgnhxz-build-action-520951492/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-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-26 16:25:29 +0000 UTC FinishedAt: 2026-07-26 16:25:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-26 16:25:29 +0000 UTC FinishedAt: 2026-07-26 16:25:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-26 16:25:29 +0000 UTC FinishedAt: 2026-07-26 17:01:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-26 16:25:29 +0000 UTC FinishedAt: 2026-07-26 17:01:43 +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:*e7a55cb6-9974-48f3-87e1-84ddd6f55576,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-workflowgnhxz/series-workflowgnhxz-convert-artifact-3395260817/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": "285334c2-ec64-4f9c-b97e-0e2f95143e22", "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-workflowgnhxz/series-workflowgnhxz-build-action-2155250013/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-26 16:25:29 +0000 UTC FinishedAt: 2026-07-26 17:01:33 +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:*e7a55cb6-9974-48f3-87e1-84ddd6f55576,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-workflowgnhxz/series-workflowgnhxz-convert-artifact-3395260817/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": "285334c2-ec64-4f9c-b97e-0e2f95143e22", "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-workflowgnhxz/series-workflowgnhxz-build-action-2155250013/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-26 17:01:43 +0000 UTC FinishedAt: 2026-07-26 17:01:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-26 17:01:43 +0000 UTC FinishedAt: 2026-07-26 17:01:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-26 17:01:43 +0000 UTC FinishedAt: 2026-07-26 17:04:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-26 17:01:43 +0000 UTC FinishedAt: 2026-07-26 17:03:50 +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:*285334c2-ec64-4f9c-b97e-0e2f95143e22,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-workflowgnhxz/series-workflowgnhxz-build-action-2155250013/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-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-26 17:04:00 +0000 UTC FinishedAt: 2026-07-26 20:09:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-26 17:04:00 +0000 UTC FinishedAt: 2026-07-26 20:09:44 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"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:*72a2a8ab-8d32-4ced-bd21-0b3f04451d14,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*285334c2-ec64-4f9c-b97e-0e2f95143e22,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-workflowgnhxz/series-workflowgnhxz-build-action-520951492/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-workflowgnhxz/series-workflowgnhxz-build-action-2155250013/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-26 17:04:00 +0000 UTC FinishedAt: 2026-07-26 17:04:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-26 17:04:00 +0000 UTC FinishedAt: 2026-07-26 17:04:05 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"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-workflowgnhxz/series-workflowgnhxz-convert-artifact-861526214/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-26 17:04:00 +0000 UTC FinishedAt: 2026-07-26 17:04:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-26 17:04:00 +0000 UTC FinishedAt: 2026-07-26 17:04:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-26 17:04:00 +0000 UTC FinishedAt: 2026-07-26 17:04:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-26 17:04:10 +0000 UTC FinishedAt: 2026-07-26 20:09:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgnhxz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_check_attach_target","bpf_check_attach_btf_id_multi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2805abd089576799b15092949420e3f8ba97fabd","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","DEBUG_INFO_BTF","BPF_EVENTS"],"series_id":"bba98519-d58a-4cc2-accd-30cfb4081bf6","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-26 17:04:10 +0000 UTC FinishedAt: 2026-07-26 20:09:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*72a2a8ab-8d32-4ced-bd21-0b3f04451d14,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*285334c2-ec64-4f9c-b97e-0e2f95143e22,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-workflowgnhxz/series-workflowgnhxz-build-action-520951492/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-workflowgnhxz/series-workflowgnhxz-build-action-2155250013/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-workflowgnhxz/series-workflowgnhxz-convert-artifact-861526214/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,}