Name: series-workflowc55wv Phase: Succeeded StartedAt: 2026-08-17 11:01:20 +0000 UTC FinishedAt: 2026-08-17 12:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[0] Phase: Succeeded StartedAt: 2026-08-17 11:01:20 +0000 UTC FinishedAt: 2026-08-17 11:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[0].run-triage Phase: Succeeded StartedAt: 2026-08-17 11:01:20 +0000 UTC FinishedAt: 2026-08-17 11:53:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "02e545c4297a26dbbc41df81b831e7f605bcd306", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "02e545c4297a26dbbc41df81b831e7f605bcd306", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "8284d2dd-fd4a-4bd7-98d3-4a57f562f486" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_init_vm", "kvm_arch_destroy_vm", "kvm_riscv_local_tlb_sanitize" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX2luaXRfdm0mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfZGVzdHJveV92bSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSBpbnRlcm5hbCBUTEIgZmx1c2hpbmcgbG9naWMgYW5kIGludHJvZHVjZXMgYSBuZXcgcGVyLUNQVSB2YXJpYWJsZSBgbGFzdF92Y3B1X3JhbmAgdG8gdHJhY2sgdGhlIGxhc3QgVkNQVSB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVS4gVGhlIG1lbW9yeSBmb3IgdGhpcyB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgdXNpbmcgYGFsbG9jX3BlcmNwdShpbnQpYCBhbmQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgLTFgIGZvciBhbGwgcG9zc2libGUgQ1BVcyBpbW1lZGlhdGVseSBhZnRlciBhbGxvY2F0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBhbmQgbm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRMQiBzYW5pdGl6YXRpb24gbG9naWMgZm9yIFJJU0MtViBLVk0sIGludHJvZHVjaW5nIGEgcGVyLUNQVSB0cmFja2luZyBvZiB0aGUgbGFzdCBWQ1BVIHJhbiB0byBmbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyB1cG9uIFZDUFUgbWlncmF0aW9uIG9yIHN3aXRjaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24gcmVhY2hhYmxlIHZpYSBzdGFuZGFyZCBLVk0gaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDZlYmEyYTgwMjk2NzZkMjA5YzJhNzlmNzMxMTY5MTAwNjVmOWFiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDExOjUyOjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggMjQ1ODUzMDRjMDJiMS4uMzk2YWM2MjA5YzUwZCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtOTEsNiAmIzQzOzkxLDkgQEAgc3RydWN0IGt2bV9hcmNoIHtcbiBcdC8qIEctc3RhZ2Ugdm1pZCAqL1xuIFx0c3RydWN0IGt2bV92bWlkIHZtaWQ7XG4gXG4mIzQzO1x0LyogTGFzdCBWQ1BVIHRoYXQgcmFuIG9uIGVhY2ggcGh5c2ljYWwgQ1BVICovXG4mIzQzO1x0aW50IF9fcGVyY3B1ICpsYXN0X3ZjcHVfcmFuO1xuJiM0MztcbiBcdC8qIEctc3RhZ2UgcGFnZSB0YWJsZSAqL1xuIFx0cGdkX3QgKnBnZDtcbiBcdHBoeXNfYWRkcl90IHBnZF9waHlzO1xuQEAgLTMzMCw3ICYjNDM7MzMzLDQgQEAgYm9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9yZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuLS8qIEZsYWdzIHJlcHJlc2VudGluZyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBkZXRhaWxzICovXG4tREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xuLVxuICNlbmRpZiAvKiBfX1JJU0NWX0tWTV9IT1NUX0hfXyAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuaW5kZXggMGYzZmUzOTg2ZmMwMi4uYjFiYmMwODM1MjdjZiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG5AQCAtMTAsMjMgJiM0MzsxMCwxMCBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fbW11LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX25hY2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9zYmkuaFx1MDAzZVxuIFxuLURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xuLVxuLXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9zZXR1cF92ZW5kb3JfZmVhdHVyZXModm9pZClcbi17XG4tXHQvKiBBbmRlcyBBWDY2OiBzcGxpdCB0d28tc3RhZ2UgVExCcyAqL1xuLVx0aWYgKHJpc2N2X2NhY2hlZF9tdmVuZG9yaWQoMCkgPT0gQU5ERVNfVkVORE9SX0lEIFx1MDAyNlx1MDAyNlxuLVx0ICAgIChyaXNjdl9jYWNoZWRfbWFyY2hpZCgwKSBcdTAwMjYgMHhGRkZGKSA9PSAweDhBNjYpIHtcbi1cdFx0c3RhdGljX2JyYW5jaF9lbmFibGUoXHUwMDI2a3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XG4tXHRcdGt2bV9pbmZvKFwmIzM0O1ZTLXN0YWdlIFRMQiBkb2VzIG5vdCBjYWNoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlEXFxuXCYjMzQ7KTtcbi1cdH1cbi19XG4tXG4gbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4gXHRcdFx0dW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbiB7XG5AQCAtMTcyLDggJiM0MzsxNTksNiBAQCBzdGF0aWMgaW50IF9faW5pdCByaXNjdl9rdm1faW5pdCh2b2lkKVxuIFx0XHRrdm1faW5mbyhcJiMzNDtBSUEgYXZhaWxhYmxlIHdpdGggJWQgZ3Vlc3QgZXh0ZXJuYWwgaW50ZXJydXB0c1xcblwmIzM0OyxcbiBcdFx0XHQga3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpKTtcbiBcbi1cdGt2bV9yaXNjdl9zZXR1cF92ZW5kb3JfZmVhdHVyZXMoKTtcbi1cbiBcdGt2bV9yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xuIFxuIFx0cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbmluZGV4IGZmMWFlYWM0ZWI4ZWIuLjE1NDFkMDU5YTQyYWQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbkBAIC04LDYgJiM0Mzs4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NtcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcdTAwM2VcbkBAIC0xNjAsMTIgJiM0MzsxNjEsMTkgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZClcbiBcbiB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiYjNDM7XHRib29sIHZjcHVfbWlncmF0ZWQ7XG4mIzQzO1x0Ym9vbCB2Y3B1X3N3aXRjaGVkO1xuIFx0dW5zaWduZWQgbG9uZyB2bWlkO1xuJiM0MztcdGludCAqbGFzdF9yYW47XG4gXG4tXHRpZiAoIWt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkgfHxcbi1cdCAgICB2Y3B1LVx1MDAzZWFyY2gubGFzdF9leGl0X2NwdSA9PSB2Y3B1LVx1MDAzZWNwdSlcbiYjNDM7XHRsYXN0X3JhbiA9IHRoaXNfY3B1X3B0cih2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmxhc3RfdmNwdV9yYW4pO1xuJiM0MztcdHZjcHVfbWlncmF0ZWQgPSAodmNwdS1cdTAwM2VhcmNoLmxhc3RfZXhpdF9jcHUgIT0gdmNwdS1cdTAwM2VjcHUpO1xuJiM0MztcdHZjcHVfc3dpdGNoZWQgPSAoKmxhc3RfcmFuICE9IHZjcHUtXHUwMDNldmNwdV9pZHgpO1xuJiM0MztcdGlmICghdmNwdV9taWdyYXRlZCBcdTAwMjZcdTAwMjYgIXZjcHVfc3dpdGNoZWQpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHR2bWlkID0gUkVBRF9PTkNFKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gudm1pZC52bWlkKTtcbiYjNDM7XG4gXHQvKlxuIFx0ICogT24gUklTQy1WIHBsYXRmb3JtcyB3aXRoIGhhcmR3YXJlIFZNSUQgc3VwcG9ydCwgd2Ugc2hhcmUgc2FtZVxuIFx0ICogVk1JRCBmb3IgYWxsIFZDUFVzIG9mIGEgcGFydGljdWxhciBHdWVzdC9WTS4gVGhpcyBtZWFucyB3ZSBtaWdodFxuQEAgLTE3NiwxNiAmIzQzOzE4NCwyMyBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0ICogVG8gY2xlYW51cCBzdGFsZSBUTEIgZW50cmllcywgd2Ugc2ltcGx5IGZsdXNoIGFsbCBHLXN0YWdlIFRMQlxuIFx0ICogZW50cmllcyBieSBWTUlEIHdoZW5ldmVyIHVuZGVybHlpbmcgSG9zdCBDUFUgY2hhbmdlcyBmb3IgYSBWQ1BVLlxuIFx0ICovXG4tXG4tXHR2bWlkID0gUkVBRF9PTkNFKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gudm1pZC52bWlkKTtcbi1cdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTtcbiYjNDM7XHRpZiAodmNwdV9taWdyYXRlZCBcdTAwMjZcdTAwMjYga3ZtX3Jpc2N2X2dzdGFnZV92bWlkX2JpdHMoKSlcbiYjNDM7XHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTtcbiBcbiBcdC8qXG4tXHQgKiBGbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyBmb3IgaW1wbGVtZW50YXRpb24gd2hlcmUgVlMtc3RhZ2Vcbi1cdCAqIFRMQiBkb2VzIG5vdCBjYWhjZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlELlxuJiM0MztcdCAqIEd1ZXN0LWxvY2FsIHNmZW5jZS52bWEgb25seSBpbnZhbGlkYXRlcyBWUy1zdGFnZSB0cmFuc2xhdGlvbnMgb25cbiYjNDM7XHQgKiB0aGUgSG9zdCBDUFUgY3VycmVudGx5IGJhY2tpbmcgdGhlIFZDUFUuIElmIGEgVkNQVSBtaWdyYXRlcywgb3JcbiYjNDM7XHQgKiBpZiB0aGlzIEhvc3QgQ1BVIHN3aXRjaGVzIGJldHdlZW4gVkNQVXMgb2YgdGhlIHNhbWUgVk0sIHN0YWxlXG4mIzQzO1x0ICogVlMtc3RhZ2UgZW50cmllcyBjYW4gYmUgbGVmdCBiZWhpbmQgb24gYSBIb3N0IENQVSB0aGF0IG1pc3NlZCBhXG4mIzQzO1x0ICogZ3Vlc3QtbG9jYWwgZmx1c2guIEZsdXNoIHRoZSBjdXJyZW50IENQVSYjMzk7cyBWUy1zdGFnZSBjb250ZXh0IGJlZm9yZVxuJiM0MztcdCAqIGVudGVyaW5nIHRoZSBndWVzdC5cbiBcdCAqL1xuLVx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2a3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSkpXG4mIzQzO1x0aWYgKGt2bV9yaXNjdl9uYWNsX2F2YWlsYWJsZSgpKVxuJiM0MztcdFx0bmFjbF9oZmVuY2VfdnZtYV9hbGwobmFjbF9zaG1lbSgpLCB2bWlkKTtcbiYjNDM7XHRlbHNlXG4gXHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodm1pZCk7XG4mIzQzO1xuJiM0MztcdCpsYXN0X3JhbiA9IHZjcHUtXHUwMDNldmNwdV9pZHg7XG4gfVxuIFxuIHZvaWQga3ZtX3Jpc2N2X2ZlbmNlX2lfcHJvY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdm0uYyBiL2FyY2gvcmlzY3Yva3ZtL3ZtLmNcbmluZGV4IDEzYzYzYWUxYTc4YjIuLjI5MDcyMThhMWNmNWQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92bS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92bS5jXG5AQCAtOSw2ICYjNDM7OSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9tbXUuaFx1MDAzZVxuQEAgLTMwLDcgJiM0MzszMSw5IEBAIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfaGVhZGVyIGt2bV92bV9zdGF0c19oZWFkZXIgPSB7XG4gXG4gaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4ge1xuJiM0MztcdGludCAqbGFzdF9yYW47XG4gXHRpbnQgcjtcbiYjNDM7XHRpbnQgY3B1O1xuIFxuIFx0ciA9IGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkKGt2bSk7XG4gXHRpZiAocilcbkBAIC00Miw2ICYjNDM7NDUsMTcgQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4gXHRcdHJldHVybiByO1xuIFx0fVxuIFxuJiM0MztcdGt2bS1cdTAwM2VhcmNoLmxhc3RfdmNwdV9yYW4gPSBhbGxvY19wZXJjcHUoaW50KTtcbiYjNDM7XHRpZiAoIWt2bS1cdTAwM2VhcmNoLmxhc3RfdmNwdV9yYW4pIHtcbiYjNDM7XHRcdGt2bV9yaXNjdl9tbXVfZnJlZV9wZ2Qoa3ZtKTtcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkge1xuJiM0MztcdFx0bGFzdF9yYW4gPSBwZXJfY3B1X3B0cihrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuLCBjcHUpO1xuJiM0MztcdFx0Kmxhc3RfcmFuID0gLTE7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGt2bV9yaXNjdl9haWFfaW5pdF92bShrdm0pO1xuIFxuIFx0a3ZtX3Jpc2N2X2d1ZXN0X3RpbWVyX2luaXQoa3ZtKTtcbkBAIC01NCw2ICYjNDM7NjgsOCBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxuIFx0a3ZtX2Rlc3Ryb3lfdmNwdXMoa3ZtKTtcbiBcbiBcdGt2bV9yaXNjdl9haWFfZGVzdHJveV92bShrdm0pO1xuJiM0MztcbiYjNDM7XHRmcmVlX3BlcmNwdShrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKTtcbiB9XG4gXG4gaW50IGt2bV92bV9pb2N0bF9pcnFfbGluZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxX2xldmVsICppcnFsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF9pbml0X3ZtJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX2Rlc3Ryb3lfdm0mIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVExCIHNhbml0aXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIEtWTSwgaW50cm9kdWNpbmcgYSBwZXItQ1BVIHRyYWNraW5nIG9mIHRoZSBsYXN0IFZDUFUgcmFuIHRvIGZsdXNoIFZTLXN0YWdlIFRMQiBlbnRyaWVzIHVwb24gVkNQVSBtaWdyYXRpb24gb3Igc3dpdGNoaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgUklTQy1WIEtWTSBpbXBsZW1lbnRhdGlvbiByZWFjaGFibGUgdmlhIHN0YW5kYXJkIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNmViYTJhODAyOTY3NmQyMDljMmE3OWY3MzExNjkxMDA2NWY5YWJkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMTE6NTI6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggMjQ1ODUzMDRjMDJiMS4uMzk2YWM2MjA5YzUwZCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtOTEsNiAmIzQzOzkxLDkgQEAgc3RydWN0IGt2bV9hcmNoIHsKIAkvKiBHLXN0YWdlIHZtaWQgKi8KIAlzdHJ1Y3Qga3ZtX3ZtaWQgdm1pZDsKIAomIzQzOwkvKiBMYXN0IFZDUFUgdGhhdCByYW4gb24gZWFjaCBwaHlzaWNhbCBDUFUgKi8KJiM0MzsJaW50IF9fcGVyY3B1ICpsYXN0X3ZjcHVfcmFuOwomIzQzOwogCS8qIEctc3RhZ2UgcGFnZSB0YWJsZSAqLwogCXBnZF90ICpwZ2Q7CiAJcGh5c19hZGRyX3QgcGdkX3BoeXM7CkBAIC0zMzAsNyAmIzQzOzMzMyw0IEBAIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCiB2b2lkIGt2bV9yaXNjdl92Y3B1X3JlY29yZF9zdGVhbF90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKLS8qIEZsYWdzIHJlcHJlc2VudGluZyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBkZXRhaWxzICovCi1ERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7Ci0KICNlbmRpZiAvKiBfX1JJU0NWX0tWTV9IT1NUX0hfXyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jCmluZGV4IDBmM2ZlMzk4NmZjMDIuLmIxYmJjMDgzNTI3Y2YgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKQEAgLTEwLDIzICYjNDM7MTAsMTAgQEAKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwotI2luY2x1ZGUgJmx0O2FzbS9jcHVmZWF0dXJlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2t2bV9tbXUuaCZndDsKICNpbmNsdWRlICZsdDthc20va3ZtX25hY2wuaCZndDsKICNpbmNsdWRlICZsdDthc20vc2JpLmgmZ3Q7CiAKLURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpOwotCi1zdGF0aWMgdm9pZCBrdm1fcmlzY3Zfc2V0dXBfdmVuZG9yX2ZlYXR1cmVzKHZvaWQpCi17Ci0JLyogQW5kZXMgQVg2Njogc3BsaXQgdHdvLXN0YWdlIFRMQnMgKi8KLQlpZiAocmlzY3ZfY2FjaGVkX212ZW5kb3JpZCgwKSA9PSBBTkRFU19WRU5ET1JfSUQgJmFtcDsmYW1wOwotCSAgICAocmlzY3ZfY2FjaGVkX21hcmNoaWQoMCkgJmFtcDsgMHhGRkZGKSA9PSAweDhBNjYpIHsKLQkJc3RhdGljX2JyYW5jaF9lbmFibGUoJmFtcDtrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKTsKLQkJa3ZtX2luZm8oJiMzNDtWUy1zdGFnZSBUTEIgZG9lcyBub3QgY2FjaGUgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBhbmQgVk1JRFxuJiMzNDspOwotCX0KLX0KLQogbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsCiAJCQl1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKQogewpAQCAtMTcyLDggJiM0MzsxNTksNiBAQCBzdGF0aWMgaW50IF9faW5pdCByaXNjdl9rdm1faW5pdCh2b2lkKQogCQlrdm1faW5mbygmIzM0O0FJQSBhdmFpbGFibGUgd2l0aCAlZCBndWVzdCBleHRlcm5hbCBpbnRlcnJ1cHRzXG4mIzM0OywKIAkJCSBrdm1fcmlzY3ZfYWlhX25yX2hnZWkpOwogCi0Ja3ZtX3Jpc2N2X3NldHVwX3ZlbmRvcl9mZWF0dXJlcygpOwotCiAJa3ZtX3JlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7CiAKIAlyYyA9IGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS90bGIuYyBiL2FyY2gvcmlzY3Yva3ZtL3RsYi5jCmluZGV4IGZmMWFlYWM0ZWI4ZWIuLjE1NDFkMDU5YTQyYWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3RsYi5jCkBAIC04LDYgJiM0Mzs4LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9lcnJuby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vyci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zbXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9jYWNoZWZsdXNoLmgmZ3Q7CkBAIC0xNjAsMTIgJiM0MzsxNjEsMTkgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZCkKIAogdm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKJiM0MzsJYm9vbCB2Y3B1X21pZ3JhdGVkOwomIzQzOwlib29sIHZjcHVfc3dpdGNoZWQ7CiAJdW5zaWduZWQgbG9uZyB2bWlkOwomIzQzOwlpbnQgKmxhc3RfcmFuOwogCi0JaWYgKCFrdm1fcmlzY3ZfZ3N0YWdlX3ZtaWRfYml0cygpIHx8Ci0JICAgIHZjcHUtJmd0O2FyY2gubGFzdF9leGl0X2NwdSA9PSB2Y3B1LSZndDtjcHUpCiYjNDM7CWxhc3RfcmFuID0gdGhpc19jcHVfcHRyKHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuKTsKJiM0MzsJdmNwdV9taWdyYXRlZCA9ICh2Y3B1LSZndDthcmNoLmxhc3RfZXhpdF9jcHUgIT0gdmNwdS0mZ3Q7Y3B1KTsKJiM0MzsJdmNwdV9zd2l0Y2hlZCA9ICgqbGFzdF9yYW4gIT0gdmNwdS0mZ3Q7dmNwdV9pZHgpOwomIzQzOwlpZiAoIXZjcHVfbWlncmF0ZWQgJmFtcDsmYW1wOyAhdmNwdV9zd2l0Y2hlZCkKIAkJcmV0dXJuOwogCiYjNDM7CXZtaWQgPSBSRUFEX09OQ0UodmNwdS0mZ3Q7a3ZtLSZndDthcmNoLnZtaWQudm1pZCk7CiYjNDM7CiAJLyoKIAkgKiBPbiBSSVNDLVYgcGxhdGZvcm1zIHdpdGggaGFyZHdhcmUgVk1JRCBzdXBwb3J0LCB3ZSBzaGFyZSBzYW1lCiAJICogVk1JRCBmb3IgYWxsIFZDUFVzIG9mIGEgcGFydGljdWxhciBHdWVzdC9WTS4gVGhpcyBtZWFucyB3ZSBtaWdodApAQCAtMTc2LDE2ICYjNDM7MTg0LDIzIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJICogVG8gY2xlYW51cCBzdGFsZSBUTEIgZW50cmllcywgd2Ugc2ltcGx5IGZsdXNoIGFsbCBHLXN0YWdlIFRMQgogCSAqIGVudHJpZXMgYnkgVk1JRCB3aGVuZXZlciB1bmRlcmx5aW5nIEhvc3QgQ1BVIGNoYW5nZXMgZm9yIGEgVkNQVS4KIAkgKi8KLQotCXZtaWQgPSBSRUFEX09OQ0UodmNwdS0mZ3Q7a3ZtLSZndDthcmNoLnZtaWQudm1pZCk7Ci0Ja3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpOwomIzQzOwlpZiAodmNwdV9taWdyYXRlZCAmYW1wOyZhbXA7IGt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkpCiYjNDM7CQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7CiAKIAkvKgotCSAqIEZsdXNoIFZTLXN0YWdlIFRMQiBlbnRyaWVzIGZvciBpbXBsZW1lbnRhdGlvbiB3aGVyZSBWUy1zdGFnZQotCSAqIFRMQiBkb2VzIG5vdCBjYWhjZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlELgomIzQzOwkgKiBHdWVzdC1sb2NhbCBzZmVuY2Uudm1hIG9ubHkgaW52YWxpZGF0ZXMgVlMtc3RhZ2UgdHJhbnNsYXRpb25zIG9uCiYjNDM7CSAqIHRoZSBIb3N0IENQVSBjdXJyZW50bHkgYmFja2luZyB0aGUgVkNQVS4gSWYgYSBWQ1BVIG1pZ3JhdGVzLCBvcgomIzQzOwkgKiBpZiB0aGlzIEhvc3QgQ1BVIHN3aXRjaGVzIGJldHdlZW4gVkNQVXMgb2YgdGhlIHNhbWUgVk0sIHN0YWxlCiYjNDM7CSAqIFZTLXN0YWdlIGVudHJpZXMgY2FuIGJlIGxlZnQgYmVoaW5kIG9uIGEgSG9zdCBDUFUgdGhhdCBtaXNzZWQgYQomIzQzOwkgKiBndWVzdC1sb2NhbCBmbHVzaC4gRmx1c2ggdGhlIGN1cnJlbnQgQ1BVJiMzOTtzIFZTLXN0YWdlIGNvbnRleHQgYmVmb3JlCiYjNDM7CSAqIGVudGVyaW5nIHRoZSBndWVzdC4KIAkgKi8KLQlpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgmYW1wO2t2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpKQomIzQzOwlpZiAoa3ZtX3Jpc2N2X25hY2xfYXZhaWxhYmxlKCkpCiYjNDM7CQluYWNsX2hmZW5jZV92dm1hX2FsbChuYWNsX3NobWVtKCksIHZtaWQpOwomIzQzOwllbHNlCiAJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodm1pZCk7CiYjNDM7CiYjNDM7CSpsYXN0X3JhbiA9IHZjcHUtJmd0O3ZjcHVfaWR4OwogfQogCiB2b2lkIGt2bV9yaXNjdl9mZW5jZV9pX3Byb2Nlc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdm0uYyBiL2FyY2gvcmlzY3Yva3ZtL3ZtLmMKaW5kZXggMTNjNjNhZTFhNzhiMi4uMjkwNzIxOGExY2Y1ZCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92bS5jCkBAIC05LDYgJiM0Mzs5LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9lcnJuby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vyci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91YWNjZXNzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva3ZtX2hvc3QuaCZndDsKICNpbmNsdWRlICZsdDthc20va3ZtX21tdS5oJmd0OwpAQCAtMzAsNyAmIzQzOzMxLDkgQEAgY29uc3Qgc3RydWN0IGt2bV9zdGF0c19oZWFkZXIga3ZtX3ZtX3N0YXRzX2hlYWRlciA9IHsKIAogaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpCiB7CiYjNDM7CWludCAqbGFzdF9yYW47CiAJaW50IHI7CiYjNDM7CWludCBjcHU7CiAKIAlyID0ga3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2Qoa3ZtKTsKIAlpZiAocikKQEAgLTQyLDYgJiM0Mzs0NSwxNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSkKIAkJcmV0dXJuIHI7CiAJfQogCiYjNDM7CWt2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuID0gYWxsb2NfcGVyY3B1KGludCk7CiYjNDM7CWlmICgha3ZtLSZndDthcmNoLmxhc3RfdmNwdV9yYW4pIHsKJiM0MzsJCWt2bV9yaXNjdl9tbXVfZnJlZV9wZ2Qoa3ZtKTsKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwl9CiYjNDM7CiYjNDM7CWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsKJiM0MzsJCWxhc3RfcmFuID0gcGVyX2NwdV9wdHIoa3ZtLSZndDthcmNoLmxhc3RfdmNwdV9yYW4sIGNwdSk7CiYjNDM7CQkqbGFzdF9yYW4gPSAtMTsKJiM0MzsJfQomIzQzOwogCWt2bV9yaXNjdl9haWFfaW5pdF92bShrdm0pOwogCiAJa3ZtX3Jpc2N2X2d1ZXN0X3RpbWVyX2luaXQoa3ZtKTsKQEAgLTU0LDYgJiM0Mzs2OCw4IEBAIHZvaWQga3ZtX2FyY2hfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pCiAJa3ZtX2Rlc3Ryb3lfdmNwdXMoa3ZtKTsKIAogCWt2bV9yaXNjdl9haWFfZGVzdHJveV92bShrdm0pOwomIzQzOwomIzQzOwlmcmVlX3BlcmNwdShrdm0tJmd0O2FyY2gubGFzdF92Y3B1X3Jhbik7CiB9CiAKIGludCBrdm1fdm1faW9jdGxfaXJxX2xpbmUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycV9sZXZlbCAqaXJxbCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI2MQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDQxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGlzIFJJU0MtViBLVk0gUGF0Y2ggU2VyaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggc2VyaWVzICpkb2VzKiBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBSSVNDLVYgS1ZNIGtlcm5lbCBjb2RlLCBtZWFuaW5nIGl0JiMzOTtzIHByaW1lIGZvciBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkIGluIGBhcmNoL3Jpc2N2L2t2bWAgYW5kIHJldm9sdmUgYXJvdW5kIFRMQiBzYW5pdGl6YXRpb24g4oCTIHNwZWNpZmljYWxseSBob3cgd2UgaGFuZGxlIFZpcnR1YWwgU3RhZ2UgKFZTKSBUTEIgZW50cmllcyBvbiBSSVNDLVYuCgpUaGUgbWVhdCBvZiBpdCBpcyB0aGUgYWRkaXRpb24gb2YgdGhpcyBgbGFzdF92Y3B1X3JhbmAgcGVyY3B1IHZhcmlhYmxlIHdpdGhpbiBga3ZtX2FyY2hgLiBUaGlzIGxldHMgdXMgdHJhY2sgdGhlIG1vc3QgcmVjZW50IFZDUFUgdG8gZXhlY3V0ZSBvbiBlYWNoIHBoeXNpY2FsIENQVSwgd2hpY2ggaXMgZnVuZGFtZW50YWwgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSBoYXMgYmVlbiBhbnkgbWlncmF0aW9uLiBBbmQsIGltcG9ydGFudGx5LCBpZiB0aGVyZSBoYXMgYmVlbiBtaWdyYXRpb24sIHdlIGZsdXNoIHRoZSBWUy1zdGFnZSBUTEIgZW50cmllcy4gSXQgYWxzbyBtZWFucyB3ZSYjMzk7dmUgZHJvcHBlZCB0aGUgQW5kZXMtc3BlY2lmaWMgZmVhdHVyZXMgcmVsYXRlZCB0byBUTEIgZmx1c2hpbmcuCgpGdW5jdGlvbmFsbHksIHRoaXMgbWVhbnMgdGhlIFRMQiBpbnZhbGlkYXRpb24gc3RyYXRlZ3kgY2hhbmdlZCBpbiBLVk0sIHdoaWNoIGlzIGEgY29yZSBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5IGZvciBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBjaGFuZ2UgaXMgc2lnbmlmaWNhbnQgZW5vdWdoIHRvIHdhcnJhbnQgZnV6emluZyBhdHRlbnRpb24uIFRlc3RpbmcgS1ZNIG9uIFJJU0MtViBpcyBkb2FibGUgd2l0aCBRRU1VLCBzbyB0aGF0JiMzOTtzIGEgY2hlY2sgaW4gdGhlICYjMzQ7eWVzLCBpdCYjMzk7cyByZWFjaGFibGUmIzM0OyBib3guIFRodXMsIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcGFydDogd2hhdCBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkPyBXZSBuZWVkIHRvIHRhcmdldCB0aGUgZnV6emluZyBlZmZvcnRzLiBUaGUgYWZmZWN0ZWQgZnVuY3Rpb25zIGFyZTogYGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVgLCBga3ZtX2FyY2hfaW5pdF92bWAsIGFuZCBga3ZtX2FyY2hfZGVzdHJveV92bWAuIE5vdywgSSB3YW50IHRvIGNvbmZpcm0gd2hlcmUgYGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVgIGlzIGNhbGxlZCB0byBlbnN1cmUgd2UgY2FuIGJ1aWxkIHRoZSBhcHByb3ByaWF0ZSB0ZXN0IGNvdmVyYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdGxiLmg9NTE9dm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZCk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV90bGIuaDo1Mjp2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3RsYi5oLTUzLVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3RsYi5jPTE1MT12b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodW5zaWduZWQgbG9uZyB2bWlkKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTE2MS1cbmFyY2gvcmlzY3Yva3ZtL3RsYi5jOjE2Mjp2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMTYzLXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9ODY0PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTk3MC1cdFx0ICovXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6OTcxOlx0XHRrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHZjcHUpO1xuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTk3Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDM4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEtWTS9SSVNDLVYgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkgbmVlZCB0byBpZGVudGlmeSBzdWl0YWJsZSBlbnRyeSBwb2ludHMgd2l0aGluIHRoZSBSSVNDLVYgS1ZNIGNvZGUsIHNwZWNpZmljYWxseSBhdm9pZGluZyBob3QtcGF0aCBmdW5jdGlvbnMgdG8ga2VlcCB0aGUgdGVzdGluZyBkaXN0cmlidXRpb24gZmFpci4gVGhlIHByb21wdCYjMzk7cyBlbXBoYXNpcyBvbiBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgaXMga2V5IGhlcmUuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAsIGJlY2F1c2UgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiBWQ1BVIGV4ZWN1dGlvbiDigJMgdGhlIGBLVk1fUlVOYCBpb2N0bCBoYW5kbGVyLiBBbmQgdGhlbiBJIHJlbWVtYmVyZWQsICYjMzQ7YXZvaWQgaG90IHBhdGhzISYjMzQ7IFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgbG9vcCBmb3IgZXhlY3V0aW9uLCB3aGljaCB3aWxsIHNrZXcgYW55IGRpc3RyaWJ1dGlvbi4gYGt2bV9hcmNoX2luaXRfdm1gIGFuZCBga3ZtX2FyY2hfZGVzdHJveV92bWAgYXJlIGRlZmluaXRlbHkgc2FmZSwgYnV0IGFyZSB0aGV5IHRoZSBvbmx5IG9wdGlvbnM/CgpUaGUgcHJvbXB0IGRpZCBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gSSBsb29rZWQgYXQgYGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVgIGlzIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIFRoYXQgc2hvdWxkIGJlIGdvb2QhIEl0JiMzOTtzIG5vdCBzdGF0aWMgYW5kIG5vdCBpbmxpbmVkLgoKVGltZSB0byBsb29rIGluIEtjb25maWcgYW5kIGNoZWNrIGZvciBSSVNDLVYgS1ZNLXJlbGF0ZWQgZW50cnkgcG9pbnRzIGFuZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMjcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBLVk0gb24gUklTQy1WIEtjb25maWcqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEtWTSBvbiBSSVNDLVYuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBhcmNoaXRlY3R1cmFsIGxhbmRzY2FwZSBhbmQgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFuZCBmdW5jdGlvbmFsaXRpZXMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGUgS2NvbmZpZyBzeXN0ZW0uIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ2VuZXJpYyBLVk0gb3B0aW9ucyBhbmQgdGhlIFJJU0MtViBzcGVjaWZpYyBvbmVzLiBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHRoaW5ncyBsaWtlIHRoZSB2aXJ0dWFsIG1hY2hpbmUgZXh0ZW5zaW9ucyAoVk1FKSwgYW55IGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQgc3BlY2lmaWMgdG8gUklTQy1WIGltcGxlbWVudGF0aW9ucyBJIGFtIGZhbWlsaWFyIHdpdGgsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGRpZmZlcmVudCBwcml2aWxlZ2UgbGV2ZWxzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5JiMzOTt2ZSBoYW5kbGVkIHRoZSB2YXJpb3VzIHByaXZpbGVnZSBsZXZlbHMgdG9vLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgY29kZSBoYW5kbGVzIHRoaW5ncyBsaWtlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvciBtZW1vcnkgbWFuYWdlbWVudCBpbiBnZW5lcmFsLCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSYjMzk7bGwgbmVlZCB0byBjb3JyZWxhdGUgdGhlIEtjb25maWcgb3B0aW9ucyB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjb2RlIHRvIGRldmVsb3AgYSBzb2xpZCBtZW50YWwgbW9kZWwuIExldCYjMzk7cyBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBLVk0gY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRzb3VyY2UgXCYjMzQ7dmlydC9rdm0vS2NvbmZpZ1wmIzM0O1xuICAgNzpcdFxuICAgODpcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cbiAgIDk6XHRcdGJvb2wgXCYjMzQ7VmlydHVhbGl6YXRpb25cJiMzNDtcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW5cbiAgMTI6XHRcdCAgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXG4gIDEzOlx0XHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmRcbiAgMTY6XHRcdCAgZGlzYWJsZWQuXG4gIDE3Olx0XG4gIDE4Olx0aWYgVklSVFVBTElaQVRJT05cbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgS1ZNXG4gIDIxOlx0XHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gUklTQ1ZfU0JJIFx1MDAyNlx1MDAyNiBNTVVcbiAgMjM6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXG4gIDI0Olx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcbiAgMjU6XHRcdHNlbGVjdCBIQVZFX0tWTV9NU0lcbiAgMjY6XHRcdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cbiAgMjc6XHRcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcbiAgMjg6XHRcdHNlbGVjdCBLVk1fQ09NTU9OXG4gIDI5Olx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG4gIDMwOlx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcbiAgMzE6XHRcdHNlbGVjdCBLVk1fTU1JT1xuICAzMjpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDMzOlx0XHRzZWxlY3QgU0NIRURfSU5GT1xuICAzNDpcdFx0c2VsZWN0IEdVRVNUX1BFUkZfRVZFTlRTIGlmIFBFUkZfRVZFTlRTXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFN1cHBvcnQgaG9zdGluZyB2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcy5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMzk6XHRcbiAgNDA6XHRlbmRpZiAjIFZJUlRVQUxJWkFUSU9OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAyMgoJCQkJCQkJb3V0cHV0OiAxMzkKCQkJCQkJCXRob3VnaHRzOiAzNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUklTQy1WIEtWTSBDb25maWd1cmF0aW9uIGFuZCBSZWxldmFudCBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gYmVzdCBjb25maWd1cmUgYW5kIGFuYWx5emUgdGhpcyBSSVNDLVYgS1ZNIGNvZGUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSBJIG5lZWQgdG8gZW5hYmxlIGlzIGBLVk1gIGl0c2VsZi4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgdGhlIGNvcmUuIGBLVk1gIGhpbmdlcyBvbiBgVklSVFVBTElaQVRJT05gLCBgUklTQ1ZfU0JJYCwgYW5kIGBNTVVgLCBzbyB0aG9zZSBhcmUgbGlrZWx5IHByZXJlcXVpc2l0ZXMsIHRob3VnaCBJIGRvbiYjMzk7dCBuZWVkIHRvIGV4cGxpY2l0bHkgbGlzdCB0aGVtIHNpbmNlIGVuYWJsaW5nIGBLVk1gIHNob3VsZCB0YWtlIGNhcmUgb2YgdGhhdC4KCk5vdywgbGV0JiMzOTtzIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBCYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24sIGFuZCBteSBrbm93bGVkZ2Ugb2YgS1ZNLCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIHN0YW5kYXJkIEtWTSBBUEkgY2FsbHMgbGlrZSBga3ZtX2FyY2hfaW5pdF92bWAgYW5kIGBrdm1fYXJjaF9kZXN0cm95X3ZtYC4gVGhlc2UgYXJlIHRoZSBmb3VuZGF0aW9uYWwgc2V0dXAgYW5kIHRlYXJkb3duIHBvaW50cyBmb3IgYSBWTS4gVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYCBiZWluZyBzcGVjaWZpYyB0byBSSVNDLVYgS1ZNLCBhbmQgaXQmIzM5O3MgdGhlIHRhcmdldCBvZiB0aGUgcGF0Y2ggc28gdGhhdCBzaG91bGQgZGVmaW5pdGVseSBiZSBvbiB0aGUgbGlzdC4gU28sIEkmIzM5O2xsIGRlZmluaXRlbHkgbGlzdDogYGt2bV9hcmNoX2luaXRfdm1gLCBga3ZtX2FyY2hfZGVzdHJveV92bWAsIGFuZCBga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZWAuCgpMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZWAgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIEFoLCB5ZXMsIGl0JiMzOTtzIGdsb2JhbCAobm9uLXN0YXRpYykgaW4gYGFyY2gvcmlzY3Yva3ZtL3RsYi5jYCwgc28gaXQmIzM5O3MgcmVhZGlseSBhY2Nlc3NpYmxlLiBga3ZtX2FyY2hfaW5pdF92bWAgYW5kIGBrdm1fYXJjaF9kZXN0cm95X3ZtYCBhcmUgaW4gYGFyY2gvcmlzY3Yva3ZtL3ZtLmNgLgoKV2l0aCB0aGlzIGluIG1pbmQsIEkgd2lsbCBzZXQgdGhlc2UgY29uZmlndXJhdGlvbnMgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGlzIGFzIHRob3JvdWdoIGFzIHBvc3NpYmxlOgoKKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYAoqICAgKipGb2N1c1N5bWJvbHMqKjogYFsmIzM0O2t2bV9hcmNoX2luaXRfdm0mIzM0OywgJiMzNDtrdm1fYXJjaF9kZXN0cm95X3ZtJiMzNDssICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZSYjMzQ7XWAKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgWyYjMzQ7S1ZNJiMzNDtdYAoKVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIFRMQiBzYW5pdGl6YXRpb24gd2l0aGluIHRoZSBSSVNDLVYgS1ZNLiBUaGUgY2hhbmdlIHNlZW1zIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgS1ZNIGlvY3Rscy4gVGhlIGdvYWwgaGVyZSBpcyB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGVzZSBrZXkgS1ZNIGZ1bmN0aW9ucyB3aGVuIGEgVkNQVSBtaWdyYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX2luaXRfdm0mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfZGVzdHJveV92bSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUTEIgc2FuaXRpemF0aW9uIGxvZ2ljIGZvciBSSVNDLVYgS1ZNLCBpbnRyb2R1Y2luZyBhIHBlci1DUFUgdHJhY2tpbmcgb2YgdGhlIGxhc3QgVkNQVSByYW4gdG8gZmx1c2ggVlMtc3RhZ2UgVExCIGVudHJpZXMgdXBvbiBWQ1BVIG1pZ3JhdGlvbiBvciBzd2l0Y2hpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9kZXN0cm95X3ZtJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRMQiBzYW5pdGl6YXRpb24gbG9naWMgZm9yIFJJU0MtViBLVk0sIGludHJvZHVjaW5nIGEgcGVyLUNQVSB0cmFja2luZyBvZiB0aGUgbGFzdCBWQ1BVIHJhbiB0byBmbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyB1cG9uIFZDUFUgbWlncmF0aW9uIG9yIHN3aXRjaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24gcmVhY2hhYmxlIHZpYSBzdGFuZGFyZCBLVk0gaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxMTo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFJJU0MtViBLVk0gaW50ZXJuYWwgVExCIGZsdXNoaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IHBlci1DUFUgdmFyaWFibGUgYGxhc3RfdmNwdV9yYW5gIHRvIHRyYWNrIHRoZSBsYXN0IFZDUFUgdGhhdCByYW4gb24gZWFjaCBwaHlzaWNhbCBDUFUuIFRoZSBtZW1vcnkgZm9yIHRoaXMgdmFyaWFibGUgaXMgYWxsb2NhdGVkIHVzaW5nIGBhbGxvY19wZXJjcHUoaW50KWAgYW5kIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYC0xYCBmb3IgYWxsIHBvc3NpYmxlIENQVXMgaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsb2NhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgZGVmYXVsdCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA2ZWJhMmE4MDI5Njc2ZDIwOWMyYTc5ZjczMTE2OTEwMDY1ZjlhYmQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAxMTo1MjozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCAyNDU4NTMwNGMwMmIxLi4zOTZhYzYyMDljNTBkIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC05MSw2ICYjNDM7OTEsOSBAQCBzdHJ1Y3Qga3ZtX2FyY2ggewogCS8qIEctc3RhZ2Ugdm1pZCAqLwogCXN0cnVjdCBrdm1fdm1pZCB2bWlkOwogCiYjNDM7CS8qIExhc3QgVkNQVSB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVSAqLwomIzQzOwlpbnQgX19wZXJjcHUgKmxhc3RfdmNwdV9yYW47CiYjNDM7CiAJLyogRy1zdGFnZSBwYWdlIHRhYmxlICovCiAJcGdkX3QgKnBnZDsKIAlwaHlzX2FkZHJfdCBwZ2RfcGh5czsKQEAgLTMzMCw3ICYjNDM7MzMzLDQgQEAgYm9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIAotLyogRmxhZ3MgcmVwcmVzZW50aW5nIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGRldGFpbHMgKi8KLURFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKTsKLQogI2VuZGlmIC8qIF9fUklTQ1ZfS1ZNX0hPU1RfSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKaW5kZXggMGYzZmUzOTg2ZmMwMi4uYjFiYmMwODM1MjdjZiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uYwpAQCAtMTAsMjMgJiM0MzsxMCwxMCBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vyci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2t2bV9ob3N0LmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7YXNtL2NwdWZlYXR1cmUuaCZndDsKICNpbmNsdWRlICZsdDthc20va3ZtX21tdS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9rdm1fbmFjbC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9zYmkuaCZndDsKIAotREVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7Ci0KLXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9zZXR1cF92ZW5kb3JfZmVhdHVyZXModm9pZCkKLXsKLQkvKiBBbmRlcyBBWDY2OiBzcGxpdCB0d28tc3RhZ2UgVExCcyAqLwotCWlmIChyaXNjdl9jYWNoZWRfbXZlbmRvcmlkKDApID09IEFOREVTX1ZFTkRPUl9JRCAmYW1wOyZhbXA7Ci0JICAgIChyaXNjdl9jYWNoZWRfbWFyY2hpZCgwKSAmYW1wOyAweEZGRkYpID09IDB4OEE2NikgewotCQlzdGF0aWNfYnJhbmNoX2VuYWJsZSgmYW1wO2t2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpOwotCQlrdm1faW5mbygmIzM0O1ZTLXN0YWdlIFRMQiBkb2VzIG5vdCBjYWNoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlEXG4mIzM0Oyk7Ci0JfQotfQotCiBsb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwKIAkJCXVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpCiB7CkBAIC0xNzIsOCAmIzQzOzE1OSw2IEBAIHN0YXRpYyBpbnQgX19pbml0IHJpc2N2X2t2bV9pbml0KHZvaWQpCiAJCWt2bV9pbmZvKCYjMzQ7QUlBIGF2YWlsYWJsZSB3aXRoICVkIGd1ZXN0IGV4dGVybmFsIGludGVycnVwdHNcbiYjMzQ7LAogCQkJIGt2bV9yaXNjdl9haWFfbnJfaGdlaSk7CiAKLQlrdm1fcmlzY3Zfc2V0dXBfdmVuZG9yX2ZlYXR1cmVzKCk7Ci0KIAlrdm1fcmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTsKIAogCXJjID0ga3ZtX2luaXQoc2l6ZW9mKHN0cnVjdCBrdm1fdmNwdSksIDAsIFRISVNfTU9EVUxFKTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmMKaW5kZXggZmYxYWVhYzRlYjhlYi4uMTU0MWQwNTlhNDJhZCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vdGxiLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdGxiLmMKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NtcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2t2bV9ob3N0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2NhY2hlZmx1c2guaCZndDsKQEAgLTE2MCwxMiAmIzQzOzE2MSwxOSBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodW5zaWduZWQgbG9uZyB2bWlkKQogCiB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewomIzQzOwlib29sIHZjcHVfbWlncmF0ZWQ7CiYjNDM7CWJvb2wgdmNwdV9zd2l0Y2hlZDsKIAl1bnNpZ25lZCBsb25nIHZtaWQ7CiYjNDM7CWludCAqbGFzdF9yYW47CiAKLQlpZiAoIWt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkgfHwKLQkgICAgdmNwdS0mZ3Q7YXJjaC5sYXN0X2V4aXRfY3B1ID09IHZjcHUtJmd0O2NwdSkKJiM0MzsJbGFzdF9yYW4gPSB0aGlzX2NwdV9wdHIodmNwdS0mZ3Q7a3ZtLSZndDthcmNoLmxhc3RfdmNwdV9yYW4pOwomIzQzOwl2Y3B1X21pZ3JhdGVkID0gKHZjcHUtJmd0O2FyY2gubGFzdF9leGl0X2NwdSAhPSB2Y3B1LSZndDtjcHUpOwomIzQzOwl2Y3B1X3N3aXRjaGVkID0gKCpsYXN0X3JhbiAhPSB2Y3B1LSZndDt2Y3B1X2lkeCk7CiYjNDM7CWlmICghdmNwdV9taWdyYXRlZCAmYW1wOyZhbXA7ICF2Y3B1X3N3aXRjaGVkKQogCQlyZXR1cm47CiAKJiM0MzsJdm1pZCA9IFJFQURfT05DRSh2Y3B1LSZndDtrdm0tJmd0O2FyY2gudm1pZC52bWlkKTsKJiM0MzsKIAkvKgogCSAqIE9uIFJJU0MtViBwbGF0Zm9ybXMgd2l0aCBoYXJkd2FyZSBWTUlEIHN1cHBvcnQsIHdlIHNoYXJlIHNhbWUKIAkgKiBWTUlEIGZvciBhbGwgVkNQVXMgb2YgYSBwYXJ0aWN1bGFyIEd1ZXN0L1ZNLiBUaGlzIG1lYW5zIHdlIG1pZ2h0CkBAIC0xNzYsMTYgJiM0MzsxODQsMjMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkgKiBUbyBjbGVhbnVwIHN0YWxlIFRMQiBlbnRyaWVzLCB3ZSBzaW1wbHkgZmx1c2ggYWxsIEctc3RhZ2UgVExCCiAJICogZW50cmllcyBieSBWTUlEIHdoZW5ldmVyIHVuZGVybHlpbmcgSG9zdCBDUFUgY2hhbmdlcyBmb3IgYSBWQ1BVLgogCSAqLwotCi0Jdm1pZCA9IFJFQURfT05DRSh2Y3B1LSZndDtrdm0tJmd0O2FyY2gudm1pZC52bWlkKTsKLQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7CiYjNDM7CWlmICh2Y3B1X21pZ3JhdGVkICZhbXA7JmFtcDsga3ZtX3Jpc2N2X2dzdGFnZV92bWlkX2JpdHMoKSkKJiM0MzsJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTsKIAogCS8qCi0JICogRmx1c2ggVlMtc3RhZ2UgVExCIGVudHJpZXMgZm9yIGltcGxlbWVudGF0aW9uIHdoZXJlIFZTLXN0YWdlCi0JICogVExCIGRvZXMgbm90IGNhaGNlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MgYW5kIFZNSUQuCiYjNDM7CSAqIEd1ZXN0LWxvY2FsIHNmZW5jZS52bWEgb25seSBpbnZhbGlkYXRlcyBWUy1zdGFnZSB0cmFuc2xhdGlvbnMgb24KJiM0MzsJICogdGhlIEhvc3QgQ1BVIGN1cnJlbnRseSBiYWNraW5nIHRoZSBWQ1BVLiBJZiBhIFZDUFUgbWlncmF0ZXMsIG9yCiYjNDM7CSAqIGlmIHRoaXMgSG9zdCBDUFUgc3dpdGNoZXMgYmV0d2VlbiBWQ1BVcyBvZiB0aGUgc2FtZSBWTSwgc3RhbGUKJiM0MzsJICogVlMtc3RhZ2UgZW50cmllcyBjYW4gYmUgbGVmdCBiZWhpbmQgb24gYSBIb3N0IENQVSB0aGF0IG1pc3NlZCBhCiYjNDM7CSAqIGd1ZXN0LWxvY2FsIGZsdXNoLiBGbHVzaCB0aGUgY3VycmVudCBDUFUmIzM5O3MgVlMtc3RhZ2UgY29udGV4dCBiZWZvcmUKJiM0MzsJICogZW50ZXJpbmcgdGhlIGd1ZXN0LgogCSAqLwotCWlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZhbXA7a3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSkpCiYjNDM7CWlmIChrdm1fcmlzY3ZfbmFjbF9hdmFpbGFibGUoKSkKJiM0MzsJCW5hY2xfaGZlbmNlX3Z2bWFfYWxsKG5hY2xfc2htZW0oKSwgdm1pZCk7CiYjNDM7CWVsc2UKIAkJa3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FsbCh2bWlkKTsKJiM0MzsKJiM0MzsJKmxhc3RfcmFuID0gdmNwdS0mZ3Q7dmNwdV9pZHg7CiB9CiAKIHZvaWQga3ZtX3Jpc2N2X2ZlbmNlX2lfcHJvY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92bS5jIGIvYXJjaC9yaXNjdi9rdm0vdm0uYwppbmRleCAxM2M2M2FlMWE3OGIyLi4yOTA3MjE4YTFjZjVkIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZtLmMKQEAgLTksNiAmIzQzOzksNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3VhY2Nlc3MuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9rdm1fbW11LmgmZ3Q7CkBAIC0zMCw3ICYjNDM7MzEsOSBAQCBjb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2hlYWRlciBrdm1fdm1fc3RhdHNfaGVhZGVyID0gewogCiBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSkKIHsKJiM0MzsJaW50ICpsYXN0X3JhbjsKIAlpbnQgcjsKJiM0MzsJaW50IGNwdTsKIAogCXIgPSBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChrdm0pOwogCWlmIChyKQpAQCAtNDIsNiAmIzQzOzQ1LDE3IEBAIGludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKQogCQlyZXR1cm4gcjsKIAl9CiAKJiM0MzsJa3ZtLSZndDthcmNoLmxhc3RfdmNwdV9yYW4gPSBhbGxvY19wZXJjcHUoaW50KTsKJiM0MzsJaWYgKCFrdm0tJmd0O2FyY2gubGFzdF92Y3B1X3JhbikgewomIzQzOwkJa3ZtX3Jpc2N2X21tdV9mcmVlX3BnZChrdm0pOwomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkgewomIzQzOwkJbGFzdF9yYW4gPSBwZXJfY3B1X3B0cihrdm0tJmd0O2FyY2gubGFzdF92Y3B1X3JhbiwgY3B1KTsKJiM0MzsJCSpsYXN0X3JhbiA9IC0xOwomIzQzOwl9CiYjNDM7CiAJa3ZtX3Jpc2N2X2FpYV9pbml0X3ZtKGt2bSk7CiAKIAlrdm1fcmlzY3ZfZ3Vlc3RfdGltZXJfaW5pdChrdm0pOwpAQCAtNTQsNiAmIzQzOzY4LDggQEAgdm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSkKIAlrdm1fZGVzdHJveV92Y3B1cyhrdm0pOwogCiAJa3ZtX3Jpc2N2X2FpYV9kZXN0cm95X3ZtKGt2bSk7CiYjNDM7CiYjNDM7CWZyZWVfcGVyY3B1KGt2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuKTsKIH0KIAogaW50IGt2bV92bV9pb2N0bF9pcnFfbGluZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxX2xldmVsICppcnFsLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI1OAoJCQkJCQkJb3V0cHV0OiAxODUKCQkJCQkJCXRob3VnaHRzOiA1MzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gRnV6emluZyBTZXNzaW9uIEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBhIHBhdGNoIHNlcmllcyB0b3VjaGluZyBSSVNDLVYgS1ZNIGNvZGUuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgcmVtb3ZpbmcgdGhlIGBrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhYCBzdGF0aWMga2V5IGFuZCBhc3NvY2lhdGVkIHZlbmRvci1zcGVjaWZpYyBzZXR1cCBhbmQgYWRkaW5nIGEgYGxhc3RfdmNwdV9yYW5gIHBlcmNwdSB2YXJpYWJsZSB0byBgc3RydWN0IGt2bV9hcmNoYC4gVGhpcyBgbGFzdF92Y3B1X3JhbmAgaXMgYWxsb2NhdGVkIHVzaW5nIGBhbGxvY19wZXJjcHUoaW50KWAgZHVyaW5nIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgaW5pdGlhbGl6ZWQgdG8gYC0xYCBmb3IgZWFjaCBwb3NzaWJsZSBDUFUuIEl0IGdldHMgZnJlZWQgaW4gYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gLiBUaGUgcHJpbWFyeSB1c2UgaXMgd2l0aGluIGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYCB0byBjaGVjayBmb3IgdkNQVSBzd2l0Y2hlcyBvbiB0aGUgY3VycmVudCBDUFUsIGluZmx1ZW5jaW5nIFRMQiBmbHVzaGluZyBsb2dpYyBiYXNlZCBvbiBtaWdyYXRpb24gYW5kIHN3aXRjaGluZyBldmVudHMuCgpNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBtaWdodCB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gTGV0JiMzOTtzIGFuYWx5emUuIFRoZSBgYWxsb2NfcGVyY3B1YCBjYWxsICpkb2VzKiBpbml0aWFsaXplIG1lbW9yeSB0byB6ZXJvIGJ5IGRlZmF1bHQsIHdoaWNoIGlzIGdvb2QuIEJ1dCB0aGlzIHBhdGNoIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZXMgaXQgdG8gYC0xYCBhbnl3YXksIHdoaWNoIHByb3ZpZGVzIGV4dHJhIGNvbmZpZGVuY2UuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBiZWluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIG5vIGNoYW5jZSBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIGludGVybmFsIGRhdGEgdG8gdGhlIG91dHNpZGUgd29ybGQuIFRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSB3aXRoaW4gdGhlIEtWTSBpbnRlcm5hbCB3b3JraW5ncywgZGVhbGluZyB3aXRoIFRMQiBmbHVzaGluZywgYW5kIHRoZSB2YXJpYWJsZSBpcyB1c2VkIGZvciBpbnRlcm5hbCBjb250cm9sIGZsb3cuIFRoZXJlIGFyZSBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBvciBwb3RlbnRpYWwgZm9yIHVuaW5pdGlhbGl6ZWQgZmllbGRzIHRvIGJlIHJlYWQgZHVyaW5nIHByb2Nlc3NpbmcuIFRoaXMgaW1wbGllcyB0aGVyZSYjMzk7cyBubyB3YXkgaXQgaW50cm9kdWNlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIGxlYWRpbmcgdG8gYW4gaW5mb3JtYXRpb24gbGVhay4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhhdCBgYWxsb2NfcGVyY3B1YCBpcyBmdWxseSBpbml0aWFsaXplZC4gVGhlIGNvZGUgc25pcHBldCBjb25maXJtcyB0aGlzOyB0aGUgaW5pdGlhbGl6YXRpb24gbG9vcCBpcyBleHBsaWNpdC4KCmBgYGMKCWt2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuID0gYWxsb2NfcGVyY3B1KGludCk7CglpZiAoIWt2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuKSB7CgkJa3ZtX3Jpc2N2X21tdV9mcmVlX3BnZChrdm0pOwoJCXJldHVybiAtRU5PTUVNOwoJfQoKCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsKCQlsYXN0X3JhbiA9IHBlcl9jcHVfcHRyKGt2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuLCBjcHUpOwoJCSpsYXN0X3JhbiA9IC0xOwoJfQpgYGAKClNpbmNlIHRoZSBtZW1vcnkgaXMgZnVsbHkgaW5pdGlhbGl6ZWQsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIG5vdGhpbmcgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIEkgYW0gY29uZmlkZW50IHRoYXQgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGhlcmUuIEkgc2VlIG5vIG5lZWQgZm9yIEtNU0FOLiBJJiMzOTtsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGFuZCBkb2N1bWVudCB0aGlzIHJlYXNvbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSBpbnRlcm5hbCBUTEIgZmx1c2hpbmcgbG9naWMgYW5kIGludHJvZHVjZXMgYSBuZXcgcGVyLUNQVSB2YXJpYWJsZSBgbGFzdF92Y3B1X3JhbmAgdG8gdHJhY2sgdGhlIGxhc3QgVkNQVSB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVS4gVGhlIG1lbW9yeSBmb3IgdGhpcyB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgdXNpbmcgYGFsbG9jX3BlcmNwdShpbnQpYCBhbmQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgLTFgIGZvciBhbGwgcG9zc2libGUgQ1BVcyBpbW1lZGlhdGVseSBhZnRlciBhbGxvY2F0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBhbmQgbm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFJJU0MtViBLVk0gaW50ZXJuYWwgVExCIGZsdXNoaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IHBlci1DUFUgdmFyaWFibGUgYGxhc3RfdmNwdV9yYW5gIHRvIHRyYWNrIHRoZSBsYXN0IFZDUFUgdGhhdCByYW4gb24gZWFjaCBwaHlzaWNhbCBDUFUuIFRoZSBtZW1vcnkgZm9yIHRoaXMgdmFyaWFibGUgaXMgYWxsb2NhdGVkIHVzaW5nIGBhbGxvY19wZXJjcHUoaW50KWAgYW5kIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYC0xYCBmb3IgYWxsIHBvc3NpYmxlIENQVXMgaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsb2NhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgZGVmYXVsdCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUyOjM5Ljc0NDk1MTY1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMzMxOTc5NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX2luaXRfdm1cIixcbiAgICBcImt2bV9hcmNoX2Rlc3Ryb3lfdm1cIixcbiAgICBcImt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFJJU0MtViBLVk0gaW50ZXJuYWwgVExCIGZsdXNoaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IHBlci1DUFUgdmFyaWFibGUgYGxhc3RfdmNwdV9yYW5gIHRvIHRyYWNrIHRoZSBsYXN0IFZDUFUgdGhhdCByYW4gb24gZWFjaCBwaHlzaWNhbCBDUFUuIFRoZSBtZW1vcnkgZm9yIHRoaXMgdmFyaWFibGUgaXMgYWxsb2NhdGVkIHVzaW5nIGBhbGxvY19wZXJjcHUoaW50KWAgYW5kIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYC0xYCBmb3IgYWxsIHBvc3NpYmxlIENQVXMgaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsb2NhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgZGVmYXVsdCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRMQiBzYW5pdGl6YXRpb24gbG9naWMgZm9yIFJJU0MtViBLVk0sIGludHJvZHVjaW5nIGEgcGVyLUNQVSB0cmFja2luZyBvZiB0aGUgbGFzdCBWQ1BVIHJhbiB0byBmbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyB1cG9uIFZDUFUgbWlncmF0aW9uIG9yIHN3aXRjaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24gcmVhY2hhYmxlIHZpYSBzdGFuZGFyZCBLVk0gaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QxMTo1MjozOS43NDQ5NTY2NjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjIyMDkxNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNmViYTJhODAyOTY3NmQyMDljMmE3OWY3MzExNjkxMDA2NWY5YWJkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDE3IDExOjUyOjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbmluZGV4IDI0NTg1MzA0YzAyYjEuLjM5NmFjNjIwOWM1MGQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTkxLDYgKzkxLDkgQEAgc3RydWN0IGt2bV9hcmNoIHtcXG4gXFx0LyogRy1zdGFnZSB2bWlkICovXFxuIFxcdHN0cnVjdCBrdm1fdm1pZCB2bWlkO1xcbiBcXG4rXFx0LyogTGFzdCBWQ1BVIHRoYXQgcmFuIG9uIGVhY2ggcGh5c2ljYWwgQ1BVICovXFxuK1xcdGludCBfX3BlcmNwdSAqbGFzdF92Y3B1X3JhbjtcXG4rXFxuIFxcdC8qIEctc3RhZ2UgcGFnZSB0YWJsZSAqL1xcbiBcXHRwZ2RfdCAqcGdkO1xcbiBcXHRwaHlzX2FkZHJfdCBwZ2RfcGh5cztcXG5AQCAtMzMwLDcgKzMzMyw0IEBAIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiBcXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9yZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiBcXG4tLyogRmxhZ3MgcmVwcmVzZW50aW5nIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGRldGFpbHMgKi9cXG4tREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xcbi1cXG4gI2VuZGlmIC8qIF9fUklTQ1ZfS1ZNX0hPU1RfSF9fICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xcbmluZGV4IDBmM2ZlMzk4NmZjMDIuLmIxYmJjMDgzNTI3Y2YgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXFxuQEAgLTEwLDIzICsxMCwxMCBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2Nhc20vY3B1ZmVhdHVyZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9tbXUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fbmFjbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3NiaS5oXFx1MDAzZVxcbiBcXG4tREVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XFxuLVxcbi1zdGF0aWMgdm9pZCBrdm1fcmlzY3Zfc2V0dXBfdmVuZG9yX2ZlYXR1cmVzKHZvaWQpXFxuLXtcXG4tXFx0LyogQW5kZXMgQVg2Njogc3BsaXQgdHdvLXN0YWdlIFRMQnMgKi9cXG4tXFx0aWYgKHJpc2N2X2NhY2hlZF9tdmVuZG9yaWQoMCkgPT0gQU5ERVNfVkVORE9SX0lEIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICAocmlzY3ZfY2FjaGVkX21hcmNoaWQoMCkgXFx1MDAyNiAweEZGRkYpID09IDB4OEE2Nikge1xcbi1cXHRcXHRzdGF0aWNfYnJhbmNoX2VuYWJsZShcXHUwMDI2a3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XFxuLVxcdFxcdGt2bV9pbmZvKFxcXCJWUy1zdGFnZSBUTEIgZG9lcyBub3QgY2FjaGUgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBhbmQgVk1JRFxcXFxuXFxcIik7XFxuLVxcdH1cXG4tfVxcbi1cXG4gbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuIFxcdFxcdFxcdHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuIHtcXG5AQCAtMTcyLDggKzE1OSw2IEBAIHN0YXRpYyBpbnQgX19pbml0IHJpc2N2X2t2bV9pbml0KHZvaWQpXFxuIFxcdFxcdGt2bV9pbmZvKFxcXCJBSUEgYXZhaWxhYmxlIHdpdGggJWQgZ3Vlc3QgZXh0ZXJuYWwgaW50ZXJydXB0c1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0IGt2bV9yaXNjdl9haWFfbnJfaGdlaSk7XFxuIFxcbi1cXHRrdm1fcmlzY3Zfc2V0dXBfdmVuZG9yX2ZlYXR1cmVzKCk7XFxuLVxcbiBcXHRrdm1fcmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTtcXG4gXFxuIFxcdHJjID0ga3ZtX2luaXQoc2l6ZW9mKHN0cnVjdCBrdm1fdmNwdSksIDAsIFRISVNfTU9EVUxFKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdGxiLmMgYi9hcmNoL3Jpc2N2L2t2bS90bGIuY1xcbmluZGV4IGZmMWFlYWM0ZWI4ZWIuLjE1NDFkMDU5YTQyYWQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdGxiLmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS90bGIuY1xcbkBAIC04LDYgKzgsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vyci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wZXJjcHUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NtcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX2hvc3QuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcXHUwMDNlXFxuQEAgLTE2MCwxMiArMTYxLDE5IEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FsbCh1bnNpZ25lZCBsb25nIHZtaWQpXFxuIFxcbiB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuK1xcdGJvb2wgdmNwdV9taWdyYXRlZDtcXG4rXFx0Ym9vbCB2Y3B1X3N3aXRjaGVkO1xcbiBcXHR1bnNpZ25lZCBsb25nIHZtaWQ7XFxuK1xcdGludCAqbGFzdF9yYW47XFxuIFxcbi1cXHRpZiAoIWt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkgfHxcXG4tXFx0ICAgIHZjcHUtXFx1MDAzZWFyY2gubGFzdF9leGl0X2NwdSA9PSB2Y3B1LVxcdTAwM2VjcHUpXFxuK1xcdGxhc3RfcmFuID0gdGhpc19jcHVfcHRyKHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKTtcXG4rXFx0dmNwdV9taWdyYXRlZCA9ICh2Y3B1LVxcdTAwM2VhcmNoLmxhc3RfZXhpdF9jcHUgIT0gdmNwdS1cXHUwMDNlY3B1KTtcXG4rXFx0dmNwdV9zd2l0Y2hlZCA9ICgqbGFzdF9yYW4gIT0gdmNwdS1cXHUwMDNldmNwdV9pZHgpO1xcbitcXHRpZiAoIXZjcHVfbWlncmF0ZWQgXFx1MDAyNlxcdTAwMjYgIXZjcHVfc3dpdGNoZWQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdHZtaWQgPSBSRUFEX09OQ0UodmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnZtaWQudm1pZCk7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBPbiBSSVNDLVYgcGxhdGZvcm1zIHdpdGggaGFyZHdhcmUgVk1JRCBzdXBwb3J0LCB3ZSBzaGFyZSBzYW1lXFxuIFxcdCAqIFZNSUQgZm9yIGFsbCBWQ1BVcyBvZiBhIHBhcnRpY3VsYXIgR3Vlc3QvVk0uIFRoaXMgbWVhbnMgd2UgbWlnaHRcXG5AQCAtMTc2LDE2ICsxODQsMjMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0ICogVG8gY2xlYW51cCBzdGFsZSBUTEIgZW50cmllcywgd2Ugc2ltcGx5IGZsdXNoIGFsbCBHLXN0YWdlIFRMQlxcbiBcXHQgKiBlbnRyaWVzIGJ5IFZNSUQgd2hlbmV2ZXIgdW5kZXJseWluZyBIb3N0IENQVSBjaGFuZ2VzIGZvciBhIFZDUFUuXFxuIFxcdCAqL1xcbi1cXG4tXFx0dm1pZCA9IFJFQURfT05DRSh2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2gudm1pZC52bWlkKTtcXG4tXFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xcbitcXHRpZiAodmNwdV9taWdyYXRlZCBcXHUwMDI2XFx1MDAyNiBrdm1fcmlzY3ZfZ3N0YWdlX3ZtaWRfYml0cygpKVxcbitcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7XFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBGbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyBmb3IgaW1wbGVtZW50YXRpb24gd2hlcmUgVlMtc3RhZ2VcXG4tXFx0ICogVExCIGRvZXMgbm90IGNhaGNlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MgYW5kIFZNSUQuXFxuK1xcdCAqIEd1ZXN0LWxvY2FsIHNmZW5jZS52bWEgb25seSBpbnZhbGlkYXRlcyBWUy1zdGFnZSB0cmFuc2xhdGlvbnMgb25cXG4rXFx0ICogdGhlIEhvc3QgQ1BVIGN1cnJlbnRseSBiYWNraW5nIHRoZSBWQ1BVLiBJZiBhIFZDUFUgbWlncmF0ZXMsIG9yXFxuK1xcdCAqIGlmIHRoaXMgSG9zdCBDUFUgc3dpdGNoZXMgYmV0d2VlbiBWQ1BVcyBvZiB0aGUgc2FtZSBWTSwgc3RhbGVcXG4rXFx0ICogVlMtc3RhZ2UgZW50cmllcyBjYW4gYmUgbGVmdCBiZWhpbmQgb24gYSBIb3N0IENQVSB0aGF0IG1pc3NlZCBhXFxuK1xcdCAqIGd1ZXN0LWxvY2FsIGZsdXNoLiBGbHVzaCB0aGUgY3VycmVudCBDUFUncyBWUy1zdGFnZSBjb250ZXh0IGJlZm9yZVxcbitcXHQgKiBlbnRlcmluZyB0aGUgZ3Vlc3QuXFxuIFxcdCAqL1xcbi1cXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2a3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSkpXFxuK1xcdGlmIChrdm1fcmlzY3ZfbmFjbF9hdmFpbGFibGUoKSlcXG4rXFx0XFx0bmFjbF9oZmVuY2VfdnZtYV9hbGwobmFjbF9zaG1lbSgpLCB2bWlkKTtcXG4rXFx0ZWxzZVxcbiBcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpO1xcbitcXG4rXFx0Kmxhc3RfcmFuID0gdmNwdS1cXHUwMDNldmNwdV9pZHg7XFxuIH1cXG4gXFxuIHZvaWQga3ZtX3Jpc2N2X2ZlbmNlX2lfcHJvY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZtLmMgYi9hcmNoL3Jpc2N2L2t2bS92bS5jXFxuaW5kZXggMTNjNjNhZTFhNzhiMi4uMjkwNzIxOGExY2Y1ZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92bS5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vdm0uY1xcbkBAIC05LDYgKzksNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vyci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wZXJjcHUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VhY2Nlc3MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX21tdS5oXFx1MDAzZVxcbkBAIC0zMCw3ICszMSw5IEBAIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfaGVhZGVyIGt2bV92bV9zdGF0c19oZWFkZXIgPSB7XFxuIFxcbiBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG4ge1xcbitcXHRpbnQgKmxhc3RfcmFuO1xcbiBcXHRpbnQgcjtcXG4rXFx0aW50IGNwdTtcXG4gXFxuIFxcdHIgPSBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChrdm0pO1xcbiBcXHRpZiAocilcXG5AQCAtNDIsNiArNDUsMTcgQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXFxuIFxcdFxcdHJldHVybiByO1xcbiBcXHR9XFxuIFxcbitcXHRrdm0tXFx1MDAzZWFyY2gubGFzdF92Y3B1X3JhbiA9IGFsbG9jX3BlcmNwdShpbnQpO1xcbitcXHRpZiAoIWt2bS1cXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKSB7XFxuK1xcdFxcdGt2bV9yaXNjdl9tbXVfZnJlZV9wZ2Qoa3ZtKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdH1cXG4rXFxuK1xcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcXG4rXFx0XFx0bGFzdF9yYW4gPSBwZXJfY3B1X3B0cihrdm0tXFx1MDAzZWFyY2gubGFzdF92Y3B1X3JhbiwgY3B1KTtcXG4rXFx0XFx0Kmxhc3RfcmFuID0gLTE7XFxuK1xcdH1cXG4rXFxuIFxcdGt2bV9yaXNjdl9haWFfaW5pdF92bShrdm0pO1xcbiBcXG4gXFx0a3ZtX3Jpc2N2X2d1ZXN0X3RpbWVyX2luaXQoa3ZtKTtcXG5AQCAtNTQsNiArNjgsOCBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbiBcXHRrdm1fZGVzdHJveV92Y3B1cyhrdm0pO1xcbiBcXG4gXFx0a3ZtX3Jpc2N2X2FpYV9kZXN0cm95X3ZtKGt2bSk7XFxuK1xcbitcXHRmcmVlX3BlcmNwdShrdm0tXFx1MDAzZWFyY2gubGFzdF92Y3B1X3Jhbik7XFxuIH1cXG4gXFxuIGludCBrdm1fdm1faW9jdGxfaXJxX2xpbmUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycV9sZXZlbCAqaXJxbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTI6NDEuMDA3Nzg1NzA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjg0NDIzMTIzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiLFxuICAgIFwia3ZtX2FyY2hfZGVzdHJveV92bVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUTEIgc2FuaXRpemF0aW9uIGxvZ2ljIGZvciBSSVNDLVYgS1ZNLCBpbnRyb2R1Y2luZyBhIHBlci1DUFUgdHJhY2tpbmcgb2YgdGhlIGxhc3QgVkNQVSByYW4gdG8gZmx1c2ggVlMtc3RhZ2UgVExCIGVudHJpZXMgdXBvbiBWQ1BVIG1pZ3JhdGlvbiBvciBzd2l0Y2hpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDZlYmEyYTgwMjk2NzZkMjA5YzJhNzlmNzMxMTY5MTAwNjVmOWFiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDExOjUyOjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCAyNDU4NTMwNGMwMmIxLi4zOTZhYzYyMDljNTBkIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbkBAIC05MSw2ICs5MSw5IEBAIHN0cnVjdCBrdm1fYXJjaCB7XG4gXHQvKiBHLXN0YWdlIHZtaWQgKi9cbiBcdHN0cnVjdCBrdm1fdm1pZCB2bWlkO1xuIFxuK1x0LyogTGFzdCBWQ1BVIHRoYXQgcmFuIG9uIGVhY2ggcGh5c2ljYWwgQ1BVICovXG4rXHRpbnQgX19wZXJjcHUgKmxhc3RfdmNwdV9yYW47XG4rXG4gXHQvKiBHLXN0YWdlIHBhZ2UgdGFibGUgKi9cbiBcdHBnZF90ICpwZ2Q7XG4gXHRwaHlzX2FkZHJfdCBwZ2RfcGh5cztcbkBAIC0zMzAsNyArMzMzLDQgQEAgYm9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9yZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuLS8qIEZsYWdzIHJlcHJlc2VudGluZyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBkZXRhaWxzICovXG4tREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xuLVxuICNlbmRpZiAvKiBfX1JJU0NWX0tWTV9IT1NUX0hfXyAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuaW5kZXggMGYzZmUzOTg2ZmMwMi4uYjFiYmMwODM1MjdjZiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG5AQCAtMTAsMjMgKzEwLDEwIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2Nhc20vY3B1ZmVhdHVyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9tbXUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fbmFjbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3NiaS5oXHUwMDNlXG4gXG4tREVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XG4tXG4tc3RhdGljIHZvaWQga3ZtX3Jpc2N2X3NldHVwX3ZlbmRvcl9mZWF0dXJlcyh2b2lkKVxuLXtcbi1cdC8qIEFuZGVzIEFYNjY6IHNwbGl0IHR3by1zdGFnZSBUTEJzICovXG4tXHRpZiAocmlzY3ZfY2FjaGVkX212ZW5kb3JpZCgwKSA9PSBBTkRFU19WRU5ET1JfSUQgXHUwMDI2XHUwMDI2XG4tXHQgICAgKHJpc2N2X2NhY2hlZF9tYXJjaGlkKDApIFx1MDAyNiAweEZGRkYpID09IDB4OEE2Nikge1xuLVx0XHRzdGF0aWNfYnJhbmNoX2VuYWJsZShcdTAwMjZrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKTtcbi1cdFx0a3ZtX2luZm8oXCJWUy1zdGFnZSBUTEIgZG9lcyBub3QgY2FjaGUgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBhbmQgVk1JRFxcblwiKTtcbi1cdH1cbi19XG4tXG4gbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4gXHRcdFx0dW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbiB7XG5AQCAtMTcyLDggKzE1OSw2IEBAIHN0YXRpYyBpbnQgX19pbml0IHJpc2N2X2t2bV9pbml0KHZvaWQpXG4gXHRcdGt2bV9pbmZvKFwiQUlBIGF2YWlsYWJsZSB3aXRoICVkIGd1ZXN0IGV4dGVybmFsIGludGVycnVwdHNcXG5cIixcbiBcdFx0XHQga3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpKTtcbiBcbi1cdGt2bV9yaXNjdl9zZXR1cF92ZW5kb3JfZmVhdHVyZXMoKTtcbi1cbiBcdGt2bV9yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xuIFxuIFx0cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbmluZGV4IGZmMWFlYWM0ZWI4ZWIuLjE1NDFkMDU5YTQyYWQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbkBAIC04LDYgKzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY2FjaGVmbHVzaC5oXHUwMDNlXG5AQCAtMTYwLDEyICsxNjEsMTkgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZClcbiBcbiB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbitcdGJvb2wgdmNwdV9taWdyYXRlZDtcbitcdGJvb2wgdmNwdV9zd2l0Y2hlZDtcbiBcdHVuc2lnbmVkIGxvbmcgdm1pZDtcbitcdGludCAqbGFzdF9yYW47XG4gXG4tXHRpZiAoIWt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkgfHxcbi1cdCAgICB2Y3B1LVx1MDAzZWFyY2gubGFzdF9leGl0X2NwdSA9PSB2Y3B1LVx1MDAzZWNwdSlcbitcdGxhc3RfcmFuID0gdGhpc19jcHVfcHRyKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gubGFzdF92Y3B1X3Jhbik7XG4rXHR2Y3B1X21pZ3JhdGVkID0gKHZjcHUtXHUwMDNlYXJjaC5sYXN0X2V4aXRfY3B1ICE9IHZjcHUtXHUwMDNlY3B1KTtcbitcdHZjcHVfc3dpdGNoZWQgPSAoKmxhc3RfcmFuICE9IHZjcHUtXHUwMDNldmNwdV9pZHgpO1xuK1x0aWYgKCF2Y3B1X21pZ3JhdGVkIFx1MDAyNlx1MDAyNiAhdmNwdV9zd2l0Y2hlZClcbiBcdFx0cmV0dXJuO1xuIFxuK1x0dm1pZCA9IFJFQURfT05DRSh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnZtaWQudm1pZCk7XG4rXG4gXHQvKlxuIFx0ICogT24gUklTQy1WIHBsYXRmb3JtcyB3aXRoIGhhcmR3YXJlIFZNSUQgc3VwcG9ydCwgd2Ugc2hhcmUgc2FtZVxuIFx0ICogVk1JRCBmb3IgYWxsIFZDUFVzIG9mIGEgcGFydGljdWxhciBHdWVzdC9WTS4gVGhpcyBtZWFucyB3ZSBtaWdodFxuQEAgLTE3NiwxNiArMTg0LDIzIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHQgKiBUbyBjbGVhbnVwIHN0YWxlIFRMQiBlbnRyaWVzLCB3ZSBzaW1wbHkgZmx1c2ggYWxsIEctc3RhZ2UgVExCXG4gXHQgKiBlbnRyaWVzIGJ5IFZNSUQgd2hlbmV2ZXIgdW5kZXJseWluZyBIb3N0IENQVSBjaGFuZ2VzIGZvciBhIFZDUFUuXG4gXHQgKi9cbi1cbi1cdHZtaWQgPSBSRUFEX09OQ0UodmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC52bWlkLnZtaWQpO1xuLVx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xuK1x0aWYgKHZjcHVfbWlncmF0ZWQgXHUwMDI2XHUwMDI2IGt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkpXG4rXHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTtcbiBcbiBcdC8qXG4tXHQgKiBGbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyBmb3IgaW1wbGVtZW50YXRpb24gd2hlcmUgVlMtc3RhZ2Vcbi1cdCAqIFRMQiBkb2VzIG5vdCBjYWhjZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlELlxuK1x0ICogR3Vlc3QtbG9jYWwgc2ZlbmNlLnZtYSBvbmx5IGludmFsaWRhdGVzIFZTLXN0YWdlIHRyYW5zbGF0aW9ucyBvblxuK1x0ICogdGhlIEhvc3QgQ1BVIGN1cnJlbnRseSBiYWNraW5nIHRoZSBWQ1BVLiBJZiBhIFZDUFUgbWlncmF0ZXMsIG9yXG4rXHQgKiBpZiB0aGlzIEhvc3QgQ1BVIHN3aXRjaGVzIGJldHdlZW4gVkNQVXMgb2YgdGhlIHNhbWUgVk0sIHN0YWxlXG4rXHQgKiBWUy1zdGFnZSBlbnRyaWVzIGNhbiBiZSBsZWZ0IGJlaGluZCBvbiBhIEhvc3QgQ1BVIHRoYXQgbWlzc2VkIGFcbitcdCAqIGd1ZXN0LWxvY2FsIGZsdXNoLiBGbHVzaCB0aGUgY3VycmVudCBDUFUncyBWUy1zdGFnZSBjb250ZXh0IGJlZm9yZVxuK1x0ICogZW50ZXJpbmcgdGhlIGd1ZXN0LlxuIFx0ICovXG4tXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKSlcbitcdGlmIChrdm1fcmlzY3ZfbmFjbF9hdmFpbGFibGUoKSlcbitcdFx0bmFjbF9oZmVuY2VfdnZtYV9hbGwobmFjbF9zaG1lbSgpLCB2bWlkKTtcbitcdGVsc2VcbiBcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FsbCh2bWlkKTtcbitcbitcdCpsYXN0X3JhbiA9IHZjcHUtXHUwMDNldmNwdV9pZHg7XG4gfVxuIFxuIHZvaWQga3ZtX3Jpc2N2X2ZlbmNlX2lfcHJvY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdm0uYyBiL2FyY2gvcmlzY3Yva3ZtL3ZtLmNcbmluZGV4IDEzYzYzYWUxYTc4YjIuLjI5MDcyMThhMWNmNWQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92bS5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92bS5jXG5AQCAtOSw2ICs5LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWFjY2Vzcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fbW11LmhcdTAwM2VcbkBAIC0zMCw3ICszMSw5IEBAIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfaGVhZGVyIGt2bV92bV9zdGF0c19oZWFkZXIgPSB7XG4gXG4gaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4ge1xuK1x0aW50ICpsYXN0X3JhbjtcbiBcdGludCByO1xuK1x0aW50IGNwdTtcbiBcbiBcdHIgPSBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChrdm0pO1xuIFx0aWYgKHIpXG5AQCAtNDIsNiArNDUsMTcgQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4gXHRcdHJldHVybiByO1xuIFx0fVxuIFxuK1x0a3ZtLVx1MDAzZWFyY2gubGFzdF92Y3B1X3JhbiA9IGFsbG9jX3BlcmNwdShpbnQpO1xuK1x0aWYgKCFrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKSB7XG4rXHRcdGt2bV9yaXNjdl9tbXVfZnJlZV9wZ2Qoa3ZtKTtcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHR9XG4rXG4rXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG4rXHRcdGxhc3RfcmFuID0gcGVyX2NwdV9wdHIoa3ZtLVx1MDAzZWFyY2gubGFzdF92Y3B1X3JhbiwgY3B1KTtcbitcdFx0Kmxhc3RfcmFuID0gLTE7XG4rXHR9XG4rXG4gXHRrdm1fcmlzY3ZfYWlhX2luaXRfdm0oa3ZtKTtcbiBcbiBcdGt2bV9yaXNjdl9ndWVzdF90aW1lcl9pbml0KGt2bSk7XG5AQCAtNTQsNiArNjgsOCBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxuIFx0a3ZtX2Rlc3Ryb3lfdmNwdXMoa3ZtKTtcbiBcbiBcdGt2bV9yaXNjdl9haWFfZGVzdHJveV92bShrdm0pO1xuK1xuK1x0ZnJlZV9wZXJjcHUoa3ZtLVx1MDAzZWFyY2gubGFzdF92Y3B1X3Jhbik7XG4gfVxuIFxuIGludCBrdm1fdm1faW9jdGxfaXJxX2xpbmUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycV9sZXZlbCAqaXJxbCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUyOjQxLjAwNzc4NjkwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NzMyNzg3MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhpcyBSSVNDLVYgS1ZNIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBzZXJpZXMgKmRvZXMqIGludHJvZHVjZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFJJU0MtViBLVk0ga2VybmVsIGNvZGUsIG1lYW5pbmcgaXQncyBwcmltZSBmb3IgZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGNvbmNlbnRyYXRlZCBpbiBgYXJjaC9yaXNjdi9rdm1gIGFuZCByZXZvbHZlIGFyb3VuZCBUTEIgc2FuaXRpemF0aW9uIOKAkyBzcGVjaWZpY2FsbHkgaG93IHdlIGhhbmRsZSBWaXJ0dWFsIFN0YWdlIChWUykgVExCIGVudHJpZXMgb24gUklTQy1WLlxuXG5UaGUgbWVhdCBvZiBpdCBpcyB0aGUgYWRkaXRpb24gb2YgdGhpcyBgbGFzdF92Y3B1X3JhbmAgcGVyY3B1IHZhcmlhYmxlIHdpdGhpbiBga3ZtX2FyY2hgLiBUaGlzIGxldHMgdXMgdHJhY2sgdGhlIG1vc3QgcmVjZW50IFZDUFUgdG8gZXhlY3V0ZSBvbiBlYWNoIHBoeXNpY2FsIENQVSwgd2hpY2ggaXMgZnVuZGFtZW50YWwgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSBoYXMgYmVlbiBhbnkgbWlncmF0aW9uLiBBbmQsIGltcG9ydGFudGx5LCBpZiB0aGVyZSBoYXMgYmVlbiBtaWdyYXRpb24sIHdlIGZsdXNoIHRoZSBWUy1zdGFnZSBUTEIgZW50cmllcy4gSXQgYWxzbyBtZWFucyB3ZSd2ZSBkcm9wcGVkIHRoZSBBbmRlcy1zcGVjaWZpYyBmZWF0dXJlcyByZWxhdGVkIHRvIFRMQiBmbHVzaGluZy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIG1lYW5zIHRoZSBUTEIgaW52YWxpZGF0aW9uIHN0cmF0ZWd5IGNoYW5nZWQgaW4gS1ZNLCB3aGljaCBpcyBhIGNvcmUgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eSBmb3IgYW55IHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgY2hhbmdlIGlzIHNpZ25pZmljYW50IGVub3VnaCB0byB3YXJyYW50IGZ1enppbmcgYXR0ZW50aW9uLiBUZXN0aW5nIEtWTSBvbiBSSVNDLVYgaXMgZG9hYmxlIHdpdGggUUVNVSwgc28gdGhhdCdzIGEgY2hlY2sgaW4gdGhlIFwieWVzLCBpdCdzIHJlYWNoYWJsZVwiIGJveC4gVGh1cywgYFdvcnRoRnV6emluZz10cnVlYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IHdoYXQgZnVuY3Rpb25zIGFyZSBtb2RpZmllZD8gV2UgbmVlZCB0byB0YXJnZXQgdGhlIGZ1enppbmcgZWZmb3J0cy4gVGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyBhcmU6IGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYCwgYGt2bV9hcmNoX2luaXRfdm1gLCBhbmQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gLiBOb3csIEkgd2FudCB0byBjb25maXJtIHdoZXJlIGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYCBpcyBjYWxsZWQgdG8gZW5zdXJlIHdlIGNhbiBidWlsZCB0aGUgYXBwcm9wcmlhdGUgdGVzdCBjb3ZlcmFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUyOjQ4LjY4MTA2Nzk5MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg3MDEyMjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdGxiLmg9NTE9dm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZCk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdGxiLmg6NTI6dm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdGxiLmgtNTMtXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS90bGIuYz0xNTE9dm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTE2MS1cXG5hcmNoL3Jpc2N2L2t2bS90bGIuYzoxNjI6dm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0xNjMte1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTg2ND1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTk3MC1cXHRcXHQgKi9cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6OTcxOlxcdFxcdGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUodmNwdSk7XFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTk3Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTI6NTAuMjY4MDg0ODM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg1NDg0MTcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBLVk0vUklTQy1WIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBpZGVudGlmeSBzdWl0YWJsZSBlbnRyeSBwb2ludHMgd2l0aGluIHRoZSBSSVNDLVYgS1ZNIGNvZGUsIHNwZWNpZmljYWxseSBhdm9pZGluZyBob3QtcGF0aCBmdW5jdGlvbnMgdG8ga2VlcCB0aGUgdGVzdGluZyBkaXN0cmlidXRpb24gZmFpci4gVGhlIHByb21wdCdzIGVtcGhhc2lzIG9uIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBpcyBrZXkgaGVyZS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLCBiZWNhdXNlIHRoYXQncyB0aGUgY29yZSBvZiBWQ1BVIGV4ZWN1dGlvbiDigJMgdGhlIGBLVk1fUlVOYCBpb2N0bCBoYW5kbGVyLiBBbmQgdGhlbiBJIHJlbWVtYmVyZWQsIFwiYXZvaWQgaG90IHBhdGhzIVwiIFRoYXQncyB0aGUgcHJpbWFyeSBsb29wIGZvciBleGVjdXRpb24sIHdoaWNoIHdpbGwgc2tldyBhbnkgZGlzdHJpYnV0aW9uLiBga3ZtX2FyY2hfaW5pdF92bWAgYW5kIGBrdm1fYXJjaF9kZXN0cm95X3ZtYCBhcmUgZGVmaW5pdGVseSBzYWZlLCBidXQgYXJlIHRoZXkgdGhlIG9ubHkgb3B0aW9ucz9cblxuVGhlIHByb21wdCBkaWQgc2F5IHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgbG9va2VkIGF0IGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYCBpcyBjYWxsZWQgZnJvbSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0IHNob3VsZCBiZSBnb29kISBJdCdzIG5vdCBzdGF0aWMgYW5kIG5vdCBpbmxpbmVkLlxuXG5UaW1lIHRvIGxvb2sgaW4gS2NvbmZpZyBhbmQgY2hlY2sgZm9yIFJJU0MtViBLVk0tcmVsYXRlZCBlbnRyeSBwb2ludHMgYW5kIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDM4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUyOjU3LjEyMjkyOThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyMTI3NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUyOjU3LjgwNTA2MjQ0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDU5MjIzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtWTSBvbiBSSVNDLVYgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCByZWFsbHkgdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBLVk0gb24gUklTQy1WLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgYXJjaGl0ZWN0dXJhbCBsYW5kc2NhcGUgYW5kIGhvdyB0aGUgdmFyaW91cyBmZWF0dXJlcyBhbmQgZnVuY3Rpb25hbGl0aWVzIGFyZSBleHBvc2VkIHRocm91Z2ggdGhlIEtjb25maWcgc3lzdGVtLiBJJ20gdGhpbmtpbmcgSSdsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBnZW5lcmljIEtWTSBvcHRpb25zIGFuZCB0aGUgUklTQy1WIHNwZWNpZmljIG9uZXMuIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB0aGluZ3MgbGlrZSB0aGUgdmlydHVhbCBtYWNoaW5lIGV4dGVuc2lvbnMgKFZNRSksIGFueSBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IHNwZWNpZmljIHRvIFJJU0MtViBpbXBsZW1lbnRhdGlvbnMgSSBhbSBmYW1pbGlhciB3aXRoLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaWZmZXJlbnQgcHJpdmlsZWdlIGxldmVscy4gTGV0J3Mgc2VlIGhvdyB0aGV5J3ZlIGhhbmRsZWQgdGhlIHZhcmlvdXMgcHJpdmlsZWdlIGxldmVscyB0b28uIEkgd2FudCB0byBzZWUgaG93IHRoZSBjb2RlIGhhbmRsZXMgdGhpbmdzIGxpa2UgbmVzdGVkIHZpcnR1YWxpemF0aW9uIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGluIGdlbmVyYWwsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJJ2xsIG5lZWQgdG8gY29ycmVsYXRlIHRoZSBLY29uZmlnIG9wdGlvbnMgd2l0aCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY29kZSB0byBkZXZlbG9wIGEgc29saWQgbWVudGFsIG1vZGVsLiBMZXQncyBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjI3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTM6MDEuMzEwOTg2ODQxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgS1ZNIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbiAgIDc6XFx0XFxuICAgODpcXHRtZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXFxuICAgOTpcXHRcXHRib29sIFxcXCJWaXJ0dWFsaXphdGlvblxcXCJcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW5cXG4gIDEyOlxcdFxcdCAgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXFxuICAxMzpcXHRcXHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZFxcbiAgMTY6XFx0XFx0ICBkaXNhYmxlZC5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgVklSVFVBTElaQVRJT05cXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIEtWTVxcbiAgMjE6XFx0XFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gUklTQ1ZfU0JJIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgMjM6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcXG4gIDI0OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xcbiAgMjU6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxcbiAgMjY6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxcbiAgMjc6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxcbiAgMjg6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDI5OlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG4gIDMwOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbiAgMzE6XFx0XFx0c2VsZWN0IEtWTV9NTUlPXFxuICAzMjpcXHRcXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcXG4gIDMzOlxcdFxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuICAzNDpcXHRcXHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzLlxcbiAgMzc6XFx0XFxuICAzODpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAzOTpcXHRcXG4gIDQwOlxcdGVuZGlmICMgVklSVFVBTElaQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTM6MDEuMzExMDUzNjUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA2MjE0MTkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSSVNDLVYgS1ZNIENvbmZpZ3VyYXRpb24gYW5kIFJlbGV2YW50IFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gYmVzdCBjb25maWd1cmUgYW5kIGFuYWx5emUgdGhpcyBSSVNDLVYgS1ZNIGNvZGUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSBJIG5lZWQgdG8gZW5hYmxlIGlzIGBLVk1gIGl0c2VsZi4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgY29yZS4gYEtWTWAgaGluZ2VzIG9uIGBWSVJUVUFMSVpBVElPTmAsIGBSSVNDVl9TQklgLCBhbmQgYE1NVWAsIHNvIHRob3NlIGFyZSBsaWtlbHkgcHJlcmVxdWlzaXRlcywgdGhvdWdoIEkgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGxpc3QgdGhlbSBzaW5jZSBlbmFibGluZyBgS1ZNYCBzaG91bGQgdGFrZSBjYXJlIG9mIHRoYXQuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgYW5kIG15IGtub3dsZWRnZSBvZiBLVk0sIEknbSB0aGlua2luZyBJIHNob3VsZCBzdGFydCB3aXRoIHRoZSBzdGFuZGFyZCBLVk0gQVBJIGNhbGxzIGxpa2UgYGt2bV9hcmNoX2luaXRfdm1gIGFuZCBga3ZtX2FyY2hfZGVzdHJveV92bWAuIFRoZXNlIGFyZSB0aGUgZm91bmRhdGlvbmFsIHNldHVwIGFuZCB0ZWFyZG93biBwb2ludHMgZm9yIGEgVk0uIFRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZWAgYmVpbmcgc3BlY2lmaWMgdG8gUklTQy1WIEtWTSwgYW5kIGl0J3MgdGhlIHRhcmdldCBvZiB0aGUgcGF0Y2ggc28gdGhhdCBzaG91bGQgZGVmaW5pdGVseSBiZSBvbiB0aGUgbGlzdC4gU28sIEknbGwgZGVmaW5pdGVseSBsaXN0OiBga3ZtX2FyY2hfaW5pdF92bWAsIGBrdm1fYXJjaF9kZXN0cm95X3ZtYCwgYW5kIGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYC5cblxuTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBBaCwgeWVzLCBpdCdzIGdsb2JhbCAobm9uLXN0YXRpYykgaW4gYGFyY2gvcmlzY3Yva3ZtL3RsYi5jYCwgc28gaXQncyByZWFkaWx5IGFjY2Vzc2libGUuIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gIGFyZSBpbiBgYXJjaC9yaXNjdi9rdm0vdm0uY2AuXG5cbldpdGggdGhpcyBpbiBtaW5kLCBJIHdpbGwgc2V0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBpcyBhcyB0aG9yb3VnaCBhcyBwb3NzaWJsZTpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYFxuKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbXCJrdm1fYXJjaF9pbml0X3ZtXCIsIFwia3ZtX2FyY2hfZGVzdHJveV92bVwiLCBcImt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVcIl1gXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJLVk1cIl1gXG5cblRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byBUTEIgc2FuaXRpemF0aW9uIHdpdGhpbiB0aGUgUklTQy1WIEtWTS4gVGhlIGNoYW5nZSBzZWVtcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIEtWTSBpb2N0bHMuIFRoZSBnb2FsIGhlcmUgaXMgdG8gY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlc2Uga2V5IEtWTSBmdW5jdGlvbnMgd2hlbiBhIFZDUFUgbWlncmF0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMjIsIk91dHB1dFRva2VucyI6MTM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTM6MDkuMzczMTk4MjM5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY4OTY4OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX2luaXRfdm1cIixcbiAgICBcImt2bV9hcmNoX2Rlc3Ryb3lfdm1cIixcbiAgICBcImt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVExCIHNhbml0aXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIEtWTSwgaW50cm9kdWNpbmcgYSBwZXItQ1BVIHRyYWNraW5nIG9mIHRoZSBsYXN0IFZDUFUgcmFuIHRvIGZsdXNoIFZTLXN0YWdlIFRMQiBlbnRyaWVzIHVwb24gVkNQVSBtaWdyYXRpb24gb3Igc3dpdGNoaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgUklTQy1WIEtWTSBpbXBsZW1lbnRhdGlvbiByZWFjaGFibGUgdmlhIHN0YW5kYXJkIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiLFxuICAgIFwia3ZtX2FyY2hfZGVzdHJveV92bVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUTEIgc2FuaXRpemF0aW9uIGxvZ2ljIGZvciBSSVNDLVYgS1ZNLCBpbnRyb2R1Y2luZyBhIHBlci1DUFUgdHJhY2tpbmcgb2YgdGhlIGxhc3QgVkNQVSByYW4gdG8gZmx1c2ggVlMtc3RhZ2UgVExCIGVudHJpZXMgdXBvbiBWQ1BVIG1pZ3JhdGlvbiBvciBzd2l0Y2hpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTM6MDkuNDUwMTAyMDI3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYyNjgxOTUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUzOjA5LjQ1MDU1MTA3N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDYyNjM2Njg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSBpbnRlcm5hbCBUTEIgZmx1c2hpbmcgbG9naWMgYW5kIGludHJvZHVjZXMgYSBuZXcgcGVyLUNQVSB2YXJpYWJsZSBgbGFzdF92Y3B1X3JhbmAgdG8gdHJhY2sgdGhlIGxhc3QgVkNQVSB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVS4gVGhlIG1lbW9yeSBmb3IgdGhpcyB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgdXNpbmcgYGFsbG9jX3BlcmNwdShpbnQpYCBhbmQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgLTFgIGZvciBhbGwgcG9zc2libGUgQ1BVcyBpbW1lZGlhdGVseSBhZnRlciBhbGxvY2F0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBhbmQgbm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwNmViYTJhODAyOTY3NmQyMDljMmE3OWY3MzExNjkxMDA2NWY5YWJkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMTE6NTI6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IDI0NTg1MzA0YzAyYjEuLjM5NmFjNjIwOWM1MGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTkxLDYgKzkxLDkgQEAgc3RydWN0IGt2bV9hcmNoIHtcbiBcdC8qIEctc3RhZ2Ugdm1pZCAqL1xuIFx0c3RydWN0IGt2bV92bWlkIHZtaWQ7XG4gXG4rXHQvKiBMYXN0IFZDUFUgdGhhdCByYW4gb24gZWFjaCBwaHlzaWNhbCBDUFUgKi9cbitcdGludCBfX3BlcmNwdSAqbGFzdF92Y3B1X3JhbjtcbitcbiBcdC8qIEctc3RhZ2UgcGFnZSB0YWJsZSAqL1xuIFx0cGdkX3QgKnBnZDtcbiBcdHBoeXNfYWRkcl90IHBnZF9waHlzO1xuQEAgLTMzMCw3ICszMzMsNCBAQCBib29sIGt2bV9yaXNjdl92Y3B1X3N0b3BwZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiB2b2lkIGt2bV9yaXNjdl92Y3B1X3JlY29yZF9zdGVhbF90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXG4tLyogRmxhZ3MgcmVwcmVzZW50aW5nIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGRldGFpbHMgKi9cbi1ERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XG4tXG4gI2VuZGlmIC8qIF9fUklTQ1ZfS1ZNX0hPU1RfSF9fICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG5pbmRleCAwZjNmZTM5ODZmYzAyLi5iMWJiYzA4MzUyN2NmIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbkBAIC0xMCwyMyArMTAsMTAgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2FzbS9jcHVmZWF0dXJlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX21tdS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9uYWNsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vc2JpLmhcdTAwM2VcbiBcbi1ERUZJTkVfU1RBVElDX0tFWV9GQUxTRShrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKTtcbi1cbi1zdGF0aWMgdm9pZCBrdm1fcmlzY3Zfc2V0dXBfdmVuZG9yX2ZlYXR1cmVzKHZvaWQpXG4te1xuLVx0LyogQW5kZXMgQVg2Njogc3BsaXQgdHdvLXN0YWdlIFRMQnMgKi9cbi1cdGlmIChyaXNjdl9jYWNoZWRfbXZlbmRvcmlkKDApID09IEFOREVTX1ZFTkRPUl9JRCBcdTAwMjZcdTAwMjZcbi1cdCAgICAocmlzY3ZfY2FjaGVkX21hcmNoaWQoMCkgXHUwMDI2IDB4RkZGRikgPT0gMHg4QTY2KSB7XG4tXHRcdHN0YXRpY19icmFuY2hfZW5hYmxlKFx1MDAyNmt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xuLVx0XHRrdm1faW5mbyhcIlZTLXN0YWdlIFRMQiBkb2VzIG5vdCBjYWNoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlEXFxuXCIpO1xuLVx0fVxuLX1cbi1cbiBsb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbiBcdFx0XHR1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuIHtcbkBAIC0xNzIsOCArMTU5LDYgQEAgc3RhdGljIGludCBfX2luaXQgcmlzY3Zfa3ZtX2luaXQodm9pZClcbiBcdFx0a3ZtX2luZm8oXCJBSUEgYXZhaWxhYmxlIHdpdGggJWQgZ3Vlc3QgZXh0ZXJuYWwgaW50ZXJydXB0c1xcblwiLFxuIFx0XHRcdCBrdm1fcmlzY3ZfYWlhX25yX2hnZWkpO1xuIFxuLVx0a3ZtX3Jpc2N2X3NldHVwX3ZlbmRvcl9mZWF0dXJlcygpO1xuLVxuIFx0a3ZtX3JlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7XG4gXG4gXHRyYyA9IGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdGxiLmMgYi9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuaW5kZXggZmYxYWVhYzRlYjhlYi4uMTU0MWQwNTlhNDJhZCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NtcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcdTAwM2VcbkBAIC0xNjAsMTIgKzE2MSwxOSBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodW5zaWduZWQgbG9uZyB2bWlkKVxuIFxuIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuK1x0Ym9vbCB2Y3B1X21pZ3JhdGVkO1xuK1x0Ym9vbCB2Y3B1X3N3aXRjaGVkO1xuIFx0dW5zaWduZWQgbG9uZyB2bWlkO1xuK1x0aW50ICpsYXN0X3JhbjtcbiBcbi1cdGlmICgha3ZtX3Jpc2N2X2dzdGFnZV92bWlkX2JpdHMoKSB8fFxuLVx0ICAgIHZjcHUtXHUwMDNlYXJjaC5sYXN0X2V4aXRfY3B1ID09IHZjcHUtXHUwMDNlY3B1KVxuK1x0bGFzdF9yYW4gPSB0aGlzX2NwdV9wdHIodmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKTtcbitcdHZjcHVfbWlncmF0ZWQgPSAodmNwdS1cdTAwM2VhcmNoLmxhc3RfZXhpdF9jcHUgIT0gdmNwdS1cdTAwM2VjcHUpO1xuK1x0dmNwdV9zd2l0Y2hlZCA9ICgqbGFzdF9yYW4gIT0gdmNwdS1cdTAwM2V2Y3B1X2lkeCk7XG4rXHRpZiAoIXZjcHVfbWlncmF0ZWQgXHUwMDI2XHUwMDI2ICF2Y3B1X3N3aXRjaGVkKVxuIFx0XHRyZXR1cm47XG4gXG4rXHR2bWlkID0gUkVBRF9PTkNFKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gudm1pZC52bWlkKTtcbitcbiBcdC8qXG4gXHQgKiBPbiBSSVNDLVYgcGxhdGZvcm1zIHdpdGggaGFyZHdhcmUgVk1JRCBzdXBwb3J0LCB3ZSBzaGFyZSBzYW1lXG4gXHQgKiBWTUlEIGZvciBhbGwgVkNQVXMgb2YgYSBwYXJ0aWN1bGFyIEd1ZXN0L1ZNLiBUaGlzIG1lYW5zIHdlIG1pZ2h0XG5AQCAtMTc2LDE2ICsxODQsMjMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdCAqIFRvIGNsZWFudXAgc3RhbGUgVExCIGVudHJpZXMsIHdlIHNpbXBseSBmbHVzaCBhbGwgRy1zdGFnZSBUTEJcbiBcdCAqIGVudHJpZXMgYnkgVk1JRCB3aGVuZXZlciB1bmRlcmx5aW5nIEhvc3QgQ1BVIGNoYW5nZXMgZm9yIGEgVkNQVS5cbiBcdCAqL1xuLVxuLVx0dm1pZCA9IFJFQURfT05DRSh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnZtaWQudm1pZCk7XG4tXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7XG4rXHRpZiAodmNwdV9taWdyYXRlZCBcdTAwMjZcdTAwMjYga3ZtX3Jpc2N2X2dzdGFnZV92bWlkX2JpdHMoKSlcbitcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xuIFxuIFx0Lypcbi1cdCAqIEZsdXNoIFZTLXN0YWdlIFRMQiBlbnRyaWVzIGZvciBpbXBsZW1lbnRhdGlvbiB3aGVyZSBWUy1zdGFnZVxuLVx0ICogVExCIGRvZXMgbm90IGNhaGNlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MgYW5kIFZNSUQuXG4rXHQgKiBHdWVzdC1sb2NhbCBzZmVuY2Uudm1hIG9ubHkgaW52YWxpZGF0ZXMgVlMtc3RhZ2UgdHJhbnNsYXRpb25zIG9uXG4rXHQgKiB0aGUgSG9zdCBDUFUgY3VycmVudGx5IGJhY2tpbmcgdGhlIFZDUFUuIElmIGEgVkNQVSBtaWdyYXRlcywgb3JcbitcdCAqIGlmIHRoaXMgSG9zdCBDUFUgc3dpdGNoZXMgYmV0d2VlbiBWQ1BVcyBvZiB0aGUgc2FtZSBWTSwgc3RhbGVcbitcdCAqIFZTLXN0YWdlIGVudHJpZXMgY2FuIGJlIGxlZnQgYmVoaW5kIG9uIGEgSG9zdCBDUFUgdGhhdCBtaXNzZWQgYVxuK1x0ICogZ3Vlc3QtbG9jYWwgZmx1c2guIEZsdXNoIHRoZSBjdXJyZW50IENQVSdzIFZTLXN0YWdlIGNvbnRleHQgYmVmb3JlXG4rXHQgKiBlbnRlcmluZyB0aGUgZ3Vlc3QuXG4gXHQgKi9cbi1cdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFx1MDAyNmt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpKVxuK1x0aWYgKGt2bV9yaXNjdl9uYWNsX2F2YWlsYWJsZSgpKVxuK1x0XHRuYWNsX2hmZW5jZV92dm1hX2FsbChuYWNsX3NobWVtKCksIHZtaWQpO1xuK1x0ZWxzZVxuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpO1xuK1xuK1x0Kmxhc3RfcmFuID0gdmNwdS1cdTAwM2V2Y3B1X2lkeDtcbiB9XG4gXG4gdm9pZCBrdm1fcmlzY3ZfZmVuY2VfaV9wcm9jZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92bS5jIGIvYXJjaC9yaXNjdi9rdm0vdm0uY1xuaW5kZXggMTNjNjNhZTFhNzhiMi4uMjkwNzIxOGExY2Y1ZCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZtLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZtLmNcbkBAIC05LDYgKzksNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9tbXUuaFx1MDAzZVxuQEAgLTMwLDcgKzMxLDkgQEAgY29uc3Qgc3RydWN0IGt2bV9zdGF0c19oZWFkZXIga3ZtX3ZtX3N0YXRzX2hlYWRlciA9IHtcbiBcbiBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiB7XG4rXHRpbnQgKmxhc3RfcmFuO1xuIFx0aW50IHI7XG4rXHRpbnQgY3B1O1xuIFxuIFx0ciA9IGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkKGt2bSk7XG4gXHRpZiAocilcbkBAIC00Miw2ICs0NSwxNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcdFx0cmV0dXJuIHI7XG4gXHR9XG4gXG4rXHRrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuID0gYWxsb2NfcGVyY3B1KGludCk7XG4rXHRpZiAoIWt2bS1cdTAwM2VhcmNoLmxhc3RfdmNwdV9yYW4pIHtcbitcdFx0a3ZtX3Jpc2N2X21tdV9mcmVlX3BnZChrdm0pO1xuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcdH1cbitcbitcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcbitcdFx0bGFzdF9yYW4gPSBwZXJfY3B1X3B0cihrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuLCBjcHUpO1xuK1x0XHQqbGFzdF9yYW4gPSAtMTtcbitcdH1cbitcbiBcdGt2bV9yaXNjdl9haWFfaW5pdF92bShrdm0pO1xuIFxuIFx0a3ZtX3Jpc2N2X2d1ZXN0X3RpbWVyX2luaXQoa3ZtKTtcbkBAIC01NCw2ICs2OCw4IEBAIHZvaWQga3ZtX2FyY2hfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4gXHRrdm1fZGVzdHJveV92Y3B1cyhrdm0pO1xuIFxuIFx0a3ZtX3Jpc2N2X2FpYV9kZXN0cm95X3ZtKGt2bSk7XG4rXG4rXHRmcmVlX3BlcmNwdShrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKTtcbiB9XG4gXG4gaW50IGt2bV92bV9pb2N0bF9pcnFfbGluZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxX2xldmVsICppcnFsLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTM6MDkuNDUwNTUxNzk3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjI2MzQxMzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEZ1enppbmcgU2Vzc2lvbiBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggc2VyaWVzIHRvdWNoaW5nIFJJU0MtViBLVk0gY29kZS4gU3BlY2lmaWNhbGx5LCBpdCdzIHJlbW92aW5nIHRoZSBga3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYWAgc3RhdGljIGtleSBhbmQgYXNzb2NpYXRlZCB2ZW5kb3Itc3BlY2lmaWMgc2V0dXAgYW5kIGFkZGluZyBhIGBsYXN0X3ZjcHVfcmFuYCBwZXJjcHUgdmFyaWFibGUgdG8gYHN0cnVjdCBrdm1fYXJjaGAuIFRoaXMgYGxhc3RfdmNwdV9yYW5gIGlzIGFsbG9jYXRlZCB1c2luZyBgYWxsb2NfcGVyY3B1KGludClgIGR1cmluZyBga3ZtX2FyY2hfaW5pdF92bWAgYW5kIGluaXRpYWxpemVkIHRvIGAtMWAgZm9yIGVhY2ggcG9zc2libGUgQ1BVLiBJdCBnZXRzIGZyZWVkIGluIGBrdm1fYXJjaF9kZXN0cm95X3ZtYC4gVGhlIHByaW1hcnkgdXNlIGlzIHdpdGhpbiBga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZWAgdG8gY2hlY2sgZm9yIHZDUFUgc3dpdGNoZXMgb24gdGhlIGN1cnJlbnQgQ1BVLCBpbmZsdWVuY2luZyBUTEIgZmx1c2hpbmcgbG9naWMgYmFzZWQgb24gbWlncmF0aW9uIGFuZCBzd2l0Y2hpbmcgZXZlbnRzLlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBtaWdodCB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gTGV0J3MgYW5hbHl6ZS4gVGhlIGBhbGxvY19wZXJjcHVgIGNhbGwgKmRvZXMqIGluaXRpYWxpemUgbWVtb3J5IHRvIHplcm8gYnkgZGVmYXVsdCwgd2hpY2ggaXMgZ29vZC4gQnV0IHRoaXMgcGF0Y2ggZXhwbGljaXRseSBpbml0aWFsaXplcyBpdCB0byBgLTFgIGFueXdheSwgd2hpY2ggcHJvdmlkZXMgZXh0cmEgY29uZmlkZW5jZS4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGJlaW5nIGNvcGllZCB0byB1c2Vyc3BhY2UsIG1lYW5pbmcgbm8gY2hhbmNlIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgaW50ZXJuYWwgZGF0YSB0byB0aGUgb3V0c2lkZSB3b3JsZC4gVGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgS1ZNIGludGVybmFsIHdvcmtpbmdzLCBkZWFsaW5nIHdpdGggVExCIGZsdXNoaW5nLCBhbmQgdGhlIHZhcmlhYmxlIGlzIHVzZWQgZm9yIGludGVybmFsIGNvbnRyb2wgZmxvdy4gVGhlcmUgYXJlIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIG9yIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBmaWVsZHMgdG8gYmUgcmVhZCBkdXJpbmcgcHJvY2Vzc2luZy4gVGhpcyBpbXBsaWVzIHRoZXJlJ3Mgbm8gd2F5IGl0IGludHJvZHVjZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBsZWFkaW5nIHRvIGFuIGluZm9ybWF0aW9uIGxlYWsuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGF0IGBhbGxvY19wZXJjcHVgIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGUgY29kZSBzbmlwcGV0IGNvbmZpcm1zIHRoaXM7IHRoZSBpbml0aWFsaXphdGlvbiBsb29wIGlzIGV4cGxpY2l0LlxuXG5gYGBjXG5cdGt2bS1cdTAwM2VhcmNoLmxhc3RfdmNwdV9yYW4gPSBhbGxvY19wZXJjcHUoaW50KTtcblx0aWYgKCFrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKSB7XG5cdFx0a3ZtX3Jpc2N2X21tdV9mcmVlX3BnZChrdm0pO1xuXHRcdHJldHVybiAtRU5PTUVNO1xuXHR9XG5cblx0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkge1xuXHRcdGxhc3RfcmFuID0gcGVyX2NwdV9wdHIoa3ZtLVx1MDAzZWFyY2gubGFzdF92Y3B1X3JhbiwgY3B1KTtcblx0XHQqbGFzdF9yYW4gPSAtMTtcblx0fVxuYGBgXG5cblNpbmNlIHRoZSBtZW1vcnkgaXMgZnVsbHkgaW5pdGlhbGl6ZWQsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIG5vdGhpbmcgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIEkgYW0gY29uZmlkZW50IHRoYXQgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGhlcmUuIEkgc2VlIG5vIG5lZWQgZm9yIEtNU0FOLiBJJ2xsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYW5kIGRvY3VtZW50IHRoaXMgcmVhc29uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjU4LCJPdXRwdXRUb2tlbnMiOjE4NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUzOjIwLjA3Njg5NTc0N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSBpbnRlcm5hbCBUTEIgZmx1c2hpbmcgbG9naWMgYW5kIGludHJvZHVjZXMgYSBuZXcgcGVyLUNQVSB2YXJpYWJsZSBgbGFzdF92Y3B1X3JhbmAgdG8gdHJhY2sgdGhlIGxhc3QgVkNQVSB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVS4gVGhlIG1lbW9yeSBmb3IgdGhpcyB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgdXNpbmcgYGFsbG9jX3BlcmNwdShpbnQpYCBhbmQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgLTFgIGZvciBhbGwgcG9zc2libGUgQ1BVcyBpbW1lZGlhdGVseSBhZnRlciBhbGxvY2F0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBhbmQgbm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBSSVNDLVYgS1ZNIGludGVybmFsIFRMQiBmbHVzaGluZyBsb2dpYyBhbmQgaW50cm9kdWNlcyBhIG5ldyBwZXItQ1BVIHZhcmlhYmxlIGBsYXN0X3ZjcHVfcmFuYCB0byB0cmFjayB0aGUgbGFzdCBWQ1BVIHRoYXQgcmFuIG9uIGVhY2ggcGh5c2ljYWwgQ1BVLiBUaGUgbWVtb3J5IGZvciB0aGlzIHZhcmlhYmxlIGlzIGFsbG9jYXRlZCB1c2luZyBgYWxsb2NfcGVyY3B1KGludClgIGFuZCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGAtMWAgZm9yIGFsbCBwb3NzaWJsZSBDUFVzIGltbWVkaWF0ZWx5IGFmdGVyIGFsbG9jYXRpb24uIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGRlZmF1bHQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowc55wv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-17 11:01:20 +0000 UTC FinishedAt: 2026-08-17 11:53:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "02e545c4297a26dbbc41df81b831e7f605bcd306", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "02e545c4297a26dbbc41df81b831e7f605bcd306", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "8284d2dd-fd4a-4bd7-98d3-4a57f562f486" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_init_vm", "kvm_arch_destroy_vm", "kvm_riscv_local_tlb_sanitize" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX2luaXRfdm0mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfZGVzdHJveV92bSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSBpbnRlcm5hbCBUTEIgZmx1c2hpbmcgbG9naWMgYW5kIGludHJvZHVjZXMgYSBuZXcgcGVyLUNQVSB2YXJpYWJsZSBgbGFzdF92Y3B1X3JhbmAgdG8gdHJhY2sgdGhlIGxhc3QgVkNQVSB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVS4gVGhlIG1lbW9yeSBmb3IgdGhpcyB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgdXNpbmcgYGFsbG9jX3BlcmNwdShpbnQpYCBhbmQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgLTFgIGZvciBhbGwgcG9zc2libGUgQ1BVcyBpbW1lZGlhdGVseSBhZnRlciBhbGxvY2F0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBhbmQgbm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRMQiBzYW5pdGl6YXRpb24gbG9naWMgZm9yIFJJU0MtViBLVk0sIGludHJvZHVjaW5nIGEgcGVyLUNQVSB0cmFja2luZyBvZiB0aGUgbGFzdCBWQ1BVIHJhbiB0byBmbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyB1cG9uIFZDUFUgbWlncmF0aW9uIG9yIHN3aXRjaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24gcmVhY2hhYmxlIHZpYSBzdGFuZGFyZCBLVk0gaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDZlYmEyYTgwMjk2NzZkMjA5YzJhNzlmNzMxMTY5MTAwNjVmOWFiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDExOjUyOjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggMjQ1ODUzMDRjMDJiMS4uMzk2YWM2MjA5YzUwZCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5AQCAtOTEsNiAmIzQzOzkxLDkgQEAgc3RydWN0IGt2bV9hcmNoIHtcbiBcdC8qIEctc3RhZ2Ugdm1pZCAqL1xuIFx0c3RydWN0IGt2bV92bWlkIHZtaWQ7XG4gXG4mIzQzO1x0LyogTGFzdCBWQ1BVIHRoYXQgcmFuIG9uIGVhY2ggcGh5c2ljYWwgQ1BVICovXG4mIzQzO1x0aW50IF9fcGVyY3B1ICpsYXN0X3ZjcHVfcmFuO1xuJiM0MztcbiBcdC8qIEctc3RhZ2UgcGFnZSB0YWJsZSAqL1xuIFx0cGdkX3QgKnBnZDtcbiBcdHBoeXNfYWRkcl90IHBnZF9waHlzO1xuQEAgLTMzMCw3ICYjNDM7MzMzLDQgQEAgYm9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9yZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuLS8qIEZsYWdzIHJlcHJlc2VudGluZyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBkZXRhaWxzICovXG4tREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xuLVxuICNlbmRpZiAvKiBfX1JJU0NWX0tWTV9IT1NUX0hfXyAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuaW5kZXggMGYzZmUzOTg2ZmMwMi4uYjFiYmMwODM1MjdjZiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG5AQCAtMTAsMjMgJiM0MzsxMCwxMCBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4tI2luY2x1ZGUgXHUwMDNjYXNtL2NwdWZlYXR1cmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fbW11LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX25hY2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9zYmkuaFx1MDAzZVxuIFxuLURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xuLVxuLXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9zZXR1cF92ZW5kb3JfZmVhdHVyZXModm9pZClcbi17XG4tXHQvKiBBbmRlcyBBWDY2OiBzcGxpdCB0d28tc3RhZ2UgVExCcyAqL1xuLVx0aWYgKHJpc2N2X2NhY2hlZF9tdmVuZG9yaWQoMCkgPT0gQU5ERVNfVkVORE9SX0lEIFx1MDAyNlx1MDAyNlxuLVx0ICAgIChyaXNjdl9jYWNoZWRfbWFyY2hpZCgwKSBcdTAwMjYgMHhGRkZGKSA9PSAweDhBNjYpIHtcbi1cdFx0c3RhdGljX2JyYW5jaF9lbmFibGUoXHUwMDI2a3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XG4tXHRcdGt2bV9pbmZvKFwmIzM0O1ZTLXN0YWdlIFRMQiBkb2VzIG5vdCBjYWNoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlEXFxuXCYjMzQ7KTtcbi1cdH1cbi19XG4tXG4gbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4gXHRcdFx0dW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbiB7XG5AQCAtMTcyLDggJiM0MzsxNTksNiBAQCBzdGF0aWMgaW50IF9faW5pdCByaXNjdl9rdm1faW5pdCh2b2lkKVxuIFx0XHRrdm1faW5mbyhcJiMzNDtBSUEgYXZhaWxhYmxlIHdpdGggJWQgZ3Vlc3QgZXh0ZXJuYWwgaW50ZXJydXB0c1xcblwmIzM0OyxcbiBcdFx0XHQga3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpKTtcbiBcbi1cdGt2bV9yaXNjdl9zZXR1cF92ZW5kb3JfZmVhdHVyZXMoKTtcbi1cbiBcdGt2bV9yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xuIFxuIFx0cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbmluZGV4IGZmMWFlYWM0ZWI4ZWIuLjE1NDFkMDU5YTQyYWQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbkBAIC04LDYgJiM0Mzs4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NtcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcdTAwM2VcbkBAIC0xNjAsMTIgJiM0MzsxNjEsMTkgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZClcbiBcbiB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbiYjNDM7XHRib29sIHZjcHVfbWlncmF0ZWQ7XG4mIzQzO1x0Ym9vbCB2Y3B1X3N3aXRjaGVkO1xuIFx0dW5zaWduZWQgbG9uZyB2bWlkO1xuJiM0MztcdGludCAqbGFzdF9yYW47XG4gXG4tXHRpZiAoIWt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkgfHxcbi1cdCAgICB2Y3B1LVx1MDAzZWFyY2gubGFzdF9leGl0X2NwdSA9PSB2Y3B1LVx1MDAzZWNwdSlcbiYjNDM7XHRsYXN0X3JhbiA9IHRoaXNfY3B1X3B0cih2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLmxhc3RfdmNwdV9yYW4pO1xuJiM0MztcdHZjcHVfbWlncmF0ZWQgPSAodmNwdS1cdTAwM2VhcmNoLmxhc3RfZXhpdF9jcHUgIT0gdmNwdS1cdTAwM2VjcHUpO1xuJiM0MztcdHZjcHVfc3dpdGNoZWQgPSAoKmxhc3RfcmFuICE9IHZjcHUtXHUwMDNldmNwdV9pZHgpO1xuJiM0MztcdGlmICghdmNwdV9taWdyYXRlZCBcdTAwMjZcdTAwMjYgIXZjcHVfc3dpdGNoZWQpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHR2bWlkID0gUkVBRF9PTkNFKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gudm1pZC52bWlkKTtcbiYjNDM7XG4gXHQvKlxuIFx0ICogT24gUklTQy1WIHBsYXRmb3JtcyB3aXRoIGhhcmR3YXJlIFZNSUQgc3VwcG9ydCwgd2Ugc2hhcmUgc2FtZVxuIFx0ICogVk1JRCBmb3IgYWxsIFZDUFVzIG9mIGEgcGFydGljdWxhciBHdWVzdC9WTS4gVGhpcyBtZWFucyB3ZSBtaWdodFxuQEAgLTE3NiwxNiAmIzQzOzE4NCwyMyBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0ICogVG8gY2xlYW51cCBzdGFsZSBUTEIgZW50cmllcywgd2Ugc2ltcGx5IGZsdXNoIGFsbCBHLXN0YWdlIFRMQlxuIFx0ICogZW50cmllcyBieSBWTUlEIHdoZW5ldmVyIHVuZGVybHlpbmcgSG9zdCBDUFUgY2hhbmdlcyBmb3IgYSBWQ1BVLlxuIFx0ICovXG4tXG4tXHR2bWlkID0gUkVBRF9PTkNFKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gudm1pZC52bWlkKTtcbi1cdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTtcbiYjNDM7XHRpZiAodmNwdV9taWdyYXRlZCBcdTAwMjZcdTAwMjYga3ZtX3Jpc2N2X2dzdGFnZV92bWlkX2JpdHMoKSlcbiYjNDM7XHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTtcbiBcbiBcdC8qXG4tXHQgKiBGbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyBmb3IgaW1wbGVtZW50YXRpb24gd2hlcmUgVlMtc3RhZ2Vcbi1cdCAqIFRMQiBkb2VzIG5vdCBjYWhjZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlELlxuJiM0MztcdCAqIEd1ZXN0LWxvY2FsIHNmZW5jZS52bWEgb25seSBpbnZhbGlkYXRlcyBWUy1zdGFnZSB0cmFuc2xhdGlvbnMgb25cbiYjNDM7XHQgKiB0aGUgSG9zdCBDUFUgY3VycmVudGx5IGJhY2tpbmcgdGhlIFZDUFUuIElmIGEgVkNQVSBtaWdyYXRlcywgb3JcbiYjNDM7XHQgKiBpZiB0aGlzIEhvc3QgQ1BVIHN3aXRjaGVzIGJldHdlZW4gVkNQVXMgb2YgdGhlIHNhbWUgVk0sIHN0YWxlXG4mIzQzO1x0ICogVlMtc3RhZ2UgZW50cmllcyBjYW4gYmUgbGVmdCBiZWhpbmQgb24gYSBIb3N0IENQVSB0aGF0IG1pc3NlZCBhXG4mIzQzO1x0ICogZ3Vlc3QtbG9jYWwgZmx1c2guIEZsdXNoIHRoZSBjdXJyZW50IENQVSYjMzk7cyBWUy1zdGFnZSBjb250ZXh0IGJlZm9yZVxuJiM0MztcdCAqIGVudGVyaW5nIHRoZSBndWVzdC5cbiBcdCAqL1xuLVx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2a3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSkpXG4mIzQzO1x0aWYgKGt2bV9yaXNjdl9uYWNsX2F2YWlsYWJsZSgpKVxuJiM0MztcdFx0bmFjbF9oZmVuY2VfdnZtYV9hbGwobmFjbF9zaG1lbSgpLCB2bWlkKTtcbiYjNDM7XHRlbHNlXG4gXHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodm1pZCk7XG4mIzQzO1xuJiM0MztcdCpsYXN0X3JhbiA9IHZjcHUtXHUwMDNldmNwdV9pZHg7XG4gfVxuIFxuIHZvaWQga3ZtX3Jpc2N2X2ZlbmNlX2lfcHJvY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdm0uYyBiL2FyY2gvcmlzY3Yva3ZtL3ZtLmNcbmluZGV4IDEzYzYzYWUxYTc4YjIuLjI5MDcyMThhMWNmNWQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92bS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92bS5jXG5AQCAtOSw2ICYjNDM7OSw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9tbXUuaFx1MDAzZVxuQEAgLTMwLDcgJiM0MzszMSw5IEBAIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfaGVhZGVyIGt2bV92bV9zdGF0c19oZWFkZXIgPSB7XG4gXG4gaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4ge1xuJiM0MztcdGludCAqbGFzdF9yYW47XG4gXHRpbnQgcjtcbiYjNDM7XHRpbnQgY3B1O1xuIFxuIFx0ciA9IGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkKGt2bSk7XG4gXHRpZiAocilcbkBAIC00Miw2ICYjNDM7NDUsMTcgQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4gXHRcdHJldHVybiByO1xuIFx0fVxuIFxuJiM0MztcdGt2bS1cdTAwM2VhcmNoLmxhc3RfdmNwdV9yYW4gPSBhbGxvY19wZXJjcHUoaW50KTtcbiYjNDM7XHRpZiAoIWt2bS1cdTAwM2VhcmNoLmxhc3RfdmNwdV9yYW4pIHtcbiYjNDM7XHRcdGt2bV9yaXNjdl9tbXVfZnJlZV9wZ2Qoa3ZtKTtcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkge1xuJiM0MztcdFx0bGFzdF9yYW4gPSBwZXJfY3B1X3B0cihrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuLCBjcHUpO1xuJiM0MztcdFx0Kmxhc3RfcmFuID0gLTE7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGt2bV9yaXNjdl9haWFfaW5pdF92bShrdm0pO1xuIFxuIFx0a3ZtX3Jpc2N2X2d1ZXN0X3RpbWVyX2luaXQoa3ZtKTtcbkBAIC01NCw2ICYjNDM7NjgsOCBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxuIFx0a3ZtX2Rlc3Ryb3lfdmNwdXMoa3ZtKTtcbiBcbiBcdGt2bV9yaXNjdl9haWFfZGVzdHJveV92bShrdm0pO1xuJiM0MztcbiYjNDM7XHRmcmVlX3BlcmNwdShrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKTtcbiB9XG4gXG4gaW50IGt2bV92bV9pb2N0bF9pcnFfbGluZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxX2xldmVsICppcnFsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF9pbml0X3ZtJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX2Rlc3Ryb3lfdm0mIzM0OywKICAgICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVExCIHNhbml0aXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIEtWTSwgaW50cm9kdWNpbmcgYSBwZXItQ1BVIHRyYWNraW5nIG9mIHRoZSBsYXN0IFZDUFUgcmFuIHRvIGZsdXNoIFZTLXN0YWdlIFRMQiBlbnRyaWVzIHVwb24gVkNQVSBtaWdyYXRpb24gb3Igc3dpdGNoaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgUklTQy1WIEtWTSBpbXBsZW1lbnRhdGlvbiByZWFjaGFibGUgdmlhIHN0YW5kYXJkIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNmViYTJhODAyOTY3NmQyMDljMmE3OWY3MzExNjkxMDA2NWY5YWJkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMTcgMTE6NTI6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggMjQ1ODUzMDRjMDJiMS4uMzk2YWM2MjA5YzUwZCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtOTEsNiAmIzQzOzkxLDkgQEAgc3RydWN0IGt2bV9hcmNoIHsKIAkvKiBHLXN0YWdlIHZtaWQgKi8KIAlzdHJ1Y3Qga3ZtX3ZtaWQgdm1pZDsKIAomIzQzOwkvKiBMYXN0IFZDUFUgdGhhdCByYW4gb24gZWFjaCBwaHlzaWNhbCBDUFUgKi8KJiM0MzsJaW50IF9fcGVyY3B1ICpsYXN0X3ZjcHVfcmFuOwomIzQzOwogCS8qIEctc3RhZ2UgcGFnZSB0YWJsZSAqLwogCXBnZF90ICpwZ2Q7CiAJcGh5c19hZGRyX3QgcGdkX3BoeXM7CkBAIC0zMzAsNyAmIzQzOzMzMyw0IEBAIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogCiB2b2lkIGt2bV9yaXNjdl92Y3B1X3JlY29yZF9zdGVhbF90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKLS8qIEZsYWdzIHJlcHJlc2VudGluZyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBkZXRhaWxzICovCi1ERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7Ci0KICNlbmRpZiAvKiBfX1JJU0NWX0tWTV9IT1NUX0hfXyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jCmluZGV4IDBmM2ZlMzk4NmZjMDIuLmIxYmJjMDgzNTI3Y2YgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKQEAgLTEwLDIzICYjNDM7MTAsMTAgQEAKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwotI2luY2x1ZGUgJmx0O2FzbS9jcHVmZWF0dXJlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2t2bV9tbXUuaCZndDsKICNpbmNsdWRlICZsdDthc20va3ZtX25hY2wuaCZndDsKICNpbmNsdWRlICZsdDthc20vc2JpLmgmZ3Q7CiAKLURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpOwotCi1zdGF0aWMgdm9pZCBrdm1fcmlzY3Zfc2V0dXBfdmVuZG9yX2ZlYXR1cmVzKHZvaWQpCi17Ci0JLyogQW5kZXMgQVg2Njogc3BsaXQgdHdvLXN0YWdlIFRMQnMgKi8KLQlpZiAocmlzY3ZfY2FjaGVkX212ZW5kb3JpZCgwKSA9PSBBTkRFU19WRU5ET1JfSUQgJmFtcDsmYW1wOwotCSAgICAocmlzY3ZfY2FjaGVkX21hcmNoaWQoMCkgJmFtcDsgMHhGRkZGKSA9PSAweDhBNjYpIHsKLQkJc3RhdGljX2JyYW5jaF9lbmFibGUoJmFtcDtrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKTsKLQkJa3ZtX2luZm8oJiMzNDtWUy1zdGFnZSBUTEIgZG9lcyBub3QgY2FjaGUgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBhbmQgVk1JRFxuJiMzNDspOwotCX0KLX0KLQogbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsCiAJCQl1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKQogewpAQCAtMTcyLDggJiM0MzsxNTksNiBAQCBzdGF0aWMgaW50IF9faW5pdCByaXNjdl9rdm1faW5pdCh2b2lkKQogCQlrdm1faW5mbygmIzM0O0FJQSBhdmFpbGFibGUgd2l0aCAlZCBndWVzdCBleHRlcm5hbCBpbnRlcnJ1cHRzXG4mIzM0OywKIAkJCSBrdm1fcmlzY3ZfYWlhX25yX2hnZWkpOwogCi0Ja3ZtX3Jpc2N2X3NldHVwX3ZlbmRvcl9mZWF0dXJlcygpOwotCiAJa3ZtX3JlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7CiAKIAlyYyA9IGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS90bGIuYyBiL2FyY2gvcmlzY3Yva3ZtL3RsYi5jCmluZGV4IGZmMWFlYWM0ZWI4ZWIuLjE1NDFkMDU5YTQyYWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3RsYi5jCkBAIC04LDYgJiM0Mzs4LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9lcnJuby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vyci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zbXAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9jYWNoZWZsdXNoLmgmZ3Q7CkBAIC0xNjAsMTIgJiM0MzsxNjEsMTkgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZCkKIAogdm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIHsKJiM0MzsJYm9vbCB2Y3B1X21pZ3JhdGVkOwomIzQzOwlib29sIHZjcHVfc3dpdGNoZWQ7CiAJdW5zaWduZWQgbG9uZyB2bWlkOwomIzQzOwlpbnQgKmxhc3RfcmFuOwogCi0JaWYgKCFrdm1fcmlzY3ZfZ3N0YWdlX3ZtaWRfYml0cygpIHx8Ci0JICAgIHZjcHUtJmd0O2FyY2gubGFzdF9leGl0X2NwdSA9PSB2Y3B1LSZndDtjcHUpCiYjNDM7CWxhc3RfcmFuID0gdGhpc19jcHVfcHRyKHZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuKTsKJiM0MzsJdmNwdV9taWdyYXRlZCA9ICh2Y3B1LSZndDthcmNoLmxhc3RfZXhpdF9jcHUgIT0gdmNwdS0mZ3Q7Y3B1KTsKJiM0MzsJdmNwdV9zd2l0Y2hlZCA9ICgqbGFzdF9yYW4gIT0gdmNwdS0mZ3Q7dmNwdV9pZHgpOwomIzQzOwlpZiAoIXZjcHVfbWlncmF0ZWQgJmFtcDsmYW1wOyAhdmNwdV9zd2l0Y2hlZCkKIAkJcmV0dXJuOwogCiYjNDM7CXZtaWQgPSBSRUFEX09OQ0UodmNwdS0mZ3Q7a3ZtLSZndDthcmNoLnZtaWQudm1pZCk7CiYjNDM7CiAJLyoKIAkgKiBPbiBSSVNDLVYgcGxhdGZvcm1zIHdpdGggaGFyZHdhcmUgVk1JRCBzdXBwb3J0LCB3ZSBzaGFyZSBzYW1lCiAJICogVk1JRCBmb3IgYWxsIFZDUFVzIG9mIGEgcGFydGljdWxhciBHdWVzdC9WTS4gVGhpcyBtZWFucyB3ZSBtaWdodApAQCAtMTc2LDE2ICYjNDM7MTg0LDIzIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJICogVG8gY2xlYW51cCBzdGFsZSBUTEIgZW50cmllcywgd2Ugc2ltcGx5IGZsdXNoIGFsbCBHLXN0YWdlIFRMQgogCSAqIGVudHJpZXMgYnkgVk1JRCB3aGVuZXZlciB1bmRlcmx5aW5nIEhvc3QgQ1BVIGNoYW5nZXMgZm9yIGEgVkNQVS4KIAkgKi8KLQotCXZtaWQgPSBSRUFEX09OQ0UodmNwdS0mZ3Q7a3ZtLSZndDthcmNoLnZtaWQudm1pZCk7Ci0Ja3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpOwomIzQzOwlpZiAodmNwdV9taWdyYXRlZCAmYW1wOyZhbXA7IGt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkpCiYjNDM7CQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7CiAKIAkvKgotCSAqIEZsdXNoIFZTLXN0YWdlIFRMQiBlbnRyaWVzIGZvciBpbXBsZW1lbnRhdGlvbiB3aGVyZSBWUy1zdGFnZQotCSAqIFRMQiBkb2VzIG5vdCBjYWhjZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlELgomIzQzOwkgKiBHdWVzdC1sb2NhbCBzZmVuY2Uudm1hIG9ubHkgaW52YWxpZGF0ZXMgVlMtc3RhZ2UgdHJhbnNsYXRpb25zIG9uCiYjNDM7CSAqIHRoZSBIb3N0IENQVSBjdXJyZW50bHkgYmFja2luZyB0aGUgVkNQVS4gSWYgYSBWQ1BVIG1pZ3JhdGVzLCBvcgomIzQzOwkgKiBpZiB0aGlzIEhvc3QgQ1BVIHN3aXRjaGVzIGJldHdlZW4gVkNQVXMgb2YgdGhlIHNhbWUgVk0sIHN0YWxlCiYjNDM7CSAqIFZTLXN0YWdlIGVudHJpZXMgY2FuIGJlIGxlZnQgYmVoaW5kIG9uIGEgSG9zdCBDUFUgdGhhdCBtaXNzZWQgYQomIzQzOwkgKiBndWVzdC1sb2NhbCBmbHVzaC4gRmx1c2ggdGhlIGN1cnJlbnQgQ1BVJiMzOTtzIFZTLXN0YWdlIGNvbnRleHQgYmVmb3JlCiYjNDM7CSAqIGVudGVyaW5nIHRoZSBndWVzdC4KIAkgKi8KLQlpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgmYW1wO2t2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpKQomIzQzOwlpZiAoa3ZtX3Jpc2N2X25hY2xfYXZhaWxhYmxlKCkpCiYjNDM7CQluYWNsX2hmZW5jZV92dm1hX2FsbChuYWNsX3NobWVtKCksIHZtaWQpOwomIzQzOwllbHNlCiAJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodm1pZCk7CiYjNDM7CiYjNDM7CSpsYXN0X3JhbiA9IHZjcHUtJmd0O3ZjcHVfaWR4OwogfQogCiB2b2lkIGt2bV9yaXNjdl9mZW5jZV9pX3Byb2Nlc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdm0uYyBiL2FyY2gvcmlzY3Yva3ZtL3ZtLmMKaW5kZXggMTNjNjNhZTFhNzhiMi4uMjkwNzIxOGExY2Y1ZCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L2t2bS92bS5jCkBAIC05LDYgJiM0Mzs5LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9lcnJuby5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2Vyci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9wZXJjcHUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91YWNjZXNzLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva3ZtX2hvc3QuaCZndDsKICNpbmNsdWRlICZsdDthc20va3ZtX21tdS5oJmd0OwpAQCAtMzAsNyAmIzQzOzMxLDkgQEAgY29uc3Qgc3RydWN0IGt2bV9zdGF0c19oZWFkZXIga3ZtX3ZtX3N0YXRzX2hlYWRlciA9IHsKIAogaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpCiB7CiYjNDM7CWludCAqbGFzdF9yYW47CiAJaW50IHI7CiYjNDM7CWludCBjcHU7CiAKIAlyID0ga3ZtX3Jpc2N2X21tdV9hbGxvY19wZ2Qoa3ZtKTsKIAlpZiAocikKQEAgLTQyLDYgJiM0Mzs0NSwxNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSkKIAkJcmV0dXJuIHI7CiAJfQogCiYjNDM7CWt2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuID0gYWxsb2NfcGVyY3B1KGludCk7CiYjNDM7CWlmICgha3ZtLSZndDthcmNoLmxhc3RfdmNwdV9yYW4pIHsKJiM0MzsJCWt2bV9yaXNjdl9tbXVfZnJlZV9wZ2Qoa3ZtKTsKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwl9CiYjNDM7CiYjNDM7CWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsKJiM0MzsJCWxhc3RfcmFuID0gcGVyX2NwdV9wdHIoa3ZtLSZndDthcmNoLmxhc3RfdmNwdV9yYW4sIGNwdSk7CiYjNDM7CQkqbGFzdF9yYW4gPSAtMTsKJiM0MzsJfQomIzQzOwogCWt2bV9yaXNjdl9haWFfaW5pdF92bShrdm0pOwogCiAJa3ZtX3Jpc2N2X2d1ZXN0X3RpbWVyX2luaXQoa3ZtKTsKQEAgLTU0LDYgJiM0Mzs2OCw4IEBAIHZvaWQga3ZtX2FyY2hfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pCiAJa3ZtX2Rlc3Ryb3lfdmNwdXMoa3ZtKTsKIAogCWt2bV9yaXNjdl9haWFfZGVzdHJveV92bShrdm0pOwomIzQzOwomIzQzOwlmcmVlX3BlcmNwdShrdm0tJmd0O2FyY2gubGFzdF92Y3B1X3Jhbik7CiB9CiAKIGludCBrdm1fdm1faW9jdGxfaXJxX2xpbmUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycV9sZXZlbCAqaXJxbCwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI2MQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDQxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGlzIFJJU0MtViBLVk0gUGF0Y2ggU2VyaWVzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggc2VyaWVzICpkb2VzKiBpbnRyb2R1Y2UgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBSSVNDLVYgS1ZNIGtlcm5lbCBjb2RlLCBtZWFuaW5nIGl0JiMzOTtzIHByaW1lIGZvciBmdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgY29uY2VudHJhdGVkIGluIGBhcmNoL3Jpc2N2L2t2bWAgYW5kIHJldm9sdmUgYXJvdW5kIFRMQiBzYW5pdGl6YXRpb24g4oCTIHNwZWNpZmljYWxseSBob3cgd2UgaGFuZGxlIFZpcnR1YWwgU3RhZ2UgKFZTKSBUTEIgZW50cmllcyBvbiBSSVNDLVYuCgpUaGUgbWVhdCBvZiBpdCBpcyB0aGUgYWRkaXRpb24gb2YgdGhpcyBgbGFzdF92Y3B1X3JhbmAgcGVyY3B1IHZhcmlhYmxlIHdpdGhpbiBga3ZtX2FyY2hgLiBUaGlzIGxldHMgdXMgdHJhY2sgdGhlIG1vc3QgcmVjZW50IFZDUFUgdG8gZXhlY3V0ZSBvbiBlYWNoIHBoeXNpY2FsIENQVSwgd2hpY2ggaXMgZnVuZGFtZW50YWwgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSBoYXMgYmVlbiBhbnkgbWlncmF0aW9uLiBBbmQsIGltcG9ydGFudGx5LCBpZiB0aGVyZSBoYXMgYmVlbiBtaWdyYXRpb24sIHdlIGZsdXNoIHRoZSBWUy1zdGFnZSBUTEIgZW50cmllcy4gSXQgYWxzbyBtZWFucyB3ZSYjMzk7dmUgZHJvcHBlZCB0aGUgQW5kZXMtc3BlY2lmaWMgZmVhdHVyZXMgcmVsYXRlZCB0byBUTEIgZmx1c2hpbmcuCgpGdW5jdGlvbmFsbHksIHRoaXMgbWVhbnMgdGhlIFRMQiBpbnZhbGlkYXRpb24gc3RyYXRlZ3kgY2hhbmdlZCBpbiBLVk0sIHdoaWNoIGlzIGEgY29yZSBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5IGZvciBhbnkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBjaGFuZ2UgaXMgc2lnbmlmaWNhbnQgZW5vdWdoIHRvIHdhcnJhbnQgZnV6emluZyBhdHRlbnRpb24uIFRlc3RpbmcgS1ZNIG9uIFJJU0MtViBpcyBkb2FibGUgd2l0aCBRRU1VLCBzbyB0aGF0JiMzOTtzIGEgY2hlY2sgaW4gdGhlICYjMzQ7eWVzLCBpdCYjMzk7cyByZWFjaGFibGUmIzM0OyBib3guIFRodXMsIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpOb3csIHRoZSBpbXBvcnRhbnQgcGFydDogd2hhdCBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkPyBXZSBuZWVkIHRvIHRhcmdldCB0aGUgZnV6emluZyBlZmZvcnRzLiBUaGUgYWZmZWN0ZWQgZnVuY3Rpb25zIGFyZTogYGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVgLCBga3ZtX2FyY2hfaW5pdF92bWAsIGFuZCBga3ZtX2FyY2hfZGVzdHJveV92bWAuIE5vdywgSSB3YW50IHRvIGNvbmZpcm0gd2hlcmUgYGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVgIGlzIGNhbGxlZCB0byBlbnN1cmUgd2UgY2FuIGJ1aWxkIHRoZSBhcHByb3ByaWF0ZSB0ZXN0IGNvdmVyYWdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdGxiLmg9NTE9dm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZCk7XG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV90bGIuaDo1Mjp2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX3RsYi5oLTUzLVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3RsYi5jPTE1MT12b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodW5zaWduZWQgbG9uZyB2bWlkKVxuLS1cbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTE2MS1cbmFyY2gvcmlzY3Yva3ZtL3RsYi5jOjE2Mjp2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9yaXNjdi9rdm0vdGxiLmMtMTYzLXtcbi0tXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM9ODY0PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTk3MC1cdFx0ICovXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6OTcxOlx0XHRrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHZjcHUpO1xuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTk3Mi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDM4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEtWTS9SSVNDLVYgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkgbmVlZCB0byBpZGVudGlmeSBzdWl0YWJsZSBlbnRyeSBwb2ludHMgd2l0aGluIHRoZSBSSVNDLVYgS1ZNIGNvZGUsIHNwZWNpZmljYWxseSBhdm9pZGluZyBob3QtcGF0aCBmdW5jdGlvbnMgdG8ga2VlcCB0aGUgdGVzdGluZyBkaXN0cmlidXRpb24gZmFpci4gVGhlIHByb21wdCYjMzk7cyBlbXBoYXNpcyBvbiBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgaXMga2V5IGhlcmUuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAsIGJlY2F1c2UgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiBWQ1BVIGV4ZWN1dGlvbiDigJMgdGhlIGBLVk1fUlVOYCBpb2N0bCBoYW5kbGVyLiBBbmQgdGhlbiBJIHJlbWVtYmVyZWQsICYjMzQ7YXZvaWQgaG90IHBhdGhzISYjMzQ7IFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgbG9vcCBmb3IgZXhlY3V0aW9uLCB3aGljaCB3aWxsIHNrZXcgYW55IGRpc3RyaWJ1dGlvbi4gYGt2bV9hcmNoX2luaXRfdm1gIGFuZCBga3ZtX2FyY2hfZGVzdHJveV92bWAgYXJlIGRlZmluaXRlbHkgc2FmZSwgYnV0IGFyZSB0aGV5IHRoZSBvbmx5IG9wdGlvbnM/CgpUaGUgcHJvbXB0IGRpZCBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gSSBsb29rZWQgYXQgYGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVgIGlzIGNhbGxlZCBmcm9tIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAuIFRoYXQgc2hvdWxkIGJlIGdvb2QhIEl0JiMzOTtzIG5vdCBzdGF0aWMgYW5kIG5vdCBpbmxpbmVkLgoKVGltZSB0byBsb29rIGluIEtjb25maWcgYW5kIGNoZWNrIGZvciBSSVNDLVYgS1ZNLXJlbGF0ZWQgZW50cnkgcG9pbnRzIGFuZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvcmlzY3Yva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMjcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBLVk0gb24gUklTQy1WIEtjb25maWcqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkgYW5kIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEtWTSBvbiBSSVNDLVYuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBhcmNoaXRlY3R1cmFsIGxhbmRzY2FwZSBhbmQgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFuZCBmdW5jdGlvbmFsaXRpZXMgYXJlIGV4cG9zZWQgdGhyb3VnaCB0aGUgS2NvbmZpZyBzeXN0ZW0uIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ2VuZXJpYyBLVk0gb3B0aW9ucyBhbmQgdGhlIFJJU0MtViBzcGVjaWZpYyBvbmVzLiBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHRoaW5ncyBsaWtlIHRoZSB2aXJ0dWFsIG1hY2hpbmUgZXh0ZW5zaW9ucyAoVk1FKSwgYW55IGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQgc3BlY2lmaWMgdG8gUklTQy1WIGltcGxlbWVudGF0aW9ucyBJIGFtIGZhbWlsaWFyIHdpdGgsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGRpZmZlcmVudCBwcml2aWxlZ2UgbGV2ZWxzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5JiMzOTt2ZSBoYW5kbGVkIHRoZSB2YXJpb3VzIHByaXZpbGVnZSBsZXZlbHMgdG9vLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgY29kZSBoYW5kbGVzIHRoaW5ncyBsaWtlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBvciBtZW1vcnkgbWFuYWdlbWVudCBpbiBnZW5lcmFsLCBhbmQgd2hldGhlciB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSYjMzk7bGwgbmVlZCB0byBjb3JyZWxhdGUgdGhlIEtjb25maWcgb3B0aW9ucyB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjb2RlIHRvIGRldmVsb3AgYSBzb2xpZCBtZW50YWwgbW9kZWwuIExldCYjMzk7cyBzdGFydCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9yaXNjdi9rdm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBLVk0gY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRzb3VyY2UgXCYjMzQ7dmlydC9rdm0vS2NvbmZpZ1wmIzM0O1xuICAgNzpcdFxuICAgODpcdG1lbnVjb25maWcgVklSVFVBTElaQVRJT05cbiAgIDk6XHRcdGJvb2wgXCYjMzQ7VmlydHVhbGl6YXRpb25cJiMzNDtcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW5cbiAgMTI6XHRcdCAgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXG4gIDEzOlx0XHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXG4gIDE0Olx0XG4gIDE1Olx0XHQgIElmIHlvdSBzYXkgTiwgYWxsIG9wdGlvbnMgaW4gdGhpcyBzdWJtZW51IHdpbGwgYmUgc2tpcHBlZCBhbmRcbiAgMTY6XHRcdCAgZGlzYWJsZWQuXG4gIDE3Olx0XG4gIDE4Olx0aWYgVklSVFVBTElaQVRJT05cbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgS1ZNXG4gIDIxOlx0XHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbiAgMjI6XHRcdGRlcGVuZHMgb24gUklTQ1ZfU0JJIFx1MDAyNlx1MDAyNiBNTVVcbiAgMjM6XHRcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXG4gIDI0Olx0XHRzZWxlY3QgSEFWRV9LVk1fSVJRX1JPVVRJTkdcbiAgMjU6XHRcdHNlbGVjdCBIQVZFX0tWTV9NU0lcbiAgMjY6XHRcdHNlbGVjdCBIQVZFX0tWTV9SRUFET05MWV9NRU1cbiAgMjc6XHRcdHNlbGVjdCBIQVZFX0tWTV9ESVJUWV9SSU5HX0FDUV9SRUxcbiAgMjg6XHRcdHNlbGVjdCBLVk1fQ09NTU9OXG4gIDI5Olx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG4gIDMwOlx0XHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcbiAgMzE6XHRcdHNlbGVjdCBLVk1fTU1JT1xuICAzMjpcdFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXG4gIDMzOlx0XHRzZWxlY3QgU0NIRURfSU5GT1xuICAzNDpcdFx0c2VsZWN0IEdVRVNUX1BFUkZfRVZFTlRTIGlmIFBFUkZfRVZFTlRTXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFN1cHBvcnQgaG9zdGluZyB2aXJ0dWFsaXplZCBndWVzdCBtYWNoaW5lcy5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMzk6XHRcbiAgNDA6XHRlbmRpZiAjIFZJUlRVQUxJWkFUSU9OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAyMgoJCQkJCQkJb3V0cHV0OiAxMzkKCQkJCQkJCXRob3VnaHRzOiAzNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUklTQy1WIEtWTSBDb25maWd1cmF0aW9uIGFuZCBSZWxldmFudCBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gYmVzdCBjb25maWd1cmUgYW5kIGFuYWx5emUgdGhpcyBSSVNDLVYgS1ZNIGNvZGUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSBJIG5lZWQgdG8gZW5hYmxlIGlzIGBLVk1gIGl0c2VsZi4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgdGhlIGNvcmUuIGBLVk1gIGhpbmdlcyBvbiBgVklSVFVBTElaQVRJT05gLCBgUklTQ1ZfU0JJYCwgYW5kIGBNTVVgLCBzbyB0aG9zZSBhcmUgbGlrZWx5IHByZXJlcXVpc2l0ZXMsIHRob3VnaCBJIGRvbiYjMzk7dCBuZWVkIHRvIGV4cGxpY2l0bHkgbGlzdCB0aGVtIHNpbmNlIGVuYWJsaW5nIGBLVk1gIHNob3VsZCB0YWtlIGNhcmUgb2YgdGhhdC4KCk5vdywgbGV0JiMzOTtzIGlkZW50aWZ5IHRoZSBrZXkgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLiBCYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24sIGFuZCBteSBrbm93bGVkZ2Ugb2YgS1ZNLCBJJiMzOTttIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIHN0YW5kYXJkIEtWTSBBUEkgY2FsbHMgbGlrZSBga3ZtX2FyY2hfaW5pdF92bWAgYW5kIGBrdm1fYXJjaF9kZXN0cm95X3ZtYC4gVGhlc2UgYXJlIHRoZSBmb3VuZGF0aW9uYWwgc2V0dXAgYW5kIHRlYXJkb3duIHBvaW50cyBmb3IgYSBWTS4gVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYCBiZWluZyBzcGVjaWZpYyB0byBSSVNDLVYgS1ZNLCBhbmQgaXQmIzM5O3MgdGhlIHRhcmdldCBvZiB0aGUgcGF0Y2ggc28gdGhhdCBzaG91bGQgZGVmaW5pdGVseSBiZSBvbiB0aGUgbGlzdC4gU28sIEkmIzM5O2xsIGRlZmluaXRlbHkgbGlzdDogYGt2bV9hcmNoX2luaXRfdm1gLCBga3ZtX2FyY2hfZGVzdHJveV92bWAsIGFuZCBga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZWAuCgpMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZWAgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIEFoLCB5ZXMsIGl0JiMzOTtzIGdsb2JhbCAobm9uLXN0YXRpYykgaW4gYGFyY2gvcmlzY3Yva3ZtL3RsYi5jYCwgc28gaXQmIzM5O3MgcmVhZGlseSBhY2Nlc3NpYmxlLiBga3ZtX2FyY2hfaW5pdF92bWAgYW5kIGBrdm1fYXJjaF9kZXN0cm95X3ZtYCBhcmUgaW4gYGFyY2gvcmlzY3Yva3ZtL3ZtLmNgLgoKV2l0aCB0aGlzIGluIG1pbmQsIEkgd2lsbCBzZXQgdGhlc2UgY29uZmlndXJhdGlvbnMgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGlzIGFzIHRob3JvdWdoIGFzIHBvc3NpYmxlOgoKKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYAoqICAgKipGb2N1c1N5bWJvbHMqKjogYFsmIzM0O2t2bV9hcmNoX2luaXRfdm0mIzM0OywgJiMzNDtrdm1fYXJjaF9kZXN0cm95X3ZtJiMzNDssICYjMzQ7a3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZSYjMzQ7XWAKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgWyYjMzQ7S1ZNJiMzNDtdYAoKVGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSByZWxhdGVkIHRvIFRMQiBzYW5pdGl6YXRpb24gd2l0aGluIHRoZSBSSVNDLVYgS1ZNLiBUaGUgY2hhbmdlIHNlZW1zIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgS1ZNIGlvY3Rscy4gVGhlIGdvYWwgaGVyZSBpcyB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGVzZSBrZXkgS1ZNIGZ1bmN0aW9ucyB3aGVuIGEgVkNQVSBtaWdyYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX2luaXRfdm0mIzM0OywKICAgICYjMzQ7a3ZtX2FyY2hfZGVzdHJveV92bSYjMzQ7LAogICAgJiMzNDtrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUTEIgc2FuaXRpemF0aW9uIGxvZ2ljIGZvciBSSVNDLVYgS1ZNLCBpbnRyb2R1Y2luZyBhIHBlci1DUFUgdHJhY2tpbmcgb2YgdGhlIGxhc3QgVkNQVSByYW4gdG8gZmx1c2ggVlMtc3RhZ2UgVExCIGVudHJpZXMgdXBvbiBWQ1BVIG1pZ3JhdGlvbiBvciBzd2l0Y2hpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2FyY2hfaW5pdF92bSYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF9kZXN0cm95X3ZtJiMzNDssCiAgICAmIzM0O2t2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRMQiBzYW5pdGl6YXRpb24gbG9naWMgZm9yIFJJU0MtViBLVk0sIGludHJvZHVjaW5nIGEgcGVyLUNQVSB0cmFja2luZyBvZiB0aGUgbGFzdCBWQ1BVIHJhbiB0byBmbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyB1cG9uIFZDUFUgbWlncmF0aW9uIG9yIHN3aXRjaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24gcmVhY2hhYmxlIHZpYSBzdGFuZGFyZCBLVk0gaW9jdGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxMTo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDExOjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFJJU0MtViBLVk0gaW50ZXJuYWwgVExCIGZsdXNoaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IHBlci1DUFUgdmFyaWFibGUgYGxhc3RfdmNwdV9yYW5gIHRvIHRyYWNrIHRoZSBsYXN0IFZDUFUgdGhhdCByYW4gb24gZWFjaCBwaHlzaWNhbCBDUFUuIFRoZSBtZW1vcnkgZm9yIHRoaXMgdmFyaWFibGUgaXMgYWxsb2NhdGVkIHVzaW5nIGBhbGxvY19wZXJjcHUoaW50KWAgYW5kIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYC0xYCBmb3IgYWxsIHBvc3NpYmxlIENQVXMgaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsb2NhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgZGVmYXVsdCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDA2ZWJhMmE4MDI5Njc2ZDIwOWMyYTc5ZjczMTE2OTEwMDY1ZjlhYmQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAxMTo1MjozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCAyNDU4NTMwNGMwMmIxLi4zOTZhYzYyMDljNTBkIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC05MSw2ICYjNDM7OTEsOSBAQCBzdHJ1Y3Qga3ZtX2FyY2ggewogCS8qIEctc3RhZ2Ugdm1pZCAqLwogCXN0cnVjdCBrdm1fdm1pZCB2bWlkOwogCiYjNDM7CS8qIExhc3QgVkNQVSB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVSAqLwomIzQzOwlpbnQgX19wZXJjcHUgKmxhc3RfdmNwdV9yYW47CiYjNDM7CiAJLyogRy1zdGFnZSBwYWdlIHRhYmxlICovCiAJcGdkX3QgKnBnZDsKIAlwaHlzX2FkZHJfdCBwZ2RfcGh5czsKQEAgLTMzMCw3ICYjNDM7MzMzLDQgQEAgYm9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKIHZvaWQga3ZtX3Jpc2N2X3ZjcHVfcmVjb3JkX3N0ZWFsX3RpbWUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIAotLyogRmxhZ3MgcmVwcmVzZW50aW5nIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGRldGFpbHMgKi8KLURFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKTsKLQogI2VuZGlmIC8qIF9fUklTQ1ZfS1ZNX0hPU1RfSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS9tYWluLmMgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmMKaW5kZXggMGYzZmUzOTg2ZmMwMi4uYjFiYmMwODM1MjdjZiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uYwpAQCAtMTAsMjMgJiM0MzsxMCwxMCBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vyci5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2t2bV9ob3N0LmgmZ3Q7Ci0jaW5jbHVkZSAmbHQ7YXNtL2NwdWZlYXR1cmUuaCZndDsKICNpbmNsdWRlICZsdDthc20va3ZtX21tdS5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9rdm1fbmFjbC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9zYmkuaCZndDsKIAotREVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7Ci0KLXN0YXRpYyB2b2lkIGt2bV9yaXNjdl9zZXR1cF92ZW5kb3JfZmVhdHVyZXModm9pZCkKLXsKLQkvKiBBbmRlcyBBWDY2OiBzcGxpdCB0d28tc3RhZ2UgVExCcyAqLwotCWlmIChyaXNjdl9jYWNoZWRfbXZlbmRvcmlkKDApID09IEFOREVTX1ZFTkRPUl9JRCAmYW1wOyZhbXA7Ci0JICAgIChyaXNjdl9jYWNoZWRfbWFyY2hpZCgwKSAmYW1wOyAweEZGRkYpID09IDB4OEE2NikgewotCQlzdGF0aWNfYnJhbmNoX2VuYWJsZSgmYW1wO2t2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpOwotCQlrdm1faW5mbygmIzM0O1ZTLXN0YWdlIFRMQiBkb2VzIG5vdCBjYWNoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlEXG4mIzM0Oyk7Ci0JfQotfQotCiBsb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwKIAkJCXVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpCiB7CkBAIC0xNzIsOCAmIzQzOzE1OSw2IEBAIHN0YXRpYyBpbnQgX19pbml0IHJpc2N2X2t2bV9pbml0KHZvaWQpCiAJCWt2bV9pbmZvKCYjMzQ7QUlBIGF2YWlsYWJsZSB3aXRoICVkIGd1ZXN0IGV4dGVybmFsIGludGVycnVwdHNcbiYjMzQ7LAogCQkJIGt2bV9yaXNjdl9haWFfbnJfaGdlaSk7CiAKLQlrdm1fcmlzY3Zfc2V0dXBfdmVuZG9yX2ZlYXR1cmVzKCk7Ci0KIAlrdm1fcmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTsKIAogCXJjID0ga3ZtX2luaXQoc2l6ZW9mKHN0cnVjdCBrdm1fdmNwdSksIDAsIFRISVNfTU9EVUxFKTsKZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmMKaW5kZXggZmYxYWVhYzRlYjhlYi4uMTU0MWQwNTlhNDJhZCAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9rdm0vdGxiLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9rdm0vdGxiLmMKQEAgLTgsNiAmIzQzOzgsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NtcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2t2bV9ob3N0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL2NhY2hlZmx1c2guaCZndDsKQEAgLTE2MCwxMiAmIzQzOzE2MSwxOSBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodW5zaWduZWQgbG9uZyB2bWlkKQogCiB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogewomIzQzOwlib29sIHZjcHVfbWlncmF0ZWQ7CiYjNDM7CWJvb2wgdmNwdV9zd2l0Y2hlZDsKIAl1bnNpZ25lZCBsb25nIHZtaWQ7CiYjNDM7CWludCAqbGFzdF9yYW47CiAKLQlpZiAoIWt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkgfHwKLQkgICAgdmNwdS0mZ3Q7YXJjaC5sYXN0X2V4aXRfY3B1ID09IHZjcHUtJmd0O2NwdSkKJiM0MzsJbGFzdF9yYW4gPSB0aGlzX2NwdV9wdHIodmNwdS0mZ3Q7a3ZtLSZndDthcmNoLmxhc3RfdmNwdV9yYW4pOwomIzQzOwl2Y3B1X21pZ3JhdGVkID0gKHZjcHUtJmd0O2FyY2gubGFzdF9leGl0X2NwdSAhPSB2Y3B1LSZndDtjcHUpOwomIzQzOwl2Y3B1X3N3aXRjaGVkID0gKCpsYXN0X3JhbiAhPSB2Y3B1LSZndDt2Y3B1X2lkeCk7CiYjNDM7CWlmICghdmNwdV9taWdyYXRlZCAmYW1wOyZhbXA7ICF2Y3B1X3N3aXRjaGVkKQogCQlyZXR1cm47CiAKJiM0MzsJdm1pZCA9IFJFQURfT05DRSh2Y3B1LSZndDtrdm0tJmd0O2FyY2gudm1pZC52bWlkKTsKJiM0MzsKIAkvKgogCSAqIE9uIFJJU0MtViBwbGF0Zm9ybXMgd2l0aCBoYXJkd2FyZSBWTUlEIHN1cHBvcnQsIHdlIHNoYXJlIHNhbWUKIAkgKiBWTUlEIGZvciBhbGwgVkNQVXMgb2YgYSBwYXJ0aWN1bGFyIEd1ZXN0L1ZNLiBUaGlzIG1lYW5zIHdlIG1pZ2h0CkBAIC0xNzYsMTYgJiM0MzsxODQsMjMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkgKiBUbyBjbGVhbnVwIHN0YWxlIFRMQiBlbnRyaWVzLCB3ZSBzaW1wbHkgZmx1c2ggYWxsIEctc3RhZ2UgVExCCiAJICogZW50cmllcyBieSBWTUlEIHdoZW5ldmVyIHVuZGVybHlpbmcgSG9zdCBDUFUgY2hhbmdlcyBmb3IgYSBWQ1BVLgogCSAqLwotCi0Jdm1pZCA9IFJFQURfT05DRSh2Y3B1LSZndDtrdm0tJmd0O2FyY2gudm1pZC52bWlkKTsKLQlrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7CiYjNDM7CWlmICh2Y3B1X21pZ3JhdGVkICZhbXA7JmFtcDsga3ZtX3Jpc2N2X2dzdGFnZV92bWlkX2JpdHMoKSkKJiM0MzsJCWt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTsKIAogCS8qCi0JICogRmx1c2ggVlMtc3RhZ2UgVExCIGVudHJpZXMgZm9yIGltcGxlbWVudGF0aW9uIHdoZXJlIFZTLXN0YWdlCi0JICogVExCIGRvZXMgbm90IGNhaGNlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MgYW5kIFZNSUQuCiYjNDM7CSAqIEd1ZXN0LWxvY2FsIHNmZW5jZS52bWEgb25seSBpbnZhbGlkYXRlcyBWUy1zdGFnZSB0cmFuc2xhdGlvbnMgb24KJiM0MzsJICogdGhlIEhvc3QgQ1BVIGN1cnJlbnRseSBiYWNraW5nIHRoZSBWQ1BVLiBJZiBhIFZDUFUgbWlncmF0ZXMsIG9yCiYjNDM7CSAqIGlmIHRoaXMgSG9zdCBDUFUgc3dpdGNoZXMgYmV0d2VlbiBWQ1BVcyBvZiB0aGUgc2FtZSBWTSwgc3RhbGUKJiM0MzsJICogVlMtc3RhZ2UgZW50cmllcyBjYW4gYmUgbGVmdCBiZWhpbmQgb24gYSBIb3N0IENQVSB0aGF0IG1pc3NlZCBhCiYjNDM7CSAqIGd1ZXN0LWxvY2FsIGZsdXNoLiBGbHVzaCB0aGUgY3VycmVudCBDUFUmIzM5O3MgVlMtc3RhZ2UgY29udGV4dCBiZWZvcmUKJiM0MzsJICogZW50ZXJpbmcgdGhlIGd1ZXN0LgogCSAqLwotCWlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZhbXA7a3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSkpCiYjNDM7CWlmIChrdm1fcmlzY3ZfbmFjbF9hdmFpbGFibGUoKSkKJiM0MzsJCW5hY2xfaGZlbmNlX3Z2bWFfYWxsKG5hY2xfc2htZW0oKSwgdm1pZCk7CiYjNDM7CWVsc2UKIAkJa3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FsbCh2bWlkKTsKJiM0MzsKJiM0MzsJKmxhc3RfcmFuID0gdmNwdS0mZ3Q7dmNwdV9pZHg7CiB9CiAKIHZvaWQga3ZtX3Jpc2N2X2ZlbmNlX2lfcHJvY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92bS5jIGIvYXJjaC9yaXNjdi9rdm0vdm0uYwppbmRleCAxM2M2M2FlMWE3OGIyLi4yOTA3MjE4YTFjZjVkIDEwMDY0NAotLS0gYS9hcmNoL3Jpc2N2L2t2bS92bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3Yva3ZtL3ZtLmMKQEAgLTksNiAmIzQzOzksNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2Vycm5vLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXJyLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3BlcmNwdS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3VhY2Nlc3MuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9rdm1faG9zdC5oJmd0OwogI2luY2x1ZGUgJmx0O2FzbS9rdm1fbW11LmgmZ3Q7CkBAIC0zMCw3ICYjNDM7MzEsOSBAQCBjb25zdCBzdHJ1Y3Qga3ZtX3N0YXRzX2hlYWRlciBrdm1fdm1fc3RhdHNfaGVhZGVyID0gewogCiBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSkKIHsKJiM0MzsJaW50ICpsYXN0X3JhbjsKIAlpbnQgcjsKJiM0MzsJaW50IGNwdTsKIAogCXIgPSBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChrdm0pOwogCWlmIChyKQpAQCAtNDIsNiAmIzQzOzQ1LDE3IEBAIGludCBrdm1fYXJjaF9pbml0X3ZtKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyB0eXBlKQogCQlyZXR1cm4gcjsKIAl9CiAKJiM0MzsJa3ZtLSZndDthcmNoLmxhc3RfdmNwdV9yYW4gPSBhbGxvY19wZXJjcHUoaW50KTsKJiM0MzsJaWYgKCFrdm0tJmd0O2FyY2gubGFzdF92Y3B1X3JhbikgewomIzQzOwkJa3ZtX3Jpc2N2X21tdV9mcmVlX3BnZChrdm0pOwomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkgewomIzQzOwkJbGFzdF9yYW4gPSBwZXJfY3B1X3B0cihrdm0tJmd0O2FyY2gubGFzdF92Y3B1X3JhbiwgY3B1KTsKJiM0MzsJCSpsYXN0X3JhbiA9IC0xOwomIzQzOwl9CiYjNDM7CiAJa3ZtX3Jpc2N2X2FpYV9pbml0X3ZtKGt2bSk7CiAKIAlrdm1fcmlzY3ZfZ3Vlc3RfdGltZXJfaW5pdChrdm0pOwpAQCAtNTQsNiAmIzQzOzY4LDggQEAgdm9pZCBrdm1fYXJjaF9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSkKIAlrdm1fZGVzdHJveV92Y3B1cyhrdm0pOwogCiAJa3ZtX3Jpc2N2X2FpYV9kZXN0cm95X3ZtKGt2bSk7CiYjNDM7CiYjNDM7CWZyZWVfcGVyY3B1KGt2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuKTsKIH0KIAogaW50IGt2bV92bV9pb2N0bF9pcnFfbGluZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxX2xldmVsICppcnFsLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI1OAoJCQkJCQkJb3V0cHV0OiAxODUKCQkJCQkJCXRob3VnaHRzOiA1MzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS01TQU4gRnV6emluZyBTZXNzaW9uIEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBhIHBhdGNoIHNlcmllcyB0b3VjaGluZyBSSVNDLVYgS1ZNIGNvZGUuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgcmVtb3ZpbmcgdGhlIGBrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhYCBzdGF0aWMga2V5IGFuZCBhc3NvY2lhdGVkIHZlbmRvci1zcGVjaWZpYyBzZXR1cCBhbmQgYWRkaW5nIGEgYGxhc3RfdmNwdV9yYW5gIHBlcmNwdSB2YXJpYWJsZSB0byBgc3RydWN0IGt2bV9hcmNoYC4gVGhpcyBgbGFzdF92Y3B1X3JhbmAgaXMgYWxsb2NhdGVkIHVzaW5nIGBhbGxvY19wZXJjcHUoaW50KWAgZHVyaW5nIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgaW5pdGlhbGl6ZWQgdG8gYC0xYCBmb3IgZWFjaCBwb3NzaWJsZSBDUFUuIEl0IGdldHMgZnJlZWQgaW4gYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gLiBUaGUgcHJpbWFyeSB1c2UgaXMgd2l0aGluIGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYCB0byBjaGVjayBmb3IgdkNQVSBzd2l0Y2hlcyBvbiB0aGUgY3VycmVudCBDUFUsIGluZmx1ZW5jaW5nIFRMQiBmbHVzaGluZyBsb2dpYyBiYXNlZCBvbiBtaWdyYXRpb24gYW5kIHN3aXRjaGluZyBldmVudHMuCgpNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBtaWdodCB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gTGV0JiMzOTtzIGFuYWx5emUuIFRoZSBgYWxsb2NfcGVyY3B1YCBjYWxsICpkb2VzKiBpbml0aWFsaXplIG1lbW9yeSB0byB6ZXJvIGJ5IGRlZmF1bHQsIHdoaWNoIGlzIGdvb2QuIEJ1dCB0aGlzIHBhdGNoIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZXMgaXQgdG8gYC0xYCBhbnl3YXksIHdoaWNoIHByb3ZpZGVzIGV4dHJhIGNvbmZpZGVuY2UuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBiZWluZyBjb3BpZWQgdG8gdXNlcnNwYWNlLCBtZWFuaW5nIG5vIGNoYW5jZSBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIGludGVybmFsIGRhdGEgdG8gdGhlIG91dHNpZGUgd29ybGQuIFRoZSBjaGFuZ2VzIGFyZSBzdHJpY3RseSB3aXRoaW4gdGhlIEtWTSBpbnRlcm5hbCB3b3JraW5ncywgZGVhbGluZyB3aXRoIFRMQiBmbHVzaGluZywgYW5kIHRoZSB2YXJpYWJsZSBpcyB1c2VkIGZvciBpbnRlcm5hbCBjb250cm9sIGZsb3cuIFRoZXJlIGFyZSBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBvciBwb3RlbnRpYWwgZm9yIHVuaW5pdGlhbGl6ZWQgZmllbGRzIHRvIGJlIHJlYWQgZHVyaW5nIHByb2Nlc3NpbmcuIFRoaXMgaW1wbGllcyB0aGVyZSYjMzk7cyBubyB3YXkgaXQgaW50cm9kdWNlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkIGxlYWRpbmcgdG8gYW4gaW5mb3JtYXRpb24gbGVhay4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhhdCBgYWxsb2NfcGVyY3B1YCBpcyBmdWxseSBpbml0aWFsaXplZC4gVGhlIGNvZGUgc25pcHBldCBjb25maXJtcyB0aGlzOyB0aGUgaW5pdGlhbGl6YXRpb24gbG9vcCBpcyBleHBsaWNpdC4KCmBgYGMKCWt2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuID0gYWxsb2NfcGVyY3B1KGludCk7CglpZiAoIWt2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuKSB7CgkJa3ZtX3Jpc2N2X21tdV9mcmVlX3BnZChrdm0pOwoJCXJldHVybiAtRU5PTUVNOwoJfQoKCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsKCQlsYXN0X3JhbiA9IHBlcl9jcHVfcHRyKGt2bS0mZ3Q7YXJjaC5sYXN0X3ZjcHVfcmFuLCBjcHUpOwoJCSpsYXN0X3JhbiA9IC0xOwoJfQpgYGAKClNpbmNlIHRoZSBtZW1vcnkgaXMgZnVsbHkgaW5pdGlhbGl6ZWQsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIG5vdGhpbmcgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIEkgYW0gY29uZmlkZW50IHRoYXQgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGhlcmUuIEkgc2VlIG5vIG5lZWQgZm9yIEtNU0FOLiBJJiMzOTtsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGFuZCBkb2N1bWVudCB0aGlzIHJlYXNvbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSBpbnRlcm5hbCBUTEIgZmx1c2hpbmcgbG9naWMgYW5kIGludHJvZHVjZXMgYSBuZXcgcGVyLUNQVSB2YXJpYWJsZSBgbGFzdF92Y3B1X3JhbmAgdG8gdHJhY2sgdGhlIGxhc3QgVkNQVSB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVS4gVGhlIG1lbW9yeSBmb3IgdGhpcyB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgdXNpbmcgYGFsbG9jX3BlcmNwdShpbnQpYCBhbmQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgLTFgIGZvciBhbGwgcG9zc2libGUgQ1BVcyBpbW1lZGlhdGVseSBhZnRlciBhbGxvY2F0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBhbmQgbm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFJJU0MtViBLVk0gaW50ZXJuYWwgVExCIGZsdXNoaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IHBlci1DUFUgdmFyaWFibGUgYGxhc3RfdmNwdV9yYW5gIHRvIHRyYWNrIHRoZSBsYXN0IFZDUFUgdGhhdCByYW4gb24gZWFjaCBwaHlzaWNhbCBDUFUuIFRoZSBtZW1vcnkgZm9yIHRoaXMgdmFyaWFibGUgaXMgYWxsb2NhdGVkIHVzaW5nIGBhbGxvY19wZXJjcHUoaW50KWAgYW5kIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYC0xYCBmb3IgYWxsIHBvc3NpYmxlIENQVXMgaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsb2NhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgZGVmYXVsdCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUyOjM5Ljc0NDk1MTY1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMzMxOTc5NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX2luaXRfdm1cIixcbiAgICBcImt2bV9hcmNoX2Rlc3Ryb3lfdm1cIixcbiAgICBcImt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFJJU0MtViBLVk0gaW50ZXJuYWwgVExCIGZsdXNoaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IHBlci1DUFUgdmFyaWFibGUgYGxhc3RfdmNwdV9yYW5gIHRvIHRyYWNrIHRoZSBsYXN0IFZDUFUgdGhhdCByYW4gb24gZWFjaCBwaHlzaWNhbCBDUFUuIFRoZSBtZW1vcnkgZm9yIHRoaXMgdmFyaWFibGUgaXMgYWxsb2NhdGVkIHVzaW5nIGBhbGxvY19wZXJjcHUoaW50KWAgYW5kIGlzIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgdG8gYC0xYCBmb3IgYWxsIHBvc3NpYmxlIENQVXMgaW1tZWRpYXRlbHkgYWZ0ZXIgYWxsb2NhdGlvbi4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGV4cG9zZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMpIHdvdWxkIGJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgZGVmYXVsdCBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRMQiBzYW5pdGl6YXRpb24gbG9naWMgZm9yIFJJU0MtViBLVk0sIGludHJvZHVjaW5nIGEgcGVyLUNQVSB0cmFja2luZyBvZiB0aGUgbGFzdCBWQ1BVIHJhbiB0byBmbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyB1cG9uIFZDUFUgbWlncmF0aW9uIG9yIHN3aXRjaGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFJJU0MtViBLVk0gaW1wbGVtZW50YXRpb24gcmVhY2hhYmxlIHZpYSBzdGFuZGFyZCBLVk0gaW9jdGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QxMTo1MjozOS43NDQ5NTY2NjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjIyMDkxNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwNmViYTJhODAyOTY3NmQyMDljMmE3OWY3MzExNjkxMDA2NWY5YWJkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDE3IDExOjUyOjM4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbmluZGV4IDI0NTg1MzA0YzAyYjEuLjM5NmFjNjIwOWM1MGQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuQEAgLTkxLDYgKzkxLDkgQEAgc3RydWN0IGt2bV9hcmNoIHtcXG4gXFx0LyogRy1zdGFnZSB2bWlkICovXFxuIFxcdHN0cnVjdCBrdm1fdm1pZCB2bWlkO1xcbiBcXG4rXFx0LyogTGFzdCBWQ1BVIHRoYXQgcmFuIG9uIGVhY2ggcGh5c2ljYWwgQ1BVICovXFxuK1xcdGludCBfX3BlcmNwdSAqbGFzdF92Y3B1X3JhbjtcXG4rXFxuIFxcdC8qIEctc3RhZ2UgcGFnZSB0YWJsZSAqL1xcbiBcXHRwZ2RfdCAqcGdkO1xcbiBcXHRwaHlzX2FkZHJfdCBwZ2RfcGh5cztcXG5AQCAtMzMwLDcgKzMzMyw0IEBAIGJvb2wga3ZtX3Jpc2N2X3ZjcHVfc3RvcHBlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiBcXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9yZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbiBcXG4tLyogRmxhZ3MgcmVwcmVzZW50aW5nIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGRldGFpbHMgKi9cXG4tREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xcbi1cXG4gI2VuZGlmIC8qIF9fUklTQ1ZfS1ZNX0hPU1RfSF9fICovXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xcbmluZGV4IDBmM2ZlMzk4NmZjMDIuLmIxYmJjMDgzNTI3Y2YgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXFxuQEAgLTEwLDIzICsxMCwxMCBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJyLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcXHUwMDNlXFxuLSNpbmNsdWRlIFxcdTAwM2Nhc20vY3B1ZmVhdHVyZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL2t2bV9tbXUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9rdm1fbmFjbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3NiaS5oXFx1MDAzZVxcbiBcXG4tREVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XFxuLVxcbi1zdGF0aWMgdm9pZCBrdm1fcmlzY3Zfc2V0dXBfdmVuZG9yX2ZlYXR1cmVzKHZvaWQpXFxuLXtcXG4tXFx0LyogQW5kZXMgQVg2Njogc3BsaXQgdHdvLXN0YWdlIFRMQnMgKi9cXG4tXFx0aWYgKHJpc2N2X2NhY2hlZF9tdmVuZG9yaWQoMCkgPT0gQU5ERVNfVkVORE9SX0lEIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICAocmlzY3ZfY2FjaGVkX21hcmNoaWQoMCkgXFx1MDAyNiAweEZGRkYpID09IDB4OEE2Nikge1xcbi1cXHRcXHRzdGF0aWNfYnJhbmNoX2VuYWJsZShcXHUwMDI2a3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XFxuLVxcdFxcdGt2bV9pbmZvKFxcXCJWUy1zdGFnZSBUTEIgZG9lcyBub3QgY2FjaGUgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBhbmQgVk1JRFxcXFxuXFxcIik7XFxuLVxcdH1cXG4tfVxcbi1cXG4gbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuIFxcdFxcdFxcdHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuIHtcXG5AQCAtMTcyLDggKzE1OSw2IEBAIHN0YXRpYyBpbnQgX19pbml0IHJpc2N2X2t2bV9pbml0KHZvaWQpXFxuIFxcdFxcdGt2bV9pbmZvKFxcXCJBSUEgYXZhaWxhYmxlIHdpdGggJWQgZ3Vlc3QgZXh0ZXJuYWwgaW50ZXJydXB0c1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0IGt2bV9yaXNjdl9haWFfbnJfaGdlaSk7XFxuIFxcbi1cXHRrdm1fcmlzY3Zfc2V0dXBfdmVuZG9yX2ZlYXR1cmVzKCk7XFxuLVxcbiBcXHRrdm1fcmVnaXN0ZXJfcGVyZl9jYWxsYmFja3MoKTtcXG4gXFxuIFxcdHJjID0ga3ZtX2luaXQoc2l6ZW9mKHN0cnVjdCBrdm1fdmNwdSksIDAsIFRISVNfTU9EVUxFKTtcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdGxiLmMgYi9hcmNoL3Jpc2N2L2t2bS90bGIuY1xcbmluZGV4IGZmMWFlYWM0ZWI4ZWIuLjE1NDFkMDU5YTQyYWQgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vdGxiLmNcXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS90bGIuY1xcbkBAIC04LDYgKzgsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vyci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wZXJjcHUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NtcC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX2hvc3QuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcXHUwMDNlXFxuQEAgLTE2MCwxMiArMTYxLDE5IEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FsbCh1bnNpZ25lZCBsb25nIHZtaWQpXFxuIFxcbiB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB7XFxuK1xcdGJvb2wgdmNwdV9taWdyYXRlZDtcXG4rXFx0Ym9vbCB2Y3B1X3N3aXRjaGVkO1xcbiBcXHR1bnNpZ25lZCBsb25nIHZtaWQ7XFxuK1xcdGludCAqbGFzdF9yYW47XFxuIFxcbi1cXHRpZiAoIWt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkgfHxcXG4tXFx0ICAgIHZjcHUtXFx1MDAzZWFyY2gubGFzdF9leGl0X2NwdSA9PSB2Y3B1LVxcdTAwM2VjcHUpXFxuK1xcdGxhc3RfcmFuID0gdGhpc19jcHVfcHRyKHZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKTtcXG4rXFx0dmNwdV9taWdyYXRlZCA9ICh2Y3B1LVxcdTAwM2VhcmNoLmxhc3RfZXhpdF9jcHUgIT0gdmNwdS1cXHUwMDNlY3B1KTtcXG4rXFx0dmNwdV9zd2l0Y2hlZCA9ICgqbGFzdF9yYW4gIT0gdmNwdS1cXHUwMDNldmNwdV9pZHgpO1xcbitcXHRpZiAoIXZjcHVfbWlncmF0ZWQgXFx1MDAyNlxcdTAwMjYgIXZjcHVfc3dpdGNoZWQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdHZtaWQgPSBSRUFEX09OQ0UodmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnZtaWQudm1pZCk7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBPbiBSSVNDLVYgcGxhdGZvcm1zIHdpdGggaGFyZHdhcmUgVk1JRCBzdXBwb3J0LCB3ZSBzaGFyZSBzYW1lXFxuIFxcdCAqIFZNSUQgZm9yIGFsbCBWQ1BVcyBvZiBhIHBhcnRpY3VsYXIgR3Vlc3QvVk0uIFRoaXMgbWVhbnMgd2UgbWlnaHRcXG5AQCAtMTc2LDE2ICsxODQsMjMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0ICogVG8gY2xlYW51cCBzdGFsZSBUTEIgZW50cmllcywgd2Ugc2ltcGx5IGZsdXNoIGFsbCBHLXN0YWdlIFRMQlxcbiBcXHQgKiBlbnRyaWVzIGJ5IFZNSUQgd2hlbmV2ZXIgdW5kZXJseWluZyBIb3N0IENQVSBjaGFuZ2VzIGZvciBhIFZDUFUuXFxuIFxcdCAqL1xcbi1cXG4tXFx0dm1pZCA9IFJFQURfT05DRSh2Y3B1LVxcdTAwM2Vrdm0tXFx1MDAzZWFyY2gudm1pZC52bWlkKTtcXG4tXFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xcbitcXHRpZiAodmNwdV9taWdyYXRlZCBcXHUwMDI2XFx1MDAyNiBrdm1fcmlzY3ZfZ3N0YWdlX3ZtaWRfYml0cygpKVxcbitcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7XFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBGbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyBmb3IgaW1wbGVtZW50YXRpb24gd2hlcmUgVlMtc3RhZ2VcXG4tXFx0ICogVExCIGRvZXMgbm90IGNhaGNlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MgYW5kIFZNSUQuXFxuK1xcdCAqIEd1ZXN0LWxvY2FsIHNmZW5jZS52bWEgb25seSBpbnZhbGlkYXRlcyBWUy1zdGFnZSB0cmFuc2xhdGlvbnMgb25cXG4rXFx0ICogdGhlIEhvc3QgQ1BVIGN1cnJlbnRseSBiYWNraW5nIHRoZSBWQ1BVLiBJZiBhIFZDUFUgbWlncmF0ZXMsIG9yXFxuK1xcdCAqIGlmIHRoaXMgSG9zdCBDUFUgc3dpdGNoZXMgYmV0d2VlbiBWQ1BVcyBvZiB0aGUgc2FtZSBWTSwgc3RhbGVcXG4rXFx0ICogVlMtc3RhZ2UgZW50cmllcyBjYW4gYmUgbGVmdCBiZWhpbmQgb24gYSBIb3N0IENQVSB0aGF0IG1pc3NlZCBhXFxuK1xcdCAqIGd1ZXN0LWxvY2FsIGZsdXNoLiBGbHVzaCB0aGUgY3VycmVudCBDUFUncyBWUy1zdGFnZSBjb250ZXh0IGJlZm9yZVxcbitcXHQgKiBlbnRlcmluZyB0aGUgZ3Vlc3QuXFxuIFxcdCAqL1xcbi1cXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2a3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSkpXFxuK1xcdGlmIChrdm1fcmlzY3ZfbmFjbF9hdmFpbGFibGUoKSlcXG4rXFx0XFx0bmFjbF9oZmVuY2VfdnZtYV9hbGwobmFjbF9zaG1lbSgpLCB2bWlkKTtcXG4rXFx0ZWxzZVxcbiBcXHRcXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpO1xcbitcXG4rXFx0Kmxhc3RfcmFuID0gdmNwdS1cXHUwMDNldmNwdV9pZHg7XFxuIH1cXG4gXFxuIHZvaWQga3ZtX3Jpc2N2X2ZlbmNlX2lfcHJvY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3ZtLmMgYi9hcmNoL3Jpc2N2L2t2bS92bS5jXFxuaW5kZXggMTNjNjNhZTFhNzhiMi4uMjkwNzIxOGExY2Y1ZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92bS5jXFxuKysrIGIvYXJjaC9yaXNjdi9rdm0vdm0uY1xcbkBAIC05LDYgKzksNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXJybm8uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vyci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9wZXJjcHUuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VhY2Nlc3MuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20va3ZtX21tdS5oXFx1MDAzZVxcbkBAIC0zMCw3ICszMSw5IEBAIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfaGVhZGVyIGt2bV92bV9zdGF0c19oZWFkZXIgPSB7XFxuIFxcbiBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcXG4ge1xcbitcXHRpbnQgKmxhc3RfcmFuO1xcbiBcXHRpbnQgcjtcXG4rXFx0aW50IGNwdTtcXG4gXFxuIFxcdHIgPSBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChrdm0pO1xcbiBcXHRpZiAocilcXG5AQCAtNDIsNiArNDUsMTcgQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXFxuIFxcdFxcdHJldHVybiByO1xcbiBcXHR9XFxuIFxcbitcXHRrdm0tXFx1MDAzZWFyY2gubGFzdF92Y3B1X3JhbiA9IGFsbG9jX3BlcmNwdShpbnQpO1xcbitcXHRpZiAoIWt2bS1cXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKSB7XFxuK1xcdFxcdGt2bV9yaXNjdl9tbXVfZnJlZV9wZ2Qoa3ZtKTtcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdH1cXG4rXFxuK1xcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcXG4rXFx0XFx0bGFzdF9yYW4gPSBwZXJfY3B1X3B0cihrdm0tXFx1MDAzZWFyY2gubGFzdF92Y3B1X3JhbiwgY3B1KTtcXG4rXFx0XFx0Kmxhc3RfcmFuID0gLTE7XFxuK1xcdH1cXG4rXFxuIFxcdGt2bV9yaXNjdl9haWFfaW5pdF92bShrdm0pO1xcbiBcXG4gXFx0a3ZtX3Jpc2N2X2d1ZXN0X3RpbWVyX2luaXQoa3ZtKTtcXG5AQCAtNTQsNiArNjgsOCBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbiBcXHRrdm1fZGVzdHJveV92Y3B1cyhrdm0pO1xcbiBcXG4gXFx0a3ZtX3Jpc2N2X2FpYV9kZXN0cm95X3ZtKGt2bSk7XFxuK1xcbitcXHRmcmVlX3BlcmNwdShrdm0tXFx1MDAzZWFyY2gubGFzdF92Y3B1X3Jhbik7XFxuIH1cXG4gXFxuIGludCBrdm1fdm1faW9jdGxfaXJxX2xpbmUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycV9sZXZlbCAqaXJxbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTI6NDEuMDA3Nzg1NzA2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjg0NDIzMTIzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiLFxuICAgIFwia3ZtX2FyY2hfZGVzdHJveV92bVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUTEIgc2FuaXRpemF0aW9uIGxvZ2ljIGZvciBSSVNDLVYgS1ZNLCBpbnRyb2R1Y2luZyBhIHBlci1DUFUgdHJhY2tpbmcgb2YgdGhlIGxhc3QgVkNQVSByYW4gdG8gZmx1c2ggVlMtc3RhZ2UgVExCIGVudHJpZXMgdXBvbiBWQ1BVIG1pZ3JhdGlvbiBvciBzd2l0Y2hpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDZlYmEyYTgwMjk2NzZkMjA5YzJhNzlmNzMxMTY5MTAwNjVmOWFiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDExOjUyOjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG5pbmRleCAyNDU4NTMwNGMwMmIxLi4zOTZhYzYyMDljNTBkIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXG4rKysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbkBAIC05MSw2ICs5MSw5IEBAIHN0cnVjdCBrdm1fYXJjaCB7XG4gXHQvKiBHLXN0YWdlIHZtaWQgKi9cbiBcdHN0cnVjdCBrdm1fdm1pZCB2bWlkO1xuIFxuK1x0LyogTGFzdCBWQ1BVIHRoYXQgcmFuIG9uIGVhY2ggcGh5c2ljYWwgQ1BVICovXG4rXHRpbnQgX19wZXJjcHUgKmxhc3RfdmNwdV9yYW47XG4rXG4gXHQvKiBHLXN0YWdlIHBhZ2UgdGFibGUgKi9cbiBcdHBnZF90ICpwZ2Q7XG4gXHRwaHlzX2FkZHJfdCBwZ2RfcGh5cztcbkBAIC0zMzAsNyArMzMzLDQgQEAgYm9vbCBrdm1fcmlzY3ZfdmNwdV9zdG9wcGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXG4gdm9pZCBrdm1fcmlzY3ZfdmNwdV9yZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuIFxuLS8qIEZsYWdzIHJlcHJlc2VudGluZyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBkZXRhaWxzICovXG4tREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xuLVxuICNlbmRpZiAvKiBfX1JJU0NWX0tWTV9IT1NUX0hfXyAqL1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL21haW4uYyBiL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuaW5kZXggMGYzZmUzOTg2ZmMwMi4uYjFiYmMwODM1MjdjZiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL21haW4uY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG5AQCAtMTAsMjMgKzEwLDEwIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcdTAwM2Vcbi0jaW5jbHVkZSBcdTAwM2Nhc20vY3B1ZmVhdHVyZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9tbXUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fbmFjbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL3NiaS5oXHUwMDNlXG4gXG4tREVGSU5FX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XG4tXG4tc3RhdGljIHZvaWQga3ZtX3Jpc2N2X3NldHVwX3ZlbmRvcl9mZWF0dXJlcyh2b2lkKVxuLXtcbi1cdC8qIEFuZGVzIEFYNjY6IHNwbGl0IHR3by1zdGFnZSBUTEJzICovXG4tXHRpZiAocmlzY3ZfY2FjaGVkX212ZW5kb3JpZCgwKSA9PSBBTkRFU19WRU5ET1JfSUQgXHUwMDI2XHUwMDI2XG4tXHQgICAgKHJpc2N2X2NhY2hlZF9tYXJjaGlkKDApIFx1MDAyNiAweEZGRkYpID09IDB4OEE2Nikge1xuLVx0XHRzdGF0aWNfYnJhbmNoX2VuYWJsZShcdTAwMjZrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKTtcbi1cdFx0a3ZtX2luZm8oXCJWUy1zdGFnZSBUTEIgZG9lcyBub3QgY2FjaGUgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBhbmQgVk1JRFxcblwiKTtcbi1cdH1cbi19XG4tXG4gbG9uZyBrdm1fYXJjaF9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXG4gXHRcdFx0dW5zaWduZWQgaW50IGlvY3RsLCB1bnNpZ25lZCBsb25nIGFyZylcbiB7XG5AQCAtMTcyLDggKzE1OSw2IEBAIHN0YXRpYyBpbnQgX19pbml0IHJpc2N2X2t2bV9pbml0KHZvaWQpXG4gXHRcdGt2bV9pbmZvKFwiQUlBIGF2YWlsYWJsZSB3aXRoICVkIGd1ZXN0IGV4dGVybmFsIGludGVycnVwdHNcXG5cIixcbiBcdFx0XHQga3ZtX3Jpc2N2X2FpYV9ucl9oZ2VpKTtcbiBcbi1cdGt2bV9yaXNjdl9zZXR1cF92ZW5kb3JfZmVhdHVyZXMoKTtcbi1cbiBcdGt2bV9yZWdpc3Rlcl9wZXJmX2NhbGxiYWNrcygpO1xuIFxuIFx0cmMgPSBrdm1faW5pdChzaXplb2Yoc3RydWN0IGt2bV92Y3B1KSwgMCwgVEhJU19NT0RVTEUpO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbmluZGV4IGZmMWFlYWM0ZWI4ZWIuLjE1NDFkMDU5YTQyYWQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuKysrIGIvYXJjaC9yaXNjdi9rdm0vdGxiLmNcbkBAIC04LDYgKzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbXAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2t2bV9ob3N0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vY2FjaGVmbHVzaC5oXHUwMDNlXG5AQCAtMTYwLDEyICsxNjEsMTkgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZClcbiBcbiB2b2lkIGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIHtcbitcdGJvb2wgdmNwdV9taWdyYXRlZDtcbitcdGJvb2wgdmNwdV9zd2l0Y2hlZDtcbiBcdHVuc2lnbmVkIGxvbmcgdm1pZDtcbitcdGludCAqbGFzdF9yYW47XG4gXG4tXHRpZiAoIWt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkgfHxcbi1cdCAgICB2Y3B1LVx1MDAzZWFyY2gubGFzdF9leGl0X2NwdSA9PSB2Y3B1LVx1MDAzZWNwdSlcbitcdGxhc3RfcmFuID0gdGhpc19jcHVfcHRyKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gubGFzdF92Y3B1X3Jhbik7XG4rXHR2Y3B1X21pZ3JhdGVkID0gKHZjcHUtXHUwMDNlYXJjaC5sYXN0X2V4aXRfY3B1ICE9IHZjcHUtXHUwMDNlY3B1KTtcbitcdHZjcHVfc3dpdGNoZWQgPSAoKmxhc3RfcmFuICE9IHZjcHUtXHUwMDNldmNwdV9pZHgpO1xuK1x0aWYgKCF2Y3B1X21pZ3JhdGVkIFx1MDAyNlx1MDAyNiAhdmNwdV9zd2l0Y2hlZClcbiBcdFx0cmV0dXJuO1xuIFxuK1x0dm1pZCA9IFJFQURfT05DRSh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnZtaWQudm1pZCk7XG4rXG4gXHQvKlxuIFx0ICogT24gUklTQy1WIHBsYXRmb3JtcyB3aXRoIGhhcmR3YXJlIFZNSUQgc3VwcG9ydCwgd2Ugc2hhcmUgc2FtZVxuIFx0ICogVk1JRCBmb3IgYWxsIFZDUFVzIG9mIGEgcGFydGljdWxhciBHdWVzdC9WTS4gVGhpcyBtZWFucyB3ZSBtaWdodFxuQEAgLTE3NiwxNiArMTg0LDIzIEBAIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHQgKiBUbyBjbGVhbnVwIHN0YWxlIFRMQiBlbnRyaWVzLCB3ZSBzaW1wbHkgZmx1c2ggYWxsIEctc3RhZ2UgVExCXG4gXHQgKiBlbnRyaWVzIGJ5IFZNSUQgd2hlbmV2ZXIgdW5kZXJseWluZyBIb3N0IENQVSBjaGFuZ2VzIGZvciBhIFZDUFUuXG4gXHQgKi9cbi1cbi1cdHZtaWQgPSBSRUFEX09OQ0UodmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC52bWlkLnZtaWQpO1xuLVx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xuK1x0aWYgKHZjcHVfbWlncmF0ZWQgXHUwMDI2XHUwMDI2IGt2bV9yaXNjdl9nc3RhZ2Vfdm1pZF9iaXRzKCkpXG4rXHRcdGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfZ3ZtYV92bWlkX2FsbCh2bWlkKTtcbiBcbiBcdC8qXG4tXHQgKiBGbHVzaCBWUy1zdGFnZSBUTEIgZW50cmllcyBmb3IgaW1wbGVtZW50YXRpb24gd2hlcmUgVlMtc3RhZ2Vcbi1cdCAqIFRMQiBkb2VzIG5vdCBjYWhjZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlELlxuK1x0ICogR3Vlc3QtbG9jYWwgc2ZlbmNlLnZtYSBvbmx5IGludmFsaWRhdGVzIFZTLXN0YWdlIHRyYW5zbGF0aW9ucyBvblxuK1x0ICogdGhlIEhvc3QgQ1BVIGN1cnJlbnRseSBiYWNraW5nIHRoZSBWQ1BVLiBJZiBhIFZDUFUgbWlncmF0ZXMsIG9yXG4rXHQgKiBpZiB0aGlzIEhvc3QgQ1BVIHN3aXRjaGVzIGJldHdlZW4gVkNQVXMgb2YgdGhlIHNhbWUgVk0sIHN0YWxlXG4rXHQgKiBWUy1zdGFnZSBlbnRyaWVzIGNhbiBiZSBsZWZ0IGJlaGluZCBvbiBhIEhvc3QgQ1BVIHRoYXQgbWlzc2VkIGFcbitcdCAqIGd1ZXN0LWxvY2FsIGZsdXNoLiBGbHVzaCB0aGUgY3VycmVudCBDUFUncyBWUy1zdGFnZSBjb250ZXh0IGJlZm9yZVxuK1x0ICogZW50ZXJpbmcgdGhlIGd1ZXN0LlxuIFx0ICovXG4tXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKSlcbitcdGlmIChrdm1fcmlzY3ZfbmFjbF9hdmFpbGFibGUoKSlcbitcdFx0bmFjbF9oZmVuY2VfdnZtYV9hbGwobmFjbF9zaG1lbSgpLCB2bWlkKTtcbitcdGVsc2VcbiBcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV92dm1hX2FsbCh2bWlkKTtcbitcbitcdCpsYXN0X3JhbiA9IHZjcHUtXHUwMDNldmNwdV9pZHg7XG4gfVxuIFxuIHZvaWQga3ZtX3Jpc2N2X2ZlbmNlX2lfcHJvY2VzcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdm0uYyBiL2FyY2gvcmlzY3Yva3ZtL3ZtLmNcbmluZGV4IDEzYzYzYWUxYTc4YjIuLjI5MDcyMThhMWNmNWQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2t2bS92bS5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS92bS5jXG5AQCAtOSw2ICs5LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BlcmNwdS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWFjY2Vzcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9rdm1fbW11LmhcdTAwM2VcbkBAIC0zMCw3ICszMSw5IEBAIGNvbnN0IHN0cnVjdCBrdm1fc3RhdHNfaGVhZGVyIGt2bV92bV9zdGF0c19oZWFkZXIgPSB7XG4gXG4gaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4ge1xuK1x0aW50ICpsYXN0X3JhbjtcbiBcdGludCByO1xuK1x0aW50IGNwdTtcbiBcbiBcdHIgPSBrdm1fcmlzY3ZfbW11X2FsbG9jX3BnZChrdm0pO1xuIFx0aWYgKHIpXG5AQCAtNDIsNiArNDUsMTcgQEAgaW50IGt2bV9hcmNoX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIHR5cGUpXG4gXHRcdHJldHVybiByO1xuIFx0fVxuIFxuK1x0a3ZtLVx1MDAzZWFyY2gubGFzdF92Y3B1X3JhbiA9IGFsbG9jX3BlcmNwdShpbnQpO1xuK1x0aWYgKCFrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKSB7XG4rXHRcdGt2bV9yaXNjdl9tbXVfZnJlZV9wZ2Qoa3ZtKTtcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHR9XG4rXG4rXHRmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KSB7XG4rXHRcdGxhc3RfcmFuID0gcGVyX2NwdV9wdHIoa3ZtLVx1MDAzZWFyY2gubGFzdF92Y3B1X3JhbiwgY3B1KTtcbitcdFx0Kmxhc3RfcmFuID0gLTE7XG4rXHR9XG4rXG4gXHRrdm1fcmlzY3ZfYWlhX2luaXRfdm0oa3ZtKTtcbiBcbiBcdGt2bV9yaXNjdl9ndWVzdF90aW1lcl9pbml0KGt2bSk7XG5AQCAtNTQsNiArNjgsOCBAQCB2b2lkIGt2bV9hcmNoX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxuIFx0a3ZtX2Rlc3Ryb3lfdmNwdXMoa3ZtKTtcbiBcbiBcdGt2bV9yaXNjdl9haWFfZGVzdHJveV92bShrdm0pO1xuK1xuK1x0ZnJlZV9wZXJjcHUoa3ZtLVx1MDAzZWFyY2gubGFzdF92Y3B1X3Jhbik7XG4gfVxuIFxuIGludCBrdm1fdm1faW9jdGxfaXJxX2xpbmUoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2lycV9sZXZlbCAqaXJxbCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUyOjQxLjAwNzc4NjkwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NzMyNzg3MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhpcyBSSVNDLVYgS1ZNIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBwYXRjaCBzZXJpZXMgKmRvZXMqIGludHJvZHVjZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIFJJU0MtViBLVk0ga2VybmVsIGNvZGUsIG1lYW5pbmcgaXQncyBwcmltZSBmb3IgZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGNvbmNlbnRyYXRlZCBpbiBgYXJjaC9yaXNjdi9rdm1gIGFuZCByZXZvbHZlIGFyb3VuZCBUTEIgc2FuaXRpemF0aW9uIOKAkyBzcGVjaWZpY2FsbHkgaG93IHdlIGhhbmRsZSBWaXJ0dWFsIFN0YWdlIChWUykgVExCIGVudHJpZXMgb24gUklTQy1WLlxuXG5UaGUgbWVhdCBvZiBpdCBpcyB0aGUgYWRkaXRpb24gb2YgdGhpcyBgbGFzdF92Y3B1X3JhbmAgcGVyY3B1IHZhcmlhYmxlIHdpdGhpbiBga3ZtX2FyY2hgLiBUaGlzIGxldHMgdXMgdHJhY2sgdGhlIG1vc3QgcmVjZW50IFZDUFUgdG8gZXhlY3V0ZSBvbiBlYWNoIHBoeXNpY2FsIENQVSwgd2hpY2ggaXMgZnVuZGFtZW50YWwgdG8gdW5kZXJzdGFuZGluZyBpZiB0aGVyZSBoYXMgYmVlbiBhbnkgbWlncmF0aW9uLiBBbmQsIGltcG9ydGFudGx5LCBpZiB0aGVyZSBoYXMgYmVlbiBtaWdyYXRpb24sIHdlIGZsdXNoIHRoZSBWUy1zdGFnZSBUTEIgZW50cmllcy4gSXQgYWxzbyBtZWFucyB3ZSd2ZSBkcm9wcGVkIHRoZSBBbmRlcy1zcGVjaWZpYyBmZWF0dXJlcyByZWxhdGVkIHRvIFRMQiBmbHVzaGluZy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIG1lYW5zIHRoZSBUTEIgaW52YWxpZGF0aW9uIHN0cmF0ZWd5IGNoYW5nZWQgaW4gS1ZNLCB3aGljaCBpcyBhIGNvcmUgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eSBmb3IgYW55IHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgY2hhbmdlIGlzIHNpZ25pZmljYW50IGVub3VnaCB0byB3YXJyYW50IGZ1enppbmcgYXR0ZW50aW9uLiBUZXN0aW5nIEtWTSBvbiBSSVNDLVYgaXMgZG9hYmxlIHdpdGggUUVNVSwgc28gdGhhdCdzIGEgY2hlY2sgaW4gdGhlIFwieWVzLCBpdCdzIHJlYWNoYWJsZVwiIGJveC4gVGh1cywgYFdvcnRoRnV6emluZz10cnVlYC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHBhcnQ6IHdoYXQgZnVuY3Rpb25zIGFyZSBtb2RpZmllZD8gV2UgbmVlZCB0byB0YXJnZXQgdGhlIGZ1enppbmcgZWZmb3J0cy4gVGhlIGFmZmVjdGVkIGZ1bmN0aW9ucyBhcmU6IGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYCwgYGt2bV9hcmNoX2luaXRfdm1gLCBhbmQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gLiBOb3csIEkgd2FudCB0byBjb25maXJtIHdoZXJlIGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYCBpcyBjYWxsZWQgdG8gZW5zdXJlIHdlIGNhbiBidWlsZCB0aGUgYXBwcm9wcmlhdGUgdGVzdCBjb3ZlcmFnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUyOjQ4LjY4MTA2Nzk5MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTg3MDEyMjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdGxiLmg9NTE9dm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZCk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdGxiLmg6NTI6dm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9rdm1fdGxiLmgtNTMtXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS90bGIuYz0xNTE9dm9pZCBrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHVuc2lnbmVkIGxvbmcgdm1pZClcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL3RsYi5jLTE2MS1cXG5hcmNoL3Jpc2N2L2t2bS90bGIuYzoxNjI6dm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3Jpc2N2L2t2bS90bGIuYy0xNjMte1xcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jPTg2ND1pbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTk3MC1cXHRcXHQgKi9cXG5hcmNoL3Jpc2N2L2t2bS92Y3B1LmM6OTcxOlxcdFxcdGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemUodmNwdSk7XFxuYXJjaC9yaXNjdi9rdm0vdmNwdS5jLTk3Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTI6NTAuMjY4MDg0ODM2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg1NDg0MTcwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBLVk0vUklTQy1WIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBpZGVudGlmeSBzdWl0YWJsZSBlbnRyeSBwb2ludHMgd2l0aGluIHRoZSBSSVNDLVYgS1ZNIGNvZGUsIHNwZWNpZmljYWxseSBhdm9pZGluZyBob3QtcGF0aCBmdW5jdGlvbnMgdG8ga2VlcCB0aGUgdGVzdGluZyBkaXN0cmlidXRpb24gZmFpci4gVGhlIHByb21wdCdzIGVtcGhhc2lzIG9uIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBpcyBrZXkgaGVyZS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLCBiZWNhdXNlIHRoYXQncyB0aGUgY29yZSBvZiBWQ1BVIGV4ZWN1dGlvbiDigJMgdGhlIGBLVk1fUlVOYCBpb2N0bCBoYW5kbGVyLiBBbmQgdGhlbiBJIHJlbWVtYmVyZWQsIFwiYXZvaWQgaG90IHBhdGhzIVwiIFRoYXQncyB0aGUgcHJpbWFyeSBsb29wIGZvciBleGVjdXRpb24sIHdoaWNoIHdpbGwgc2tldyBhbnkgZGlzdHJpYnV0aW9uLiBga3ZtX2FyY2hfaW5pdF92bWAgYW5kIGBrdm1fYXJjaF9kZXN0cm95X3ZtYCBhcmUgZGVmaW5pdGVseSBzYWZlLCBidXQgYXJlIHRoZXkgdGhlIG9ubHkgb3B0aW9ucz9cblxuVGhlIHByb21wdCBkaWQgc2F5IHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMuIEkgbG9va2VkIGF0IGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYCBpcyBjYWxsZWQgZnJvbSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0IHNob3VsZCBiZSBnb29kISBJdCdzIG5vdCBzdGF0aWMgYW5kIG5vdCBpbmxpbmVkLlxuXG5UaW1lIHRvIGxvb2sgaW4gS2NvbmZpZyBhbmQgY2hlY2sgZm9yIFJJU0MtViBLVk0tcmVsYXRlZCBlbnRyeSBwb2ludHMgYW5kIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDM4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUyOjU3LjEyMjkyOThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgyMTI3NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUyOjU3LjgwNTA2MjQ0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDU5MjIzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEtWTSBvbiBSSVNDLVYgS2NvbmZpZyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCByZWFsbHkgdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBLVk0gb24gUklTQy1WLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgYXJjaGl0ZWN0dXJhbCBsYW5kc2NhcGUgYW5kIGhvdyB0aGUgdmFyaW91cyBmZWF0dXJlcyBhbmQgZnVuY3Rpb25hbGl0aWVzIGFyZSBleHBvc2VkIHRocm91Z2ggdGhlIEtjb25maWcgc3lzdGVtLiBJJ20gdGhpbmtpbmcgSSdsbCBuZWVkIHRvIGxvb2sgYXQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZSBnZW5lcmljIEtWTSBvcHRpb25zIGFuZCB0aGUgUklTQy1WIHNwZWNpZmljIG9uZXMuIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB0aGluZ3MgbGlrZSB0aGUgdmlydHVhbCBtYWNoaW5lIGV4dGVuc2lvbnMgKFZNRSksIGFueSBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0IHNwZWNpZmljIHRvIFJJU0MtViBpbXBsZW1lbnRhdGlvbnMgSSBhbSBmYW1pbGlhciB3aXRoLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaWZmZXJlbnQgcHJpdmlsZWdlIGxldmVscy4gTGV0J3Mgc2VlIGhvdyB0aGV5J3ZlIGhhbmRsZWQgdGhlIHZhcmlvdXMgcHJpdmlsZWdlIGxldmVscyB0b28uIEkgd2FudCB0byBzZWUgaG93IHRoZSBjb2RlIGhhbmRsZXMgdGhpbmdzIGxpa2UgbmVzdGVkIHZpcnR1YWxpemF0aW9uIG9yIG1lbW9yeSBtYW5hZ2VtZW50IGluIGdlbmVyYWwsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBJJ2xsIG5lZWQgdG8gY29ycmVsYXRlIHRoZSBLY29uZmlnIG9wdGlvbnMgd2l0aCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY29kZSB0byBkZXZlbG9wIGEgc29saWQgbWVudGFsIG1vZGVsLiBMZXQncyBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjI3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTM6MDEuMzEwOTg2ODQxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiYXJjaC9yaXNjdi9rdm0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgS1ZNIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbiAgIDc6XFx0XFxuICAgODpcXHRtZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXFxuICAgOTpcXHRcXHRib29sIFxcXCJWaXJ0dWFsaXphdGlvblxcXCJcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgU2F5IFkgaGVyZSB0byBnZXQgdG8gc2VlIG9wdGlvbnMgZm9yIHVzaW5nIHlvdXIgTGludXggaG9zdCB0byBydW5cXG4gIDEyOlxcdFxcdCAgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMgaW5zaWRlIHZpcnR1YWwgbWFjaGluZXMgKGd1ZXN0cykuXFxuICAxMzpcXHRcXHQgIFRoaXMgb3B0aW9uIGFsb25lIGRvZXMgbm90IGFkZCBhbnkga2VybmVsIGNvZGUuXFxuICAxNDpcXHRcXG4gIDE1OlxcdFxcdCAgSWYgeW91IHNheSBOLCBhbGwgb3B0aW9ucyBpbiB0aGlzIHN1Ym1lbnUgd2lsbCBiZSBza2lwcGVkIGFuZFxcbiAgMTY6XFx0XFx0ICBkaXNhYmxlZC5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgVklSVFVBTElaQVRJT05cXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIEtWTVxcbiAgMjE6XFx0XFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gUklTQ1ZfU0JJIFxcdTAwMjZcXHUwMDI2IE1NVVxcbiAgMjM6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0lSUUNISVBcXG4gIDI0OlxcdFxcdHNlbGVjdCBIQVZFX0tWTV9JUlFfUk9VVElOR1xcbiAgMjU6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX01TSVxcbiAgMjY6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX1JFQURPTkxZX01FTVxcbiAgMjc6XFx0XFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTFxcbiAgMjg6XFx0XFx0c2VsZWN0IEtWTV9DT01NT05cXG4gIDI5OlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG4gIDMwOlxcdFxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbiAgMzE6XFx0XFx0c2VsZWN0IEtWTV9NTUlPXFxuICAzMjpcXHRcXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcXG4gIDMzOlxcdFxcdHNlbGVjdCBTQ0hFRF9JTkZPXFxuICAzNDpcXHRcXHRzZWxlY3QgR1VFU1RfUEVSRl9FVkVOVFMgaWYgUEVSRl9FVkVOVFNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU3VwcG9ydCBob3N0aW5nIHZpcnR1YWxpemVkIGd1ZXN0IG1hY2hpbmVzLlxcbiAgMzc6XFx0XFxuICAzODpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuICAzOTpcXHRcXG4gIDQwOlxcdGVuZGlmICMgVklSVFVBTElaQVRJT05cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTM6MDEuMzExMDUzNjUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODA2MjE0MTkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSSVNDLVYgS1ZNIENvbmZpZ3VyYXRpb24gYW5kIFJlbGV2YW50IFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gYmVzdCBjb25maWd1cmUgYW5kIGFuYWx5emUgdGhpcyBSSVNDLVYgS1ZNIGNvZGUuIEl0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaXRlbSBJIG5lZWQgdG8gZW5hYmxlIGlzIGBLVk1gIGl0c2VsZi4gVGhhdCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgY29yZS4gYEtWTWAgaGluZ2VzIG9uIGBWSVJUVUFMSVpBVElPTmAsIGBSSVNDVl9TQklgLCBhbmQgYE1NVWAsIHNvIHRob3NlIGFyZSBsaWtlbHkgcHJlcmVxdWlzaXRlcywgdGhvdWdoIEkgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IGxpc3QgdGhlbSBzaW5jZSBlbmFibGluZyBgS1ZNYCBzaG91bGQgdGFrZSBjYXJlIG9mIHRoYXQuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uIEJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiwgYW5kIG15IGtub3dsZWRnZSBvZiBLVk0sIEknbSB0aGlua2luZyBJIHNob3VsZCBzdGFydCB3aXRoIHRoZSBzdGFuZGFyZCBLVk0gQVBJIGNhbGxzIGxpa2UgYGt2bV9hcmNoX2luaXRfdm1gIGFuZCBga3ZtX2FyY2hfZGVzdHJveV92bWAuIFRoZXNlIGFyZSB0aGUgZm91bmRhdGlvbmFsIHNldHVwIGFuZCB0ZWFyZG93biBwb2ludHMgZm9yIGEgVk0uIFRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZWAgYmVpbmcgc3BlY2lmaWMgdG8gUklTQy1WIEtWTSwgYW5kIGl0J3MgdGhlIHRhcmdldCBvZiB0aGUgcGF0Y2ggc28gdGhhdCBzaG91bGQgZGVmaW5pdGVseSBiZSBvbiB0aGUgbGlzdC4gU28sIEknbGwgZGVmaW5pdGVseSBsaXN0OiBga3ZtX2FyY2hfaW5pdF92bWAsIGBrdm1fYXJjaF9kZXN0cm95X3ZtYCwgYW5kIGBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplYC5cblxuTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBBaCwgeWVzLCBpdCdzIGdsb2JhbCAobm9uLXN0YXRpYykgaW4gYGFyY2gvcmlzY3Yva3ZtL3RsYi5jYCwgc28gaXQncyByZWFkaWx5IGFjY2Vzc2libGUuIGBrdm1fYXJjaF9pbml0X3ZtYCBhbmQgYGt2bV9hcmNoX2Rlc3Ryb3lfdm1gIGFyZSBpbiBgYXJjaC9yaXNjdi9rdm0vdm0uY2AuXG5cbldpdGggdGhpcyBpbiBtaW5kLCBJIHdpbGwgc2V0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emluZyBpcyBhcyB0aG9yb3VnaCBhcyBwb3NzaWJsZTpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYFxuKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbXCJrdm1fYXJjaF9pbml0X3ZtXCIsIFwia3ZtX2FyY2hfZGVzdHJveV92bVwiLCBcImt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVcIl1gXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJLVk1cIl1gXG5cblRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UgcmVsYXRlZCB0byBUTEIgc2FuaXRpemF0aW9uIHdpdGhpbiB0aGUgUklTQy1WIEtWTS4gVGhlIGNoYW5nZSBzZWVtcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIEtWTSBpb2N0bHMuIFRoZSBnb2FsIGhlcmUgaXMgdG8gY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlc2Uga2V5IEtWTSBmdW5jdGlvbnMgd2hlbiBhIFZDUFUgbWlncmF0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMjIsIk91dHB1dFRva2VucyI6MTM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTM6MDkuMzczMTk4MjM5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY4OTY4OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX2luaXRfdm1cIixcbiAgICBcImt2bV9hcmNoX2Rlc3Ryb3lfdm1cIixcbiAgICBcImt2bV9yaXNjdl9sb2NhbF90bGJfc2FuaXRpemVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVExCIHNhbml0aXphdGlvbiBsb2dpYyBmb3IgUklTQy1WIEtWTSwgaW50cm9kdWNpbmcgYSBwZXItQ1BVIHRyYWNraW5nIG9mIHRoZSBsYXN0IFZDUFUgcmFuIHRvIGZsdXNoIFZTLXN0YWdlIFRMQiBlbnRyaWVzIHVwb24gVkNQVSBtaWdyYXRpb24gb3Igc3dpdGNoaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgUklTQy1WIEtWTSBpbXBsZW1lbnRhdGlvbiByZWFjaGFibGUgdmlhIHN0YW5kYXJkIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfaW5pdF92bVwiLFxuICAgIFwia3ZtX2FyY2hfZGVzdHJveV92bVwiLFxuICAgIFwia3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUTEIgc2FuaXRpemF0aW9uIGxvZ2ljIGZvciBSSVNDLVYgS1ZNLCBpbnRyb2R1Y2luZyBhIHBlci1DUFUgdHJhY2tpbmcgb2YgdGhlIGxhc3QgVkNQVSByYW4gdG8gZmx1c2ggVlMtc3RhZ2UgVExCIGVudHJpZXMgdXBvbiBWQ1BVIG1pZ3JhdGlvbiBvciBzd2l0Y2hpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBSSVNDLVYgS1ZNIGltcGxlbWVudGF0aW9uIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTM6MDkuNDUwMTAyMDI3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDYyNjgxOTUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUzOjA5LjQ1MDU1MTA3N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDYyNjM2Njg2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSBpbnRlcm5hbCBUTEIgZmx1c2hpbmcgbG9naWMgYW5kIGludHJvZHVjZXMgYSBuZXcgcGVyLUNQVSB2YXJpYWJsZSBgbGFzdF92Y3B1X3JhbmAgdG8gdHJhY2sgdGhlIGxhc3QgVkNQVSB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVS4gVGhlIG1lbW9yeSBmb3IgdGhpcyB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgdXNpbmcgYGFsbG9jX3BlcmNwdShpbnQpYCBhbmQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgLTFgIGZvciBhbGwgcG9zc2libGUgQ1BVcyBpbW1lZGlhdGVseSBhZnRlciBhbGxvY2F0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBhbmQgbm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwNmViYTJhODAyOTY3NmQyMDljMmE3OWY3MzExNjkxMDA2NWY5YWJkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMTE6NTI6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IDI0NTg1MzA0YzAyYjEuLjM5NmFjNjIwOWM1MGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbisrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTkxLDYgKzkxLDkgQEAgc3RydWN0IGt2bV9hcmNoIHtcbiBcdC8qIEctc3RhZ2Ugdm1pZCAqL1xuIFx0c3RydWN0IGt2bV92bWlkIHZtaWQ7XG4gXG4rXHQvKiBMYXN0IFZDUFUgdGhhdCByYW4gb24gZWFjaCBwaHlzaWNhbCBDUFUgKi9cbitcdGludCBfX3BlcmNwdSAqbGFzdF92Y3B1X3JhbjtcbitcbiBcdC8qIEctc3RhZ2UgcGFnZSB0YWJsZSAqL1xuIFx0cGdkX3QgKnBnZDtcbiBcdHBoeXNfYWRkcl90IHBnZF9waHlzO1xuQEAgLTMzMCw3ICszMzMsNCBAQCBib29sIGt2bV9yaXNjdl92Y3B1X3N0b3BwZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbiBcbiB2b2lkIGt2bV9yaXNjdl92Y3B1X3JlY29yZF9zdGVhbF90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4gXG4tLyogRmxhZ3MgcmVwcmVzZW50aW5nIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGRldGFpbHMgKi9cbi1ERUNMQVJFX1NUQVRJQ19LRVlfRkFMU0Uoa3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYSk7XG4tXG4gI2VuZGlmIC8qIF9fUklTQ1ZfS1ZNX0hPU1RfSF9fICovXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jIGIvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG5pbmRleCAwZjNmZTM5ODZmYzAyLi5iMWJiYzA4MzUyN2NmIDEwMDY0NFxuLS0tIGEvYXJjaC9yaXNjdi9rdm0vbWFpbi5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS9tYWluLmNcbkBAIC0xMCwyMyArMTAsMTAgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuLSNpbmNsdWRlIFx1MDAzY2FzbS9jcHVmZWF0dXJlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20va3ZtX21tdS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9uYWNsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vc2JpLmhcdTAwM2VcbiBcbi1ERUZJTkVfU1RBVElDX0tFWV9GQUxTRShrdm1fcmlzY3ZfdnNzdGFnZV90bGJfbm9fZ3BhKTtcbi1cbi1zdGF0aWMgdm9pZCBrdm1fcmlzY3Zfc2V0dXBfdmVuZG9yX2ZlYXR1cmVzKHZvaWQpXG4te1xuLVx0LyogQW5kZXMgQVg2Njogc3BsaXQgdHdvLXN0YWdlIFRMQnMgKi9cbi1cdGlmIChyaXNjdl9jYWNoZWRfbXZlbmRvcmlkKDApID09IEFOREVTX1ZFTkRPUl9JRCBcdTAwMjZcdTAwMjZcbi1cdCAgICAocmlzY3ZfY2FjaGVkX21hcmNoaWQoMCkgXHUwMDI2IDB4RkZGRikgPT0gMHg4QTY2KSB7XG4tXHRcdHN0YXRpY19icmFuY2hfZW5hYmxlKFx1MDAyNmt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpO1xuLVx0XHRrdm1faW5mbyhcIlZTLXN0YWdlIFRMQiBkb2VzIG5vdCBjYWNoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBWTUlEXFxuXCIpO1xuLVx0fVxuLX1cbi1cbiBsb25nIGt2bV9hcmNoX2Rldl9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbiBcdFx0XHR1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuIHtcbkBAIC0xNzIsOCArMTU5LDYgQEAgc3RhdGljIGludCBfX2luaXQgcmlzY3Zfa3ZtX2luaXQodm9pZClcbiBcdFx0a3ZtX2luZm8oXCJBSUEgYXZhaWxhYmxlIHdpdGggJWQgZ3Vlc3QgZXh0ZXJuYWwgaW50ZXJydXB0c1xcblwiLFxuIFx0XHRcdCBrdm1fcmlzY3ZfYWlhX25yX2hnZWkpO1xuIFxuLVx0a3ZtX3Jpc2N2X3NldHVwX3ZlbmRvcl9mZWF0dXJlcygpO1xuLVxuIFx0a3ZtX3JlZ2lzdGVyX3BlcmZfY2FsbGJhY2tzKCk7XG4gXG4gXHRyYyA9IGt2bV9pbml0KHNpemVvZihzdHJ1Y3Qga3ZtX3ZjcHUpLCAwLCBUSElTX01PRFVMRSk7XG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rdm0vdGxiLmMgYi9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuaW5kZXggZmYxYWVhYzRlYjhlYi4uMTU0MWQwNTlhNDJhZCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3RsYi5jXG4rKysgYi9hcmNoL3Jpc2N2L2t2bS90bGIuY1xuQEAgLTgsNiArOCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJybm8uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9wZXJjcHUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NtcC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtX2hvc3QuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2FzbS9jYWNoZWZsdXNoLmhcdTAwM2VcbkBAIC0xNjAsMTIgKzE2MSwxOSBAQCB2b2lkIGt2bV9yaXNjdl9sb2NhbF9oZmVuY2VfdnZtYV9hbGwodW5zaWduZWQgbG9uZyB2bWlkKVxuIFxuIHZvaWQga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4ge1xuK1x0Ym9vbCB2Y3B1X21pZ3JhdGVkO1xuK1x0Ym9vbCB2Y3B1X3N3aXRjaGVkO1xuIFx0dW5zaWduZWQgbG9uZyB2bWlkO1xuK1x0aW50ICpsYXN0X3JhbjtcbiBcbi1cdGlmICgha3ZtX3Jpc2N2X2dzdGFnZV92bWlkX2JpdHMoKSB8fFxuLVx0ICAgIHZjcHUtXHUwMDNlYXJjaC5sYXN0X2V4aXRfY3B1ID09IHZjcHUtXHUwMDNlY3B1KVxuK1x0bGFzdF9yYW4gPSB0aGlzX2NwdV9wdHIodmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKTtcbitcdHZjcHVfbWlncmF0ZWQgPSAodmNwdS1cdTAwM2VhcmNoLmxhc3RfZXhpdF9jcHUgIT0gdmNwdS1cdTAwM2VjcHUpO1xuK1x0dmNwdV9zd2l0Y2hlZCA9ICgqbGFzdF9yYW4gIT0gdmNwdS1cdTAwM2V2Y3B1X2lkeCk7XG4rXHRpZiAoIXZjcHVfbWlncmF0ZWQgXHUwMDI2XHUwMDI2ICF2Y3B1X3N3aXRjaGVkKVxuIFx0XHRyZXR1cm47XG4gXG4rXHR2bWlkID0gUkVBRF9PTkNFKHZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gudm1pZC52bWlkKTtcbitcbiBcdC8qXG4gXHQgKiBPbiBSSVNDLVYgcGxhdGZvcm1zIHdpdGggaGFyZHdhcmUgVk1JRCBzdXBwb3J0LCB3ZSBzaGFyZSBzYW1lXG4gXHQgKiBWTUlEIGZvciBhbGwgVkNQVXMgb2YgYSBwYXJ0aWN1bGFyIEd1ZXN0L1ZNLiBUaGlzIG1lYW5zIHdlIG1pZ2h0XG5AQCAtMTc2LDE2ICsxODQsMjMgQEAgdm9pZCBrdm1fcmlzY3ZfbG9jYWxfdGxiX3Nhbml0aXplKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdCAqIFRvIGNsZWFudXAgc3RhbGUgVExCIGVudHJpZXMsIHdlIHNpbXBseSBmbHVzaCBhbGwgRy1zdGFnZSBUTEJcbiBcdCAqIGVudHJpZXMgYnkgVk1JRCB3aGVuZXZlciB1bmRlcmx5aW5nIEhvc3QgQ1BVIGNoYW5nZXMgZm9yIGEgVkNQVS5cbiBcdCAqL1xuLVxuLVx0dm1pZCA9IFJFQURfT05DRSh2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnZtaWQudm1pZCk7XG4tXHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX2d2bWFfdm1pZF9hbGwodm1pZCk7XG4rXHRpZiAodmNwdV9taWdyYXRlZCBcdTAwMjZcdTAwMjYga3ZtX3Jpc2N2X2dzdGFnZV92bWlkX2JpdHMoKSlcbitcdFx0a3ZtX3Jpc2N2X2xvY2FsX2hmZW5jZV9ndm1hX3ZtaWRfYWxsKHZtaWQpO1xuIFxuIFx0Lypcbi1cdCAqIEZsdXNoIFZTLXN0YWdlIFRMQiBlbnRyaWVzIGZvciBpbXBsZW1lbnRhdGlvbiB3aGVyZSBWUy1zdGFnZVxuLVx0ICogVExCIGRvZXMgbm90IGNhaGNlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MgYW5kIFZNSUQuXG4rXHQgKiBHdWVzdC1sb2NhbCBzZmVuY2Uudm1hIG9ubHkgaW52YWxpZGF0ZXMgVlMtc3RhZ2UgdHJhbnNsYXRpb25zIG9uXG4rXHQgKiB0aGUgSG9zdCBDUFUgY3VycmVudGx5IGJhY2tpbmcgdGhlIFZDUFUuIElmIGEgVkNQVSBtaWdyYXRlcywgb3JcbitcdCAqIGlmIHRoaXMgSG9zdCBDUFUgc3dpdGNoZXMgYmV0d2VlbiBWQ1BVcyBvZiB0aGUgc2FtZSBWTSwgc3RhbGVcbitcdCAqIFZTLXN0YWdlIGVudHJpZXMgY2FuIGJlIGxlZnQgYmVoaW5kIG9uIGEgSG9zdCBDUFUgdGhhdCBtaXNzZWQgYVxuK1x0ICogZ3Vlc3QtbG9jYWwgZmx1c2guIEZsdXNoIHRoZSBjdXJyZW50IENQVSdzIFZTLXN0YWdlIGNvbnRleHQgYmVmb3JlXG4rXHQgKiBlbnRlcmluZyB0aGUgZ3Vlc3QuXG4gXHQgKi9cbi1cdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFx1MDAyNmt2bV9yaXNjdl92c3N0YWdlX3RsYl9ub19ncGEpKVxuK1x0aWYgKGt2bV9yaXNjdl9uYWNsX2F2YWlsYWJsZSgpKVxuK1x0XHRuYWNsX2hmZW5jZV92dm1hX2FsbChuYWNsX3NobWVtKCksIHZtaWQpO1xuK1x0ZWxzZVxuIFx0XHRrdm1fcmlzY3ZfbG9jYWxfaGZlbmNlX3Z2bWFfYWxsKHZtaWQpO1xuK1xuK1x0Kmxhc3RfcmFuID0gdmNwdS1cdTAwM2V2Y3B1X2lkeDtcbiB9XG4gXG4gdm9pZCBrdm1fcmlzY3ZfZmVuY2VfaV9wcm9jZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2bS92bS5jIGIvYXJjaC9yaXNjdi9rdm0vdm0uY1xuaW5kZXggMTNjNjNhZTFhNzhiMi4uMjkwNzIxOGExY2Y1ZCAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3Yva3ZtL3ZtLmNcbisrKyBiL2FyY2gvcmlzY3Yva3ZtL3ZtLmNcbkBAIC05LDYgKzksNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGVyY3B1LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91YWNjZXNzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1faG9zdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjYXNtL2t2bV9tbXUuaFx1MDAzZVxuQEAgLTMwLDcgKzMxLDkgQEAgY29uc3Qgc3RydWN0IGt2bV9zdGF0c19oZWFkZXIga3ZtX3ZtX3N0YXRzX2hlYWRlciA9IHtcbiBcbiBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiB7XG4rXHRpbnQgKmxhc3RfcmFuO1xuIFx0aW50IHI7XG4rXHRpbnQgY3B1O1xuIFxuIFx0ciA9IGt2bV9yaXNjdl9tbXVfYWxsb2NfcGdkKGt2bSk7XG4gXHRpZiAocilcbkBAIC00Miw2ICs0NSwxNyBAQCBpbnQga3ZtX2FyY2hfaW5pdF92bShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgdHlwZSlcbiBcdFx0cmV0dXJuIHI7XG4gXHR9XG4gXG4rXHRrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuID0gYWxsb2NfcGVyY3B1KGludCk7XG4rXHRpZiAoIWt2bS1cdTAwM2VhcmNoLmxhc3RfdmNwdV9yYW4pIHtcbitcdFx0a3ZtX3Jpc2N2X21tdV9mcmVlX3BnZChrdm0pO1xuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcdH1cbitcbitcdGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHtcbitcdFx0bGFzdF9yYW4gPSBwZXJfY3B1X3B0cihrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuLCBjcHUpO1xuK1x0XHQqbGFzdF9yYW4gPSAtMTtcbitcdH1cbitcbiBcdGt2bV9yaXNjdl9haWFfaW5pdF92bShrdm0pO1xuIFxuIFx0a3ZtX3Jpc2N2X2d1ZXN0X3RpbWVyX2luaXQoa3ZtKTtcbkBAIC01NCw2ICs2OCw4IEBAIHZvaWQga3ZtX2FyY2hfZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4gXHRrdm1fZGVzdHJveV92Y3B1cyhrdm0pO1xuIFxuIFx0a3ZtX3Jpc2N2X2FpYV9kZXN0cm95X3ZtKGt2bSk7XG4rXG4rXHRmcmVlX3BlcmNwdShrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKTtcbiB9XG4gXG4gaW50IGt2bV92bV9pb2N0bF9pcnFfbGluZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1faXJxX2xldmVsICppcnFsLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTE6NTM6MDkuNDUwNTUxNzk3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNjI2MzQxMzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktNU0FOIEZ1enppbmcgU2Vzc2lvbiBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggc2VyaWVzIHRvdWNoaW5nIFJJU0MtViBLVk0gY29kZS4gU3BlY2lmaWNhbGx5LCBpdCdzIHJlbW92aW5nIHRoZSBga3ZtX3Jpc2N2X3Zzc3RhZ2VfdGxiX25vX2dwYWAgc3RhdGljIGtleSBhbmQgYXNzb2NpYXRlZCB2ZW5kb3Itc3BlY2lmaWMgc2V0dXAgYW5kIGFkZGluZyBhIGBsYXN0X3ZjcHVfcmFuYCBwZXJjcHUgdmFyaWFibGUgdG8gYHN0cnVjdCBrdm1fYXJjaGAuIFRoaXMgYGxhc3RfdmNwdV9yYW5gIGlzIGFsbG9jYXRlZCB1c2luZyBgYWxsb2NfcGVyY3B1KGludClgIGR1cmluZyBga3ZtX2FyY2hfaW5pdF92bWAgYW5kIGluaXRpYWxpemVkIHRvIGAtMWAgZm9yIGVhY2ggcG9zc2libGUgQ1BVLiBJdCBnZXRzIGZyZWVkIGluIGBrdm1fYXJjaF9kZXN0cm95X3ZtYC4gVGhlIHByaW1hcnkgdXNlIGlzIHdpdGhpbiBga3ZtX3Jpc2N2X2xvY2FsX3RsYl9zYW5pdGl6ZWAgdG8gY2hlY2sgZm9yIHZDUFUgc3dpdGNoZXMgb24gdGhlIGN1cnJlbnQgQ1BVLCBpbmZsdWVuY2luZyBUTEIgZmx1c2hpbmcgbG9naWMgYmFzZWQgb24gbWlncmF0aW9uIGFuZCBzd2l0Y2hpbmcgZXZlbnRzLlxuXG5NeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MgdGhhdCBtaWdodCB3YXJyYW50IGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4gTGV0J3MgYW5hbHl6ZS4gVGhlIGBhbGxvY19wZXJjcHVgIGNhbGwgKmRvZXMqIGluaXRpYWxpemUgbWVtb3J5IHRvIHplcm8gYnkgZGVmYXVsdCwgd2hpY2ggaXMgZ29vZC4gQnV0IHRoaXMgcGF0Y2ggZXhwbGljaXRseSBpbml0aWFsaXplcyBpdCB0byBgLTFgIGFueXdheSwgd2hpY2ggcHJvdmlkZXMgZXh0cmEgY29uZmlkZW5jZS4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGJlaW5nIGNvcGllZCB0byB1c2Vyc3BhY2UsIG1lYW5pbmcgbm8gY2hhbmNlIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgaW50ZXJuYWwgZGF0YSB0byB0aGUgb3V0c2lkZSB3b3JsZC4gVGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgS1ZNIGludGVybmFsIHdvcmtpbmdzLCBkZWFsaW5nIHdpdGggVExCIGZsdXNoaW5nLCBhbmQgdGhlIHZhcmlhYmxlIGlzIHVzZWQgZm9yIGludGVybmFsIGNvbnRyb2wgZmxvdy4gVGhlcmUgYXJlIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIG9yIHBvdGVudGlhbCBmb3IgdW5pbml0aWFsaXplZCBmaWVsZHMgdG8gYmUgcmVhZCBkdXJpbmcgcHJvY2Vzc2luZy4gVGhpcyBpbXBsaWVzIHRoZXJlJ3Mgbm8gd2F5IGl0IGludHJvZHVjZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZCBsZWFkaW5nIHRvIGFuIGluZm9ybWF0aW9uIGxlYWsuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGF0IGBhbGxvY19wZXJjcHVgIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGUgY29kZSBzbmlwcGV0IGNvbmZpcm1zIHRoaXM7IHRoZSBpbml0aWFsaXphdGlvbiBsb29wIGlzIGV4cGxpY2l0LlxuXG5gYGBjXG5cdGt2bS1cdTAwM2VhcmNoLmxhc3RfdmNwdV9yYW4gPSBhbGxvY19wZXJjcHUoaW50KTtcblx0aWYgKCFrdm0tXHUwMDNlYXJjaC5sYXN0X3ZjcHVfcmFuKSB7XG5cdFx0a3ZtX3Jpc2N2X21tdV9mcmVlX3BnZChrdm0pO1xuXHRcdHJldHVybiAtRU5PTUVNO1xuXHR9XG5cblx0Zm9yX2VhY2hfcG9zc2libGVfY3B1KGNwdSkge1xuXHRcdGxhc3RfcmFuID0gcGVyX2NwdV9wdHIoa3ZtLVx1MDAzZWFyY2gubGFzdF92Y3B1X3JhbiwgY3B1KTtcblx0XHQqbGFzdF9yYW4gPSAtMTtcblx0fVxuYGBgXG5cblNpbmNlIHRoZSBtZW1vcnkgaXMgZnVsbHkgaW5pdGlhbGl6ZWQsIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcywgYW5kIG5vdGhpbmcgaXMgZXhwb3NlZCB0byB1c2Vyc3BhY2UsIEkgYW0gY29uZmlkZW50IHRoYXQgS0FTQU4gYW5kIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY2F0Y2ggYW55IG91dC1vZi1ib3VuZHMgb3IgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGhlcmUuIEkgc2VlIG5vIG5lZWQgZm9yIEtNU0FOLiBJJ2xsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgYW5kIGRvY3VtZW50IHRoaXMgcmVhc29uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjU4LCJPdXRwdXRUb2tlbnMiOjE4NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDExOjUzOjIwLjA3Njg5NTc0N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgUklTQy1WIEtWTSBpbnRlcm5hbCBUTEIgZmx1c2hpbmcgbG9naWMgYW5kIGludHJvZHVjZXMgYSBuZXcgcGVyLUNQVSB2YXJpYWJsZSBgbGFzdF92Y3B1X3JhbmAgdG8gdHJhY2sgdGhlIGxhc3QgVkNQVSB0aGF0IHJhbiBvbiBlYWNoIHBoeXNpY2FsIENQVS4gVGhlIG1lbW9yeSBmb3IgdGhpcyB2YXJpYWJsZSBpcyBhbGxvY2F0ZWQgdXNpbmcgYGFsbG9jX3BlcmNwdShpbnQpYCBhbmQgaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byBgLTFgIGZvciBhbGwgcG9zc2libGUgQ1BVcyBpbW1lZGlhdGVseSBhZnRlciBhbGxvY2F0aW9uLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzLCBhbmQgbm8gY2hhbmdlcyB0byBib3VuZHMgY2hlY2tpbmcgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcykgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBkZWZhdWx0IGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBSSVNDLVYgS1ZNIGludGVybmFsIFRMQiBmbHVzaGluZyBsb2dpYyBhbmQgaW50cm9kdWNlcyBhIG5ldyBwZXItQ1BVIHZhcmlhYmxlIGBsYXN0X3ZjcHVfcmFuYCB0byB0cmFjayB0aGUgbGFzdCBWQ1BVIHRoYXQgcmFuIG9uIGVhY2ggcGh5c2ljYWwgQ1BVLiBUaGUgbWVtb3J5IGZvciB0aGlzIHZhcmlhYmxlIGlzIGFsbG9jYXRlZCB1c2luZyBgYWxsb2NfcGVyY3B1KGludClgIGFuZCBpcyBleHBsaWNpdGx5IGluaXRpYWxpemVkIHRvIGAtMWAgZm9yIGFsbCBwb3NzaWJsZSBDUFVzIGltbWVkaWF0ZWx5IGFmdGVyIGFsbG9jYXRpb24uIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzKSB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGRlZmF1bHQgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowc55wv[1] Phase: Succeeded StartedAt: 2026-08-17 11:53:31 +0000 UTC FinishedAt: 2026-08-17 11:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-17 11:53:31 +0000 UTC FinishedAt: 2026-08-17 11:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2] Phase: Succeeded StartedAt: 2026-08-17 11:53:31 +0000 UTC FinishedAt: 2026-08-17 12:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-17 11:53:31 +0000 UTC FinishedAt: 2026-08-17 12:33:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-17 11:53:31 +0000 UTC FinishedAt: 2026-08-17 11:53:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-17 11:53:31 +0000 UTC FinishedAt: 2026-08-17 11:53:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowc55wv/series-workflowc55wv-convert-artifact-4277602254/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-17 11:53:41 +0000 UTC FinishedAt: 2026-08-17 12:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-17 11:53:41 +0000 UTC FinishedAt: 2026-08-17 12:10:49 +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:*eb1eb3f7-2a24-40ba-abb7-7cbe367c0df7,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-workflowc55wv/series-workflowc55wv-convert-artifact-4277602254/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": "7bcbfdc7-d1e2-4fbf-b855-5914ec2f8871", "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-workflowc55wv/series-workflowc55wv-build-action-1744662580/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-17 11:53:41 +0000 UTC FinishedAt: 2026-08-17 12:10:39 +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:*eb1eb3f7-2a24-40ba-abb7-7cbe367c0df7,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-workflowc55wv/series-workflowc55wv-convert-artifact-4277602254/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": "7bcbfdc7-d1e2-4fbf-b855-5914ec2f8871", "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-workflowc55wv/series-workflowc55wv-build-action-1744662580/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-17 12:10:49 +0000 UTC FinishedAt: 2026-08-17 12:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-17 12:10:49 +0000 UTC FinishedAt: 2026-08-17 12:10:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-17 12:10:49 +0000 UTC FinishedAt: 2026-08-17 12:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-17 12:10:49 +0000 UTC FinishedAt: 2026-08-17 12:10:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowc55wv/series-workflowc55wv-convert-artifact-2942674113/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-17 12:10:59 +0000 UTC FinishedAt: 2026-08-17 12:13:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-17 12:10:59 +0000 UTC FinishedAt: 2026-08-17 12:12:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7bcbfdc7-d1e2-4fbf-b855-5914ec2f8871,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-workflowc55wv/series-workflowc55wv-build-action-1744662580/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-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-17 12:13:01 +0000 UTC FinishedAt: 2026-08-17 12:13:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-17 12:13:01 +0000 UTC FinishedAt: 2026-08-17 12:13:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-17 12:13:01 +0000 UTC FinishedAt: 2026-08-17 12:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-17 12:13:01 +0000 UTC FinishedAt: 2026-08-17 12:29: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:*eb1eb3f7-2a24-40ba-abb7-7cbe367c0df7,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-workflowc55wv/series-workflowc55wv-convert-artifact-2942674113/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": "97c33cf7-83d2-46cc-bc09-b0f9d30f6c7e", "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-workflowc55wv/series-workflowc55wv-build-action-1430765133/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-17 12:13:01 +0000 UTC FinishedAt: 2026-08-17 12:29: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:*eb1eb3f7-2a24-40ba-abb7-7cbe367c0df7,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-workflowc55wv/series-workflowc55wv-convert-artifact-2942674113/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": "97c33cf7-83d2-46cc-bc09-b0f9d30f6c7e", "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-workflowc55wv/series-workflowc55wv-build-action-1430765133/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-17 12:29:43 +0000 UTC FinishedAt: 2026-08-17 12:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-17 12:29:43 +0000 UTC FinishedAt: 2026-08-17 12:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-17 12:29:43 +0000 UTC FinishedAt: 2026-08-17 12:31:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-17 12:29:43 +0000 UTC FinishedAt: 2026-08-17 12:31:44 +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:*97c33cf7-83d2-46cc-bc09-b0f9d30f6c7e,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-workflowc55wv/series-workflowc55wv-build-action-1430765133/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-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-17 12:31:54 +0000 UTC FinishedAt: 2026-08-17 12:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-17 12:31:54 +0000 UTC FinishedAt: 2026-08-17 12:33:12 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"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:*7bcbfdc7-d1e2-4fbf-b855-5914ec2f8871,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*97c33cf7-83d2-46cc-bc09-b0f9d30f6c7e,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-workflowc55wv/series-workflowc55wv-build-action-1744662580/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-workflowc55wv/series-workflowc55wv-build-action-1430765133/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-17 12:31:54 +0000 UTC FinishedAt: 2026-08-17 12:32:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-17 12:31:54 +0000 UTC FinishedAt: 2026-08-17 12:31:58 +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-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"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-workflowc55wv/series-workflowc55wv-convert-artifact-1006672214/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-17 12:31:54 +0000 UTC FinishedAt: 2026-08-17 12:31:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-17 12:31:54 +0000 UTC FinishedAt: 2026-08-17 12:31:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-17 12:31:54 +0000 UTC FinishedAt: 2026-08-17 12:31:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-17 12:32:04 +0000 UTC FinishedAt: 2026-08-17 12:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc55wv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_init_vm","kvm_arch_destroy_vm","kvm_riscv_local_tlb_sanitize"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"02e545c4297a26dbbc41df81b831e7f605bcd306","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"8284d2dd-fd4a-4bd7-98d3-4a57f562f486","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-17 12:32:04 +0000 UTC FinishedAt: 2026-08-17 12:33:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7bcbfdc7-d1e2-4fbf-b855-5914ec2f8871,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*97c33cf7-83d2-46cc-bc09-b0f9d30f6c7e,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-workflowc55wv/series-workflowc55wv-build-action-1744662580/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-workflowc55wv/series-workflowc55wv-build-action-1430765133/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-workflowc55wv/series-workflowc55wv-convert-artifact-1006672214/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,}