Name: series-workflowfgxsq Phase: Succeeded StartedAt: 2026-08-27 05:41:37 +0000 UTC FinishedAt: 2026-08-27 06:55:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[0] Phase: Succeeded StartedAt: 2026-08-27 05:41:37 +0000 UTC FinishedAt: 2026-08-27 05:44:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[0].run-triage Phase: Succeeded StartedAt: 2026-08-27 05:41:37 +0000 UTC FinishedAt: 2026-08-27 05:44:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD" ], "series_id": "a3ca2def-1926-422d-90ee-f37660e321de" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "nested_svm_vmexit" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmVzdGVkX3N2bV92bWV4aXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHN0YXRlIHJlc3RvcmF0aW9uIGJ1ZyBpbiBLVk0mIzM5O3MgbmVzdGVkIFNWTSBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlIEwxIGh5cGVydmlzb3ImIzM5O3MgZGVidWcgcmVnaXN0ZXJzIChEUjYgYW5kIERSNykgd2VyZSBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZyb20gdGhlIEwxIFZNQ0IgKHZtY2IwMSkgdXBvbiBhIG5lc3RlZCBWTSBleGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBidWcgcmVsYXRlZCB0byBoYXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50LCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBWTUNCIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkIGJ5IEtWTSBhbmQgdGhlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSwgYW5kIHN0YW5kYXJkIHRlc3RpbmcvZnV6emluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmVzdGVkIFZNLWV4aXQgaGFuZGxlciBpbiBLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIChTVk0pIHRvIGNvcnJlY3RseSByZXN0b3JlIHRoZSBEUjYgYW5kIERSNyBkZWJ1ZyByZWdpc3RlcnMgZnJvbSB0aGUgaG9zdCBWTUNCICh2bWNiMDEpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjNiMTgzNzczYWY1Zjk1ZmFjNTM3YTBiOTFiODQxZTUzMjE5YTM2N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDI3IDA1OjQzOjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG5pbmRleCA3M2YzN2IwNTBkMGEwLi5lNzk3NWFjN2JmY2EyIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuQEAgLTE0MjcsNyAmIzQzOzE0MjcsOCBAQCB2b2lkIG5lc3RlZF9zdm1fdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuIFx0a3ZtX3JzcF93cml0ZSh2Y3B1LCB2bWNiMDEtXHUwMDNlc2F2ZS5yc3ApO1xuIFx0a3ZtX3JpcF93cml0ZSh2Y3B1LCB2bWNiMDEtXHUwMDNlc2F2ZS5yaXApO1xuIFxuLVx0c3ZtLVx1MDAzZXZjcHUuYXJjaC5kcjcgPSBEUjdfRklYRURfMTtcbiYjNDM7XHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNiA9IHZtY2IwMS1cdTAwM2VzYXZlLmRyNjtcbiYjNDM7XHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNyA9IHZtY2IwMS1cdTAwM2VzYXZlLmRyNztcbiBcdGt2bV91cGRhdGVfZHI3KFx1MDAyNnN2bS1cdTAwM2V2Y3B1KTtcbiBcbiBcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbmluZGV4IDk2YmFiNzAwMmQzOWUuLjMyMjlkNjczODE3ZTYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG5AQCAtMTIxLDYgJiM0MzsxMjEsNyBAQCBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZVxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfc2h1dGRvd25fdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfc29mdF9pbmplY3RfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfdm1jYjEyX2dwYVxuJiM0MztURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfcGF0X3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbGJyX25lc3RlZF9zdGF0ZVxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9wbXVfaG9zdF9ndWVzdF90ZXN0XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNmVmMjljZjBhODE5N1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jXG5AQCAtMCwwICYjNDM7MSwxMDQgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuJiM0MzsvKlxuJiM0MzsgKiBOZXN0ZWQgU1ZNIGRlYnVnIHJlZ2lzdGVyIHN0YXRlIHRlc3QuXG4mIzQzOyAqL1xuJiM0MzsjaW5jbHVkZSBcJiMzNDt0ZXN0X3V0aWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtrdm1fdXRpbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3Byb2Nlc3Nvci5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3N2bV91dGlsLmhcJiMzNDtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgRFI2X0FDVElWRV9MT1dcdDB4ZmZmZjBmZjBcbiYjNDM7I2RlZmluZSBEUjZfQjBcdFx0QklUKDApXG4mIzQzOyNkZWZpbmUgRFI2X0JTXHRcdEJJVCgxNClcbiYjNDM7I2RlZmluZSBEUjdfRklYRURfMVx0MHg0MDBcbiYjNDM7I2RlZmluZSBEUjdfR0VcdFx0QklUKDkpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIEwxX0RSNlx0XHQoRFI2X0FDVElWRV9MT1cgfCBEUjZfQlMpXG4mIzQzOyNkZWZpbmUgTDJfRFI2XHRcdChEUjZfQUNUSVZFX0xPVyB8IERSNl9CMClcbiYjNDM7I2RlZmluZSBMMV9EUjdcdFx0KERSN19GSVhFRF8xIHwgRFI3X0dFKVxuJiM0MzsjZGVmaW5lIEwyX0RSN1x0XHQoRFI3X0ZJWEVEXzEpXG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHU2NCBnZXRfZHI2KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHR1NjQgdmFsO1xuJiM0MztcbiYjNDM7XHRhc20gdm9sYXRpbGUoXCYjMzQ7bW92ICUlZHI2LCAlMFwmIzM0OyA6IFwmIzM0Oz1yXCYjMzQ7KHZhbCkgOiA6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1x0cmV0dXJuIHZhbDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSB1NjQgZ2V0X2RyNyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0dTY0IHZhbDtcbiYjNDM7XG4mIzQzO1x0YXNtIHZvbGF0aWxlKFwmIzM0O21vdiAlJWRyNywgJTBcJiMzNDsgOiBcJiMzNDs9clwmIzM0Oyh2YWwpIDogOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0MztcdHJldHVybiB2YWw7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZHI2KHU2NCB2YWwpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUoXCYjMzQ7bW92ICUwLCAlJWRyNlwmIzM0OyA6IDogXCYjMzQ7clwmIzM0Oyh2YWwpIDogXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHNldF9kcjcodTY0IHZhbClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZShcJiMzNDttb3YgJTAsICUlZHI3XCYjMzQ7IDogOiBcJiMzNDtyXCYjMzQ7KHZhbCkgOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNigpLCBMMl9EUjYpO1xuJiM0MztcdEdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwyX0RSNyk7XG4mIzQzO1x0dm1tY2FsbCgpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBsMV9ndWVzdF9jb2RlKHN0cnVjdCBzdm1fdGVzdF9kYXRhICpzdm0pXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgdm1jYiAqdm1jYiA9IHN2bS1cdTAwM2V2bWNiO1xuJiM0MztcbiYjNDM7XHRzZXRfZHI2KEwxX0RSNik7XG4mIzQzO1x0c2V0X2RyNyhMMV9EUjcpO1xuJiM0MztcbiYjNDM7XHRnZW5lcmljX3N2bV9zZXR1cChzdm0sIGwyX2d1ZXN0X2NvZGUpO1xuJiM0MztcdHZtY2ItXHUwMDNlc2F2ZS5kcjYgPSBMMl9EUjY7XG4mIzQzO1x0dm1jYi1cdTAwM2VzYXZlLmRyNyA9IEwyX0RSNztcbiYjNDM7XG4mIzQzO1x0cnVuX2d1ZXN0KHZtY2IsIHN2bS1cdTAwM2V2bWNiX2dwYSk7XG4mIzQzO1x0R1VFU1RfQVNTRVJUX0VRKHZtY2ItXHUwMDNlY29udHJvbC5leGl0X2NvZGUsIFNWTV9FWElUX1ZNTUNBTEwpO1xuJiM0MztcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2VzYXZlLmRyNiwgTDJfRFI2KTtcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2VzYXZlLmRyNywgTDJfRFI3KTtcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNigpLCBMMV9EUjYpO1xuJiM0MztcdEdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwxX0RSNyk7XG4mIzQzO1xuJiM0MztcdEdVRVNUX0RPTkUoKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbiYjNDM7XHRzdHJ1Y3QgdWNhbGwgdWM7XG4mIzQzO1x0Z3ZhX3Qgc3ZtX2d2YTtcbiYjNDM7XG4mIzQzO1x0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpO1xuJiM0MztcbiYjNDM7XHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFx1MDAyNnZjcHUsIGwxX2d1ZXN0X2NvZGUpO1xuJiM0MztcdHZjcHVfYWxsb2Nfc3ZtKHZtLCBcdTAwMjZzdm1fZ3ZhKTtcbiYjNDM7XHR2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpO1xuJiM0MztcbiYjNDM7XHR2Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XHRURVNUX0FTU0VSVF9LVk1fRVhJVF9SRUFTT04odmNwdSwgS1ZNX0VYSVRfSU8pO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcdTAwMjZ1YykpIHtcbiYjNDM7XHRjYXNlIFVDQUxMX0FCT1JUOlxuJiM0MztcdFx0UkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFVDQUxMX0RPTkU6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0VEVTVF9GQUlMKFwmIzM0O1Vua25vd24gdWNhbGwgJWx1XCYjMzQ7LCB1Yy5jbWQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0a3ZtX3ZtX2ZyZWUodm0pO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmVzdGVkX3N2bV92bWV4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5lc3RlZCBWTS1leGl0IGhhbmRsZXIgaW4gS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyAoU1ZNKSB0byBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgRFI2IGFuZCBEUjcgZGVidWcgcmVnaXN0ZXJzIGZyb20gdGhlIGhvc3QgVk1DQiAodm1jYjAxKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGIzYjE4Mzc3M2FmNWY5NWZhYzUzN2EwYjkxYjg0MWU1MzIxOWEzNjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAwNTo0MzozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jCmluZGV4IDczZjM3YjA1MGQwYTAuLmU3OTc1YWM3YmZjYTIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYwpAQCAtMTQyNyw3ICYjNDM7MTQyNyw4IEBAIHZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pCiAJa3ZtX3JzcF93cml0ZSh2Y3B1LCB2bWNiMDEtJmd0O3NhdmUucnNwKTsKIAlrdm1fcmlwX3dyaXRlKHZjcHUsIHZtY2IwMS0mZ3Q7c2F2ZS5yaXApOwogCi0Jc3ZtLSZndDt2Y3B1LmFyY2guZHI3ID0gRFI3X0ZJWEVEXzE7CiYjNDM7CXN2bS0mZ3Q7dmNwdS5hcmNoLmRyNiA9IHZtY2IwMS0mZ3Q7c2F2ZS5kcjY7CiYjNDM7CXN2bS0mZ3Q7dmNwdS5hcmNoLmRyNyA9IHZtY2IwMS0mZ3Q7c2F2ZS5kcjc7CiAJa3ZtX3VwZGF0ZV9kcjcoJmFtcDtzdm0tJmd0O3ZjcHUpOwogCiAJbmVzdGVkX3N2bV90cmFuc2l0aW9uX3RsYl9mbHVzaCh2Y3B1KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCmluZGV4IDk2YmFiNzAwMmQzOWUuLjMyMjlkNjczODE3ZTYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bQpAQCAtMTIxLDYgJiM0MzsxMjEsNyBAQCBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZQogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX25lc3RlZF9zaHV0ZG93bl90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3NvZnRfaW5qZWN0X3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfdm1jYjEyX2dwYQomIzQzO1RFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3BhdF90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbGJyX25lc3RlZF9zdGF0ZQogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX3BtdV9ob3N0X2d1ZXN0X3Rlc3QKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi42ZWYyOWNmMGE4MTk3Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jCkBAIC0wLDAgJiM0MzsxLDEwNCBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKJiM0MzsvKgomIzQzOyAqIE5lc3RlZCBTVk0gZGVidWcgcmVnaXN0ZXIgc3RhdGUgdGVzdC4KJiM0MzsgKi8KJiM0MzsjaW5jbHVkZSAmIzM0O3Rlc3RfdXRpbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7cHJvY2Vzc29yLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7c3ZtX3V0aWwuaCYjMzQ7CiYjNDM7CiYjNDM7I2RlZmluZSBEUjZfQUNUSVZFX0xPVwkweGZmZmYwZmYwCiYjNDM7I2RlZmluZSBEUjZfQjAJCUJJVCgwKQomIzQzOyNkZWZpbmUgRFI2X0JTCQlCSVQoMTQpCiYjNDM7I2RlZmluZSBEUjdfRklYRURfMQkweDQwMAomIzQzOyNkZWZpbmUgRFI3X0dFCQlCSVQoOSkKJiM0MzsKJiM0MzsjZGVmaW5lIEwxX0RSNgkJKERSNl9BQ1RJVkVfTE9XIHwgRFI2X0JTKQomIzQzOyNkZWZpbmUgTDJfRFI2CQkoRFI2X0FDVElWRV9MT1cgfCBEUjZfQjApCiYjNDM7I2RlZmluZSBMMV9EUjcJCShEUjdfRklYRURfMSB8IERSN19HRSkKJiM0MzsjZGVmaW5lIEwyX0RSNwkJKERSN19GSVhFRF8xKQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdTY0IGdldF9kcjYodm9pZCkKJiM0Mzt7CiYjNDM7CXU2NCB2YWw7CiYjNDM7CiYjNDM7CWFzbSB2b2xhdGlsZSgmIzM0O21vdiAlJWRyNiwgJTAmIzM0OyA6ICYjMzQ7PXImIzM0Oyh2YWwpIDogOiAmIzM0O21lbW9yeSYjMzQ7KTsKJiM0MzsJcmV0dXJuIHZhbDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSB1NjQgZ2V0X2RyNyh2b2lkKQomIzQzO3sKJiM0MzsJdTY0IHZhbDsKJiM0MzsKJiM0MzsJYXNtIHZvbGF0aWxlKCYjMzQ7bW92ICUlZHI3LCAlMCYjMzQ7IDogJiMzNDs9ciYjMzQ7KHZhbCkgOiA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwlyZXR1cm4gdmFsOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNih1NjQgdmFsKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlKCYjMzQ7bW92ICUwLCAlJWRyNiYjMzQ7IDogOiAmIzM0O3ImIzM0Oyh2YWwpIDogJiMzNDttZW1vcnkmIzM0Oyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZHI3KHU2NCB2YWwpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDttb3YgJTAsICUlZHI3JiMzNDsgOiA6ICYjMzQ7ciYjMzQ7KHZhbCkgOiAmIzM0O21lbW9yeSYjMzQ7KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbDJfZ3Vlc3RfY29kZSh2b2lkKQomIzQzO3sKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKGdldF9kcjYoKSwgTDJfRFI2KTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKGdldF9kcjcoKSwgTDJfRFI3KTsKJiM0MzsJdm1tY2FsbCgpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBsMV9ndWVzdF9jb2RlKHN0cnVjdCBzdm1fdGVzdF9kYXRhICpzdm0pCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgdm1jYiAqdm1jYiA9IHN2bS0mZ3Q7dm1jYjsKJiM0MzsKJiM0MzsJc2V0X2RyNihMMV9EUjYpOwomIzQzOwlzZXRfZHI3KEwxX0RSNyk7CiYjNDM7CiYjNDM7CWdlbmVyaWNfc3ZtX3NldHVwKHN2bSwgbDJfZ3Vlc3RfY29kZSk7CiYjNDM7CXZtY2ItJmd0O3NhdmUuZHI2ID0gTDJfRFI2OwomIzQzOwl2bWNiLSZndDtzYXZlLmRyNyA9IEwyX0RSNzsKJiM0MzsKJiM0MzsJcnVuX2d1ZXN0KHZtY2IsIHN2bS0mZ3Q7dm1jYl9ncGEpOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEodm1jYi0mZ3Q7Y29udHJvbC5leGl0X2NvZGUsIFNWTV9FWElUX1ZNTUNBTEwpOwomIzQzOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEodm1jYi0mZ3Q7c2F2ZS5kcjYsIEwyX0RSNik7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUSh2bWNiLSZndDtzYXZlLmRyNywgTDJfRFI3KTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKGdldF9kcjYoKSwgTDFfRFI2KTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKGdldF9kcjcoKSwgTDFfRFI3KTsKJiM0MzsKJiM0MzsJR1VFU1RfRE9ORSgpOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO3sKJiM0MzsJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJc3RydWN0IHVjYWxsIHVjOwomIzQzOwlndmFfdCBzdm1fZ3ZhOwomIzQzOwomIzQzOwlURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSk7CiYjNDM7CiYjNDM7CXZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoJmFtcDt2Y3B1LCBsMV9ndWVzdF9jb2RlKTsKJiM0MzsJdmNwdV9hbGxvY19zdm0odm0sICZhbXA7c3ZtX2d2YSk7CiYjNDM7CXZjcHVfYXJnc19zZXQodmNwdSwgMSwgc3ZtX2d2YSk7CiYjNDM7CiYjNDM7CXZjcHVfcnVuKHZjcHUpOwomIzQzOwlURVNUX0FTU0VSVF9LVk1fRVhJVF9SRUFTT04odmNwdSwgS1ZNX0VYSVRfSU8pOwomIzQzOwomIzQzOwlzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCAmYW1wO3VjKSkgewomIzQzOwljYXNlIFVDQUxMX0FCT1JUOgomIzQzOwkJUkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBVQ0FMTF9ET05FOgomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlURVNUX0ZBSUwoJiMzNDtVbmtub3duIHVjYWxsICVsdSYjMzQ7LCB1Yy5jbWQpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWt2bV92bV9mcmVlKHZtKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjI0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0OiBOZXN0ZWQgU1ZNIFZNLUV4aXQgSGFuZGxlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jYC4gSXQmIzM5O3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgYnV0IHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBJdCYjMzk7cyBpbiB0aGUgYG5lc3RlZF9zdm1fdm1leGl0YCBoYW5kbGVyIGFuZCBpdCYjMzk7cyByZXN0b3JpbmcgYGRyNmAgYW5kIGBkcjdgIGZyb20gYHZtY2IwMS0mZ3Q7c2F2ZWAuIFRoYXQgaW5kaWNhdGVzIHRoYXQsIG9uIGEgbmVzdGVkIFZNLWV4aXQsIHRoZSB2YWx1ZXMgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycyBhcmUgYmVpbmcgc2F2ZWQgYW5kIHRoZW4gcmVzdG9yZWQuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBjcnVjaWFsIGZvciBtYWludGFpbmluZyBndWVzdCBkZWJ1Z2dpbmcgc3RhdGUgYWNyb3NzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gSXQmIzM5O3MgY2xlYXJseSByZWFjaGFibGUgaW4gYSBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LiBIbW0sIHJlc3RvcmluZyB0aG9zZSByZWdpc3RlcnMgc291bmRzIGxpa2UgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCk5vdywgbGV0JiMzOTtzIHNlZSBhYm91dCBidWlsZGluZyBhIGZ1enppbmcgdGFyZ2V0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEtWTSBhbmQgU1ZNIGFyZSBlbmFibGVkLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gS1ZNIGlzIGBDT05GSUdfS1ZNYCwgd2hpY2ggSSBhbHJlYWR5IGtuZXcsIGFuZCBTVk0gaXMgYENPTkZJR19LVk1fQU1EYC4gSSYjMzk7bGwgdmVyaWZ5IHRoZSBkZXRhaWxzIG9mIHRob3NlIGluIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AganVzdCB0byBiZSBzdXJlLiBBbHJpZ2h0LCBJJiMzOTt2ZSBnb3QgYSBnb29kIHRhcmdldCwgSSBjYW4gZ2V0IHRvIHdvcmsgb24gc2V0dGluZyB1cCBhIGZ1enogaGFybmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNX0FNRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMyNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBOZXN0ZWQgU1ZNIFZNLUV4aXQgSGFuZGxlcioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIG5lc3RlZCBTVk0gVk0tZXhpdCBoYW5kbGVyLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gemVyb2luZyBpbiBvbiBgbmVzdGVkX3N2bV92bWV4aXRgIGxvY2F0ZWQgd2l0aGluIGBhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgb3IgYXQgbGVhc3QsIHdoZXJlIHRoZSBjcnVjaWFsIGxvZ2ljIGZvciBoYW5kbGluZyBWTSBleGl0cyByZWxhdGVkIHRvIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiB3aXRoaW4gQU1EJiMzOTtzIFNlY3VyZSBWaXJ0dWFsIE1hY2hpbmUgaXMgaW1wbGVtZW50ZWQuIFRoaXMgaXMgdGhlIGNvcmUgb2YgaG93IHRoZSBoeXBlcnZpc29yIGludGVyYWN0cyB3aXRoIHRoZSBuZXN0ZWQgZ3Vlc3QgZW52aXJvbm1lbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBjb250cm9sIGZsb3cgd29ya3MgaGVyZS4gVGltZSB0byBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmVzdGVkX3N2bV92bWV4aXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9Mzg9c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9pbmplY3RfbnBmX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzAtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjcxOlx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzItfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTExMz1pbnQgbmVzdGVkX3N2bV92bXJ1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTg4LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMTg5Olx0XHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTkwLVx0fVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTIzMz12b2lkIHN2bV9jb3B5X3ZtbG9hZHNhdmVfc3RhdGUoc3RydWN0IHZtY2IgKnRvX3ZtY2IsIHN0cnVjdCB2bWNiICpmcm9tX3ZtY2IpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjQ4LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjQ5OnN0YXRpYyBpbnQgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyNTAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMxNi1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTMxNzp2b2lkIG5lc3RlZF9zdm1fdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzE4LXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMjItXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzMjM6XHRpZiAobmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMih2Y3B1KSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMyNC1cdFx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX1RSSVBMRV9GQVVMVCwgdmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNjQ3PWludCBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NTMtXHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0RPTkUpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2NTQ6XHRcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NTUtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNjgyPXN0YXRpYyB2b2lkIG5lc3RlZF9zdm1faW5qZWN0X2V4Y2VwdGlvbl92bWV4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTcxMy1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTcxNDpcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3MTUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNzQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneTogYG5lc3RlZF9zdm1fdm1leGl0YCoqCgpPa2F5LCBzbyB0aGUgYG5lc3RlZF9zdm1fdm1leGl0YCBmdW5jdGlvbiBpcyB0aGUgdGFyZ2V0IOKAkyB0aGF0JiMzOTtzIHRoZSBvbmUgSSYjMzk7bSB3b3JraW5nIHdpdGguIExldCYjMzk7cyBzZWUsIGlzIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBmdW5jdGlvbiB0aGF0IHdhcyBtb2RpZmllZCBpbiB0aGUgcGF0Y2g/IE5vLCBpdCYjMzk7cyBqdXN0IHRoaXMgb25lLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgIGFuZCBtb2RpZmllcyBgbmVzdGVkX3N2bV92bWV4aXRgIHdpdGhpbiB0aGF0IGZpbGUuIFRoaXMgaXMgKmFic29sdXRlbHkqIHdvcnRoIGEgZnV6emluZyBjYW1wYWlnbi4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNWTSBleGl0cywgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSB0byBmaW5kIHNvbWUgaW50ZXJlc3RpbmcgYnVncyBoZXJlLgoKVGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zIGFyZSBgS1ZNYCBhbmQgYEtWTV9BTURgLiBJJiMzOTtsbCBuZWVkIHRvIGtlZXAgdGhvc2UgaW4gbWluZCB3aGVuIGNvbmZpZ3VyaW5nIG15IGZ1enppbmcgZW52aXJvbm1lbnQgYW5kIGJ1aWxkIHByb2Nlc3Nlcy4KCk15IGZvY3VzIGlzIGxhc2VyLXNoYXJwOiBgbmVzdGVkX3N2bV92bWV4aXRgLiBOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byBjb25maXJtIGl0cyB2aXNpYmlsaXR5LiBJcyB0aGlzIGZ1bmN0aW9uIHN0YXRpYz8gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGRlY2xhcmF0aW9uOiBgdm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlgLiBOb3BlLCBpdCYjMzk7cyBub3Qgc3RhdGljLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlcyBhbmQgbm90IGp1c3Qgd2l0aGluIHRoZSBmaWxlLCB3aGljaCBpbmNyZWFzZXMgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgYGFyY2gveDg2L2t2bS9LY29uZmlnYCB0byBzZWUgaWYgYEtWTV9BTURgIGhhcyBhbnkgZGVwZW5kZW5jaWVzLiBNaWdodCBpbmZsdWVuY2UgbXkgZnV6emluZyBzZXR1cC4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNX0FNRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA5MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIEtWTSBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIEtWTSBjb25maWd1cmF0aW9uIGFnYWluLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBvZiB0aGUgb3B0aW9ucywgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE0NiBpbiBgYXJjaC94ODYva3ZtL0tjb25maWdgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYmVpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYXkgdGhlcmUuIEkgaGF2ZSBhIGh1bmNoIHRoaXMgcmVsYXRlcyB0byBzb21lIGZlYXR1cmVzIEkgd2FzIGNvbnNpZGVyaW5nIGludGVncmF0aW5nIGVhcmxpZXIsIHNvIEkgc2hvdWxkIHNlZSBob3cgdGhpcyBmaXRzIGluIHdpdGggdGhlIGV4aXN0aW5nIGNvZGViYXNlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHRvbyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTQwOlx0XHRoZWxwXG4gMTQxOlx0XHQgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIGxhdW5jaGluZyBJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKVxuIDE0MjpcdFx0ICBjb25maWRlbnRpYWwgVk1zIG9uIEludGVsIHByb2Nlc3NvcnMuXG4gMTQzOlx0XG4gMTQ0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gMTQ1Olx0XG4gMTQ2Olx0Y29uZmlnIEtWTV9BTURcbiAxNDc6XHRcdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuIDE0ODpcdFx0ZGVwZW5kcyBvbiBLVk0gXHUwMDI2XHUwMDI2IChDUFVfU1VQX0FNRCB8fCBDUFVfU1VQX0hZR09OKVxuIDE0OTpcdFx0aGVscFxuIDE1MDpcdFx0ICBQcm92aWRlcyBzdXBwb3J0IGZvciBLVk0gb24gQU1EIHByb2Nlc3NvcnMgZXF1aXBwZWQgd2l0aCB0aGUgQU1ELVZcbiAxNTE6XHRcdCAgKFNWTSkgZXh0ZW5zaW9ucy5cbiAxNTI6XHRcbiAxNTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gMTU0Olx0XHQgIHdpbGwgYmUgY2FsbGVkIGt2bS1hbWQuXG4gMTU1Olx0XG4gMTU2Olx0Y29uZmlnIEtWTV9BTURfU0VWXG4gMTU3Olx0XHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbiAxNTg6XHRcdGRlZmF1bHQgeVxuIDE1OTpcdFx0ZGVwZW5kcyBvbiBLVk1fQU1EIFx1MDAyNlx1MDAyNiBYODZfNjRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU4NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0vQU1EIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWNhbGx5IGZvciBBTUQgcHJvY2Vzc29ycy4gSSBrbm93IGBLVk1gIGFuZCBgS1ZNX0FNRGAgYXJlIGRlZmluaXRlbHkgZXNzZW50aWFsIOKAkyB0aGV5JiMzOTtyZSB0aGUgY29yZSBjb21wb25lbnRzLiBgQ1BVX1NVUF9BTURgIHVzdWFsbHkgY29tZXMgZW5hYmxlZCBieSBkZWZhdWx0IG9uIHg4NiBzeXN0ZW1zLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBiZXN0IHRvIGluY2x1ZGUgaXQuIEkganVzdCB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgYSBjb25maWd1cmFibGUgb3B0aW9uLgoKTm93LCBJIG5lZWQgdG8gem9vbSBpbiBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBBTUQmIzM5O3MgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQuIEl0IGxvb2tzIGxpa2UgYG5lc3RlZF9zdm1fdm1leGl0YCBpcyB0aGUgb25seSBmdW5jdGlvbiBJIG5lZWQgdG8gbG9vayBhdC4gU2luY2UgaXQgaGFuZGxlcyBuZXN0ZWQgVk0gZXhpdHMsIHdoaWNoIGlzIG5vdCBhIHN1cGVyIGhpZ2ggZnJlcXVlbmN5LCBidXQgc3RpbGwgYSBWTSBleGl0LCBpdCBjb3VsZCBiZW5lZml0IGZyb20gYSBiaXQgb2YgZnV6emluZy4gSXQmIzM5O3Mgbm90IGEgY29tbW9uIHBhdGgsIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciB0ZXN0aW5nLgoKQW5kLCBvZiBjb3Vyc2UsIEkgc2hvdWxkIHRha2UgYSBsb29rIGF0IGBuZXN0ZWRfc3ZtX3ZtcnVuYCBhcyB3ZWxsLiBUaGF0IGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBhbmQgdGhhdCBzZWVtcyBpbXBvcnRhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25lc3RlZF9zdm1fdm1ydW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTA4Nj1zdGF0aWMgaW50IG5lc3RlZF9zdm1fY29weV92bWNiMTJfdG9fY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdm1jYjEyX2dwYSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExMTItXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExMTM6aW50IG5lc3RlZF9zdm1fdm1ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTE0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzIwMgoJCQkJCQkJb3V0cHV0OiAxMTQKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgYSBLVk0gU1ZNIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IHJpZ2h0IGludG8gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBhZGQgYG5lc3RlZF9zdm1fdm1leGl0YCBhbmQgYG5lc3RlZF9zdm1fdm1ydW5gIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0OyBzZWVtcyBsb2dpY2FsIGdpdmVuIHRoZSBjb250ZXh0LiBOb3csIGJhY2sgdG8gdGhpcyBwYXRjaC4gTGV0JiMzOTtzIHNlZS4uLgoKYGBgYwotCXN2bS0mZ3Q7dmNwdS5hcmNoLmRyNyA9IERSN19GSVhFRF8xOwomIzQzOwlzdm0tJmd0O3ZjcHUuYXJjaC5kcjYgPSB2bWNiMDEtJmd0O3NhdmUuZHI2OwomIzQzOwlzdm0tJmd0O3ZjcHUuYXJjaC5kcjcgPSB2bWNiMDEtJmd0O3NhdmUuZHI3OwpgYGAKCkFoLCByaWdodC4gVGhpcyBpcyBmaXhpbmcgdGhlIGlzc3VlIHdoZXJlIGBkcjZgIGFuZCBgZHI3YCwgd2hpY2ggYXJlIHRoZSBkZWJ1ZyByZWdpc3RlcnMsIHdlcmUgKm5vdCogZ2V0dGluZyBwcm9wZXJseSByZXN0b3JlZCBmcm9tIGB2bWNiMDFgIHdoZW4gYSBuZXN0ZWQgVk0gZXhpdHMuIEVzc2VudGlhbGx5LCBjcml0aWNhbCBzdGF0ZSB3YXNuJiMzOTt0IGJlaW5nIHByZXNlcnZlZCBvbiBuZXN0ZWQgVk0gZXhpdCwgd2hpY2ggd291bGQgY2F1c2Ugc29tZSBwcmV0dHkgbmFzdHkgYmVoYXZpb3IsIGxpa2VseSBsZWFkaW5nIHRvIGEgY3Jhc2ggb3IgdW5kZWZpbmVkIGJlaGF2aW9yIGRvd24gdGhlIGxpbmUuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCBmb3IgS1ZNIFNWTSBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIENsZWFybHkgZXNzZW50aWFsIGZvciB0aGUgc3RhYmlsaXR5IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGF0IHN1YnN5c3RlbS4KCkFuZCB0aGUgY29uZmlncyBhcmUgYEtWTWAgYW5kIGBLVk1fQU1EYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBmb3IgdGhpcy4KCkFscmlnaHQsIEkmIzM5O2xsIGNhbGwgc2V0LXJlc3VsdHMuIFRoaXMgaXMgYW4gaW1wb3J0YW50LCBhbGJlaXQgc21hbGwsIHN0ZXAgdG93YXJkcyBtYWtpbmcgc3VyZSBuZXN0ZWQgU1ZNIGJlaGF2ZXMgcHJvcGVybHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25lc3RlZF9zdm1fdm1leGl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXN0ZWQgVk0tZXhpdCBoYW5kbGVyIGluIEtWTSBmb3IgQU1EIHByb2Nlc3NvcnMgKFNWTSkgdG8gY29ycmVjdGx5IHJlc3RvcmUgdGhlIERSNiBhbmQgRFI3IGRlYnVnIHJlZ2lzdGVycyBmcm9tIHRoZSBob3N0IFZNQ0IgKHZtY2IwMSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmVzdGVkX3N2bV92bWV4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5lc3RlZCBWTS1leGl0IGhhbmRsZXIgaW4gS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyAoU1ZNKSB0byBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgRFI2IGFuZCBEUjcgZGVidWcgcmVnaXN0ZXJzIGZyb20gdGhlIGhvc3QgVk1DQiAodm1jYjAxKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNTo0NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHN0YXRlIHJlc3RvcmF0aW9uIGJ1ZyBpbiBLVk0mIzM5O3MgbmVzdGVkIFNWTSBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlIEwxIGh5cGVydmlzb3ImIzM5O3MgZGVidWcgcmVnaXN0ZXJzIChEUjYgYW5kIERSNykgd2VyZSBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZyb20gdGhlIEwxIFZNQ0IgKHZtY2IwMSkgdXBvbiBhIG5lc3RlZCBWTSBleGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBidWcgcmVsYXRlZCB0byBoYXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50LCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBWTUNCIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkIGJ5IEtWTSBhbmQgdGhlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSwgYW5kIHN0YW5kYXJkIHRlc3RpbmcvZnV6emluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiM2IxODM3NzNhZjVmOTVmYWM1MzdhMGI5MWI4NDFlNTMyMTlhMzY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjcgMDU6NDM6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYwppbmRleCA3M2YzN2IwNTBkMGEwLi5lNzk3NWFjN2JmY2EyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMKQEAgLTE0MjcsNyAmIzQzOzE0MjcsOCBAQCB2b2lkIG5lc3RlZF9zdm1fdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKQogCWt2bV9yc3Bfd3JpdGUodmNwdSwgdm1jYjAxLSZndDtzYXZlLnJzcCk7CiAJa3ZtX3JpcF93cml0ZSh2Y3B1LCB2bWNiMDEtJmd0O3NhdmUucmlwKTsKIAotCXN2bS0mZ3Q7dmNwdS5hcmNoLmRyNyA9IERSN19GSVhFRF8xOwomIzQzOwlzdm0tJmd0O3ZjcHUuYXJjaC5kcjYgPSB2bWNiMDEtJmd0O3NhdmUuZHI2OwomIzQzOwlzdm0tJmd0O3ZjcHUuYXJjaC5kcjcgPSB2bWNiMDEtJmd0O3NhdmUuZHI3OwogCWt2bV91cGRhdGVfZHI3KCZhbXA7c3ZtLSZndDt2Y3B1KTsKIAogCW5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bQppbmRleCA5NmJhYjcwMDJkMzllLi4zMjI5ZDY3MzgxN2U2IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KQEAgLTEyMSw2ICYjNDM7MTIxLDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX25lc3RlZF9jbGVhcl9lZmVyX3N2bWUKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfc2h1dGRvd25fdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX25lc3RlZF9zb2Z0X2luamVjdF90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3ZtY2IxMl9ncGEKJiM0MztURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX25lc3RlZF9wYXRfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX2xicl9uZXN0ZWRfc3RhdGUKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9wbXVfaG9zdF9ndWVzdF90ZXN0CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNmVmMjljZjBhODE5NwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuYwpAQCAtMCwwICYjNDM7MSwxMDQgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiYjNDM7LyoKJiM0MzsgKiBOZXN0ZWQgU1ZNIGRlYnVnIHJlZ2lzdGVyIHN0YXRlIHRlc3QuCiYjNDM7ICovCiYjNDM7I2luY2x1ZGUgJiMzNDt0ZXN0X3V0aWwuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtrdm1fdXRpbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3Byb2Nlc3Nvci5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3N2bV91dGlsLmgmIzM0OwomIzQzOwomIzQzOyNkZWZpbmUgRFI2X0FDVElWRV9MT1cJMHhmZmZmMGZmMAomIzQzOyNkZWZpbmUgRFI2X0IwCQlCSVQoMCkKJiM0MzsjZGVmaW5lIERSNl9CUwkJQklUKDE0KQomIzQzOyNkZWZpbmUgRFI3X0ZJWEVEXzEJMHg0MDAKJiM0MzsjZGVmaW5lIERSN19HRQkJQklUKDkpCiYjNDM7CiYjNDM7I2RlZmluZSBMMV9EUjYJCShEUjZfQUNUSVZFX0xPVyB8IERSNl9CUykKJiM0MzsjZGVmaW5lIEwyX0RSNgkJKERSNl9BQ1RJVkVfTE9XIHwgRFI2X0IwKQomIzQzOyNkZWZpbmUgTDFfRFI3CQkoRFI3X0ZJWEVEXzEgfCBEUjdfR0UpCiYjNDM7I2RlZmluZSBMMl9EUjcJCShEUjdfRklYRURfMSkKJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHU2NCBnZXRfZHI2KHZvaWQpCiYjNDM7ewomIzQzOwl1NjQgdmFsOwomIzQzOwomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDttb3YgJSVkcjYsICUwJiMzNDsgOiAmIzM0Oz1yJiMzNDsodmFsKSA6IDogJiMzNDttZW1vcnkmIzM0Oyk7CiYjNDM7CXJldHVybiB2YWw7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdTY0IGdldF9kcjcodm9pZCkKJiM0Mzt7CiYjNDM7CXU2NCB2YWw7CiYjNDM7CiYjNDM7CWFzbSB2b2xhdGlsZSgmIzM0O21vdiAlJWRyNywgJTAmIzM0OyA6ICYjMzQ7PXImIzM0Oyh2YWwpIDogOiAmIzM0O21lbW9yeSYjMzQ7KTsKJiM0MzsJcmV0dXJuIHZhbDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHNldF9kcjYodTY0IHZhbCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSgmIzM0O21vdiAlMCwgJSVkcjYmIzM0OyA6IDogJiMzNDtyJiMzNDsodmFsKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNyh1NjQgdmFsKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlKCYjMzQ7bW92ICUwLCAlJWRyNyYjMzQ7IDogOiAmIzM0O3ImIzM0Oyh2YWwpIDogJiMzNDttZW1vcnkmIzM0Oyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGwyX2d1ZXN0X2NvZGUodm9pZCkKJiM0Mzt7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShnZXRfZHI2KCksIEwyX0RSNik7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwyX0RSNyk7CiYjNDM7CXZtbWNhbGwoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbDFfZ3Vlc3RfY29kZShzdHJ1Y3Qgc3ZtX3Rlc3RfZGF0YSAqc3ZtKQomIzQzO3sKJiM0MzsJc3RydWN0IHZtY2IgKnZtY2IgPSBzdm0tJmd0O3ZtY2I7CiYjNDM7CiYjNDM7CXNldF9kcjYoTDFfRFI2KTsKJiM0MzsJc2V0X2RyNyhMMV9EUjcpOwomIzQzOwomIzQzOwlnZW5lcmljX3N2bV9zZXR1cChzdm0sIGwyX2d1ZXN0X2NvZGUpOwomIzQzOwl2bWNiLSZndDtzYXZlLmRyNiA9IEwyX0RSNjsKJiM0MzsJdm1jYi0mZ3Q7c2F2ZS5kcjcgPSBMMl9EUjc7CiYjNDM7CiYjNDM7CXJ1bl9ndWVzdCh2bWNiLCBzdm0tJmd0O3ZtY2JfZ3BhKTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKHZtY2ItJmd0O2NvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9WTU1DQUxMKTsKJiM0MzsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKHZtY2ItJmd0O3NhdmUuZHI2LCBMMl9EUjYpOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEodm1jYi0mZ3Q7c2F2ZS5kcjcsIEwyX0RSNyk7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShnZXRfZHI2KCksIEwxX0RSNik7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwxX0RSNyk7CiYjNDM7CiYjNDM7CUdVRVNUX0RPTkUoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdSAqdmNwdTsKJiM0MzsJc3RydWN0IGt2bV92bSAqdm07CiYjNDM7CXN0cnVjdCB1Y2FsbCB1YzsKJiM0MzsJZ3ZhX3Qgc3ZtX2d2YTsKJiM0MzsKJiM0MzsJVEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpOwomIzQzOwomIzQzOwl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgbDFfZ3Vlc3RfY29kZSk7CiYjNDM7CXZjcHVfYWxsb2Nfc3ZtKHZtLCAmYW1wO3N2bV9ndmEpOwomIzQzOwl2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpOwomIzQzOwomIzQzOwl2Y3B1X3J1bih2Y3B1KTsKJiM0MzsJVEVTVF9BU1NFUlRfS1ZNX0VYSVRfUkVBU09OKHZjcHUsIEtWTV9FWElUX0lPKTsKJiM0MzsKJiM0MzsJc3dpdGNoIChnZXRfdWNhbGwodmNwdSwgJmFtcDt1YykpIHsKJiM0MzsJY2FzZSBVQ0FMTF9BQk9SVDoKJiM0MzsJCVJFUE9SVF9HVUVTVF9BU1NFUlQodWMpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgVUNBTExfRE9ORToKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJVEVTVF9GQUlMKCYjMzQ7VW5rbm93biB1Y2FsbCAlbHUmIzM0OywgdWMuY21kKTsKJiM0MzsJfQomIzQzOwomIzQzOwlrdm1fdm1fZnJlZSh2bSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjEKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogNjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBLVk0gTmVzdGVkIFNWTSBEZWJ1ZyBSZWdpc3RlciBSZXN0b3JhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGBuZXN0ZWRfc3ZtX3ZtZXhpdCgpYCBmdW5jdGlvbi4gSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZml4OiBpdCByZXN0b3JlcyB0aGUgZGVidWcgcmVnaXN0ZXJzIGBkcjZgIGFuZCBgZHI3YCBmcm9tIHRoZSBgdm1jYjAxYCBzdHJ1Y3R1cmUgZHVyaW5nIGEgbmVzdGVkIFZNIGV4aXQuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBmaXhpbmcgYSBsb2dpYyBidWcgd2hlcmUgdGhlIEwxIGh5cGVydmlzb3ImIzM5O3MgZGVidWcgcmVnaXN0ZXJzIHdlcmVuJiMzOTt0IGJlaW5nIGNvcnJlY3RseSBwcmVzZXJ2ZWQgYW5kIHJlLWxvYWRlZCB3aGVuIGFuIEwyIFZNIGV4aXRlZCBiYWNrIHRvIEwxLiBCZWZvcmUgdGhlIHBhdGNoLCBgZHI3YCB3YXMgYmVpbmcgaGFyZGNvZGVkIHRvIGBEUjdfRklYRURfMWAsIGFuZCBgZHI2YCB3YXNuJiMzOTt0IGJlaW5nIHRvdWNoZWQgYXQgYWxsLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgYWJvdXQgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaW1wbGljYXRpb25zLCBhbmQgdGhhdCB0cmlnZ2VycyBteSBLTVNBTiByYWRhci4gQ291bGQgdGhpcyBiZSBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIG5vdCByZWFsbHkuIFRoZSBgdm1jYjAxLSZndDtzYXZlLmRyNmAgYW5kIGB2bWNiMDEtJmd0O3NhdmUuZHI3YCBmaWVsZHMgY29tZSBmcm9tIHRoZSBWTUNCLCB3aGljaCBpcyBhICpoYXJkd2FyZSotZGVmaW5lZCBzdHJ1Y3R1cmUuIEtWTSwgYW5kIGJ5IGV4dGVuc2lvbiB0aGUgaGFyZHdhcmUsIHRha2VzIGNhcmUgb2YgcHJvcGVybHkgaW5pdGlhbGl6aW5nIGFuZCBtYW5hZ2luZyB0aGlzLiBUaGUgY29yZSBwcm9ibGVtIGhlcmUgaXMgKmZ1bmN0aW9uYWwqIC0gS1ZNIHdhc24mIzM5O3QgcmVzdG9yaW5nIHRoZSBkZWJ1ZyByZWdpc3RlciBzdGF0ZSBjb3JyZWN0bHkuIEl0JiMzOTtzIG5vdCBhYm91dCByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgZGF0YTsgaXQmIzM5O3MgYWJvdXQgbm90IHJlbG9hZGluZyB0aGUgKmNvcnJlY3QqIHZhbHVlcyB0aGF0IHdlcmUgc2F2ZWQuIFNvLCB0aGlzIGlzbiYjMzk7dCBhIEtNU0FOIGlzc3VlLiBLTVNBTiBpcyBmb3IgY2F0Y2hpbmcgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk7IEtBU0FOIHdvdWxkIGJlIGZvciBvdXQtb2YtYm91bmRzIGFjY2VzcywgdXNlLWFmdGVyLWZyZWUsIGV0Yy4gVGhpcyBpcyBuZWl0aGVyLgoKSSYjMzk7bSBjb25maXJtaW5nIG15IHJlYXNvbmluZyBieSByZS1ydW5uaW5nIHRoZSBsb2dpYy4gVGhlIHBhdGNoIGlzIGFib3V0ICpzdGF0ZSByZXN0b3JhdGlvbiosIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4gS01TQU4gaXMgZGVmaW5pdGVseSBub3QgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoaXMgYnVnLiBJdCYjMzk7cyBub3QgcmVsZXZhbnQuCgpTbywgSSYjMzk7bSBnb2luZyB0byBwdXQgdG9nZXRoZXIgdGhlIEtNU0FOIHJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBzdGF0ZSByZXN0b3JhdGlvbiBidWcgaW4gS1ZNJiMzOTtzIG5lc3RlZCBTVk0gaW1wbGVtZW50YXRpb24sIHdoZXJlIHRoZSBMMSBoeXBlcnZpc29yJiMzOTtzIGRlYnVnIHJlZ2lzdGVycyAoRFI2IGFuZCBEUjcpIHdlcmUgbm90IGNvcnJlY3RseSByZXN0b3JlZCBmcm9tIHRoZSBMMSBWTUNCICh2bWNiMDEpIHVwb24gYSBuZXN0ZWQgVk0gZXhpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYnVnIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc3RhdGUgbWFuYWdlbWVudCwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGUgVk1DQiBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgbWFuYWdlZCBieSBLVk0gYW5kIHRoZSBoYXJkd2FyZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUsIGFuZCBzdGFuZGFyZCB0ZXN0aW5nL2Z1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHN0YXRlIHJlc3RvcmF0aW9uIGJ1ZyBpbiBLVk0mIzM5O3MgbmVzdGVkIFNWTSBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlIEwxIGh5cGVydmlzb3ImIzM5O3MgZGVidWcgcmVnaXN0ZXJzIChEUjYgYW5kIERSNykgd2VyZSBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZyb20gdGhlIEwxIFZNQ0IgKHZtY2IwMSkgdXBvbiBhIG5lc3RlZCBWTSBleGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBidWcgcmVsYXRlZCB0byBoYXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50LCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBWTUNCIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkIGJ5IEtWTSBhbmQgdGhlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSwgYW5kIHN0YW5kYXJkIHRlc3RpbmcvZnV6emluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBzdGF0ZSByZXN0b3JhdGlvbiBidWcgaW4gS1ZNJiMzOTtzIG5lc3RlZCBTVk0gaW1wbGVtZW50YXRpb24sIHdoZXJlIHRoZSBMMSBoeXBlcnZpc29yJiMzOTtzIGRlYnVnIHJlZ2lzdGVycyAoRFI2IGFuZCBEUjcpIHdlcmUgbm90IGNvcnJlY3RseSByZXN0b3JlZCBmcm9tIHRoZSBMMSBWTUNCICh2bWNiMDEpIHVwb24gYSBuZXN0ZWQgVk0gZXhpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYnVnIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc3RhdGUgbWFuYWdlbWVudCwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGUgVk1DQiBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgbWFuYWdlZCBieSBLVk0gYW5kIHRoZSBoYXJkd2FyZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUsIGFuZCBzdGFuZGFyZCB0ZXN0aW5nL2Z1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6MzkuNDc5Njc4MDY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkyMDk3MDE2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3N2bV92bWV4aXRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgc3RhdGUgcmVzdG9yYXRpb24gYnVnIGluIEtWTSdzIG5lc3RlZCBTVk0gaW1wbGVtZW50YXRpb24sIHdoZXJlIHRoZSBMMSBoeXBlcnZpc29yJ3MgZGVidWcgcmVnaXN0ZXJzIChEUjYgYW5kIERSNykgd2VyZSBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZyb20gdGhlIEwxIFZNQ0IgKHZtY2IwMSkgdXBvbiBhIG5lc3RlZCBWTSBleGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBidWcgcmVsYXRlZCB0byBoYXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50LCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBWTUNCIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkIGJ5IEtWTSBhbmQgdGhlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSwgYW5kIHN0YW5kYXJkIHRlc3RpbmcvZnV6emluZyBpcyBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXN0ZWQgVk0tZXhpdCBoYW5kbGVyIGluIEtWTSBmb3IgQU1EIHByb2Nlc3NvcnMgKFNWTSkgdG8gY29ycmVjdGx5IHJlc3RvcmUgdGhlIERSNiBhbmQgRFI3IGRlYnVnIHJlZ2lzdGVycyBmcm9tIHRoZSBob3N0IFZNQ0IgKHZtY2IwMSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA1OjQzOjM5LjQ3OTY4Mzc3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2MjAwNjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjNiMTgzNzczYWY1Zjk1ZmFjNTM3YTBiOTFiODQxZTUzMjE5YTM2N1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwNTo0MzozOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xcbmluZGV4IDczZjM3YjA1MGQwYTAuLmU3OTc1YWM3YmZjYTIgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcXG5AQCAtMTQyNyw3ICsxNDI3LDggQEAgdm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4gXFx0a3ZtX3JzcF93cml0ZSh2Y3B1LCB2bWNiMDEtXFx1MDAzZXNhdmUucnNwKTtcXG4gXFx0a3ZtX3JpcF93cml0ZSh2Y3B1LCB2bWNiMDEtXFx1MDAzZXNhdmUucmlwKTtcXG4gXFxuLVxcdHN2bS1cXHUwMDNldmNwdS5hcmNoLmRyNyA9IERSN19GSVhFRF8xO1xcbitcXHRzdm0tXFx1MDAzZXZjcHUuYXJjaC5kcjYgPSB2bWNiMDEtXFx1MDAzZXNhdmUuZHI2O1xcbitcXHRzdm0tXFx1MDAzZXZjcHUuYXJjaC5kcjcgPSB2bWNiMDEtXFx1MDAzZXNhdmUuZHI3O1xcbiBcXHRrdm1fdXBkYXRlX2RyNyhcXHUwMDI2c3ZtLVxcdTAwM2V2Y3B1KTtcXG4gXFxuIFxcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuaW5kZXggOTZiYWI3MDAyZDM5ZS4uMzIyOWQ2NzM4MTdlNiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxcbkBAIC0xMjEsNiArMTIxLDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZVxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfc2h1dGRvd25fdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfc29mdF9pbmplY3RfdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfdm1jYjEyX2dwYVxcbitURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9wYXRfdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9sYnJfbmVzdGVkX3N0YXRlXFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX3BtdV9ob3N0X2d1ZXN0X3Rlc3RcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi42ZWYyOWNmMGE4MTk3XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuY1xcbkBAIC0wLDAgKzEsMTA0IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4rLypcXG4rICogTmVzdGVkIFNWTSBkZWJ1ZyByZWdpc3RlciBzdGF0ZSB0ZXN0LlxcbisgKi9cXG4rI2luY2x1ZGUgXFxcInRlc3RfdXRpbC5oXFxcIlxcbisjaW5jbHVkZSBcXFwia3ZtX3V0aWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInByb2Nlc3Nvci5oXFxcIlxcbisjaW5jbHVkZSBcXFwic3ZtX3V0aWwuaFxcXCJcXG4rXFxuKyNkZWZpbmUgRFI2X0FDVElWRV9MT1dcXHQweGZmZmYwZmYwXFxuKyNkZWZpbmUgRFI2X0IwXFx0XFx0QklUKDApXFxuKyNkZWZpbmUgRFI2X0JTXFx0XFx0QklUKDE0KVxcbisjZGVmaW5lIERSN19GSVhFRF8xXFx0MHg0MDBcXG4rI2RlZmluZSBEUjdfR0VcXHRcXHRCSVQoOSlcXG4rXFxuKyNkZWZpbmUgTDFfRFI2XFx0XFx0KERSNl9BQ1RJVkVfTE9XIHwgRFI2X0JTKVxcbisjZGVmaW5lIEwyX0RSNlxcdFxcdChEUjZfQUNUSVZFX0xPVyB8IERSNl9CMClcXG4rI2RlZmluZSBMMV9EUjdcXHRcXHQoRFI3X0ZJWEVEXzEgfCBEUjdfR0UpXFxuKyNkZWZpbmUgTDJfRFI3XFx0XFx0KERSN19GSVhFRF8xKVxcbitcXG4rc3RhdGljIGlubGluZSB1NjQgZ2V0X2RyNih2b2lkKVxcbit7XFxuK1xcdHU2NCB2YWw7XFxuK1xcbitcXHRhc20gdm9sYXRpbGUoXFxcIm1vdiAlJWRyNiwgJTBcXFwiIDogXFxcIj1yXFxcIih2YWwpIDogOiBcXFwibWVtb3J5XFxcIik7XFxuK1xcdHJldHVybiB2YWw7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgdTY0IGdldF9kcjcodm9pZClcXG4re1xcbitcXHR1NjQgdmFsO1xcbitcXG4rXFx0YXNtIHZvbGF0aWxlKFxcXCJtb3YgJSVkcjcsICUwXFxcIiA6IFxcXCI9clxcXCIodmFsKSA6IDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXHRyZXR1cm4gdmFsO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNih1NjQgdmFsKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZShcXFwibW92ICUwLCAlJWRyNlxcXCIgOiA6IFxcXCJyXFxcIih2YWwpIDogXFxcIm1lbW9yeVxcXCIpO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNyh1NjQgdmFsKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZShcXFwibW92ICUwLCAlJWRyN1xcXCIgOiA6IFxcXCJyXFxcIih2YWwpIDogXFxcIm1lbW9yeVxcXCIpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpXFxuK3tcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjYoKSwgTDJfRFI2KTtcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjcoKSwgTDJfRFI3KTtcXG4rXFx0dm1tY2FsbCgpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBsMV9ndWVzdF9jb2RlKHN0cnVjdCBzdm1fdGVzdF9kYXRhICpzdm0pXFxuK3tcXG4rXFx0c3RydWN0IHZtY2IgKnZtY2IgPSBzdm0tXFx1MDAzZXZtY2I7XFxuK1xcbitcXHRzZXRfZHI2KEwxX0RSNik7XFxuK1xcdHNldF9kcjcoTDFfRFI3KTtcXG4rXFxuK1xcdGdlbmVyaWNfc3ZtX3NldHVwKHN2bSwgbDJfZ3Vlc3RfY29kZSk7XFxuK1xcdHZtY2ItXFx1MDAzZXNhdmUuZHI2ID0gTDJfRFI2O1xcbitcXHR2bWNiLVxcdTAwM2VzYXZlLmRyNyA9IEwyX0RSNztcXG4rXFxuK1xcdHJ1bl9ndWVzdCh2bWNiLCBzdm0tXFx1MDAzZXZtY2JfZ3BhKTtcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKHZtY2ItXFx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9WTU1DQUxMKTtcXG4rXFxuK1xcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVxcdTAwM2VzYXZlLmRyNiwgTDJfRFI2KTtcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKHZtY2ItXFx1MDAzZXNhdmUuZHI3LCBMMl9EUjcpO1xcbitcXHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNigpLCBMMV9EUjYpO1xcbitcXHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNygpLCBMMV9EUjcpO1xcbitcXG4rXFx0R1VFU1RfRE9ORSgpO1xcbit9XFxuK1xcbitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbit7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcXG4rXFx0c3RydWN0IGt2bV92bSAqdm07XFxuK1xcdHN0cnVjdCB1Y2FsbCB1YztcXG4rXFx0Z3ZhX3Qgc3ZtX2d2YTtcXG4rXFxuK1xcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKTtcXG4rXFxuK1xcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXFx1MDAyNnZjcHUsIGwxX2d1ZXN0X2NvZGUpO1xcbitcXHR2Y3B1X2FsbG9jX3N2bSh2bSwgXFx1MDAyNnN2bV9ndmEpO1xcbitcXHR2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpO1xcbitcXG4rXFx0dmNwdV9ydW4odmNwdSk7XFxuK1xcdFRFU1RfQVNTRVJUX0tWTV9FWElUX1JFQVNPTih2Y3B1LCBLVk1fRVhJVF9JTyk7XFxuK1xcbitcXHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcXHUwMDI2dWMpKSB7XFxuK1xcdGNhc2UgVUNBTExfQUJPUlQ6XFxuK1xcdFxcdFJFUE9SVF9HVUVTVF9BU1NFUlQodWMpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBVQ0FMTF9ET05FOlxcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0VEVTVF9GQUlMKFxcXCJVbmtub3duIHVjYWxsICVsdVxcXCIsIHVjLmNtZCk7XFxuK1xcdH1cXG4rXFxuK1xcdGt2bV92bV9mcmVlKHZtKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NDAuMTE2NDY5NDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyODExMDQxNjIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZXN0ZWRfc3ZtX3ZtZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXN0ZWQgVk0tZXhpdCBoYW5kbGVyIGluIEtWTSBmb3IgQU1EIHByb2Nlc3NvcnMgKFNWTSkgdG8gY29ycmVjdGx5IHJlc3RvcmUgdGhlIERSNiBhbmQgRFI3IGRlYnVnIHJlZ2lzdGVycyBmcm9tIHRoZSBob3N0IFZNQ0IgKHZtY2IwMSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIzYjE4Mzc3M2FmNWY5NWZhYzUzN2EwYjkxYjg0MWU1MzIxOWEzNjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwNTo0MzozOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG5pbmRleCA3M2YzN2IwNTBkMGEwLi5lNzk3NWFjN2JmY2EyIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuQEAgLTE0MjcsNyArMTQyNyw4IEBAIHZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4gXHRrdm1fcnNwX3dyaXRlKHZjcHUsIHZtY2IwMS1cdTAwM2VzYXZlLnJzcCk7XG4gXHRrdm1fcmlwX3dyaXRlKHZjcHUsIHZtY2IwMS1cdTAwM2VzYXZlLnJpcCk7XG4gXG4tXHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNyA9IERSN19GSVhFRF8xO1xuK1x0c3ZtLVx1MDAzZXZjcHUuYXJjaC5kcjYgPSB2bWNiMDEtXHUwMDNlc2F2ZS5kcjY7XG4rXHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNyA9IHZtY2IwMS1cdTAwM2VzYXZlLmRyNztcbiBcdGt2bV91cGRhdGVfZHI3KFx1MDAyNnN2bS1cdTAwM2V2Y3B1KTtcbiBcbiBcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbmluZGV4IDk2YmFiNzAwMmQzOWUuLjMyMjlkNjczODE3ZTYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG5AQCAtMTIxLDYgKzEyMSw3IEBAIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9jbGVhcl9lZmVyX3N2bWVcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfc2h1dGRvd25fdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9zb2Z0X2luamVjdF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX3ZtY2IxMl9ncGFcbitURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX3BhdF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbGJyX25lc3RlZF9zdGF0ZVxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX3BtdV9ob3N0X2d1ZXN0X3Rlc3RcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi42ZWYyOWNmMGE4MTk3XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0LmNcbkBAIC0wLDAgKzEsMTA0IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuKy8qXG4rICogTmVzdGVkIFNWTSBkZWJ1ZyByZWdpc3RlciBzdGF0ZSB0ZXN0LlxuKyAqL1xuKyNpbmNsdWRlIFwidGVzdF91dGlsLmhcIlxuKyNpbmNsdWRlIFwia3ZtX3V0aWwuaFwiXG4rI2luY2x1ZGUgXCJwcm9jZXNzb3IuaFwiXG4rI2luY2x1ZGUgXCJzdm1fdXRpbC5oXCJcbitcbisjZGVmaW5lIERSNl9BQ1RJVkVfTE9XXHQweGZmZmYwZmYwXG4rI2RlZmluZSBEUjZfQjBcdFx0QklUKDApXG4rI2RlZmluZSBEUjZfQlNcdFx0QklUKDE0KVxuKyNkZWZpbmUgRFI3X0ZJWEVEXzFcdDB4NDAwXG4rI2RlZmluZSBEUjdfR0VcdFx0QklUKDkpXG4rXG4rI2RlZmluZSBMMV9EUjZcdFx0KERSNl9BQ1RJVkVfTE9XIHwgRFI2X0JTKVxuKyNkZWZpbmUgTDJfRFI2XHRcdChEUjZfQUNUSVZFX0xPVyB8IERSNl9CMClcbisjZGVmaW5lIEwxX0RSN1x0XHQoRFI3X0ZJWEVEXzEgfCBEUjdfR0UpXG4rI2RlZmluZSBMMl9EUjdcdFx0KERSN19GSVhFRF8xKVxuK1xuK3N0YXRpYyBpbmxpbmUgdTY0IGdldF9kcjYodm9pZClcbit7XG4rXHR1NjQgdmFsO1xuK1xuK1x0YXNtIHZvbGF0aWxlKFwibW92ICUlZHI2LCAlMFwiIDogXCI9clwiKHZhbCkgOiA6IFwibWVtb3J5XCIpO1xuK1x0cmV0dXJuIHZhbDtcbit9XG4rXG4rc3RhdGljIGlubGluZSB1NjQgZ2V0X2RyNyh2b2lkKVxuK3tcbitcdHU2NCB2YWw7XG4rXG4rXHRhc20gdm9sYXRpbGUoXCJtb3YgJSVkcjcsICUwXCIgOiBcIj1yXCIodmFsKSA6IDogXCJtZW1vcnlcIik7XG4rXHRyZXR1cm4gdmFsO1xuK31cbitcbitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNih1NjQgdmFsKVxuK3tcbitcdGFzbSB2b2xhdGlsZShcIm1vdiAlMCwgJSVkcjZcIiA6IDogXCJyXCIodmFsKSA6IFwibWVtb3J5XCIpO1xuK31cbitcbitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNyh1NjQgdmFsKVxuK3tcbitcdGFzbSB2b2xhdGlsZShcIm1vdiAlMCwgJSVkcjdcIiA6IDogXCJyXCIodmFsKSA6IFwibWVtb3J5XCIpO1xuK31cbitcbitzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpXG4re1xuK1x0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjYoKSwgTDJfRFI2KTtcbitcdEdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwyX0RSNyk7XG4rXHR2bW1jYWxsKCk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGwxX2d1ZXN0X2NvZGUoc3RydWN0IHN2bV90ZXN0X2RhdGEgKnN2bSlcbit7XG4rXHRzdHJ1Y3Qgdm1jYiAqdm1jYiA9IHN2bS1cdTAwM2V2bWNiO1xuK1xuK1x0c2V0X2RyNihMMV9EUjYpO1xuK1x0c2V0X2RyNyhMMV9EUjcpO1xuK1xuK1x0Z2VuZXJpY19zdm1fc2V0dXAoc3ZtLCBsMl9ndWVzdF9jb2RlKTtcbitcdHZtY2ItXHUwMDNlc2F2ZS5kcjYgPSBMMl9EUjY7XG4rXHR2bWNiLVx1MDAzZXNhdmUuZHI3ID0gTDJfRFI3O1xuK1xuK1x0cnVuX2d1ZXN0KHZtY2IsIHN2bS1cdTAwM2V2bWNiX2dwYSk7XG4rXHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2Vjb250cm9sLmV4aXRfY29kZSwgU1ZNX0VYSVRfVk1NQ0FMTCk7XG4rXG4rXHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2VzYXZlLmRyNiwgTDJfRFI2KTtcbitcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVx1MDAzZXNhdmUuZHI3LCBMMl9EUjcpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjYoKSwgTDFfRFI2KTtcbitcdEdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwxX0RSNyk7XG4rXG4rXHRHVUVTVF9ET05FKCk7XG4rfVxuK1xuK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4re1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuK1x0c3RydWN0IGt2bV92bSAqdm07XG4rXHRzdHJ1Y3QgdWNhbGwgdWM7XG4rXHRndmFfdCBzdm1fZ3ZhO1xuK1xuK1x0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpO1xuK1xuK1x0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBsMV9ndWVzdF9jb2RlKTtcbitcdHZjcHVfYWxsb2Nfc3ZtKHZtLCBcdTAwMjZzdm1fZ3ZhKTtcbitcdHZjcHVfYXJnc19zZXQodmNwdSwgMSwgc3ZtX2d2YSk7XG4rXG4rXHR2Y3B1X3J1bih2Y3B1KTtcbitcdFRFU1RfQVNTRVJUX0tWTV9FWElUX1JFQVNPTih2Y3B1LCBLVk1fRVhJVF9JTyk7XG4rXG4rXHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcdTAwMjZ1YykpIHtcbitcdGNhc2UgVUNBTExfQUJPUlQ6XG4rXHRcdFJFUE9SVF9HVUVTVF9BU1NFUlQodWMpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgVUNBTExfRE9ORTpcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRURVNUX0ZBSUwoXCJVbmtub3duIHVjYWxsICVsdVwiLCB1Yy5jbWQpO1xuK1x0fVxuK1xuK1x0a3ZtX3ZtX2ZyZWUodm0pO1xuK1x0cmV0dXJuIDA7XG4rfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NDAuMTE2NDcwODE5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg0MzUxNzIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldDogTmVzdGVkIFNWTSBWTS1FeGl0IEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgaW4gYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIGJ1dCBwb3RlbnRpYWxseSBpbnRlcmVzdGluZy4gSXQncyBpbiB0aGUgYG5lc3RlZF9zdm1fdm1leGl0YCBoYW5kbGVyIGFuZCBpdCdzIHJlc3RvcmluZyBgZHI2YCBhbmQgYGRyN2AgZnJvbSBgdm1jYjAxLVx1MDAzZXNhdmVgLiBUaGF0IGluZGljYXRlcyB0aGF0LCBvbiBhIG5lc3RlZCBWTS1leGl0LCB0aGUgdmFsdWVzIG9mIHRoZSBkZWJ1ZyByZWdpc3RlcnMgYXJlIGJlaW5nIHNhdmVkIGFuZCB0aGVuIHJlc3RvcmVkLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgZ3Vlc3QgZGVidWdnaW5nIHN0YXRlIGFjcm9zcyBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIEl0J3MgY2xlYXJseSByZWFjaGFibGUgaW4gYSBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LiBIbW0sIHJlc3RvcmluZyB0aG9zZSByZWdpc3RlcnMgc291bmRzIGxpa2UgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuTm93LCBsZXQncyBzZWUgYWJvdXQgYnVpbGRpbmcgYSBmdXp6aW5nIHRhcmdldC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBLVk0gYW5kIFNWTSBhcmUgZW5hYmxlZC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEtWTSBpcyBgQ09ORklHX0tWTWAsIHdoaWNoIEkgYWxyZWFkeSBrbmV3LCBhbmQgU1ZNIGlzIGBDT05GSUdfS1ZNX0FNRGAuIEknbGwgdmVyaWZ5IHRoZSBkZXRhaWxzIG9mIHRob3NlIGluIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AganVzdCB0byBiZSBzdXJlLiBBbHJpZ2h0LCBJJ3ZlIGdvdCBhIGdvb2QgdGFyZ2V0LCBJIGNhbiBnZXQgdG8gd29yayBvbiBzZXR0aW5nIHVwIGEgZnV6eiBoYXJuZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjI0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NDUuOTU5OTkwNTI3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTUzMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1fQU1EXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NDYuMDA4OTUwNTk1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMDk4MTg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIE5lc3RlZCBTVk0gVk0tRXhpdCBIYW5kbGVyKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIG5lc3RlZCBTVk0gVk0tZXhpdCBoYW5kbGVyLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIGBuZXN0ZWRfc3ZtX3ZtZXhpdGAgbG9jYXRlZCB3aXRoaW4gYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciBhdCBsZWFzdCwgd2hlcmUgdGhlIGNydWNpYWwgbG9naWMgZm9yIGhhbmRsaW5nIFZNIGV4aXRzIHJlbGF0ZWQgdG8gbmVzdGVkIHZpcnR1YWxpemF0aW9uIHdpdGhpbiBBTUQncyBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIGlzIGltcGxlbWVudGVkLiBUaGlzIGlzIHRoZSBjb3JlIG9mIGhvdyB0aGUgaHlwZXJ2aXNvciBpbnRlcmFjdHMgd2l0aCB0aGUgbmVzdGVkIGd1ZXN0IGVudmlyb25tZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgY29udHJvbCBmbG93IHdvcmtzIGhlcmUuIFRpbWUgdG8gZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzI1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NDkuODI5OTM1MTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzOTQyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmVzdGVkX3N2bV92bWV4aXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTM4PXN0YXRpYyB2b2lkIG5lc3RlZF9zdm1faW5qZWN0X25wZl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzAtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo3MTpcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzItfVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMTEzPWludCBuZXN0ZWRfc3ZtX3ZtcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTE4OC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExODk6XFx0XFx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExOTAtXFx0fVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMjMzPXZvaWQgc3ZtX2NvcHlfdm1sb2Fkc2F2ZV9zdGF0ZShzdHJ1Y3Qgdm1jYiAqdG9fdm1jYiwgc3RydWN0IHZtY2IgKmZyb21fdm1jYilcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTI0OC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEyNDk6c3RhdGljIGludCBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyNTAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzE2LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTMxNzp2b2lkIG5lc3RlZF9zdm1fdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMxOC17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMjItXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMzIzOlxcdGlmIChuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMyNC1cXHRcXHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfVFJJUExFX0ZBVUxULCB2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTY0Nz1pbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NTMtXFx0aWYgKHZtZXhpdCA9PSBORVNURURfRVhJVF9ET05FKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTY1NDpcXHRcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTY1NS1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTY4Mj1zdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luamVjdF9leGNlcHRpb25fdm1leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTcxMy1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3MTQ6XFx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3MTUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwNTo0Mzo0OS44NzYzMzIxMThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkzNjE3NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3k6IGBuZXN0ZWRfc3ZtX3ZtZXhpdGAqKlxuXG5Pa2F5LCBzbyB0aGUgYG5lc3RlZF9zdm1fdm1leGl0YCBmdW5jdGlvbiBpcyB0aGUgdGFyZ2V0IOKAkyB0aGF0J3MgdGhlIG9uZSBJJ20gd29ya2luZyB3aXRoLiBMZXQncyBzZWUsIGlzIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBmdW5jdGlvbiB0aGF0IHdhcyBtb2RpZmllZCBpbiB0aGUgcGF0Y2g/IE5vLCBpdCdzIGp1c3QgdGhpcyBvbmUuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBgYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY2AgYW5kIG1vZGlmaWVzIGBuZXN0ZWRfc3ZtX3ZtZXhpdGAgd2l0aGluIHRoYXQgZmlsZS4gVGhpcyBpcyAqYWJzb2x1dGVseSogd29ydGggYSBmdXp6aW5nIGNhbXBhaWduLiBHaXZlbiB0aGUgbmF0dXJlIG9mIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBhbmQgU1ZNIGV4aXRzLCB0aGVyZSdzIGEgZ29vZCBjaGFuY2UgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGJ1Z3MgaGVyZS5cblxuVGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zIGFyZSBgS1ZNYCBhbmQgYEtWTV9BTURgLiBJJ2xsIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIHdoZW4gY29uZmlndXJpbmcgbXkgZnV6emluZyBlbnZpcm9ubWVudCBhbmQgYnVpbGQgcHJvY2Vzc2VzLlxuXG5NeSBmb2N1cyBpcyBsYXNlci1zaGFycDogYG5lc3RlZF9zdm1fdm1leGl0YC4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gY29uZmlybSBpdHMgdmlzaWJpbGl0eS4gSXMgdGhpcyBmdW5jdGlvbiBzdGF0aWM/IExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBkZWNsYXJhdGlvbjogYHZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pYC4gTm9wZSwgaXQncyBub3Qgc3RhdGljLiBUaGF0J3MgZ29vZCwgdGhhdCBtZWFucyBpdCdzIGxpa2VseSBjYWxsZWQgZnJvbSBvdGhlciBwbGFjZXMgYW5kIG5vdCBqdXN0IHdpdGhpbiB0aGUgZmlsZSwgd2hpY2ggaW5jcmVhc2VzIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIHNlZSBpZiBgS1ZNX0FNRGAgaGFzIGFueSBkZXBlbmRlbmNpZXMuIE1pZ2h0IGluZmx1ZW5jZSBteSBmdXp6aW5nIHNldHVwLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mzc0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA1OjQzOjU0LjU2OTk1MTkxNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc0OTU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNX0FNRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA1OjQzOjU0LjYxNTcwNjYzNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjA3MzY5NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIEtWTSBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gYWdhaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBzb21lIG9mIHRoZSBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTQ2IGluIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AuIExldCdzIHNlZSB3aGF0J3MgYmVpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYXkgdGhlcmUuIEkgaGF2ZSBhIGh1bmNoIHRoaXMgcmVsYXRlcyB0byBzb21lIGZlYXR1cmVzIEkgd2FzIGNvbnNpZGVyaW5nIGludGVncmF0aW5nIGVhcmxpZXIsIHNvIEkgc2hvdWxkIHNlZSBob3cgdGhpcyBmaXRzIGluIHdpdGggdGhlIGV4aXN0aW5nIGNvZGViYXNlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG9vIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDkwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NTcuNjM2NDQ1ODc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0MDpcXHRcXHRoZWxwXFxuIDE0MTpcXHRcXHQgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIGxhdW5jaGluZyBJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKVxcbiAxNDI6XFx0XFx0ICBjb25maWRlbnRpYWwgVk1zIG9uIEludGVsIHByb2Nlc3NvcnMuXFxuIDE0MzpcXHRcXG4gMTQ0OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTQ1OlxcdFxcbiAxNDY6XFx0Y29uZmlnIEtWTV9BTURcXG4gMTQ3OlxcdFxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuIDE0ODpcXHRcXHRkZXBlbmRzIG9uIEtWTSBcXHUwMDI2XFx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcXG4gMTQ5OlxcdFxcdGhlbHBcXG4gMTUwOlxcdFxcdCAgUHJvdmlkZXMgc3VwcG9ydCBmb3IgS1ZNIG9uIEFNRCBwcm9jZXNzb3JzIGVxdWlwcGVkIHdpdGggdGhlIEFNRC1WXFxuIDE1MTpcXHRcXHQgIChTVk0pIGV4dGVuc2lvbnMuXFxuIDE1MjpcXHRcXG4gMTUzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDE1NDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGt2bS1hbWQuXFxuIDE1NTpcXHRcXG4gMTU2OlxcdGNvbmZpZyBLVk1fQU1EX1NFVlxcbiAxNTc6XFx0XFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4gMTU4OlxcdFxcdGRlZmF1bHQgeVxcbiAxNTk6XFx0XFx0ZGVwZW5kcyBvbiBLVk1fQU1EIFxcdTAwMjZcXHUwMDI2IFg4Nl82NFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwNTo0Mzo1Ny42MzY1MTUyOTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3MjkzOTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0vQU1EIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIEtWTSBjb25maWd1cmF0aW9uIHNwZWNpZmljYWxseSBmb3IgQU1EIHByb2Nlc3NvcnMuIEkga25vdyBgS1ZNYCBhbmQgYEtWTV9BTURgIGFyZSBkZWZpbml0ZWx5IGVzc2VudGlhbCDigJMgdGhleSdyZSB0aGUgY29yZSBjb21wb25lbnRzLiBgQ1BVX1NVUF9BTURgIHVzdWFsbHkgY29tZXMgZW5hYmxlZCBieSBkZWZhdWx0IG9uIHg4NiBzeXN0ZW1zLCBzbyBpdCdzIHByb2JhYmx5IGJlc3QgdG8gaW5jbHVkZSBpdC4gSSBqdXN0IHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhIGNvbmZpZ3VyYWJsZSBvcHRpb24uXG5cbk5vdywgSSBuZWVkIHRvIHpvb20gaW4gb24gc3BlY2lmaWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gQU1EJ3MgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQuIEl0IGxvb2tzIGxpa2UgYG5lc3RlZF9zdm1fdm1leGl0YCBpcyB0aGUgb25seSBmdW5jdGlvbiBJIG5lZWQgdG8gbG9vayBhdC4gU2luY2UgaXQgaGFuZGxlcyBuZXN0ZWQgVk0gZXhpdHMsIHdoaWNoIGlzIG5vdCBhIHN1cGVyIGhpZ2ggZnJlcXVlbmN5LCBidXQgc3RpbGwgYSBWTSBleGl0LCBpdCBjb3VsZCBiZW5lZml0IGZyb20gYSBiaXQgb2YgZnV6emluZy4gSXQncyBub3QgYSBjb21tb24gcGF0aCwgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIHRlc3RpbmcuXG5cbkFuZCwgb2YgY291cnNlLCBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCBgbmVzdGVkX3N2bV92bXJ1bmAgYXMgd2VsbC4gVGhhdCBmdW5jdGlvbiBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgYW5kIHRoYXQgc2VlbXMgaW1wb3J0YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTg0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDQ6MDIuNDA5NDU4MzU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjE5MTU1MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmVzdGVkX3N2bV92bXJ1blwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTA4Nj1zdGF0aWMgaW50IG5lc3RlZF9zdm1fY29weV92bWNiMTJfdG9fY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdm1jYjEyX2dwYSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTExMi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExMTM6aW50IG5lc3RlZF9zdm1fdm1ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTExNC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA1OjQ0OjAyLjczMTM3ODk5M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE2Nzk2Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgS1ZNIFNWTSBOZXN0ZWQgVmlydHVhbGl6YXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBnZXQgcmlnaHQgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gYWRkIGBuZXN0ZWRfc3ZtX3ZtZXhpdGAgYW5kIGBuZXN0ZWRfc3ZtX3ZtcnVuYCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdDsgc2VlbXMgbG9naWNhbCBnaXZlbiB0aGUgY29udGV4dC4gTm93LCBiYWNrIHRvIHRoaXMgcGF0Y2guIExldCdzIHNlZS4uLlxuXG5gYGBjXG4tXHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNyA9IERSN19GSVhFRF8xO1xuK1x0c3ZtLVx1MDAzZXZjcHUuYXJjaC5kcjYgPSB2bWNiMDEtXHUwMDNlc2F2ZS5kcjY7XG4rXHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNyA9IHZtY2IwMS1cdTAwM2VzYXZlLmRyNztcbmBgYFxuXG5BaCwgcmlnaHQuIFRoaXMgaXMgZml4aW5nIHRoZSBpc3N1ZSB3aGVyZSBgZHI2YCBhbmQgYGRyN2AsIHdoaWNoIGFyZSB0aGUgZGVidWcgcmVnaXN0ZXJzLCB3ZXJlICpub3QqIGdldHRpbmcgcHJvcGVybHkgcmVzdG9yZWQgZnJvbSBgdm1jYjAxYCB3aGVuIGEgbmVzdGVkIFZNIGV4aXRzLiBFc3NlbnRpYWxseSwgY3JpdGljYWwgc3RhdGUgd2Fzbid0IGJlaW5nIHByZXNlcnZlZCBvbiBuZXN0ZWQgVk0gZXhpdCwgd2hpY2ggd291bGQgY2F1c2Ugc29tZSBwcmV0dHkgbmFzdHkgYmVoYXZpb3IsIGxpa2VseSBsZWFkaW5nIHRvIGEgY3Jhc2ggb3IgdW5kZWZpbmVkIGJlaGF2aW9yIGRvd24gdGhlIGxpbmUuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBzdHJhaWdodGZvcndhcmQgZml4IGZvciBLVk0gU1ZNIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gQ2xlYXJseSBlc3NlbnRpYWwgZm9yIHRoZSBzdGFiaWxpdHkgYW5kIGNvcnJlY3RuZXNzIG9mIHRoYXQgc3Vic3lzdGVtLlxuXG5BbmQgdGhlIGNvbmZpZ3MgYXJlIGBLVk1gIGFuZCBgS1ZNX0FNRGAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgZm9yIHRoaXMuXG5cbkFscmlnaHQsIEknbGwgY2FsbCBzZXQtcmVzdWx0cy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQsIGFsYmVpdCBzbWFsbCwgc3RlcCB0b3dhcmRzIG1ha2luZyBzdXJlIG5lc3RlZCBTVk0gYmVoYXZlcyBwcm9wZXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzIwMiwiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDQ6MDguMTQ4MTc4NTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODcwMzk5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3N2bV92bWV4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmVzdGVkIFZNLWV4aXQgaGFuZGxlciBpbiBLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIChTVk0pIHRvIGNvcnJlY3RseSByZXN0b3JlIHRoZSBEUjYgYW5kIERSNyBkZWJ1ZyByZWdpc3RlcnMgZnJvbSB0aGUgaG9zdCBWTUNCICh2bWNiMDEpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5lc3RlZF9zdm1fdm1leGl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5lc3RlZCBWTS1leGl0IGhhbmRsZXIgaW4gS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyAoU1ZNKSB0byBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgRFI2IGFuZCBEUjcgZGVidWcgcmVnaXN0ZXJzIGZyb20gdGhlIGhvc3QgVk1DQiAodm1jYjAxKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDQ6MDguMjI2ODg5MDU2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ2MjQ4MTc1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA1OjQ0OjA4LjIyNzMwMDI1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDQ2MjA2NzU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBzdGF0ZSByZXN0b3JhdGlvbiBidWcgaW4gS1ZNJ3MgbmVzdGVkIFNWTSBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlIEwxIGh5cGVydmlzb3IncyBkZWJ1ZyByZWdpc3RlcnMgKERSNiBhbmQgRFI3KSB3ZXJlIG5vdCBjb3JyZWN0bHkgcmVzdG9yZWQgZnJvbSB0aGUgTDEgVk1DQiAodm1jYjAxKSB1cG9uIGEgbmVzdGVkIFZNIGV4aXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGJ1ZyByZWxhdGVkIHRvIGhhcmR3YXJlIHN0YXRlIG1hbmFnZW1lbnQsIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gVGhlIFZNQ0Igc3RydWN0dXJlcyBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIG1hbmFnZWQgYnkgS1ZNIGFuZCB0aGUgaGFyZHdhcmUuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLCBhbmQgc3RhbmRhcmQgdGVzdGluZy9mdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjNiMTgzNzczYWY1Zjk1ZmFjNTM3YTBiOTFiODQxZTUzMjE5YTM2N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDI3IDA1OjQzOjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbmluZGV4IDczZjM3YjA1MGQwYTAuLmU3OTc1YWM3YmZjYTIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG5AQCAtMTQyNyw3ICsxNDI3LDggQEAgdm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcdGt2bV9yc3Bfd3JpdGUodmNwdSwgdm1jYjAxLVx1MDAzZXNhdmUucnNwKTtcbiBcdGt2bV9yaXBfd3JpdGUodmNwdSwgdm1jYjAxLVx1MDAzZXNhdmUucmlwKTtcbiBcbi1cdHN2bS1cdTAwM2V2Y3B1LmFyY2guZHI3ID0gRFI3X0ZJWEVEXzE7XG4rXHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNiA9IHZtY2IwMS1cdTAwM2VzYXZlLmRyNjtcbitcdHN2bS1cdTAwM2V2Y3B1LmFyY2guZHI3ID0gdm1jYjAxLVx1MDAzZXNhdmUuZHI3O1xuIFx0a3ZtX3VwZGF0ZV9kcjcoXHUwMDI2c3ZtLVx1MDAzZXZjcHUpO1xuIFxuIFx0bmVzdGVkX3N2bV90cmFuc2l0aW9uX3RsYl9mbHVzaCh2Y3B1KTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuaW5kZXggOTZiYWI3MDAyZDM5ZS4uMzIyOWQ2NzM4MTdlNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbkBAIC0xMjEsNiArMTIxLDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZVxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9zaHV0ZG93bl90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX3NvZnRfaW5qZWN0X3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfdm1jYjEyX2dwYVxuK1RFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfcGF0X3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9sYnJfbmVzdGVkX3N0YXRlXG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fcG11X2hvc3RfZ3Vlc3RfdGVzdFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjZlZjI5Y2YwYTgxOTdcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuY1xuQEAgLTAsMCArMSwxMDQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4rLypcbisgKiBOZXN0ZWQgU1ZNIGRlYnVnIHJlZ2lzdGVyIHN0YXRlIHRlc3QuXG4rICovXG4rI2luY2x1ZGUgXCJ0ZXN0X3V0aWwuaFwiXG4rI2luY2x1ZGUgXCJrdm1fdXRpbC5oXCJcbisjaW5jbHVkZSBcInByb2Nlc3Nvci5oXCJcbisjaW5jbHVkZSBcInN2bV91dGlsLmhcIlxuK1xuKyNkZWZpbmUgRFI2X0FDVElWRV9MT1dcdDB4ZmZmZjBmZjBcbisjZGVmaW5lIERSNl9CMFx0XHRCSVQoMClcbisjZGVmaW5lIERSNl9CU1x0XHRCSVQoMTQpXG4rI2RlZmluZSBEUjdfRklYRURfMVx0MHg0MDBcbisjZGVmaW5lIERSN19HRVx0XHRCSVQoOSlcbitcbisjZGVmaW5lIEwxX0RSNlx0XHQoRFI2X0FDVElWRV9MT1cgfCBEUjZfQlMpXG4rI2RlZmluZSBMMl9EUjZcdFx0KERSNl9BQ1RJVkVfTE9XIHwgRFI2X0IwKVxuKyNkZWZpbmUgTDFfRFI3XHRcdChEUjdfRklYRURfMSB8IERSN19HRSlcbisjZGVmaW5lIEwyX0RSN1x0XHQoRFI3X0ZJWEVEXzEpXG4rXG4rc3RhdGljIGlubGluZSB1NjQgZ2V0X2RyNih2b2lkKVxuK3tcbitcdHU2NCB2YWw7XG4rXG4rXHRhc20gdm9sYXRpbGUoXCJtb3YgJSVkcjYsICUwXCIgOiBcIj1yXCIodmFsKSA6IDogXCJtZW1vcnlcIik7XG4rXHRyZXR1cm4gdmFsO1xuK31cbitcbitzdGF0aWMgaW5saW5lIHU2NCBnZXRfZHI3KHZvaWQpXG4re1xuK1x0dTY0IHZhbDtcbitcbitcdGFzbSB2b2xhdGlsZShcIm1vdiAlJWRyNywgJTBcIiA6IFwiPXJcIih2YWwpIDogOiBcIm1lbW9yeVwiKTtcbitcdHJldHVybiB2YWw7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZHI2KHU2NCB2YWwpXG4re1xuK1x0YXNtIHZvbGF0aWxlKFwibW92ICUwLCAlJWRyNlwiIDogOiBcInJcIih2YWwpIDogXCJtZW1vcnlcIik7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZHI3KHU2NCB2YWwpXG4re1xuK1x0YXNtIHZvbGF0aWxlKFwibW92ICUwLCAlJWRyN1wiIDogOiBcInJcIih2YWwpIDogXCJtZW1vcnlcIik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGwyX2d1ZXN0X2NvZGUodm9pZClcbit7XG4rXHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNigpLCBMMl9EUjYpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjcoKSwgTDJfRFI3KTtcbitcdHZtbWNhbGwoKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgbDFfZ3Vlc3RfY29kZShzdHJ1Y3Qgc3ZtX3Rlc3RfZGF0YSAqc3ZtKVxuK3tcbitcdHN0cnVjdCB2bWNiICp2bWNiID0gc3ZtLVx1MDAzZXZtY2I7XG4rXG4rXHRzZXRfZHI2KEwxX0RSNik7XG4rXHRzZXRfZHI3KEwxX0RSNyk7XG4rXG4rXHRnZW5lcmljX3N2bV9zZXR1cChzdm0sIGwyX2d1ZXN0X2NvZGUpO1xuK1x0dm1jYi1cdTAwM2VzYXZlLmRyNiA9IEwyX0RSNjtcbitcdHZtY2ItXHUwMDNlc2F2ZS5kcjcgPSBMMl9EUjc7XG4rXG4rXHRydW5fZ3Vlc3Qodm1jYiwgc3ZtLVx1MDAzZXZtY2JfZ3BhKTtcbitcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9WTU1DQUxMKTtcbitcbitcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVx1MDAzZXNhdmUuZHI2LCBMMl9EUjYpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKHZtY2ItXHUwMDNlc2F2ZS5kcjcsIEwyX0RSNyk7XG4rXHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNigpLCBMMV9EUjYpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjcoKSwgTDFfRFI3KTtcbitcbitcdEdVRVNUX0RPTkUoKTtcbit9XG4rXG4raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbit7XG4rXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4rXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbitcdHN0cnVjdCB1Y2FsbCB1YztcbitcdGd2YV90IHN2bV9ndmE7XG4rXG4rXHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSk7XG4rXG4rXHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFx1MDAyNnZjcHUsIGwxX2d1ZXN0X2NvZGUpO1xuK1x0dmNwdV9hbGxvY19zdm0odm0sIFx1MDAyNnN2bV9ndmEpO1xuK1x0dmNwdV9hcmdzX3NldCh2Y3B1LCAxLCBzdm1fZ3ZhKTtcbitcbitcdHZjcHVfcnVuKHZjcHUpO1xuK1x0VEVTVF9BU1NFUlRfS1ZNX0VYSVRfUkVBU09OKHZjcHUsIEtWTV9FWElUX0lPKTtcbitcbitcdHN3aXRjaCAoZ2V0X3VjYWxsKHZjcHUsIFx1MDAyNnVjKSkge1xuK1x0Y2FzZSBVQ0FMTF9BQk9SVDpcbitcdFx0UkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBVQ0FMTF9ET05FOlxuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdFRFU1RfRkFJTChcIlVua25vd24gdWNhbGwgJWx1XCIsIHVjLmNtZCk7XG4rXHR9XG4rXG4rXHRrdm1fdm1fZnJlZSh2bSk7XG4rXHRyZXR1cm4gMDtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwNTo0NDowOC4yMjczMDEyNDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0NjIwNDgzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEtWTSBOZXN0ZWQgU1ZNIERlYnVnIFJlZ2lzdGVyIFJlc3RvcmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGBuZXN0ZWRfc3ZtX3ZtZXhpdCgpYCBmdW5jdGlvbi4gSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBmaXg6IGl0IHJlc3RvcmVzIHRoZSBkZWJ1ZyByZWdpc3RlcnMgYGRyNmAgYW5kIGBkcjdgIGZyb20gdGhlIGB2bWNiMDFgIHN0cnVjdHVyZSBkdXJpbmcgYSBuZXN0ZWQgVk0gZXhpdC4gRXNzZW50aWFsbHksIGl0J3MgZml4aW5nIGEgbG9naWMgYnVnIHdoZXJlIHRoZSBMMSBoeXBlcnZpc29yJ3MgZGVidWcgcmVnaXN0ZXJzIHdlcmVuJ3QgYmVpbmcgY29ycmVjdGx5IHByZXNlcnZlZCBhbmQgcmUtbG9hZGVkIHdoZW4gYW4gTDIgVk0gZXhpdGVkIGJhY2sgdG8gTDEuIEJlZm9yZSB0aGUgcGF0Y2gsIGBkcjdgIHdhcyBiZWluZyBoYXJkY29kZWQgdG8gYERSN19GSVhFRF8xYCwgYW5kIGBkcjZgIHdhc24ndCBiZWluZyB0b3VjaGVkIGF0IGFsbC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgYWJvdXQgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaW1wbGljYXRpb25zLCBhbmQgdGhhdCB0cmlnZ2VycyBteSBLTVNBTiByYWRhci4gQ291bGQgdGhpcyBiZSBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIG5vdCByZWFsbHkuIFRoZSBgdm1jYjAxLVx1MDAzZXNhdmUuZHI2YCBhbmQgYHZtY2IwMS1cdTAwM2VzYXZlLmRyN2AgZmllbGRzIGNvbWUgZnJvbSB0aGUgVk1DQiwgd2hpY2ggaXMgYSAqaGFyZHdhcmUqLWRlZmluZWQgc3RydWN0dXJlLiBLVk0sIGFuZCBieSBleHRlbnNpb24gdGhlIGhhcmR3YXJlLCB0YWtlcyBjYXJlIG9mIHByb3Blcmx5IGluaXRpYWxpemluZyBhbmQgbWFuYWdpbmcgdGhpcy4gVGhlIGNvcmUgcHJvYmxlbSBoZXJlIGlzICpmdW5jdGlvbmFsKiAtIEtWTSB3YXNuJ3QgcmVzdG9yaW5nIHRoZSBkZWJ1ZyByZWdpc3RlciBzdGF0ZSBjb3JyZWN0bHkuIEl0J3Mgbm90IGFib3V0IHJlYWRpbmcgdW5pbml0aWFsaXplZCBkYXRhOyBpdCdzIGFib3V0IG5vdCByZWxvYWRpbmcgdGhlICpjb3JyZWN0KiB2YWx1ZXMgdGhhdCB3ZXJlIHNhdmVkLiBTbywgdGhpcyBpc24ndCBhIEtNU0FOIGlzc3VlLiBLTVNBTiBpcyBmb3IgY2F0Y2hpbmcgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk7IEtBU0FOIHdvdWxkIGJlIGZvciBvdXQtb2YtYm91bmRzIGFjY2VzcywgdXNlLWFmdGVyLWZyZWUsIGV0Yy4gVGhpcyBpcyBuZWl0aGVyLlxuXG5JJ20gY29uZmlybWluZyBteSByZWFzb25pbmcgYnkgcmUtcnVubmluZyB0aGUgbG9naWMuIFRoZSBwYXRjaCBpcyBhYm91dCAqc3RhdGUgcmVzdG9yYXRpb24qLCBub3QgaW50cm9kdWNpbmcgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuIEtNU0FOIGlzIGRlZmluaXRlbHkgbm90IHRoZSByaWdodCB0b29sIGZvciB0aGlzIGJ1Zy4gSXQncyBub3QgcmVsZXZhbnQuXG5cblNvLCBJJ20gZ29pbmcgdG8gcHV0IHRvZ2V0aGVyIHRoZSBLTVNBTiByZWFzb25pbmc6IFwiVGhlIHBhdGNoIGZpeGVzIGEgc3RhdGUgcmVzdG9yYXRpb24gYnVnIGluIEtWTSdzIG5lc3RlZCBTVk0gaW1wbGVtZW50YXRpb24sIHdoZXJlIHRoZSBMMSBoeXBlcnZpc29yJ3MgZGVidWcgcmVnaXN0ZXJzIChEUjYgYW5kIERSNykgd2VyZSBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZyb20gdGhlIEwxIFZNQ0IgKHZtY2IwMSkgdXBvbiBhIG5lc3RlZCBWTSBleGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBidWcgcmVsYXRlZCB0byBoYXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50LCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBWTUNCIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkIGJ5IEtWTSBhbmQgdGhlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSwgYW5kIHN0YW5kYXJkIHRlc3RpbmcvZnV6emluZyBpcyBzdWZmaWNpZW50LlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MjEsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDQ6MTguNjg5MzUxNzQ0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHN0YXRlIHJlc3RvcmF0aW9uIGJ1ZyBpbiBLVk0ncyBuZXN0ZWQgU1ZNIGltcGxlbWVudGF0aW9uLCB3aGVyZSB0aGUgTDEgaHlwZXJ2aXNvcidzIGRlYnVnIHJlZ2lzdGVycyAoRFI2IGFuZCBEUjcpIHdlcmUgbm90IGNvcnJlY3RseSByZXN0b3JlZCBmcm9tIHRoZSBMMSBWTUNCICh2bWNiMDEpIHVwb24gYSBuZXN0ZWQgVk0gZXhpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYnVnIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc3RhdGUgbWFuYWdlbWVudCwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGUgVk1DQiBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgbWFuYWdlZCBieSBLVk0gYW5kIHRoZSBoYXJkd2FyZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUsIGFuZCBzdGFuZGFyZCB0ZXN0aW5nL2Z1enppbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHN0YXRlIHJlc3RvcmF0aW9uIGJ1ZyBpbiBLVk0ncyBuZXN0ZWQgU1ZNIGltcGxlbWVudGF0aW9uLCB3aGVyZSB0aGUgTDEgaHlwZXJ2aXNvcidzIGRlYnVnIHJlZ2lzdGVycyAoRFI2IGFuZCBEUjcpIHdlcmUgbm90IGNvcnJlY3RseSByZXN0b3JlZCBmcm9tIHRoZSBMMSBWTUNCICh2bWNiMDEpIHVwb24gYSBuZXN0ZWQgVk0gZXhpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYnVnIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc3RhdGUgbWFuYWdlbWVudCwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGUgVk1DQiBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgbWFuYWdlZCBieSBLVk0gYW5kIHRoZSBoYXJkd2FyZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUsIGFuZCBzdGFuZGFyZCB0ZXN0aW5nL2Z1enppbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgxsq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-27 05:41:37 +0000 UTC FinishedAt: 2026-08-27 05:44:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_AMD" ], "series_id": "a3ca2def-1926-422d-90ee-f37660e321de" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "nested_svm_vmexit" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmVzdGVkX3N2bV92bWV4aXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHN0YXRlIHJlc3RvcmF0aW9uIGJ1ZyBpbiBLVk0mIzM5O3MgbmVzdGVkIFNWTSBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlIEwxIGh5cGVydmlzb3ImIzM5O3MgZGVidWcgcmVnaXN0ZXJzIChEUjYgYW5kIERSNykgd2VyZSBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZyb20gdGhlIEwxIFZNQ0IgKHZtY2IwMSkgdXBvbiBhIG5lc3RlZCBWTSBleGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBidWcgcmVsYXRlZCB0byBoYXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50LCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBWTUNCIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkIGJ5IEtWTSBhbmQgdGhlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSwgYW5kIHN0YW5kYXJkIHRlc3RpbmcvZnV6emluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmVzdGVkIFZNLWV4aXQgaGFuZGxlciBpbiBLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIChTVk0pIHRvIGNvcnJlY3RseSByZXN0b3JlIHRoZSBEUjYgYW5kIERSNyBkZWJ1ZyByZWdpc3RlcnMgZnJvbSB0aGUgaG9zdCBWTUNCICh2bWNiMDEpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjNiMTgzNzczYWY1Zjk1ZmFjNTM3YTBiOTFiODQxZTUzMjE5YTM2N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDI3IDA1OjQzOjM4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG5pbmRleCA3M2YzN2IwNTBkMGEwLi5lNzk3NWFjN2JmY2EyIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuQEAgLTE0MjcsNyAmIzQzOzE0MjcsOCBAQCB2b2lkIG5lc3RlZF9zdm1fdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuIFx0a3ZtX3JzcF93cml0ZSh2Y3B1LCB2bWNiMDEtXHUwMDNlc2F2ZS5yc3ApO1xuIFx0a3ZtX3JpcF93cml0ZSh2Y3B1LCB2bWNiMDEtXHUwMDNlc2F2ZS5yaXApO1xuIFxuLVx0c3ZtLVx1MDAzZXZjcHUuYXJjaC5kcjcgPSBEUjdfRklYRURfMTtcbiYjNDM7XHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNiA9IHZtY2IwMS1cdTAwM2VzYXZlLmRyNjtcbiYjNDM7XHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNyA9IHZtY2IwMS1cdTAwM2VzYXZlLmRyNztcbiBcdGt2bV91cGRhdGVfZHI3KFx1MDAyNnN2bS1cdTAwM2V2Y3B1KTtcbiBcbiBcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbmluZGV4IDk2YmFiNzAwMmQzOWUuLjMyMjlkNjczODE3ZTYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG5AQCAtMTIxLDYgJiM0MzsxMjEsNyBAQCBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZVxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfc2h1dGRvd25fdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfc29mdF9pbmplY3RfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfdm1jYjEyX2dwYVxuJiM0MztURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfcGF0X3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbGJyX25lc3RlZF9zdGF0ZVxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9wbXVfaG9zdF9ndWVzdF90ZXN0XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uNmVmMjljZjBhODE5N1xuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jXG5AQCAtMCwwICYjNDM7MSwxMDQgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuJiM0MzsvKlxuJiM0MzsgKiBOZXN0ZWQgU1ZNIGRlYnVnIHJlZ2lzdGVyIHN0YXRlIHRlc3QuXG4mIzQzOyAqL1xuJiM0MzsjaW5jbHVkZSBcJiMzNDt0ZXN0X3V0aWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtrdm1fdXRpbC5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3Byb2Nlc3Nvci5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFwmIzM0O3N2bV91dGlsLmhcJiMzNDtcbiYjNDM7XG4mIzQzOyNkZWZpbmUgRFI2X0FDVElWRV9MT1dcdDB4ZmZmZjBmZjBcbiYjNDM7I2RlZmluZSBEUjZfQjBcdFx0QklUKDApXG4mIzQzOyNkZWZpbmUgRFI2X0JTXHRcdEJJVCgxNClcbiYjNDM7I2RlZmluZSBEUjdfRklYRURfMVx0MHg0MDBcbiYjNDM7I2RlZmluZSBEUjdfR0VcdFx0QklUKDkpXG4mIzQzO1xuJiM0MzsjZGVmaW5lIEwxX0RSNlx0XHQoRFI2X0FDVElWRV9MT1cgfCBEUjZfQlMpXG4mIzQzOyNkZWZpbmUgTDJfRFI2XHRcdChEUjZfQUNUSVZFX0xPVyB8IERSNl9CMClcbiYjNDM7I2RlZmluZSBMMV9EUjdcdFx0KERSN19GSVhFRF8xIHwgRFI3X0dFKVxuJiM0MzsjZGVmaW5lIEwyX0RSN1x0XHQoRFI3X0ZJWEVEXzEpXG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHU2NCBnZXRfZHI2KHZvaWQpXG4mIzQzO3tcbiYjNDM7XHR1NjQgdmFsO1xuJiM0MztcbiYjNDM7XHRhc20gdm9sYXRpbGUoXCYjMzQ7bW92ICUlZHI2LCAlMFwmIzM0OyA6IFwmIzM0Oz1yXCYjMzQ7KHZhbCkgOiA6IFwmIzM0O21lbW9yeVwmIzM0Oyk7XG4mIzQzO1x0cmV0dXJuIHZhbDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSB1NjQgZ2V0X2RyNyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0dTY0IHZhbDtcbiYjNDM7XG4mIzQzO1x0YXNtIHZvbGF0aWxlKFwmIzM0O21vdiAlJWRyNywgJTBcJiMzNDsgOiBcJiMzNDs9clwmIzM0Oyh2YWwpIDogOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0MztcdHJldHVybiB2YWw7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZHI2KHU2NCB2YWwpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUoXCYjMzQ7bW92ICUwLCAlJWRyNlwmIzM0OyA6IDogXCYjMzQ7clwmIzM0Oyh2YWwpIDogXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHNldF9kcjcodTY0IHZhbClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZShcJiMzNDttb3YgJTAsICUlZHI3XCYjMzQ7IDogOiBcJiMzNDtyXCYjMzQ7KHZhbCkgOiBcJiMzNDttZW1vcnlcJiMzNDspO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNigpLCBMMl9EUjYpO1xuJiM0MztcdEdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwyX0RSNyk7XG4mIzQzO1x0dm1tY2FsbCgpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBsMV9ndWVzdF9jb2RlKHN0cnVjdCBzdm1fdGVzdF9kYXRhICpzdm0pXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3Qgdm1jYiAqdm1jYiA9IHN2bS1cdTAwM2V2bWNiO1xuJiM0MztcbiYjNDM7XHRzZXRfZHI2KEwxX0RSNik7XG4mIzQzO1x0c2V0X2RyNyhMMV9EUjcpO1xuJiM0MztcbiYjNDM7XHRnZW5lcmljX3N2bV9zZXR1cChzdm0sIGwyX2d1ZXN0X2NvZGUpO1xuJiM0MztcdHZtY2ItXHUwMDNlc2F2ZS5kcjYgPSBMMl9EUjY7XG4mIzQzO1x0dm1jYi1cdTAwM2VzYXZlLmRyNyA9IEwyX0RSNztcbiYjNDM7XG4mIzQzO1x0cnVuX2d1ZXN0KHZtY2IsIHN2bS1cdTAwM2V2bWNiX2dwYSk7XG4mIzQzO1x0R1VFU1RfQVNTRVJUX0VRKHZtY2ItXHUwMDNlY29udHJvbC5leGl0X2NvZGUsIFNWTV9FWElUX1ZNTUNBTEwpO1xuJiM0MztcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2VzYXZlLmRyNiwgTDJfRFI2KTtcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2VzYXZlLmRyNywgTDJfRFI3KTtcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNigpLCBMMV9EUjYpO1xuJiM0MztcdEdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwxX0RSNyk7XG4mIzQzO1xuJiM0MztcdEdVRVNUX0RPTkUoKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbiYjNDM7XHRzdHJ1Y3QgdWNhbGwgdWM7XG4mIzQzO1x0Z3ZhX3Qgc3ZtX2d2YTtcbiYjNDM7XG4mIzQzO1x0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpO1xuJiM0MztcbiYjNDM7XHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFx1MDAyNnZjcHUsIGwxX2d1ZXN0X2NvZGUpO1xuJiM0MztcdHZjcHVfYWxsb2Nfc3ZtKHZtLCBcdTAwMjZzdm1fZ3ZhKTtcbiYjNDM7XHR2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpO1xuJiM0MztcbiYjNDM7XHR2Y3B1X3J1bih2Y3B1KTtcbiYjNDM7XHRURVNUX0FTU0VSVF9LVk1fRVhJVF9SRUFTT04odmNwdSwgS1ZNX0VYSVRfSU8pO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcdTAwMjZ1YykpIHtcbiYjNDM7XHRjYXNlIFVDQUxMX0FCT1JUOlxuJiM0MztcdFx0UkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFVDQUxMX0RPTkU6XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0VEVTVF9GQUlMKFwmIzM0O1Vua25vd24gdWNhbGwgJWx1XCYjMzQ7LCB1Yy5jbWQpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0a3ZtX3ZtX2ZyZWUodm0pO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmVzdGVkX3N2bV92bWV4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5lc3RlZCBWTS1leGl0IGhhbmRsZXIgaW4gS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyAoU1ZNKSB0byBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgRFI2IGFuZCBEUjcgZGVidWcgcmVnaXN0ZXJzIGZyb20gdGhlIGhvc3QgVk1DQiAodm1jYjAxKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGIzYjE4Mzc3M2FmNWY5NWZhYzUzN2EwYjkxYjg0MWU1MzIxOWEzNjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAwNTo0MzozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jCmluZGV4IDczZjM3YjA1MGQwYTAuLmU3OTc1YWM3YmZjYTIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYwpAQCAtMTQyNyw3ICYjNDM7MTQyNyw4IEBAIHZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pCiAJa3ZtX3JzcF93cml0ZSh2Y3B1LCB2bWNiMDEtJmd0O3NhdmUucnNwKTsKIAlrdm1fcmlwX3dyaXRlKHZjcHUsIHZtY2IwMS0mZ3Q7c2F2ZS5yaXApOwogCi0Jc3ZtLSZndDt2Y3B1LmFyY2guZHI3ID0gRFI3X0ZJWEVEXzE7CiYjNDM7CXN2bS0mZ3Q7dmNwdS5hcmNoLmRyNiA9IHZtY2IwMS0mZ3Q7c2F2ZS5kcjY7CiYjNDM7CXN2bS0mZ3Q7dmNwdS5hcmNoLmRyNyA9IHZtY2IwMS0mZ3Q7c2F2ZS5kcjc7CiAJa3ZtX3VwZGF0ZV9kcjcoJmFtcDtzdm0tJmd0O3ZjcHUpOwogCiAJbmVzdGVkX3N2bV90cmFuc2l0aW9uX3RsYl9mbHVzaCh2Y3B1KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCmluZGV4IDk2YmFiNzAwMmQzOWUuLjMyMjlkNjczODE3ZTYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bQpAQCAtMTIxLDYgJiM0MzsxMjEsNyBAQCBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZQogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX25lc3RlZF9zaHV0ZG93bl90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3NvZnRfaW5qZWN0X3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfdm1jYjEyX2dwYQomIzQzO1RFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3BhdF90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbGJyX25lc3RlZF9zdGF0ZQogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX3BtdV9ob3N0X2d1ZXN0X3Rlc3QKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi42ZWYyOWNmMGE4MTk3Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jCkBAIC0wLDAgJiM0MzsxLDEwNCBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKJiM0MzsvKgomIzQzOyAqIE5lc3RlZCBTVk0gZGVidWcgcmVnaXN0ZXIgc3RhdGUgdGVzdC4KJiM0MzsgKi8KJiM0MzsjaW5jbHVkZSAmIzM0O3Rlc3RfdXRpbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O2t2bV91dGlsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7cHJvY2Vzc29yLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7c3ZtX3V0aWwuaCYjMzQ7CiYjNDM7CiYjNDM7I2RlZmluZSBEUjZfQUNUSVZFX0xPVwkweGZmZmYwZmYwCiYjNDM7I2RlZmluZSBEUjZfQjAJCUJJVCgwKQomIzQzOyNkZWZpbmUgRFI2X0JTCQlCSVQoMTQpCiYjNDM7I2RlZmluZSBEUjdfRklYRURfMQkweDQwMAomIzQzOyNkZWZpbmUgRFI3X0dFCQlCSVQoOSkKJiM0MzsKJiM0MzsjZGVmaW5lIEwxX0RSNgkJKERSNl9BQ1RJVkVfTE9XIHwgRFI2X0JTKQomIzQzOyNkZWZpbmUgTDJfRFI2CQkoRFI2X0FDVElWRV9MT1cgfCBEUjZfQjApCiYjNDM7I2RlZmluZSBMMV9EUjcJCShEUjdfRklYRURfMSB8IERSN19HRSkKJiM0MzsjZGVmaW5lIEwyX0RSNwkJKERSN19GSVhFRF8xKQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdTY0IGdldF9kcjYodm9pZCkKJiM0Mzt7CiYjNDM7CXU2NCB2YWw7CiYjNDM7CiYjNDM7CWFzbSB2b2xhdGlsZSgmIzM0O21vdiAlJWRyNiwgJTAmIzM0OyA6ICYjMzQ7PXImIzM0Oyh2YWwpIDogOiAmIzM0O21lbW9yeSYjMzQ7KTsKJiM0MzsJcmV0dXJuIHZhbDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSB1NjQgZ2V0X2RyNyh2b2lkKQomIzQzO3sKJiM0MzsJdTY0IHZhbDsKJiM0MzsKJiM0MzsJYXNtIHZvbGF0aWxlKCYjMzQ7bW92ICUlZHI3LCAlMCYjMzQ7IDogJiMzNDs9ciYjMzQ7KHZhbCkgOiA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwlyZXR1cm4gdmFsOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNih1NjQgdmFsKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlKCYjMzQ7bW92ICUwLCAlJWRyNiYjMzQ7IDogOiAmIzM0O3ImIzM0Oyh2YWwpIDogJiMzNDttZW1vcnkmIzM0Oyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZHI3KHU2NCB2YWwpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDttb3YgJTAsICUlZHI3JiMzNDsgOiA6ICYjMzQ7ciYjMzQ7KHZhbCkgOiAmIzM0O21lbW9yeSYjMzQ7KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbDJfZ3Vlc3RfY29kZSh2b2lkKQomIzQzO3sKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKGdldF9kcjYoKSwgTDJfRFI2KTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKGdldF9kcjcoKSwgTDJfRFI3KTsKJiM0MzsJdm1tY2FsbCgpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBsMV9ndWVzdF9jb2RlKHN0cnVjdCBzdm1fdGVzdF9kYXRhICpzdm0pCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgdm1jYiAqdm1jYiA9IHN2bS0mZ3Q7dm1jYjsKJiM0MzsKJiM0MzsJc2V0X2RyNihMMV9EUjYpOwomIzQzOwlzZXRfZHI3KEwxX0RSNyk7CiYjNDM7CiYjNDM7CWdlbmVyaWNfc3ZtX3NldHVwKHN2bSwgbDJfZ3Vlc3RfY29kZSk7CiYjNDM7CXZtY2ItJmd0O3NhdmUuZHI2ID0gTDJfRFI2OwomIzQzOwl2bWNiLSZndDtzYXZlLmRyNyA9IEwyX0RSNzsKJiM0MzsKJiM0MzsJcnVuX2d1ZXN0KHZtY2IsIHN2bS0mZ3Q7dm1jYl9ncGEpOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEodm1jYi0mZ3Q7Y29udHJvbC5leGl0X2NvZGUsIFNWTV9FWElUX1ZNTUNBTEwpOwomIzQzOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEodm1jYi0mZ3Q7c2F2ZS5kcjYsIEwyX0RSNik7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUSh2bWNiLSZndDtzYXZlLmRyNywgTDJfRFI3KTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKGdldF9kcjYoKSwgTDFfRFI2KTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKGdldF9kcjcoKSwgTDFfRFI3KTsKJiM0MzsKJiM0MzsJR1VFU1RfRE9ORSgpOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO3sKJiM0MzsJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJc3RydWN0IHVjYWxsIHVjOwomIzQzOwlndmFfdCBzdm1fZ3ZhOwomIzQzOwomIzQzOwlURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSk7CiYjNDM7CiYjNDM7CXZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoJmFtcDt2Y3B1LCBsMV9ndWVzdF9jb2RlKTsKJiM0MzsJdmNwdV9hbGxvY19zdm0odm0sICZhbXA7c3ZtX2d2YSk7CiYjNDM7CXZjcHVfYXJnc19zZXQodmNwdSwgMSwgc3ZtX2d2YSk7CiYjNDM7CiYjNDM7CXZjcHVfcnVuKHZjcHUpOwomIzQzOwlURVNUX0FTU0VSVF9LVk1fRVhJVF9SRUFTT04odmNwdSwgS1ZNX0VYSVRfSU8pOwomIzQzOwomIzQzOwlzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCAmYW1wO3VjKSkgewomIzQzOwljYXNlIFVDQUxMX0FCT1JUOgomIzQzOwkJUkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBVQ0FMTF9ET05FOgomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlURVNUX0ZBSUwoJiMzNDtVbmtub3duIHVjYWxsICVsdSYjMzQ7LCB1Yy5jbWQpOwomIzQzOwl9CiYjNDM7CiYjNDM7CWt2bV92bV9mcmVlKHZtKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjI0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0OiBOZXN0ZWQgU1ZNIFZNLUV4aXQgSGFuZGxlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIGluIGBhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jYC4gSXQmIzM5O3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgYnV0IHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBJdCYjMzk7cyBpbiB0aGUgYG5lc3RlZF9zdm1fdm1leGl0YCBoYW5kbGVyIGFuZCBpdCYjMzk7cyByZXN0b3JpbmcgYGRyNmAgYW5kIGBkcjdgIGZyb20gYHZtY2IwMS0mZ3Q7c2F2ZWAuIFRoYXQgaW5kaWNhdGVzIHRoYXQsIG9uIGEgbmVzdGVkIFZNLWV4aXQsIHRoZSB2YWx1ZXMgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycyBhcmUgYmVpbmcgc2F2ZWQgYW5kIHRoZW4gcmVzdG9yZWQuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBjcnVjaWFsIGZvciBtYWludGFpbmluZyBndWVzdCBkZWJ1Z2dpbmcgc3RhdGUgYWNyb3NzIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gSXQmIzM5O3MgY2xlYXJseSByZWFjaGFibGUgaW4gYSBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LiBIbW0sIHJlc3RvcmluZyB0aG9zZSByZWdpc3RlcnMgc291bmRzIGxpa2UgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCk5vdywgbGV0JiMzOTtzIHNlZSBhYm91dCBidWlsZGluZyBhIGZ1enppbmcgdGFyZ2V0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEtWTSBhbmQgU1ZNIGFyZSBlbmFibGVkLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gS1ZNIGlzIGBDT05GSUdfS1ZNYCwgd2hpY2ggSSBhbHJlYWR5IGtuZXcsIGFuZCBTVk0gaXMgYENPTkZJR19LVk1fQU1EYC4gSSYjMzk7bGwgdmVyaWZ5IHRoZSBkZXRhaWxzIG9mIHRob3NlIGluIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AganVzdCB0byBiZSBzdXJlLiBBbHJpZ2h0LCBJJiMzOTt2ZSBnb3QgYSBnb29kIHRhcmdldCwgSSBjYW4gZ2V0IHRvIHdvcmsgb24gc2V0dGluZyB1cCBhIGZ1enogaGFybmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNX0FNRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMyNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBOZXN0ZWQgU1ZNIFZNLUV4aXQgSGFuZGxlcioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIG5lc3RlZCBTVk0gVk0tZXhpdCBoYW5kbGVyLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gemVyb2luZyBpbiBvbiBgbmVzdGVkX3N2bV92bWV4aXRgIGxvY2F0ZWQgd2l0aGluIGBhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgb3IgYXQgbGVhc3QsIHdoZXJlIHRoZSBjcnVjaWFsIGxvZ2ljIGZvciBoYW5kbGluZyBWTSBleGl0cyByZWxhdGVkIHRvIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiB3aXRoaW4gQU1EJiMzOTtzIFNlY3VyZSBWaXJ0dWFsIE1hY2hpbmUgaXMgaW1wbGVtZW50ZWQuIFRoaXMgaXMgdGhlIGNvcmUgb2YgaG93IHRoZSBoeXBlcnZpc29yIGludGVyYWN0cyB3aXRoIHRoZSBuZXN0ZWQgZ3Vlc3QgZW52aXJvbm1lbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZSBjb250cm9sIGZsb3cgd29ya3MgaGVyZS4gVGltZSB0byBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmVzdGVkX3N2bV92bWV4aXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9Mzg9c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9pbmplY3RfbnBmX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzAtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjcxOlx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzItfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTExMz1pbnQgbmVzdGVkX3N2bV92bXJ1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTg4LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMTg5Olx0XHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTkwLVx0fVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTIzMz12b2lkIHN2bV9jb3B5X3ZtbG9hZHNhdmVfc3RhdGUoc3RydWN0IHZtY2IgKnRvX3ZtY2IsIHN0cnVjdCB2bWNiICpmcm9tX3ZtY2IpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjQ4LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjQ5OnN0YXRpYyBpbnQgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyNTAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMxNi1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTMxNzp2b2lkIG5lc3RlZF9zdm1fdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzE4LXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMjItXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzMjM6XHRpZiAobmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMih2Y3B1KSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMyNC1cdFx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX1RSSVBMRV9GQVVMVCwgdmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNjQ3PWludCBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NTMtXHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0RPTkUpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2NTQ6XHRcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NTUtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNjgyPXN0YXRpYyB2b2lkIG5lc3RlZF9zdm1faW5qZWN0X2V4Y2VwdGlvbl92bWV4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTcxMy1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTcxNDpcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3MTUtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzNzQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneTogYG5lc3RlZF9zdm1fdm1leGl0YCoqCgpPa2F5LCBzbyB0aGUgYG5lc3RlZF9zdm1fdm1leGl0YCBmdW5jdGlvbiBpcyB0aGUgdGFyZ2V0IOKAkyB0aGF0JiMzOTtzIHRoZSBvbmUgSSYjMzk7bSB3b3JraW5nIHdpdGguIExldCYjMzk7cyBzZWUsIGlzIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBmdW5jdGlvbiB0aGF0IHdhcyBtb2RpZmllZCBpbiB0aGUgcGF0Y2g/IE5vLCBpdCYjMzk7cyBqdXN0IHRoaXMgb25lLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgIGFuZCBtb2RpZmllcyBgbmVzdGVkX3N2bV92bWV4aXRgIHdpdGhpbiB0aGF0IGZpbGUuIFRoaXMgaXMgKmFic29sdXRlbHkqIHdvcnRoIGEgZnV6emluZyBjYW1wYWlnbi4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gYW5kIFNWTSBleGl0cywgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSB0byBmaW5kIHNvbWUgaW50ZXJlc3RpbmcgYnVncyBoZXJlLgoKVGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zIGFyZSBgS1ZNYCBhbmQgYEtWTV9BTURgLiBJJiMzOTtsbCBuZWVkIHRvIGtlZXAgdGhvc2UgaW4gbWluZCB3aGVuIGNvbmZpZ3VyaW5nIG15IGZ1enppbmcgZW52aXJvbm1lbnQgYW5kIGJ1aWxkIHByb2Nlc3Nlcy4KCk15IGZvY3VzIGlzIGxhc2VyLXNoYXJwOiBgbmVzdGVkX3N2bV92bWV4aXRgLiBOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byBjb25maXJtIGl0cyB2aXNpYmlsaXR5LiBJcyB0aGlzIGZ1bmN0aW9uIHN0YXRpYz8gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGRlY2xhcmF0aW9uOiBgdm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlgLiBOb3BlLCBpdCYjMzk7cyBub3Qgc3RhdGljLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlcyBhbmQgbm90IGp1c3Qgd2l0aGluIHRoZSBmaWxlLCB3aGljaCBpbmNyZWFzZXMgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgYGFyY2gveDg2L2t2bS9LY29uZmlnYCB0byBzZWUgaWYgYEtWTV9BTURgIGhhcyBhbnkgZGVwZW5kZW5jaWVzLiBNaWdodCBpbmZsdWVuY2UgbXkgZnV6emluZyBzZXR1cC4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNX0FNRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA5MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIEtWTSBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIEtWTSBjb25maWd1cmF0aW9uIGFnYWluLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBvZiB0aGUgb3B0aW9ucywgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDE0NiBpbiBgYXJjaC94ODYva3ZtL0tjb25maWdgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYmVpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYXkgdGhlcmUuIEkgaGF2ZSBhIGh1bmNoIHRoaXMgcmVsYXRlcyB0byBzb21lIGZlYXR1cmVzIEkgd2FzIGNvbnNpZGVyaW5nIGludGVncmF0aW5nIGVhcmxpZXIsIHNvIEkgc2hvdWxkIHNlZSBob3cgdGhpcyBmaXRzIGluIHdpdGggdGhlIGV4aXN0aW5nIGNvZGViYXNlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHRvbyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTQwOlx0XHRoZWxwXG4gMTQxOlx0XHQgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIGxhdW5jaGluZyBJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKVxuIDE0MjpcdFx0ICBjb25maWRlbnRpYWwgVk1zIG9uIEludGVsIHByb2Nlc3NvcnMuXG4gMTQzOlx0XG4gMTQ0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gMTQ1Olx0XG4gMTQ2Olx0Y29uZmlnIEtWTV9BTURcbiAxNDc6XHRcdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuIDE0ODpcdFx0ZGVwZW5kcyBvbiBLVk0gXHUwMDI2XHUwMDI2IChDUFVfU1VQX0FNRCB8fCBDUFVfU1VQX0hZR09OKVxuIDE0OTpcdFx0aGVscFxuIDE1MDpcdFx0ICBQcm92aWRlcyBzdXBwb3J0IGZvciBLVk0gb24gQU1EIHByb2Nlc3NvcnMgZXF1aXBwZWQgd2l0aCB0aGUgQU1ELVZcbiAxNTE6XHRcdCAgKFNWTSkgZXh0ZW5zaW9ucy5cbiAxNTI6XHRcbiAxNTM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gMTU0Olx0XHQgIHdpbGwgYmUgY2FsbGVkIGt2bS1hbWQuXG4gMTU1Olx0XG4gMTU2Olx0Y29uZmlnIEtWTV9BTURfU0VWXG4gMTU3Olx0XHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbiAxNTg6XHRcdGRlZmF1bHQgeVxuIDE1OTpcdFx0ZGVwZW5kcyBvbiBLVk1fQU1EIFx1MDAyNlx1MDAyNiBYODZfNjRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU4NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0vQU1EIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWNhbGx5IGZvciBBTUQgcHJvY2Vzc29ycy4gSSBrbm93IGBLVk1gIGFuZCBgS1ZNX0FNRGAgYXJlIGRlZmluaXRlbHkgZXNzZW50aWFsIOKAkyB0aGV5JiMzOTtyZSB0aGUgY29yZSBjb21wb25lbnRzLiBgQ1BVX1NVUF9BTURgIHVzdWFsbHkgY29tZXMgZW5hYmxlZCBieSBkZWZhdWx0IG9uIHg4NiBzeXN0ZW1zLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBiZXN0IHRvIGluY2x1ZGUgaXQuIEkganVzdCB3YW50IHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgYSBjb25maWd1cmFibGUgb3B0aW9uLgoKTm93LCBJIG5lZWQgdG8gem9vbSBpbiBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byBBTUQmIzM5O3MgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQuIEl0IGxvb2tzIGxpa2UgYG5lc3RlZF9zdm1fdm1leGl0YCBpcyB0aGUgb25seSBmdW5jdGlvbiBJIG5lZWQgdG8gbG9vayBhdC4gU2luY2UgaXQgaGFuZGxlcyBuZXN0ZWQgVk0gZXhpdHMsIHdoaWNoIGlzIG5vdCBhIHN1cGVyIGhpZ2ggZnJlcXVlbmN5LCBidXQgc3RpbGwgYSBWTSBleGl0LCBpdCBjb3VsZCBiZW5lZml0IGZyb20gYSBiaXQgb2YgZnV6emluZy4gSXQmIzM5O3Mgbm90IGEgY29tbW9uIHBhdGgsIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciB0ZXN0aW5nLgoKQW5kLCBvZiBjb3Vyc2UsIEkgc2hvdWxkIHRha2UgYSBsb29rIGF0IGBuZXN0ZWRfc3ZtX3ZtcnVuYCBhcyB3ZWxsLiBUaGF0IGZ1bmN0aW9uIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgbmVzdGVkIHZpcnR1YWxpemF0aW9uLCBhbmQgdGhhdCBzZWVtcyBpbXBvcnRhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25lc3RlZF9zdm1fdm1ydW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTA4Nj1zdGF0aWMgaW50IG5lc3RlZF9zdm1fY29weV92bWNiMTJfdG9fY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdm1jYjEyX2dwYSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExMTItXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExMTM6aW50IG5lc3RlZF9zdm1fdm1ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTE0LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzIwMgoJCQkJCQkJb3V0cHV0OiAxMTQKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgYSBLVk0gU1ZNIE5lc3RlZCBWaXJ0dWFsaXphdGlvbiBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IHJpZ2h0IGludG8gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBhZGQgYG5lc3RlZF9zdm1fdm1leGl0YCBhbmQgYG5lc3RlZF9zdm1fdm1ydW5gIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0OyBzZWVtcyBsb2dpY2FsIGdpdmVuIHRoZSBjb250ZXh0LiBOb3csIGJhY2sgdG8gdGhpcyBwYXRjaC4gTGV0JiMzOTtzIHNlZS4uLgoKYGBgYwotCXN2bS0mZ3Q7dmNwdS5hcmNoLmRyNyA9IERSN19GSVhFRF8xOwomIzQzOwlzdm0tJmd0O3ZjcHUuYXJjaC5kcjYgPSB2bWNiMDEtJmd0O3NhdmUuZHI2OwomIzQzOwlzdm0tJmd0O3ZjcHUuYXJjaC5kcjcgPSB2bWNiMDEtJmd0O3NhdmUuZHI3OwpgYGAKCkFoLCByaWdodC4gVGhpcyBpcyBmaXhpbmcgdGhlIGlzc3VlIHdoZXJlIGBkcjZgIGFuZCBgZHI3YCwgd2hpY2ggYXJlIHRoZSBkZWJ1ZyByZWdpc3RlcnMsIHdlcmUgKm5vdCogZ2V0dGluZyBwcm9wZXJseSByZXN0b3JlZCBmcm9tIGB2bWNiMDFgIHdoZW4gYSBuZXN0ZWQgVk0gZXhpdHMuIEVzc2VudGlhbGx5LCBjcml0aWNhbCBzdGF0ZSB3YXNuJiMzOTt0IGJlaW5nIHByZXNlcnZlZCBvbiBuZXN0ZWQgVk0gZXhpdCwgd2hpY2ggd291bGQgY2F1c2Ugc29tZSBwcmV0dHkgbmFzdHkgYmVoYXZpb3IsIGxpa2VseSBsZWFkaW5nIHRvIGEgY3Jhc2ggb3IgdW5kZWZpbmVkIGJlaGF2aW9yIGRvd24gdGhlIGxpbmUuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgc3RyYWlnaHRmb3J3YXJkIGZpeCBmb3IgS1ZNIFNWTSBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIENsZWFybHkgZXNzZW50aWFsIGZvciB0aGUgc3RhYmlsaXR5IGFuZCBjb3JyZWN0bmVzcyBvZiB0aGF0IHN1YnN5c3RlbS4KCkFuZCB0aGUgY29uZmlncyBhcmUgYEtWTWAgYW5kIGBLVk1fQU1EYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBmb3IgdGhpcy4KCkFscmlnaHQsIEkmIzM5O2xsIGNhbGwgc2V0LXJlc3VsdHMuIFRoaXMgaXMgYW4gaW1wb3J0YW50LCBhbGJlaXQgc21hbGwsIHN0ZXAgdG93YXJkcyBtYWtpbmcgc3VyZSBuZXN0ZWQgU1ZNIGJlaGF2ZXMgcHJvcGVybHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OywKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25lc3RlZF9zdm1fdm1leGl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXN0ZWQgVk0tZXhpdCBoYW5kbGVyIGluIEtWTSBmb3IgQU1EIHByb2Nlc3NvcnMgKFNWTSkgdG8gY29ycmVjdGx5IHJlc3RvcmUgdGhlIERSNiBhbmQgRFI3IGRlYnVnIHJlZ2lzdGVycyBmcm9tIHRoZSBob3N0IFZNQ0IgKHZtY2IwMSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmVzdGVkX3N2bV92bWV4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5lc3RlZCBWTS1leGl0IGhhbmRsZXIgaW4gS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyAoU1ZNKSB0byBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgRFI2IGFuZCBEUjcgZGVidWcgcmVnaXN0ZXJzIGZyb20gdGhlIGhvc3QgVk1DQiAodm1jYjAxKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDU6NDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNTo0NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHN0YXRlIHJlc3RvcmF0aW9uIGJ1ZyBpbiBLVk0mIzM5O3MgbmVzdGVkIFNWTSBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlIEwxIGh5cGVydmlzb3ImIzM5O3MgZGVidWcgcmVnaXN0ZXJzIChEUjYgYW5kIERSNykgd2VyZSBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZyb20gdGhlIEwxIFZNQ0IgKHZtY2IwMSkgdXBvbiBhIG5lc3RlZCBWTSBleGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBidWcgcmVsYXRlZCB0byBoYXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50LCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBWTUNCIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkIGJ5IEtWTSBhbmQgdGhlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSwgYW5kIHN0YW5kYXJkIHRlc3RpbmcvZnV6emluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiM2IxODM3NzNhZjVmOTVmYWM1MzdhMGI5MWI4NDFlNTMyMTlhMzY3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjcgMDU6NDM6MzggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYwppbmRleCA3M2YzN2IwNTBkMGEwLi5lNzk3NWFjN2JmY2EyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMKQEAgLTE0MjcsNyAmIzQzOzE0MjcsOCBAQCB2b2lkIG5lc3RlZF9zdm1fdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKQogCWt2bV9yc3Bfd3JpdGUodmNwdSwgdm1jYjAxLSZndDtzYXZlLnJzcCk7CiAJa3ZtX3JpcF93cml0ZSh2Y3B1LCB2bWNiMDEtJmd0O3NhdmUucmlwKTsKIAotCXN2bS0mZ3Q7dmNwdS5hcmNoLmRyNyA9IERSN19GSVhFRF8xOwomIzQzOwlzdm0tJmd0O3ZjcHUuYXJjaC5kcjYgPSB2bWNiMDEtJmd0O3NhdmUuZHI2OwomIzQzOwlzdm0tJmd0O3ZjcHUuYXJjaC5kcjcgPSB2bWNiMDEtJmd0O3NhdmUuZHI3OwogCWt2bV91cGRhdGVfZHI3KCZhbXA7c3ZtLSZndDt2Y3B1KTsKIAogCW5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bQppbmRleCA5NmJhYjcwMDJkMzllLi4zMjI5ZDY3MzgxN2U2IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KQEAgLTEyMSw2ICYjNDM7MTIxLDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX25lc3RlZF9jbGVhcl9lZmVyX3N2bWUKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfc2h1dGRvd25fdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX25lc3RlZF9zb2Z0X2luamVjdF90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3ZtY2IxMl9ncGEKJiM0MztURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX25lc3RlZF9wYXRfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX2xicl9uZXN0ZWRfc3RhdGUKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9wbXVfaG9zdF9ndWVzdF90ZXN0CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uNmVmMjljZjBhODE5NwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuYwpAQCAtMCwwICYjNDM7MSwxMDQgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiYjNDM7LyoKJiM0MzsgKiBOZXN0ZWQgU1ZNIGRlYnVnIHJlZ2lzdGVyIHN0YXRlIHRlc3QuCiYjNDM7ICovCiYjNDM7I2luY2x1ZGUgJiMzNDt0ZXN0X3V0aWwuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtrdm1fdXRpbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3Byb2Nlc3Nvci5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3N2bV91dGlsLmgmIzM0OwomIzQzOwomIzQzOyNkZWZpbmUgRFI2X0FDVElWRV9MT1cJMHhmZmZmMGZmMAomIzQzOyNkZWZpbmUgRFI2X0IwCQlCSVQoMCkKJiM0MzsjZGVmaW5lIERSNl9CUwkJQklUKDE0KQomIzQzOyNkZWZpbmUgRFI3X0ZJWEVEXzEJMHg0MDAKJiM0MzsjZGVmaW5lIERSN19HRQkJQklUKDkpCiYjNDM7CiYjNDM7I2RlZmluZSBMMV9EUjYJCShEUjZfQUNUSVZFX0xPVyB8IERSNl9CUykKJiM0MzsjZGVmaW5lIEwyX0RSNgkJKERSNl9BQ1RJVkVfTE9XIHwgRFI2X0IwKQomIzQzOyNkZWZpbmUgTDFfRFI3CQkoRFI3X0ZJWEVEXzEgfCBEUjdfR0UpCiYjNDM7I2RlZmluZSBMMl9EUjcJCShEUjdfRklYRURfMSkKJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHU2NCBnZXRfZHI2KHZvaWQpCiYjNDM7ewomIzQzOwl1NjQgdmFsOwomIzQzOwomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDttb3YgJSVkcjYsICUwJiMzNDsgOiAmIzM0Oz1yJiMzNDsodmFsKSA6IDogJiMzNDttZW1vcnkmIzM0Oyk7CiYjNDM7CXJldHVybiB2YWw7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgdTY0IGdldF9kcjcodm9pZCkKJiM0Mzt7CiYjNDM7CXU2NCB2YWw7CiYjNDM7CiYjNDM7CWFzbSB2b2xhdGlsZSgmIzM0O21vdiAlJWRyNywgJTAmIzM0OyA6ICYjMzQ7PXImIzM0Oyh2YWwpIDogOiAmIzM0O21lbW9yeSYjMzQ7KTsKJiM0MzsJcmV0dXJuIHZhbDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHNldF9kcjYodTY0IHZhbCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSgmIzM0O21vdiAlMCwgJSVkcjYmIzM0OyA6IDogJiMzNDtyJiMzNDsodmFsKSA6ICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNyh1NjQgdmFsKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlKCYjMzQ7bW92ICUwLCAlJWRyNyYjMzQ7IDogOiAmIzM0O3ImIzM0Oyh2YWwpIDogJiMzNDttZW1vcnkmIzM0Oyk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGwyX2d1ZXN0X2NvZGUodm9pZCkKJiM0Mzt7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShnZXRfZHI2KCksIEwyX0RSNik7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwyX0RSNyk7CiYjNDM7CXZtbWNhbGwoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbDFfZ3Vlc3RfY29kZShzdHJ1Y3Qgc3ZtX3Rlc3RfZGF0YSAqc3ZtKQomIzQzO3sKJiM0MzsJc3RydWN0IHZtY2IgKnZtY2IgPSBzdm0tJmd0O3ZtY2I7CiYjNDM7CiYjNDM7CXNldF9kcjYoTDFfRFI2KTsKJiM0MzsJc2V0X2RyNyhMMV9EUjcpOwomIzQzOwomIzQzOwlnZW5lcmljX3N2bV9zZXR1cChzdm0sIGwyX2d1ZXN0X2NvZGUpOwomIzQzOwl2bWNiLSZndDtzYXZlLmRyNiA9IEwyX0RSNjsKJiM0MzsJdm1jYi0mZ3Q7c2F2ZS5kcjcgPSBMMl9EUjc7CiYjNDM7CiYjNDM7CXJ1bl9ndWVzdCh2bWNiLCBzdm0tJmd0O3ZtY2JfZ3BhKTsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKHZtY2ItJmd0O2NvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9WTU1DQUxMKTsKJiM0MzsKJiM0MzsJR1VFU1RfQVNTRVJUX0VRKHZtY2ItJmd0O3NhdmUuZHI2LCBMMl9EUjYpOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEodm1jYi0mZ3Q7c2F2ZS5kcjcsIEwyX0RSNyk7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShnZXRfZHI2KCksIEwxX0RSNik7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwxX0RSNyk7CiYjNDM7CiYjNDM7CUdVRVNUX0RPTkUoKTsKJiM0Mzt9CiYjNDM7CiYjNDM7aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBrdm1fdmNwdSAqdmNwdTsKJiM0MzsJc3RydWN0IGt2bV92bSAqdm07CiYjNDM7CXN0cnVjdCB1Y2FsbCB1YzsKJiM0MzsJZ3ZhX3Qgc3ZtX2d2YTsKJiM0MzsKJiM0MzsJVEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpOwomIzQzOwomIzQzOwl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgbDFfZ3Vlc3RfY29kZSk7CiYjNDM7CXZjcHVfYWxsb2Nfc3ZtKHZtLCAmYW1wO3N2bV9ndmEpOwomIzQzOwl2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpOwomIzQzOwomIzQzOwl2Y3B1X3J1bih2Y3B1KTsKJiM0MzsJVEVTVF9BU1NFUlRfS1ZNX0VYSVRfUkVBU09OKHZjcHUsIEtWTV9FWElUX0lPKTsKJiM0MzsKJiM0MzsJc3dpdGNoIChnZXRfdWNhbGwodmNwdSwgJmFtcDt1YykpIHsKJiM0MzsJY2FzZSBVQ0FMTF9BQk9SVDoKJiM0MzsJCVJFUE9SVF9HVUVTVF9BU1NFUlQodWMpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWNhc2UgVUNBTExfRE9ORToKJiM0MzsJCWJyZWFrOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJVEVTVF9GQUlMKCYjMzQ7VW5rbm93biB1Y2FsbCAlbHUmIzM0OywgdWMuY21kKTsKJiM0MzsJfQomIzQzOwomIzQzOwlrdm1fdm1fZnJlZSh2bSk7CiYjNDM7CXJldHVybiAwOwomIzQzO30KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA1OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjEKCQkJCQkJCW91dHB1dDogMTU3CgkJCQkJCQl0aG91Z2h0czogNjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBLVk0gTmVzdGVkIFNWTSBEZWJ1ZyBSZWdpc3RlciBSZXN0b3JhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGBuZXN0ZWRfc3ZtX3ZtZXhpdCgpYCBmdW5jdGlvbi4gSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgZml4OiBpdCByZXN0b3JlcyB0aGUgZGVidWcgcmVnaXN0ZXJzIGBkcjZgIGFuZCBgZHI3YCBmcm9tIHRoZSBgdm1jYjAxYCBzdHJ1Y3R1cmUgZHVyaW5nIGEgbmVzdGVkIFZNIGV4aXQuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBmaXhpbmcgYSBsb2dpYyBidWcgd2hlcmUgdGhlIEwxIGh5cGVydmlzb3ImIzM5O3MgZGVidWcgcmVnaXN0ZXJzIHdlcmVuJiMzOTt0IGJlaW5nIGNvcnJlY3RseSBwcmVzZXJ2ZWQgYW5kIHJlLWxvYWRlZCB3aGVuIGFuIEwyIFZNIGV4aXRlZCBiYWNrIHRvIEwxLiBCZWZvcmUgdGhlIHBhdGNoLCBgZHI3YCB3YXMgYmVpbmcgaGFyZGNvZGVkIHRvIGBEUjdfRklYRURfMWAsIGFuZCBgZHI2YCB3YXNuJiMzOTt0IGJlaW5nIHRvdWNoZWQgYXQgYWxsLgoKTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgYWJvdXQgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaW1wbGljYXRpb25zLCBhbmQgdGhhdCB0cmlnZ2VycyBteSBLTVNBTiByYWRhci4gQ291bGQgdGhpcyBiZSBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIG5vdCByZWFsbHkuIFRoZSBgdm1jYjAxLSZndDtzYXZlLmRyNmAgYW5kIGB2bWNiMDEtJmd0O3NhdmUuZHI3YCBmaWVsZHMgY29tZSBmcm9tIHRoZSBWTUNCLCB3aGljaCBpcyBhICpoYXJkd2FyZSotZGVmaW5lZCBzdHJ1Y3R1cmUuIEtWTSwgYW5kIGJ5IGV4dGVuc2lvbiB0aGUgaGFyZHdhcmUsIHRha2VzIGNhcmUgb2YgcHJvcGVybHkgaW5pdGlhbGl6aW5nIGFuZCBtYW5hZ2luZyB0aGlzLiBUaGUgY29yZSBwcm9ibGVtIGhlcmUgaXMgKmZ1bmN0aW9uYWwqIC0gS1ZNIHdhc24mIzM5O3QgcmVzdG9yaW5nIHRoZSBkZWJ1ZyByZWdpc3RlciBzdGF0ZSBjb3JyZWN0bHkuIEl0JiMzOTtzIG5vdCBhYm91dCByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgZGF0YTsgaXQmIzM5O3MgYWJvdXQgbm90IHJlbG9hZGluZyB0aGUgKmNvcnJlY3QqIHZhbHVlcyB0aGF0IHdlcmUgc2F2ZWQuIFNvLCB0aGlzIGlzbiYjMzk7dCBhIEtNU0FOIGlzc3VlLiBLTVNBTiBpcyBmb3IgY2F0Y2hpbmcgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk7IEtBU0FOIHdvdWxkIGJlIGZvciBvdXQtb2YtYm91bmRzIGFjY2VzcywgdXNlLWFmdGVyLWZyZWUsIGV0Yy4gVGhpcyBpcyBuZWl0aGVyLgoKSSYjMzk7bSBjb25maXJtaW5nIG15IHJlYXNvbmluZyBieSByZS1ydW5uaW5nIHRoZSBsb2dpYy4gVGhlIHBhdGNoIGlzIGFib3V0ICpzdGF0ZSByZXN0b3JhdGlvbiosIG5vdCBpbnRyb2R1Y2luZyBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdGllcy4gS01TQU4gaXMgZGVmaW5pdGVseSBub3QgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoaXMgYnVnLiBJdCYjMzk7cyBub3QgcmVsZXZhbnQuCgpTbywgSSYjMzk7bSBnb2luZyB0byBwdXQgdG9nZXRoZXIgdGhlIEtNU0FOIHJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBzdGF0ZSByZXN0b3JhdGlvbiBidWcgaW4gS1ZNJiMzOTtzIG5lc3RlZCBTVk0gaW1wbGVtZW50YXRpb24sIHdoZXJlIHRoZSBMMSBoeXBlcnZpc29yJiMzOTtzIGRlYnVnIHJlZ2lzdGVycyAoRFI2IGFuZCBEUjcpIHdlcmUgbm90IGNvcnJlY3RseSByZXN0b3JlZCBmcm9tIHRoZSBMMSBWTUNCICh2bWNiMDEpIHVwb24gYSBuZXN0ZWQgVk0gZXhpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYnVnIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc3RhdGUgbWFuYWdlbWVudCwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGUgVk1DQiBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgbWFuYWdlZCBieSBLVk0gYW5kIHRoZSBoYXJkd2FyZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUsIGFuZCBzdGFuZGFyZCB0ZXN0aW5nL2Z1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHN0YXRlIHJlc3RvcmF0aW9uIGJ1ZyBpbiBLVk0mIzM5O3MgbmVzdGVkIFNWTSBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlIEwxIGh5cGVydmlzb3ImIzM5O3MgZGVidWcgcmVnaXN0ZXJzIChEUjYgYW5kIERSNykgd2VyZSBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZyb20gdGhlIEwxIFZNQ0IgKHZtY2IwMSkgdXBvbiBhIG5lc3RlZCBWTSBleGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBidWcgcmVsYXRlZCB0byBoYXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50LCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBWTUNCIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkIGJ5IEtWTSBhbmQgdGhlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSwgYW5kIHN0YW5kYXJkIHRlc3RpbmcvZnV6emluZyBpcyBzdWZmaWNpZW50LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBzdGF0ZSByZXN0b3JhdGlvbiBidWcgaW4gS1ZNJiMzOTtzIG5lc3RlZCBTVk0gaW1wbGVtZW50YXRpb24sIHdoZXJlIHRoZSBMMSBoeXBlcnZpc29yJiMzOTtzIGRlYnVnIHJlZ2lzdGVycyAoRFI2IGFuZCBEUjcpIHdlcmUgbm90IGNvcnJlY3RseSByZXN0b3JlZCBmcm9tIHRoZSBMMSBWTUNCICh2bWNiMDEpIHVwb24gYSBuZXN0ZWQgVk0gZXhpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYnVnIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc3RhdGUgbWFuYWdlbWVudCwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGUgVk1DQiBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgbWFuYWdlZCBieSBLVk0gYW5kIHRoZSBoYXJkd2FyZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUsIGFuZCBzdGFuZGFyZCB0ZXN0aW5nL2Z1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6MzkuNDc5Njc4MDY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkyMDk3MDE2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3N2bV92bWV4aXRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgc3RhdGUgcmVzdG9yYXRpb24gYnVnIGluIEtWTSdzIG5lc3RlZCBTVk0gaW1wbGVtZW50YXRpb24sIHdoZXJlIHRoZSBMMSBoeXBlcnZpc29yJ3MgZGVidWcgcmVnaXN0ZXJzIChEUjYgYW5kIERSNykgd2VyZSBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZyb20gdGhlIEwxIFZNQ0IgKHZtY2IwMSkgdXBvbiBhIG5lc3RlZCBWTSBleGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBidWcgcmVsYXRlZCB0byBoYXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50LCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBWTUNCIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkIGJ5IEtWTSBhbmQgdGhlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSwgYW5kIHN0YW5kYXJkIHRlc3RpbmcvZnV6emluZyBpcyBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXN0ZWQgVk0tZXhpdCBoYW5kbGVyIGluIEtWTSBmb3IgQU1EIHByb2Nlc3NvcnMgKFNWTSkgdG8gY29ycmVjdGx5IHJlc3RvcmUgdGhlIERSNiBhbmQgRFI3IGRlYnVnIHJlZ2lzdGVycyBmcm9tIHRoZSBob3N0IFZNQ0IgKHZtY2IwMSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA1OjQzOjM5LjQ3OTY4Mzc3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM2MjAwNjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjNiMTgzNzczYWY1Zjk1ZmFjNTM3YTBiOTFiODQxZTUzMjE5YTM2N1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwNTo0MzozOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xcbmluZGV4IDczZjM3YjA1MGQwYTAuLmU3OTc1YWM3YmZjYTIgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcXG5AQCAtMTQyNyw3ICsxNDI3LDggQEAgdm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4gXFx0a3ZtX3JzcF93cml0ZSh2Y3B1LCB2bWNiMDEtXFx1MDAzZXNhdmUucnNwKTtcXG4gXFx0a3ZtX3JpcF93cml0ZSh2Y3B1LCB2bWNiMDEtXFx1MDAzZXNhdmUucmlwKTtcXG4gXFxuLVxcdHN2bS1cXHUwMDNldmNwdS5hcmNoLmRyNyA9IERSN19GSVhFRF8xO1xcbitcXHRzdm0tXFx1MDAzZXZjcHUuYXJjaC5kcjYgPSB2bWNiMDEtXFx1MDAzZXNhdmUuZHI2O1xcbitcXHRzdm0tXFx1MDAzZXZjcHUuYXJjaC5kcjcgPSB2bWNiMDEtXFx1MDAzZXNhdmUuZHI3O1xcbiBcXHRrdm1fdXBkYXRlX2RyNyhcXHUwMDI2c3ZtLVxcdTAwM2V2Y3B1KTtcXG4gXFxuIFxcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuaW5kZXggOTZiYWI3MDAyZDM5ZS4uMzIyOWQ2NzM4MTdlNiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxcbkBAIC0xMjEsNiArMTIxLDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZVxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfc2h1dGRvd25fdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfc29mdF9pbmplY3RfdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfdm1jYjEyX2dwYVxcbitURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9wYXRfdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9sYnJfbmVzdGVkX3N0YXRlXFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX3BtdV9ob3N0X2d1ZXN0X3Rlc3RcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlYnVnX3JlZ3NfdGVzdC5jXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi42ZWYyOWNmMGE4MTk3XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuY1xcbkBAIC0wLDAgKzEsMTA0IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4rLypcXG4rICogTmVzdGVkIFNWTSBkZWJ1ZyByZWdpc3RlciBzdGF0ZSB0ZXN0LlxcbisgKi9cXG4rI2luY2x1ZGUgXFxcInRlc3RfdXRpbC5oXFxcIlxcbisjaW5jbHVkZSBcXFwia3ZtX3V0aWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInByb2Nlc3Nvci5oXFxcIlxcbisjaW5jbHVkZSBcXFwic3ZtX3V0aWwuaFxcXCJcXG4rXFxuKyNkZWZpbmUgRFI2X0FDVElWRV9MT1dcXHQweGZmZmYwZmYwXFxuKyNkZWZpbmUgRFI2X0IwXFx0XFx0QklUKDApXFxuKyNkZWZpbmUgRFI2X0JTXFx0XFx0QklUKDE0KVxcbisjZGVmaW5lIERSN19GSVhFRF8xXFx0MHg0MDBcXG4rI2RlZmluZSBEUjdfR0VcXHRcXHRCSVQoOSlcXG4rXFxuKyNkZWZpbmUgTDFfRFI2XFx0XFx0KERSNl9BQ1RJVkVfTE9XIHwgRFI2X0JTKVxcbisjZGVmaW5lIEwyX0RSNlxcdFxcdChEUjZfQUNUSVZFX0xPVyB8IERSNl9CMClcXG4rI2RlZmluZSBMMV9EUjdcXHRcXHQoRFI3X0ZJWEVEXzEgfCBEUjdfR0UpXFxuKyNkZWZpbmUgTDJfRFI3XFx0XFx0KERSN19GSVhFRF8xKVxcbitcXG4rc3RhdGljIGlubGluZSB1NjQgZ2V0X2RyNih2b2lkKVxcbit7XFxuK1xcdHU2NCB2YWw7XFxuK1xcbitcXHRhc20gdm9sYXRpbGUoXFxcIm1vdiAlJWRyNiwgJTBcXFwiIDogXFxcIj1yXFxcIih2YWwpIDogOiBcXFwibWVtb3J5XFxcIik7XFxuK1xcdHJldHVybiB2YWw7XFxuK31cXG4rXFxuK3N0YXRpYyBpbmxpbmUgdTY0IGdldF9kcjcodm9pZClcXG4re1xcbitcXHR1NjQgdmFsO1xcbitcXG4rXFx0YXNtIHZvbGF0aWxlKFxcXCJtb3YgJSVkcjcsICUwXFxcIiA6IFxcXCI9clxcXCIodmFsKSA6IDogXFxcIm1lbW9yeVxcXCIpO1xcbitcXHRyZXR1cm4gdmFsO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNih1NjQgdmFsKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZShcXFwibW92ICUwLCAlJWRyNlxcXCIgOiA6IFxcXCJyXFxcIih2YWwpIDogXFxcIm1lbW9yeVxcXCIpO1xcbit9XFxuK1xcbitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNyh1NjQgdmFsKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZShcXFwibW92ICUwLCAlJWRyN1xcXCIgOiA6IFxcXCJyXFxcIih2YWwpIDogXFxcIm1lbW9yeVxcXCIpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpXFxuK3tcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjYoKSwgTDJfRFI2KTtcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjcoKSwgTDJfRFI3KTtcXG4rXFx0dm1tY2FsbCgpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBsMV9ndWVzdF9jb2RlKHN0cnVjdCBzdm1fdGVzdF9kYXRhICpzdm0pXFxuK3tcXG4rXFx0c3RydWN0IHZtY2IgKnZtY2IgPSBzdm0tXFx1MDAzZXZtY2I7XFxuK1xcbitcXHRzZXRfZHI2KEwxX0RSNik7XFxuK1xcdHNldF9kcjcoTDFfRFI3KTtcXG4rXFxuK1xcdGdlbmVyaWNfc3ZtX3NldHVwKHN2bSwgbDJfZ3Vlc3RfY29kZSk7XFxuK1xcdHZtY2ItXFx1MDAzZXNhdmUuZHI2ID0gTDJfRFI2O1xcbitcXHR2bWNiLVxcdTAwM2VzYXZlLmRyNyA9IEwyX0RSNztcXG4rXFxuK1xcdHJ1bl9ndWVzdCh2bWNiLCBzdm0tXFx1MDAzZXZtY2JfZ3BhKTtcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKHZtY2ItXFx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9WTU1DQUxMKTtcXG4rXFxuK1xcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVxcdTAwM2VzYXZlLmRyNiwgTDJfRFI2KTtcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKHZtY2ItXFx1MDAzZXNhdmUuZHI3LCBMMl9EUjcpO1xcbitcXHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNigpLCBMMV9EUjYpO1xcbitcXHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNygpLCBMMV9EUjcpO1xcbitcXG4rXFx0R1VFU1RfRE9ORSgpO1xcbit9XFxuK1xcbitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbit7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcXG4rXFx0c3RydWN0IGt2bV92bSAqdm07XFxuK1xcdHN0cnVjdCB1Y2FsbCB1YztcXG4rXFx0Z3ZhX3Qgc3ZtX2d2YTtcXG4rXFxuK1xcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKTtcXG4rXFxuK1xcdHZtID0gdm1fY3JlYXRlX3dpdGhfb25lX3ZjcHUoXFx1MDAyNnZjcHUsIGwxX2d1ZXN0X2NvZGUpO1xcbitcXHR2Y3B1X2FsbG9jX3N2bSh2bSwgXFx1MDAyNnN2bV9ndmEpO1xcbitcXHR2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpO1xcbitcXG4rXFx0dmNwdV9ydW4odmNwdSk7XFxuK1xcdFRFU1RfQVNTRVJUX0tWTV9FWElUX1JFQVNPTih2Y3B1LCBLVk1fRVhJVF9JTyk7XFxuK1xcbitcXHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcXHUwMDI2dWMpKSB7XFxuK1xcdGNhc2UgVUNBTExfQUJPUlQ6XFxuK1xcdFxcdFJFUE9SVF9HVUVTVF9BU1NFUlQodWMpO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBVQ0FMTF9ET05FOlxcbitcXHRcXHRicmVhaztcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0VEVTVF9GQUlMKFxcXCJVbmtub3duIHVjYWxsICVsdVxcXCIsIHVjLmNtZCk7XFxuK1xcdH1cXG4rXFxuK1xcdGt2bV92bV9mcmVlKHZtKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NDAuMTE2NDY5NDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyODExMDQxNjIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZXN0ZWRfc3ZtX3ZtZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXN0ZWQgVk0tZXhpdCBoYW5kbGVyIGluIEtWTSBmb3IgQU1EIHByb2Nlc3NvcnMgKFNWTSkgdG8gY29ycmVjdGx5IHJlc3RvcmUgdGhlIERSNiBhbmQgRFI3IGRlYnVnIHJlZ2lzdGVycyBmcm9tIHRoZSBob3N0IFZNQ0IgKHZtY2IwMSkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gbG9naWMgdGhhdCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIzYjE4Mzc3M2FmNWY5NWZhYzUzN2EwYjkxYjg0MWU1MzIxOWEzNjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwNTo0MzozOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG5pbmRleCA3M2YzN2IwNTBkMGEwLi5lNzk3NWFjN2JmY2EyIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuQEAgLTE0MjcsNyArMTQyNyw4IEBAIHZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4gXHRrdm1fcnNwX3dyaXRlKHZjcHUsIHZtY2IwMS1cdTAwM2VzYXZlLnJzcCk7XG4gXHRrdm1fcmlwX3dyaXRlKHZjcHUsIHZtY2IwMS1cdTAwM2VzYXZlLnJpcCk7XG4gXG4tXHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNyA9IERSN19GSVhFRF8xO1xuK1x0c3ZtLVx1MDAzZXZjcHUuYXJjaC5kcjYgPSB2bWNiMDEtXHUwMDNlc2F2ZS5kcjY7XG4rXHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNyA9IHZtY2IwMS1cdTAwM2VzYXZlLmRyNztcbiBcdGt2bV91cGRhdGVfZHI3KFx1MDAyNnN2bS1cdTAwM2V2Y3B1KTtcbiBcbiBcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbmluZGV4IDk2YmFiNzAwMmQzOWUuLjMyMjlkNjczODE3ZTYgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXG5AQCAtMTIxLDYgKzEyMSw3IEBAIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9jbGVhcl9lZmVyX3N2bWVcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfc2h1dGRvd25fdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9zb2Z0X2luamVjdF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX3ZtY2IxMl9ncGFcbitURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX3BhdF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbGJyX25lc3RlZF9zdGF0ZVxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX3BtdV9ob3N0X2d1ZXN0X3Rlc3RcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi42ZWYyOWNmMGE4MTk3XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVidWdfcmVnc190ZXN0LmNcbkBAIC0wLDAgKzEsMTA0IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuKy8qXG4rICogTmVzdGVkIFNWTSBkZWJ1ZyByZWdpc3RlciBzdGF0ZSB0ZXN0LlxuKyAqL1xuKyNpbmNsdWRlIFwidGVzdF91dGlsLmhcIlxuKyNpbmNsdWRlIFwia3ZtX3V0aWwuaFwiXG4rI2luY2x1ZGUgXCJwcm9jZXNzb3IuaFwiXG4rI2luY2x1ZGUgXCJzdm1fdXRpbC5oXCJcbitcbisjZGVmaW5lIERSNl9BQ1RJVkVfTE9XXHQweGZmZmYwZmYwXG4rI2RlZmluZSBEUjZfQjBcdFx0QklUKDApXG4rI2RlZmluZSBEUjZfQlNcdFx0QklUKDE0KVxuKyNkZWZpbmUgRFI3X0ZJWEVEXzFcdDB4NDAwXG4rI2RlZmluZSBEUjdfR0VcdFx0QklUKDkpXG4rXG4rI2RlZmluZSBMMV9EUjZcdFx0KERSNl9BQ1RJVkVfTE9XIHwgRFI2X0JTKVxuKyNkZWZpbmUgTDJfRFI2XHRcdChEUjZfQUNUSVZFX0xPVyB8IERSNl9CMClcbisjZGVmaW5lIEwxX0RSN1x0XHQoRFI3X0ZJWEVEXzEgfCBEUjdfR0UpXG4rI2RlZmluZSBMMl9EUjdcdFx0KERSN19GSVhFRF8xKVxuK1xuK3N0YXRpYyBpbmxpbmUgdTY0IGdldF9kcjYodm9pZClcbit7XG4rXHR1NjQgdmFsO1xuK1xuK1x0YXNtIHZvbGF0aWxlKFwibW92ICUlZHI2LCAlMFwiIDogXCI9clwiKHZhbCkgOiA6IFwibWVtb3J5XCIpO1xuK1x0cmV0dXJuIHZhbDtcbit9XG4rXG4rc3RhdGljIGlubGluZSB1NjQgZ2V0X2RyNyh2b2lkKVxuK3tcbitcdHU2NCB2YWw7XG4rXG4rXHRhc20gdm9sYXRpbGUoXCJtb3YgJSVkcjcsICUwXCIgOiBcIj1yXCIodmFsKSA6IDogXCJtZW1vcnlcIik7XG4rXHRyZXR1cm4gdmFsO1xuK31cbitcbitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNih1NjQgdmFsKVxuK3tcbitcdGFzbSB2b2xhdGlsZShcIm1vdiAlMCwgJSVkcjZcIiA6IDogXCJyXCIodmFsKSA6IFwibWVtb3J5XCIpO1xuK31cbitcbitzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2RyNyh1NjQgdmFsKVxuK3tcbitcdGFzbSB2b2xhdGlsZShcIm1vdiAlMCwgJSVkcjdcIiA6IDogXCJyXCIodmFsKSA6IFwibWVtb3J5XCIpO1xuK31cbitcbitzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpXG4re1xuK1x0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjYoKSwgTDJfRFI2KTtcbitcdEdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwyX0RSNyk7XG4rXHR2bW1jYWxsKCk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGwxX2d1ZXN0X2NvZGUoc3RydWN0IHN2bV90ZXN0X2RhdGEgKnN2bSlcbit7XG4rXHRzdHJ1Y3Qgdm1jYiAqdm1jYiA9IHN2bS1cdTAwM2V2bWNiO1xuK1xuK1x0c2V0X2RyNihMMV9EUjYpO1xuK1x0c2V0X2RyNyhMMV9EUjcpO1xuK1xuK1x0Z2VuZXJpY19zdm1fc2V0dXAoc3ZtLCBsMl9ndWVzdF9jb2RlKTtcbitcdHZtY2ItXHUwMDNlc2F2ZS5kcjYgPSBMMl9EUjY7XG4rXHR2bWNiLVx1MDAzZXNhdmUuZHI3ID0gTDJfRFI3O1xuK1xuK1x0cnVuX2d1ZXN0KHZtY2IsIHN2bS1cdTAwM2V2bWNiX2dwYSk7XG4rXHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2Vjb250cm9sLmV4aXRfY29kZSwgU1ZNX0VYSVRfVk1NQ0FMTCk7XG4rXG4rXHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2VzYXZlLmRyNiwgTDJfRFI2KTtcbitcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVx1MDAzZXNhdmUuZHI3LCBMMl9EUjcpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjYoKSwgTDFfRFI2KTtcbitcdEdVRVNUX0FTU0VSVF9FUShnZXRfZHI3KCksIEwxX0RSNyk7XG4rXG4rXHRHVUVTVF9ET05FKCk7XG4rfVxuK1xuK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4re1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuK1x0c3RydWN0IGt2bV92bSAqdm07XG4rXHRzdHJ1Y3QgdWNhbGwgdWM7XG4rXHRndmFfdCBzdm1fZ3ZhO1xuK1xuK1x0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpO1xuK1xuK1x0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBsMV9ndWVzdF9jb2RlKTtcbitcdHZjcHVfYWxsb2Nfc3ZtKHZtLCBcdTAwMjZzdm1fZ3ZhKTtcbitcdHZjcHVfYXJnc19zZXQodmNwdSwgMSwgc3ZtX2d2YSk7XG4rXG4rXHR2Y3B1X3J1bih2Y3B1KTtcbitcdFRFU1RfQVNTRVJUX0tWTV9FWElUX1JFQVNPTih2Y3B1LCBLVk1fRVhJVF9JTyk7XG4rXG4rXHRzd2l0Y2ggKGdldF91Y2FsbCh2Y3B1LCBcdTAwMjZ1YykpIHtcbitcdGNhc2UgVUNBTExfQUJPUlQ6XG4rXHRcdFJFUE9SVF9HVUVTVF9BU1NFUlQodWMpO1xuK1x0XHRicmVhaztcbitcdGNhc2UgVUNBTExfRE9ORTpcbitcdFx0YnJlYWs7XG4rXHRkZWZhdWx0OlxuK1x0XHRURVNUX0ZBSUwoXCJVbmtub3duIHVjYWxsICVsdVwiLCB1Yy5jbWQpO1xuK1x0fVxuK1xuK1x0a3ZtX3ZtX2ZyZWUodm0pO1xuK1x0cmV0dXJuIDA7XG4rfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NDAuMTE2NDcwODE5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg0MzUxNzIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldDogTmVzdGVkIFNWTSBWTS1FeGl0IEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgaW4gYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIGJ1dCBwb3RlbnRpYWxseSBpbnRlcmVzdGluZy4gSXQncyBpbiB0aGUgYG5lc3RlZF9zdm1fdm1leGl0YCBoYW5kbGVyIGFuZCBpdCdzIHJlc3RvcmluZyBgZHI2YCBhbmQgYGRyN2AgZnJvbSBgdm1jYjAxLVx1MDAzZXNhdmVgLiBUaGF0IGluZGljYXRlcyB0aGF0LCBvbiBhIG5lc3RlZCBWTS1leGl0LCB0aGUgdmFsdWVzIG9mIHRoZSBkZWJ1ZyByZWdpc3RlcnMgYXJlIGJlaW5nIHNhdmVkIGFuZCB0aGVuIHJlc3RvcmVkLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgZ3Vlc3QgZGVidWdnaW5nIHN0YXRlIGFjcm9zcyBuZXN0ZWQgdmlydHVhbGl6YXRpb24uIEl0J3MgY2xlYXJseSByZWFjaGFibGUgaW4gYSBLVk0gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LiBIbW0sIHJlc3RvcmluZyB0aG9zZSByZWdpc3RlcnMgc291bmRzIGxpa2UgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuTm93LCBsZXQncyBzZWUgYWJvdXQgYnVpbGRpbmcgYSBmdXp6aW5nIHRhcmdldC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBLVk0gYW5kIFNWTSBhcmUgZW5hYmxlZC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEtWTSBpcyBgQ09ORklHX0tWTWAsIHdoaWNoIEkgYWxyZWFkeSBrbmV3LCBhbmQgU1ZNIGlzIGBDT05GSUdfS1ZNX0FNRGAuIEknbGwgdmVyaWZ5IHRoZSBkZXRhaWxzIG9mIHRob3NlIGluIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AganVzdCB0byBiZSBzdXJlLiBBbHJpZ2h0LCBJJ3ZlIGdvdCBhIGdvb2QgdGFyZ2V0LCBJIGNhbiBnZXQgdG8gd29yayBvbiBzZXR0aW5nIHVwIGEgZnV6eiBoYXJuZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjI0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NDUuOTU5OTkwNTI3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4OTUzMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1fQU1EXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTEzND1jb25maWcgS1ZNX0lOVEVMX1REWFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NDYuMDA4OTUwNTk1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyMDk4MTg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIE5lc3RlZCBTVk0gVk0tRXhpdCBIYW5kbGVyKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEknbSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIG5lc3RlZCBTVk0gVk0tZXhpdCBoYW5kbGVyLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIGBuZXN0ZWRfc3ZtX3ZtZXhpdGAgbG9jYXRlZCB3aXRoaW4gYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciBhdCBsZWFzdCwgd2hlcmUgdGhlIGNydWNpYWwgbG9naWMgZm9yIGhhbmRsaW5nIFZNIGV4aXRzIHJlbGF0ZWQgdG8gbmVzdGVkIHZpcnR1YWxpemF0aW9uIHdpdGhpbiBBTUQncyBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIGlzIGltcGxlbWVudGVkLiBUaGlzIGlzIHRoZSBjb3JlIG9mIGhvdyB0aGUgaHlwZXJ2aXNvciBpbnRlcmFjdHMgd2l0aCB0aGUgbmVzdGVkIGd1ZXN0IGVudmlyb25tZW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgY29udHJvbCBmbG93IHdvcmtzIGhlcmUuIFRpbWUgdG8gZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzI1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NDkuODI5OTM1MTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzOTQyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmVzdGVkX3N2bV92bWV4aXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTM4PXN0YXRpYyB2b2lkIG5lc3RlZF9zdm1faW5qZWN0X25wZl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzAtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo3MTpcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzItfVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMTEzPWludCBuZXN0ZWRfc3ZtX3ZtcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTE4OC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExODk6XFx0XFx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExOTAtXFx0fVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMjMzPXZvaWQgc3ZtX2NvcHlfdm1sb2Fkc2F2ZV9zdGF0ZShzdHJ1Y3Qgdm1jYiAqdG9fdm1jYiwgc3RydWN0IHZtY2IgKmZyb21fdm1jYilcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTI0OC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEyNDk6c3RhdGljIGludCBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyNTAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzE2LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTMxNzp2b2lkIG5lc3RlZF9zdm1fdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMxOC17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMjItXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMzIzOlxcdGlmIChuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMyNC1cXHRcXHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfVFJJUExFX0ZBVUxULCB2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTY0Nz1pbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NTMtXFx0aWYgKHZtZXhpdCA9PSBORVNURURfRVhJVF9ET05FKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTY1NDpcXHRcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTY1NS1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTY4Mj1zdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luamVjdF9leGNlcHRpb25fdm1leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTcxMy1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3MTQ6XFx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3MTUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwNTo0Mzo0OS44NzYzMzIxMThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkzNjE3NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3k6IGBuZXN0ZWRfc3ZtX3ZtZXhpdGAqKlxuXG5Pa2F5LCBzbyB0aGUgYG5lc3RlZF9zdm1fdm1leGl0YCBmdW5jdGlvbiBpcyB0aGUgdGFyZ2V0IOKAkyB0aGF0J3MgdGhlIG9uZSBJJ20gd29ya2luZyB3aXRoLiBMZXQncyBzZWUsIGlzIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBmdW5jdGlvbiB0aGF0IHdhcyBtb2RpZmllZCBpbiB0aGUgcGF0Y2g/IE5vLCBpdCdzIGp1c3QgdGhpcyBvbmUuIFRoZSBwYXRjaCBzcGVjaWZpY2FsbHkgdG91Y2hlcyBgYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY2AgYW5kIG1vZGlmaWVzIGBuZXN0ZWRfc3ZtX3ZtZXhpdGAgd2l0aGluIHRoYXQgZmlsZS4gVGhpcyBpcyAqYWJzb2x1dGVseSogd29ydGggYSBmdXp6aW5nIGNhbXBhaWduLiBHaXZlbiB0aGUgbmF0dXJlIG9mIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBhbmQgU1ZNIGV4aXRzLCB0aGVyZSdzIGEgZ29vZCBjaGFuY2UgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGJ1Z3MgaGVyZS5cblxuVGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zIGFyZSBgS1ZNYCBhbmQgYEtWTV9BTURgLiBJJ2xsIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kIHdoZW4gY29uZmlndXJpbmcgbXkgZnV6emluZyBlbnZpcm9ubWVudCBhbmQgYnVpbGQgcHJvY2Vzc2VzLlxuXG5NeSBmb2N1cyBpcyBsYXNlci1zaGFycDogYG5lc3RlZF9zdm1fdm1leGl0YC4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwLCBJIG5lZWQgdG8gY29uZmlybSBpdHMgdmlzaWJpbGl0eS4gSXMgdGhpcyBmdW5jdGlvbiBzdGF0aWM/IExldCBtZSBxdWlja2x5IGNoZWNrIHRoZSBkZWNsYXJhdGlvbjogYHZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pYC4gTm9wZSwgaXQncyBub3Qgc3RhdGljLiBUaGF0J3MgZ29vZCwgdGhhdCBtZWFucyBpdCdzIGxpa2VseSBjYWxsZWQgZnJvbSBvdGhlciBwbGFjZXMgYW5kIG5vdCBqdXN0IHdpdGhpbiB0aGUgZmlsZSwgd2hpY2ggaW5jcmVhc2VzIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIHNlZSBpZiBgS1ZNX0FNRGAgaGFzIGFueSBkZXBlbmRlbmNpZXMuIE1pZ2h0IGluZmx1ZW5jZSBteSBmdXp6aW5nIHNldHVwLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mzc0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA1OjQzOjU0LjU2OTk1MTkxNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTc0OTU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNX0FNRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA1OjQzOjU0LjYxNTcwNjYzNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMjA3MzY5NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIEtWTSBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gYWdhaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBzb21lIG9mIHRoZSBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTQ2IGluIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AuIExldCdzIHNlZSB3aGF0J3MgYmVpbmcgY29uZGl0aW9uYWxseSBjb21waWxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYXkgdGhlcmUuIEkgaGF2ZSBhIGh1bmNoIHRoaXMgcmVsYXRlcyB0byBzb21lIGZlYXR1cmVzIEkgd2FzIGNvbnNpZGVyaW5nIGludGVncmF0aW5nIGVhcmxpZXIsIHNvIEkgc2hvdWxkIHNlZSBob3cgdGhpcyBmaXRzIGluIHdpdGggdGhlIGV4aXN0aW5nIGNvZGViYXNlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgdG9vIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDkwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDM6NTcuNjM2NDQ1ODc0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0MDpcXHRcXHRoZWxwXFxuIDE0MTpcXHRcXHQgIFByb3ZpZGVzIHN1cHBvcnQgZm9yIGxhdW5jaGluZyBJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKVxcbiAxNDI6XFx0XFx0ICBjb25maWRlbnRpYWwgVk1zIG9uIEludGVsIHByb2Nlc3NvcnMuXFxuIDE0MzpcXHRcXG4gMTQ0OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gMTQ1OlxcdFxcbiAxNDY6XFx0Y29uZmlnIEtWTV9BTURcXG4gMTQ3OlxcdFxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuIDE0ODpcXHRcXHRkZXBlbmRzIG9uIEtWTSBcXHUwMDI2XFx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcXG4gMTQ5OlxcdFxcdGhlbHBcXG4gMTUwOlxcdFxcdCAgUHJvdmlkZXMgc3VwcG9ydCBmb3IgS1ZNIG9uIEFNRCBwcm9jZXNzb3JzIGVxdWlwcGVkIHdpdGggdGhlIEFNRC1WXFxuIDE1MTpcXHRcXHQgIChTVk0pIGV4dGVuc2lvbnMuXFxuIDE1MjpcXHRcXG4gMTUzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuIDE1NDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGt2bS1hbWQuXFxuIDE1NTpcXHRcXG4gMTU2OlxcdGNvbmZpZyBLVk1fQU1EX1NFVlxcbiAxNTc6XFx0XFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4gMTU4OlxcdFxcdGRlZmF1bHQgeVxcbiAxNTk6XFx0XFx0ZGVwZW5kcyBvbiBLVk1fQU1EIFxcdTAwMjZcXHUwMDI2IFg4Nl82NFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwNTo0Mzo1Ny42MzY1MTUyOTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3MjkzOTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLVk0vQU1EIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIEtWTSBjb25maWd1cmF0aW9uIHNwZWNpZmljYWxseSBmb3IgQU1EIHByb2Nlc3NvcnMuIEkga25vdyBgS1ZNYCBhbmQgYEtWTV9BTURgIGFyZSBkZWZpbml0ZWx5IGVzc2VudGlhbCDigJMgdGhleSdyZSB0aGUgY29yZSBjb21wb25lbnRzLiBgQ1BVX1NVUF9BTURgIHVzdWFsbHkgY29tZXMgZW5hYmxlZCBieSBkZWZhdWx0IG9uIHg4NiBzeXN0ZW1zLCBzbyBpdCdzIHByb2JhYmx5IGJlc3QgdG8gaW5jbHVkZSBpdC4gSSBqdXN0IHdhbnQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBhIGNvbmZpZ3VyYWJsZSBvcHRpb24uXG5cbk5vdywgSSBuZWVkIHRvIHpvb20gaW4gb24gc3BlY2lmaWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gQU1EJ3MgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQuIEl0IGxvb2tzIGxpa2UgYG5lc3RlZF9zdm1fdm1leGl0YCBpcyB0aGUgb25seSBmdW5jdGlvbiBJIG5lZWQgdG8gbG9vayBhdC4gU2luY2UgaXQgaGFuZGxlcyBuZXN0ZWQgVk0gZXhpdHMsIHdoaWNoIGlzIG5vdCBhIHN1cGVyIGhpZ2ggZnJlcXVlbmN5LCBidXQgc3RpbGwgYSBWTSBleGl0LCBpdCBjb3VsZCBiZW5lZml0IGZyb20gYSBiaXQgb2YgZnV6emluZy4gSXQncyBub3QgYSBjb21tb24gcGF0aCwgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIHRlc3RpbmcuXG5cbkFuZCwgb2YgY291cnNlLCBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCBgbmVzdGVkX3N2bV92bXJ1bmAgYXMgd2VsbC4gVGhhdCBmdW5jdGlvbiBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgYW5kIHRoYXQgc2VlbXMgaW1wb3J0YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTg0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDQ6MDIuNDA5NDU4MzU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjE5MTU1MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmVzdGVkX3N2bV92bXJ1blwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTA4Nj1zdGF0aWMgaW50IG5lc3RlZF9zdm1fY29weV92bWNiMTJfdG9fY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdm1jYjEyX2dwYSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTExMi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExMTM6aW50IG5lc3RlZF9zdm1fdm1ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTExNC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA1OjQ0OjAyLjczMTM3ODk5M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE2Nzk2Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgS1ZNIFNWTSBOZXN0ZWQgVmlydHVhbGl6YXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBnZXQgcmlnaHQgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gYWRkIGBuZXN0ZWRfc3ZtX3ZtZXhpdGAgYW5kIGBuZXN0ZWRfc3ZtX3ZtcnVuYCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdDsgc2VlbXMgbG9naWNhbCBnaXZlbiB0aGUgY29udGV4dC4gTm93LCBiYWNrIHRvIHRoaXMgcGF0Y2guIExldCdzIHNlZS4uLlxuXG5gYGBjXG4tXHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNyA9IERSN19GSVhFRF8xO1xuK1x0c3ZtLVx1MDAzZXZjcHUuYXJjaC5kcjYgPSB2bWNiMDEtXHUwMDNlc2F2ZS5kcjY7XG4rXHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNyA9IHZtY2IwMS1cdTAwM2VzYXZlLmRyNztcbmBgYFxuXG5BaCwgcmlnaHQuIFRoaXMgaXMgZml4aW5nIHRoZSBpc3N1ZSB3aGVyZSBgZHI2YCBhbmQgYGRyN2AsIHdoaWNoIGFyZSB0aGUgZGVidWcgcmVnaXN0ZXJzLCB3ZXJlICpub3QqIGdldHRpbmcgcHJvcGVybHkgcmVzdG9yZWQgZnJvbSBgdm1jYjAxYCB3aGVuIGEgbmVzdGVkIFZNIGV4aXRzLiBFc3NlbnRpYWxseSwgY3JpdGljYWwgc3RhdGUgd2Fzbid0IGJlaW5nIHByZXNlcnZlZCBvbiBuZXN0ZWQgVk0gZXhpdCwgd2hpY2ggd291bGQgY2F1c2Ugc29tZSBwcmV0dHkgbmFzdHkgYmVoYXZpb3IsIGxpa2VseSBsZWFkaW5nIHRvIGEgY3Jhc2ggb3IgdW5kZWZpbmVkIGJlaGF2aW9yIGRvd24gdGhlIGxpbmUuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBzdHJhaWdodGZvcndhcmQgZml4IGZvciBLVk0gU1ZNIG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4gQ2xlYXJseSBlc3NlbnRpYWwgZm9yIHRoZSBzdGFiaWxpdHkgYW5kIGNvcnJlY3RuZXNzIG9mIHRoYXQgc3Vic3lzdGVtLlxuXG5BbmQgdGhlIGNvbmZpZ3MgYXJlIGBLVk1gIGFuZCBgS1ZNX0FNRGAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgZm9yIHRoaXMuXG5cbkFscmlnaHQsIEknbGwgY2FsbCBzZXQtcmVzdWx0cy4gVGhpcyBpcyBhbiBpbXBvcnRhbnQsIGFsYmVpdCBzbWFsbCwgc3RlcCB0b3dhcmRzIG1ha2luZyBzdXJlIG5lc3RlZCBTVk0gYmVoYXZlcyBwcm9wZXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzIwMiwiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDQ6MDguMTQ4MTc4NTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODcwMzk5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3N2bV92bWV4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmVzdGVkIFZNLWV4aXQgaGFuZGxlciBpbiBLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIChTVk0pIHRvIGNvcnJlY3RseSByZXN0b3JlIHRoZSBEUjYgYW5kIERSNyBkZWJ1ZyByZWdpc3RlcnMgZnJvbSB0aGUgaG9zdCBWTUNCICh2bWNiMDEpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmVzdGVkIHZpcnR1YWxpemF0aW9uIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5lc3RlZF9zdm1fdm1leGl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5lc3RlZCBWTS1leGl0IGhhbmRsZXIgaW4gS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyAoU1ZNKSB0byBjb3JyZWN0bHkgcmVzdG9yZSB0aGUgRFI2IGFuZCBEUjcgZGVidWcgcmVnaXN0ZXJzIGZyb20gdGhlIGhvc3QgVk1DQiAodm1jYjAxKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDQ6MDguMjI2ODg5MDU2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ2MjQ4MTc1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA1OjQ0OjA4LjIyNzMwMDI1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDQ2MjA2NzU3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBzdGF0ZSByZXN0b3JhdGlvbiBidWcgaW4gS1ZNJ3MgbmVzdGVkIFNWTSBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgdGhlIEwxIGh5cGVydmlzb3IncyBkZWJ1ZyByZWdpc3RlcnMgKERSNiBhbmQgRFI3KSB3ZXJlIG5vdCBjb3JyZWN0bHkgcmVzdG9yZWQgZnJvbSB0aGUgTDEgVk1DQiAodm1jYjAxKSB1cG9uIGEgbmVzdGVkIFZNIGV4aXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGJ1ZyByZWxhdGVkIHRvIGhhcmR3YXJlIHN0YXRlIG1hbmFnZW1lbnQsIG5vdCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gVGhlIFZNQ0Igc3RydWN0dXJlcyBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIG1hbmFnZWQgYnkgS1ZNIGFuZCB0aGUgaGFyZHdhcmUuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgYmVpbmcgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbCBmbG93LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLCBhbmQgc3RhbmRhcmQgdGVzdGluZy9mdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjNiMTgzNzczYWY1Zjk1ZmFjNTM3YTBiOTFiODQxZTUzMjE5YTM2N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDI3IDA1OjQzOjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbmluZGV4IDczZjM3YjA1MGQwYTAuLmU3OTc1YWM3YmZjYTIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG5AQCAtMTQyNyw3ICsxNDI3LDggQEAgdm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcdGt2bV9yc3Bfd3JpdGUodmNwdSwgdm1jYjAxLVx1MDAzZXNhdmUucnNwKTtcbiBcdGt2bV9yaXBfd3JpdGUodmNwdSwgdm1jYjAxLVx1MDAzZXNhdmUucmlwKTtcbiBcbi1cdHN2bS1cdTAwM2V2Y3B1LmFyY2guZHI3ID0gRFI3X0ZJWEVEXzE7XG4rXHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNiA9IHZtY2IwMS1cdTAwM2VzYXZlLmRyNjtcbitcdHN2bS1cdTAwM2V2Y3B1LmFyY2guZHI3ID0gdm1jYjAxLVx1MDAzZXNhdmUuZHI3O1xuIFx0a3ZtX3VwZGF0ZV9kcjcoXHUwMDI2c3ZtLVx1MDAzZXZjcHUpO1xuIFxuIFx0bmVzdGVkX3N2bV90cmFuc2l0aW9uX3RsYl9mbHVzaCh2Y3B1KTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuaW5kZXggOTZiYWI3MDAyZDM5ZS4uMzIyOWQ2NzM4MTdlNiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbkBAIC0xMjEsNiArMTIxLDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZVxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9zaHV0ZG93bl90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX3NvZnRfaW5qZWN0X3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfdm1jYjEyX2dwYVxuK1RFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfcGF0X3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9sYnJfbmVzdGVkX3N0YXRlXG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fcG11X2hvc3RfZ3Vlc3RfdGVzdFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjZlZjI5Y2YwYTgxOTdcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWJ1Z19yZWdzX3Rlc3QuY1xuQEAgLTAsMCArMSwxMDQgQEBcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4rLypcbisgKiBOZXN0ZWQgU1ZNIGRlYnVnIHJlZ2lzdGVyIHN0YXRlIHRlc3QuXG4rICovXG4rI2luY2x1ZGUgXCJ0ZXN0X3V0aWwuaFwiXG4rI2luY2x1ZGUgXCJrdm1fdXRpbC5oXCJcbisjaW5jbHVkZSBcInByb2Nlc3Nvci5oXCJcbisjaW5jbHVkZSBcInN2bV91dGlsLmhcIlxuK1xuKyNkZWZpbmUgRFI2X0FDVElWRV9MT1dcdDB4ZmZmZjBmZjBcbisjZGVmaW5lIERSNl9CMFx0XHRCSVQoMClcbisjZGVmaW5lIERSNl9CU1x0XHRCSVQoMTQpXG4rI2RlZmluZSBEUjdfRklYRURfMVx0MHg0MDBcbisjZGVmaW5lIERSN19HRVx0XHRCSVQoOSlcbitcbisjZGVmaW5lIEwxX0RSNlx0XHQoRFI2X0FDVElWRV9MT1cgfCBEUjZfQlMpXG4rI2RlZmluZSBMMl9EUjZcdFx0KERSNl9BQ1RJVkVfTE9XIHwgRFI2X0IwKVxuKyNkZWZpbmUgTDFfRFI3XHRcdChEUjdfRklYRURfMSB8IERSN19HRSlcbisjZGVmaW5lIEwyX0RSN1x0XHQoRFI3X0ZJWEVEXzEpXG4rXG4rc3RhdGljIGlubGluZSB1NjQgZ2V0X2RyNih2b2lkKVxuK3tcbitcdHU2NCB2YWw7XG4rXG4rXHRhc20gdm9sYXRpbGUoXCJtb3YgJSVkcjYsICUwXCIgOiBcIj1yXCIodmFsKSA6IDogXCJtZW1vcnlcIik7XG4rXHRyZXR1cm4gdmFsO1xuK31cbitcbitzdGF0aWMgaW5saW5lIHU2NCBnZXRfZHI3KHZvaWQpXG4re1xuK1x0dTY0IHZhbDtcbitcbitcdGFzbSB2b2xhdGlsZShcIm1vdiAlJWRyNywgJTBcIiA6IFwiPXJcIih2YWwpIDogOiBcIm1lbW9yeVwiKTtcbitcdHJldHVybiB2YWw7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZHI2KHU2NCB2YWwpXG4re1xuK1x0YXNtIHZvbGF0aWxlKFwibW92ICUwLCAlJWRyNlwiIDogOiBcInJcIih2YWwpIDogXCJtZW1vcnlcIik7XG4rfVxuK1xuK3N0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZHI3KHU2NCB2YWwpXG4re1xuK1x0YXNtIHZvbGF0aWxlKFwibW92ICUwLCAlJWRyN1wiIDogOiBcInJcIih2YWwpIDogXCJtZW1vcnlcIik7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGwyX2d1ZXN0X2NvZGUodm9pZClcbit7XG4rXHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNigpLCBMMl9EUjYpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjcoKSwgTDJfRFI3KTtcbitcdHZtbWNhbGwoKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgbDFfZ3Vlc3RfY29kZShzdHJ1Y3Qgc3ZtX3Rlc3RfZGF0YSAqc3ZtKVxuK3tcbitcdHN0cnVjdCB2bWNiICp2bWNiID0gc3ZtLVx1MDAzZXZtY2I7XG4rXG4rXHRzZXRfZHI2KEwxX0RSNik7XG4rXHRzZXRfZHI3KEwxX0RSNyk7XG4rXG4rXHRnZW5lcmljX3N2bV9zZXR1cChzdm0sIGwyX2d1ZXN0X2NvZGUpO1xuK1x0dm1jYi1cdTAwM2VzYXZlLmRyNiA9IEwyX0RSNjtcbitcdHZtY2ItXHUwMDNlc2F2ZS5kcjcgPSBMMl9EUjc7XG4rXG4rXHRydW5fZ3Vlc3Qodm1jYiwgc3ZtLVx1MDAzZXZtY2JfZ3BhKTtcbitcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9WTU1DQUxMKTtcbitcbitcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVx1MDAzZXNhdmUuZHI2LCBMMl9EUjYpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKHZtY2ItXHUwMDNlc2F2ZS5kcjcsIEwyX0RSNyk7XG4rXHRHVUVTVF9BU1NFUlRfRVEoZ2V0X2RyNigpLCBMMV9EUjYpO1xuK1x0R1VFU1RfQVNTRVJUX0VRKGdldF9kcjcoKSwgTDFfRFI3KTtcbitcbitcdEdVRVNUX0RPTkUoKTtcbit9XG4rXG4raW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbit7XG4rXHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4rXHRzdHJ1Y3Qga3ZtX3ZtICp2bTtcbitcdHN0cnVjdCB1Y2FsbCB1YztcbitcdGd2YV90IHN2bV9ndmE7XG4rXG4rXHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfU1ZNKSk7XG4rXG4rXHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFx1MDAyNnZjcHUsIGwxX2d1ZXN0X2NvZGUpO1xuK1x0dmNwdV9hbGxvY19zdm0odm0sIFx1MDAyNnN2bV9ndmEpO1xuK1x0dmNwdV9hcmdzX3NldCh2Y3B1LCAxLCBzdm1fZ3ZhKTtcbitcbitcdHZjcHVfcnVuKHZjcHUpO1xuK1x0VEVTVF9BU1NFUlRfS1ZNX0VYSVRfUkVBU09OKHZjcHUsIEtWTV9FWElUX0lPKTtcbitcbitcdHN3aXRjaCAoZ2V0X3VjYWxsKHZjcHUsIFx1MDAyNnVjKSkge1xuK1x0Y2FzZSBVQ0FMTF9BQk9SVDpcbitcdFx0UkVQT1JUX0dVRVNUX0FTU0VSVCh1Yyk7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBVQ0FMTF9ET05FOlxuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdFRFU1RfRkFJTChcIlVua25vd24gdWNhbGwgJWx1XCIsIHVjLmNtZCk7XG4rXHR9XG4rXG4rXHRrdm1fdm1fZnJlZSh2bSk7XG4rXHRyZXR1cm4gMDtcbit9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwNTo0NDowOC4yMjczMDEyNDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0NjIwNDgzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEtWTSBOZXN0ZWQgU1ZNIERlYnVnIFJlZ2lzdGVyIFJlc3RvcmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgIGFuZCBzcGVjaWZpY2FsbHkgdGhlIGBuZXN0ZWRfc3ZtX3ZtZXhpdCgpYCBmdW5jdGlvbi4gSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBmaXg6IGl0IHJlc3RvcmVzIHRoZSBkZWJ1ZyByZWdpc3RlcnMgYGRyNmAgYW5kIGBkcjdgIGZyb20gdGhlIGB2bWNiMDFgIHN0cnVjdHVyZSBkdXJpbmcgYSBuZXN0ZWQgVk0gZXhpdC4gRXNzZW50aWFsbHksIGl0J3MgZml4aW5nIGEgbG9naWMgYnVnIHdoZXJlIHRoZSBMMSBoeXBlcnZpc29yJ3MgZGVidWcgcmVnaXN0ZXJzIHdlcmVuJ3QgYmVpbmcgY29ycmVjdGx5IHByZXNlcnZlZCBhbmQgcmUtbG9hZGVkIHdoZW4gYW4gTDIgVk0gZXhpdGVkIGJhY2sgdG8gTDEuIEJlZm9yZSB0aGUgcGF0Y2gsIGBkcjdgIHdhcyBiZWluZyBoYXJkY29kZWQgdG8gYERSN19GSVhFRF8xYCwgYW5kIGBkcjZgIHdhc24ndCBiZWluZyB0b3VjaGVkIGF0IGFsbC5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgYWJvdXQgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaW1wbGljYXRpb25zLCBhbmQgdGhhdCB0cmlnZ2VycyBteSBLTVNBTiByYWRhci4gQ291bGQgdGhpcyBiZSBhYm91dCB1bmluaXRpYWxpemVkIG1lbW9yeT8gTm8sIG5vdCByZWFsbHkuIFRoZSBgdm1jYjAxLVx1MDAzZXNhdmUuZHI2YCBhbmQgYHZtY2IwMS1cdTAwM2VzYXZlLmRyN2AgZmllbGRzIGNvbWUgZnJvbSB0aGUgVk1DQiwgd2hpY2ggaXMgYSAqaGFyZHdhcmUqLWRlZmluZWQgc3RydWN0dXJlLiBLVk0sIGFuZCBieSBleHRlbnNpb24gdGhlIGhhcmR3YXJlLCB0YWtlcyBjYXJlIG9mIHByb3Blcmx5IGluaXRpYWxpemluZyBhbmQgbWFuYWdpbmcgdGhpcy4gVGhlIGNvcmUgcHJvYmxlbSBoZXJlIGlzICpmdW5jdGlvbmFsKiAtIEtWTSB3YXNuJ3QgcmVzdG9yaW5nIHRoZSBkZWJ1ZyByZWdpc3RlciBzdGF0ZSBjb3JyZWN0bHkuIEl0J3Mgbm90IGFib3V0IHJlYWRpbmcgdW5pbml0aWFsaXplZCBkYXRhOyBpdCdzIGFib3V0IG5vdCByZWxvYWRpbmcgdGhlICpjb3JyZWN0KiB2YWx1ZXMgdGhhdCB3ZXJlIHNhdmVkLiBTbywgdGhpcyBpc24ndCBhIEtNU0FOIGlzc3VlLiBLTVNBTiBpcyBmb3IgY2F0Y2hpbmcgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnk7IEtBU0FOIHdvdWxkIGJlIGZvciBvdXQtb2YtYm91bmRzIGFjY2VzcywgdXNlLWFmdGVyLWZyZWUsIGV0Yy4gVGhpcyBpcyBuZWl0aGVyLlxuXG5JJ20gY29uZmlybWluZyBteSByZWFzb25pbmcgYnkgcmUtcnVubmluZyB0aGUgbG9naWMuIFRoZSBwYXRjaCBpcyBhYm91dCAqc3RhdGUgcmVzdG9yYXRpb24qLCBub3QgaW50cm9kdWNpbmcgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuIEtNU0FOIGlzIGRlZmluaXRlbHkgbm90IHRoZSByaWdodCB0b29sIGZvciB0aGlzIGJ1Zy4gSXQncyBub3QgcmVsZXZhbnQuXG5cblNvLCBJJ20gZ29pbmcgdG8gcHV0IHRvZ2V0aGVyIHRoZSBLTVNBTiByZWFzb25pbmc6IFwiVGhlIHBhdGNoIGZpeGVzIGEgc3RhdGUgcmVzdG9yYXRpb24gYnVnIGluIEtWTSdzIG5lc3RlZCBTVk0gaW1wbGVtZW50YXRpb24sIHdoZXJlIHRoZSBMMSBoeXBlcnZpc29yJ3MgZGVidWcgcmVnaXN0ZXJzIChEUjYgYW5kIERSNykgd2VyZSBub3QgY29ycmVjdGx5IHJlc3RvcmVkIGZyb20gdGhlIEwxIFZNQ0IgKHZtY2IwMSkgdXBvbiBhIG5lc3RlZCBWTSBleGl0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBidWcgcmVsYXRlZCB0byBoYXJkd2FyZSBzdGF0ZSBtYW5hZ2VtZW50LCBub3QgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBWTUNCIHN0cnVjdHVyZXMgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCBtYW5hZ2VkIGJ5IEtWTSBhbmQgdGhlIGhhcmR3YXJlLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSwgYW5kIHN0YW5kYXJkIHRlc3RpbmcvZnV6emluZyBpcyBzdWZmaWNpZW50LlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MjEsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDU6NDQ6MTguNjg5MzUxNzQ0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHN0YXRlIHJlc3RvcmF0aW9uIGJ1ZyBpbiBLVk0ncyBuZXN0ZWQgU1ZNIGltcGxlbWVudGF0aW9uLCB3aGVyZSB0aGUgTDEgaHlwZXJ2aXNvcidzIGRlYnVnIHJlZ2lzdGVycyAoRFI2IGFuZCBEUjcpIHdlcmUgbm90IGNvcnJlY3RseSByZXN0b3JlZCBmcm9tIHRoZSBMMSBWTUNCICh2bWNiMDEpIHVwb24gYSBuZXN0ZWQgVk0gZXhpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYnVnIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc3RhdGUgbWFuYWdlbWVudCwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGUgVk1DQiBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgbWFuYWdlZCBieSBLVk0gYW5kIHRoZSBoYXJkd2FyZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUsIGFuZCBzdGFuZGFyZCB0ZXN0aW5nL2Z1enppbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHN0YXRlIHJlc3RvcmF0aW9uIGJ1ZyBpbiBLVk0ncyBuZXN0ZWQgU1ZNIGltcGxlbWVudGF0aW9uLCB3aGVyZSB0aGUgTDEgaHlwZXJ2aXNvcidzIGRlYnVnIHJlZ2lzdGVycyAoRFI2IGFuZCBEUjcpIHdlcmUgbm90IGNvcnJlY3RseSByZXN0b3JlZCBmcm9tIHRoZSBMMSBWTUNCICh2bWNiMDEpIHVwb24gYSBuZXN0ZWQgVk0gZXhpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYnVnIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc3RhdGUgbWFuYWdlbWVudCwgbm90IGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlLiBUaGUgVk1DQiBzdHJ1Y3R1cmVzIGFyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgbWFuYWdlZCBieSBLVk0gYW5kIHRoZSBoYXJkd2FyZS4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUsIGFuZCBzdGFuZGFyZCB0ZXN0aW5nL2Z1enppbmcgaXMgc3VmZmljaWVudC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgxsq[1] Phase: Succeeded StartedAt: 2026-08-27 05:44:29 +0000 UTC FinishedAt: 2026-08-27 05:44:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-27 05:44:29 +0000 UTC FinishedAt: 2026-08-27 05:44:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2] Phase: Succeeded StartedAt: 2026-08-27 05:44:29 +0000 UTC FinishedAt: 2026-08-27 06:55:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-27 05:44:29 +0000 UTC FinishedAt: 2026-08-27 06:55:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-27 05:44:29 +0000 UTC FinishedAt: 2026-08-27 05:44:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-27 05:44:29 +0000 UTC FinishedAt: 2026-08-27 05:44:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowfgxsq/series-workflowfgxsq-convert-artifact-477822910/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-27 05:44:39 +0000 UTC FinishedAt: 2026-08-27 06:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-27 05:44:39 +0000 UTC FinishedAt: 2026-08-27 06:00:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a0057ca1-7ce8-452a-98ba-0eb16568403a,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-workflowfgxsq/series-workflowfgxsq-convert-artifact-477822910/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": "85fb3d6c-5c26-4098-bb52-3c7af5a755e3", "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-workflowfgxsq/series-workflowfgxsq-build-action-1039325348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-27 05:44:39 +0000 UTC FinishedAt: 2026-08-27 06:00:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a0057ca1-7ce8-452a-98ba-0eb16568403a,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-workflowfgxsq/series-workflowfgxsq-convert-artifact-477822910/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": "85fb3d6c-5c26-4098-bb52-3c7af5a755e3", "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-workflowfgxsq/series-workflowfgxsq-build-action-1039325348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-27 06:00:35 +0000 UTC FinishedAt: 2026-08-27 06:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-27 06:00:35 +0000 UTC FinishedAt: 2026-08-27 06:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-27 06:00:35 +0000 UTC FinishedAt: 2026-08-27 06:00:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-27 06:00:35 +0000 UTC FinishedAt: 2026-08-27 06:00:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowfgxsq/series-workflowfgxsq-convert-artifact-1365480689/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-27 06:00:45 +0000 UTC FinishedAt: 2026-08-27 06:03:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-27 06:00:45 +0000 UTC FinishedAt: 2026-08-27 06:02:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*85fb3d6c-5c26-4098-bb52-3c7af5a755e3,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-workflowfgxsq/series-workflowfgxsq-build-action-1039325348/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-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-27 06:03:02 +0000 UTC FinishedAt: 2026-08-27 06:03:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-27 06:03:02 +0000 UTC FinishedAt: 2026-08-27 06:03:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-27 06:03:02 +0000 UTC FinishedAt: 2026-08-27 06:19:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-27 06:03:02 +0000 UTC FinishedAt: 2026-08-27 06:19:00 +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:*a0057ca1-7ce8-452a-98ba-0eb16568403a,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-workflowfgxsq/series-workflowfgxsq-convert-artifact-1365480689/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": "aa15a996-e7e0-4e68-8140-9bb70536c8b2", "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-workflowfgxsq/series-workflowfgxsq-build-action-3216585405/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-27 06:03:02 +0000 UTC FinishedAt: 2026-08-27 06:18:50 +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:*a0057ca1-7ce8-452a-98ba-0eb16568403a,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-workflowfgxsq/series-workflowfgxsq-convert-artifact-1365480689/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": "aa15a996-e7e0-4e68-8140-9bb70536c8b2", "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-workflowfgxsq/series-workflowfgxsq-build-action-3216585405/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-27 06:19:00 +0000 UTC FinishedAt: 2026-08-27 06:19:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-27 06:19:00 +0000 UTC FinishedAt: 2026-08-27 06:19:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-27 06:19:00 +0000 UTC FinishedAt: 2026-08-27 06:20:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-27 06:19:00 +0000 UTC FinishedAt: 2026-08-27 06:20:49 +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:*aa15a996-e7e0-4e68-8140-9bb70536c8b2,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-workflowfgxsq/series-workflowfgxsq-build-action-3216585405/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-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-27 06:20:59 +0000 UTC FinishedAt: 2026-08-27 06:55:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-27 06:20:59 +0000 UTC FinishedAt: 2026-08-27 06:55:24 +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":["nested_svm_vmexit"],"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:*85fb3d6c-5c26-4098-bb52-3c7af5a755e3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aa15a996-e7e0-4e68-8140-9bb70536c8b2,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-workflowfgxsq/series-workflowfgxsq-build-action-1039325348/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-workflowfgxsq/series-workflowfgxsq-build-action-3216585405/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-27 06:20:59 +0000 UTC FinishedAt: 2026-08-27 06:21:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-27 06:20:59 +0000 UTC FinishedAt: 2026-08-27 06:21:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"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-workflowfgxsq/series-workflowfgxsq-convert-artifact-568769446/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-27 06:20:59 +0000 UTC FinishedAt: 2026-08-27 06:20:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-27 06:20:59 +0000 UTC FinishedAt: 2026-08-27 06:20:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-27 06:20:59 +0000 UTC FinishedAt: 2026-08-27 06:20:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-27 06:21:09 +0000 UTC FinishedAt: 2026-08-27 06:55:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgxsq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_AMD"],"series_id":"a3ca2def-1926-422d-90ee-f37660e321de","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-27 06:21:09 +0000 UTC FinishedAt: 2026-08-27 06:55:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*85fb3d6c-5c26-4098-bb52-3c7af5a755e3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aa15a996-e7e0-4e68-8140-9bb70536c8b2,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-workflowfgxsq/series-workflowfgxsq-build-action-1039325348/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-workflowfgxsq/series-workflowfgxsq-build-action-3216585405/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-workflowfgxsq/series-workflowfgxsq-convert-artifact-568769446/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,}