Name: series-workflowx9wb4 Phase: Succeeded StartedAt: 2026-07-10 16:15:56 +0000 UTC FinishedAt: 2026-07-10 21:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[0] Phase: Succeeded StartedAt: 2026-07-10 16:15:56 +0000 UTC FinishedAt: 2026-07-10 16:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 16:15:56 +0000 UTC FinishedAt: 2026-07-10 16:50:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MPTCP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MPTCP" ], "series_id": "beb00f80-b93b-4d19-ae73-db56cbbb423d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mptcp_get_options", "mptcp_incoming_options", "get_mapping_status" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01QVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXB0Y3BfZ2V0X29wdGlvbnMmIzM0OywKICAgICYjMzQ7bXB0Y3BfaW5jb21pbmdfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtnZXRfbWFwcGluZ19zdGF0dXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzYjg5NTdmMDgxYzZlZTBkYmNiNTk3NDA2MzI0ODU2OGE3OTU2MzNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTY6NDY6NTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21wdGNwL29wdGlvbnMuYyBiL25ldC9tcHRjcC9vcHRpb25zLmNcbmluZGV4IGRmZjNmZDVkM2I1NTliLi4xYjc0Y2E1YjZhNTk1NiAxMDA2NDRcbi0tLSBhL25ldC9tcHRjcC9vcHRpb25zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tcHRjcC9vcHRpb25zLmNcbkBAIC0xNTcsMTcgJiM0MzsxNTcsMTEgQEAgc3RhdGljIHZvaWQgbXB0Y3BfcGFyc2Vfb3B0aW9uKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHB0ciYjNDM7JiM0Mzs7XG4gXG4gXHRcdGZsYWdzID0gKCpwdHImIzQzOyYjNDM7KSBcdTAwMjYgTVBUQ1BfRFNTX0ZMQUdfTUFTSztcbi1cdFx0bXBfb3B0LVx1MDAzZWRhdGFfZmluID0gKGZsYWdzIFx1MDAyNiBNUFRDUF9EU1NfREFUQV9GSU4pICE9IDA7XG4gXHRcdG1wX29wdC1cdTAwM2Vkc242NCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0RTTjY0KSAhPSAwO1xuIFx0XHRtcF9vcHQtXHUwMDNldXNlX21hcCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0hBU19NQVApICE9IDA7XG4gXHRcdG1wX29wdC1cdTAwM2VhY2s2NCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0FDSzY0KSAhPSAwO1xuIFx0XHRtcF9vcHQtXHUwMDNldXNlX2FjayA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0hBU19BQ0spO1xuIFxuLVx0XHRwcl9kZWJ1ZyhcJiMzNDtkYXRhX2Zpbj0lZCBkc242ND0lZCB1c2VfbWFwPSVkIGFjazY0PSVkIHVzZV9hY2s9JWRcXG5cJiMzNDssXG4tXHRcdFx0IG1wX29wdC1cdTAwM2VkYXRhX2ZpbiwgbXBfb3B0LVx1MDAzZWRzbjY0LFxuLVx0XHRcdCBtcF9vcHQtXHUwMDNldXNlX21hcCwgbXBfb3B0LVx1MDAzZWFjazY0LFxuLVx0XHRcdCBtcF9vcHQtXHUwMDNldXNlX2Fjayk7XG4tXG4gXHRcdGV4cGVjdGVkX29wc2l6ZSA9IFRDUE9MRU5fTVBUQ1BfRFNTX0JBU0U7XG4gXG4gXHRcdGlmIChtcF9vcHQtXHUwMDNldXNlX2Fjaykge1xuQEAgLTE3OCwxMiAmIzQzOzE3MiwxOCBAQCBzdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0fVxuIFxuIFx0XHRpZiAobXBfb3B0LVx1MDAzZXVzZV9tYXApIHtcbiYjNDM7XHRcdFx0bXBfb3B0LVx1MDAzZWRhdGFfZmluID0gKGZsYWdzIFx1MDAyNiBNUFRDUF9EU1NfREFUQV9GSU4pICE9IDA7XG4gXHRcdFx0aWYgKG1wX29wdC1cdTAwM2Vkc242NClcbiBcdFx0XHRcdGV4cGVjdGVkX29wc2l6ZSAmIzQzOz0gVENQT0xFTl9NUFRDUF9EU1NfTUFQNjQ7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0ZXhwZWN0ZWRfb3BzaXplICYjNDM7PSBUQ1BPTEVOX01QVENQX0RTU19NQVAzMjtcbiBcdFx0fVxuIFxuJiM0MztcdFx0cHJfZGVidWcoXCYjMzQ7ZGF0YV9maW49JWQgZHNuNjQ9JWQgdXNlX21hcD0lZCBhY2s2ND0lZCB1c2VfYWNrPSVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgbXBfb3B0LVx1MDAzZWRhdGFfZmluLCBtcF9vcHQtXHUwMDNlZHNuNjQsXG4mIzQzO1x0XHRcdCBtcF9vcHQtXHUwMDNldXNlX21hcCwgbXBfb3B0LVx1MDAzZWFjazY0LFxuJiM0MztcdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9hY2spO1xuJiM0MztcbiBcdFx0LyogQWx3YXlzIHBhcnNlIGFueSBjc3VtIHByZXNlbmNlIGNvbWJpbmF0aW9uLCB3ZSB3aWxsIGVuZm9yY2VcbiBcdFx0ICogUkZDIDg2ODQgU2VjdGlvbiAzLjMuMCBjaGVja3MgbGF0ZXIgaW4gc3ViZmxvd19kYXRhX3JlYWR5XG4gXHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01QVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXB0Y3BfZ2V0X29wdGlvbnMmIzM0OywKICAgICYjMzQ7bXB0Y3BfaW5jb21pbmdfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtnZXRfbWFwcGluZ19zdGF0dXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNiODk1N2YwODFjNmVlMGRiY2I1OTc0MDYzMjQ4NTY4YTc5NTYzM2IKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAxNjo0Njo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tcHRjcC9vcHRpb25zLmMgYi9uZXQvbXB0Y3Avb3B0aW9ucy5jCmluZGV4IGRmZjNmZDVkM2I1NTliLi4xYjc0Y2E1YjZhNTk1NiAxMDA2NDQKLS0tIGEvbmV0L21wdGNwL29wdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbXB0Y3Avb3B0aW9ucy5jCkBAIC0xNTcsMTcgJiM0MzsxNTcsMTEgQEAgc3RhdGljIHZvaWQgbXB0Y3BfcGFyc2Vfb3B0aW9uKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJCXB0ciYjNDM7JiM0Mzs7CiAKIAkJZmxhZ3MgPSAoKnB0ciYjNDM7JiM0MzspICZhbXA7IE1QVENQX0RTU19GTEFHX01BU0s7Ci0JCW1wX29wdC0mZ3Q7ZGF0YV9maW4gPSAoZmxhZ3MgJmFtcDsgTVBUQ1BfRFNTX0RBVEFfRklOKSAhPSAwOwogCQltcF9vcHQtJmd0O2RzbjY0ID0gKGZsYWdzICZhbXA7IE1QVENQX0RTU19EU042NCkgIT0gMDsKIAkJbXBfb3B0LSZndDt1c2VfbWFwID0gKGZsYWdzICZhbXA7IE1QVENQX0RTU19IQVNfTUFQKSAhPSAwOwogCQltcF9vcHQtJmd0O2FjazY0ID0gKGZsYWdzICZhbXA7IE1QVENQX0RTU19BQ0s2NCkgIT0gMDsKIAkJbXBfb3B0LSZndDt1c2VfYWNrID0gKGZsYWdzICZhbXA7IE1QVENQX0RTU19IQVNfQUNLKTsKIAotCQlwcl9kZWJ1ZygmIzM0O2RhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxuJiMzNDssCi0JCQkgbXBfb3B0LSZndDtkYXRhX2ZpbiwgbXBfb3B0LSZndDtkc242NCwKLQkJCSBtcF9vcHQtJmd0O3VzZV9tYXAsIG1wX29wdC0mZ3Q7YWNrNjQsCi0JCQkgbXBfb3B0LSZndDt1c2VfYWNrKTsKLQogCQlleHBlY3RlZF9vcHNpemUgPSBUQ1BPTEVOX01QVENQX0RTU19CQVNFOwogCiAJCWlmIChtcF9vcHQtJmd0O3VzZV9hY2spIHsKQEAgLTE3OCwxMiAmIzQzOzE3MiwxOCBAQCBzdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJfQogCiAJCWlmIChtcF9vcHQtJmd0O3VzZV9tYXApIHsKJiM0MzsJCQltcF9vcHQtJmd0O2RhdGFfZmluID0gKGZsYWdzICZhbXA7IE1QVENQX0RTU19EQVRBX0ZJTikgIT0gMDsKIAkJCWlmIChtcF9vcHQtJmd0O2RzbjY0KQogCQkJCWV4cGVjdGVkX29wc2l6ZSAmIzQzOz0gVENQT0xFTl9NUFRDUF9EU1NfTUFQNjQ7CiAJCQllbHNlCiAJCQkJZXhwZWN0ZWRfb3BzaXplICYjNDM7PSBUQ1BPTEVOX01QVENQX0RTU19NQVAzMjsKIAkJfQogCiYjNDM7CQlwcl9kZWJ1ZygmIzM0O2RhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxuJiMzNDssCiYjNDM7CQkJIG1wX29wdC0mZ3Q7ZGF0YV9maW4sIG1wX29wdC0mZ3Q7ZHNuNjQsCiYjNDM7CQkJIG1wX29wdC0mZ3Q7dXNlX21hcCwgbXBfb3B0LSZndDthY2s2NCwKJiM0MzsJCQkgbXBfb3B0LSZndDt1c2VfYWNrKTsKJiM0MzsKIAkJLyogQWx3YXlzIHBhcnNlIGFueSBjc3VtIHByZXNlbmNlIGNvbWJpbmF0aW9uLCB3ZSB3aWxsIGVuZm9yY2UKIAkJICogUkZDIDg2ODQgU2VjdGlvbiAzLjMuMCBjaGVja3MgbGF0ZXIgaW4gc3ViZmxvd19kYXRhX3JlYWR5CiAJCSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzIwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVBUQ1AgT3B0aW9uIFBhcnNpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgaG93IHdlIGhhbmRsZSBgbXBfb3B0LSZndDtkYXRhX2ZpbmAgd2l0aGluIGBuZXQvbXB0Y3Avb3B0aW9ucy5jYC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGFib3V0IHRoZSBwYXJzaW5nIGxvZ2ljIGluIGBtcHRjcF9wYXJzZV9vcHRpb24oKWAuIEkmIzM5O20gc2VlaW5nIGEgc2lnbmlmaWNhbnQgY2hhbmdlOiBgbXBfb3B0LSZndDtkYXRhX2ZpbmAgaXMgbm93ICpjb25kaXRpb25hbGx5KiBzZXQgYmFzZWQgb24gdGhlIGBtcF9vcHQtJmd0O3VzZV9tYXBgIGZsYWcuCgpTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRoZSBpbnRlbnRpb24gaXMgdG8gb25seSBzZXQgYG1wX29wdC0mZ3Q7ZGF0YV9maW5gIHdoZW4gd2UmIzM5O3JlIGFsc28gdXNpbmcgYSBtYXAuIEluc2lkZSB0aGF0IGBpZiAobXBfb3B0LSZndDt1c2VfbWFwKWAgYmxvY2ssIEkgc2VlIGBtcF9vcHQtJmd0O2RhdGFfZmluYCBnZXRzIHNldCB0byBgKGZsYWdzICZhbXA7IE1QVENQX0RTU19EQVRBX0ZJTikgIT0gMGAuIFNvLCB0aGF0JiMzOTtzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgRklOIGZsYWcgaWYgdGhlIG1hcCBpcyBlbmFibGVkLgoKVGhlIGNydWNpYWwgcGFydCwgYW5kIHRoZSBiaXQgSSBuZWVkIHRvIGRlbHZlIGludG8gbW9yZSwgaXMgd2hhdCBoYXBwZW5zIHdoZW4gYG1wX29wdC0mZ3Q7dXNlX21hcGAgaXMgKmZhbHNlKi4gSXQgbG9va3MgbGlrZSBgbXBfb3B0LSZndDtkYXRhX2ZpbmAgd2lsbCAqbm90KiBiZSBtb2RpZmllZCwgYW5kIHdpbGwgcmV0YWluIGl0cyBpbml0aWFsIHZhbHVlLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBXaGF0JiMzOTtzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgbXBfb3B0YCBsb29rIGxpa2U/IFdoYXQgZG9lcyBgZGF0YV9maW5gIGRlZmF1bHQgdG8/IElzIHRoaXMgaW50ZW50aW9uYWwgYmVoYXZpb3IsIG9yIGEgcG90ZW50aWFsIGlzc3VlPyBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGluaXRpYWxpemF0aW9uIG9mIGBtcHRjcF9wYXJzZV9vcHRpb25gIGFuZCB0aGUgYG1wX29wdGAgc3RydWN0dXJlIGl0c2VsZiB0byBjbGFyaWZ5IHRoaXMuIFRoZXJlIGNvdWxkIGJlIHN1YnRsZSBpbXBsaWNhdGlvbnMgaGVyZSB0aGF0IG5lZWQgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21wdGNwX3BhcnNlX29wdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tcHRjcC9vcHRpb25zLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21wdGNwL29wdGlvbnMuYz0xOD1zdGF0aWMgYm9vbCBtcHRjcF9jYXBfZmxhZ19zaGEyNTYodTggZmxhZ3MpXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0yMi1cbm5ldC9tcHRjcC9vcHRpb25zLmM6MjM6c3RhdGljIHZvaWQgbXB0Y3BfcGFyc2Vfb3B0aW9uKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTI0LVx0XHRcdCAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwdHIsIGludCBvcHNpemUsXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYz0zNTk9dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtMzkzLVx0XHRcdGlmIChvcGNvZGUgPT0gVENQT1BUX01QVENQKVxubmV0L21wdGNwL29wdGlvbnMuYzozOTQ6XHRcdFx0XHRtcHRjcF9wYXJzZV9vcHRpb24oc2tiLCBwdHIsIG9wc2l6ZSwgbXBfb3B0KTtcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzk1LVx0XHRcdHB0ciAmIzQzOz0gb3BzaXplIC0gMjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTI1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBtcHRjcF9nZXRfb3B0aW9uc2AgYW5kIGBtcF9vcHRgIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBob3cgYG1wdGNwX2dldF9vcHRpb25zYCB3b3Jrcywgc3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgYG1wX29wdGAgc3RydWN0dXJlIGlzIGJlaW5nIGluaXRpYWxpemVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGdvdGNoYXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBoYXBwZW5pbmcgdGhlcmUsIGVzcGVjaWFsbHkgYXJvdW5kIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhc3NpZ25tZW50LiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNyaXRpY2FsIE1QVENQIGZ1bmN0aW9uYWxpdHksIHNvIHRoaXMgaW5pdGlhbGl6YXRpb24gbmVlZHMgdG8gYmUgcm9jayBzb2xpZC4gQW55IHN1YnRsZSBidWcgaGVyZSBjb3VsZCBjYXNjYWRlIGludG8gc2VyaW91cyBjb25uZWN0aW9uIGluc3RhYmlsaXR5IG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgYW5kIEkgKmNhbm5vdCogYWxsb3cgdGhhdC4gSSBuZWVkIHRvIHNlZSBpZiBpdCYjMzk7cyBiZWluZyBwcm9wZXJseSBoYW5kbGVkLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyB0aGluZ3MuIEFyZSBhbGwgdGhlIG5lY2Vzc2FyeSBmaWVsZHMgZ2V0dGluZyBzZXQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBhbnkgbWVtb3J5IGxlYWtzPyBUaGlzIHJlcXVpcmVzIGEgY2FyZWZ1bCwgbGluZS1ieS1saW5lIGluc3BlY3Rpb24gdG8gdmVyaWZ5IGNvcnJlY3Qgb3BlcmF0aW9uLiBUaGlzIGlzIGZvdW5kYXRpb25hbDsgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIHJvYnVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttcHRjcF9nZXRfb3B0aW9ucyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tcHRjcC9vcHRpb25zLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21wdGNwL29wdGlvbnMuYz0yMz1zdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTM1OC1cbm5ldC9tcHRjcC9vcHRpb25zLmM6MzU5OnZvaWQgbXB0Y3BfZ2V0X29wdGlvbnMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzYwLVx0XHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTExMzY9Ym9vbCBtcHRjcF9pbmNvbWluZ19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExNjItXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExNjM6XHRtcHRjcF9nZXRfb3B0aW9ucyhza2IsIFx1MDAyNm1wX29wdCk7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExNjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYzNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkNoZWNraW5nIGZvciBaZXJvZWQgTXVsdGlwYXRoIFRDUCBPcHRpb25zKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYG1wX29wdGAgdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4gU2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3Qgcm91dGUgdG8gZmluZCBvdXQgd291bGQgYmUgdG8gaW52ZXN0aWdhdGUgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBpbmNvbWluZyBNdWx0aXBhdGggVENQIG9wdGlvbnMgb3IgcmV0cmlldmVzIGV4aXN0aW5nIG9uZXMuIFNvLCBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgZnVuY3Rpb25zIGBtcHRjcF9pbmNvbWluZ19vcHRpb25zYCBhbmQgYG1wdGNwX2dldF9vcHRpb25zYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlcyB3aGVyZSBgbXBfb3B0YCBtaWdodCBiZSBzZXQgb3IgY2hlY2tlZC4gQnkgZXhhbWluaW5nIHRoZSBjb2RlIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMsIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYW55IGV4cGxpY2l0IGluaXRpYWxpemF0aW9uIG9yIGlmIHRoZSB2YWx1ZSBtaWdodCBiZSBkZWZhdWx0ZWQgdG8gemVybywgb3IgaGF2ZSBpdHMgdmFsdWUgc2V0LiBUaGF0IHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpcyBoYW5kbGVkIGluIHRoaXMgc2NlbmFyaW8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXB0Y3BfaW5jb21pbmdfb3B0aW9ucyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tcHRjcC9vcHRpb25zLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21wdGNwL29wdGlvbnMuYz0xMDU2PXN0YXRpYyB2b2lkIGFja191cGRhdGVfbXNrKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMDgxLVxubmV0L21wdGNwL29wdGlvbnMuYzoxMDgyOlx0LyogdGhpcyBhc3N1bWVzIG1wdGNwX2luY29taW5nX29wdGlvbnMoKSBpcyBpbnZva2VkIGFmdGVyIHRjcF9hY2soKSAqL1xubmV0L21wdGNwL29wdGlvbnMuYy0xMDgzLVx0aWYgKGFmdGVyNjQobXNrLVx1MDAzZXduZF9lbmQsIHNuZF9ueHQpKVxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmM9MTExNT1zdGF0aWMgYm9vbCBhZGRfYWRkcl9obWFjX3ZhbGlkKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMTM1LSAqL1xubmV0L21wdGNwL29wdGlvbnMuYzoxMTM2OmJvb2wgbXB0Y3BfaW5jb21pbmdfb3B0aW9ucyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExMzcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMjkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBtcHRjcF9nZXRfb3B0aW9uc2AgRnVuY3Rpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNUFRDUCBvcHRpb25zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYG1wdGNwX2dldF9vcHRpb25zYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHplcm9pbmcgaW4gb24gd2hldGhlciBvciBub3QgdGhlIGBtcF9vcHRgIHN0cnVjdHVyZSBnZXRzIGV4cGxpY2l0bHkgemVyb2VkIG91dCBkdXJpbmcgdGhpcyBwcm9jZXNzLiBUaGlzIGlzIGEgY3J1Y2lhbCBkZXRhaWwgZm9yIGVuc3VyaW5nIHRoZSBpbnRlZ3JpdHkgYW5kIHByZWRpY3RhYmlsaXR5IG9mIHRoZSBvcHRpb24gZGF0YSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBwcmV2aW91cyBvcHRpb24gc2V0dGluZ3MuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBmdW5jdGlvbiBlc3RhYmxpc2hlcyBhIGNsZWFuIHNsYXRlIGZvciB0aGUgb3B0aW9ucy4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIGNvZGUgYW5kIHZlcmlmeSBpdHMgYmVoYXZpb3Igd2l0aCByZXNwZWN0IHRvIHRoZSBgbXBfb3B0YCB2YXJpYWJsZS4gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgaGVscCBtZSB0cm91Ymxlc2hvb3QgcG90ZW50aWFsIGlzc3VlcyB3aXRoIG9wdGlvbiBoYW5kbGluZyBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IG9yIHJlbmVnb3RpYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21wdGNwL29wdGlvbnMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzU5Olx0dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDM2MDpcdFx0XHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcbiAzNjE6XHR7XG4gMzYyOlx0XHRjb25zdCBzdHJ1Y3QgdGNwaGRyICp0aCA9IHRjcF9oZHIoc2tiKTtcbiAzNjM6XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgKnB0cjtcbiAzNjQ6XHRcdGludCBsZW5ndGg7XG4gMzY1Olx0XG4gMzY2Olx0XHQvKiBFbnN1cmUgdGhhdCBjYXN0aW5nIHRoZSB3aG9sZSBzdGF0dXMgdG8gdTMyIGlzIGVmZmljaWVudCBhbmQgc2FmZSAqL1xuIDM2NzpcdFx0QlVJTERfQlVHX09OKHNpemVvZl9maWVsZChzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCwgc3RhdHVzKSAhPSBzaXplb2YodTMyKSk7XG4gMzY4Olx0XHRCVUlMRF9CVUdfT04oIUlTX0FMSUdORUQob2Zmc2V0b2Yoc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQsIHN0YXR1cyksXG4gMzY5Olx0XHRcdFx0XHQgc2l6ZW9mKHUzMikpKTtcbiAzNzA6XHRcdCoodTMyICopXHUwMDI2bXBfb3B0LVx1MDAzZXN0YXR1cyA9IDA7XG4gMzcxOlx0XG4gMzcyOlx0XHRsZW5ndGggPSAodGgtXHUwMDNlZG9mZiAqIDQpIC0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpO1xuIDM3MzpcdFx0cHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikodGggJiM0MzsgMSk7XG4gMzc0Olx0XG4gMzc1Olx0XHR3aGlsZSAobGVuZ3RoIFx1MDAzZSAwKSB7XG4gMzc2Olx0XHRcdGludCBvcGNvZGUgPSAqcHRyJiM0MzsmIzQzOztcbiAzNzc6XHRcdFx0aW50IG9wc2l6ZTtcbiAzNzg6XHRcbiAzNzk6XHRcdFx0c3dpdGNoIChvcGNvZGUpIHtcbiAzODA6XHRcdFx0Y2FzZSBUQ1BPUFRfRU9MOlxuIDM4MTpcdFx0XHRcdHJldHVybjtcbiAzODI6XHRcdFx0Y2FzZSBUQ1BPUFRfTk9QOlx0LyogUmVmOiBSRkMgNzkzIHNlY3Rpb24gMy4xICovXG4gMzgzOlx0XHRcdFx0bGVuZ3RoLS07XG4gMzg0Olx0XHRcdFx0Y29udGludWU7XG4gMzg1Olx0XHRcdGRlZmF1bHQ6XG4gMzg2Olx0XHRcdFx0aWYgKGxlbmd0aCBcdTAwM2MgMilcbiAzODc6XHRcdFx0XHRcdHJldHVybjtcbiAzODg6XHRcdFx0XHRvcHNpemUgPSAqcHRyJiM0MzsmIzQzOztcbiAzODk6XHRcdFx0XHRpZiAob3BzaXplIFx1MDAzYyAyKSAvKiBcJiMzNDtzaWxseSBvcHRpb25zXCYjMzQ7ICovXG4gMzkwOlx0XHRcdFx0XHRyZXR1cm47XG4gMzkxOlx0XHRcdFx0aWYgKG9wc2l6ZSBcdTAwM2UgbGVuZ3RoKVxuIDM5MjpcdFx0XHRcdFx0cmV0dXJuO1x0LyogZG9uJiMzOTt0IHBhcnNlIHBhcnRpYWwgb3B0aW9ucyAqL1xuIDM5MzpcdFx0XHRcdGlmIChvcGNvZGUgPT0gVENQT1BUX01QVENQKVxuIDM5NDpcdFx0XHRcdFx0bXB0Y3BfcGFyc2Vfb3B0aW9uKHNrYiwgcHRyLCBvcHNpemUsIG1wX29wdCk7XG4gMzk1Olx0XHRcdFx0cHRyICYjNDM7PSBvcHNpemUgLSAyO1xuIDM5NjpcdFx0XHRcdGxlbmd0aCAtPSBvcHNpemU7XG4gMzk3Olx0XHRcdH1cbiAzOTg6XHRcdH1cbiAzOTk6XHR9XG4gNDAwOlx0XG4gNDAxOlx0Ym9vbCBtcHRjcF9zeW5fb3B0aW9ucyhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gNDAyOlx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgKnNpemUsIHN0cnVjdCBtcHRjcF9vdXRfb3B0aW9ucyAqb3B0cylcbiA0MDM6XHR7XG4gNDA0Olx0XHRzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19jb250ZXh0ICpzdWJmbG93ID0gbXB0Y3Bfc3ViZmxvd19jdHgoc2spO1xuIDQwNTpcdFxuIDQwNjpcdFx0Lyogd2Ugd2lsbCB1c2Ugc25kX2lzbiB0byBkZXRlY3QgZmlyc3QgcGt0IFtyZV10cmFuc21pc3Npb25cbiA0MDc6XHRcdCAqIGluIG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnNfbXAoKVxuIDQwODpcdFx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIHRoZSBTdGF0dXMgRmllbGQgUmVzZXQqKgoKQWxyaWdodCwgdGhhdCBgKih1MzIgKikmYW1wO21wX29wdC0mZ3Q7c3RhdHVzID0gMDtgIGxpbmUuLi4gdGhhdCYjMzk7cyBhIGRpcmVjdCBtZW1vcnkgd3JpdGUuIEl0JiMzOTtzIGVzc2VudGlhbGx5IHplcm9pbmcgb3V0IHRoZSBgc3RhdHVzYCBmaWVsZCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhpcyBzeXN0ZW0sIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSByZWFjaGluZyBmb3IgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIG9mIGBtcF9vcHRgLiBJIG5lZWQgdG8gcmVtZW1iZXIgd2hhdCYjMzk7cyBzdG9yZWQgaW4gYHN0YXR1c2AsIGFzIHRoZSBuYW1lIGFsb25lIGRvZXNuJiMzOTt0IGdpdmUgbWUgZW5vdWdoIGNvbnRleHQuIFdoYXQgYml0cyByZXByZXNlbnQgd2hhdCwgd2hhdCB0aGUgdHlwaWNhbCB2YWx1ZXMgYXJlLCBhbmQgd2hhdCB0aGUgdmFsaWQgcmFuZ2UgaXMuIFVuZGVyc3RhbmRpbmcgdGhlIGJpdHMgaXMga2V5LiBUaGlzIGNvdWxkIGJlIGEgc2ltcGxlIGluaXRpYWxpemF0aW9uLCBhIGNsZWFyLWRvd24gYmVmb3JlIGEgdGFzaywgb3IgcGVyaGFwcyBhIHJlc2V0IGFmdGVyIHNvbWUgZXJyb3Igc3RhdGUuIFNvIG1hbnkgcG9zc2liaWxpdGllcy4gVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgc3RhdHVzYCBmaWVsZCBkZWZpbml0aW9uIHRvIGFzY2VydGFpbiB3aGF0IGluZm9ybWF0aW9uIHRoYXQgcGllY2Ugb2YgY29kZSBpcyBhZmZlY3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21wdGNwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbXB0Y3Avb3B0aW9ucy5jPTIzPXN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L21wdGNwL29wdGlvbnMuYy0yNC1cdFx0XHQgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcHRyLCBpbnQgb3BzaXplLFxubmV0L21wdGNwL29wdGlvbnMuYzoyNTpcdFx0XHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcbm5ldC9tcHRjcC9vcHRpb25zLmMtMjYte1xuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmM9MzU5PXZvaWQgbXB0Y3BfZ2V0X29wdGlvbnMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9tcHRjcC9vcHRpb25zLmM6MzYwOlx0XHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzYxLXtcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTM2Ni1cdC8qIEVuc3VyZSB0aGF0IGNhc3RpbmcgdGhlIHdob2xlIHN0YXR1cyB0byB1MzIgaXMgZWZmaWNpZW50IGFuZCBzYWZlICovXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjM2NzpcdEJVSUxEX0JVR19PTihzaXplb2ZfZmllbGQoc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQsIHN0YXR1cykgIT0gc2l6ZW9mKHUzMikpO1xubmV0L21wdGNwL29wdGlvbnMuYzozNjg6XHRCVUlMRF9CVUdfT04oIUlTX0FMSUdORUQob2Zmc2V0b2Yoc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQsIHN0YXR1cyksXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTM2OS1cdFx0XHRcdCBzaXplb2YodTMyKSkpO1xuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmM9OTE1PXN0YXRpYyBib29sIGNoZWNrX2Z1bGx5X2VzdGFibGlzaGVkKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssIHN0cnVjdCBzb2NrICpzc2ssXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy05MTctXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9tcHRjcC9vcHRpb25zLmM6OTE4Olx0XHRcdFx0ICAgIHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkICptcF9vcHQpXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTkxOS17XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYz0xMDU2PXN0YXRpYyB2b2lkIGFja191cGRhdGVfbXNrKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTEwNTctXHRcdFx0ICAgc3RydWN0IHNvY2sgKnNzayxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTA1ODpcdFx0XHQgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxubmV0L21wdGNwL29wdGlvbnMuYy0xMDU5LXtcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTExMTU9c3RhdGljIGJvb2wgYWRkX2FkZHJfaG1hY192YWxpZChzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxubmV0L21wdGNwL29wdGlvbnMuYzoxMTE2Olx0XHRcdFx0c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTExNy17XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYz0xMTM2PWJvb2wgbXB0Y3BfaW5jb21pbmdfb3B0aW9ucyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMTM5LVx0c3RydWN0IG1wdGNwX3NvY2sgKm1zayA9IG1wdGNwX3NrKHN1YmZsb3ctXHUwMDNlY29ubik7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExNDA6XHRzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCBtcF9vcHQ7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExNDEtXHRzdHJ1Y3QgbXB0Y3BfZXh0ICptcGV4dDtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0zNTUzPXN0cnVjdCBzb2NrICptcHRjcF9za19jbG9uZV9pbml0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjM1NTQ6XHRcdFx0XHQgY29uc3Qgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdCxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTM1NTUtXHRcdFx0XHQgc3RydWN0IHNvY2sgKnNzayxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD0xMzg9c3RhdGljIGlubGluZSBib29sIGJlZm9yZTY0KF9fdTY0IHNlcTEsIF9fdTY0IHNlcTIpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmgtMTQ0LVxubmV0L21wdGNwL3Byb3RvY29sLmg6MTQ1OnN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIHtcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTE0Ni1cdHU2NFx0c25kcl9rZXk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmg9ODA4PXZvaWQgX19tcHRjcF9zdWJmbG93X2Z1bGx5X2VzdGFibGlzaGVkKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC04MDktXHRcdFx0XHQgICAgICAgc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjgxMDpcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KTtcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTgxMS1ib29sIF9fbXB0Y3BfcmV0cmFuc21pdF9wZW5kaW5nX2RhdGEoc3RydWN0IHNvY2sgKnNrKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05MTg9c3RydWN0IHNvY2sgKm1wdGNwX3NrX2Nsb25lX2luaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxubmV0L21wdGNwL3Byb3RvY29sLmg6OTE5Olx0XHRcdFx0IGNvbnN0IHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkICptcF9vcHQsXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC05MjAtXHRcdFx0XHQgc3RydWN0IHNvY2sgKnNzayxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05MjI9dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L21wdGNwL3Byb3RvY29sLmg6OTIzOlx0XHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdCk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC05MjQtXG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYz0xNDc9c3RhdGljIGludCBzdWJmbG93X2NoZWNrX3JlcShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYy0xNTItXHRzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19yZXF1ZXN0X3NvY2sgKnN1YmZsb3dfcmVxID0gbXB0Y3Bfc3ViZmxvd19yc2socmVxKTtcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTUzOlx0c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgbXBfb3B0O1xubmV0L21wdGNwL3N1YmZsb3cuYy0xNTQtXHRib29sIG9wdF9tcF9jYXBhYmxlLCBvcHRfbXBfam9pbjtcbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTI2NT1pbnQgbXB0Y3Bfc3ViZmxvd19pbml0X2Nvb2tpZV9yZXEoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmMtMjcwLVx0c3RydWN0IG1wdGNwX3N1YmZsb3dfcmVxdWVzdF9zb2NrICpzdWJmbG93X3JlcSA9IG1wdGNwX3N1YmZsb3dfcnNrKHJlcSk7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjI3MTpcdHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIG1wX29wdDtcbm5ldC9tcHRjcC9zdWJmbG93LmMtMjcyLVx0Ym9vbCBvcHRfbXBfY2FwYWJsZSwgb3B0X21wX2pvaW47XG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYz00Nzc9c3RhdGljIHZvaWQgc3ViZmxvd19zZXRfcmVtb3RlX2tleShzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxubmV0L21wdGNwL3N1YmZsb3cuYy00NzgtXHRcdFx0XHQgICBzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19jb250ZXh0ICpzdWJmbG93LFxubmV0L21wdGNwL3N1YmZsb3cuYzo0Nzk6XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxubmV0L21wdGNwL3N1YmZsb3cuYy00ODAte1xuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmM9NTAxPXN0YXRpYyB2b2lkIG1wdGNwX3Byb3BhZ2F0ZV9zdGF0ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpzc2ssXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTUwMi1cdFx0XHRcdCAgc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcbm5ldC9tcHRjcC9zdWJmbG93LmM6NTAzOlx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxubmV0L21wdGNwL3N1YmZsb3cuYy01MDQte1xuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmM9NTI2PXN0YXRpYyB2b2lkIHN1YmZsb3dfZmluaXNoX2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmMtNTI4LVx0c3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyA9IG1wdGNwX3N1YmZsb3dfY3R4KHNrKTtcbm5ldC9tcHRjcC9zdWJmbG93LmM6NTI5Olx0c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgbXBfb3B0O1xubmV0L21wdGNwL3N1YmZsb3cuYy01MzAtXHRzdHJ1Y3Qgc29jayAqcGFyZW50ID0gc3ViZmxvdy1cdTAwM2Vjb25uO1xuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmM9NzUzPXN0YXRpYyBib29sIHN1YmZsb3dfaG1hY192YWxpZChjb25zdCBzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19yZXF1ZXN0X3NvY2sgKnN1YmZsb3dfcmVxLFxubmV0L21wdGNwL3N1YmZsb3cuYzo3NTQ6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkICptcF9vcHQpXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTc1NS17XG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYz03OTc9dm9pZCBfX21wdGNwX3N1YmZsb3dfZnVsbHlfZXN0YWJsaXNoZWQoc3RydWN0IG1wdGNwX3NvY2sgKm1zayxcbm5ldC9tcHRjcC9zdWJmbG93LmMtNzk4LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3csXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjc5OTpcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxubmV0L21wdGNwL3N1YmZsb3cuYy04MDAte1xuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmM9ODA2PXN0YXRpYyBzdHJ1Y3Qgc29jayAqc3ViZmxvd19zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTgxNi1cdHN0cnVjdCBtcHRjcF9zdWJmbG93X3JlcXVlc3Rfc29jayAqc3ViZmxvd19yZXE7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjgxNzpcdHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIG1wX29wdDtcbm5ldC9tcHRjcC9zdWJmbG93LmMtODE4LVx0Ym9vbCBmYWxsYmFjaywgZmFsbGJhY2tfaXNfZmF0YWw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NzUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGJpdCBvZiBjb2RlOgoKKipBbmFseXppbmcgdGhlIGBtcF9vcHQtJmd0O3N0YXR1c2AgRmllbGQqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gYG1wX29wdC0mZ3Q7c3RhdHVzYC4uLiBpcyB0aGF0IGEgYml0ZmllbGQ/IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdC4gTGV0IG1lIGp1bXAgb3ZlciB0byB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWRgLiBJIG5lZWQgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBmaWVsZCBpcyBhY2N1cmF0ZSBiZWZvcmUgSSBwcm9jZWVkLiBUaGlzIGNvdWxkIGJlIGNydWNpYWwgdG8gaG93IEkgaW50ZXJwcmV0IHRoZSBvcHRpb24gZGF0YS4gR290dGEgZ2V0IHRoZSBsb3ctZG93biBvbiB0aGUgYml0IGFzc2lnbm1lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tcHRjcC9wcm90b2NvbC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDU6XHRzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCB7XG4gMTQ2Olx0XHR1NjRcdHNuZHJfa2V5O1xuIDE0NzpcdFx0dTY0XHRyY3ZyX2tleTtcbiAxNDg6XHRcdHU2NFx0ZGF0YV9hY2s7XG4gMTQ5Olx0XHR1NjRcdGRhdGFfc2VxO1xuIDE1MDpcdFx0dTMyXHRzdWJmbG93X3NlcTtcbiAxNTE6XHRcdHUxNlx0ZGF0YV9sZW47XG4gMTUyOlx0XHRfX3N1bTE2XHRjc3VtO1xuIDE1MzpcdFx0c3RydWN0X2dyb3VwKHN0YXR1cyxcbiAxNTQ6XHRcdFx0dTE2IHN1Ym9wdGlvbnM7XG4gMTU1Olx0XHRcdHUxNiB1c2VfbWFwOjEsXG4gMTU2Olx0XHRcdCAgICBkc242NDoxLFxuIDE1NzpcdFx0XHQgICAgZGF0YV9maW46MSxcbiAxNTg6XHRcdFx0ICAgIHVzZV9hY2s6MSxcbiAxNTk6XHRcdFx0ICAgIGFjazY0OjEsXG4gMTYwOlx0XHRcdCAgICBtcGNfbWFwOjEsXG4gMTYxOlx0XHRcdCAgICByZXNldF9yZWFzb246NCxcbiAxNjI6XHRcdFx0ICAgIHJlc2V0X3RyYW5zaWVudDoxLFxuIDE2MzpcdFx0XHQgICAgZWNobzoxLFxuIDE2NDpcdFx0XHQgICAgYmFja3VwOjEsXG4gMTY1Olx0XHRcdCAgICBkZW55X2pvaW5faWQwOjEsXG4gMTY2Olx0XHRcdCAgICBfX3VudXNlZDoyO1xuIDE2NzpcdFx0KTtcbiAxNjg6XHRcdHU4XHRqb2luX2lkO1xuIDE2OTpcdFx0dTMyXHR0b2tlbjtcbiAxNzA6XHRcdHUzMlx0bm9uY2U7XG4gMTcxOlx0XHR1NjRcdHRobWFjO1xuIDE3MjpcdFx0dThcdGhtYWNbTVBUQ1BPUFRfSE1BQ19MRU5dO1xuIDE3MzpcdFx0c3RydWN0IG1wdGNwX2FkZHJfaW5mbyBhZGRyO1xuIDE3NDpcdFx0c3RydWN0IG1wdGNwX3JtX2xpc3Qgcm1fbGlzdDtcbiAxNzU6XHRcdHU2NFx0YWhtYWM7XG4gMTc2Olx0XHR1NjRcdGZhaWxfc2VxO1xuIDE3NzpcdH07XG4gMTc4Olx0XG4gMTc5Olx0c3RhdGljIGlubGluZSBfX2JlMzIgbXB0Y3Bfb3B0aW9uKHU4IHN1Ym9wdCwgdTggbGVuLCB1OCBuaWIsIHU4IGZpZWxkKVxuIDE4MDpcdHtcbiAxODE6XHRcdHJldHVybiBodG9ubCgoVENQT1BUX01QVENQIFx1MDAzY1x1MDAzYyAyNCkgfCAobGVuIFx1MDAzY1x1MDAzYyAxNikgfCAoc3Vib3B0IFx1MDAzY1x1MDAzYyAxMikgfFxuIDE4MjpcdFx0XHQgICAgICgobmliIFx1MDAyNiAweEYpIFx1MDAzY1x1MDAzYyA4KSB8IGZpZWxkKTtcbiAxODM6XHR9XG4gMTg0Olx0XG4gMTg1Olx0ZW51bSBtcHRjcF9wbV9zdGF0dXMge1xuIDE4NjpcdFx0TVBUQ1BfUE1fQUREX0FERFJfUkVDRUlWRUQsXG4gMTg3Olx0XHRNUFRDUF9QTV9BRERfQUREUl9TRU5EX0FDSyxcbiAxODg6XHRcdE1QVENQX1BNX1JNX0FERFJfUkVDRUlWRUQsXG4gMTg5Olx0XHRNUFRDUF9QTV9FU1RBQkxJU0hFRCxcbiAxOTA6XHRcdE1QVENQX1BNX1NVQkZMT1dfRVNUQUJMSVNIRUQsXG4gMTkxOlx0XHRNUFRDUF9QTV9BTFJFQURZX0VTVEFCTElTSEVELFx0LyogcGVyc2lzdGVudCBzdGF0dXMsIHNldCBhZnRlciBFU1RBQkxJU0hFRCBldmVudCAqL1xuIDE5MjpcdFx0TVBUQ1BfUE1fTVBDX0VORFBPSU5UX0FDQ09VTlRFRCAvKiBwZXJzaXN0ZW50IHN0YXR1cywgc2V0IGFmdGVyIE1QQyBsb2NhbCBhZGRyZXNzIGlzXG4gMTkzOlx0XHRcdFx0XHRcdCAqIGFjY291bnRlZCBpbnQgaWRfYXZhaWxfYml0bWFwXG4gMTk0Olx0XHRcdFx0XHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjYwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGF0YSBGaW4gRmxhZyBpbiBNUFRDUCBEU1MgT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBgc3RhdHVzYCBzdHJ1Y3QgaW4gTVBUQ1AganVtcHMgb3V0IGF0IG1lLiBJIHNlZSB0aGF0IGl0IGJ1bmRsZXMgdmFyaW91cyBmbGFncywgaW5jbHVkaW5nIGBkYXRhX2ZpbmAsIGBkc242NGAsIGB1c2VfbWFwYCwgYGFjazY0YCwgYW5kIGB1c2VfYWNrYC4gIGBtcHRjcF9nZXRfb3B0aW9uc2AgaXMgY3J1Y2lhbCBoZXJlLCBhcyBpdCBpbml0aWFsbHkgemVyb2VzIG91dCB0aGUgZW50aXJlIGBzdGF0dXNgIGZpZWxkLCBtZWFuaW5nIGBkYXRhX2ZpbmAgc3RhcnRzIGFzIGEgY2xlYW4gemVyby4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyB3aXRoaW4gYG1wdGNwX3BhcnNlX29wdGlvbmAuIFByZXZpb3VzbHksIGBkYXRhX2ZpbmAgd2FzIHNldCBkaXJlY3RseSBmcm9tIHRoZSBgZmxhZ3NgIGJ5dGUsIHJlZ2FyZGxlc3Mgb2Ygb3RoZXIgb3B0aW9ucy4gTm93LCBob3dldmVyLCB0aGUgbG9naWMgaXMgc3VidGx5IGFsdGVyZWQuIGBkYXRhX2ZpbmAgaXMgY29uZGl0aW9uYWxseSBzZXQgKm9ubHkqIGlmIGB1c2VfbWFwYCBpcyB0cnVlLiAgVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgc2hpZnQuICBJZiBhIERTUyBvcHRpb24gZG9lc24mIzM5O3QgaW5jbHVkZSBhIG1hcCwgdGhlIGBkYXRhX2ZpbmAgZmxhZyByZW1haW5zIGF0IGl0cyBpbml0aWFsaXplZCB2YWx1ZSBvZiB6ZXJvLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgY2hhbmdlIGluIGJlaGF2aW9yIGFuZCBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCk15IHRoaW5raW5nIGlzIHRoYXQgdGhpcyBjaGFuZ2UgY291bGQgaW50cm9kdWNlIHN1YnRsZSBlZGdlIGNhc2VzLCBzbyBpdCYjMzk7cyB3b3J0aCBwb2tpbmcgYXJvdW5kLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AsIGBtcHRjcF9nZXRfb3B0aW9uc2AsIGFuZCBgbXB0Y3BfcGFyc2Vfb3B0aW9uYCwgZXZlbiB0aG91Z2ggdGhlIGxhdHRlciBpcyBzdGF0aWMsIGFzIEkgY2FuIHN0aWxsIGluY2x1ZGUgaXQgYXMgcGFydCBvZiBteSBmb2N1cyBzZXQuICBJIGFtIGFsc28ga2VlcGluZyBpbiBtaW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSB0aGF0IHdvdWxkIGJlIGFmZmVjdGVkIGJ5IGEgY2hhbmdlIGluIGBkYXRhX2ZpbmAsIHN1Y2ggYXMgYG1wdGNwX3N1YmZsb3dfZGF0YV9hdmFpbGFibGVgLiAgSXQmIzM5O3MgY3J1Y2lhbCB0byB0cmFjZSBob3cgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBzdWJzZXF1ZW50bHkgdXNlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgY29uZGl0aW9uYWwgaW5pdGlhbGl6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhdGFfZmluJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21wdGNwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbXB0Y3Avb3B0aW9ucy5jPTIzPXN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtMTc0LVx0XHRpZiAobXBfb3B0LVx1MDAzZXVzZV9tYXApIHtcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTc1Olx0XHRcdG1wX29wdC1cdTAwM2VkYXRhX2ZpbiA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0RBVEFfRklOKSAhPSAwO1xubmV0L21wdGNwL29wdGlvbnMuYy0xNzYtXHRcdFx0aWYgKG1wX29wdC1cdTAwM2Vkc242NClcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTE4MS1cbm5ldC9tcHRjcC9vcHRpb25zLmM6MTgyOlx0XHRwcl9kZWJ1ZyhcJiMzNDtkYXRhX2Zpbj0lZCBkc242ND0lZCB1c2VfbWFwPSVkIGFjazY0PSVkIHVzZV9hY2s9JWRcXG5cJiMzNDssXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjE4MzpcdFx0XHQgbXBfb3B0LVx1MDAzZWRhdGFfZmluLCBtcF9vcHQtXHUwMDNlZHNuNjQsXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTE4NC1cdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9tYXAsIG1wX29wdC1cdTAwM2VhY2s2NCxcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTQ0OT1zdGF0aWMgYm9vbCBtcHRjcF9lc3RhYmxpc2hlZF9vcHRpb25zX21wKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9tcHRjcC9vcHRpb25zLmM6NDUwOlx0XHRcdFx0XHQgYm9vbCBzbmRfZGF0YV9maW5fZW5hYmxlLCBpbnQgKnNpemUsXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTQ1MS1cdFx0XHRcdFx0IHN0cnVjdCBtcHRjcF9vdXRfb3B0aW9ucyAqb3B0cylcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTQ2OC1cdC8qIE1QQy9NUEogbmVlZGVkIG9ubHkgb24gM3JkIGFjayBwYWNrZXQsIERBVEFfRklOIGFuZCBUQ1Agc2h1dGRvd24gdGFrZSBwcmVjZWRlbmNlICovXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjQ2OTpcdGlmIChSRUFEX09OQ0Uoc3ViZmxvdy1cdTAwM2VmdWxseV9lc3RhYmxpc2hlZCkgfHwgc25kX2RhdGFfZmluX2VuYWJsZSB8fFxubmV0L21wdGNwL29wdGlvbnMuYy00NzAtXHQgICAgc3ViZmxvdy1cdTAwM2VzbmRfaXNuICE9IFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VzZXEgfHxcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTUzMi1cbm5ldC9tcHRjcC9vcHRpb25zLmM6NTMzOnN0YXRpYyB2b2lkIG1wdGNwX3dyaXRlX2RhdGFfZmluKHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3csXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTUzNC1cdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbXB0Y3BfZXh0ICpleHQpXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy01MzgtXHQgKi9cbm5ldC9tcHRjcC9vcHRpb25zLmM6NTM5Olx0dTY0IGRhdGFfZmluX3R4X3NlcSA9IFJFQURfT05DRShtcHRjcF9zayhzdWJmbG93LVx1MDAzZWNvbm4pLVx1MDAzZXdyaXRlX3NlcSkgLSAxO1xubmV0L21wdGNwL29wdGlvbnMuYy01NDAtXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy01NDQtXHRcdCAqL1xubmV0L21wdGNwL29wdGlvbnMuYzo1NDU6XHRcdGV4dC1cdTAwM2VkYXRhX2ZpbiA9IDE7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU0Ni1cdFx0ZXh0LVx1MDAzZXVzZV9tYXAgPSAxO1xubmV0L21wdGNwL29wdGlvbnMuYy01NDctXHRcdGV4dC1cdTAwM2Vkc242NCA9IDE7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU0ODpcdFx0ZXh0LVx1MDAzZWRhdGFfc2VxID0gZGF0YV9maW5fdHhfc2VxO1xubmV0L21wdGNwL29wdGlvbnMuYy01NDktXHRcdGV4dC1cdTAwM2VzdWJmbG93X3NlcSA9IDA7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU1MC1cdFx0ZXh0LVx1MDAzZWRhdGFfbGVuID0gMTtcbm5ldC9tcHRjcC9vcHRpb25zLmM6NTUxOlx0fSBlbHNlIGlmIChleHQtXHUwMDNlZGF0YV9zZXEgJiM0MzsgZXh0LVx1MDAzZWRhdGFfbGVuID09IGRhdGFfZmluX3R4X3NlcSkge1xubmV0L21wdGNwL29wdGlvbnMuYy01NTItXHRcdC8qIElmIHRoZXJlJiMzOTtzIGFuIGV4aXN0aW5nIERTUyBtYXBwaW5nIGFuZCBpdCBpcyB0aGVcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU1NS1cdFx0ICovXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU1NjpcdFx0ZXh0LVx1MDAzZWRhdGFfZmluID0gMTtcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTU3LVx0XHRleHQtXHUwMDNlZGF0YV9sZW4mIzQzOyYjNDM7O1xuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmM9NTYxPXN0YXRpYyBib29sIG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnNfZHNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9tcHRjcC9vcHRpb25zLmM6NTYyOlx0XHRcdFx0XHQgIGJvb2wgc25kX2RhdGFfZmluX2VuYWJsZSwgaW50ICpzaXplLFxubmV0L21wdGNwL29wdGlvbnMuYy01NjMtXHRcdFx0XHRcdCAgc3RydWN0IG1wdGNwX291dF9vcHRpb25zICpvcHRzKVxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtNTgwLVxubmV0L21wdGNwL29wdGlvbnMuYzo1ODE6XHRpZiAoIXNrYiB8fCAobXBleHQgXHUwMDI2XHUwMDI2IG1wZXh0LVx1MDAzZXVzZV9tYXApIHx8IHNuZF9kYXRhX2Zpbl9lbmFibGUpIHtcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTgyLVx0XHR1bnNpZ25lZCBpbnQgbWFwX3NpemUgPSBUQ1BPTEVOX01QVENQX0RTU19CQVNFICYjNDM7IFRDUE9MRU5fTVBUQ1BfRFNTX01BUDY0O1xuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtNTkxLVx0XHRkc3Nfc2l6ZSA9IG1hcF9zaXplO1xubmV0L21wdGNwL29wdGlvbnMuYzo1OTI6XHRcdGlmIChza2IgXHUwMDI2XHUwMDI2IHNuZF9kYXRhX2Zpbl9lbmFibGUpXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU5MzpcdFx0XHRtcHRjcF93cml0ZV9kYXRhX2ZpbihzdWJmbG93LCBza2IsIFx1MDAyNm9wdHMtXHUwMDNlZXh0X2NvcHkpO1xubmV0L21wdGNwL29wdGlvbnMuYy01OTQtXHRcdG9wdHMtXHUwMDNlc3Vib3B0aW9ucyA9IE9QVElPTl9NUFRDUF9EU1M7XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYz04MTA9aW50IG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtODE2LVx0aW50IHRvdGFsX3NpemUgPSAwO1xubmV0L21wdGNwL29wdGlvbnMuYzo4MTc6XHRib29sIHNuZF9kYXRhX2Zpbjtcbm5ldC9tcHRjcC9vcHRpb25zLmMtODE4LVx0Ym9vbCByZXQgPSBmYWxzZTtcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTg0Mi1cbm5ldC9tcHRjcC9vcHRpb25zLmM6ODQzOlx0c25kX2RhdGFfZmluID0gbXB0Y3BfZGF0YV9maW5fZW5hYmxlZChtc2spO1xubmV0L21wdGNwL29wdGlvbnMuYzo4NDQ6XHRpZiAobXB0Y3BfZXN0YWJsaXNoZWRfb3B0aW9uc19tcChzaywgc2tiLCBzbmRfZGF0YV9maW4sIFx1MDAyNm9wdF9zaXplLCBvcHRzKSlcbm5ldC9tcHRjcC9vcHRpb25zLmMtODQ1LVx0XHRyZXQgPSB0cnVlO1xubmV0L21wdGNwL29wdGlvbnMuYzo4NDY6XHRlbHNlIGlmIChtcHRjcF9lc3RhYmxpc2hlZF9vcHRpb25zX2Rzcyhzaywgc2tiLCBzbmRfZGF0YV9maW4sIFx1MDAyNm9wdF9zaXplLCBvcHRzKSkge1xubmV0L21wdGNwL29wdGlvbnMuYy04NDctXHRcdGludCBtcF9mYWlsX3NpemU7XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYz0xMDU2PXN0YXRpYyB2b2lkIGFja191cGRhdGVfbXNrKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMDk3LVxubmV0L21wdGNwL29wdGlvbnMuYzoxMDk4OmJvb2wgbXB0Y3BfdXBkYXRlX3Jjdl9kYXRhX2ZpbihzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLCB1NjQgZGF0YV9maW5fc2VxLCBib29sIHVzZV82NGJpdClcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTA5OS17XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMTA0LVx0ICovXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExMDU6XHRpZiAoUkVBRF9PTkNFKG1zay1cdTAwM2VyY3ZfZGF0YV9maW4pKVxubmV0L21wdGNwL29wdGlvbnMuYy0xMTA2LVx0XHRyZXR1cm4gZmFsc2U7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExMDctXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExMDg6XHRXUklURV9PTkNFKG1zay1cdTAwM2VyY3ZfZGF0YV9maW5fc2VxLFxubmV0L21wdGNwL29wdGlvbnMuYzoxMTA5Olx0XHQgICBtcHRjcF9leHBhbmRfc2VxKFJFQURfT05DRShtc2stXHUwMDNlYWNrX3NlcSksIGRhdGFfZmluX3NlcSwgdXNlXzY0Yml0KSk7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExMTA6XHRXUklURV9PTkNFKG1zay1cdTAwM2VyY3ZfZGF0YV9maW4sIDEpO1xubmV0L21wdGNwL29wdGlvbnMuYy0xMTExLVxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmM9MTEzNj1ib29sIG1wdGNwX2luY29taW5nX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtMTIyOS1cdGlmIChUQ1BfU0tCX0NCKHNrYiktXHUwMDNlc2VxID09IFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VlbmRfc2VxKSB7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjEyMzA6XHRcdGlmIChtcF9vcHQuZGF0YV9maW4gXHUwMDI2XHUwMDI2IG1wX29wdC5kYXRhX2xlbiA9PSAxIFx1MDAyNlx1MDAyNlxubmV0L21wdGNwL29wdGlvbnMuYzoxMjMxOlx0XHQgICAgbXB0Y3BfdXBkYXRlX3Jjdl9kYXRhX2Zpbihtc2ssIG1wX29wdC5kYXRhX3NlcSwgbXBfb3B0LmRzbjY0KSlcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTIzMi1cdFx0XHRtcHRjcF9zY2hlZHVsZV93b3JrKChzdHJ1Y3Qgc29jayAqKW1zayk7XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMjUzLVx0XHRcdG1wZXh0LVx1MDAzZW1wY19tYXAgPSAxO1xubmV0L21wdGNwL29wdGlvbnMuYzoxMjU0Olx0XHRcdG1wZXh0LVx1MDAzZWRhdGFfZmluID0gMDtcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTI1NS1cdFx0fSBlbHNlIHtcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTEyNTgtXHRcdFx0bXBleHQtXHUwMDNlZHNuNjQgPSBtcF9vcHQuZHNuNjQ7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjEyNTk6XHRcdFx0bXBleHQtXHUwMDNlZGF0YV9maW4gPSBtcF9vcHQuZGF0YV9maW47XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTEyNjAtXHRcdH1cbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTEzODQ9dm9pZCBtcHRjcF93cml0ZV9vcHRpb25zKHN0cnVjdCB0Y3BoZHIgKnRoLCBfX2JlMzIgKnB0ciwgc3RydWN0IHRjcF9zb2NrICp0cCxcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTE0MzMtXHRcdFx0ZmxhZ3MgfD0gTVBUQ1BfRFNTX0hBU19NQVAgfCBNUFRDUF9EU1NfRFNONjQ7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjE0MzQ6XHRcdFx0aWYgKG1wZXh0LVx1MDAzZWRhdGFfZmluKVxubmV0L21wdGNwL29wdGlvbnMuYy0xNDM1LVx0XHRcdFx0ZmxhZ3MgfD0gTVBUQ1BfRFNTX0RBVEFfRklOO1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTUwPXN0YXRpYyB2b2lkIF9fbXB0Y3BfZGVzdHJveV9zb2NrKHN0cnVjdCBzb2NrICpzayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo1MTpzdGF0aWMgdm9pZCBtcHRjcF9jaGVja19zZW5kX2RhdGFfZmluKHN0cnVjdCBzb2NrICpzayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy01Mi1cbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz00NDE9c3RhdGljIHZvaWQgbXB0Y3Bfc2h1dGRvd25fc3ViZmxvd3Moc3RydWN0IG1wdGNwX3NvY2sgKm1zaylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NTUtLyogY2FsbGVkIHVuZGVyIHRoZSBtc2sgc29ja2V0IGxvY2sgKi9cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ1NjpzdGF0aWMgYm9vbCBtcHRjcF9wZW5kaW5nX2RhdGFfZmluX2FjayhzdHJ1Y3Qgc29jayAqc2spXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NTcte1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ2NC1cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ2NTpzdGF0aWMgdm9pZCBtcHRjcF9jaGVja19kYXRhX2Zpbl9hY2soc3RydWN0IHNvY2sgKnNrKVxubmV0L21wdGNwL3Byb3RvY29sLmMtNDY2LXtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NjktXHQvKiBMb29rIGZvciBhbiBhY2tub3dsZWRnZWQgREFUQV9GSU4gKi9cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ3MDpcdGlmIChtcHRjcF9wZW5kaW5nX2RhdGFfZmluX2FjayhzaykpIHtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ3MTpcdFx0V1JJVEVfT05DRShtc2stXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSwgMCk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NzItXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtNDg4LS8qIGNhbiBiZSBjYWxsZWQgd2l0aCBubyBsb2NrIGFjcXVpcmVkICovXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0ODk6c3RhdGljIGJvb2wgbXB0Y3BfcGVuZGluZ19kYXRhX2ZpbihzdHJ1Y3Qgc29jayAqc2ssIHU2NCAqc2VxKVxubmV0L21wdGNwL3Byb3RvY29sLmMtNDkwLXtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00OTItXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0OTM6XHRpZiAoUkVBRF9PTkNFKG1zay1cdTAwM2VyY3ZfZGF0YV9maW4pIFx1MDAyNlx1MDAyNlxubmV0L21wdGNwL3Byb3RvY29sLmMtNDk0LVx0ICAgICgoMSBcdTAwM2NcdTAwM2MgaW5ldF9za19zdGF0ZV9sb2FkKHNrKSkgXHUwMDI2XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00OTUtXHQgICAgIChUQ1BGX0VTVEFCTElTSEVEIHwgVENQRl9GSU5fV0FJVDEgfCBUQ1BGX0ZJTl9XQUlUMikpKSB7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0OTY6XHRcdHU2NCByY3ZfZGF0YV9maW5fc2VxID0gUkVBRF9PTkNFKG1zay1cdTAwM2VyY3ZfZGF0YV9maW5fc2VxKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ5Ny1cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ5ODpcdFx0aWYgKFJFQURfT05DRShtc2stXHUwMDNlYWNrX3NlcSkgPT0gcmN2X2RhdGFfZmluX3NlcSkge1xubmV0L21wdGNwL3Byb3RvY29sLmMtNDk5LVx0XHRcdGlmIChzZXEpXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo1MDA6XHRcdFx0XHQqc2VxID0gcmN2X2RhdGFfZmluX3NlcTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTUwMS1cbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz01OTU9c3RhdGljIHZvaWQgbXB0Y3BfY2xlYW51cF9yYnVmKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssIGludCBjb3BpZWQpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtNjEzLVxubmV0L21wdGNwL3Byb3RvY29sLmM6NjE0OnN0YXRpYyB2b2lkIG1wdGNwX2NoZWNrX2RhdGFfZmluKHN0cnVjdCBzb2NrICpzaylcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYxNS17XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MTYtXHRzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrID0gbXB0Y3Bfc2soc2spO1xubmV0L21wdGNwL3Byb3RvY29sLmM6NjE3Olx0dTY0IHJjdl9kYXRhX2Zpbl9zZXE7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MTgtXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtNjIwLVx0ICogb2YgdGhlIGNvbm5lY3Rpb24gaXMgaW4gRVNUQUJMSVNIRUQsIEZJTl9XQUlUMSwgb3IgRklOX1dBSVQyLlxubmV0L21wdGNwL3Byb3RvY29sLmM6NjIxOlx0ICogbXNrLVx1MDAzZXJjdl9kYXRhX2ZpbiB3YXMgc2V0IHdoZW4gcGFyc2luZyB0aGUgaW5jb21pbmcgb3B0aW9uc1xubmV0L21wdGNwL3Byb3RvY29sLmMtNjIyLVx0ICogYXQgdGhlIHN1YmZsb3cgbGV2ZWwgYW5kIHRoZSBtc2sgbG9jayB3YXMgbm90IGhlbGQsIHNvIHRoaXNcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MzEtXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo2MzI6XHRpZiAobXB0Y3BfcGVuZGluZ19kYXRhX2ZpbihzaywgXHUwMDI2cmN2X2RhdGFfZmluX3NlcSkpIHtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYzMy1cdFx0V1JJVEVfT05DRShtc2stXHUwMDNlYWNrX3NlcSwgbXNrLVx1MDAzZWFja19zZXEgJiM0MzsgMSk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo2MzQ6XHRcdFdSSVRFX09OQ0UobXNrLVx1MDAzZXJjdl9kYXRhX2ZpbiwgMCk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MzUtXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9ODc2PXN0YXRpYyBib29sIG1vdmVfc2tic190b19tc2soc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgc3RydWN0IHNvY2sgKnNzaylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy04OTAtXHQgKi9cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjg5MTpcdGlmIChtcHRjcF9wZW5kaW5nX2RhdGFfZmluKHNrLCBOVUxMKSlcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTg5Mi1cdFx0bXB0Y3Bfc2NoZWR1bGVfd29yayhzayk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9MTA3Mj1zdGF0aWMgdm9pZCBfX21wdGNwX2NsZWFuX3VuYShzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMTEyMC1cdGlmIChzbmRfdW5hID09IG1zay1cdTAwM2VzbmRfbnh0IFx1MDAyNlx1MDAyNiBzbmRfdW5hID09IG1zay1cdTAwM2V3cml0ZV9zZXEpIHtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjExMjE6XHRcdGlmIChtcHRjcF9ydHhfdGltZXJfcGVuZGluZyhzaykgXHUwMDI2XHUwMDI2ICFtcHRjcF9kYXRhX2Zpbl9lbmFibGVkKG1zaykpXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTIyLVx0XHRcdG1wdGNwX3N0b3BfcnR4X3RpbWVyKHNrKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTI2LVxubmV0L21wdGNwL3Byb3RvY29sLmM6MTEyNzpcdGlmIChtcHRjcF9wZW5kaW5nX2RhdGFfZmluX2FjayhzaykpXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTI4LVx0XHRtcHRjcF9zY2hlZHVsZV93b3JrKHNrKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0xNjY3PXZvaWQgX19tcHRjcF9wdXNoX3BlbmRpbmcoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMTczMC1cdFx0XHRtcHRjcF9yZXNldF9ydHhfdGltZXIoc2spO1xubmV0L21wdGNwL3Byb3RvY29sLmM6MTczMTpcdFx0bXB0Y3BfY2hlY2tfc2VuZF9kYXRhX2Zpbihzayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xNzMyLVx0fVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTE3MzU9c3RhdGljIHZvaWQgX19tcHRjcF9zdWJmbG93X3B1c2hfcGVuZGluZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpzc2ssIGJvb2wgZmlyc3QpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMTc5NS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjE3OTY6XHRcdGlmIChtc2stXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSBcdTAwMjZcdTAwMjZcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTE3OTctXHRcdCAgICBtc2stXHUwMDNlc25kX254dCAmIzQzOyAxID09IG1zay1cdTAwM2V3cml0ZV9zZXEpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9MjIwNj1zdGF0aWMgYm9vbCBfX21wdGNwX21vdmVfc2ticyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBsaXN0X2hlYWQgKnNrYnMsIHUzMiAqZGVsdGEpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMjIzMC1cdGlmIChtb3ZlZClcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjIyMzE6XHRcdG1wdGNwX2NoZWNrX2RhdGFfZmluKChzdHJ1Y3Qgc29jayAqKW1zayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yMjMyLVx0cmV0dXJuIG1vdmVkO1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTI3ODM9c3RhdGljIHZvaWQgX19tcHRjcF9yZXRyYW5zKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yNzk4LVx0aWYgKCFkZnJhZykge1xubmV0L21wdGNwL3Byb3RvY29sLmM6Mjc5OTpcdFx0aWYgKG1wdGNwX2RhdGFfZmluX2VuYWJsZWQobXNrKSkge1xubmV0L21wdGNwL3Byb3RvY29sLmMtMjgwMC1cdFx0XHRzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2sgKmljc2sgPSBpbmV0X2Nzayhzayk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9Mjk4ND1zdGF0aWMgdm9pZCBtcHRjcF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI5OTktXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMDAwOlx0bXB0Y3BfY2hlY2tfc2VuZF9kYXRhX2Zpbihzayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMDAxOlx0bXB0Y3BfY2hlY2tfZGF0YV9maW5fYWNrKHNrKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjMwMDI6XHRtcHRjcF9jaGVja19kYXRhX2Zpbihzayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMDAzLVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTMxMzQ9dm9pZCBtcHRjcF9zdWJmbG93X3NodXRkb3duKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKnNzaywgaW50IGhvdylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMTUxLVxubmV0L21wdGNwL3Byb3RvY29sLmM6MzE1MjpcdFx0XHQvKiBzaW11bGF0ZSB0aGUgZGF0YV9maW4gYWNrIHJlY2VwdGlvbiB0byBsZXQgdGhlIHN0YXRlXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMTUzLVx0XHRcdCAqIG1hY2hpbmUgbW92ZSBmb3J3YXJkXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9MzIwOT1zdGF0aWMgaW50IG1wdGNwX2Nsb3NlX3N0YXRlKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjE4LVxubmV0L21wdGNwL3Byb3RvY29sLmM6MzIxOTpzdGF0aWMgdm9pZCBtcHRjcF9jaGVja19zZW5kX2RhdGFfZmluKHN0cnVjdCBzb2NrICpzaylcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMjAte1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMjMtXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMjI0Olx0cHJfZGVidWcoXCYjMzQ7bXNrPSVwIHNuZF9kYXRhX2Zpbl9lbmFibGU9JWQgcGVuZGluZz0lZCBzbmRfbnh0PSVsbHUgd3JpdGVfc2VxPSVsbHVcXG5cJiMzNDssXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMjI1Olx0XHQgbXNrLCBtc2stXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSwgISFtcHRjcF9zZW5kX2hlYWQoc2spLFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzIyNi1cdFx0IG1zay1cdTAwM2VzbmRfbnh0LCBtc2stXHUwMDNld3JpdGVfc2VxKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjMwLVx0ICovXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMjMxOlx0aWYgKCFtc2stXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSB8fCBtc2stXHUwMDNlc25kX254dCAmIzQzOyAxICE9IG1zay1cdTAwM2V3cml0ZV9zZXEgfHxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMzItXHQgICAgbXB0Y3Bfc2VuZF9oZWFkKHNrKSlcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0zMjQ0PXN0YXRpYyB2b2lkIF9fbXB0Y3Bfd3Jfc2h1dGRvd24oc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyNDctXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMjQ4Olx0cHJfZGVidWcoXCYjMzQ7bXNrPSVwIHNuZF9kYXRhX2Zpbl9lbmFibGU9JWQgc2h1dGRvd249JXggc3RhdGU9JWQgcGVuZGluZz0lZFxcblwmIzM0Oyxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjMyNDk6XHRcdCBtc2ssIG1zay1cdTAwM2VzbmRfZGF0YV9maW5fZW5hYmxlLCBzay1cdTAwM2Vza19zaHV0ZG93biwgc2stXHUwMDNlc2tfc3RhdGUsXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjUwLVx0XHQgISFtcHRjcF9zZW5kX2hlYWQoc2spKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjUzLVx0V1JJVEVfT05DRShtc2stXHUwMDNld3JpdGVfc2VxLCBtc2stXHUwMDNld3JpdGVfc2VxICYjNDM7IDEpO1xubmV0L21wdGNwL3Byb3RvY29sLmM6MzI1NDpcdFdSSVRFX09OQ0UobXNrLVx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsIDEpO1xubmV0L21wdGNwL3Byb3RvY29sLmMtMzI1NS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjMyNTY6XHRtcHRjcF9jaGVja19zZW5kX2RhdGFfZmluKHNrKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyNTctfVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTM0NDI9c3RhdGljIGludCBtcHRjcF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrICpzaywgaW50IGZsYWdzKVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTM0NzktXHRXUklURV9PTkNFKG1zay1cdTAwM2VmdWxseV9lc3RhYmxpc2hlZCwgZmFsc2UpO1xubmV0L21wdGNwL3Byb3RvY29sLmM6MzQ4MDpcdFdSSVRFX09OQ0UobXNrLVx1MDAzZXJjdl9kYXRhX2ZpbiwgZmFsc2UpO1xubmV0L21wdGNwL3Byb3RvY29sLmM6MzQ4MTpcdFdSSVRFX09OQ0UobXNrLVx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsIGZhbHNlKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTM0ODItXHRXUklURV9PTkNFKG1zay1cdTAwM2VyY3ZfZmFzdGNsb3NlLCBmYWxzZSk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmg9MTQ1PXN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIHtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xNTYtXHRcdCAgICBkc242NDoxLFxubmV0L21wdGNwL3Byb3RvY29sLmg6MTU3Olx0XHQgICAgZGF0YV9maW46MSxcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTE1OC1cdFx0ICAgIHVzZV9hY2s6MSxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD0yODA9c3RydWN0IG1wdGNwX3NvY2sge1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5oLTI5Mi1cdGF0b21pYzY0X3RcdHJjdl93bmRfc2VudDtcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjI5MzpcdHU2NFx0XHRyY3ZfZGF0YV9maW5fc2VxO1xubmV0L21wdGNwL3Byb3RvY29sLmgtMjk0LVx0dTY0XHRcdGJ5dGVzX3JldHJhbnM7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmgtMzE0LVx0Ym9vbFx0XHRmdWxseV9lc3RhYmxpc2hlZDtcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjMxNTpcdGJvb2xcdFx0cmN2X2RhdGFfZmluO1xubmV0L21wdGNwL3Byb3RvY29sLmg6MzE2Olx0Ym9vbFx0XHRzbmRfZGF0YV9maW5fZW5hYmxlO1xubmV0L21wdGNwL3Byb3RvY29sLmgtMzE3LVx0Ym9vbFx0XHRyY3ZfZmFzdGNsb3NlO1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5oPTU0Mj1zdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19jb250ZXh0IHtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC01NzAtXHRcdG1hcF9jc3VtX3JlcWQgOiAxLFxubmV0L21wdGNwL3Byb3RvY29sLmg6NTcxOlx0XHRtYXBfZGF0YV9maW4gOiAxLFxubmV0L21wdGNwL3Byb3RvY29sLmgtNTcyLVx0XHRtcGNfbWFwIDogMSxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05Nzk9dm9pZCBfX21wdGNwX2Vycm9yX3JlcG9ydChzdHJ1Y3Qgc29jayAqc2spO1xubmV0L21wdGNwL3Byb3RvY29sLmg6OTgwOmJvb2wgbXB0Y3BfdXBkYXRlX3Jjdl9kYXRhX2ZpbihzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLCB1NjQgZGF0YV9maW5fc2VxLCBib29sIHVzZV82NGJpdCk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuaDo5ODE6c3RhdGljIGlubGluZSBib29sIG1wdGNwX2RhdGFfZmluX2VuYWJsZWQoY29uc3Qgc3RydWN0IG1wdGNwX3NvY2sgKm1zaylcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTk4Mi17XG5uZXQvbXB0Y3AvcHJvdG9jb2wuaDo5ODM6XHRyZXR1cm4gUkVBRF9PTkNFKG1zay1cdTAwM2VzbmRfZGF0YV9maW5fZW5hYmxlKSBcdTAwMjZcdTAwMjZcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTk4NC1cdCAgICAgICBSRUFEX09OQ0UobXNrLVx1MDAzZXdyaXRlX3NlcSkgPT0gUkVBRF9PTkNFKG1zay1cdTAwM2VzbmRfbnh0KTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD0xMzA0PXN0YXRpYyBpbmxpbmUgYm9vbCBtcHRjcF90cnlfZmFsbGJhY2soc3RydWN0IHNvY2sgKnNzaywgaW50IGZiX21pYilcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xMzEyLVx0XHRyZXR1cm4gZmFsc2U7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuaDoxMzEzOlx0aWYgKFJFQURfT05DRShtc2stXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSkgXHUwMDI2XHUwMDI2ICEoc3NrLVx1MDAzZXNrX3NodXRkb3duIFx1MDAyNiBTRU5EX1NIVVRET1dOKSkge1xubmV0L21wdGNwL3Byb3RvY29sLmgtMTMxNC1cdFx0Z2ZwX3Qgc2F2ZWRfYWxsb2NhdGlvbiA9IHNzay1cdTAwM2Vza19hbGxvY2F0aW9uO1xuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmM9MTAzMD1zdGF0aWMgZW51bSBtYXBwaW5nX3N0YXR1cyB2YWxpZGF0ZV9kYXRhX2NzdW0oc3RydWN0IHNvY2sgKnNzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEwOTctXHRcdFx0XHQgc3ViZmxvdy1cdTAwM2VtYXBfc3ViZmxvd19zZXEsXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjEwOTg6XHRcdFx0XHQgc3ViZmxvdy1cdTAwM2VtYXBfZGF0YV9sZW4gJiM0Mzsgc3ViZmxvdy1cdTAwM2VtYXBfZGF0YV9maW4sXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEwOTktXHRcdFx0XHQgc3ViZmxvdy1cdTAwM2VtYXBfZGF0YV9jc3VtKTtcbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTExMDk9c3RhdGljIGVudW0gbWFwcGluZ19zdGF0dXMgZ2V0X21hcHBpbmdfc3RhdHVzKHN0cnVjdCBzb2NrICpzc2ssXG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTU3LVxubmV0L21wdGNwL3N1YmZsb3cuYzoxMTU4Olx0aWYgKG1wZXh0LVx1MDAzZWRhdGFfZmluID09IDEpIHtcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE1OTpcdFx0dTY0IGRhdGFfZmluX3NlcTtcbm5ldC9tcHRjcC9zdWJmbG93LmMtMTE2MC1cbm5ldC9tcHRjcC9zdWJmbG93LmMtMTE2MS1cdFx0aWYgKGRhdGFfbGVuID09IDEpIHtcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE2MjpcdFx0XHRib29sIHVwZGF0ZWQgPSBtcHRjcF91cGRhdGVfcmN2X2RhdGFfZmluKG1zaywgbXBleHQtXHUwMDNlZGF0YV9zZXEsXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExNjMtXHRcdFx0XHRcdFx0XHRcdCBtcGV4dC1cdTAwM2Vkc242NCk7XG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTgwLVxubmV0L21wdGNwL3N1YmZsb3cuYzoxMTgxOlx0XHRkYXRhX2Zpbl9zZXEgPSBtcGV4dC1cdTAwM2VkYXRhX3NlcSAmIzQzOyBkYXRhX2xlbiAtIDE7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExODItXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjExODM6XHRcdC8qIElmIG1wZXh0LVx1MDAzZWRhdGFfc2VxIGlzIGEgMzItYml0IHZhbHVlLCBkYXRhX2Zpbl9zZXEgbXVzdCBhbHNvXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExODQtXHRcdCAqIGJlIGxpbWl0ZWQgdG8gMzIgYml0cy5cbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExODYtXHRcdGlmICghbXBleHQtXHUwMDNlZHNuNjQpXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjExODc6XHRcdFx0ZGF0YV9maW5fc2VxIFx1MDAyNj0gR0VOTUFTS19VTEwoMzEsIDApO1xubmV0L21wdGNwL3N1YmZsb3cuYy0xMTg4LVxubmV0L21wdGNwL3N1YmZsb3cuYzoxMTg5Olx0XHRtcHRjcF91cGRhdGVfcmN2X2RhdGFfZmluKG1zaywgZGF0YV9maW5fc2VxLCBtcGV4dC1cdTAwM2Vkc242NCk7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExOTAtXHRcdHByX2RlYnVnKFwmIzM0O0RBVEFfRklOIHdpdGggbWFwcGluZyBzZXE9JWxsdSBkc242ND0lZFxcblwmIzM0Oyxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE5MTpcdFx0XHQgZGF0YV9maW5fc2VxLCBtcGV4dC1cdTAwM2Vkc242NCk7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExOTItXG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYy0xMjI1LVx0c3ViZmxvdy1cdTAwM2VtYXBfdmFsaWQgPSAxO1xubmV0L21wdGNwL3N1YmZsb3cuYzoxMjI2Olx0c3ViZmxvdy1cdTAwM2VtYXBfZGF0YV9maW4gPSBtcGV4dC1cdTAwM2VkYXRhX2Zpbjtcbm5ldC9tcHRjcC9zdWJmbG93LmMtMTIyNy1cdHN1YmZsb3ctXHUwMDNlbXBjX21hcCA9IG1wZXh0LVx1MDAzZW1wY19tYXA7XG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYz0xMjg5PXN0YXRpYyB2b2lkIHN1YmZsb3dfc2NoZWRfd29ya19pZl9jbG9zZWQoc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgc3RydWN0IHNvY2sgKnNzaylcbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEzMDktXHQgICAgbXNrLVx1MDAzZWZpcnN0ID09IHNzayBcdTAwMjZcdTAwMjZcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTMxMDpcdCAgICBtcHRjcF91cGRhdGVfcmN2X2RhdGFfZmluKG1zaywgc3ViZmxvdy1cdTAwM2VtYXBfc2VxICYjNDM7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEzMTEtXHRcdFx0XHQgICAgICBzdWJmbG93LVx1MDAzZW1hcF9kYXRhX2xlbiwgdHJ1ZSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MzI1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVBUQ1AgRGF0YSBGSU4gSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBkYXRhX2ZpbmAgaXNzdWUsIGFuZCBpdCBsb29rcyBsaWtlIGBtcHRjcF91cGRhdGVfcmN2X2RhdGFfZmluYCBjb21lcyBpbnRvIHBsYXkgd2hlbiB0aGUgYGRhdGFfZmluYCBmbGFnIGlzIHNldC4gVGhhdCBtYWtlcyBzZW5zZS4gQnV0IHRoZSBjb250ZXh0IGlzIGEgYml0IGJyb2FkZXIg4oCTIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGBtcHRjcF9wYXJzZV9vcHRpb25gLCB3aGljaCBpcyB0aGUgd29ya2hvcnNlIGZvciBwYXJzaW5nIFRDUCBvcHRpb25zLgoKQWhhISBJZiBgZGF0YV9maW5gIGlzIHNldCwgYG1wdGNwX2luY29taW5nX29wdGlvbnNgICptaWdodCogc2V0IGBtcGV4dC0mZ3Q7ZGF0YV9maW4gPSBtcF9vcHQuZGF0YV9maW47YC4gQW5kIHRoZW4sICp0aGF0JiMzOTtzKiB3aGF0IGBnZXRfbWFwcGluZ19zdGF0dXNgIGNoZWNrcy4gVGhhdCYjMzk7cyBhIGdvb2QgYnJlYWRjcnVtYiB0cmFpbC4gU28sIGBtcHRjcF9pbmNvbWluZ19vcHRpb25zYCBhbmQgYGdldF9tYXBwaW5nX3N0YXR1c2AgYXJlIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9ucyB0byB6ZXJvIGluIG9uLiBUaGV5JiMzOTtyZSB0aGUgY3JpdGljYWwgcGllY2VzIGludm9sdmVkIGluIHNldHRpbmcgYW5kIHJlYWRpbmcgdGhpcyBmbGFnLgoKSSBzaG91bGQgYWxzbyBpbmNsdWRlIGBtcHRjcF9wYXJzZV9vcHRpb25gLCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMuIExldCYjMzk7cyBzZWUuLi5pcyBpdCBpbmxpbmVkLCBvciBpcyBpdCBhIHByb3BlciBmdW5jdGlvbiBjYWxsPyBUaGF0IGNvdWxkIG1ha2UgYSBkaWZmZXJlbmNlLiBMZXQmIzM5O3MgbGlzdCB0aGVzZSBrZXkgZnVuY3Rpb25zOiBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AsIGBtcHRjcF9nZXRfb3B0aW9uc2AsIGFuZCBgZ2V0X21hcHBpbmdfc3RhdHVzYC4gVGhleSBhcmUgYWxsIGNyaXRpY2FsLgoKV2FpdC4uLndoYXQgYWJvdXQgdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gbWFrZSBzdXJlIE1QVENQIGlzIGFjdHVhbGx5IGVuYWJsZWQuIE90aGVyd2lzZSwgdGhpcyBpcyBhbGwgYWNhZGVtaWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNUFRDUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tcHRjcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21wdGNwL0tjb25maWctMS1cbm5ldC9tcHRjcC9LY29uZmlnOjI6Y29uZmlnIE1QVENQXG5uZXQvbXB0Y3AvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNUFRDUDogTXVsdGlwYXRoIFRDUFwmIzM0O1xuLS1cbm5ldC9tcHRjcC9LY29uZmlnPTE2PWNvbmZpZyBJTkVUX01QVENQX0RJQUdcbi0tXG5uZXQvbXB0Y3AvS2NvbmZpZy0xOS1cbm5ldC9tcHRjcC9LY29uZmlnOjIwOmNvbmZpZyBNUFRDUF9JUFY2XG5uZXQvbXB0Y3AvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7TVBUQ1A6IElQdjYgc3VwcG9ydCBmb3IgTXVsdGlwYXRoIFRDUFwmIzM0O1xuLS1cbm5ldC9tcHRjcC9LY29uZmlnLTI0LVxubmV0L21wdGNwL0tjb25maWc6MjU6Y29uZmlnIE1QVENQX0tVTklUX1RFU1Rcbm5ldC9tcHRjcC9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7VGhpcyBidWlsZHMgdGhlIE1QVENQIEtVbml0IHRlc3RzXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxMTYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIG5ldHdvcmsgcHJvdG9jb2wgaW50ZXJuYWxzOgoKKipEaXZpbmcgaW50byB0aGUgTVBUQ1AgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgdGhlIGNvcmUgZm9jdXMgc2VlbXMgdG8gYmUgb24gTVBUQ1AgY29uZmlndXJhdGlvbiwgbmF0dXJhbGx5LiBNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIGBNUFRDUGAgaXRzZWxmIOKAkyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gdG8gaW52ZXN0aWdhdGUuIEJ1dCwgYXMgd2UgYWxsIGtub3csIHRoaW5ncyBhcmUgcmFyZWx5IHRoYXQgc2ltcGxlLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpTbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgc2NhbiBmb3IgKm90aGVyKiByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3Igc2V0dGluZ3MgdGhhdCBtaWdodCBpbmZsdWVuY2UgaXRzIGJlaGF2aW9yLiBUaGlzIGNvdWxkIGJlIGFueXRoaW5nIHRoYXQgaW50ZWdyYXRlcyB3aXRoIGl0IG9yIHNpdHMgYWxvbmdzaWRlIGl0LiBBIGhvbGlzdGljIGFwcHJvYWNoIGlzIGJlc3QuCgpBbmQsIGZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGVyZSB0byBmaW5kIHRoZSBjb2RlIHRoYXQgYWN0dWFsbHkgaW1wbGVtZW50cyBhbGwgdGhpcy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgZmlsZSBpcyBgbmV0L21wdGNwL29wdGlvbnMuY2AuIE9rYXksIG5vdyBJIGhhdmUgYSBzdGFydGluZyBwb2ludCBhbmQgdGhlIGZpbGUgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLVxcJFxcKENPTkZJR19NUFRDUFxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tcHRjcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21wdGNwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxubmV0L21wdGNwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX01QVENQKSAmIzQzOz0gbXB0Y3Aub1xubmV0L21wdGNwL01ha2VmaWxlLTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NDU4CgkJCQkJCQlvdXRwdXQ6IDE5MwoJCQkJCQkJdGhvdWdodHM6IDQzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTVBUQ1AgRFNTIE9wdGlvbiBQYXJzaW5nIENoYW5nZSoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIHRoZSBjcml0aWNhbCBjaGFuZ2UgY2VudGVycyBhcm91bmQgYENPTkZJR19NUFRDUGAuIFRoYXQmIzM5O3MgdGhlIG9ubHkgY29uZmlnIGZsYWcgSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoIGhlcmUuIExldCYjMzk7cyBzZWUuLi4gdGhlIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgd2F5IE1QVENQIERTUyBvcHRpb25zIGFyZSBwYXJzZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBtcHRjcF9wYXJzZV9vcHRpb24oKWAgZnVuY3Rpb24uIFRoZSBjb3JlIG9mIGl0IGFsbCBpcyBtYWtpbmcgc3VyZSB0aGUgYGRhdGFfZmluYCBmbGFnIGlzIG9ubHkgY29uc2lkZXJlZCBpZiB0aGUgYHVzZV9tYXBgIGZsYWcgaXMgYWxzbyBzZXQuIEVzc2VudGlhbGx5LCBpdCBpcyBmaXhpbmcgYW4gaW5jb25zaXN0ZW5jeSB3aGVyZSBgZGF0YV9maW5gIG1pZ2h0IGhhdmUgYmVlbiBzZXQgaW5kZXBlbmRlbnRseS4KClRoaXMgaXMgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdG8gaG93IGluY29taW5nIHBhY2tldHMgd2l0aCBEU1Mgb3B0aW9ucyBhcmUgaGFuZGxlZC4gSXQgZGlyZWN0bHkgaW1wYWN0cyBob3cgdGhlIGtlcm5lbCByZWNvZ25pemVzIGEgREFUQV9GSU4sIHdoaWNoIGlzIGNyaXRpY2FsIGZvciBmbG93IGNvbnRyb2wgYW5kIGNvbm5lY3Rpb24gdGVybWluYXRpb24uIFRoaXMgaXMgdGhlIGtpbmQgb2YgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgc2VuZGluZyBjcmFmdGVkIHBhY2tldHMsIHNvIGl0IG5lZWRzIHRob3JvdWdoIGZ1enppbmcuIFdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgd2UgYXJlIG5vdCBpbnRyb2R1Y2luZyByZWdyZXNzaW9ucyBvciBjYXVzaW5nIHVuZXhwZWN0ZWQgc3RhdGUgdHJhbnNpdGlvbnMuCgpJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGtleSBzeW1ib2xzLiBCYXNlZCBvbiB0aGUgY29kZSwgYG1wdGNwX3BhcnNlX29wdGlvbmAgd2lsbCBiZSBpbXBvcnRhbnQsIGV2ZW4gaWYgaXQgbWlnaHQgYmUgaW5saW5lZC4gSSBhbHNvIGtub3cgdGhhdCBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AsIGBtcHRjcF9nZXRfb3B0aW9uc2AsIGFuZCBgZ2V0X21hcHBpbmdfc3RhdHVzYCBhcmUgaW52b2x2ZWQgaW4gdGhlIG92ZXJhbGwgcHJvY2Vzcy4gTm93IHRoYXQgSSBkb3VibGUgY2hlY2tlZCB0aGUgc291cmNlLCBJIHJlYWxpemUgdGhhdCBgbXB0Y3BfcGFyc2Vfb3B0aW9uYCBpcyBpbmRlZWQgc3RhdGljLCBidXQgc3RpbGwgaW1wb3J0YW50LgoKR29pbmcgYSBsYXllciBkZWVwZXIsIEkgc2VlIHRoYXQgYG1wdGNwX3BhcnNlX29wdGlvbmAgaXMgY2FsbGVkIGJ5IGBtcHRjcF9nZXRfb3B0aW9uc2AuIGBtcHRjcF9nZXRfb3B0aW9uc2AgaXMgY2FsbGVkIGZyb20gYG1wdGNwX2luY29taW5nX29wdGlvbnNgLCBgc3ViZmxvd19jaGVja19yZXFgLCBgbXB0Y3Bfc3ViZmxvd19pbml0X2Nvb2tpZV9yZXFgLCBgc3ViZmxvd19maW5pc2hfY29ubmVjdGAsIGFuZCBgc3ViZmxvd19zeW5fcmVjdl9zb2NrYC4gVGhhdCBjb25maXJtcyB0aGF0IGBtcHRjcF9nZXRfb3B0aW9uc2AgaXMgYSBmYW50YXN0aWMgZm9jdXMgc3ltYm9sLiBOb3cgdGhhdCBJIGhhdmUgZG9uZSBhbGwgdGhpcyBhbmFseXNpcywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01QVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXB0Y3BfZ2V0X29wdGlvbnMmIzM0OywKICAgICYjMzQ7bXB0Y3BfaW5jb21pbmdfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtnZXRfbWFwcGluZ19zdGF0dXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01QVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXB0Y3BfZ2V0X29wdGlvbnMmIzM0OywKICAgICYjMzQ7bXB0Y3BfaW5jb21pbmdfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtnZXRfbWFwcGluZ19zdGF0dXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0Njo1My45NTEwNjY1OThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk0MDA3Mzk2NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVBUQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtcHRjcF9nZXRfb3B0aW9uc1wiLFxuICAgIFwibXB0Y3BfaW5jb21pbmdfb3B0aW9uc1wiLFxuICAgIFwiZ2V0X21hcHBpbmdfc3RhdHVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBpbiBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDY6NTMuOTUxMDc2MjM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjc0NTU5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYjg5NTdmMDgxYzZlZTBkYmNiNTk3NDA2MzI0ODU2OGE3OTU2MzNiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDEwIDE2OjQ2OjUyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9tcHRjcC9vcHRpb25zLmMgYi9uZXQvbXB0Y3Avb3B0aW9ucy5jXFxuaW5kZXggZGZmM2ZkNWQzYjU1OWIuLjFiNzRjYTViNmE1OTU2IDEwMDY0NFxcbi0tLSBhL25ldC9tcHRjcC9vcHRpb25zLmNcXG4rKysgYi9uZXQvbXB0Y3Avb3B0aW9ucy5jXFxuQEAgLTE1NywxNyArMTU3LDExIEBAIHN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRwdHIrKztcXG4gXFxuIFxcdFxcdGZsYWdzID0gKCpwdHIrKykgXFx1MDAyNiBNUFRDUF9EU1NfRkxBR19NQVNLO1xcbi1cXHRcXHRtcF9vcHQtXFx1MDAzZWRhdGFfZmluID0gKGZsYWdzIFxcdTAwMjYgTVBUQ1BfRFNTX0RBVEFfRklOKSAhPSAwO1xcbiBcXHRcXHRtcF9vcHQtXFx1MDAzZWRzbjY0ID0gKGZsYWdzIFxcdTAwMjYgTVBUQ1BfRFNTX0RTTjY0KSAhPSAwO1xcbiBcXHRcXHRtcF9vcHQtXFx1MDAzZXVzZV9tYXAgPSAoZmxhZ3MgXFx1MDAyNiBNUFRDUF9EU1NfSEFTX01BUCkgIT0gMDtcXG4gXFx0XFx0bXBfb3B0LVxcdTAwM2VhY2s2NCA9IChmbGFncyBcXHUwMDI2IE1QVENQX0RTU19BQ0s2NCkgIT0gMDtcXG4gXFx0XFx0bXBfb3B0LVxcdTAwM2V1c2VfYWNrID0gKGZsYWdzIFxcdTAwMjYgTVBUQ1BfRFNTX0hBU19BQ0spO1xcbiBcXG4tXFx0XFx0cHJfZGVidWcoXFxcImRhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0IG1wX29wdC1cXHUwMDNlZGF0YV9maW4sIG1wX29wdC1cXHUwMDNlZHNuNjQsXFxuLVxcdFxcdFxcdCBtcF9vcHQtXFx1MDAzZXVzZV9tYXAsIG1wX29wdC1cXHUwMDNlYWNrNjQsXFxuLVxcdFxcdFxcdCBtcF9vcHQtXFx1MDAzZXVzZV9hY2spO1xcbi1cXG4gXFx0XFx0ZXhwZWN0ZWRfb3BzaXplID0gVENQT0xFTl9NUFRDUF9EU1NfQkFTRTtcXG4gXFxuIFxcdFxcdGlmIChtcF9vcHQtXFx1MDAzZXVzZV9hY2spIHtcXG5AQCAtMTc4LDEyICsxNzIsMTggQEAgc3RhdGljIHZvaWQgbXB0Y3BfcGFyc2Vfb3B0aW9uKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmIChtcF9vcHQtXFx1MDAzZXVzZV9tYXApIHtcXG4rXFx0XFx0XFx0bXBfb3B0LVxcdTAwM2VkYXRhX2ZpbiA9IChmbGFncyBcXHUwMDI2IE1QVENQX0RTU19EQVRBX0ZJTikgIT0gMDtcXG4gXFx0XFx0XFx0aWYgKG1wX29wdC1cXHUwMDNlZHNuNjQpXFxuIFxcdFxcdFxcdFxcdGV4cGVjdGVkX29wc2l6ZSArPSBUQ1BPTEVOX01QVENQX0RTU19NQVA2NDtcXG4gXFx0XFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRcXHRleHBlY3RlZF9vcHNpemUgKz0gVENQT0xFTl9NUFRDUF9EU1NfTUFQMzI7XFxuIFxcdFxcdH1cXG4gXFxuK1xcdFxcdHByX2RlYnVnKFxcXCJkYXRhX2Zpbj0lZCBkc242ND0lZCB1c2VfbWFwPSVkIGFjazY0PSVkIHVzZV9hY2s9JWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCBtcF9vcHQtXFx1MDAzZWRhdGFfZmluLCBtcF9vcHQtXFx1MDAzZWRzbjY0LFxcbitcXHRcXHRcXHQgbXBfb3B0LVxcdTAwM2V1c2VfbWFwLCBtcF9vcHQtXFx1MDAzZWFjazY0LFxcbitcXHRcXHRcXHQgbXBfb3B0LVxcdTAwM2V1c2VfYWNrKTtcXG4rXFxuIFxcdFxcdC8qIEFsd2F5cyBwYXJzZSBhbnkgY3N1bSBwcmVzZW5jZSBjb21iaW5hdGlvbiwgd2Ugd2lsbCBlbmZvcmNlXFxuIFxcdFxcdCAqIFJGQyA4Njg0IFNlY3Rpb24gMy4zLjAgY2hlY2tzIGxhdGVyIGluIHN1YmZsb3dfZGF0YV9yZWFkeVxcbiBcXHRcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDY6NTQuNjc5NDUxMDU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjg2NzIzNDIwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVBUQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtcHRjcF9nZXRfb3B0aW9uc1wiLFxuICAgIFwibXB0Y3BfaW5jb21pbmdfb3B0aW9uc1wiLFxuICAgIFwiZ2V0X21hcHBpbmdfc3RhdHVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBpbiBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzYjg5NTdmMDgxYzZlZTBkYmNiNTk3NDA2MzI0ODU2OGE3OTU2MzNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTY6NDY6NTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbXB0Y3Avb3B0aW9ucy5jIGIvbmV0L21wdGNwL29wdGlvbnMuY1xuaW5kZXggZGZmM2ZkNWQzYjU1OWIuLjFiNzRjYTViNmE1OTU2IDEwMDY0NFxuLS0tIGEvbmV0L21wdGNwL29wdGlvbnMuY1xuKysrIGIvbmV0L21wdGNwL29wdGlvbnMuY1xuQEAgLTE1NywxNyArMTU3LDExIEBAIHN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRwdHIrKztcbiBcbiBcdFx0ZmxhZ3MgPSAoKnB0cisrKSBcdTAwMjYgTVBUQ1BfRFNTX0ZMQUdfTUFTSztcbi1cdFx0bXBfb3B0LVx1MDAzZWRhdGFfZmluID0gKGZsYWdzIFx1MDAyNiBNUFRDUF9EU1NfREFUQV9GSU4pICE9IDA7XG4gXHRcdG1wX29wdC1cdTAwM2Vkc242NCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0RTTjY0KSAhPSAwO1xuIFx0XHRtcF9vcHQtXHUwMDNldXNlX21hcCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0hBU19NQVApICE9IDA7XG4gXHRcdG1wX29wdC1cdTAwM2VhY2s2NCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0FDSzY0KSAhPSAwO1xuIFx0XHRtcF9vcHQtXHUwMDNldXNlX2FjayA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0hBU19BQ0spO1xuIFxuLVx0XHRwcl9kZWJ1ZyhcImRhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxcblwiLFxuLVx0XHRcdCBtcF9vcHQtXHUwMDNlZGF0YV9maW4sIG1wX29wdC1cdTAwM2Vkc242NCxcbi1cdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9tYXAsIG1wX29wdC1cdTAwM2VhY2s2NCxcbi1cdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9hY2spO1xuLVxuIFx0XHRleHBlY3RlZF9vcHNpemUgPSBUQ1BPTEVOX01QVENQX0RTU19CQVNFO1xuIFxuIFx0XHRpZiAobXBfb3B0LVx1MDAzZXVzZV9hY2spIHtcbkBAIC0xNzgsMTIgKzE3MiwxOCBAQCBzdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0fVxuIFxuIFx0XHRpZiAobXBfb3B0LVx1MDAzZXVzZV9tYXApIHtcbitcdFx0XHRtcF9vcHQtXHUwMDNlZGF0YV9maW4gPSAoZmxhZ3MgXHUwMDI2IE1QVENQX0RTU19EQVRBX0ZJTikgIT0gMDtcbiBcdFx0XHRpZiAobXBfb3B0LVx1MDAzZWRzbjY0KVxuIFx0XHRcdFx0ZXhwZWN0ZWRfb3BzaXplICs9IFRDUE9MRU5fTVBUQ1BfRFNTX01BUDY0O1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdGV4cGVjdGVkX29wc2l6ZSArPSBUQ1BPTEVOX01QVENQX0RTU19NQVAzMjtcbiBcdFx0fVxuIFxuK1x0XHRwcl9kZWJ1ZyhcImRhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxcblwiLFxuK1x0XHRcdCBtcF9vcHQtXHUwMDNlZGF0YV9maW4sIG1wX29wdC1cdTAwM2Vkc242NCxcbitcdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9tYXAsIG1wX29wdC1cdTAwM2VhY2s2NCxcbitcdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9hY2spO1xuK1xuIFx0XHQvKiBBbHdheXMgcGFyc2UgYW55IGNzdW0gcHJlc2VuY2UgY29tYmluYXRpb24sIHdlIHdpbGwgZW5mb3JjZVxuIFx0XHQgKiBSRkMgODY4NCBTZWN0aW9uIDMuMy4wIGNoZWNrcyBsYXRlciBpbiBzdWJmbG93X2RhdGFfcmVhZHlcbiBcdFx0ICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0Njo1NC42Nzk0NTI3NThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTgyODk1MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVBUQ1AgT3B0aW9uIFBhcnNpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGhvdyB3ZSBoYW5kbGUgYG1wX29wdC1cdTAwM2VkYXRhX2ZpbmAgd2l0aGluIGBuZXQvbXB0Y3Avb3B0aW9ucy5jYC4gRXNzZW50aWFsbHksIGl0J3MgYWJvdXQgdGhlIHBhcnNpbmcgbG9naWMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gSSdtIHNlZWluZyBhIHNpZ25pZmljYW50IGNoYW5nZTogYG1wX29wdC1cdTAwM2VkYXRhX2ZpbmAgaXMgbm93ICpjb25kaXRpb25hbGx5KiBzZXQgYmFzZWQgb24gdGhlIGBtcF9vcHQtXHUwMDNldXNlX21hcGAgZmxhZy5cblxuU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0aGUgaW50ZW50aW9uIGlzIHRvIG9ubHkgc2V0IGBtcF9vcHQtXHUwMDNlZGF0YV9maW5gIHdoZW4gd2UncmUgYWxzbyB1c2luZyBhIG1hcC4gSW5zaWRlIHRoYXQgYGlmIChtcF9vcHQtXHUwMDNldXNlX21hcClgIGJsb2NrLCBJIHNlZSBgbXBfb3B0LVx1MDAzZWRhdGFfZmluYCBnZXRzIHNldCB0byBgKGZsYWdzIFx1MDAyNiBNUFRDUF9EU1NfREFUQV9GSU4pICE9IDBgLiBTbywgdGhhdCdzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgRklOIGZsYWcgaWYgdGhlIG1hcCBpcyBlbmFibGVkLlxuXG5UaGUgY3J1Y2lhbCBwYXJ0LCBhbmQgdGhlIGJpdCBJIG5lZWQgdG8gZGVsdmUgaW50byBtb3JlLCBpcyB3aGF0IGhhcHBlbnMgd2hlbiBgbXBfb3B0LVx1MDAzZXVzZV9tYXBgIGlzICpmYWxzZSouIEl0IGxvb2tzIGxpa2UgYG1wX29wdC1cdTAwM2VkYXRhX2ZpbmAgd2lsbCAqbm90KiBiZSBtb2RpZmllZCwgYW5kIHdpbGwgcmV0YWluIGl0cyBpbml0aWFsIHZhbHVlLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBXaGF0J3MgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBtcF9vcHRgIGxvb2sgbGlrZT8gV2hhdCBkb2VzIGBkYXRhX2ZpbmAgZGVmYXVsdCB0bz8gSXMgdGhpcyBpbnRlbnRpb25hbCBiZWhhdmlvciwgb3IgYSBwb3RlbnRpYWwgaXNzdWU/IEknbSBnb2luZyB0byB0cmFjayBkb3duIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgbXB0Y3BfcGFyc2Vfb3B0aW9uYCBhbmQgdGhlIGBtcF9vcHRgIHN0cnVjdHVyZSBpdHNlbGYgdG8gY2xhcmlmeSB0aGlzLiBUaGVyZSBjb3VsZCBiZSBzdWJ0bGUgaW1wbGljYXRpb25zIGhlcmUgdGhhdCBuZWVkIGNhcmVmdWwgY29uc2lkZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjQ2OjU5LjY2MjM0OTgyN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTUyOTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtcHRjcF9wYXJzZV9vcHRpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21wdGNwL29wdGlvbnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbXB0Y3Avb3B0aW9ucy5jPTE4PXN0YXRpYyBib29sIG1wdGNwX2NhcF9mbGFnX3NoYTI1Nih1OCBmbGFncylcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMjItXFxubmV0L21wdGNwL29wdGlvbnMuYzoyMzpzdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTI0LVxcdFxcdFxcdCAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwdHIsIGludCBvcHNpemUsXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTM1OT12b2lkIG1wdGNwX2dldF9vcHRpb25zKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTM5My1cXHRcXHRcXHRpZiAob3Bjb2RlID09IFRDUE9QVF9NUFRDUClcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjM5NDpcXHRcXHRcXHRcXHRtcHRjcF9wYXJzZV9vcHRpb24oc2tiLCBwdHIsIG9wc2l6ZSwgbXBfb3B0KTtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTM5NS1cXHRcXHRcXHRwdHIgKz0gb3BzaXplIC0gMjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDY6NTkuNzQ3ODg0OTI2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA3NTY3MDg5NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgbXB0Y3BfZ2V0X29wdGlvbnNgIGFuZCBgbXBfb3B0YCBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBob3cgYG1wdGNwX2dldF9vcHRpb25zYCB3b3Jrcywgc3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgYG1wX29wdGAgc3RydWN0dXJlIGlzIGJlaW5nIGluaXRpYWxpemVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgZ290Y2hhcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGhhcHBlbmluZyB0aGVyZSwgZXNwZWNpYWxseSBhcm91bmQgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGFzc2lnbm1lbnQuIFdlJ3JlIGRlYWxpbmcgd2l0aCBjcml0aWNhbCBNUFRDUCBmdW5jdGlvbmFsaXR5LCBzbyB0aGlzIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGJlIHJvY2sgc29saWQuIEFueSBzdWJ0bGUgYnVnIGhlcmUgY291bGQgY2FzY2FkZSBpbnRvIHNlcmlvdXMgY29ubmVjdGlvbiBpbnN0YWJpbGl0eSBvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIGFuZCBJICpjYW5ub3QqIGFsbG93IHRoYXQuIEkgbmVlZCB0byBzZWUgaWYgaXQncyBiZWluZyBwcm9wZXJseSBoYW5kbGVkLiBMZXQncyBzZWUgaG93IHRoZXkncmUgaGFuZGxpbmcgdGhpbmdzLiBBcmUgYWxsIHRoZSBuZWNlc3NhcnkgZmllbGRzIGdldHRpbmcgc2V0PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IEFyZSB3ZSBkZWFsaW5nIHdpdGggYW55IG1lbW9yeSBsZWFrcz8gVGhpcyByZXF1aXJlcyBhIGNhcmVmdWwsIGxpbmUtYnktbGluZSBpbnNwZWN0aW9uIHRvIHZlcmlmeSBjb3JyZWN0IG9wZXJhdGlvbi4gVGhpcyBpcyBmb3VuZGF0aW9uYWw7IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIHJvYnVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjQ3OjIwLjUwNDU5NjA0N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjg1ODY1MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXB0Y3BfZ2V0X29wdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21wdGNwL29wdGlvbnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbXB0Y3Avb3B0aW9ucy5jPTIzPXN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy0zNTgtXFxubmV0L21wdGNwL29wdGlvbnMuYzozNTk6dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzYwLVxcdFxcdCAgICAgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz0xMTM2PWJvb2wgbXB0Y3BfaW5jb21pbmdfb3B0aW9ucyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExNjItXFxubmV0L21wdGNwL29wdGlvbnMuYzoxMTYzOlxcdG1wdGNwX2dldF9vcHRpb25zKHNrYiwgXFx1MDAyNm1wX29wdCk7XFxubmV0L21wdGNwL29wdGlvbnMuYy0xMTY0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0NzoyMC44NzMxODgzMTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTE1MDgyMjk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipDaGVja2luZyBmb3IgWmVyb2VkIE11bHRpcGF0aCBUQ1AgT3B0aW9ucyoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYG1wX29wdGAgdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4gU2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3Qgcm91dGUgdG8gZmluZCBvdXQgd291bGQgYmUgdG8gaW52ZXN0aWdhdGUgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBpbmNvbWluZyBNdWx0aXBhdGggVENQIG9wdGlvbnMgb3IgcmV0cmlldmVzIGV4aXN0aW5nIG9uZXMuIFNvLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBmdW5jdGlvbnMgYG1wdGNwX2luY29taW5nX29wdGlvbnNgIGFuZCBgbXB0Y3BfZ2V0X29wdGlvbnNgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2VzIHdoZXJlIGBtcF9vcHRgIG1pZ2h0IGJlIHNldCBvciBjaGVja2VkLiBCeSBleGFtaW5pbmcgdGhlIGNvZGUgd2l0aGluIHRob3NlIGZ1bmN0aW9ucywgSSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSdzIGFueSBleHBsaWNpdCBpbml0aWFsaXphdGlvbiBvciBpZiB0aGUgdmFsdWUgbWlnaHQgYmUgZGVmYXVsdGVkIHRvIHplcm8sIG9yIGhhdmUgaXRzIHZhbHVlIHNldC4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgaXQgaXMgaGFuZGxlZCBpbiB0aGlzIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDc6MzYuMDI0MDE0MzZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1OTE0Njc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1wdGNwX2luY29taW5nX29wdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21wdGNwL29wdGlvbnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbXB0Y3Avb3B0aW9ucy5jPTEwNTY9c3RhdGljIHZvaWQgYWNrX3VwZGF0ZV9tc2soc3RydWN0IG1wdGNwX3NvY2sgKm1zayxcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTA4MS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjEwODI6XFx0LyogdGhpcyBhc3N1bWVzIG1wdGNwX2luY29taW5nX29wdGlvbnMoKSBpcyBpbnZva2VkIGFmdGVyIHRjcF9hY2soKSAqL1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTA4My1cXHRpZiAoYWZ0ZXI2NChtc2stXFx1MDAzZXduZF9lbmQsIHNuZF9ueHQpKVxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz0xMTE1PXN0YXRpYyBib29sIGFkZF9hZGRyX2htYWNfdmFsaWQoc3RydWN0IG1wdGNwX3NvY2sgKm1zayxcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTEzNS0gKi9cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExMzY6Ym9vbCBtcHRjcF9pbmNvbWluZ19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExMzcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0NzozNi4xNjk5MzY0MDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzQ2MTI5MDc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgbXB0Y3BfZ2V0X29wdGlvbnNgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNUFRDUCBvcHRpb25zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYG1wdGNwX2dldF9vcHRpb25zYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBJJ20gemVyb2luZyBpbiBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgYG1wX29wdGAgc3RydWN0dXJlIGdldHMgZXhwbGljaXRseSB6ZXJvZWQgb3V0IGR1cmluZyB0aGlzIHByb2Nlc3MuIFRoaXMgaXMgYSBjcnVjaWFsIGRldGFpbCBmb3IgZW5zdXJpbmcgdGhlIGludGVncml0eSBhbmQgcHJlZGljdGFiaWxpdHkgb2YgdGhlIG9wdGlvbiBkYXRhLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIHByZXZpb3VzIG9wdGlvbiBzZXR0aW5ncy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGZ1bmN0aW9uIGVzdGFibGlzaGVzIGEgY2xlYW4gc2xhdGUgZm9yIHRoZSBvcHRpb25zLiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBjb2RlIGFuZCB2ZXJpZnkgaXRzIGJlaGF2aW9yIHdpdGggcmVzcGVjdCB0byB0aGUgYG1wX29wdGAgdmFyaWFibGUuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGhlbHAgbWUgdHJvdWJsZXNob290IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBvcHRpb24gaGFuZGxpbmcgZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBvciByZW5lZ290aWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTI5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDg6NTkuNjMxMjI5NTIzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTg1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbXB0Y3Avb3B0aW9ucy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1OSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM1OTpcXHR2b2lkIG1wdGNwX2dldF9vcHRpb25zKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIDM2MDpcXHRcXHRcXHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcXG4gMzYxOlxcdHtcXG4gMzYyOlxcdFxcdGNvbnN0IHN0cnVjdCB0Y3BoZHIgKnRoID0gdGNwX2hkcihza2IpO1xcbiAzNjM6XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciAqcHRyO1xcbiAzNjQ6XFx0XFx0aW50IGxlbmd0aDtcXG4gMzY1OlxcdFxcbiAzNjY6XFx0XFx0LyogRW5zdXJlIHRoYXQgY2FzdGluZyB0aGUgd2hvbGUgc3RhdHVzIHRvIHUzMiBpcyBlZmZpY2llbnQgYW5kIHNhZmUgKi9cXG4gMzY3OlxcdFxcdEJVSUxEX0JVR19PTihzaXplb2ZfZmllbGQoc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQsIHN0YXR1cykgIT0gc2l6ZW9mKHUzMikpO1xcbiAzNjg6XFx0XFx0QlVJTERfQlVHX09OKCFJU19BTElHTkVEKG9mZnNldG9mKHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkLCBzdGF0dXMpLFxcbiAzNjk6XFx0XFx0XFx0XFx0XFx0IHNpemVvZih1MzIpKSk7XFxuIDM3MDpcXHRcXHQqKHUzMiAqKVxcdTAwMjZtcF9vcHQtXFx1MDAzZXN0YXR1cyA9IDA7XFxuIDM3MTpcXHRcXG4gMzcyOlxcdFxcdGxlbmd0aCA9ICh0aC1cXHUwMDNlZG9mZiAqIDQpIC0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpO1xcbiAzNzM6XFx0XFx0cHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikodGggKyAxKTtcXG4gMzc0OlxcdFxcbiAzNzU6XFx0XFx0d2hpbGUgKGxlbmd0aCBcXHUwMDNlIDApIHtcXG4gMzc2OlxcdFxcdFxcdGludCBvcGNvZGUgPSAqcHRyKys7XFxuIDM3NzpcXHRcXHRcXHRpbnQgb3BzaXplO1xcbiAzNzg6XFx0XFxuIDM3OTpcXHRcXHRcXHRzd2l0Y2ggKG9wY29kZSkge1xcbiAzODA6XFx0XFx0XFx0Y2FzZSBUQ1BPUFRfRU9MOlxcbiAzODE6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbiAzODI6XFx0XFx0XFx0Y2FzZSBUQ1BPUFRfTk9QOlxcdC8qIFJlZjogUkZDIDc5MyBzZWN0aW9uIDMuMSAqL1xcbiAzODM6XFx0XFx0XFx0XFx0bGVuZ3RoLS07XFxuIDM4NDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMzg1OlxcdFxcdFxcdGRlZmF1bHQ6XFxuIDM4NjpcXHRcXHRcXHRcXHRpZiAobGVuZ3RoIFxcdTAwM2MgMilcXG4gMzg3OlxcdFxcdFxcdFxcdFxcdHJldHVybjtcXG4gMzg4OlxcdFxcdFxcdFxcdG9wc2l6ZSA9ICpwdHIrKztcXG4gMzg5OlxcdFxcdFxcdFxcdGlmIChvcHNpemUgXFx1MDAzYyAyKSAvKiBcXFwic2lsbHkgb3B0aW9uc1xcXCIgKi9cXG4gMzkwOlxcdFxcdFxcdFxcdFxcdHJldHVybjtcXG4gMzkxOlxcdFxcdFxcdFxcdGlmIChvcHNpemUgXFx1MDAzZSBsZW5ndGgpXFxuIDM5MjpcXHRcXHRcXHRcXHRcXHRyZXR1cm47XFx0LyogZG9uJ3QgcGFyc2UgcGFydGlhbCBvcHRpb25zICovXFxuIDM5MzpcXHRcXHRcXHRcXHRpZiAob3Bjb2RlID09IFRDUE9QVF9NUFRDUClcXG4gMzk0OlxcdFxcdFxcdFxcdFxcdG1wdGNwX3BhcnNlX29wdGlvbihza2IsIHB0ciwgb3BzaXplLCBtcF9vcHQpO1xcbiAzOTU6XFx0XFx0XFx0XFx0cHRyICs9IG9wc2l6ZSAtIDI7XFxuIDM5NjpcXHRcXHRcXHRcXHRsZW5ndGggLT0gb3BzaXplO1xcbiAzOTc6XFx0XFx0XFx0fVxcbiAzOTg6XFx0XFx0fVxcbiAzOTk6XFx0fVxcbiA0MDA6XFx0XFxuIDQwMTpcXHRib29sIG1wdGNwX3N5bl9vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gNDAyOlxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgKnNpemUsIHN0cnVjdCBtcHRjcF9vdXRfb3B0aW9ucyAqb3B0cylcXG4gNDAzOlxcdHtcXG4gNDA0OlxcdFxcdHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3cgPSBtcHRjcF9zdWJmbG93X2N0eChzayk7XFxuIDQwNTpcXHRcXG4gNDA2OlxcdFxcdC8qIHdlIHdpbGwgdXNlIHNuZF9pc24gdG8gZGV0ZWN0IGZpcnN0IHBrdCBbcmVddHJhbnNtaXNzaW9uXFxuIDQwNzpcXHRcXHQgKiBpbiBtcHRjcF9lc3RhYmxpc2hlZF9vcHRpb25zX21wKClcXG4gNDA4OlxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0ODo1OS42MzEzOTIyNjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NjY5MjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipBbmFseXppbmcgdGhlIFN0YXR1cyBGaWVsZCBSZXNldCoqXG5cbkFscmlnaHQsIHRoYXQgYCoodTMyICopXHUwMDI2bXBfb3B0LVx1MDAzZXN0YXR1cyA9IDA7YCBsaW5lLi4uIHRoYXQncyBhIGRpcmVjdCBtZW1vcnkgd3JpdGUuIEl0J3MgZXNzZW50aWFsbHkgemVyb2luZyBvdXQgdGhlIGBzdGF0dXNgIGZpZWxkLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2F0aW9ucy4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGlzIHN5c3RlbSwgSSdtIGFscmVhZHkgbWVudGFsbHkgcmVhY2hpbmcgZm9yIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBvZiBgbXBfb3B0YC4gSSBuZWVkIHRvIHJlbWVtYmVyIHdoYXQncyBzdG9yZWQgaW4gYHN0YXR1c2AsIGFzIHRoZSBuYW1lIGFsb25lIGRvZXNuJ3QgZ2l2ZSBtZSBlbm91Z2ggY29udGV4dC4gV2hhdCBiaXRzIHJlcHJlc2VudCB3aGF0LCB3aGF0IHRoZSB0eXBpY2FsIHZhbHVlcyBhcmUsIGFuZCB3aGF0IHRoZSB2YWxpZCByYW5nZSBpcy4gVW5kZXJzdGFuZGluZyB0aGUgYml0cyBpcyBrZXkuIFRoaXMgY291bGQgYmUgYSBzaW1wbGUgaW5pdGlhbGl6YXRpb24sIGEgY2xlYXItZG93biBiZWZvcmUgYSB0YXNrLCBvciBwZXJoYXBzIGEgcmVzZXQgYWZ0ZXIgc29tZSBlcnJvciBzdGF0ZS4gU28gbWFueSBwb3NzaWJpbGl0aWVzLiBUaGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBzdGF0dXNgIGZpZWxkIGRlZmluaXRpb24gdG8gYXNjZXJ0YWluIHdoYXQgaW5mb3JtYXRpb24gdGhhdCBwaWVjZSBvZiBjb2RlIGlzIGFmZmVjdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDk6MDIuOTg4MDg3OTY0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODc5MTk3MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21wdGNwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbXB0Y3Avb3B0aW9ucy5jPTIzPXN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMjQtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnB0ciwgaW50IG9wc2l6ZSxcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjI1OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMjYte1xcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz0zNTk9dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MzYwOlxcdFxcdCAgICAgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzYxLXtcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzY2LVxcdC8qIEVuc3VyZSB0aGF0IGNhc3RpbmcgdGhlIHdob2xlIHN0YXR1cyB0byB1MzIgaXMgZWZmaWNpZW50IGFuZCBzYWZlICovXFxubmV0L21wdGNwL29wdGlvbnMuYzozNjc6XFx0QlVJTERfQlVHX09OKHNpemVvZl9maWVsZChzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCwgc3RhdHVzKSAhPSBzaXplb2YodTMyKSk7XFxubmV0L21wdGNwL29wdGlvbnMuYzozNjg6XFx0QlVJTERfQlVHX09OKCFJU19BTElHTkVEKG9mZnNldG9mKHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkLCBzdGF0dXMpLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzY5LVxcdFxcdFxcdFxcdCBzaXplb2YodTMyKSkpO1xcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz05MTU9c3RhdGljIGJvb2wgY2hlY2tfZnVsbHlfZXN0YWJsaXNoZWQoc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgc3RydWN0IHNvY2sgKnNzayxcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtOTE3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9tcHRjcC9vcHRpb25zLmM6OTE4OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtOTE5LXtcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmM9MTA1Nj1zdGF0aWMgdm9pZCBhY2tfdXBkYXRlX21zayhzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTA1Ny1cXHRcXHRcXHQgICBzdHJ1Y3Qgc29jayAqc3NrLFxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTA1ODpcXHRcXHRcXHQgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTA1OS17XFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTExMTU9c3RhdGljIGJvb2wgYWRkX2FkZHJfaG1hY192YWxpZChzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTExNjpcXHRcXHRcXHRcXHRzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTExNy17XFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTExMzY9Ym9vbCBtcHRjcF9pbmNvbWluZ19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTEzOS1cXHRzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrID0gbXB0Y3Bfc2soc3ViZmxvdy1cXHUwMDNlY29ubik7XFxubmV0L21wdGNwL29wdGlvbnMuYzoxMTQwOlxcdHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIG1wX29wdDtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExNDEtXFx0c3RydWN0IG1wdGNwX2V4dCAqbXBleHQ7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0zNTUzPXN0cnVjdCBzb2NrICptcHRjcF9za19jbG9uZV9pbml0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozNTU0OlxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0LFxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTM1NTUtXFx0XFx0XFx0XFx0IHN0cnVjdCBzb2NrICpzc2ssXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD0xMzg9c3RhdGljIGlubGluZSBib29sIGJlZm9yZTY0KF9fdTY0IHNlcTEsIF9fdTY0IHNlcTIpXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xNDQtXFxubmV0L21wdGNwL3Byb3RvY29sLmg6MTQ1OnN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xNDYtXFx0dTY0XFx0c25kcl9rZXk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD04MDg9dm9pZCBfX21wdGNwX3N1YmZsb3dfZnVsbHlfZXN0YWJsaXNoZWQoc3RydWN0IG1wdGNwX3NvY2sgKm1zayxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC04MDktXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3csXFxubmV0L21wdGNwL3Byb3RvY29sLmg6ODEwOlxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC04MTEtYm9vbCBfX21wdGNwX3JldHJhbnNtaXRfcGVuZGluZ19kYXRhKHN0cnVjdCBzb2NrICpzayk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05MTg9c3RydWN0IHNvY2sgKm1wdGNwX3NrX2Nsb25lX2luaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjkxOTpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdCxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC05MjAtXFx0XFx0XFx0XFx0IHN0cnVjdCBzb2NrICpzc2ssXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05MjI9dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjkyMzpcXHRcXHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdCk7XFxubmV0L21wdGNwL3Byb3RvY29sLmgtOTI0LVxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz0xNDc9c3RhdGljIGludCBzdWJmbG93X2NoZWNrX3JlcShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTE1Mi1cXHRzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19yZXF1ZXN0X3NvY2sgKnN1YmZsb3dfcmVxID0gbXB0Y3Bfc3ViZmxvd19yc2socmVxKTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjE1MzpcXHRzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCBtcF9vcHQ7XFxubmV0L21wdGNwL3N1YmZsb3cuYy0xNTQtXFx0Ym9vbCBvcHRfbXBfY2FwYWJsZSwgb3B0X21wX2pvaW47XFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTI2NT1pbnQgbXB0Y3Bfc3ViZmxvd19pbml0X2Nvb2tpZV9yZXEoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0yNzAtXFx0c3RydWN0IG1wdGNwX3N1YmZsb3dfcmVxdWVzdF9zb2NrICpzdWJmbG93X3JlcSA9IG1wdGNwX3N1YmZsb3dfcnNrKHJlcSk7XFxubmV0L21wdGNwL3N1YmZsb3cuYzoyNzE6XFx0c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgbXBfb3B0O1xcbm5ldC9tcHRjcC9zdWJmbG93LmMtMjcyLVxcdGJvb2wgb3B0X21wX2NhcGFibGUsIG9wdF9tcF9qb2luO1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz00Nzc9c3RhdGljIHZvaWQgc3ViZmxvd19zZXRfcmVtb3RlX2tleShzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxcbm5ldC9tcHRjcC9zdWJmbG93LmMtNDc4LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3csXFxubmV0L21wdGNwL3N1YmZsb3cuYzo0Nzk6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTQ4MC17XFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTUwMT1zdGF0aWMgdm9pZCBtcHRjcF9wcm9wYWdhdGVfc3RhdGUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqc3NrLFxcbm5ldC9tcHRjcC9zdWJmbG93LmMtNTAyLVxcdFxcdFxcdFxcdCAgc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjUwMzpcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkICptcF9vcHQpXFxubmV0L21wdGNwL3N1YmZsb3cuYy01MDQte1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz01MjY9c3RhdGljIHZvaWQgc3ViZmxvd19maW5pc2hfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTUyOC1cXHRzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19jb250ZXh0ICpzdWJmbG93ID0gbXB0Y3Bfc3ViZmxvd19jdHgoc2spO1xcbm5ldC9tcHRjcC9zdWJmbG93LmM6NTI5OlxcdHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIG1wX29wdDtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTUzMC1cXHRzdHJ1Y3Qgc29jayAqcGFyZW50ID0gc3ViZmxvdy1cXHUwMDNlY29ubjtcXG4tLVxcbm5ldC9tcHRjcC9zdWJmbG93LmM9NzUzPXN0YXRpYyBib29sIHN1YmZsb3dfaG1hY192YWxpZChjb25zdCBzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19yZXF1ZXN0X3NvY2sgKnN1YmZsb3dfcmVxLFxcbm5ldC9tcHRjcC9zdWJmbG93LmM6NzU0OlxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9zdWJmbG93LmMtNzU1LXtcXG4tLVxcbm5ldC9tcHRjcC9zdWJmbG93LmM9Nzk3PXZvaWQgX19tcHRjcF9zdWJmbG93X2Z1bGx5X2VzdGFibGlzaGVkKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXFxubmV0L21wdGNwL3N1YmZsb3cuYy03OTgtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3csXFxubmV0L21wdGNwL3N1YmZsb3cuYzo3OTk6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkICptcF9vcHQpXFxubmV0L21wdGNwL3N1YmZsb3cuYy04MDAte1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz04MDY9c3RhdGljIHN0cnVjdCBzb2NrICpzdWJmbG93X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy04MTYtXFx0c3RydWN0IG1wdGNwX3N1YmZsb3dfcmVxdWVzdF9zb2NrICpzdWJmbG93X3JlcTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjgxNzpcXHRzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCBtcF9vcHQ7XFxubmV0L21wdGNwL3N1YmZsb3cuYy04MTgtXFx0Ym9vbCBmYWxsYmFjaywgZmFsbGJhY2tfaXNfZmF0YWw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjQ5OjAzLjM3NjAxMjAxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA2MDg1OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBiaXQgb2YgY29kZTpcblxuKipBbmFseXppbmcgdGhlIGBtcF9vcHQtXHUwMDNlc3RhdHVzYCBGaWVsZCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIGBtcF9vcHQtXHUwMDNlc3RhdHVzYC4uLiBpcyB0aGF0IGEgYml0ZmllbGQ/IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdC4gTGV0IG1lIGp1bXAgb3ZlciB0byB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWRgLiBJIG5lZWQgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBmaWVsZCBpcyBhY2N1cmF0ZSBiZWZvcmUgSSBwcm9jZWVkLiBUaGlzIGNvdWxkIGJlIGNydWNpYWwgdG8gaG93IEkgaW50ZXJwcmV0IHRoZSBvcHRpb24gZGF0YS4gR290dGEgZ2V0IHRoZSBsb3ctZG93biBvbiB0aGUgYml0IGFzc2lnbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njc1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDk6MDYuNDgyMTAwMTYzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbXB0Y3AvcHJvdG9jb2wuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxNDUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNDU6XFx0c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQge1xcbiAxNDY6XFx0XFx0dTY0XFx0c25kcl9rZXk7XFxuIDE0NzpcXHRcXHR1NjRcXHRyY3ZyX2tleTtcXG4gMTQ4OlxcdFxcdHU2NFxcdGRhdGFfYWNrO1xcbiAxNDk6XFx0XFx0dTY0XFx0ZGF0YV9zZXE7XFxuIDE1MDpcXHRcXHR1MzJcXHRzdWJmbG93X3NlcTtcXG4gMTUxOlxcdFxcdHUxNlxcdGRhdGFfbGVuO1xcbiAxNTI6XFx0XFx0X19zdW0xNlxcdGNzdW07XFxuIDE1MzpcXHRcXHRzdHJ1Y3RfZ3JvdXAoc3RhdHVzLFxcbiAxNTQ6XFx0XFx0XFx0dTE2IHN1Ym9wdGlvbnM7XFxuIDE1NTpcXHRcXHRcXHR1MTYgdXNlX21hcDoxLFxcbiAxNTY6XFx0XFx0XFx0ICAgIGRzbjY0OjEsXFxuIDE1NzpcXHRcXHRcXHQgICAgZGF0YV9maW46MSxcXG4gMTU4OlxcdFxcdFxcdCAgICB1c2VfYWNrOjEsXFxuIDE1OTpcXHRcXHRcXHQgICAgYWNrNjQ6MSxcXG4gMTYwOlxcdFxcdFxcdCAgICBtcGNfbWFwOjEsXFxuIDE2MTpcXHRcXHRcXHQgICAgcmVzZXRfcmVhc29uOjQsXFxuIDE2MjpcXHRcXHRcXHQgICAgcmVzZXRfdHJhbnNpZW50OjEsXFxuIDE2MzpcXHRcXHRcXHQgICAgZWNobzoxLFxcbiAxNjQ6XFx0XFx0XFx0ICAgIGJhY2t1cDoxLFxcbiAxNjU6XFx0XFx0XFx0ICAgIGRlbnlfam9pbl9pZDA6MSxcXG4gMTY2OlxcdFxcdFxcdCAgICBfX3VudXNlZDoyO1xcbiAxNjc6XFx0XFx0KTtcXG4gMTY4OlxcdFxcdHU4XFx0am9pbl9pZDtcXG4gMTY5OlxcdFxcdHUzMlxcdHRva2VuO1xcbiAxNzA6XFx0XFx0dTMyXFx0bm9uY2U7XFxuIDE3MTpcXHRcXHR1NjRcXHR0aG1hYztcXG4gMTcyOlxcdFxcdHU4XFx0aG1hY1tNUFRDUE9QVF9ITUFDX0xFTl07XFxuIDE3MzpcXHRcXHRzdHJ1Y3QgbXB0Y3BfYWRkcl9pbmZvIGFkZHI7XFxuIDE3NDpcXHRcXHRzdHJ1Y3QgbXB0Y3Bfcm1fbGlzdCBybV9saXN0O1xcbiAxNzU6XFx0XFx0dTY0XFx0YWhtYWM7XFxuIDE3NjpcXHRcXHR1NjRcXHRmYWlsX3NlcTtcXG4gMTc3OlxcdH07XFxuIDE3ODpcXHRcXG4gMTc5OlxcdHN0YXRpYyBpbmxpbmUgX19iZTMyIG1wdGNwX29wdGlvbih1OCBzdWJvcHQsIHU4IGxlbiwgdTggbmliLCB1OCBmaWVsZClcXG4gMTgwOlxcdHtcXG4gMTgxOlxcdFxcdHJldHVybiBodG9ubCgoVENQT1BUX01QVENQIFxcdTAwM2NcXHUwMDNjIDI0KSB8IChsZW4gXFx1MDAzY1xcdTAwM2MgMTYpIHwgKHN1Ym9wdCBcXHUwMDNjXFx1MDAzYyAxMikgfFxcbiAxODI6XFx0XFx0XFx0ICAgICAoKG5pYiBcXHUwMDI2IDB4RikgXFx1MDAzY1xcdTAwM2MgOCkgfCBmaWVsZCk7XFxuIDE4MzpcXHR9XFxuIDE4NDpcXHRcXG4gMTg1OlxcdGVudW0gbXB0Y3BfcG1fc3RhdHVzIHtcXG4gMTg2OlxcdFxcdE1QVENQX1BNX0FERF9BRERSX1JFQ0VJVkVELFxcbiAxODc6XFx0XFx0TVBUQ1BfUE1fQUREX0FERFJfU0VORF9BQ0ssXFxuIDE4ODpcXHRcXHRNUFRDUF9QTV9STV9BRERSX1JFQ0VJVkVELFxcbiAxODk6XFx0XFx0TVBUQ1BfUE1fRVNUQUJMSVNIRUQsXFxuIDE5MDpcXHRcXHRNUFRDUF9QTV9TVUJGTE9XX0VTVEFCTElTSEVELFxcbiAxOTE6XFx0XFx0TVBUQ1BfUE1fQUxSRUFEWV9FU1RBQkxJU0hFRCxcXHQvKiBwZXJzaXN0ZW50IHN0YXR1cywgc2V0IGFmdGVyIEVTVEFCTElTSEVEIGV2ZW50ICovXFxuIDE5MjpcXHRcXHRNUFRDUF9QTV9NUENfRU5EUE9JTlRfQUNDT1VOVEVEIC8qIHBlcnNpc3RlbnQgc3RhdHVzLCBzZXQgYWZ0ZXIgTVBDIGxvY2FsIGFkZHJlc3MgaXNcXG4gMTkzOlxcdFxcdFxcdFxcdFxcdFxcdCAqIGFjY291bnRlZCBpbnQgaWRfYXZhaWxfYml0bWFwXFxuIDE5NDpcXHRcXHRcXHRcXHRcXHRcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDk6MDYuNDgyMjI2NDQzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwNjc1MjM3OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGF0YSBGaW4gRmxhZyBpbiBNUFRDUCBEU1MgT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgYHN0YXR1c2Agc3RydWN0IGluIE1QVENQIGp1bXBzIG91dCBhdCBtZS4gSSBzZWUgdGhhdCBpdCBidW5kbGVzIHZhcmlvdXMgZmxhZ3MsIGluY2x1ZGluZyBgZGF0YV9maW5gLCBgZHNuNjRgLCBgdXNlX21hcGAsIGBhY2s2NGAsIGFuZCBgdXNlX2Fja2AuICBgbXB0Y3BfZ2V0X29wdGlvbnNgIGlzIGNydWNpYWwgaGVyZSwgYXMgaXQgaW5pdGlhbGx5IHplcm9lcyBvdXQgdGhlIGVudGlyZSBgc3RhdHVzYCBmaWVsZCwgbWVhbmluZyBgZGF0YV9maW5gIHN0YXJ0cyBhcyBhIGNsZWFuIHplcm8uXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyB3aXRoaW4gYG1wdGNwX3BhcnNlX29wdGlvbmAuIFByZXZpb3VzbHksIGBkYXRhX2ZpbmAgd2FzIHNldCBkaXJlY3RseSBmcm9tIHRoZSBgZmxhZ3NgIGJ5dGUsIHJlZ2FyZGxlc3Mgb2Ygb3RoZXIgb3B0aW9ucy4gTm93LCBob3dldmVyLCB0aGUgbG9naWMgaXMgc3VidGx5IGFsdGVyZWQuIGBkYXRhX2ZpbmAgaXMgY29uZGl0aW9uYWxseSBzZXQgKm9ubHkqIGlmIGB1c2VfbWFwYCBpcyB0cnVlLiAgVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgc2hpZnQuICBJZiBhIERTUyBvcHRpb24gZG9lc24ndCBpbmNsdWRlIGEgbWFwLCB0aGUgYGRhdGFfZmluYCBmbGFnIHJlbWFpbnMgYXQgaXRzIGluaXRpYWxpemVkIHZhbHVlIG9mIHplcm8uIFRoYXQncyBhIGRlZmluaXRlIGNoYW5nZSBpbiBiZWhhdmlvciBhbmQgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbk15IHRoaW5raW5nIGlzIHRoYXQgdGhpcyBjaGFuZ2UgY291bGQgaW50cm9kdWNlIHN1YnRsZSBlZGdlIGNhc2VzLCBzbyBpdCdzIHdvcnRoIHBva2luZyBhcm91bmQuIEknbSBmb2N1c2luZyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZDogYG1wdGNwX2luY29taW5nX29wdGlvbnNgLCBgbXB0Y3BfZ2V0X29wdGlvbnNgLCBhbmQgYG1wdGNwX3BhcnNlX29wdGlvbmAsIGV2ZW4gdGhvdWdoIHRoZSBsYXR0ZXIgaXMgc3RhdGljLCBhcyBJIGNhbiBzdGlsbCBpbmNsdWRlIGl0IGFzIHBhcnQgb2YgbXkgZm9jdXMgc2V0LiAgSSBhbSBhbHNvIGtlZXBpbmcgaW4gbWluZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgdGhhdCB3b3VsZCBiZSBhZmZlY3RlZCBieSBhIGNoYW5nZSBpbiBgZGF0YV9maW5gLCBzdWNoIGFzIGBtcHRjcF9zdWJmbG93X2RhdGFfYXZhaWxhYmxlYC4gIEl0J3MgY3J1Y2lhbCB0byB0cmFjZSBob3cgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBzdWJzZXF1ZW50bHkgdXNlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgY29uZGl0aW9uYWwgaW5pdGlhbGl6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NjAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0OToyNy4xNTc0NjYyN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAzOTEwMjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhdGFfZmluXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tcHRjcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21wdGNwL29wdGlvbnMuYz0yMz1zdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTc0LVxcdFxcdGlmIChtcF9vcHQtXFx1MDAzZXVzZV9tYXApIHtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjE3NTpcXHRcXHRcXHRtcF9vcHQtXFx1MDAzZWRhdGFfZmluID0gKGZsYWdzIFxcdTAwMjYgTVBUQ1BfRFNTX0RBVEFfRklOKSAhPSAwO1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTc2LVxcdFxcdFxcdGlmIChtcF9vcHQtXFx1MDAzZWRzbjY0KVxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy0xODEtXFxubmV0L21wdGNwL29wdGlvbnMuYzoxODI6XFx0XFx0cHJfZGVidWcoXFxcImRhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxcXFxuXFxcIixcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjE4MzpcXHRcXHRcXHQgbXBfb3B0LVxcdTAwM2VkYXRhX2ZpbiwgbXBfb3B0LVxcdTAwM2Vkc242NCxcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTE4NC1cXHRcXHRcXHQgbXBfb3B0LVxcdTAwM2V1c2VfbWFwLCBtcF9vcHQtXFx1MDAzZWFjazY0LFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz00NDk9c3RhdGljIGJvb2wgbXB0Y3BfZXN0YWJsaXNoZWRfb3B0aW9uc19tcChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L21wdGNwL29wdGlvbnMuYzo0NTA6XFx0XFx0XFx0XFx0XFx0IGJvb2wgc25kX2RhdGFfZmluX2VuYWJsZSwgaW50ICpzaXplLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtNDUxLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgbXB0Y3Bfb3V0X29wdGlvbnMgKm9wdHMpXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTQ2OC1cXHQvKiBNUEMvTVBKIG5lZWRlZCBvbmx5IG9uIDNyZCBhY2sgcGFja2V0LCBEQVRBX0ZJTiBhbmQgVENQIHNodXRkb3duIHRha2UgcHJlY2VkZW5jZSAqL1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6NDY5OlxcdGlmIChSRUFEX09OQ0Uoc3ViZmxvdy1cXHUwMDNlZnVsbHlfZXN0YWJsaXNoZWQpIHx8IHNuZF9kYXRhX2Zpbl9lbmFibGUgfHxcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTQ3MC1cXHQgICAgc3ViZmxvdy1cXHUwMDNlc25kX2lzbiAhPSBUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZXNlcSB8fFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy01MzItXFxubmV0L21wdGNwL29wdGlvbnMuYzo1MzM6c3RhdGljIHZvaWQgbXB0Y3Bfd3JpdGVfZGF0YV9maW4oc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTUzNC1cXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG1wdGNwX2V4dCAqZXh0KVxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy01MzgtXFx0ICovXFxubmV0L21wdGNwL29wdGlvbnMuYzo1Mzk6XFx0dTY0IGRhdGFfZmluX3R4X3NlcSA9IFJFQURfT05DRShtcHRjcF9zayhzdWJmbG93LVxcdTAwM2Vjb25uKS1cXHUwMDNld3JpdGVfc2VxKSAtIDE7XFxubmV0L21wdGNwL29wdGlvbnMuYy01NDAtXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU0NC1cXHRcXHQgKi9cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU0NTpcXHRcXHRleHQtXFx1MDAzZWRhdGFfZmluID0gMTtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU0Ni1cXHRcXHRleHQtXFx1MDAzZXVzZV9tYXAgPSAxO1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTQ3LVxcdFxcdGV4dC1cXHUwMDNlZHNuNjQgPSAxO1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6NTQ4OlxcdFxcdGV4dC1cXHUwMDNlZGF0YV9zZXEgPSBkYXRhX2Zpbl90eF9zZXE7XFxubmV0L21wdGNwL29wdGlvbnMuYy01NDktXFx0XFx0ZXh0LVxcdTAwM2VzdWJmbG93X3NlcSA9IDA7XFxubmV0L21wdGNwL29wdGlvbnMuYy01NTAtXFx0XFx0ZXh0LVxcdTAwM2VkYXRhX2xlbiA9IDE7XFxubmV0L21wdGNwL29wdGlvbnMuYzo1NTE6XFx0fSBlbHNlIGlmIChleHQtXFx1MDAzZWRhdGFfc2VxICsgZXh0LVxcdTAwM2VkYXRhX2xlbiA9PSBkYXRhX2Zpbl90eF9zZXEpIHtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU1Mi1cXHRcXHQvKiBJZiB0aGVyZSdzIGFuIGV4aXN0aW5nIERTUyBtYXBwaW5nIGFuZCBpdCBpcyB0aGVcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTU1LVxcdFxcdCAqL1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6NTU2OlxcdFxcdGV4dC1cXHUwMDNlZGF0YV9maW4gPSAxO1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTU3LVxcdFxcdGV4dC1cXHUwMDNlZGF0YV9sZW4rKztcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmM9NTYxPXN0YXRpYyBib29sIG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnNfZHNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU2MjpcXHRcXHRcXHRcXHRcXHQgIGJvb2wgc25kX2RhdGFfZmluX2VuYWJsZSwgaW50ICpzaXplLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTYzLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1wdGNwX291dF9vcHRpb25zICpvcHRzKVxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy01ODAtXFxubmV0L21wdGNwL29wdGlvbnMuYzo1ODE6XFx0aWYgKCFza2IgfHwgKG1wZXh0IFxcdTAwMjZcXHUwMDI2IG1wZXh0LVxcdTAwM2V1c2VfbWFwKSB8fCBzbmRfZGF0YV9maW5fZW5hYmxlKSB7XFxubmV0L21wdGNwL29wdGlvbnMuYy01ODItXFx0XFx0dW5zaWduZWQgaW50IG1hcF9zaXplID0gVENQT0xFTl9NUFRDUF9EU1NfQkFTRSArIFRDUE9MRU5fTVBUQ1BfRFNTX01BUDY0O1xcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy01OTEtXFx0XFx0ZHNzX3NpemUgPSBtYXBfc2l6ZTtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU5MjpcXHRcXHRpZiAoc2tiIFxcdTAwMjZcXHUwMDI2IHNuZF9kYXRhX2Zpbl9lbmFibGUpXFxubmV0L21wdGNwL29wdGlvbnMuYzo1OTM6XFx0XFx0XFx0bXB0Y3Bfd3JpdGVfZGF0YV9maW4oc3ViZmxvdywgc2tiLCBcXHUwMDI2b3B0cy1cXHUwMDNlZXh0X2NvcHkpO1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTk0LVxcdFxcdG9wdHMtXFx1MDAzZXN1Ym9wdGlvbnMgPSBPUFRJT05fTVBUQ1BfRFNTO1xcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz04MTA9aW50IG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy04MTYtXFx0aW50IHRvdGFsX3NpemUgPSAwO1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6ODE3OlxcdGJvb2wgc25kX2RhdGFfZmluO1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtODE4LVxcdGJvb2wgcmV0ID0gZmFsc2U7XFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTg0Mi1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjg0MzpcXHRzbmRfZGF0YV9maW4gPSBtcHRjcF9kYXRhX2Zpbl9lbmFibGVkKG1zayk7XFxubmV0L21wdGNwL29wdGlvbnMuYzo4NDQ6XFx0aWYgKG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnNfbXAoc2ssIHNrYiwgc25kX2RhdGFfZmluLCBcXHUwMDI2b3B0X3NpemUsIG9wdHMpKVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtODQ1LVxcdFxcdHJldCA9IHRydWU7XFxubmV0L21wdGNwL29wdGlvbnMuYzo4NDY6XFx0ZWxzZSBpZiAobXB0Y3BfZXN0YWJsaXNoZWRfb3B0aW9uc19kc3Moc2ssIHNrYiwgc25kX2RhdGFfZmluLCBcXHUwMDI2b3B0X3NpemUsIG9wdHMpKSB7XFxubmV0L21wdGNwL29wdGlvbnMuYy04NDctXFx0XFx0aW50IG1wX2ZhaWxfc2l6ZTtcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmM9MTA1Nj1zdGF0aWMgdm9pZCBhY2tfdXBkYXRlX21zayhzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy0xMDk3LVxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTA5ODpib29sIG1wdGNwX3VwZGF0ZV9yY3ZfZGF0YV9maW4oc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgdTY0IGRhdGFfZmluX3NlcSwgYm9vbCB1c2VfNjRiaXQpXFxubmV0L21wdGNwL29wdGlvbnMuYy0xMDk5LXtcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTEwNC1cXHQgKi9cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExMDU6XFx0aWYgKFJFQURfT05DRShtc2stXFx1MDAzZXJjdl9kYXRhX2ZpbikpXFxubmV0L21wdGNwL29wdGlvbnMuYy0xMTA2LVxcdFxcdHJldHVybiBmYWxzZTtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExMDctXFxubmV0L21wdGNwL29wdGlvbnMuYzoxMTA4OlxcdFdSSVRFX09OQ0UobXNrLVxcdTAwM2VyY3ZfZGF0YV9maW5fc2VxLFxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTEwOTpcXHRcXHQgICBtcHRjcF9leHBhbmRfc2VxKFJFQURfT05DRShtc2stXFx1MDAzZWFja19zZXEpLCBkYXRhX2Zpbl9zZXEsIHVzZV82NGJpdCkpO1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTExMDpcXHRXUklURV9PTkNFKG1zay1cXHUwMDNlcmN2X2RhdGFfZmluLCAxKTtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExMTEtXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTExMzY9Ym9vbCBtcHRjcF9pbmNvbWluZ19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTIyOS1cXHRpZiAoVENQX1NLQl9DQihza2IpLVxcdTAwM2VzZXEgPT0gVENQX1NLQl9DQihza2IpLVxcdTAwM2VlbmRfc2VxKSB7XFxubmV0L21wdGNwL29wdGlvbnMuYzoxMjMwOlxcdFxcdGlmIChtcF9vcHQuZGF0YV9maW4gXFx1MDAyNlxcdTAwMjYgbXBfb3B0LmRhdGFfbGVuID09IDEgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjEyMzE6XFx0XFx0ICAgIG1wdGNwX3VwZGF0ZV9yY3ZfZGF0YV9maW4obXNrLCBtcF9vcHQuZGF0YV9zZXEsIG1wX29wdC5kc242NCkpXFxubmV0L21wdGNwL29wdGlvbnMuYy0xMjMyLVxcdFxcdFxcdG1wdGNwX3NjaGVkdWxlX3dvcmsoKHN0cnVjdCBzb2NrICopbXNrKTtcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTI1My1cXHRcXHRcXHRtcGV4dC1cXHUwMDNlbXBjX21hcCA9IDE7XFxubmV0L21wdGNwL29wdGlvbnMuYzoxMjU0OlxcdFxcdFxcdG1wZXh0LVxcdTAwM2VkYXRhX2ZpbiA9IDA7XFxubmV0L21wdGNwL29wdGlvbnMuYy0xMjU1LVxcdFxcdH0gZWxzZSB7XFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTEyNTgtXFx0XFx0XFx0bXBleHQtXFx1MDAzZWRzbjY0ID0gbXBfb3B0LmRzbjY0O1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTI1OTpcXHRcXHRcXHRtcGV4dC1cXHUwMDNlZGF0YV9maW4gPSBtcF9vcHQuZGF0YV9maW47XFxubmV0L21wdGNwL29wdGlvbnMuYy0xMjYwLVxcdFxcdH1cXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmM9MTM4ND12b2lkIG1wdGNwX3dyaXRlX29wdGlvbnMoc3RydWN0IHRjcGhkciAqdGgsIF9fYmUzMiAqcHRyLCBzdHJ1Y3QgdGNwX3NvY2sgKnRwLFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy0xNDMzLVxcdFxcdFxcdGZsYWdzIHw9IE1QVENQX0RTU19IQVNfTUFQIHwgTVBUQ1BfRFNTX0RTTjY0O1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTQzNDpcXHRcXHRcXHRpZiAobXBleHQtXFx1MDAzZWRhdGFfZmluKVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTQzNS1cXHRcXHRcXHRcXHRmbGFncyB8PSBNUFRDUF9EU1NfREFUQV9GSU47XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz01MD1zdGF0aWMgdm9pZCBfX21wdGNwX2Rlc3Ryb3lfc29jayhzdHJ1Y3Qgc29jayAqc2spO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjUxOnN0YXRpYyB2b2lkIG1wdGNwX2NoZWNrX3NlbmRfZGF0YV9maW4oc3RydWN0IHNvY2sgKnNrKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy01Mi1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTQ0MT1zdGF0aWMgdm9pZCBtcHRjcF9zaHV0ZG93bl9zdWJmbG93cyhzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDU1LS8qIGNhbGxlZCB1bmRlciB0aGUgbXNrIHNvY2tldCBsb2NrICovXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NDU2OnN0YXRpYyBib29sIG1wdGNwX3BlbmRpbmdfZGF0YV9maW5fYWNrKHN0cnVjdCBzb2NrICpzaylcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NTcte1xcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDY0LVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ2NTpzdGF0aWMgdm9pZCBtcHRjcF9jaGVja19kYXRhX2Zpbl9hY2soc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ2Ni17XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NjktXFx0LyogTG9vayBmb3IgYW4gYWNrbm93bGVkZ2VkIERBVEFfRklOICovXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NDcwOlxcdGlmIChtcHRjcF9wZW5kaW5nX2RhdGFfZmluX2FjayhzaykpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0NzE6XFx0XFx0V1JJVEVfT05DRShtc2stXFx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsIDApO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ3Mi1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ4OC0vKiBjYW4gYmUgY2FsbGVkIHdpdGggbm8gbG9jayBhY3F1aXJlZCAqL1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ4OTpzdGF0aWMgYm9vbCBtcHRjcF9wZW5kaW5nX2RhdGFfZmluKHN0cnVjdCBzb2NrICpzaywgdTY0ICpzZXEpXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDkwLXtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ5Mi1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0OTM6XFx0aWYgKFJFQURfT05DRShtc2stXFx1MDAzZXJjdl9kYXRhX2ZpbikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00OTQtXFx0ICAgICgoMSBcXHUwMDNjXFx1MDAzYyBpbmV0X3NrX3N0YXRlX2xvYWQoc2spKSBcXHUwMDI2XFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDk1LVxcdCAgICAgKFRDUEZfRVNUQUJMSVNIRUQgfCBUQ1BGX0ZJTl9XQUlUMSB8IFRDUEZfRklOX1dBSVQyKSkpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0OTY6XFx0XFx0dTY0IHJjdl9kYXRhX2Zpbl9zZXEgPSBSRUFEX09OQ0UobXNrLVxcdTAwM2VyY3ZfZGF0YV9maW5fc2VxKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00OTctXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NDk4OlxcdFxcdGlmIChSRUFEX09OQ0UobXNrLVxcdTAwM2VhY2tfc2VxKSA9PSByY3ZfZGF0YV9maW5fc2VxKSB7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDk5LVxcdFxcdFxcdGlmIChzZXEpXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NTAwOlxcdFxcdFxcdFxcdCpzZXEgPSByY3ZfZGF0YV9maW5fc2VxO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTUwMS1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTU5NT1zdGF0aWMgdm9pZCBtcHRjcF9jbGVhbnVwX3JidWYoc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgaW50IGNvcGllZClcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYxMy1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo2MTQ6c3RhdGljIHZvaWQgbXB0Y3BfY2hlY2tfZGF0YV9maW4oc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYxNS17XFxubmV0L21wdGNwL3Byb3RvY29sLmMtNjE2LVxcdHN0cnVjdCBtcHRjcF9zb2NrICptc2sgPSBtcHRjcF9zayhzayk7XFxubmV0L21wdGNwL3Byb3RvY29sLmM6NjE3OlxcdHU2NCByY3ZfZGF0YV9maW5fc2VxO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYxOC1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYyMC1cXHQgKiBvZiB0aGUgY29ubmVjdGlvbiBpcyBpbiBFU1RBQkxJU0hFRCwgRklOX1dBSVQxLCBvciBGSU5fV0FJVDIuXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NjIxOlxcdCAqIG1zay1cXHUwMDNlcmN2X2RhdGFfZmluIHdhcyBzZXQgd2hlbiBwYXJzaW5nIHRoZSBpbmNvbWluZyBvcHRpb25zXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNjIyLVxcdCAqIGF0IHRoZSBzdWJmbG93IGxldmVsIGFuZCB0aGUgbXNrIGxvY2sgd2FzIG5vdCBoZWxkLCBzbyB0aGlzXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MzEtXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NjMyOlxcdGlmIChtcHRjcF9wZW5kaW5nX2RhdGFfZmluKHNrLCBcXHUwMDI2cmN2X2RhdGFfZmluX3NlcSkpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MzMtXFx0XFx0V1JJVEVfT05DRShtc2stXFx1MDAzZWFja19zZXEsIG1zay1cXHUwMDNlYWNrX3NlcSArIDEpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjYzNDpcXHRcXHRXUklURV9PTkNFKG1zay1cXHUwMDNlcmN2X2RhdGFfZmluLCAwKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MzUtXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz04NzY9c3RhdGljIGJvb2wgbW92ZV9za2JzX3RvX21zayhzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLCBzdHJ1Y3Qgc29jayAqc3NrKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtODkwLVxcdCAqL1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjg5MTpcXHRpZiAobXB0Y3BfcGVuZGluZ19kYXRhX2ZpbihzaywgTlVMTCkpXFxubmV0L21wdGNwL3Byb3RvY29sLmMtODkyLVxcdFxcdG1wdGNwX3NjaGVkdWxlX3dvcmsoc2spO1xcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9MTA3Mj1zdGF0aWMgdm9pZCBfX21wdGNwX2NsZWFuX3VuYShzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTIwLVxcdGlmIChzbmRfdW5hID09IG1zay1cXHUwMDNlc25kX254dCBcXHUwMDI2XFx1MDAyNiBzbmRfdW5hID09IG1zay1cXHUwMDNld3JpdGVfc2VxKSB7XFxubmV0L21wdGNwL3Byb3RvY29sLmM6MTEyMTpcXHRcXHRpZiAobXB0Y3BfcnR4X3RpbWVyX3BlbmRpbmcoc2spIFxcdTAwMjZcXHUwMDI2ICFtcHRjcF9kYXRhX2Zpbl9lbmFibGVkKG1zaykpXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMTEyMi1cXHRcXHRcXHRtcHRjcF9zdG9wX3J0eF90aW1lcihzayk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTI2LVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjExMjc6XFx0aWYgKG1wdGNwX3BlbmRpbmdfZGF0YV9maW5fYWNrKHNrKSlcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTI4LVxcdFxcdG1wdGNwX3NjaGVkdWxlX3dvcmsoc2spO1xcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9MTY2Nz12b2lkIF9fbXB0Y3BfcHVzaF9wZW5kaW5nKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMTczMC1cXHRcXHRcXHRtcHRjcF9yZXNldF9ydHhfdGltZXIoc2spO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjE3MzE6XFx0XFx0bXB0Y3BfY2hlY2tfc2VuZF9kYXRhX2Zpbihzayk7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtMTczMi1cXHR9XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0xNzM1PXN0YXRpYyB2b2lkIF9fbXB0Y3Bfc3ViZmxvd19wdXNoX3BlbmRpbmcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqc3NrLCBib29sIGZpcnN0KVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMTc5NS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoxNzk2OlxcdFxcdGlmIChtc2stXFx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xNzk3LVxcdFxcdCAgICBtc2stXFx1MDAzZXNuZF9ueHQgKyAxID09IG1zay1cXHUwMDNld3JpdGVfc2VxKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9MjIwNj1zdGF0aWMgYm9vbCBfX21wdGNwX21vdmVfc2ticyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBsaXN0X2hlYWQgKnNrYnMsIHUzMiAqZGVsdGEpXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yMjMwLVxcdGlmIChtb3ZlZClcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyMjMxOlxcdFxcdG1wdGNwX2NoZWNrX2RhdGFfZmluKChzdHJ1Y3Qgc29jayAqKW1zayk7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjIzMi1cXHRyZXR1cm4gbW92ZWQ7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0yNzgzPXN0YXRpYyB2b2lkIF9fbXB0Y3BfcmV0cmFucyhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yNzk4LVxcdGlmICghZGZyYWcpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyNzk5OlxcdFxcdGlmIChtcHRjcF9kYXRhX2Zpbl9lbmFibGVkKG1zaykpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yODAwLVxcdFxcdFxcdHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTI5ODQ9c3RhdGljIHZvaWQgbXB0Y3Bfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI5OTktXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzAwMDpcXHRtcHRjcF9jaGVja19zZW5kX2RhdGFfZmluKHNrKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMDAxOlxcdG1wdGNwX2NoZWNrX2RhdGFfZmluX2Fjayhzayk7XFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzAwMjpcXHRtcHRjcF9jaGVja19kYXRhX2Zpbihzayk7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzAwMy1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTMxMzQ9dm9pZCBtcHRjcF9zdWJmbG93X3NodXRkb3duKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKnNzaywgaW50IGhvdylcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMxNTEtXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzE1MjpcXHRcXHRcXHQvKiBzaW11bGF0ZSB0aGUgZGF0YV9maW4gYWNrIHJlY2VwdGlvbiB0byBsZXQgdGhlIHN0YXRlXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzE1My1cXHRcXHRcXHQgKiBtYWNoaW5lIG1vdmUgZm9yd2FyZFxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9MzIwOT1zdGF0aWMgaW50IG1wdGNwX2Nsb3NlX3N0YXRlKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMTgtXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzIxOTpzdGF0aWMgdm9pZCBtcHRjcF9jaGVja19zZW5kX2RhdGFfZmluKHN0cnVjdCBzb2NrICpzaylcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjIwLXtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMjMtXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzIyNDpcXHRwcl9kZWJ1ZyhcXFwibXNrPSVwIHNuZF9kYXRhX2Zpbl9lbmFibGU9JWQgcGVuZGluZz0lZCBzbmRfbnh0PSVsbHUgd3JpdGVfc2VxPSVsbHVcXFxcblxcXCIsXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzIyNTpcXHRcXHQgbXNrLCBtc2stXFx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsICEhbXB0Y3Bfc2VuZF9oZWFkKHNrKSxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjI2LVxcdFxcdCBtc2stXFx1MDAzZXNuZF9ueHQsIG1zay1cXHUwMDNld3JpdGVfc2VxKTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMzAtXFx0ICovXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzIzMTpcXHRpZiAoIW1zay1cXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSB8fCBtc2stXFx1MDAzZXNuZF9ueHQgKyAxICE9IG1zay1cXHUwMDNld3JpdGVfc2VxIHx8XFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzIzMi1cXHQgICAgbXB0Y3Bfc2VuZF9oZWFkKHNrKSlcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTMyNDQ9c3RhdGljIHZvaWQgX19tcHRjcF93cl9zaHV0ZG93bihzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjQ3LVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjMyNDg6XFx0cHJfZGVidWcoXFxcIm1zaz0lcCBzbmRfZGF0YV9maW5fZW5hYmxlPSVkIHNodXRkb3duPSV4IHN0YXRlPSVkIHBlbmRpbmc9JWRcXFxcblxcXCIsXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzI0OTpcXHRcXHQgbXNrLCBtc2stXFx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsIHNrLVxcdTAwM2Vza19zaHV0ZG93biwgc2stXFx1MDAzZXNrX3N0YXRlLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyNTAtXFx0XFx0ICEhbXB0Y3Bfc2VuZF9oZWFkKHNrKSk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjUzLVxcdFdSSVRFX09OQ0UobXNrLVxcdTAwM2V3cml0ZV9zZXEsIG1zay1cXHUwMDNld3JpdGVfc2VxICsgMSk7XFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzI1NDpcXHRXUklURV9PTkNFKG1zay1cXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSwgMSk7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzI1NS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMjU2OlxcdG1wdGNwX2NoZWNrX3NlbmRfZGF0YV9maW4oc2spO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyNTctfVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9MzQ0Mj1zdGF0aWMgaW50IG1wdGNwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zNDc5LVxcdFdSSVRFX09OQ0UobXNrLVxcdTAwM2VmdWxseV9lc3RhYmxpc2hlZCwgZmFsc2UpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjM0ODA6XFx0V1JJVEVfT05DRShtc2stXFx1MDAzZXJjdl9kYXRhX2ZpbiwgZmFsc2UpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjM0ODE6XFx0V1JJVEVfT05DRShtc2stXFx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsIGZhbHNlKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zNDgyLVxcdFdSSVRFX09OQ0UobXNrLVxcdTAwM2VyY3ZfZmFzdGNsb3NlLCBmYWxzZSk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD0xNDU9c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQge1xcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmgtMTU2LVxcdFxcdCAgICBkc242NDoxLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjE1NzpcXHRcXHQgICAgZGF0YV9maW46MSxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xNTgtXFx0XFx0ICAgIHVzZV9hY2s6MSxcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oPTI4MD1zdHJ1Y3QgbXB0Y3Bfc29jayB7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0yOTItXFx0YXRvbWljNjRfdFxcdHJjdl93bmRfc2VudDtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaDoyOTM6XFx0dTY0XFx0XFx0cmN2X2RhdGFfZmluX3NlcTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0yOTQtXFx0dTY0XFx0XFx0Ynl0ZXNfcmV0cmFucztcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTMxNC1cXHRib29sXFx0XFx0ZnVsbHlfZXN0YWJsaXNoZWQ7XFxubmV0L21wdGNwL3Byb3RvY29sLmg6MzE1OlxcdGJvb2xcXHRcXHRyY3ZfZGF0YV9maW47XFxubmV0L21wdGNwL3Byb3RvY29sLmg6MzE2OlxcdGJvb2xcXHRcXHRzbmRfZGF0YV9maW5fZW5hYmxlO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTMxNy1cXHRib29sXFx0XFx0cmN2X2Zhc3RjbG9zZTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oPTU0Mj1zdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19jb250ZXh0IHtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTU3MC1cXHRcXHRtYXBfY3N1bV9yZXFkIDogMSxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaDo1NzE6XFx0XFx0bWFwX2RhdGFfZmluIDogMSxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC01NzItXFx0XFx0bXBjX21hcCA6IDEsXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05Nzk9dm9pZCBfX21wdGNwX2Vycm9yX3JlcG9ydChzdHJ1Y3Qgc29jayAqc2spO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjk4MDpib29sIG1wdGNwX3VwZGF0ZV9yY3ZfZGF0YV9maW4oc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgdTY0IGRhdGFfZmluX3NlcSwgYm9vbCB1c2VfNjRiaXQpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjk4MTpzdGF0aWMgaW5saW5lIGJvb2wgbXB0Y3BfZGF0YV9maW5fZW5hYmxlZChjb25zdCBzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrKVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTk4Mi17XFxubmV0L21wdGNwL3Byb3RvY29sLmg6OTgzOlxcdHJldHVybiBSRUFEX09OQ0UobXNrLVxcdTAwM2VzbmRfZGF0YV9maW5fZW5hYmxlKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTk4NC1cXHQgICAgICAgUkVBRF9PTkNFKG1zay1cXHUwMDNld3JpdGVfc2VxKSA9PSBSRUFEX09OQ0UobXNrLVxcdTAwM2VzbmRfbnh0KTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oPTEzMDQ9c3RhdGljIGlubGluZSBib29sIG1wdGNwX3RyeV9mYWxsYmFjayhzdHJ1Y3Qgc29jayAqc3NrLCBpbnQgZmJfbWliKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmgtMTMxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxubmV0L21wdGNwL3Byb3RvY29sLmg6MTMxMzpcXHRpZiAoUkVBRF9PTkNFKG1zay1cXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSkgXFx1MDAyNlxcdTAwMjYgIShzc2stXFx1MDAzZXNrX3NodXRkb3duIFxcdTAwMjYgU0VORF9TSFVURE9XTikpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xMzE0LVxcdFxcdGdmcF90IHNhdmVkX2FsbG9jYXRpb24gPSBzc2stXFx1MDAzZXNrX2FsbG9jYXRpb247XFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTEwMzA9c3RhdGljIGVudW0gbWFwcGluZ19zdGF0dXMgdmFsaWRhdGVfZGF0YV9jc3VtKHN0cnVjdCBzb2NrICpzc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEwOTctXFx0XFx0XFx0XFx0IHN1YmZsb3ctXFx1MDAzZW1hcF9zdWJmbG93X3NlcSxcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjEwOTg6XFx0XFx0XFx0XFx0IHN1YmZsb3ctXFx1MDAzZW1hcF9kYXRhX2xlbiArIHN1YmZsb3ctXFx1MDAzZW1hcF9kYXRhX2ZpbixcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEwOTktXFx0XFx0XFx0XFx0IHN1YmZsb3ctXFx1MDAzZW1hcF9kYXRhX2NzdW0pO1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz0xMTA5PXN0YXRpYyBlbnVtIG1hcHBpbmdfc3RhdHVzIGdldF9tYXBwaW5nX3N0YXR1cyhzdHJ1Y3Qgc29jayAqc3NrLFxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTU3LVxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE1ODpcXHRpZiAobXBleHQtXFx1MDAzZWRhdGFfZmluID09IDEpIHtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjExNTk6XFx0XFx0dTY0IGRhdGFfZmluX3NlcTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExNjAtXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTYxLVxcdFxcdGlmIChkYXRhX2xlbiA9PSAxKSB7XFxubmV0L21wdGNwL3N1YmZsb3cuYzoxMTYyOlxcdFxcdFxcdGJvb2wgdXBkYXRlZCA9IG1wdGNwX3VwZGF0ZV9yY3ZfZGF0YV9maW4obXNrLCBtcGV4dC1cXHUwMDNlZGF0YV9zZXEsXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTYzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBtcGV4dC1cXHUwMDNlZHNuNjQpO1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTgwLVxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE4MTpcXHRcXHRkYXRhX2Zpbl9zZXEgPSBtcGV4dC1cXHUwMDNlZGF0YV9zZXEgKyBkYXRhX2xlbiAtIDE7XFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTgyLVxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE4MzpcXHRcXHQvKiBJZiBtcGV4dC1cXHUwMDNlZGF0YV9zZXEgaXMgYSAzMi1iaXQgdmFsdWUsIGRhdGFfZmluX3NlcSBtdXN0IGFsc29cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExODQtXFx0XFx0ICogYmUgbGltaXRlZCB0byAzMiBiaXRzLlxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTg2LVxcdFxcdGlmICghbXBleHQtXFx1MDAzZWRzbjY0KVxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE4NzpcXHRcXHRcXHRkYXRhX2Zpbl9zZXEgXFx1MDAyNj0gR0VOTUFTS19VTEwoMzEsIDApO1xcbm5ldC9tcHRjcC9zdWJmbG93LmMtMTE4OC1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjExODk6XFx0XFx0bXB0Y3BfdXBkYXRlX3Jjdl9kYXRhX2Zpbihtc2ssIGRhdGFfZmluX3NlcSwgbXBleHQtXFx1MDAzZWRzbjY0KTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExOTAtXFx0XFx0cHJfZGVidWcoXFxcIkRBVEFfRklOIHdpdGggbWFwcGluZyBzZXE9JWxsdSBkc242ND0lZFxcXFxuXFxcIixcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjExOTE6XFx0XFx0XFx0IGRhdGFfZmluX3NlcSwgbXBleHQtXFx1MDAzZWRzbjY0KTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExOTItXFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEyMjUtXFx0c3ViZmxvdy1cXHUwMDNlbWFwX3ZhbGlkID0gMTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjEyMjY6XFx0c3ViZmxvdy1cXHUwMDNlbWFwX2RhdGFfZmluID0gbXBleHQtXFx1MDAzZWRhdGFfZmluO1xcbm5ldC9tcHRjcC9zdWJmbG93LmMtMTIyNy1cXHRzdWJmbG93LVxcdTAwM2VtcGNfbWFwID0gbXBleHQtXFx1MDAzZW1wY19tYXA7XFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTEyODk9c3RhdGljIHZvaWQgc3ViZmxvd19zY2hlZF93b3JrX2lmX2Nsb3NlZChzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLCBzdHJ1Y3Qgc29jayAqc3NrKVxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMzA5LVxcdCAgICBtc2stXFx1MDAzZWZpcnN0ID09IHNzayBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTMxMDpcXHQgICAgbXB0Y3BfdXBkYXRlX3Jjdl9kYXRhX2Zpbihtc2ssIHN1YmZsb3ctXFx1MDAzZW1hcF9zZXEgK1xcbm5ldC9tcHRjcC9zdWJmbG93LmMtMTMxMS1cXHRcXHRcXHRcXHQgICAgICBzdWJmbG93LVxcdTAwM2VtYXBfZGF0YV9sZW4sIHRydWUpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0OToyNy41NjEzODExOTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxMzU3NDYyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1QVENQIERhdGEgRklOIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGRhdGFfZmluYCBpc3N1ZSwgYW5kIGl0IGxvb2tzIGxpa2UgYG1wdGNwX3VwZGF0ZV9yY3ZfZGF0YV9maW5gIGNvbWVzIGludG8gcGxheSB3aGVuIHRoZSBgZGF0YV9maW5gIGZsYWcgaXMgc2V0LiBUaGF0IG1ha2VzIHNlbnNlLiBCdXQgdGhlIGNvbnRleHQgaXMgYSBiaXQgYnJvYWRlciDigJMgdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgYG1wdGNwX3BhcnNlX29wdGlvbmAsIHdoaWNoIGlzIHRoZSB3b3JraG9yc2UgZm9yIHBhcnNpbmcgVENQIG9wdGlvbnMuXG5cbkFoYSEgSWYgYGRhdGFfZmluYCBpcyBzZXQsIGBtcHRjcF9pbmNvbWluZ19vcHRpb25zYCAqbWlnaHQqIHNldCBgbXBleHQtXHUwMDNlZGF0YV9maW4gPSBtcF9vcHQuZGF0YV9maW47YC4gQW5kIHRoZW4sICp0aGF0J3MqIHdoYXQgYGdldF9tYXBwaW5nX3N0YXR1c2AgY2hlY2tzLiBUaGF0J3MgYSBnb29kIGJyZWFkY3J1bWIgdHJhaWwuIFNvLCBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AgYW5kIGBnZXRfbWFwcGluZ19zdGF0dXNgIGFyZSBkZWZpbml0ZWx5IHRoZSBmdW5jdGlvbnMgdG8gemVybyBpbiBvbi4gVGhleSdyZSB0aGUgY3JpdGljYWwgcGllY2VzIGludm9sdmVkIGluIHNldHRpbmcgYW5kIHJlYWRpbmcgdGhpcyBmbGFnLlxuXG5JIHNob3VsZCBhbHNvIGluY2x1ZGUgYG1wdGNwX3BhcnNlX29wdGlvbmAsIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLiBMZXQncyBzZWUuLi5pcyBpdCBpbmxpbmVkLCBvciBpcyBpdCBhIHByb3BlciBmdW5jdGlvbiBjYWxsPyBUaGF0IGNvdWxkIG1ha2UgYSBkaWZmZXJlbmNlLiBMZXQncyBsaXN0IHRoZXNlIGtleSBmdW5jdGlvbnM6IGBtcHRjcF9pbmNvbWluZ19vcHRpb25zYCwgYG1wdGNwX2dldF9vcHRpb25zYCwgYW5kIGBnZXRfbWFwcGluZ19zdGF0dXNgLiBUaGV5IGFyZSBhbGwgY3JpdGljYWwuXG5cbldhaXQuLi53aGF0IGFib3V0IHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIG1ha2Ugc3VyZSBNUFRDUCBpcyBhY3R1YWxseSBlbmFibGVkLiBPdGhlcndpc2UsIHRoaXMgaXMgYWxsIGFjYWRlbWljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzMyNSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0OTozMi44NzQ5NTgwMzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NjE1NTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVBUQ1BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21wdGNwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbXB0Y3AvS2NvbmZpZy0xLVxcbm5ldC9tcHRjcC9LY29uZmlnOjI6Y29uZmlnIE1QVENQXFxubmV0L21wdGNwL0tjb25maWctMy1cXHRib29sIFxcXCJNUFRDUDogTXVsdGlwYXRoIFRDUFxcXCJcXG4tLVxcbm5ldC9tcHRjcC9LY29uZmlnPTE2PWNvbmZpZyBJTkVUX01QVENQX0RJQUdcXG4tLVxcbm5ldC9tcHRjcC9LY29uZmlnLTE5LVxcbm5ldC9tcHRjcC9LY29uZmlnOjIwOmNvbmZpZyBNUFRDUF9JUFY2XFxubmV0L21wdGNwL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiTVBUQ1A6IElQdjYgc3VwcG9ydCBmb3IgTXVsdGlwYXRoIFRDUFxcXCJcXG4tLVxcbm5ldC9tcHRjcC9LY29uZmlnLTI0LVxcbm5ldC9tcHRjcC9LY29uZmlnOjI1OmNvbmZpZyBNUFRDUF9LVU5JVF9URVNUXFxubmV0L21wdGNwL0tjb25maWctMjYtXFx0dHJpc3RhdGUgXFxcIlRoaXMgYnVpbGRzIHRoZSBNUFRDUCBLVW5pdCB0ZXN0c1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0OTozMy4xNzExMTc4NjJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMTU4MTQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGggbmV0d29yayBwcm90b2NvbCBpbnRlcm5hbHM6XG5cbioqRGl2aW5nIGludG8gdGhlIE1QVENQIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuQWxyaWdodCwgdGhlIGNvcmUgZm9jdXMgc2VlbXMgdG8gYmUgb24gTVBUQ1AgY29uZmlndXJhdGlvbiwgbmF0dXJhbGx5LiBNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIGBNUFRDUGAgaXRzZWxmIOKAkyB0aGF0J3MgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiB0byBpbnZlc3RpZ2F0ZS4gQnV0LCBhcyB3ZSBhbGwga25vdywgdGhpbmdzIGFyZSByYXJlbHkgdGhhdCBzaW1wbGUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuU28sIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IHNjYW4gZm9yICpvdGhlciogcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIHNldHRpbmdzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGl0cyBiZWhhdmlvci4gVGhpcyBjb3VsZCBiZSBhbnl0aGluZyB0aGF0IGludGVncmF0ZXMgd2l0aCBpdCBvciBzaXRzIGFsb25nc2lkZSBpdC4gQSBob2xpc3RpYyBhcHByb2FjaCBpcyBiZXN0LlxuXG5BbmQsIGZpbmFsbHksIEknbGwgbmVlZCB0byBrbm93IHdoZXJlIHRvIGZpbmQgdGhlIGNvZGUgdGhhdCBhY3R1YWxseSBpbXBsZW1lbnRzIGFsbCB0aGlzLiBMZXQncyBzZWUuLi4gdGhlIGZpbGUgaXMgYG5ldC9tcHRjcC9vcHRpb25zLmNgLiBPa2F5LCBub3cgSSBoYXZlIGEgc3RhcnRpbmcgcG9pbnQgYW5kIHRoZSBmaWxlIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTE2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDk6MzYuNTgyNzAxNDAxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAyOTU4NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2JqLVxcXFwkXFxcXChDT05GSUdfTVBUQ1BcXFxcKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbXB0Y3AvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tcHRjcC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5uZXQvbXB0Y3AvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTVBUQ1ApICs9IG1wdGNwLm9cXG5uZXQvbXB0Y3AvTWFrZWZpbGUtMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDk6MzYuNzUzMDAyOTY5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NTQyMjIwMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNUFRDUCBEU1MgT3B0aW9uIFBhcnNpbmcgQ2hhbmdlKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSB0aGUgY3JpdGljYWwgY2hhbmdlIGNlbnRlcnMgYXJvdW5kIGBDT05GSUdfTVBUQ1BgLiBUaGF0J3MgdGhlIG9ubHkgY29uZmlnIGZsYWcgSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoIGhlcmUuIExldCdzIHNlZS4uLiB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSB3YXkgTVBUQ1AgRFNTIG9wdGlvbnMgYXJlIHBhcnNlZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG1wdGNwX3BhcnNlX29wdGlvbigpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgaXQgYWxsIGlzIG1ha2luZyBzdXJlIHRoZSBgZGF0YV9maW5gIGZsYWcgaXMgb25seSBjb25zaWRlcmVkIGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHNldC4gRXNzZW50aWFsbHksIGl0IGlzIGZpeGluZyBhbiBpbmNvbnNpc3RlbmN5IHdoZXJlIGBkYXRhX2ZpbmAgbWlnaHQgaGF2ZSBiZWVuIHNldCBpbmRlcGVuZGVudGx5LlxuXG5UaGlzIGlzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIGhvdyBpbmNvbWluZyBwYWNrZXRzIHdpdGggRFNTIG9wdGlvbnMgYXJlIGhhbmRsZWQuIEl0IGRpcmVjdGx5IGltcGFjdHMgaG93IHRoZSBrZXJuZWwgcmVjb2duaXplcyBhIERBVEFfRklOLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgZmxvdyBjb250cm9sIGFuZCBjb25uZWN0aW9uIHRlcm1pbmF0aW9uLiBUaGlzIGlzIHRoZSBraW5kIG9mIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IHNlbmRpbmcgY3JhZnRlZCBwYWNrZXRzLCBzbyBpdCBuZWVkcyB0aG9yb3VnaCBmdXp6aW5nLiBXZSBoYXZlIHRvIGVuc3VyZSB0aGF0IHdlIGFyZSBub3QgaW50cm9kdWNpbmcgcmVncmVzc2lvbnMgb3IgY2F1c2luZyB1bmV4cGVjdGVkIHN0YXRlIHRyYW5zaXRpb25zLlxuXG5JIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGtleSBzeW1ib2xzLiBCYXNlZCBvbiB0aGUgY29kZSwgYG1wdGNwX3BhcnNlX29wdGlvbmAgd2lsbCBiZSBpbXBvcnRhbnQsIGV2ZW4gaWYgaXQgbWlnaHQgYmUgaW5saW5lZC4gSSBhbHNvIGtub3cgdGhhdCBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AsIGBtcHRjcF9nZXRfb3B0aW9uc2AsIGFuZCBgZ2V0X21hcHBpbmdfc3RhdHVzYCBhcmUgaW52b2x2ZWQgaW4gdGhlIG92ZXJhbGwgcHJvY2Vzcy4gTm93IHRoYXQgSSBkb3VibGUgY2hlY2tlZCB0aGUgc291cmNlLCBJIHJlYWxpemUgdGhhdCBgbXB0Y3BfcGFyc2Vfb3B0aW9uYCBpcyBpbmRlZWQgc3RhdGljLCBidXQgc3RpbGwgaW1wb3J0YW50LlxuXG5Hb2luZyBhIGxheWVyIGRlZXBlciwgSSBzZWUgdGhhdCBgbXB0Y3BfcGFyc2Vfb3B0aW9uYCBpcyBjYWxsZWQgYnkgYG1wdGNwX2dldF9vcHRpb25zYC4gYG1wdGNwX2dldF9vcHRpb25zYCBpcyBjYWxsZWQgZnJvbSBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AsIGBzdWJmbG93X2NoZWNrX3JlcWAsIGBtcHRjcF9zdWJmbG93X2luaXRfY29va2llX3JlcWAsIGBzdWJmbG93X2ZpbmlzaF9jb25uZWN0YCwgYW5kIGBzdWJmbG93X3N5bl9yZWN2X3NvY2tgLiBUaGF0IGNvbmZpcm1zIHRoYXQgYG1wdGNwX2dldF9vcHRpb25zYCBpcyBhIGZhbnRhc3RpYyBmb2N1cyBzeW1ib2wuIE5vdyB0aGF0IEkgaGF2ZSBkb25lIGFsbCB0aGlzIGFuYWx5c2lzLCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NDU4LCJPdXRwdXRUb2tlbnMiOjE5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo1MDo0Mi4yOTUyMjcyNThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU2NTYwMjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNUFRDUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1wdGNwX2dldF9vcHRpb25zXCIsXG4gICAgXCJtcHRjcF9pbmNvbWluZ19vcHRpb25zXCIsXG4gICAgXCJnZXRfbWFwcGluZ19zdGF0dXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBvZiBNUFRDUCBEU1Mgb3B0aW9ucyBpbiBgbXB0Y3BfcGFyc2Vfb3B0aW9uKClgLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCB0aGUgYGRhdGFfZmluYCBmbGFnIGlzIG9ubHkgZXh0cmFjdGVkIGFuZCBzZXQgaWYgdGhlIGB1c2VfbWFwYCBmbGFnIGlzIGFsc28gcHJlc2VudCBpbiB0aGUgb3B0aW9uLiBQcmV2aW91c2x5LCBgZGF0YV9maW5gIGNvdWxkIGJlIHNldCBpbmRlcGVuZGVudGx5IG9mIGB1c2VfbWFwYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE1QVENQIHByb3RvY29sIGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgaW5jb21pbmcgcGFja2V0cyBhcmUgcHJvY2Vzc2VkIGFuZCB3aGV0aGVyIGEgREFUQV9GSU4gaXMgcmVjb2duaXplZC4gSXQgaXMgcmVhY2hhYmxlIGJ5IHNlbmRpbmcgY3JhZnRlZCBNUFRDUCBwYWNrZXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIHN0YXRlIHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1QVENQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXB0Y3BfZ2V0X29wdGlvbnNcIixcbiAgICBcIm1wdGNwX2luY29taW5nX29wdGlvbnNcIixcbiAgICBcImdldF9tYXBwaW5nX3N0YXR1c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIG9mIE1QVENQIERTUyBvcHRpb25zIGluIGBtcHRjcF9wYXJzZV9vcHRpb24oKWAuIFNwZWNpZmljYWxseSwgaXQgZW5zdXJlcyB0aGF0IHRoZSBgZGF0YV9maW5gIGZsYWcgaXMgb25seSBleHRyYWN0ZWQgYW5kIHNldCBpZiB0aGUgYHVzZV9tYXBgIGZsYWcgaXMgYWxzbyBwcmVzZW50IGluIHRoZSBvcHRpb24uIFByZXZpb3VzbHksIGBkYXRhX2ZpbmAgY291bGQgYmUgc2V0IGluZGVwZW5kZW50bHkgb2YgYHVzZV9tYXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTVBUQ1AgcHJvdG9jb2wgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyBpbmNvbWluZyBwYWNrZXRzIGFyZSBwcm9jZXNzZWQgYW5kIHdoZXRoZXIgYSBEQVRBX0ZJTiBpcyByZWNvZ25pemVkLiBJdCBpcyByZWFjaGFibGUgYnkgc2VuZGluZyBjcmFmdGVkIE1QVENQIHBhY2tldHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gc3RhdGUgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9wb4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 16:15:56 +0000 UTC FinishedAt: 2026-07-10 16:50:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MPTCP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MPTCP" ], "series_id": "beb00f80-b93b-4d19-ae73-db56cbbb423d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mptcp_get_options", "mptcp_incoming_options", "get_mapping_status" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01QVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXB0Y3BfZ2V0X29wdGlvbnMmIzM0OywKICAgICYjMzQ7bXB0Y3BfaW5jb21pbmdfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtnZXRfbWFwcGluZ19zdGF0dXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzYjg5NTdmMDgxYzZlZTBkYmNiNTk3NDA2MzI0ODU2OGE3OTU2MzNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTY6NDY6NTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21wdGNwL29wdGlvbnMuYyBiL25ldC9tcHRjcC9vcHRpb25zLmNcbmluZGV4IGRmZjNmZDVkM2I1NTliLi4xYjc0Y2E1YjZhNTk1NiAxMDA2NDRcbi0tLSBhL25ldC9tcHRjcC9vcHRpb25zLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tcHRjcC9vcHRpb25zLmNcbkBAIC0xNTcsMTcgJiM0MzsxNTcsMTEgQEAgc3RhdGljIHZvaWQgbXB0Y3BfcGFyc2Vfb3B0aW9uKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdHB0ciYjNDM7JiM0Mzs7XG4gXG4gXHRcdGZsYWdzID0gKCpwdHImIzQzOyYjNDM7KSBcdTAwMjYgTVBUQ1BfRFNTX0ZMQUdfTUFTSztcbi1cdFx0bXBfb3B0LVx1MDAzZWRhdGFfZmluID0gKGZsYWdzIFx1MDAyNiBNUFRDUF9EU1NfREFUQV9GSU4pICE9IDA7XG4gXHRcdG1wX29wdC1cdTAwM2Vkc242NCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0RTTjY0KSAhPSAwO1xuIFx0XHRtcF9vcHQtXHUwMDNldXNlX21hcCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0hBU19NQVApICE9IDA7XG4gXHRcdG1wX29wdC1cdTAwM2VhY2s2NCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0FDSzY0KSAhPSAwO1xuIFx0XHRtcF9vcHQtXHUwMDNldXNlX2FjayA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0hBU19BQ0spO1xuIFxuLVx0XHRwcl9kZWJ1ZyhcJiMzNDtkYXRhX2Zpbj0lZCBkc242ND0lZCB1c2VfbWFwPSVkIGFjazY0PSVkIHVzZV9hY2s9JWRcXG5cJiMzNDssXG4tXHRcdFx0IG1wX29wdC1cdTAwM2VkYXRhX2ZpbiwgbXBfb3B0LVx1MDAzZWRzbjY0LFxuLVx0XHRcdCBtcF9vcHQtXHUwMDNldXNlX21hcCwgbXBfb3B0LVx1MDAzZWFjazY0LFxuLVx0XHRcdCBtcF9vcHQtXHUwMDNldXNlX2Fjayk7XG4tXG4gXHRcdGV4cGVjdGVkX29wc2l6ZSA9IFRDUE9MRU5fTVBUQ1BfRFNTX0JBU0U7XG4gXG4gXHRcdGlmIChtcF9vcHQtXHUwMDNldXNlX2Fjaykge1xuQEAgLTE3OCwxMiAmIzQzOzE3MiwxOCBAQCBzdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0fVxuIFxuIFx0XHRpZiAobXBfb3B0LVx1MDAzZXVzZV9tYXApIHtcbiYjNDM7XHRcdFx0bXBfb3B0LVx1MDAzZWRhdGFfZmluID0gKGZsYWdzIFx1MDAyNiBNUFRDUF9EU1NfREFUQV9GSU4pICE9IDA7XG4gXHRcdFx0aWYgKG1wX29wdC1cdTAwM2Vkc242NClcbiBcdFx0XHRcdGV4cGVjdGVkX29wc2l6ZSAmIzQzOz0gVENQT0xFTl9NUFRDUF9EU1NfTUFQNjQ7XG4gXHRcdFx0ZWxzZVxuIFx0XHRcdFx0ZXhwZWN0ZWRfb3BzaXplICYjNDM7PSBUQ1BPTEVOX01QVENQX0RTU19NQVAzMjtcbiBcdFx0fVxuIFxuJiM0MztcdFx0cHJfZGVidWcoXCYjMzQ7ZGF0YV9maW49JWQgZHNuNjQ9JWQgdXNlX21hcD0lZCBhY2s2ND0lZCB1c2VfYWNrPSVkXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgbXBfb3B0LVx1MDAzZWRhdGFfZmluLCBtcF9vcHQtXHUwMDNlZHNuNjQsXG4mIzQzO1x0XHRcdCBtcF9vcHQtXHUwMDNldXNlX21hcCwgbXBfb3B0LVx1MDAzZWFjazY0LFxuJiM0MztcdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9hY2spO1xuJiM0MztcbiBcdFx0LyogQWx3YXlzIHBhcnNlIGFueSBjc3VtIHByZXNlbmNlIGNvbWJpbmF0aW9uLCB3ZSB3aWxsIGVuZm9yY2VcbiBcdFx0ICogUkZDIDg2ODQgU2VjdGlvbiAzLjMuMCBjaGVja3MgbGF0ZXIgaW4gc3ViZmxvd19kYXRhX3JlYWR5XG4gXHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01QVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXB0Y3BfZ2V0X29wdGlvbnMmIzM0OywKICAgICYjMzQ7bXB0Y3BfaW5jb21pbmdfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtnZXRfbWFwcGluZ19zdGF0dXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNiODk1N2YwODFjNmVlMGRiY2I1OTc0MDYzMjQ4NTY4YTc5NTYzM2IKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAxNjo0Njo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tcHRjcC9vcHRpb25zLmMgYi9uZXQvbXB0Y3Avb3B0aW9ucy5jCmluZGV4IGRmZjNmZDVkM2I1NTliLi4xYjc0Y2E1YjZhNTk1NiAxMDA2NDQKLS0tIGEvbmV0L21wdGNwL29wdGlvbnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbXB0Y3Avb3B0aW9ucy5jCkBAIC0xNTcsMTcgJiM0MzsxNTcsMTEgQEAgc3RhdGljIHZvaWQgbXB0Y3BfcGFyc2Vfb3B0aW9uKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsCiAJCXB0ciYjNDM7JiM0Mzs7CiAKIAkJZmxhZ3MgPSAoKnB0ciYjNDM7JiM0MzspICZhbXA7IE1QVENQX0RTU19GTEFHX01BU0s7Ci0JCW1wX29wdC0mZ3Q7ZGF0YV9maW4gPSAoZmxhZ3MgJmFtcDsgTVBUQ1BfRFNTX0RBVEFfRklOKSAhPSAwOwogCQltcF9vcHQtJmd0O2RzbjY0ID0gKGZsYWdzICZhbXA7IE1QVENQX0RTU19EU042NCkgIT0gMDsKIAkJbXBfb3B0LSZndDt1c2VfbWFwID0gKGZsYWdzICZhbXA7IE1QVENQX0RTU19IQVNfTUFQKSAhPSAwOwogCQltcF9vcHQtJmd0O2FjazY0ID0gKGZsYWdzICZhbXA7IE1QVENQX0RTU19BQ0s2NCkgIT0gMDsKIAkJbXBfb3B0LSZndDt1c2VfYWNrID0gKGZsYWdzICZhbXA7IE1QVENQX0RTU19IQVNfQUNLKTsKIAotCQlwcl9kZWJ1ZygmIzM0O2RhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxuJiMzNDssCi0JCQkgbXBfb3B0LSZndDtkYXRhX2ZpbiwgbXBfb3B0LSZndDtkc242NCwKLQkJCSBtcF9vcHQtJmd0O3VzZV9tYXAsIG1wX29wdC0mZ3Q7YWNrNjQsCi0JCQkgbXBfb3B0LSZndDt1c2VfYWNrKTsKLQogCQlleHBlY3RlZF9vcHNpemUgPSBUQ1BPTEVOX01QVENQX0RTU19CQVNFOwogCiAJCWlmIChtcF9vcHQtJmd0O3VzZV9hY2spIHsKQEAgLTE3OCwxMiAmIzQzOzE3MiwxOCBAQCBzdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJfQogCiAJCWlmIChtcF9vcHQtJmd0O3VzZV9tYXApIHsKJiM0MzsJCQltcF9vcHQtJmd0O2RhdGFfZmluID0gKGZsYWdzICZhbXA7IE1QVENQX0RTU19EQVRBX0ZJTikgIT0gMDsKIAkJCWlmIChtcF9vcHQtJmd0O2RzbjY0KQogCQkJCWV4cGVjdGVkX29wc2l6ZSAmIzQzOz0gVENQT0xFTl9NUFRDUF9EU1NfTUFQNjQ7CiAJCQllbHNlCiAJCQkJZXhwZWN0ZWRfb3BzaXplICYjNDM7PSBUQ1BPTEVOX01QVENQX0RTU19NQVAzMjsKIAkJfQogCiYjNDM7CQlwcl9kZWJ1ZygmIzM0O2RhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxuJiMzNDssCiYjNDM7CQkJIG1wX29wdC0mZ3Q7ZGF0YV9maW4sIG1wX29wdC0mZ3Q7ZHNuNjQsCiYjNDM7CQkJIG1wX29wdC0mZ3Q7dXNlX21hcCwgbXBfb3B0LSZndDthY2s2NCwKJiM0MzsJCQkgbXBfb3B0LSZndDt1c2VfYWNrKTsKJiM0MzsKIAkJLyogQWx3YXlzIHBhcnNlIGFueSBjc3VtIHByZXNlbmNlIGNvbWJpbmF0aW9uLCB3ZSB3aWxsIGVuZm9yY2UKIAkJICogUkZDIDg2ODQgU2VjdGlvbiAzLjMuMCBjaGVja3MgbGF0ZXIgaW4gc3ViZmxvd19kYXRhX3JlYWR5CiAJCSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzIwCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVBUQ1AgT3B0aW9uIFBhcnNpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgaG93IHdlIGhhbmRsZSBgbXBfb3B0LSZndDtkYXRhX2ZpbmAgd2l0aGluIGBuZXQvbXB0Y3Avb3B0aW9ucy5jYC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIGFib3V0IHRoZSBwYXJzaW5nIGxvZ2ljIGluIGBtcHRjcF9wYXJzZV9vcHRpb24oKWAuIEkmIzM5O20gc2VlaW5nIGEgc2lnbmlmaWNhbnQgY2hhbmdlOiBgbXBfb3B0LSZndDtkYXRhX2ZpbmAgaXMgbm93ICpjb25kaXRpb25hbGx5KiBzZXQgYmFzZWQgb24gdGhlIGBtcF9vcHQtJmd0O3VzZV9tYXBgIGZsYWcuCgpTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRoZSBpbnRlbnRpb24gaXMgdG8gb25seSBzZXQgYG1wX29wdC0mZ3Q7ZGF0YV9maW5gIHdoZW4gd2UmIzM5O3JlIGFsc28gdXNpbmcgYSBtYXAuIEluc2lkZSB0aGF0IGBpZiAobXBfb3B0LSZndDt1c2VfbWFwKWAgYmxvY2ssIEkgc2VlIGBtcF9vcHQtJmd0O2RhdGFfZmluYCBnZXRzIHNldCB0byBgKGZsYWdzICZhbXA7IE1QVENQX0RTU19EQVRBX0ZJTikgIT0gMGAuIFNvLCB0aGF0JiMzOTtzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgRklOIGZsYWcgaWYgdGhlIG1hcCBpcyBlbmFibGVkLgoKVGhlIGNydWNpYWwgcGFydCwgYW5kIHRoZSBiaXQgSSBuZWVkIHRvIGRlbHZlIGludG8gbW9yZSwgaXMgd2hhdCBoYXBwZW5zIHdoZW4gYG1wX29wdC0mZ3Q7dXNlX21hcGAgaXMgKmZhbHNlKi4gSXQgbG9va3MgbGlrZSBgbXBfb3B0LSZndDtkYXRhX2ZpbmAgd2lsbCAqbm90KiBiZSBtb2RpZmllZCwgYW5kIHdpbGwgcmV0YWluIGl0cyBpbml0aWFsIHZhbHVlLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBXaGF0JiMzOTtzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgbXBfb3B0YCBsb29rIGxpa2U/IFdoYXQgZG9lcyBgZGF0YV9maW5gIGRlZmF1bHQgdG8/IElzIHRoaXMgaW50ZW50aW9uYWwgYmVoYXZpb3IsIG9yIGEgcG90ZW50aWFsIGlzc3VlPyBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGluaXRpYWxpemF0aW9uIG9mIGBtcHRjcF9wYXJzZV9vcHRpb25gIGFuZCB0aGUgYG1wX29wdGAgc3RydWN0dXJlIGl0c2VsZiB0byBjbGFyaWZ5IHRoaXMuIFRoZXJlIGNvdWxkIGJlIHN1YnRsZSBpbXBsaWNhdGlvbnMgaGVyZSB0aGF0IG5lZWQgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21wdGNwX3BhcnNlX29wdGlvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tcHRjcC9vcHRpb25zLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21wdGNwL29wdGlvbnMuYz0xOD1zdGF0aWMgYm9vbCBtcHRjcF9jYXBfZmxhZ19zaGEyNTYodTggZmxhZ3MpXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0yMi1cbm5ldC9tcHRjcC9vcHRpb25zLmM6MjM6c3RhdGljIHZvaWQgbXB0Y3BfcGFyc2Vfb3B0aW9uKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTI0LVx0XHRcdCAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwdHIsIGludCBvcHNpemUsXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYz0zNTk9dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtMzkzLVx0XHRcdGlmIChvcGNvZGUgPT0gVENQT1BUX01QVENQKVxubmV0L21wdGNwL29wdGlvbnMuYzozOTQ6XHRcdFx0XHRtcHRjcF9wYXJzZV9vcHRpb24oc2tiLCBwdHIsIG9wc2l6ZSwgbXBfb3B0KTtcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzk1LVx0XHRcdHB0ciAmIzQzOz0gb3BzaXplIC0gMjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTI1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBtcHRjcF9nZXRfb3B0aW9uc2AgYW5kIGBtcF9vcHRgIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBob3cgYG1wdGNwX2dldF9vcHRpb25zYCB3b3Jrcywgc3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgYG1wX29wdGAgc3RydWN0dXJlIGlzIGJlaW5nIGluaXRpYWxpemVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IGdvdGNoYXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBoYXBwZW5pbmcgdGhlcmUsIGVzcGVjaWFsbHkgYXJvdW5kIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhc3NpZ25tZW50LiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNyaXRpY2FsIE1QVENQIGZ1bmN0aW9uYWxpdHksIHNvIHRoaXMgaW5pdGlhbGl6YXRpb24gbmVlZHMgdG8gYmUgcm9jayBzb2xpZC4gQW55IHN1YnRsZSBidWcgaGVyZSBjb3VsZCBjYXNjYWRlIGludG8gc2VyaW91cyBjb25uZWN0aW9uIGluc3RhYmlsaXR5IG9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgYW5kIEkgKmNhbm5vdCogYWxsb3cgdGhhdC4gSSBuZWVkIHRvIHNlZSBpZiBpdCYjMzk7cyBiZWluZyBwcm9wZXJseSBoYW5kbGVkLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGV5JiMzOTtyZSBoYW5kbGluZyB0aGluZ3MuIEFyZSBhbGwgdGhlIG5lY2Vzc2FyeSBmaWVsZHMgZ2V0dGluZyBzZXQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBhbnkgbWVtb3J5IGxlYWtzPyBUaGlzIHJlcXVpcmVzIGEgY2FyZWZ1bCwgbGluZS1ieS1saW5lIGluc3BlY3Rpb24gdG8gdmVyaWZ5IGNvcnJlY3Qgb3BlcmF0aW9uLiBUaGlzIGlzIGZvdW5kYXRpb25hbDsgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIHJvYnVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttcHRjcF9nZXRfb3B0aW9ucyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tcHRjcC9vcHRpb25zLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21wdGNwL29wdGlvbnMuYz0yMz1zdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTM1OC1cbm5ldC9tcHRjcC9vcHRpb25zLmM6MzU5OnZvaWQgbXB0Y3BfZ2V0X29wdGlvbnMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzYwLVx0XHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTExMzY9Ym9vbCBtcHRjcF9pbmNvbWluZ19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExNjItXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExNjM6XHRtcHRjcF9nZXRfb3B0aW9ucyhza2IsIFx1MDAyNm1wX29wdCk7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExNjQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYzNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkNoZWNraW5nIGZvciBaZXJvZWQgTXVsdGlwYXRoIFRDUCBPcHRpb25zKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYG1wX29wdGAgdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4gU2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3Qgcm91dGUgdG8gZmluZCBvdXQgd291bGQgYmUgdG8gaW52ZXN0aWdhdGUgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBpbmNvbWluZyBNdWx0aXBhdGggVENQIG9wdGlvbnMgb3IgcmV0cmlldmVzIGV4aXN0aW5nIG9uZXMuIFNvLCBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGUgZnVuY3Rpb25zIGBtcHRjcF9pbmNvbWluZ19vcHRpb25zYCBhbmQgYG1wdGNwX2dldF9vcHRpb25zYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlcyB3aGVyZSBgbXBfb3B0YCBtaWdodCBiZSBzZXQgb3IgY2hlY2tlZC4gQnkgZXhhbWluaW5nIHRoZSBjb2RlIHdpdGhpbiB0aG9zZSBmdW5jdGlvbnMsIEkgc2hvdWxkIGJlIGFibGUgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYW55IGV4cGxpY2l0IGluaXRpYWxpemF0aW9uIG9yIGlmIHRoZSB2YWx1ZSBtaWdodCBiZSBkZWZhdWx0ZWQgdG8gemVybywgb3IgaGF2ZSBpdHMgdmFsdWUgc2V0LiBUaGF0IHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBpdCBpcyBoYW5kbGVkIGluIHRoaXMgc2NlbmFyaW8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXB0Y3BfaW5jb21pbmdfb3B0aW9ucyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tcHRjcC9vcHRpb25zLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21wdGNwL29wdGlvbnMuYz0xMDU2PXN0YXRpYyB2b2lkIGFja191cGRhdGVfbXNrKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMDgxLVxubmV0L21wdGNwL29wdGlvbnMuYzoxMDgyOlx0LyogdGhpcyBhc3N1bWVzIG1wdGNwX2luY29taW5nX29wdGlvbnMoKSBpcyBpbnZva2VkIGFmdGVyIHRjcF9hY2soKSAqL1xubmV0L21wdGNwL29wdGlvbnMuYy0xMDgzLVx0aWYgKGFmdGVyNjQobXNrLVx1MDAzZXduZF9lbmQsIHNuZF9ueHQpKVxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmM9MTExNT1zdGF0aWMgYm9vbCBhZGRfYWRkcl9obWFjX3ZhbGlkKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMTM1LSAqL1xubmV0L21wdGNwL29wdGlvbnMuYzoxMTM2OmJvb2wgbXB0Y3BfaW5jb21pbmdfb3B0aW9ucyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExMzcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMjkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBtcHRjcF9nZXRfb3B0aW9uc2AgRnVuY3Rpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNUFRDUCBvcHRpb25zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYG1wdGNwX2dldF9vcHRpb25zYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHplcm9pbmcgaW4gb24gd2hldGhlciBvciBub3QgdGhlIGBtcF9vcHRgIHN0cnVjdHVyZSBnZXRzIGV4cGxpY2l0bHkgemVyb2VkIG91dCBkdXJpbmcgdGhpcyBwcm9jZXNzLiBUaGlzIGlzIGEgY3J1Y2lhbCBkZXRhaWwgZm9yIGVuc3VyaW5nIHRoZSBpbnRlZ3JpdHkgYW5kIHByZWRpY3RhYmlsaXR5IG9mIHRoZSBvcHRpb24gZGF0YSwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBwcmV2aW91cyBvcHRpb24gc2V0dGluZ3MuIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBmdW5jdGlvbiBlc3RhYmxpc2hlcyBhIGNsZWFuIHNsYXRlIGZvciB0aGUgb3B0aW9ucy4gTGV0JiMzOTtzIGRlbHZlIGludG8gdGhlIGNvZGUgYW5kIHZlcmlmeSBpdHMgYmVoYXZpb3Igd2l0aCByZXNwZWN0IHRvIHRoZSBgbXBfb3B0YCB2YXJpYWJsZS4gVW5kZXJzdGFuZGluZyB0aGlzIHdpbGwgaGVscCBtZSB0cm91Ymxlc2hvb3QgcG90ZW50aWFsIGlzc3VlcyB3aXRoIG9wdGlvbiBoYW5kbGluZyBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IG9yIHJlbmVnb3RpYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21wdGNwL29wdGlvbnMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1OSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzU5Olx0dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDM2MDpcdFx0XHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcbiAzNjE6XHR7XG4gMzYyOlx0XHRjb25zdCBzdHJ1Y3QgdGNwaGRyICp0aCA9IHRjcF9oZHIoc2tiKTtcbiAzNjM6XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgKnB0cjtcbiAzNjQ6XHRcdGludCBsZW5ndGg7XG4gMzY1Olx0XG4gMzY2Olx0XHQvKiBFbnN1cmUgdGhhdCBjYXN0aW5nIHRoZSB3aG9sZSBzdGF0dXMgdG8gdTMyIGlzIGVmZmljaWVudCBhbmQgc2FmZSAqL1xuIDM2NzpcdFx0QlVJTERfQlVHX09OKHNpemVvZl9maWVsZChzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCwgc3RhdHVzKSAhPSBzaXplb2YodTMyKSk7XG4gMzY4Olx0XHRCVUlMRF9CVUdfT04oIUlTX0FMSUdORUQob2Zmc2V0b2Yoc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQsIHN0YXR1cyksXG4gMzY5Olx0XHRcdFx0XHQgc2l6ZW9mKHUzMikpKTtcbiAzNzA6XHRcdCoodTMyICopXHUwMDI2bXBfb3B0LVx1MDAzZXN0YXR1cyA9IDA7XG4gMzcxOlx0XG4gMzcyOlx0XHRsZW5ndGggPSAodGgtXHUwMDNlZG9mZiAqIDQpIC0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpO1xuIDM3MzpcdFx0cHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikodGggJiM0MzsgMSk7XG4gMzc0Olx0XG4gMzc1Olx0XHR3aGlsZSAobGVuZ3RoIFx1MDAzZSAwKSB7XG4gMzc2Olx0XHRcdGludCBvcGNvZGUgPSAqcHRyJiM0MzsmIzQzOztcbiAzNzc6XHRcdFx0aW50IG9wc2l6ZTtcbiAzNzg6XHRcbiAzNzk6XHRcdFx0c3dpdGNoIChvcGNvZGUpIHtcbiAzODA6XHRcdFx0Y2FzZSBUQ1BPUFRfRU9MOlxuIDM4MTpcdFx0XHRcdHJldHVybjtcbiAzODI6XHRcdFx0Y2FzZSBUQ1BPUFRfTk9QOlx0LyogUmVmOiBSRkMgNzkzIHNlY3Rpb24gMy4xICovXG4gMzgzOlx0XHRcdFx0bGVuZ3RoLS07XG4gMzg0Olx0XHRcdFx0Y29udGludWU7XG4gMzg1Olx0XHRcdGRlZmF1bHQ6XG4gMzg2Olx0XHRcdFx0aWYgKGxlbmd0aCBcdTAwM2MgMilcbiAzODc6XHRcdFx0XHRcdHJldHVybjtcbiAzODg6XHRcdFx0XHRvcHNpemUgPSAqcHRyJiM0MzsmIzQzOztcbiAzODk6XHRcdFx0XHRpZiAob3BzaXplIFx1MDAzYyAyKSAvKiBcJiMzNDtzaWxseSBvcHRpb25zXCYjMzQ7ICovXG4gMzkwOlx0XHRcdFx0XHRyZXR1cm47XG4gMzkxOlx0XHRcdFx0aWYgKG9wc2l6ZSBcdTAwM2UgbGVuZ3RoKVxuIDM5MjpcdFx0XHRcdFx0cmV0dXJuO1x0LyogZG9uJiMzOTt0IHBhcnNlIHBhcnRpYWwgb3B0aW9ucyAqL1xuIDM5MzpcdFx0XHRcdGlmIChvcGNvZGUgPT0gVENQT1BUX01QVENQKVxuIDM5NDpcdFx0XHRcdFx0bXB0Y3BfcGFyc2Vfb3B0aW9uKHNrYiwgcHRyLCBvcHNpemUsIG1wX29wdCk7XG4gMzk1Olx0XHRcdFx0cHRyICYjNDM7PSBvcHNpemUgLSAyO1xuIDM5NjpcdFx0XHRcdGxlbmd0aCAtPSBvcHNpemU7XG4gMzk3Olx0XHRcdH1cbiAzOTg6XHRcdH1cbiAzOTk6XHR9XG4gNDAwOlx0XG4gNDAxOlx0Ym9vbCBtcHRjcF9zeW5fb3B0aW9ucyhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXG4gNDAyOlx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgKnNpemUsIHN0cnVjdCBtcHRjcF9vdXRfb3B0aW9ucyAqb3B0cylcbiA0MDM6XHR7XG4gNDA0Olx0XHRzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19jb250ZXh0ICpzdWJmbG93ID0gbXB0Y3Bfc3ViZmxvd19jdHgoc2spO1xuIDQwNTpcdFxuIDQwNjpcdFx0Lyogd2Ugd2lsbCB1c2Ugc25kX2lzbiB0byBkZXRlY3QgZmlyc3QgcGt0IFtyZV10cmFuc21pc3Npb25cbiA0MDc6XHRcdCAqIGluIG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnNfbXAoKVxuIDQwODpcdFx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4KCioqQW5hbHl6aW5nIHRoZSBTdGF0dXMgRmllbGQgUmVzZXQqKgoKQWxyaWdodCwgdGhhdCBgKih1MzIgKikmYW1wO21wX29wdC0mZ3Q7c3RhdHVzID0gMDtgIGxpbmUuLi4gdGhhdCYjMzk7cyBhIGRpcmVjdCBtZW1vcnkgd3JpdGUuIEl0JiMzOTtzIGVzc2VudGlhbGx5IHplcm9pbmcgb3V0IHRoZSBgc3RhdHVzYCBmaWVsZCwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhpcyBzeXN0ZW0sIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSByZWFjaGluZyBmb3IgdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIG9mIGBtcF9vcHRgLiBJIG5lZWQgdG8gcmVtZW1iZXIgd2hhdCYjMzk7cyBzdG9yZWQgaW4gYHN0YXR1c2AsIGFzIHRoZSBuYW1lIGFsb25lIGRvZXNuJiMzOTt0IGdpdmUgbWUgZW5vdWdoIGNvbnRleHQuIFdoYXQgYml0cyByZXByZXNlbnQgd2hhdCwgd2hhdCB0aGUgdHlwaWNhbCB2YWx1ZXMgYXJlLCBhbmQgd2hhdCB0aGUgdmFsaWQgcmFuZ2UgaXMuIFVuZGVyc3RhbmRpbmcgdGhlIGJpdHMgaXMga2V5LiBUaGlzIGNvdWxkIGJlIGEgc2ltcGxlIGluaXRpYWxpemF0aW9uLCBhIGNsZWFyLWRvd24gYmVmb3JlIGEgdGFzaywgb3IgcGVyaGFwcyBhIHJlc2V0IGFmdGVyIHNvbWUgZXJyb3Igc3RhdGUuIFNvIG1hbnkgcG9zc2liaWxpdGllcy4gVGhlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgc3RhdHVzYCBmaWVsZCBkZWZpbml0aW9uIHRvIGFzY2VydGFpbiB3aGF0IGluZm9ybWF0aW9uIHRoYXQgcGllY2Ugb2YgY29kZSBpcyBhZmZlY3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21wdGNwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbXB0Y3Avb3B0aW9ucy5jPTIzPXN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L21wdGNwL29wdGlvbnMuYy0yNC1cdFx0XHQgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcHRyLCBpbnQgb3BzaXplLFxubmV0L21wdGNwL29wdGlvbnMuYzoyNTpcdFx0XHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcbm5ldC9tcHRjcC9vcHRpb25zLmMtMjYte1xuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmM9MzU5PXZvaWQgbXB0Y3BfZ2V0X29wdGlvbnMoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9tcHRjcC9vcHRpb25zLmM6MzYwOlx0XHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzYxLXtcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTM2Ni1cdC8qIEVuc3VyZSB0aGF0IGNhc3RpbmcgdGhlIHdob2xlIHN0YXR1cyB0byB1MzIgaXMgZWZmaWNpZW50IGFuZCBzYWZlICovXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjM2NzpcdEJVSUxEX0JVR19PTihzaXplb2ZfZmllbGQoc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQsIHN0YXR1cykgIT0gc2l6ZW9mKHUzMikpO1xubmV0L21wdGNwL29wdGlvbnMuYzozNjg6XHRCVUlMRF9CVUdfT04oIUlTX0FMSUdORUQob2Zmc2V0b2Yoc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQsIHN0YXR1cyksXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTM2OS1cdFx0XHRcdCBzaXplb2YodTMyKSkpO1xuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmM9OTE1PXN0YXRpYyBib29sIGNoZWNrX2Z1bGx5X2VzdGFibGlzaGVkKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssIHN0cnVjdCBzb2NrICpzc2ssXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy05MTctXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9tcHRjcC9vcHRpb25zLmM6OTE4Olx0XHRcdFx0ICAgIHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkICptcF9vcHQpXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTkxOS17XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYz0xMDU2PXN0YXRpYyB2b2lkIGFja191cGRhdGVfbXNrKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTEwNTctXHRcdFx0ICAgc3RydWN0IHNvY2sgKnNzayxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTA1ODpcdFx0XHQgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxubmV0L21wdGNwL29wdGlvbnMuYy0xMDU5LXtcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTExMTU9c3RhdGljIGJvb2wgYWRkX2FkZHJfaG1hY192YWxpZChzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxubmV0L21wdGNwL29wdGlvbnMuYzoxMTE2Olx0XHRcdFx0c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTExNy17XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYz0xMTM2PWJvb2wgbXB0Y3BfaW5jb21pbmdfb3B0aW9ucyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMTM5LVx0c3RydWN0IG1wdGNwX3NvY2sgKm1zayA9IG1wdGNwX3NrKHN1YmZsb3ctXHUwMDNlY29ubik7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExNDA6XHRzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCBtcF9vcHQ7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExNDEtXHRzdHJ1Y3QgbXB0Y3BfZXh0ICptcGV4dDtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0zNTUzPXN0cnVjdCBzb2NrICptcHRjcF9za19jbG9uZV9pbml0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjM1NTQ6XHRcdFx0XHQgY29uc3Qgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdCxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTM1NTUtXHRcdFx0XHQgc3RydWN0IHNvY2sgKnNzayxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD0xMzg9c3RhdGljIGlubGluZSBib29sIGJlZm9yZTY0KF9fdTY0IHNlcTEsIF9fdTY0IHNlcTIpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmgtMTQ0LVxubmV0L21wdGNwL3Byb3RvY29sLmg6MTQ1OnN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIHtcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTE0Ni1cdHU2NFx0c25kcl9rZXk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmg9ODA4PXZvaWQgX19tcHRjcF9zdWJmbG93X2Z1bGx5X2VzdGFibGlzaGVkKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC04MDktXHRcdFx0XHQgICAgICAgc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjgxMDpcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KTtcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTgxMS1ib29sIF9fbXB0Y3BfcmV0cmFuc21pdF9wZW5kaW5nX2RhdGEoc3RydWN0IHNvY2sgKnNrKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05MTg9c3RydWN0IHNvY2sgKm1wdGNwX3NrX2Nsb25lX2luaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxubmV0L21wdGNwL3Byb3RvY29sLmg6OTE5Olx0XHRcdFx0IGNvbnN0IHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkICptcF9vcHQsXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC05MjAtXHRcdFx0XHQgc3RydWN0IHNvY2sgKnNzayxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05MjI9dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L21wdGNwL3Byb3RvY29sLmg6OTIzOlx0XHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdCk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC05MjQtXG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYz0xNDc9c3RhdGljIGludCBzdWJmbG93X2NoZWNrX3JlcShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYy0xNTItXHRzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19yZXF1ZXN0X3NvY2sgKnN1YmZsb3dfcmVxID0gbXB0Y3Bfc3ViZmxvd19yc2socmVxKTtcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTUzOlx0c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgbXBfb3B0O1xubmV0L21wdGNwL3N1YmZsb3cuYy0xNTQtXHRib29sIG9wdF9tcF9jYXBhYmxlLCBvcHRfbXBfam9pbjtcbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTI2NT1pbnQgbXB0Y3Bfc3ViZmxvd19pbml0X2Nvb2tpZV9yZXEoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmMtMjcwLVx0c3RydWN0IG1wdGNwX3N1YmZsb3dfcmVxdWVzdF9zb2NrICpzdWJmbG93X3JlcSA9IG1wdGNwX3N1YmZsb3dfcnNrKHJlcSk7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjI3MTpcdHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIG1wX29wdDtcbm5ldC9tcHRjcC9zdWJmbG93LmMtMjcyLVx0Ym9vbCBvcHRfbXBfY2FwYWJsZSwgb3B0X21wX2pvaW47XG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYz00Nzc9c3RhdGljIHZvaWQgc3ViZmxvd19zZXRfcmVtb3RlX2tleShzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxubmV0L21wdGNwL3N1YmZsb3cuYy00NzgtXHRcdFx0XHQgICBzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19jb250ZXh0ICpzdWJmbG93LFxubmV0L21wdGNwL3N1YmZsb3cuYzo0Nzk6XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxubmV0L21wdGNwL3N1YmZsb3cuYy00ODAte1xuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmM9NTAxPXN0YXRpYyB2b2lkIG1wdGNwX3Byb3BhZ2F0ZV9zdGF0ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpzc2ssXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTUwMi1cdFx0XHRcdCAgc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcbm5ldC9tcHRjcC9zdWJmbG93LmM6NTAzOlx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxubmV0L21wdGNwL3N1YmZsb3cuYy01MDQte1xuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmM9NTI2PXN0YXRpYyB2b2lkIHN1YmZsb3dfZmluaXNoX2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmMtNTI4LVx0c3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyA9IG1wdGNwX3N1YmZsb3dfY3R4KHNrKTtcbm5ldC9tcHRjcC9zdWJmbG93LmM6NTI5Olx0c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgbXBfb3B0O1xubmV0L21wdGNwL3N1YmZsb3cuYy01MzAtXHRzdHJ1Y3Qgc29jayAqcGFyZW50ID0gc3ViZmxvdy1cdTAwM2Vjb25uO1xuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmM9NzUzPXN0YXRpYyBib29sIHN1YmZsb3dfaG1hY192YWxpZChjb25zdCBzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19yZXF1ZXN0X3NvY2sgKnN1YmZsb3dfcmVxLFxubmV0L21wdGNwL3N1YmZsb3cuYzo3NTQ6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkICptcF9vcHQpXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTc1NS17XG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYz03OTc9dm9pZCBfX21wdGNwX3N1YmZsb3dfZnVsbHlfZXN0YWJsaXNoZWQoc3RydWN0IG1wdGNwX3NvY2sgKm1zayxcbm5ldC9tcHRjcC9zdWJmbG93LmMtNzk4LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3csXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjc5OTpcdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxubmV0L21wdGNwL3N1YmZsb3cuYy04MDAte1xuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmM9ODA2PXN0YXRpYyBzdHJ1Y3Qgc29jayAqc3ViZmxvd19zeW5fcmVjdl9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrICpzayxcbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTgxNi1cdHN0cnVjdCBtcHRjcF9zdWJmbG93X3JlcXVlc3Rfc29jayAqc3ViZmxvd19yZXE7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjgxNzpcdHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIG1wX29wdDtcbm5ldC9tcHRjcC9zdWJmbG93LmMtODE4LVx0Ym9vbCBmYWxsYmFjaywgZmFsbGJhY2tfaXNfZmF0YWw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NzUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGJpdCBvZiBjb2RlOgoKKipBbmFseXppbmcgdGhlIGBtcF9vcHQtJmd0O3N0YXR1c2AgRmllbGQqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gYG1wX29wdC0mZ3Q7c3RhdHVzYC4uLiBpcyB0aGF0IGEgYml0ZmllbGQ/IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdC4gTGV0IG1lIGp1bXAgb3ZlciB0byB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWRgLiBJIG5lZWQgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBmaWVsZCBpcyBhY2N1cmF0ZSBiZWZvcmUgSSBwcm9jZWVkLiBUaGlzIGNvdWxkIGJlIGNydWNpYWwgdG8gaG93IEkgaW50ZXJwcmV0IHRoZSBvcHRpb24gZGF0YS4gR290dGEgZ2V0IHRoZSBsb3ctZG93biBvbiB0aGUgYml0IGFzc2lnbm1lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9tcHRjcC9wcm90b2NvbC5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDU6XHRzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCB7XG4gMTQ2Olx0XHR1NjRcdHNuZHJfa2V5O1xuIDE0NzpcdFx0dTY0XHRyY3ZyX2tleTtcbiAxNDg6XHRcdHU2NFx0ZGF0YV9hY2s7XG4gMTQ5Olx0XHR1NjRcdGRhdGFfc2VxO1xuIDE1MDpcdFx0dTMyXHRzdWJmbG93X3NlcTtcbiAxNTE6XHRcdHUxNlx0ZGF0YV9sZW47XG4gMTUyOlx0XHRfX3N1bTE2XHRjc3VtO1xuIDE1MzpcdFx0c3RydWN0X2dyb3VwKHN0YXR1cyxcbiAxNTQ6XHRcdFx0dTE2IHN1Ym9wdGlvbnM7XG4gMTU1Olx0XHRcdHUxNiB1c2VfbWFwOjEsXG4gMTU2Olx0XHRcdCAgICBkc242NDoxLFxuIDE1NzpcdFx0XHQgICAgZGF0YV9maW46MSxcbiAxNTg6XHRcdFx0ICAgIHVzZV9hY2s6MSxcbiAxNTk6XHRcdFx0ICAgIGFjazY0OjEsXG4gMTYwOlx0XHRcdCAgICBtcGNfbWFwOjEsXG4gMTYxOlx0XHRcdCAgICByZXNldF9yZWFzb246NCxcbiAxNjI6XHRcdFx0ICAgIHJlc2V0X3RyYW5zaWVudDoxLFxuIDE2MzpcdFx0XHQgICAgZWNobzoxLFxuIDE2NDpcdFx0XHQgICAgYmFja3VwOjEsXG4gMTY1Olx0XHRcdCAgICBkZW55X2pvaW5faWQwOjEsXG4gMTY2Olx0XHRcdCAgICBfX3VudXNlZDoyO1xuIDE2NzpcdFx0KTtcbiAxNjg6XHRcdHU4XHRqb2luX2lkO1xuIDE2OTpcdFx0dTMyXHR0b2tlbjtcbiAxNzA6XHRcdHUzMlx0bm9uY2U7XG4gMTcxOlx0XHR1NjRcdHRobWFjO1xuIDE3MjpcdFx0dThcdGhtYWNbTVBUQ1BPUFRfSE1BQ19MRU5dO1xuIDE3MzpcdFx0c3RydWN0IG1wdGNwX2FkZHJfaW5mbyBhZGRyO1xuIDE3NDpcdFx0c3RydWN0IG1wdGNwX3JtX2xpc3Qgcm1fbGlzdDtcbiAxNzU6XHRcdHU2NFx0YWhtYWM7XG4gMTc2Olx0XHR1NjRcdGZhaWxfc2VxO1xuIDE3NzpcdH07XG4gMTc4Olx0XG4gMTc5Olx0c3RhdGljIGlubGluZSBfX2JlMzIgbXB0Y3Bfb3B0aW9uKHU4IHN1Ym9wdCwgdTggbGVuLCB1OCBuaWIsIHU4IGZpZWxkKVxuIDE4MDpcdHtcbiAxODE6XHRcdHJldHVybiBodG9ubCgoVENQT1BUX01QVENQIFx1MDAzY1x1MDAzYyAyNCkgfCAobGVuIFx1MDAzY1x1MDAzYyAxNikgfCAoc3Vib3B0IFx1MDAzY1x1MDAzYyAxMikgfFxuIDE4MjpcdFx0XHQgICAgICgobmliIFx1MDAyNiAweEYpIFx1MDAzY1x1MDAzYyA4KSB8IGZpZWxkKTtcbiAxODM6XHR9XG4gMTg0Olx0XG4gMTg1Olx0ZW51bSBtcHRjcF9wbV9zdGF0dXMge1xuIDE4NjpcdFx0TVBUQ1BfUE1fQUREX0FERFJfUkVDRUlWRUQsXG4gMTg3Olx0XHRNUFRDUF9QTV9BRERfQUREUl9TRU5EX0FDSyxcbiAxODg6XHRcdE1QVENQX1BNX1JNX0FERFJfUkVDRUlWRUQsXG4gMTg5Olx0XHRNUFRDUF9QTV9FU1RBQkxJU0hFRCxcbiAxOTA6XHRcdE1QVENQX1BNX1NVQkZMT1dfRVNUQUJMSVNIRUQsXG4gMTkxOlx0XHRNUFRDUF9QTV9BTFJFQURZX0VTVEFCTElTSEVELFx0LyogcGVyc2lzdGVudCBzdGF0dXMsIHNldCBhZnRlciBFU1RBQkxJU0hFRCBldmVudCAqL1xuIDE5MjpcdFx0TVBUQ1BfUE1fTVBDX0VORFBPSU5UX0FDQ09VTlRFRCAvKiBwZXJzaXN0ZW50IHN0YXR1cywgc2V0IGFmdGVyIE1QQyBsb2NhbCBhZGRyZXNzIGlzXG4gMTkzOlx0XHRcdFx0XHRcdCAqIGFjY291bnRlZCBpbnQgaWRfYXZhaWxfYml0bWFwXG4gMTk0Olx0XHRcdFx0XHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjYwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRGF0YSBGaW4gRmxhZyBpbiBNUFRDUCBEU1MgT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBgc3RhdHVzYCBzdHJ1Y3QgaW4gTVBUQ1AganVtcHMgb3V0IGF0IG1lLiBJIHNlZSB0aGF0IGl0IGJ1bmRsZXMgdmFyaW91cyBmbGFncywgaW5jbHVkaW5nIGBkYXRhX2ZpbmAsIGBkc242NGAsIGB1c2VfbWFwYCwgYGFjazY0YCwgYW5kIGB1c2VfYWNrYC4gIGBtcHRjcF9nZXRfb3B0aW9uc2AgaXMgY3J1Y2lhbCBoZXJlLCBhcyBpdCBpbml0aWFsbHkgemVyb2VzIG91dCB0aGUgZW50aXJlIGBzdGF0dXNgIGZpZWxkLCBtZWFuaW5nIGBkYXRhX2ZpbmAgc3RhcnRzIGFzIGEgY2xlYW4gemVyby4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyB3aXRoaW4gYG1wdGNwX3BhcnNlX29wdGlvbmAuIFByZXZpb3VzbHksIGBkYXRhX2ZpbmAgd2FzIHNldCBkaXJlY3RseSBmcm9tIHRoZSBgZmxhZ3NgIGJ5dGUsIHJlZ2FyZGxlc3Mgb2Ygb3RoZXIgb3B0aW9ucy4gTm93LCBob3dldmVyLCB0aGUgbG9naWMgaXMgc3VidGx5IGFsdGVyZWQuIGBkYXRhX2ZpbmAgaXMgY29uZGl0aW9uYWxseSBzZXQgKm9ubHkqIGlmIGB1c2VfbWFwYCBpcyB0cnVlLiAgVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgc2hpZnQuICBJZiBhIERTUyBvcHRpb24gZG9lc24mIzM5O3QgaW5jbHVkZSBhIG1hcCwgdGhlIGBkYXRhX2ZpbmAgZmxhZyByZW1haW5zIGF0IGl0cyBpbml0aWFsaXplZCB2YWx1ZSBvZiB6ZXJvLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgY2hhbmdlIGluIGJlaGF2aW9yIGFuZCBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCk15IHRoaW5raW5nIGlzIHRoYXQgdGhpcyBjaGFuZ2UgY291bGQgaW50cm9kdWNlIHN1YnRsZSBlZGdlIGNhc2VzLCBzbyBpdCYjMzk7cyB3b3J0aCBwb2tpbmcgYXJvdW5kLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AsIGBtcHRjcF9nZXRfb3B0aW9uc2AsIGFuZCBgbXB0Y3BfcGFyc2Vfb3B0aW9uYCwgZXZlbiB0aG91Z2ggdGhlIGxhdHRlciBpcyBzdGF0aWMsIGFzIEkgY2FuIHN0aWxsIGluY2x1ZGUgaXQgYXMgcGFydCBvZiBteSBmb2N1cyBzZXQuICBJIGFtIGFsc28ga2VlcGluZyBpbiBtaW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSB0aGF0IHdvdWxkIGJlIGFmZmVjdGVkIGJ5IGEgY2hhbmdlIGluIGBkYXRhX2ZpbmAsIHN1Y2ggYXMgYG1wdGNwX3N1YmZsb3dfZGF0YV9hdmFpbGFibGVgLiAgSXQmIzM5O3MgY3J1Y2lhbCB0byB0cmFjZSBob3cgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBzdWJzZXF1ZW50bHkgdXNlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgY29uZGl0aW9uYWwgaW5pdGlhbGl6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RhdGFfZmluJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21wdGNwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbXB0Y3Avb3B0aW9ucy5jPTIzPXN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtMTc0LVx0XHRpZiAobXBfb3B0LVx1MDAzZXVzZV9tYXApIHtcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTc1Olx0XHRcdG1wX29wdC1cdTAwM2VkYXRhX2ZpbiA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0RBVEFfRklOKSAhPSAwO1xubmV0L21wdGNwL29wdGlvbnMuYy0xNzYtXHRcdFx0aWYgKG1wX29wdC1cdTAwM2Vkc242NClcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTE4MS1cbm5ldC9tcHRjcC9vcHRpb25zLmM6MTgyOlx0XHRwcl9kZWJ1ZyhcJiMzNDtkYXRhX2Zpbj0lZCBkc242ND0lZCB1c2VfbWFwPSVkIGFjazY0PSVkIHVzZV9hY2s9JWRcXG5cJiMzNDssXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjE4MzpcdFx0XHQgbXBfb3B0LVx1MDAzZWRhdGFfZmluLCBtcF9vcHQtXHUwMDNlZHNuNjQsXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTE4NC1cdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9tYXAsIG1wX29wdC1cdTAwM2VhY2s2NCxcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTQ0OT1zdGF0aWMgYm9vbCBtcHRjcF9lc3RhYmxpc2hlZF9vcHRpb25zX21wKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9tcHRjcC9vcHRpb25zLmM6NDUwOlx0XHRcdFx0XHQgYm9vbCBzbmRfZGF0YV9maW5fZW5hYmxlLCBpbnQgKnNpemUsXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTQ1MS1cdFx0XHRcdFx0IHN0cnVjdCBtcHRjcF9vdXRfb3B0aW9ucyAqb3B0cylcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTQ2OC1cdC8qIE1QQy9NUEogbmVlZGVkIG9ubHkgb24gM3JkIGFjayBwYWNrZXQsIERBVEFfRklOIGFuZCBUQ1Agc2h1dGRvd24gdGFrZSBwcmVjZWRlbmNlICovXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjQ2OTpcdGlmIChSRUFEX09OQ0Uoc3ViZmxvdy1cdTAwM2VmdWxseV9lc3RhYmxpc2hlZCkgfHwgc25kX2RhdGFfZmluX2VuYWJsZSB8fFxubmV0L21wdGNwL29wdGlvbnMuYy00NzAtXHQgICAgc3ViZmxvdy1cdTAwM2VzbmRfaXNuICE9IFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VzZXEgfHxcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTUzMi1cbm5ldC9tcHRjcC9vcHRpb25zLmM6NTMzOnN0YXRpYyB2b2lkIG1wdGNwX3dyaXRlX2RhdGFfZmluKHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3csXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTUzNC1cdFx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbXB0Y3BfZXh0ICpleHQpXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy01MzgtXHQgKi9cbm5ldC9tcHRjcC9vcHRpb25zLmM6NTM5Olx0dTY0IGRhdGFfZmluX3R4X3NlcSA9IFJFQURfT05DRShtcHRjcF9zayhzdWJmbG93LVx1MDAzZWNvbm4pLVx1MDAzZXdyaXRlX3NlcSkgLSAxO1xubmV0L21wdGNwL29wdGlvbnMuYy01NDAtXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy01NDQtXHRcdCAqL1xubmV0L21wdGNwL29wdGlvbnMuYzo1NDU6XHRcdGV4dC1cdTAwM2VkYXRhX2ZpbiA9IDE7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU0Ni1cdFx0ZXh0LVx1MDAzZXVzZV9tYXAgPSAxO1xubmV0L21wdGNwL29wdGlvbnMuYy01NDctXHRcdGV4dC1cdTAwM2Vkc242NCA9IDE7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU0ODpcdFx0ZXh0LVx1MDAzZWRhdGFfc2VxID0gZGF0YV9maW5fdHhfc2VxO1xubmV0L21wdGNwL29wdGlvbnMuYy01NDktXHRcdGV4dC1cdTAwM2VzdWJmbG93X3NlcSA9IDA7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU1MC1cdFx0ZXh0LVx1MDAzZWRhdGFfbGVuID0gMTtcbm5ldC9tcHRjcC9vcHRpb25zLmM6NTUxOlx0fSBlbHNlIGlmIChleHQtXHUwMDNlZGF0YV9zZXEgJiM0MzsgZXh0LVx1MDAzZWRhdGFfbGVuID09IGRhdGFfZmluX3R4X3NlcSkge1xubmV0L21wdGNwL29wdGlvbnMuYy01NTItXHRcdC8qIElmIHRoZXJlJiMzOTtzIGFuIGV4aXN0aW5nIERTUyBtYXBwaW5nIGFuZCBpdCBpcyB0aGVcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU1NS1cdFx0ICovXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU1NjpcdFx0ZXh0LVx1MDAzZWRhdGFfZmluID0gMTtcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTU3LVx0XHRleHQtXHUwMDNlZGF0YV9sZW4mIzQzOyYjNDM7O1xuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmM9NTYxPXN0YXRpYyBib29sIG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnNfZHNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC9tcHRjcC9vcHRpb25zLmM6NTYyOlx0XHRcdFx0XHQgIGJvb2wgc25kX2RhdGFfZmluX2VuYWJsZSwgaW50ICpzaXplLFxubmV0L21wdGNwL29wdGlvbnMuYy01NjMtXHRcdFx0XHRcdCAgc3RydWN0IG1wdGNwX291dF9vcHRpb25zICpvcHRzKVxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtNTgwLVxubmV0L21wdGNwL29wdGlvbnMuYzo1ODE6XHRpZiAoIXNrYiB8fCAobXBleHQgXHUwMDI2XHUwMDI2IG1wZXh0LVx1MDAzZXVzZV9tYXApIHx8IHNuZF9kYXRhX2Zpbl9lbmFibGUpIHtcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTgyLVx0XHR1bnNpZ25lZCBpbnQgbWFwX3NpemUgPSBUQ1BPTEVOX01QVENQX0RTU19CQVNFICYjNDM7IFRDUE9MRU5fTVBUQ1BfRFNTX01BUDY0O1xuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtNTkxLVx0XHRkc3Nfc2l6ZSA9IG1hcF9zaXplO1xubmV0L21wdGNwL29wdGlvbnMuYzo1OTI6XHRcdGlmIChza2IgXHUwMDI2XHUwMDI2IHNuZF9kYXRhX2Zpbl9lbmFibGUpXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU5MzpcdFx0XHRtcHRjcF93cml0ZV9kYXRhX2ZpbihzdWJmbG93LCBza2IsIFx1MDAyNm9wdHMtXHUwMDNlZXh0X2NvcHkpO1xubmV0L21wdGNwL29wdGlvbnMuYy01OTQtXHRcdG9wdHMtXHUwMDNlc3Vib3B0aW9ucyA9IE9QVElPTl9NUFRDUF9EU1M7XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYz04MTA9aW50IG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtODE2LVx0aW50IHRvdGFsX3NpemUgPSAwO1xubmV0L21wdGNwL29wdGlvbnMuYzo4MTc6XHRib29sIHNuZF9kYXRhX2Zpbjtcbm5ldC9tcHRjcC9vcHRpb25zLmMtODE4LVx0Ym9vbCByZXQgPSBmYWxzZTtcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTg0Mi1cbm5ldC9tcHRjcC9vcHRpb25zLmM6ODQzOlx0c25kX2RhdGFfZmluID0gbXB0Y3BfZGF0YV9maW5fZW5hYmxlZChtc2spO1xubmV0L21wdGNwL29wdGlvbnMuYzo4NDQ6XHRpZiAobXB0Y3BfZXN0YWJsaXNoZWRfb3B0aW9uc19tcChzaywgc2tiLCBzbmRfZGF0YV9maW4sIFx1MDAyNm9wdF9zaXplLCBvcHRzKSlcbm5ldC9tcHRjcC9vcHRpb25zLmMtODQ1LVx0XHRyZXQgPSB0cnVlO1xubmV0L21wdGNwL29wdGlvbnMuYzo4NDY6XHRlbHNlIGlmIChtcHRjcF9lc3RhYmxpc2hlZF9vcHRpb25zX2Rzcyhzaywgc2tiLCBzbmRfZGF0YV9maW4sIFx1MDAyNm9wdF9zaXplLCBvcHRzKSkge1xubmV0L21wdGNwL29wdGlvbnMuYy04NDctXHRcdGludCBtcF9mYWlsX3NpemU7XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYz0xMDU2PXN0YXRpYyB2b2lkIGFja191cGRhdGVfbXNrKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMDk3LVxubmV0L21wdGNwL29wdGlvbnMuYzoxMDk4OmJvb2wgbXB0Y3BfdXBkYXRlX3Jjdl9kYXRhX2ZpbihzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLCB1NjQgZGF0YV9maW5fc2VxLCBib29sIHVzZV82NGJpdClcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTA5OS17XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMTA0LVx0ICovXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExMDU6XHRpZiAoUkVBRF9PTkNFKG1zay1cdTAwM2VyY3ZfZGF0YV9maW4pKVxubmV0L21wdGNwL29wdGlvbnMuYy0xMTA2LVx0XHRyZXR1cm4gZmFsc2U7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExMDctXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExMDg6XHRXUklURV9PTkNFKG1zay1cdTAwM2VyY3ZfZGF0YV9maW5fc2VxLFxubmV0L21wdGNwL29wdGlvbnMuYzoxMTA5Olx0XHQgICBtcHRjcF9leHBhbmRfc2VxKFJFQURfT05DRShtc2stXHUwMDNlYWNrX3NlcSksIGRhdGFfZmluX3NlcSwgdXNlXzY0Yml0KSk7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExMTA6XHRXUklURV9PTkNFKG1zay1cdTAwM2VyY3ZfZGF0YV9maW4sIDEpO1xubmV0L21wdGNwL29wdGlvbnMuYy0xMTExLVxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmM9MTEzNj1ib29sIG1wdGNwX2luY29taW5nX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9tcHRjcC9vcHRpb25zLmMtMTIyOS1cdGlmIChUQ1BfU0tCX0NCKHNrYiktXHUwMDNlc2VxID09IFRDUF9TS0JfQ0Ioc2tiKS1cdTAwM2VlbmRfc2VxKSB7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjEyMzA6XHRcdGlmIChtcF9vcHQuZGF0YV9maW4gXHUwMDI2XHUwMDI2IG1wX29wdC5kYXRhX2xlbiA9PSAxIFx1MDAyNlx1MDAyNlxubmV0L21wdGNwL29wdGlvbnMuYzoxMjMxOlx0XHQgICAgbXB0Y3BfdXBkYXRlX3Jjdl9kYXRhX2Zpbihtc2ssIG1wX29wdC5kYXRhX3NlcSwgbXBfb3B0LmRzbjY0KSlcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTIzMi1cdFx0XHRtcHRjcF9zY2hlZHVsZV93b3JrKChzdHJ1Y3Qgc29jayAqKW1zayk7XG4tLVxubmV0L21wdGNwL29wdGlvbnMuYy0xMjUzLVx0XHRcdG1wZXh0LVx1MDAzZW1wY19tYXAgPSAxO1xubmV0L21wdGNwL29wdGlvbnMuYzoxMjU0Olx0XHRcdG1wZXh0LVx1MDAzZWRhdGFfZmluID0gMDtcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTI1NS1cdFx0fSBlbHNlIHtcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTEyNTgtXHRcdFx0bXBleHQtXHUwMDNlZHNuNjQgPSBtcF9vcHQuZHNuNjQ7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjEyNTk6XHRcdFx0bXBleHQtXHUwMDNlZGF0YV9maW4gPSBtcF9vcHQuZGF0YV9maW47XG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTEyNjAtXHRcdH1cbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTEzODQ9dm9pZCBtcHRjcF93cml0ZV9vcHRpb25zKHN0cnVjdCB0Y3BoZHIgKnRoLCBfX2JlMzIgKnB0ciwgc3RydWN0IHRjcF9zb2NrICp0cCxcbi0tXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTE0MzMtXHRcdFx0ZmxhZ3MgfD0gTVBUQ1BfRFNTX0hBU19NQVAgfCBNUFRDUF9EU1NfRFNONjQ7XG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjE0MzQ6XHRcdFx0aWYgKG1wZXh0LVx1MDAzZWRhdGFfZmluKVxubmV0L21wdGNwL29wdGlvbnMuYy0xNDM1LVx0XHRcdFx0ZmxhZ3MgfD0gTVBUQ1BfRFNTX0RBVEFfRklOO1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTUwPXN0YXRpYyB2b2lkIF9fbXB0Y3BfZGVzdHJveV9zb2NrKHN0cnVjdCBzb2NrICpzayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo1MTpzdGF0aWMgdm9pZCBtcHRjcF9jaGVja19zZW5kX2RhdGFfZmluKHN0cnVjdCBzb2NrICpzayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy01Mi1cbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz00NDE9c3RhdGljIHZvaWQgbXB0Y3Bfc2h1dGRvd25fc3ViZmxvd3Moc3RydWN0IG1wdGNwX3NvY2sgKm1zaylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NTUtLyogY2FsbGVkIHVuZGVyIHRoZSBtc2sgc29ja2V0IGxvY2sgKi9cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ1NjpzdGF0aWMgYm9vbCBtcHRjcF9wZW5kaW5nX2RhdGFfZmluX2FjayhzdHJ1Y3Qgc29jayAqc2spXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NTcte1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ2NC1cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ2NTpzdGF0aWMgdm9pZCBtcHRjcF9jaGVja19kYXRhX2Zpbl9hY2soc3RydWN0IHNvY2sgKnNrKVxubmV0L21wdGNwL3Byb3RvY29sLmMtNDY2LXtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NjktXHQvKiBMb29rIGZvciBhbiBhY2tub3dsZWRnZWQgREFUQV9GSU4gKi9cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ3MDpcdGlmIChtcHRjcF9wZW5kaW5nX2RhdGFfZmluX2FjayhzaykpIHtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ3MTpcdFx0V1JJVEVfT05DRShtc2stXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSwgMCk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NzItXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtNDg4LS8qIGNhbiBiZSBjYWxsZWQgd2l0aCBubyBsb2NrIGFjcXVpcmVkICovXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0ODk6c3RhdGljIGJvb2wgbXB0Y3BfcGVuZGluZ19kYXRhX2ZpbihzdHJ1Y3Qgc29jayAqc2ssIHU2NCAqc2VxKVxubmV0L21wdGNwL3Byb3RvY29sLmMtNDkwLXtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00OTItXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0OTM6XHRpZiAoUkVBRF9PTkNFKG1zay1cdTAwM2VyY3ZfZGF0YV9maW4pIFx1MDAyNlx1MDAyNlxubmV0L21wdGNwL3Byb3RvY29sLmMtNDk0LVx0ICAgICgoMSBcdTAwM2NcdTAwM2MgaW5ldF9za19zdGF0ZV9sb2FkKHNrKSkgXHUwMDI2XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00OTUtXHQgICAgIChUQ1BGX0VTVEFCTElTSEVEIHwgVENQRl9GSU5fV0FJVDEgfCBUQ1BGX0ZJTl9XQUlUMikpKSB7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0OTY6XHRcdHU2NCByY3ZfZGF0YV9maW5fc2VxID0gUkVBRF9PTkNFKG1zay1cdTAwM2VyY3ZfZGF0YV9maW5fc2VxKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ5Ny1cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ5ODpcdFx0aWYgKFJFQURfT05DRShtc2stXHUwMDNlYWNrX3NlcSkgPT0gcmN2X2RhdGFfZmluX3NlcSkge1xubmV0L21wdGNwL3Byb3RvY29sLmMtNDk5LVx0XHRcdGlmIChzZXEpXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo1MDA6XHRcdFx0XHQqc2VxID0gcmN2X2RhdGFfZmluX3NlcTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTUwMS1cbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz01OTU9c3RhdGljIHZvaWQgbXB0Y3BfY2xlYW51cF9yYnVmKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssIGludCBjb3BpZWQpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtNjEzLVxubmV0L21wdGNwL3Byb3RvY29sLmM6NjE0OnN0YXRpYyB2b2lkIG1wdGNwX2NoZWNrX2RhdGFfZmluKHN0cnVjdCBzb2NrICpzaylcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYxNS17XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MTYtXHRzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrID0gbXB0Y3Bfc2soc2spO1xubmV0L21wdGNwL3Byb3RvY29sLmM6NjE3Olx0dTY0IHJjdl9kYXRhX2Zpbl9zZXE7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MTgtXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtNjIwLVx0ICogb2YgdGhlIGNvbm5lY3Rpb24gaXMgaW4gRVNUQUJMSVNIRUQsIEZJTl9XQUlUMSwgb3IgRklOX1dBSVQyLlxubmV0L21wdGNwL3Byb3RvY29sLmM6NjIxOlx0ICogbXNrLVx1MDAzZXJjdl9kYXRhX2ZpbiB3YXMgc2V0IHdoZW4gcGFyc2luZyB0aGUgaW5jb21pbmcgb3B0aW9uc1xubmV0L21wdGNwL3Byb3RvY29sLmMtNjIyLVx0ICogYXQgdGhlIHN1YmZsb3cgbGV2ZWwgYW5kIHRoZSBtc2sgbG9jayB3YXMgbm90IGhlbGQsIHNvIHRoaXNcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MzEtXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo2MzI6XHRpZiAobXB0Y3BfcGVuZGluZ19kYXRhX2ZpbihzaywgXHUwMDI2cmN2X2RhdGFfZmluX3NlcSkpIHtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYzMy1cdFx0V1JJVEVfT05DRShtc2stXHUwMDNlYWNrX3NlcSwgbXNrLVx1MDAzZWFja19zZXEgJiM0MzsgMSk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo2MzQ6XHRcdFdSSVRFX09OQ0UobXNrLVx1MDAzZXJjdl9kYXRhX2ZpbiwgMCk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MzUtXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9ODc2PXN0YXRpYyBib29sIG1vdmVfc2tic190b19tc2soc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgc3RydWN0IHNvY2sgKnNzaylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy04OTAtXHQgKi9cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjg5MTpcdGlmIChtcHRjcF9wZW5kaW5nX2RhdGFfZmluKHNrLCBOVUxMKSlcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTg5Mi1cdFx0bXB0Y3Bfc2NoZWR1bGVfd29yayhzayk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9MTA3Mj1zdGF0aWMgdm9pZCBfX21wdGNwX2NsZWFuX3VuYShzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMTEyMC1cdGlmIChzbmRfdW5hID09IG1zay1cdTAwM2VzbmRfbnh0IFx1MDAyNlx1MDAyNiBzbmRfdW5hID09IG1zay1cdTAwM2V3cml0ZV9zZXEpIHtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjExMjE6XHRcdGlmIChtcHRjcF9ydHhfdGltZXJfcGVuZGluZyhzaykgXHUwMDI2XHUwMDI2ICFtcHRjcF9kYXRhX2Zpbl9lbmFibGVkKG1zaykpXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTIyLVx0XHRcdG1wdGNwX3N0b3BfcnR4X3RpbWVyKHNrKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTI2LVxubmV0L21wdGNwL3Byb3RvY29sLmM6MTEyNzpcdGlmIChtcHRjcF9wZW5kaW5nX2RhdGFfZmluX2FjayhzaykpXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTI4LVx0XHRtcHRjcF9zY2hlZHVsZV93b3JrKHNrKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0xNjY3PXZvaWQgX19tcHRjcF9wdXNoX3BlbmRpbmcoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMTczMC1cdFx0XHRtcHRjcF9yZXNldF9ydHhfdGltZXIoc2spO1xubmV0L21wdGNwL3Byb3RvY29sLmM6MTczMTpcdFx0bXB0Y3BfY2hlY2tfc2VuZF9kYXRhX2Zpbihzayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xNzMyLVx0fVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTE3MzU9c3RhdGljIHZvaWQgX19tcHRjcF9zdWJmbG93X3B1c2hfcGVuZGluZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpzc2ssIGJvb2wgZmlyc3QpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMTc5NS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjE3OTY6XHRcdGlmIChtc2stXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSBcdTAwMjZcdTAwMjZcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTE3OTctXHRcdCAgICBtc2stXHUwMDNlc25kX254dCAmIzQzOyAxID09IG1zay1cdTAwM2V3cml0ZV9zZXEpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9MjIwNj1zdGF0aWMgYm9vbCBfX21wdGNwX21vdmVfc2ticyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBsaXN0X2hlYWQgKnNrYnMsIHUzMiAqZGVsdGEpXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtMjIzMC1cdGlmIChtb3ZlZClcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjIyMzE6XHRcdG1wdGNwX2NoZWNrX2RhdGFfZmluKChzdHJ1Y3Qgc29jayAqKW1zayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yMjMyLVx0cmV0dXJuIG1vdmVkO1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTI3ODM9c3RhdGljIHZvaWQgX19tcHRjcF9yZXRyYW5zKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yNzk4LVx0aWYgKCFkZnJhZykge1xubmV0L21wdGNwL3Byb3RvY29sLmM6Mjc5OTpcdFx0aWYgKG1wdGNwX2RhdGFfZmluX2VuYWJsZWQobXNrKSkge1xubmV0L21wdGNwL3Byb3RvY29sLmMtMjgwMC1cdFx0XHRzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2sgKmljc2sgPSBpbmV0X2Nzayhzayk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9Mjk4ND1zdGF0aWMgdm9pZCBtcHRjcF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI5OTktXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMDAwOlx0bXB0Y3BfY2hlY2tfc2VuZF9kYXRhX2Zpbihzayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMDAxOlx0bXB0Y3BfY2hlY2tfZGF0YV9maW5fYWNrKHNrKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjMwMDI6XHRtcHRjcF9jaGVja19kYXRhX2Zpbihzayk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMDAzLVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTMxMzQ9dm9pZCBtcHRjcF9zdWJmbG93X3NodXRkb3duKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKnNzaywgaW50IGhvdylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMTUxLVxubmV0L21wdGNwL3Byb3RvY29sLmM6MzE1MjpcdFx0XHQvKiBzaW11bGF0ZSB0aGUgZGF0YV9maW4gYWNrIHJlY2VwdGlvbiB0byBsZXQgdGhlIHN0YXRlXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMTUzLVx0XHRcdCAqIG1hY2hpbmUgbW92ZSBmb3J3YXJkXG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmM9MzIwOT1zdGF0aWMgaW50IG1wdGNwX2Nsb3NlX3N0YXRlKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjE4LVxubmV0L21wdGNwL3Byb3RvY29sLmM6MzIxOTpzdGF0aWMgdm9pZCBtcHRjcF9jaGVja19zZW5kX2RhdGFfZmluKHN0cnVjdCBzb2NrICpzaylcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMjAte1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMjMtXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMjI0Olx0cHJfZGVidWcoXCYjMzQ7bXNrPSVwIHNuZF9kYXRhX2Zpbl9lbmFibGU9JWQgcGVuZGluZz0lZCBzbmRfbnh0PSVsbHUgd3JpdGVfc2VxPSVsbHVcXG5cJiMzNDssXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMjI1Olx0XHQgbXNrLCBtc2stXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSwgISFtcHRjcF9zZW5kX2hlYWQoc2spLFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzIyNi1cdFx0IG1zay1cdTAwM2VzbmRfbnh0LCBtc2stXHUwMDNld3JpdGVfc2VxKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjMwLVx0ICovXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMjMxOlx0aWYgKCFtc2stXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSB8fCBtc2stXHUwMDNlc25kX254dCAmIzQzOyAxICE9IG1zay1cdTAwM2V3cml0ZV9zZXEgfHxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMzItXHQgICAgbXB0Y3Bfc2VuZF9oZWFkKHNrKSlcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0zMjQ0PXN0YXRpYyB2b2lkIF9fbXB0Y3Bfd3Jfc2h1dGRvd24oc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyNDctXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMjQ4Olx0cHJfZGVidWcoXCYjMzQ7bXNrPSVwIHNuZF9kYXRhX2Zpbl9lbmFibGU9JWQgc2h1dGRvd249JXggc3RhdGU9JWQgcGVuZGluZz0lZFxcblwmIzM0Oyxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjMyNDk6XHRcdCBtc2ssIG1zay1cdTAwM2VzbmRfZGF0YV9maW5fZW5hYmxlLCBzay1cdTAwM2Vza19zaHV0ZG93biwgc2stXHUwMDNlc2tfc3RhdGUsXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjUwLVx0XHQgISFtcHRjcF9zZW5kX2hlYWQoc2spKTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjUzLVx0V1JJVEVfT05DRShtc2stXHUwMDNld3JpdGVfc2VxLCBtc2stXHUwMDNld3JpdGVfc2VxICYjNDM7IDEpO1xubmV0L21wdGNwL3Byb3RvY29sLmM6MzI1NDpcdFdSSVRFX09OQ0UobXNrLVx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsIDEpO1xubmV0L21wdGNwL3Byb3RvY29sLmMtMzI1NS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jOjMyNTY6XHRtcHRjcF9jaGVja19zZW5kX2RhdGFfZmluKHNrKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyNTctfVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTM0NDI9c3RhdGljIGludCBtcHRjcF9kaXNjb25uZWN0KHN0cnVjdCBzb2NrICpzaywgaW50IGZsYWdzKVxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jLTM0NzktXHRXUklURV9PTkNFKG1zay1cdTAwM2VmdWxseV9lc3RhYmxpc2hlZCwgZmFsc2UpO1xubmV0L21wdGNwL3Byb3RvY29sLmM6MzQ4MDpcdFdSSVRFX09OQ0UobXNrLVx1MDAzZXJjdl9kYXRhX2ZpbiwgZmFsc2UpO1xubmV0L21wdGNwL3Byb3RvY29sLmM6MzQ4MTpcdFdSSVRFX09OQ0UobXNrLVx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsIGZhbHNlKTtcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTM0ODItXHRXUklURV9PTkNFKG1zay1cdTAwM2VyY3ZfZmFzdGNsb3NlLCBmYWxzZSk7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmg9MTQ1PXN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIHtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xNTYtXHRcdCAgICBkc242NDoxLFxubmV0L21wdGNwL3Byb3RvY29sLmg6MTU3Olx0XHQgICAgZGF0YV9maW46MSxcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTE1OC1cdFx0ICAgIHVzZV9hY2s6MSxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD0yODA9c3RydWN0IG1wdGNwX3NvY2sge1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5oLTI5Mi1cdGF0b21pYzY0X3RcdHJjdl93bmRfc2VudDtcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjI5MzpcdHU2NFx0XHRyY3ZfZGF0YV9maW5fc2VxO1xubmV0L21wdGNwL3Byb3RvY29sLmgtMjk0LVx0dTY0XHRcdGJ5dGVzX3JldHJhbnM7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmgtMzE0LVx0Ym9vbFx0XHRmdWxseV9lc3RhYmxpc2hlZDtcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjMxNTpcdGJvb2xcdFx0cmN2X2RhdGFfZmluO1xubmV0L21wdGNwL3Byb3RvY29sLmg6MzE2Olx0Ym9vbFx0XHRzbmRfZGF0YV9maW5fZW5hYmxlO1xubmV0L21wdGNwL3Byb3RvY29sLmgtMzE3LVx0Ym9vbFx0XHRyY3ZfZmFzdGNsb3NlO1xuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5oPTU0Mj1zdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19jb250ZXh0IHtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC01NzAtXHRcdG1hcF9jc3VtX3JlcWQgOiAxLFxubmV0L21wdGNwL3Byb3RvY29sLmg6NTcxOlx0XHRtYXBfZGF0YV9maW4gOiAxLFxubmV0L21wdGNwL3Byb3RvY29sLmgtNTcyLVx0XHRtcGNfbWFwIDogMSxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05Nzk9dm9pZCBfX21wdGNwX2Vycm9yX3JlcG9ydChzdHJ1Y3Qgc29jayAqc2spO1xubmV0L21wdGNwL3Byb3RvY29sLmg6OTgwOmJvb2wgbXB0Y3BfdXBkYXRlX3Jjdl9kYXRhX2ZpbihzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLCB1NjQgZGF0YV9maW5fc2VxLCBib29sIHVzZV82NGJpdCk7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuaDo5ODE6c3RhdGljIGlubGluZSBib29sIG1wdGNwX2RhdGFfZmluX2VuYWJsZWQoY29uc3Qgc3RydWN0IG1wdGNwX3NvY2sgKm1zaylcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTk4Mi17XG5uZXQvbXB0Y3AvcHJvdG9jb2wuaDo5ODM6XHRyZXR1cm4gUkVBRF9PTkNFKG1zay1cdTAwM2VzbmRfZGF0YV9maW5fZW5hYmxlKSBcdTAwMjZcdTAwMjZcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTk4NC1cdCAgICAgICBSRUFEX09OQ0UobXNrLVx1MDAzZXdyaXRlX3NlcSkgPT0gUkVBRF9PTkNFKG1zay1cdTAwM2VzbmRfbnh0KTtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD0xMzA0PXN0YXRpYyBpbmxpbmUgYm9vbCBtcHRjcF90cnlfZmFsbGJhY2soc3RydWN0IHNvY2sgKnNzaywgaW50IGZiX21pYilcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xMzEyLVx0XHRyZXR1cm4gZmFsc2U7XG5uZXQvbXB0Y3AvcHJvdG9jb2wuaDoxMzEzOlx0aWYgKFJFQURfT05DRShtc2stXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSkgXHUwMDI2XHUwMDI2ICEoc3NrLVx1MDAzZXNrX3NodXRkb3duIFx1MDAyNiBTRU5EX1NIVVRET1dOKSkge1xubmV0L21wdGNwL3Byb3RvY29sLmgtMTMxNC1cdFx0Z2ZwX3Qgc2F2ZWRfYWxsb2NhdGlvbiA9IHNzay1cdTAwM2Vza19hbGxvY2F0aW9uO1xuLS1cbm5ldC9tcHRjcC9zdWJmbG93LmM9MTAzMD1zdGF0aWMgZW51bSBtYXBwaW5nX3N0YXR1cyB2YWxpZGF0ZV9kYXRhX2NzdW0oc3RydWN0IHNvY2sgKnNzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEwOTctXHRcdFx0XHQgc3ViZmxvdy1cdTAwM2VtYXBfc3ViZmxvd19zZXEsXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjEwOTg6XHRcdFx0XHQgc3ViZmxvdy1cdTAwM2VtYXBfZGF0YV9sZW4gJiM0Mzsgc3ViZmxvdy1cdTAwM2VtYXBfZGF0YV9maW4sXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEwOTktXHRcdFx0XHQgc3ViZmxvdy1cdTAwM2VtYXBfZGF0YV9jc3VtKTtcbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTExMDk9c3RhdGljIGVudW0gbWFwcGluZ19zdGF0dXMgZ2V0X21hcHBpbmdfc3RhdHVzKHN0cnVjdCBzb2NrICpzc2ssXG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTU3LVxubmV0L21wdGNwL3N1YmZsb3cuYzoxMTU4Olx0aWYgKG1wZXh0LVx1MDAzZWRhdGFfZmluID09IDEpIHtcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE1OTpcdFx0dTY0IGRhdGFfZmluX3NlcTtcbm5ldC9tcHRjcC9zdWJmbG93LmMtMTE2MC1cbm5ldC9tcHRjcC9zdWJmbG93LmMtMTE2MS1cdFx0aWYgKGRhdGFfbGVuID09IDEpIHtcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE2MjpcdFx0XHRib29sIHVwZGF0ZWQgPSBtcHRjcF91cGRhdGVfcmN2X2RhdGFfZmluKG1zaywgbXBleHQtXHUwMDNlZGF0YV9zZXEsXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExNjMtXHRcdFx0XHRcdFx0XHRcdCBtcGV4dC1cdTAwM2Vkc242NCk7XG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTgwLVxubmV0L21wdGNwL3N1YmZsb3cuYzoxMTgxOlx0XHRkYXRhX2Zpbl9zZXEgPSBtcGV4dC1cdTAwM2VkYXRhX3NlcSAmIzQzOyBkYXRhX2xlbiAtIDE7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExODItXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjExODM6XHRcdC8qIElmIG1wZXh0LVx1MDAzZWRhdGFfc2VxIGlzIGEgMzItYml0IHZhbHVlLCBkYXRhX2Zpbl9zZXEgbXVzdCBhbHNvXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExODQtXHRcdCAqIGJlIGxpbWl0ZWQgdG8gMzIgYml0cy5cbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExODYtXHRcdGlmICghbXBleHQtXHUwMDNlZHNuNjQpXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjExODc6XHRcdFx0ZGF0YV9maW5fc2VxIFx1MDAyNj0gR0VOTUFTS19VTEwoMzEsIDApO1xubmV0L21wdGNwL3N1YmZsb3cuYy0xMTg4LVxubmV0L21wdGNwL3N1YmZsb3cuYzoxMTg5Olx0XHRtcHRjcF91cGRhdGVfcmN2X2RhdGFfZmluKG1zaywgZGF0YV9maW5fc2VxLCBtcGV4dC1cdTAwM2Vkc242NCk7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExOTAtXHRcdHByX2RlYnVnKFwmIzM0O0RBVEFfRklOIHdpdGggbWFwcGluZyBzZXE9JWxsdSBkc242ND0lZFxcblwmIzM0Oyxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE5MTpcdFx0XHQgZGF0YV9maW5fc2VxLCBtcGV4dC1cdTAwM2Vkc242NCk7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExOTItXG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYy0xMjI1LVx0c3ViZmxvdy1cdTAwM2VtYXBfdmFsaWQgPSAxO1xubmV0L21wdGNwL3N1YmZsb3cuYzoxMjI2Olx0c3ViZmxvdy1cdTAwM2VtYXBfZGF0YV9maW4gPSBtcGV4dC1cdTAwM2VkYXRhX2Zpbjtcbm5ldC9tcHRjcC9zdWJmbG93LmMtMTIyNy1cdHN1YmZsb3ctXHUwMDNlbXBjX21hcCA9IG1wZXh0LVx1MDAzZW1wY19tYXA7XG4tLVxubmV0L21wdGNwL3N1YmZsb3cuYz0xMjg5PXN0YXRpYyB2b2lkIHN1YmZsb3dfc2NoZWRfd29ya19pZl9jbG9zZWQoc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgc3RydWN0IHNvY2sgKnNzaylcbi0tXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEzMDktXHQgICAgbXNrLVx1MDAzZWZpcnN0ID09IHNzayBcdTAwMjZcdTAwMjZcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTMxMDpcdCAgICBtcHRjcF91cGRhdGVfcmN2X2RhdGFfZmluKG1zaywgc3ViZmxvdy1cdTAwM2VtYXBfc2VxICYjNDM7XG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEzMTEtXHRcdFx0XHQgICAgICBzdWJmbG93LVx1MDAzZW1hcF9kYXRhX2xlbiwgdHJ1ZSkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MzI1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTVBUQ1AgRGF0YSBGSU4gSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBkYXRhX2ZpbmAgaXNzdWUsIGFuZCBpdCBsb29rcyBsaWtlIGBtcHRjcF91cGRhdGVfcmN2X2RhdGFfZmluYCBjb21lcyBpbnRvIHBsYXkgd2hlbiB0aGUgYGRhdGFfZmluYCBmbGFnIGlzIHNldC4gVGhhdCBtYWtlcyBzZW5zZS4gQnV0IHRoZSBjb250ZXh0IGlzIGEgYml0IGJyb2FkZXIg4oCTIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGBtcHRjcF9wYXJzZV9vcHRpb25gLCB3aGljaCBpcyB0aGUgd29ya2hvcnNlIGZvciBwYXJzaW5nIFRDUCBvcHRpb25zLgoKQWhhISBJZiBgZGF0YV9maW5gIGlzIHNldCwgYG1wdGNwX2luY29taW5nX29wdGlvbnNgICptaWdodCogc2V0IGBtcGV4dC0mZ3Q7ZGF0YV9maW4gPSBtcF9vcHQuZGF0YV9maW47YC4gQW5kIHRoZW4sICp0aGF0JiMzOTtzKiB3aGF0IGBnZXRfbWFwcGluZ19zdGF0dXNgIGNoZWNrcy4gVGhhdCYjMzk7cyBhIGdvb2QgYnJlYWRjcnVtYiB0cmFpbC4gU28sIGBtcHRjcF9pbmNvbWluZ19vcHRpb25zYCBhbmQgYGdldF9tYXBwaW5nX3N0YXR1c2AgYXJlIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9ucyB0byB6ZXJvIGluIG9uLiBUaGV5JiMzOTtyZSB0aGUgY3JpdGljYWwgcGllY2VzIGludm9sdmVkIGluIHNldHRpbmcgYW5kIHJlYWRpbmcgdGhpcyBmbGFnLgoKSSBzaG91bGQgYWxzbyBpbmNsdWRlIGBtcHRjcF9wYXJzZV9vcHRpb25gLCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMuIExldCYjMzk7cyBzZWUuLi5pcyBpdCBpbmxpbmVkLCBvciBpcyBpdCBhIHByb3BlciBmdW5jdGlvbiBjYWxsPyBUaGF0IGNvdWxkIG1ha2UgYSBkaWZmZXJlbmNlLiBMZXQmIzM5O3MgbGlzdCB0aGVzZSBrZXkgZnVuY3Rpb25zOiBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AsIGBtcHRjcF9nZXRfb3B0aW9uc2AsIGFuZCBgZ2V0X21hcHBpbmdfc3RhdHVzYC4gVGhleSBhcmUgYWxsIGNyaXRpY2FsLgoKV2FpdC4uLndoYXQgYWJvdXQgdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gbWFrZSBzdXJlIE1QVENQIGlzIGFjdHVhbGx5IGVuYWJsZWQuIE90aGVyd2lzZSwgdGhpcyBpcyBhbGwgYWNhZGVtaWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNUFRDUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tcHRjcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21wdGNwL0tjb25maWctMS1cbm5ldC9tcHRjcC9LY29uZmlnOjI6Y29uZmlnIE1QVENQXG5uZXQvbXB0Y3AvS2NvbmZpZy0zLVx0Ym9vbCBcJiMzNDtNUFRDUDogTXVsdGlwYXRoIFRDUFwmIzM0O1xuLS1cbm5ldC9tcHRjcC9LY29uZmlnPTE2PWNvbmZpZyBJTkVUX01QVENQX0RJQUdcbi0tXG5uZXQvbXB0Y3AvS2NvbmZpZy0xOS1cbm5ldC9tcHRjcC9LY29uZmlnOjIwOmNvbmZpZyBNUFRDUF9JUFY2XG5uZXQvbXB0Y3AvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7TVBUQ1A6IElQdjYgc3VwcG9ydCBmb3IgTXVsdGlwYXRoIFRDUFwmIzM0O1xuLS1cbm5ldC9tcHRjcC9LY29uZmlnLTI0LVxubmV0L21wdGNwL0tjb25maWc6MjU6Y29uZmlnIE1QVENQX0tVTklUX1RFU1Rcbm5ldC9tcHRjcC9LY29uZmlnLTI2LVx0dHJpc3RhdGUgXCYjMzQ7VGhpcyBidWlsZHMgdGhlIE1QVENQIEtVbml0IHRlc3RzXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxMTYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBvd24gcGVyc3BlY3RpdmUgYXMgc29tZW9uZSBmYW1pbGlhciB3aXRoIG5ldHdvcmsgcHJvdG9jb2wgaW50ZXJuYWxzOgoKKipEaXZpbmcgaW50byB0aGUgTVBUQ1AgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgdGhlIGNvcmUgZm9jdXMgc2VlbXMgdG8gYmUgb24gTVBUQ1AgY29uZmlndXJhdGlvbiwgbmF0dXJhbGx5LiBNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIGBNUFRDUGAgaXRzZWxmIOKAkyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gdG8gaW52ZXN0aWdhdGUuIEJ1dCwgYXMgd2UgYWxsIGtub3csIHRoaW5ncyBhcmUgcmFyZWx5IHRoYXQgc2ltcGxlLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guCgpTbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgc2NhbiBmb3IgKm90aGVyKiByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3Igc2V0dGluZ3MgdGhhdCBtaWdodCBpbmZsdWVuY2UgaXRzIGJlaGF2aW9yLiBUaGlzIGNvdWxkIGJlIGFueXRoaW5nIHRoYXQgaW50ZWdyYXRlcyB3aXRoIGl0IG9yIHNpdHMgYWxvbmdzaWRlIGl0LiBBIGhvbGlzdGljIGFwcHJvYWNoIGlzIGJlc3QuCgpBbmQsIGZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGVyZSB0byBmaW5kIHRoZSBjb2RlIHRoYXQgYWN0dWFsbHkgaW1wbGVtZW50cyBhbGwgdGhpcy4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgZmlsZSBpcyBgbmV0L21wdGNwL29wdGlvbnMuY2AuIE9rYXksIG5vdyBJIGhhdmUgYSBzdGFydGluZyBwb2ludCBhbmQgdGhlIGZpbGUgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gVGltZSB0byBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLVxcJFxcKENPTkZJR19NUFRDUFxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tcHRjcC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21wdGNwL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxubmV0L21wdGNwL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX01QVENQKSAmIzQzOz0gbXB0Y3Aub1xubmV0L21wdGNwL01ha2VmaWxlLTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NDU4CgkJCQkJCQlvdXRwdXQ6IDE5MwoJCQkJCQkJdGhvdWdodHM6IDQzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTVBUQ1AgRFNTIE9wdGlvbiBQYXJzaW5nIENoYW5nZSoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIHRoZSBjcml0aWNhbCBjaGFuZ2UgY2VudGVycyBhcm91bmQgYENPTkZJR19NUFRDUGAuIFRoYXQmIzM5O3MgdGhlIG9ubHkgY29uZmlnIGZsYWcgSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoIGhlcmUuIExldCYjMzk7cyBzZWUuLi4gdGhlIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgd2F5IE1QVENQIERTUyBvcHRpb25zIGFyZSBwYXJzZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBtcHRjcF9wYXJzZV9vcHRpb24oKWAgZnVuY3Rpb24uIFRoZSBjb3JlIG9mIGl0IGFsbCBpcyBtYWtpbmcgc3VyZSB0aGUgYGRhdGFfZmluYCBmbGFnIGlzIG9ubHkgY29uc2lkZXJlZCBpZiB0aGUgYHVzZV9tYXBgIGZsYWcgaXMgYWxzbyBzZXQuIEVzc2VudGlhbGx5LCBpdCBpcyBmaXhpbmcgYW4gaW5jb25zaXN0ZW5jeSB3aGVyZSBgZGF0YV9maW5gIG1pZ2h0IGhhdmUgYmVlbiBzZXQgaW5kZXBlbmRlbnRseS4KClRoaXMgaXMgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgdG8gaG93IGluY29taW5nIHBhY2tldHMgd2l0aCBEU1Mgb3B0aW9ucyBhcmUgaGFuZGxlZC4gSXQgZGlyZWN0bHkgaW1wYWN0cyBob3cgdGhlIGtlcm5lbCByZWNvZ25pemVzIGEgREFUQV9GSU4sIHdoaWNoIGlzIGNyaXRpY2FsIGZvciBmbG93IGNvbnRyb2wgYW5kIGNvbm5lY3Rpb24gdGVybWluYXRpb24uIFRoaXMgaXMgdGhlIGtpbmQgb2YgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgYnkgc2VuZGluZyBjcmFmdGVkIHBhY2tldHMsIHNvIGl0IG5lZWRzIHRob3JvdWdoIGZ1enppbmcuIFdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgd2UgYXJlIG5vdCBpbnRyb2R1Y2luZyByZWdyZXNzaW9ucyBvciBjYXVzaW5nIHVuZXhwZWN0ZWQgc3RhdGUgdHJhbnNpdGlvbnMuCgpJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGtleSBzeW1ib2xzLiBCYXNlZCBvbiB0aGUgY29kZSwgYG1wdGNwX3BhcnNlX29wdGlvbmAgd2lsbCBiZSBpbXBvcnRhbnQsIGV2ZW4gaWYgaXQgbWlnaHQgYmUgaW5saW5lZC4gSSBhbHNvIGtub3cgdGhhdCBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AsIGBtcHRjcF9nZXRfb3B0aW9uc2AsIGFuZCBgZ2V0X21hcHBpbmdfc3RhdHVzYCBhcmUgaW52b2x2ZWQgaW4gdGhlIG92ZXJhbGwgcHJvY2Vzcy4gTm93IHRoYXQgSSBkb3VibGUgY2hlY2tlZCB0aGUgc291cmNlLCBJIHJlYWxpemUgdGhhdCBgbXB0Y3BfcGFyc2Vfb3B0aW9uYCBpcyBpbmRlZWQgc3RhdGljLCBidXQgc3RpbGwgaW1wb3J0YW50LgoKR29pbmcgYSBsYXllciBkZWVwZXIsIEkgc2VlIHRoYXQgYG1wdGNwX3BhcnNlX29wdGlvbmAgaXMgY2FsbGVkIGJ5IGBtcHRjcF9nZXRfb3B0aW9uc2AuIGBtcHRjcF9nZXRfb3B0aW9uc2AgaXMgY2FsbGVkIGZyb20gYG1wdGNwX2luY29taW5nX29wdGlvbnNgLCBgc3ViZmxvd19jaGVja19yZXFgLCBgbXB0Y3Bfc3ViZmxvd19pbml0X2Nvb2tpZV9yZXFgLCBgc3ViZmxvd19maW5pc2hfY29ubmVjdGAsIGFuZCBgc3ViZmxvd19zeW5fcmVjdl9zb2NrYC4gVGhhdCBjb25maXJtcyB0aGF0IGBtcHRjcF9nZXRfb3B0aW9uc2AgaXMgYSBmYW50YXN0aWMgZm9jdXMgc3ltYm9sLiBOb3cgdGhhdCBJIGhhdmUgZG9uZSBhbGwgdGhpcyBhbmFseXNpcywgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01QVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXB0Y3BfZ2V0X29wdGlvbnMmIzM0OywKICAgICYjMzQ7bXB0Y3BfaW5jb21pbmdfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtnZXRfbWFwcGluZ19zdGF0dXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01QVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXB0Y3BfZ2V0X29wdGlvbnMmIzM0OywKICAgICYjMzQ7bXB0Y3BfaW5jb21pbmdfb3B0aW9ucyYjMzQ7LAogICAgJiMzNDtnZXRfbWFwcGluZ19zdGF0dXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gc3RhdGUgdHJhbnNpdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0Njo1My45NTEwNjY1OThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk0MDA3Mzk2NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVBUQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtcHRjcF9nZXRfb3B0aW9uc1wiLFxuICAgIFwibXB0Y3BfaW5jb21pbmdfb3B0aW9uc1wiLFxuICAgIFwiZ2V0X21hcHBpbmdfc3RhdHVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBpbiBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDY6NTMuOTUxMDc2MjM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjc0NTU5OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYjg5NTdmMDgxYzZlZTBkYmNiNTk3NDA2MzI0ODU2OGE3OTU2MzNiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDEwIDE2OjQ2OjUyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9tcHRjcC9vcHRpb25zLmMgYi9uZXQvbXB0Y3Avb3B0aW9ucy5jXFxuaW5kZXggZGZmM2ZkNWQzYjU1OWIuLjFiNzRjYTViNmE1OTU2IDEwMDY0NFxcbi0tLSBhL25ldC9tcHRjcC9vcHRpb25zLmNcXG4rKysgYi9uZXQvbXB0Y3Avb3B0aW9ucy5jXFxuQEAgLTE1NywxNyArMTU3LDExIEBAIHN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRwdHIrKztcXG4gXFxuIFxcdFxcdGZsYWdzID0gKCpwdHIrKykgXFx1MDAyNiBNUFRDUF9EU1NfRkxBR19NQVNLO1xcbi1cXHRcXHRtcF9vcHQtXFx1MDAzZWRhdGFfZmluID0gKGZsYWdzIFxcdTAwMjYgTVBUQ1BfRFNTX0RBVEFfRklOKSAhPSAwO1xcbiBcXHRcXHRtcF9vcHQtXFx1MDAzZWRzbjY0ID0gKGZsYWdzIFxcdTAwMjYgTVBUQ1BfRFNTX0RTTjY0KSAhPSAwO1xcbiBcXHRcXHRtcF9vcHQtXFx1MDAzZXVzZV9tYXAgPSAoZmxhZ3MgXFx1MDAyNiBNUFRDUF9EU1NfSEFTX01BUCkgIT0gMDtcXG4gXFx0XFx0bXBfb3B0LVxcdTAwM2VhY2s2NCA9IChmbGFncyBcXHUwMDI2IE1QVENQX0RTU19BQ0s2NCkgIT0gMDtcXG4gXFx0XFx0bXBfb3B0LVxcdTAwM2V1c2VfYWNrID0gKGZsYWdzIFxcdTAwMjYgTVBUQ1BfRFNTX0hBU19BQ0spO1xcbiBcXG4tXFx0XFx0cHJfZGVidWcoXFxcImRhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0IG1wX29wdC1cXHUwMDNlZGF0YV9maW4sIG1wX29wdC1cXHUwMDNlZHNuNjQsXFxuLVxcdFxcdFxcdCBtcF9vcHQtXFx1MDAzZXVzZV9tYXAsIG1wX29wdC1cXHUwMDNlYWNrNjQsXFxuLVxcdFxcdFxcdCBtcF9vcHQtXFx1MDAzZXVzZV9hY2spO1xcbi1cXG4gXFx0XFx0ZXhwZWN0ZWRfb3BzaXplID0gVENQT0xFTl9NUFRDUF9EU1NfQkFTRTtcXG4gXFxuIFxcdFxcdGlmIChtcF9vcHQtXFx1MDAzZXVzZV9hY2spIHtcXG5AQCAtMTc4LDEyICsxNzIsMTggQEAgc3RhdGljIHZvaWQgbXB0Y3BfcGFyc2Vfb3B0aW9uKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGlmIChtcF9vcHQtXFx1MDAzZXVzZV9tYXApIHtcXG4rXFx0XFx0XFx0bXBfb3B0LVxcdTAwM2VkYXRhX2ZpbiA9IChmbGFncyBcXHUwMDI2IE1QVENQX0RTU19EQVRBX0ZJTikgIT0gMDtcXG4gXFx0XFx0XFx0aWYgKG1wX29wdC1cXHUwMDNlZHNuNjQpXFxuIFxcdFxcdFxcdFxcdGV4cGVjdGVkX29wc2l6ZSArPSBUQ1BPTEVOX01QVENQX0RTU19NQVA2NDtcXG4gXFx0XFx0XFx0ZWxzZVxcbiBcXHRcXHRcXHRcXHRleHBlY3RlZF9vcHNpemUgKz0gVENQT0xFTl9NUFRDUF9EU1NfTUFQMzI7XFxuIFxcdFxcdH1cXG4gXFxuK1xcdFxcdHByX2RlYnVnKFxcXCJkYXRhX2Zpbj0lZCBkc242ND0lZCB1c2VfbWFwPSVkIGFjazY0PSVkIHVzZV9hY2s9JWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCBtcF9vcHQtXFx1MDAzZWRhdGFfZmluLCBtcF9vcHQtXFx1MDAzZWRzbjY0LFxcbitcXHRcXHRcXHQgbXBfb3B0LVxcdTAwM2V1c2VfbWFwLCBtcF9vcHQtXFx1MDAzZWFjazY0LFxcbitcXHRcXHRcXHQgbXBfb3B0LVxcdTAwM2V1c2VfYWNrKTtcXG4rXFxuIFxcdFxcdC8qIEFsd2F5cyBwYXJzZSBhbnkgY3N1bSBwcmVzZW5jZSBjb21iaW5hdGlvbiwgd2Ugd2lsbCBlbmZvcmNlXFxuIFxcdFxcdCAqIFJGQyA4Njg0IFNlY3Rpb24gMy4zLjAgY2hlY2tzIGxhdGVyIGluIHN1YmZsb3dfZGF0YV9yZWFkeVxcbiBcXHRcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDY6NTQuNjc5NDUxMDU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjg2NzIzNDIwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVBUQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtcHRjcF9nZXRfb3B0aW9uc1wiLFxuICAgIFwibXB0Y3BfaW5jb21pbmdfb3B0aW9uc1wiLFxuICAgIFwiZ2V0X21hcHBpbmdfc3RhdHVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgb2YgTVBUQ1AgRFNTIG9wdGlvbnMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gU3BlY2lmaWNhbGx5LCBpdCBlbnN1cmVzIHRoYXQgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBvbmx5IGV4dHJhY3RlZCBhbmQgc2V0IGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHByZXNlbnQgaW4gdGhlIG9wdGlvbi4gUHJldmlvdXNseSwgYGRhdGFfZmluYCBjb3VsZCBiZSBzZXQgaW5kZXBlbmRlbnRseSBvZiBgdXNlX21hcGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBNUFRDUCBwcm90b2NvbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IGluY29taW5nIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBhbmQgd2hldGhlciBhIERBVEFfRklOIGlzIHJlY29nbml6ZWQuIEl0IGlzIHJlYWNoYWJsZSBieSBzZW5kaW5nIGNyYWZ0ZWQgTVBUQ1AgcGFja2V0cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBpbiBzdGF0ZSB0cmFuc2l0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzYjg5NTdmMDgxYzZlZTBkYmNiNTk3NDA2MzI0ODU2OGE3OTU2MzNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTY6NDY6NTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbXB0Y3Avb3B0aW9ucy5jIGIvbmV0L21wdGNwL29wdGlvbnMuY1xuaW5kZXggZGZmM2ZkNWQzYjU1OWIuLjFiNzRjYTViNmE1OTU2IDEwMDY0NFxuLS0tIGEvbmV0L21wdGNwL29wdGlvbnMuY1xuKysrIGIvbmV0L21wdGNwL29wdGlvbnMuY1xuQEAgLTE1NywxNyArMTU3LDExIEBAIHN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRwdHIrKztcbiBcbiBcdFx0ZmxhZ3MgPSAoKnB0cisrKSBcdTAwMjYgTVBUQ1BfRFNTX0ZMQUdfTUFTSztcbi1cdFx0bXBfb3B0LVx1MDAzZWRhdGFfZmluID0gKGZsYWdzIFx1MDAyNiBNUFRDUF9EU1NfREFUQV9GSU4pICE9IDA7XG4gXHRcdG1wX29wdC1cdTAwM2Vkc242NCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0RTTjY0KSAhPSAwO1xuIFx0XHRtcF9vcHQtXHUwMDNldXNlX21hcCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0hBU19NQVApICE9IDA7XG4gXHRcdG1wX29wdC1cdTAwM2VhY2s2NCA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0FDSzY0KSAhPSAwO1xuIFx0XHRtcF9vcHQtXHUwMDNldXNlX2FjayA9IChmbGFncyBcdTAwMjYgTVBUQ1BfRFNTX0hBU19BQ0spO1xuIFxuLVx0XHRwcl9kZWJ1ZyhcImRhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxcblwiLFxuLVx0XHRcdCBtcF9vcHQtXHUwMDNlZGF0YV9maW4sIG1wX29wdC1cdTAwM2Vkc242NCxcbi1cdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9tYXAsIG1wX29wdC1cdTAwM2VhY2s2NCxcbi1cdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9hY2spO1xuLVxuIFx0XHRleHBlY3RlZF9vcHNpemUgPSBUQ1BPTEVOX01QVENQX0RTU19CQVNFO1xuIFxuIFx0XHRpZiAobXBfb3B0LVx1MDAzZXVzZV9hY2spIHtcbkBAIC0xNzgsMTIgKzE3MiwxOCBAQCBzdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0fVxuIFxuIFx0XHRpZiAobXBfb3B0LVx1MDAzZXVzZV9tYXApIHtcbitcdFx0XHRtcF9vcHQtXHUwMDNlZGF0YV9maW4gPSAoZmxhZ3MgXHUwMDI2IE1QVENQX0RTU19EQVRBX0ZJTikgIT0gMDtcbiBcdFx0XHRpZiAobXBfb3B0LVx1MDAzZWRzbjY0KVxuIFx0XHRcdFx0ZXhwZWN0ZWRfb3BzaXplICs9IFRDUE9MRU5fTVBUQ1BfRFNTX01BUDY0O1xuIFx0XHRcdGVsc2VcbiBcdFx0XHRcdGV4cGVjdGVkX29wc2l6ZSArPSBUQ1BPTEVOX01QVENQX0RTU19NQVAzMjtcbiBcdFx0fVxuIFxuK1x0XHRwcl9kZWJ1ZyhcImRhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxcblwiLFxuK1x0XHRcdCBtcF9vcHQtXHUwMDNlZGF0YV9maW4sIG1wX29wdC1cdTAwM2Vkc242NCxcbitcdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9tYXAsIG1wX29wdC1cdTAwM2VhY2s2NCxcbitcdFx0XHQgbXBfb3B0LVx1MDAzZXVzZV9hY2spO1xuK1xuIFx0XHQvKiBBbHdheXMgcGFyc2UgYW55IGNzdW0gcHJlc2VuY2UgY29tYmluYXRpb24sIHdlIHdpbGwgZW5mb3JjZVxuIFx0XHQgKiBSRkMgODY4NCBTZWN0aW9uIDMuMy4wIGNoZWNrcyBsYXRlciBpbiBzdWJmbG93X2RhdGFfcmVhZHlcbiBcdFx0ICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0Njo1NC42Nzk0NTI3NThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTgyODk1MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVBUQ1AgT3B0aW9uIFBhcnNpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGhvdyB3ZSBoYW5kbGUgYG1wX29wdC1cdTAwM2VkYXRhX2ZpbmAgd2l0aGluIGBuZXQvbXB0Y3Avb3B0aW9ucy5jYC4gRXNzZW50aWFsbHksIGl0J3MgYWJvdXQgdGhlIHBhcnNpbmcgbG9naWMgaW4gYG1wdGNwX3BhcnNlX29wdGlvbigpYC4gSSdtIHNlZWluZyBhIHNpZ25pZmljYW50IGNoYW5nZTogYG1wX29wdC1cdTAwM2VkYXRhX2ZpbmAgaXMgbm93ICpjb25kaXRpb25hbGx5KiBzZXQgYmFzZWQgb24gdGhlIGBtcF9vcHQtXHUwMDNldXNlX21hcGAgZmxhZy5cblxuU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0aGUgaW50ZW50aW9uIGlzIHRvIG9ubHkgc2V0IGBtcF9vcHQtXHUwMDNlZGF0YV9maW5gIHdoZW4gd2UncmUgYWxzbyB1c2luZyBhIG1hcC4gSW5zaWRlIHRoYXQgYGlmIChtcF9vcHQtXHUwMDNldXNlX21hcClgIGJsb2NrLCBJIHNlZSBgbXBfb3B0LVx1MDAzZWRhdGFfZmluYCBnZXRzIHNldCB0byBgKGZsYWdzIFx1MDAyNiBNUFRDUF9EU1NfREFUQV9GSU4pICE9IDBgLiBTbywgdGhhdCdzIHRoZSBsb2dpYyBmb3Igc2V0dGluZyB0aGUgRklOIGZsYWcgaWYgdGhlIG1hcCBpcyBlbmFibGVkLlxuXG5UaGUgY3J1Y2lhbCBwYXJ0LCBhbmQgdGhlIGJpdCBJIG5lZWQgdG8gZGVsdmUgaW50byBtb3JlLCBpcyB3aGF0IGhhcHBlbnMgd2hlbiBgbXBfb3B0LVx1MDAzZXVzZV9tYXBgIGlzICpmYWxzZSouIEl0IGxvb2tzIGxpa2UgYG1wX29wdC1cdTAwM2VkYXRhX2ZpbmAgd2lsbCAqbm90KiBiZSBtb2RpZmllZCwgYW5kIHdpbGwgcmV0YWluIGl0cyBpbml0aWFsIHZhbHVlLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBXaGF0J3MgdGhlIGluaXRpYWxpemF0aW9uIG9mIGBtcF9vcHRgIGxvb2sgbGlrZT8gV2hhdCBkb2VzIGBkYXRhX2ZpbmAgZGVmYXVsdCB0bz8gSXMgdGhpcyBpbnRlbnRpb25hbCBiZWhhdmlvciwgb3IgYSBwb3RlbnRpYWwgaXNzdWU/IEknbSBnb2luZyB0byB0cmFjayBkb3duIHRoZSBpbml0aWFsaXphdGlvbiBvZiBgbXB0Y3BfcGFyc2Vfb3B0aW9uYCBhbmQgdGhlIGBtcF9vcHRgIHN0cnVjdHVyZSBpdHNlbGYgdG8gY2xhcmlmeSB0aGlzLiBUaGVyZSBjb3VsZCBiZSBzdWJ0bGUgaW1wbGljYXRpb25zIGhlcmUgdGhhdCBuZWVkIGNhcmVmdWwgY29uc2lkZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyMCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjQ2OjU5LjY2MjM0OTgyN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTUyOTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtcHRjcF9wYXJzZV9vcHRpb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21wdGNwL29wdGlvbnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbXB0Y3Avb3B0aW9ucy5jPTE4PXN0YXRpYyBib29sIG1wdGNwX2NhcF9mbGFnX3NoYTI1Nih1OCBmbGFncylcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMjItXFxubmV0L21wdGNwL29wdGlvbnMuYzoyMzpzdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTI0LVxcdFxcdFxcdCAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwdHIsIGludCBvcHNpemUsXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTM1OT12b2lkIG1wdGNwX2dldF9vcHRpb25zKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTM5My1cXHRcXHRcXHRpZiAob3Bjb2RlID09IFRDUE9QVF9NUFRDUClcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjM5NDpcXHRcXHRcXHRcXHRtcHRjcF9wYXJzZV9vcHRpb24oc2tiLCBwdHIsIG9wc2l6ZSwgbXBfb3B0KTtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTM5NS1cXHRcXHRcXHRwdHIgKz0gb3BzaXplIC0gMjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDY6NTkuNzQ3ODg0OTI2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjA3NTY3MDg5NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBgbXB0Y3BfZ2V0X29wdGlvbnNgIGFuZCBgbXBfb3B0YCBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBob3cgYG1wdGNwX2dldF9vcHRpb25zYCB3b3Jrcywgc3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgYG1wX29wdGAgc3RydWN0dXJlIGlzIGJlaW5nIGluaXRpYWxpemVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgZ290Y2hhcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGhhcHBlbmluZyB0aGVyZSwgZXNwZWNpYWxseSBhcm91bmQgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGFzc2lnbm1lbnQuIFdlJ3JlIGRlYWxpbmcgd2l0aCBjcml0aWNhbCBNUFRDUCBmdW5jdGlvbmFsaXR5LCBzbyB0aGlzIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGJlIHJvY2sgc29saWQuIEFueSBzdWJ0bGUgYnVnIGhlcmUgY291bGQgY2FzY2FkZSBpbnRvIHNlcmlvdXMgY29ubmVjdGlvbiBpbnN0YWJpbGl0eSBvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIGFuZCBJICpjYW5ub3QqIGFsbG93IHRoYXQuIEkgbmVlZCB0byBzZWUgaWYgaXQncyBiZWluZyBwcm9wZXJseSBoYW5kbGVkLiBMZXQncyBzZWUgaG93IHRoZXkncmUgaGFuZGxpbmcgdGhpbmdzLiBBcmUgYWxsIHRoZSBuZWNlc3NhcnkgZmllbGRzIGdldHRpbmcgc2V0PyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IEFyZSB3ZSBkZWFsaW5nIHdpdGggYW55IG1lbW9yeSBsZWFrcz8gVGhpcyByZXF1aXJlcyBhIGNhcmVmdWwsIGxpbmUtYnktbGluZSBpbnNwZWN0aW9uIHRvIHZlcmlmeSBjb3JyZWN0IG9wZXJhdGlvbi4gVGhpcyBpcyBmb3VuZGF0aW9uYWw7IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpdCdzIHJvYnVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjQ3OjIwLjUwNDU5NjA0N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjg1ODY1MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXB0Y3BfZ2V0X29wdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21wdGNwL29wdGlvbnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbXB0Y3Avb3B0aW9ucy5jPTIzPXN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy0zNTgtXFxubmV0L21wdGNwL29wdGlvbnMuYzozNTk6dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzYwLVxcdFxcdCAgICAgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz0xMTM2PWJvb2wgbXB0Y3BfaW5jb21pbmdfb3B0aW9ucyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExNjItXFxubmV0L21wdGNwL29wdGlvbnMuYzoxMTYzOlxcdG1wdGNwX2dldF9vcHRpb25zKHNrYiwgXFx1MDAyNm1wX29wdCk7XFxubmV0L21wdGNwL29wdGlvbnMuYy0xMTY0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0NzoyMC44NzMxODgzMTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTE1MDgyMjk1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipDaGVja2luZyBmb3IgWmVyb2VkIE11bHRpcGF0aCBUQ1AgT3B0aW9ucyoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgYG1wX29wdGAgdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4gU2VlbXMgbGlrZSB0aGUgbW9zdCBkaXJlY3Qgcm91dGUgdG8gZmluZCBvdXQgd291bGQgYmUgdG8gaW52ZXN0aWdhdGUgaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBpbmNvbWluZyBNdWx0aXBhdGggVENQIG9wdGlvbnMgb3IgcmV0cmlldmVzIGV4aXN0aW5nIG9uZXMuIFNvLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBmdW5jdGlvbnMgYG1wdGNwX2luY29taW5nX29wdGlvbnNgIGFuZCBgbXB0Y3BfZ2V0X29wdGlvbnNgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2VzIHdoZXJlIGBtcF9vcHRgIG1pZ2h0IGJlIHNldCBvciBjaGVja2VkLiBCeSBleGFtaW5pbmcgdGhlIGNvZGUgd2l0aGluIHRob3NlIGZ1bmN0aW9ucywgSSBzaG91bGQgYmUgYWJsZSB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSdzIGFueSBleHBsaWNpdCBpbml0aWFsaXphdGlvbiBvciBpZiB0aGUgdmFsdWUgbWlnaHQgYmUgZGVmYXVsdGVkIHRvIHplcm8sIG9yIGhhdmUgaXRzIHZhbHVlIHNldC4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgaXQgaXMgaGFuZGxlZCBpbiB0aGlzIHNjZW5hcmlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDc6MzYuMDI0MDE0MzZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1OTE0Njc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1wdGNwX2luY29taW5nX29wdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21wdGNwL29wdGlvbnMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbXB0Y3Avb3B0aW9ucy5jPTEwNTY9c3RhdGljIHZvaWQgYWNrX3VwZGF0ZV9tc2soc3RydWN0IG1wdGNwX3NvY2sgKm1zayxcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTA4MS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjEwODI6XFx0LyogdGhpcyBhc3N1bWVzIG1wdGNwX2luY29taW5nX29wdGlvbnMoKSBpcyBpbnZva2VkIGFmdGVyIHRjcF9hY2soKSAqL1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTA4My1cXHRpZiAoYWZ0ZXI2NChtc2stXFx1MDAzZXduZF9lbmQsIHNuZF9ueHQpKVxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz0xMTE1PXN0YXRpYyBib29sIGFkZF9hZGRyX2htYWNfdmFsaWQoc3RydWN0IG1wdGNwX3NvY2sgKm1zayxcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTEzNS0gKi9cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExMzY6Ym9vbCBtcHRjcF9pbmNvbWluZ19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExMzcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0NzozNi4xNjk5MzY0MDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzQ2MTI5MDc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgbXB0Y3BfZ2V0X29wdGlvbnNgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBNUFRDUCBvcHRpb25zIGFyZSBoYW5kbGVkIHdpdGhpbiB0aGUgYG1wdGNwX2dldF9vcHRpb25zYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBJJ20gemVyb2luZyBpbiBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgYG1wX29wdGAgc3RydWN0dXJlIGdldHMgZXhwbGljaXRseSB6ZXJvZWQgb3V0IGR1cmluZyB0aGlzIHByb2Nlc3MuIFRoaXMgaXMgYSBjcnVjaWFsIGRldGFpbCBmb3IgZW5zdXJpbmcgdGhlIGludGVncml0eSBhbmQgcHJlZGljdGFiaWxpdHkgb2YgdGhlIG9wdGlvbiBkYXRhLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIHByZXZpb3VzIG9wdGlvbiBzZXR0aW5ncy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhlIGZ1bmN0aW9uIGVzdGFibGlzaGVzIGEgY2xlYW4gc2xhdGUgZm9yIHRoZSBvcHRpb25zLiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBjb2RlIGFuZCB2ZXJpZnkgaXRzIGJlaGF2aW9yIHdpdGggcmVzcGVjdCB0byB0aGUgYG1wX29wdGAgdmFyaWFibGUuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGhlbHAgbWUgdHJvdWJsZXNob290IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBvcHRpb24gaGFuZGxpbmcgZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBvciByZW5lZ290aWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTI5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDg6NTkuNjMxMjI5NTIzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTg1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbXB0Y3Avb3B0aW9ucy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1OSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM1OTpcXHR2b2lkIG1wdGNwX2dldF9vcHRpb25zKGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuIDM2MDpcXHRcXHRcXHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcXG4gMzYxOlxcdHtcXG4gMzYyOlxcdFxcdGNvbnN0IHN0cnVjdCB0Y3BoZHIgKnRoID0gdGNwX2hkcihza2IpO1xcbiAzNjM6XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciAqcHRyO1xcbiAzNjQ6XFx0XFx0aW50IGxlbmd0aDtcXG4gMzY1OlxcdFxcbiAzNjY6XFx0XFx0LyogRW5zdXJlIHRoYXQgY2FzdGluZyB0aGUgd2hvbGUgc3RhdHVzIHRvIHUzMiBpcyBlZmZpY2llbnQgYW5kIHNhZmUgKi9cXG4gMzY3OlxcdFxcdEJVSUxEX0JVR19PTihzaXplb2ZfZmllbGQoc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQsIHN0YXR1cykgIT0gc2l6ZW9mKHUzMikpO1xcbiAzNjg6XFx0XFx0QlVJTERfQlVHX09OKCFJU19BTElHTkVEKG9mZnNldG9mKHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkLCBzdGF0dXMpLFxcbiAzNjk6XFx0XFx0XFx0XFx0XFx0IHNpemVvZih1MzIpKSk7XFxuIDM3MDpcXHRcXHQqKHUzMiAqKVxcdTAwMjZtcF9vcHQtXFx1MDAzZXN0YXR1cyA9IDA7XFxuIDM3MTpcXHRcXG4gMzcyOlxcdFxcdGxlbmd0aCA9ICh0aC1cXHUwMDNlZG9mZiAqIDQpIC0gc2l6ZW9mKHN0cnVjdCB0Y3BoZHIpO1xcbiAzNzM6XFx0XFx0cHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikodGggKyAxKTtcXG4gMzc0OlxcdFxcbiAzNzU6XFx0XFx0d2hpbGUgKGxlbmd0aCBcXHUwMDNlIDApIHtcXG4gMzc2OlxcdFxcdFxcdGludCBvcGNvZGUgPSAqcHRyKys7XFxuIDM3NzpcXHRcXHRcXHRpbnQgb3BzaXplO1xcbiAzNzg6XFx0XFxuIDM3OTpcXHRcXHRcXHRzd2l0Y2ggKG9wY29kZSkge1xcbiAzODA6XFx0XFx0XFx0Y2FzZSBUQ1BPUFRfRU9MOlxcbiAzODE6XFx0XFx0XFx0XFx0cmV0dXJuO1xcbiAzODI6XFx0XFx0XFx0Y2FzZSBUQ1BPUFRfTk9QOlxcdC8qIFJlZjogUkZDIDc5MyBzZWN0aW9uIDMuMSAqL1xcbiAzODM6XFx0XFx0XFx0XFx0bGVuZ3RoLS07XFxuIDM4NDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gMzg1OlxcdFxcdFxcdGRlZmF1bHQ6XFxuIDM4NjpcXHRcXHRcXHRcXHRpZiAobGVuZ3RoIFxcdTAwM2MgMilcXG4gMzg3OlxcdFxcdFxcdFxcdFxcdHJldHVybjtcXG4gMzg4OlxcdFxcdFxcdFxcdG9wc2l6ZSA9ICpwdHIrKztcXG4gMzg5OlxcdFxcdFxcdFxcdGlmIChvcHNpemUgXFx1MDAzYyAyKSAvKiBcXFwic2lsbHkgb3B0aW9uc1xcXCIgKi9cXG4gMzkwOlxcdFxcdFxcdFxcdFxcdHJldHVybjtcXG4gMzkxOlxcdFxcdFxcdFxcdGlmIChvcHNpemUgXFx1MDAzZSBsZW5ndGgpXFxuIDM5MjpcXHRcXHRcXHRcXHRcXHRyZXR1cm47XFx0LyogZG9uJ3QgcGFyc2UgcGFydGlhbCBvcHRpb25zICovXFxuIDM5MzpcXHRcXHRcXHRcXHRpZiAob3Bjb2RlID09IFRDUE9QVF9NUFRDUClcXG4gMzk0OlxcdFxcdFxcdFxcdFxcdG1wdGNwX3BhcnNlX29wdGlvbihza2IsIHB0ciwgb3BzaXplLCBtcF9vcHQpO1xcbiAzOTU6XFx0XFx0XFx0XFx0cHRyICs9IG9wc2l6ZSAtIDI7XFxuIDM5NjpcXHRcXHRcXHRcXHRsZW5ndGggLT0gb3BzaXplO1xcbiAzOTc6XFx0XFx0XFx0fVxcbiAzOTg6XFx0XFx0fVxcbiAzOTk6XFx0fVxcbiA0MDA6XFx0XFxuIDQwMTpcXHRib29sIG1wdGNwX3N5bl9vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gNDAyOlxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgKnNpemUsIHN0cnVjdCBtcHRjcF9vdXRfb3B0aW9ucyAqb3B0cylcXG4gNDAzOlxcdHtcXG4gNDA0OlxcdFxcdHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3cgPSBtcHRjcF9zdWJmbG93X2N0eChzayk7XFxuIDQwNTpcXHRcXG4gNDA2OlxcdFxcdC8qIHdlIHdpbGwgdXNlIHNuZF9pc24gdG8gZGV0ZWN0IGZpcnN0IHBrdCBbcmVddHJhbnNtaXNzaW9uXFxuIDQwNzpcXHRcXHQgKiBpbiBtcHRjcF9lc3RhYmxpc2hlZF9vcHRpb25zX21wKClcXG4gNDA4OlxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0ODo1OS42MzEzOTIyNjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NjY5MjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipBbmFseXppbmcgdGhlIFN0YXR1cyBGaWVsZCBSZXNldCoqXG5cbkFscmlnaHQsIHRoYXQgYCoodTMyICopXHUwMDI2bXBfb3B0LVx1MDAzZXN0YXR1cyA9IDA7YCBsaW5lLi4uIHRoYXQncyBhIGRpcmVjdCBtZW1vcnkgd3JpdGUuIEl0J3MgZXNzZW50aWFsbHkgemVyb2luZyBvdXQgdGhlIGBzdGF0dXNgIGZpZWxkLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2F0aW9ucy4gR2l2ZW4gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGlzIHN5c3RlbSwgSSdtIGFscmVhZHkgbWVudGFsbHkgcmVhY2hpbmcgZm9yIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBvZiBgbXBfb3B0YC4gSSBuZWVkIHRvIHJlbWVtYmVyIHdoYXQncyBzdG9yZWQgaW4gYHN0YXR1c2AsIGFzIHRoZSBuYW1lIGFsb25lIGRvZXNuJ3QgZ2l2ZSBtZSBlbm91Z2ggY29udGV4dC4gV2hhdCBiaXRzIHJlcHJlc2VudCB3aGF0LCB3aGF0IHRoZSB0eXBpY2FsIHZhbHVlcyBhcmUsIGFuZCB3aGF0IHRoZSB2YWxpZCByYW5nZSBpcy4gVW5kZXJzdGFuZGluZyB0aGUgYml0cyBpcyBrZXkuIFRoaXMgY291bGQgYmUgYSBzaW1wbGUgaW5pdGlhbGl6YXRpb24sIGEgY2xlYXItZG93biBiZWZvcmUgYSB0YXNrLCBvciBwZXJoYXBzIGEgcmVzZXQgYWZ0ZXIgc29tZSBlcnJvciBzdGF0ZS4gU28gbWFueSBwb3NzaWJpbGl0aWVzLiBUaGUgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBzdGF0dXNgIGZpZWxkIGRlZmluaXRpb24gdG8gYXNjZXJ0YWluIHdoYXQgaW5mb3JtYXRpb24gdGhhdCBwaWVjZSBvZiBjb2RlIGlzIGFmZmVjdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDk6MDIuOTg4MDg3OTY0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODc5MTk3MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21wdGNwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbXB0Y3Avb3B0aW9ucy5jPTIzPXN0YXRpYyB2b2lkIG1wdGNwX3BhcnNlX29wdGlvbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMjQtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnB0ciwgaW50IG9wc2l6ZSxcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjI1OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMjYte1xcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz0zNTk9dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MzYwOlxcdFxcdCAgICAgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzYxLXtcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzY2LVxcdC8qIEVuc3VyZSB0aGF0IGNhc3RpbmcgdGhlIHdob2xlIHN0YXR1cyB0byB1MzIgaXMgZWZmaWNpZW50IGFuZCBzYWZlICovXFxubmV0L21wdGNwL29wdGlvbnMuYzozNjc6XFx0QlVJTERfQlVHX09OKHNpemVvZl9maWVsZChzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCwgc3RhdHVzKSAhPSBzaXplb2YodTMyKSk7XFxubmV0L21wdGNwL29wdGlvbnMuYzozNjg6XFx0QlVJTERfQlVHX09OKCFJU19BTElHTkVEKG9mZnNldG9mKHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkLCBzdGF0dXMpLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMzY5LVxcdFxcdFxcdFxcdCBzaXplb2YodTMyKSkpO1xcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz05MTU9c3RhdGljIGJvb2wgY2hlY2tfZnVsbHlfZXN0YWJsaXNoZWQoc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgc3RydWN0IHNvY2sgKnNzayxcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtOTE3LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9tcHRjcC9vcHRpb25zLmM6OTE4OlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtOTE5LXtcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmM9MTA1Nj1zdGF0aWMgdm9pZCBhY2tfdXBkYXRlX21zayhzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTA1Ny1cXHRcXHRcXHQgICBzdHJ1Y3Qgc29jayAqc3NrLFxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTA1ODpcXHRcXHRcXHQgICBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTA1OS17XFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTExMTU9c3RhdGljIGJvb2wgYWRkX2FkZHJfaG1hY192YWxpZChzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTExNjpcXHRcXHRcXHRcXHRzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTExNy17XFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTExMzY9Ym9vbCBtcHRjcF9pbmNvbWluZ19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTEzOS1cXHRzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrID0gbXB0Y3Bfc2soc3ViZmxvdy1cXHUwMDNlY29ubik7XFxubmV0L21wdGNwL29wdGlvbnMuYzoxMTQwOlxcdHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIG1wX29wdDtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExNDEtXFx0c3RydWN0IG1wdGNwX2V4dCAqbXBleHQ7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0zNTUzPXN0cnVjdCBzb2NrICptcHRjcF9za19jbG9uZV9pbml0KGNvbnN0IHN0cnVjdCBzb2NrICpzayxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozNTU0OlxcdFxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0LFxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTM1NTUtXFx0XFx0XFx0XFx0IHN0cnVjdCBzb2NrICpzc2ssXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD0xMzg9c3RhdGljIGlubGluZSBib29sIGJlZm9yZTY0KF9fdTY0IHNlcTEsIF9fdTY0IHNlcTIpXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xNDQtXFxubmV0L21wdGNwL3Byb3RvY29sLmg6MTQ1OnN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xNDYtXFx0dTY0XFx0c25kcl9rZXk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD04MDg9dm9pZCBfX21wdGNwX3N1YmZsb3dfZnVsbHlfZXN0YWJsaXNoZWQoc3RydWN0IG1wdGNwX3NvY2sgKm1zayxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC04MDktXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3csXFxubmV0L21wdGNwL3Byb3RvY29sLmg6ODEwOlxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC04MTEtYm9vbCBfX21wdGNwX3JldHJhbnNtaXRfcGVuZGluZ19kYXRhKHN0cnVjdCBzb2NrICpzayk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05MTg9c3RydWN0IHNvY2sgKm1wdGNwX3NrX2Nsb25lX2luaXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjkxOTpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdCxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC05MjAtXFx0XFx0XFx0XFx0IHN0cnVjdCBzb2NrICpzc2ssXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05MjI9dm9pZCBtcHRjcF9nZXRfb3B0aW9ucyhjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjkyMzpcXHRcXHQgICAgICAgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdCk7XFxubmV0L21wdGNwL3Byb3RvY29sLmgtOTI0LVxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz0xNDc9c3RhdGljIGludCBzdWJmbG93X2NoZWNrX3JlcShzdHJ1Y3QgcmVxdWVzdF9zb2NrICpyZXEsXFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTE1Mi1cXHRzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19yZXF1ZXN0X3NvY2sgKnN1YmZsb3dfcmVxID0gbXB0Y3Bfc3ViZmxvd19yc2socmVxKTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjE1MzpcXHRzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCBtcF9vcHQ7XFxubmV0L21wdGNwL3N1YmZsb3cuYy0xNTQtXFx0Ym9vbCBvcHRfbXBfY2FwYWJsZSwgb3B0X21wX2pvaW47XFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTI2NT1pbnQgbXB0Y3Bfc3ViZmxvd19pbml0X2Nvb2tpZV9yZXEoc3RydWN0IHJlcXVlc3Rfc29jayAqcmVxLFxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0yNzAtXFx0c3RydWN0IG1wdGNwX3N1YmZsb3dfcmVxdWVzdF9zb2NrICpzdWJmbG93X3JlcSA9IG1wdGNwX3N1YmZsb3dfcnNrKHJlcSk7XFxubmV0L21wdGNwL3N1YmZsb3cuYzoyNzE6XFx0c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgbXBfb3B0O1xcbm5ldC9tcHRjcC9zdWJmbG93LmMtMjcyLVxcdGJvb2wgb3B0X21wX2NhcGFibGUsIG9wdF9tcF9qb2luO1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz00Nzc9c3RhdGljIHZvaWQgc3ViZmxvd19zZXRfcmVtb3RlX2tleShzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxcbm5ldC9tcHRjcC9zdWJmbG93LmMtNDc4LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3csXFxubmV0L21wdGNwL3N1YmZsb3cuYzo0Nzk6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQgKm1wX29wdClcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTQ4MC17XFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTUwMT1zdGF0aWMgdm9pZCBtcHRjcF9wcm9wYWdhdGVfc3RhdGUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqc3NrLFxcbm5ldC9tcHRjcC9zdWJmbG93LmMtNTAyLVxcdFxcdFxcdFxcdCAgc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjUwMzpcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkICptcF9vcHQpXFxubmV0L21wdGNwL3N1YmZsb3cuYy01MDQte1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz01MjY9c3RhdGljIHZvaWQgc3ViZmxvd19maW5pc2hfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTUyOC1cXHRzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19jb250ZXh0ICpzdWJmbG93ID0gbXB0Y3Bfc3ViZmxvd19jdHgoc2spO1xcbm5ldC9tcHRjcC9zdWJmbG93LmM6NTI5OlxcdHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkIG1wX29wdDtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTUzMC1cXHRzdHJ1Y3Qgc29jayAqcGFyZW50ID0gc3ViZmxvdy1cXHUwMDNlY29ubjtcXG4tLVxcbm5ldC9tcHRjcC9zdWJmbG93LmM9NzUzPXN0YXRpYyBib29sIHN1YmZsb3dfaG1hY192YWxpZChjb25zdCBzdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19yZXF1ZXN0X3NvY2sgKnN1YmZsb3dfcmVxLFxcbm5ldC9tcHRjcC9zdWJmbG93LmM6NzU0OlxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCAqbXBfb3B0KVxcbm5ldC9tcHRjcC9zdWJmbG93LmMtNzU1LXtcXG4tLVxcbm5ldC9tcHRjcC9zdWJmbG93LmM9Nzk3PXZvaWQgX19tcHRjcF9zdWJmbG93X2Z1bGx5X2VzdGFibGlzaGVkKHN0cnVjdCBtcHRjcF9zb2NrICptc2ssXFxubmV0L21wdGNwL3N1YmZsb3cuYy03OTgtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBtcHRjcF9zdWJmbG93X2NvbnRleHQgKnN1YmZsb3csXFxubmV0L21wdGNwL3N1YmZsb3cuYzo3OTk6XFx0XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBtcHRjcF9vcHRpb25zX3JlY2VpdmVkICptcF9vcHQpXFxubmV0L21wdGNwL3N1YmZsb3cuYy04MDAte1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz04MDY9c3RhdGljIHN0cnVjdCBzb2NrICpzdWJmbG93X3N5bl9yZWN2X3NvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLFxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy04MTYtXFx0c3RydWN0IG1wdGNwX3N1YmZsb3dfcmVxdWVzdF9zb2NrICpzdWJmbG93X3JlcTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjgxNzpcXHRzdHJ1Y3QgbXB0Y3Bfb3B0aW9uc19yZWNlaXZlZCBtcF9vcHQ7XFxubmV0L21wdGNwL3N1YmZsb3cuYy04MTgtXFx0Ym9vbCBmYWxsYmFjaywgZmFsbGJhY2tfaXNfZmF0YWw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjQ5OjAzLjM3NjAxMjAxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA2MDg1OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBiaXQgb2YgY29kZTpcblxuKipBbmFseXppbmcgdGhlIGBtcF9vcHQtXHUwMDNlc3RhdHVzYCBGaWVsZCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIGBtcF9vcHQtXHUwMDNlc3RhdHVzYC4uLiBpcyB0aGF0IGEgYml0ZmllbGQ/IEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdC4gTGV0IG1lIGp1bXAgb3ZlciB0byB0aGUgZGVmaW5pdGlvbiBvZiBgc3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWRgLiBJIG5lZWQgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBmaWVsZCBpcyBhY2N1cmF0ZSBiZWZvcmUgSSBwcm9jZWVkLiBUaGlzIGNvdWxkIGJlIGNydWNpYWwgdG8gaG93IEkgaW50ZXJwcmV0IHRoZSBvcHRpb24gZGF0YS4gR290dGEgZ2V0IHRoZSBsb3ctZG93biBvbiB0aGUgYml0IGFzc2lnbm1lbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njc1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDk6MDYuNDgyMTAwMTYzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTA3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbXB0Y3AvcHJvdG9jb2wuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxNDUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNDU6XFx0c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQge1xcbiAxNDY6XFx0XFx0dTY0XFx0c25kcl9rZXk7XFxuIDE0NzpcXHRcXHR1NjRcXHRyY3ZyX2tleTtcXG4gMTQ4OlxcdFxcdHU2NFxcdGRhdGFfYWNrO1xcbiAxNDk6XFx0XFx0dTY0XFx0ZGF0YV9zZXE7XFxuIDE1MDpcXHRcXHR1MzJcXHRzdWJmbG93X3NlcTtcXG4gMTUxOlxcdFxcdHUxNlxcdGRhdGFfbGVuO1xcbiAxNTI6XFx0XFx0X19zdW0xNlxcdGNzdW07XFxuIDE1MzpcXHRcXHRzdHJ1Y3RfZ3JvdXAoc3RhdHVzLFxcbiAxNTQ6XFx0XFx0XFx0dTE2IHN1Ym9wdGlvbnM7XFxuIDE1NTpcXHRcXHRcXHR1MTYgdXNlX21hcDoxLFxcbiAxNTY6XFx0XFx0XFx0ICAgIGRzbjY0OjEsXFxuIDE1NzpcXHRcXHRcXHQgICAgZGF0YV9maW46MSxcXG4gMTU4OlxcdFxcdFxcdCAgICB1c2VfYWNrOjEsXFxuIDE1OTpcXHRcXHRcXHQgICAgYWNrNjQ6MSxcXG4gMTYwOlxcdFxcdFxcdCAgICBtcGNfbWFwOjEsXFxuIDE2MTpcXHRcXHRcXHQgICAgcmVzZXRfcmVhc29uOjQsXFxuIDE2MjpcXHRcXHRcXHQgICAgcmVzZXRfdHJhbnNpZW50OjEsXFxuIDE2MzpcXHRcXHRcXHQgICAgZWNobzoxLFxcbiAxNjQ6XFx0XFx0XFx0ICAgIGJhY2t1cDoxLFxcbiAxNjU6XFx0XFx0XFx0ICAgIGRlbnlfam9pbl9pZDA6MSxcXG4gMTY2OlxcdFxcdFxcdCAgICBfX3VudXNlZDoyO1xcbiAxNjc6XFx0XFx0KTtcXG4gMTY4OlxcdFxcdHU4XFx0am9pbl9pZDtcXG4gMTY5OlxcdFxcdHUzMlxcdHRva2VuO1xcbiAxNzA6XFx0XFx0dTMyXFx0bm9uY2U7XFxuIDE3MTpcXHRcXHR1NjRcXHR0aG1hYztcXG4gMTcyOlxcdFxcdHU4XFx0aG1hY1tNUFRDUE9QVF9ITUFDX0xFTl07XFxuIDE3MzpcXHRcXHRzdHJ1Y3QgbXB0Y3BfYWRkcl9pbmZvIGFkZHI7XFxuIDE3NDpcXHRcXHRzdHJ1Y3QgbXB0Y3Bfcm1fbGlzdCBybV9saXN0O1xcbiAxNzU6XFx0XFx0dTY0XFx0YWhtYWM7XFxuIDE3NjpcXHRcXHR1NjRcXHRmYWlsX3NlcTtcXG4gMTc3OlxcdH07XFxuIDE3ODpcXHRcXG4gMTc5OlxcdHN0YXRpYyBpbmxpbmUgX19iZTMyIG1wdGNwX29wdGlvbih1OCBzdWJvcHQsIHU4IGxlbiwgdTggbmliLCB1OCBmaWVsZClcXG4gMTgwOlxcdHtcXG4gMTgxOlxcdFxcdHJldHVybiBodG9ubCgoVENQT1BUX01QVENQIFxcdTAwM2NcXHUwMDNjIDI0KSB8IChsZW4gXFx1MDAzY1xcdTAwM2MgMTYpIHwgKHN1Ym9wdCBcXHUwMDNjXFx1MDAzYyAxMikgfFxcbiAxODI6XFx0XFx0XFx0ICAgICAoKG5pYiBcXHUwMDI2IDB4RikgXFx1MDAzY1xcdTAwM2MgOCkgfCBmaWVsZCk7XFxuIDE4MzpcXHR9XFxuIDE4NDpcXHRcXG4gMTg1OlxcdGVudW0gbXB0Y3BfcG1fc3RhdHVzIHtcXG4gMTg2OlxcdFxcdE1QVENQX1BNX0FERF9BRERSX1JFQ0VJVkVELFxcbiAxODc6XFx0XFx0TVBUQ1BfUE1fQUREX0FERFJfU0VORF9BQ0ssXFxuIDE4ODpcXHRcXHRNUFRDUF9QTV9STV9BRERSX1JFQ0VJVkVELFxcbiAxODk6XFx0XFx0TVBUQ1BfUE1fRVNUQUJMSVNIRUQsXFxuIDE5MDpcXHRcXHRNUFRDUF9QTV9TVUJGTE9XX0VTVEFCTElTSEVELFxcbiAxOTE6XFx0XFx0TVBUQ1BfUE1fQUxSRUFEWV9FU1RBQkxJU0hFRCxcXHQvKiBwZXJzaXN0ZW50IHN0YXR1cywgc2V0IGFmdGVyIEVTVEFCTElTSEVEIGV2ZW50ICovXFxuIDE5MjpcXHRcXHRNUFRDUF9QTV9NUENfRU5EUE9JTlRfQUNDT1VOVEVEIC8qIHBlcnNpc3RlbnQgc3RhdHVzLCBzZXQgYWZ0ZXIgTVBDIGxvY2FsIGFkZHJlc3MgaXNcXG4gMTkzOlxcdFxcdFxcdFxcdFxcdFxcdCAqIGFjY291bnRlZCBpbnQgaWRfYXZhaWxfYml0bWFwXFxuIDE5NDpcXHRcXHRcXHRcXHRcXHRcXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDk6MDYuNDgyMjI2NDQzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwNjc1MjM3OTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRGF0YSBGaW4gRmxhZyBpbiBNUFRDUCBEU1MgT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgYHN0YXR1c2Agc3RydWN0IGluIE1QVENQIGp1bXBzIG91dCBhdCBtZS4gSSBzZWUgdGhhdCBpdCBidW5kbGVzIHZhcmlvdXMgZmxhZ3MsIGluY2x1ZGluZyBgZGF0YV9maW5gLCBgZHNuNjRgLCBgdXNlX21hcGAsIGBhY2s2NGAsIGFuZCBgdXNlX2Fja2AuICBgbXB0Y3BfZ2V0X29wdGlvbnNgIGlzIGNydWNpYWwgaGVyZSwgYXMgaXQgaW5pdGlhbGx5IHplcm9lcyBvdXQgdGhlIGVudGlyZSBgc3RhdHVzYCBmaWVsZCwgbWVhbmluZyBgZGF0YV9maW5gIHN0YXJ0cyBhcyBhIGNsZWFuIHplcm8uXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyB3aXRoaW4gYG1wdGNwX3BhcnNlX29wdGlvbmAuIFByZXZpb3VzbHksIGBkYXRhX2ZpbmAgd2FzIHNldCBkaXJlY3RseSBmcm9tIHRoZSBgZmxhZ3NgIGJ5dGUsIHJlZ2FyZGxlc3Mgb2Ygb3RoZXIgb3B0aW9ucy4gTm93LCBob3dldmVyLCB0aGUgbG9naWMgaXMgc3VidGx5IGFsdGVyZWQuIGBkYXRhX2ZpbmAgaXMgY29uZGl0aW9uYWxseSBzZXQgKm9ubHkqIGlmIGB1c2VfbWFwYCBpcyB0cnVlLiAgVGhpcyBpcyBhIHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgc2hpZnQuICBJZiBhIERTUyBvcHRpb24gZG9lc24ndCBpbmNsdWRlIGEgbWFwLCB0aGUgYGRhdGFfZmluYCBmbGFnIHJlbWFpbnMgYXQgaXRzIGluaXRpYWxpemVkIHZhbHVlIG9mIHplcm8uIFRoYXQncyBhIGRlZmluaXRlIGNoYW5nZSBpbiBiZWhhdmlvciBhbmQgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuXG5cbk15IHRoaW5raW5nIGlzIHRoYXQgdGhpcyBjaGFuZ2UgY291bGQgaW50cm9kdWNlIHN1YnRsZSBlZGdlIGNhc2VzLCBzbyBpdCdzIHdvcnRoIHBva2luZyBhcm91bmQuIEknbSBmb2N1c2luZyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZDogYG1wdGNwX2luY29taW5nX29wdGlvbnNgLCBgbXB0Y3BfZ2V0X29wdGlvbnNgLCBhbmQgYG1wdGNwX3BhcnNlX29wdGlvbmAsIGV2ZW4gdGhvdWdoIHRoZSBsYXR0ZXIgaXMgc3RhdGljLCBhcyBJIGNhbiBzdGlsbCBpbmNsdWRlIGl0IGFzIHBhcnQgb2YgbXkgZm9jdXMgc2V0LiAgSSBhbSBhbHNvIGtlZXBpbmcgaW4gbWluZCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgdGhhdCB3b3VsZCBiZSBhZmZlY3RlZCBieSBhIGNoYW5nZSBpbiBgZGF0YV9maW5gLCBzdWNoIGFzIGBtcHRjcF9zdWJmbG93X2RhdGFfYXZhaWxhYmxlYC4gIEl0J3MgY3J1Y2lhbCB0byB0cmFjZSBob3cgdGhlIGBkYXRhX2ZpbmAgZmxhZyBpcyBzdWJzZXF1ZW50bHkgdXNlZCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgY29uZGl0aW9uYWwgaW5pdGlhbGl6YXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NjAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0OToyNy4xNTc0NjYyN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAzOTEwMjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhdGFfZmluXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tcHRjcC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21wdGNwL29wdGlvbnMuYz0yMz1zdGF0aWMgdm9pZCBtcHRjcF9wYXJzZV9vcHRpb24oY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTc0LVxcdFxcdGlmIChtcF9vcHQtXFx1MDAzZXVzZV9tYXApIHtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjE3NTpcXHRcXHRcXHRtcF9vcHQtXFx1MDAzZWRhdGFfZmluID0gKGZsYWdzIFxcdTAwMjYgTVBUQ1BfRFNTX0RBVEFfRklOKSAhPSAwO1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTc2LVxcdFxcdFxcdGlmIChtcF9vcHQtXFx1MDAzZWRzbjY0KVxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy0xODEtXFxubmV0L21wdGNwL29wdGlvbnMuYzoxODI6XFx0XFx0cHJfZGVidWcoXFxcImRhdGFfZmluPSVkIGRzbjY0PSVkIHVzZV9tYXA9JWQgYWNrNjQ9JWQgdXNlX2Fjaz0lZFxcXFxuXFxcIixcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjE4MzpcXHRcXHRcXHQgbXBfb3B0LVxcdTAwM2VkYXRhX2ZpbiwgbXBfb3B0LVxcdTAwM2Vkc242NCxcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTE4NC1cXHRcXHRcXHQgbXBfb3B0LVxcdTAwM2V1c2VfbWFwLCBtcF9vcHQtXFx1MDAzZWFjazY0LFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz00NDk9c3RhdGljIGJvb2wgbXB0Y3BfZXN0YWJsaXNoZWRfb3B0aW9uc19tcChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L21wdGNwL29wdGlvbnMuYzo0NTA6XFx0XFx0XFx0XFx0XFx0IGJvb2wgc25kX2RhdGFfZmluX2VuYWJsZSwgaW50ICpzaXplLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtNDUxLVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3QgbXB0Y3Bfb3V0X29wdGlvbnMgKm9wdHMpXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTQ2OC1cXHQvKiBNUEMvTVBKIG5lZWRlZCBvbmx5IG9uIDNyZCBhY2sgcGFja2V0LCBEQVRBX0ZJTiBhbmQgVENQIHNodXRkb3duIHRha2UgcHJlY2VkZW5jZSAqL1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6NDY5OlxcdGlmIChSRUFEX09OQ0Uoc3ViZmxvdy1cXHUwMDNlZnVsbHlfZXN0YWJsaXNoZWQpIHx8IHNuZF9kYXRhX2Zpbl9lbmFibGUgfHxcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTQ3MC1cXHQgICAgc3ViZmxvdy1cXHUwMDNlc25kX2lzbiAhPSBUQ1BfU0tCX0NCKHNrYiktXFx1MDAzZXNlcSB8fFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy01MzItXFxubmV0L21wdGNwL29wdGlvbnMuYzo1MzM6c3RhdGljIHZvaWQgbXB0Y3Bfd3JpdGVfZGF0YV9maW4oc3RydWN0IG1wdGNwX3N1YmZsb3dfY29udGV4dCAqc3ViZmxvdyxcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTUzNC1cXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG1wdGNwX2V4dCAqZXh0KVxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy01MzgtXFx0ICovXFxubmV0L21wdGNwL29wdGlvbnMuYzo1Mzk6XFx0dTY0IGRhdGFfZmluX3R4X3NlcSA9IFJFQURfT05DRShtcHRjcF9zayhzdWJmbG93LVxcdTAwM2Vjb25uKS1cXHUwMDNld3JpdGVfc2VxKSAtIDE7XFxubmV0L21wdGNwL29wdGlvbnMuYy01NDAtXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU0NC1cXHRcXHQgKi9cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU0NTpcXHRcXHRleHQtXFx1MDAzZWRhdGFfZmluID0gMTtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU0Ni1cXHRcXHRleHQtXFx1MDAzZXVzZV9tYXAgPSAxO1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTQ3LVxcdFxcdGV4dC1cXHUwMDNlZHNuNjQgPSAxO1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6NTQ4OlxcdFxcdGV4dC1cXHUwMDNlZGF0YV9zZXEgPSBkYXRhX2Zpbl90eF9zZXE7XFxubmV0L21wdGNwL29wdGlvbnMuYy01NDktXFx0XFx0ZXh0LVxcdTAwM2VzdWJmbG93X3NlcSA9IDA7XFxubmV0L21wdGNwL29wdGlvbnMuYy01NTAtXFx0XFx0ZXh0LVxcdTAwM2VkYXRhX2xlbiA9IDE7XFxubmV0L21wdGNwL29wdGlvbnMuYzo1NTE6XFx0fSBlbHNlIGlmIChleHQtXFx1MDAzZWRhdGFfc2VxICsgZXh0LVxcdTAwM2VkYXRhX2xlbiA9PSBkYXRhX2Zpbl90eF9zZXEpIHtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTU1Mi1cXHRcXHQvKiBJZiB0aGVyZSdzIGFuIGV4aXN0aW5nIERTUyBtYXBwaW5nIGFuZCBpdCBpcyB0aGVcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTU1LVxcdFxcdCAqL1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6NTU2OlxcdFxcdGV4dC1cXHUwMDNlZGF0YV9maW4gPSAxO1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTU3LVxcdFxcdGV4dC1cXHUwMDNlZGF0YV9sZW4rKztcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmM9NTYxPXN0YXRpYyBib29sIG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnNfZHNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU2MjpcXHRcXHRcXHRcXHRcXHQgIGJvb2wgc25kX2RhdGFfZmluX2VuYWJsZSwgaW50ICpzaXplLFxcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTYzLVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1wdGNwX291dF9vcHRpb25zICpvcHRzKVxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy01ODAtXFxubmV0L21wdGNwL29wdGlvbnMuYzo1ODE6XFx0aWYgKCFza2IgfHwgKG1wZXh0IFxcdTAwMjZcXHUwMDI2IG1wZXh0LVxcdTAwM2V1c2VfbWFwKSB8fCBzbmRfZGF0YV9maW5fZW5hYmxlKSB7XFxubmV0L21wdGNwL29wdGlvbnMuYy01ODItXFx0XFx0dW5zaWduZWQgaW50IG1hcF9zaXplID0gVENQT0xFTl9NUFRDUF9EU1NfQkFTRSArIFRDUE9MRU5fTVBUQ1BfRFNTX01BUDY0O1xcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy01OTEtXFx0XFx0ZHNzX3NpemUgPSBtYXBfc2l6ZTtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjU5MjpcXHRcXHRpZiAoc2tiIFxcdTAwMjZcXHUwMDI2IHNuZF9kYXRhX2Zpbl9lbmFibGUpXFxubmV0L21wdGNwL29wdGlvbnMuYzo1OTM6XFx0XFx0XFx0bXB0Y3Bfd3JpdGVfZGF0YV9maW4oc3ViZmxvdywgc2tiLCBcXHUwMDI2b3B0cy1cXHUwMDNlZXh0X2NvcHkpO1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtNTk0LVxcdFxcdG9wdHMtXFx1MDAzZXN1Ym9wdGlvbnMgPSBPUFRJT05fTVBUQ1BfRFNTO1xcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYz04MTA9aW50IG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnMoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy04MTYtXFx0aW50IHRvdGFsX3NpemUgPSAwO1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6ODE3OlxcdGJvb2wgc25kX2RhdGFfZmluO1xcbm5ldC9tcHRjcC9vcHRpb25zLmMtODE4LVxcdGJvb2wgcmV0ID0gZmFsc2U7XFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTg0Mi1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjg0MzpcXHRzbmRfZGF0YV9maW4gPSBtcHRjcF9kYXRhX2Zpbl9lbmFibGVkKG1zayk7XFxubmV0L21wdGNwL29wdGlvbnMuYzo4NDQ6XFx0aWYgKG1wdGNwX2VzdGFibGlzaGVkX29wdGlvbnNfbXAoc2ssIHNrYiwgc25kX2RhdGFfZmluLCBcXHUwMDI2b3B0X3NpemUsIG9wdHMpKVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtODQ1LVxcdFxcdHJldCA9IHRydWU7XFxubmV0L21wdGNwL29wdGlvbnMuYzo4NDY6XFx0ZWxzZSBpZiAobXB0Y3BfZXN0YWJsaXNoZWRfb3B0aW9uc19kc3Moc2ssIHNrYiwgc25kX2RhdGFfZmluLCBcXHUwMDI2b3B0X3NpemUsIG9wdHMpKSB7XFxubmV0L21wdGNwL29wdGlvbnMuYy04NDctXFx0XFx0aW50IG1wX2ZhaWxfc2l6ZTtcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmM9MTA1Nj1zdGF0aWMgdm9pZCBhY2tfdXBkYXRlX21zayhzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy0xMDk3LVxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTA5ODpib29sIG1wdGNwX3VwZGF0ZV9yY3ZfZGF0YV9maW4oc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgdTY0IGRhdGFfZmluX3NlcSwgYm9vbCB1c2VfNjRiaXQpXFxubmV0L21wdGNwL29wdGlvbnMuYy0xMDk5LXtcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTEwNC1cXHQgKi9cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjExMDU6XFx0aWYgKFJFQURfT05DRShtc2stXFx1MDAzZXJjdl9kYXRhX2ZpbikpXFxubmV0L21wdGNwL29wdGlvbnMuYy0xMTA2LVxcdFxcdHJldHVybiBmYWxzZTtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExMDctXFxubmV0L21wdGNwL29wdGlvbnMuYzoxMTA4OlxcdFdSSVRFX09OQ0UobXNrLVxcdTAwM2VyY3ZfZGF0YV9maW5fc2VxLFxcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTEwOTpcXHRcXHQgICBtcHRjcF9leHBhbmRfc2VxKFJFQURfT05DRShtc2stXFx1MDAzZWFja19zZXEpLCBkYXRhX2Zpbl9zZXEsIHVzZV82NGJpdCkpO1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTExMDpcXHRXUklURV9PTkNFKG1zay1cXHUwMDNlcmN2X2RhdGFfZmluLCAxKTtcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTExMTEtXFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jPTExMzY9Ym9vbCBtcHRjcF9pbmNvbWluZ19vcHRpb25zKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTIyOS1cXHRpZiAoVENQX1NLQl9DQihza2IpLVxcdTAwM2VzZXEgPT0gVENQX1NLQl9DQihza2IpLVxcdTAwM2VlbmRfc2VxKSB7XFxubmV0L21wdGNwL29wdGlvbnMuYzoxMjMwOlxcdFxcdGlmIChtcF9vcHQuZGF0YV9maW4gXFx1MDAyNlxcdTAwMjYgbXBfb3B0LmRhdGFfbGVuID09IDEgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbXB0Y3Avb3B0aW9ucy5jOjEyMzE6XFx0XFx0ICAgIG1wdGNwX3VwZGF0ZV9yY3ZfZGF0YV9maW4obXNrLCBtcF9vcHQuZGF0YV9zZXEsIG1wX29wdC5kc242NCkpXFxubmV0L21wdGNwL29wdGlvbnMuYy0xMjMyLVxcdFxcdFxcdG1wdGNwX3NjaGVkdWxlX3dvcmsoKHN0cnVjdCBzb2NrICopbXNrKTtcXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTI1My1cXHRcXHRcXHRtcGV4dC1cXHUwMDNlbXBjX21hcCA9IDE7XFxubmV0L21wdGNwL29wdGlvbnMuYzoxMjU0OlxcdFxcdFxcdG1wZXh0LVxcdTAwM2VkYXRhX2ZpbiA9IDA7XFxubmV0L21wdGNwL29wdGlvbnMuYy0xMjU1LVxcdFxcdH0gZWxzZSB7XFxuLS1cXG5uZXQvbXB0Y3Avb3B0aW9ucy5jLTEyNTgtXFx0XFx0XFx0bXBleHQtXFx1MDAzZWRzbjY0ID0gbXBfb3B0LmRzbjY0O1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTI1OTpcXHRcXHRcXHRtcGV4dC1cXHUwMDNlZGF0YV9maW4gPSBtcF9vcHQuZGF0YV9maW47XFxubmV0L21wdGNwL29wdGlvbnMuYy0xMjYwLVxcdFxcdH1cXG4tLVxcbm5ldC9tcHRjcC9vcHRpb25zLmM9MTM4ND12b2lkIG1wdGNwX3dyaXRlX29wdGlvbnMoc3RydWN0IHRjcGhkciAqdGgsIF9fYmUzMiAqcHRyLCBzdHJ1Y3QgdGNwX3NvY2sgKnRwLFxcbi0tXFxubmV0L21wdGNwL29wdGlvbnMuYy0xNDMzLVxcdFxcdFxcdGZsYWdzIHw9IE1QVENQX0RTU19IQVNfTUFQIHwgTVBUQ1BfRFNTX0RTTjY0O1xcbm5ldC9tcHRjcC9vcHRpb25zLmM6MTQzNDpcXHRcXHRcXHRpZiAobXBleHQtXFx1MDAzZWRhdGFfZmluKVxcbm5ldC9tcHRjcC9vcHRpb25zLmMtMTQzNS1cXHRcXHRcXHRcXHRmbGFncyB8PSBNUFRDUF9EU1NfREFUQV9GSU47XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz01MD1zdGF0aWMgdm9pZCBfX21wdGNwX2Rlc3Ryb3lfc29jayhzdHJ1Y3Qgc29jayAqc2spO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjUxOnN0YXRpYyB2b2lkIG1wdGNwX2NoZWNrX3NlbmRfZGF0YV9maW4oc3RydWN0IHNvY2sgKnNrKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy01Mi1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTQ0MT1zdGF0aWMgdm9pZCBtcHRjcF9zaHV0ZG93bl9zdWJmbG93cyhzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDU1LS8qIGNhbGxlZCB1bmRlciB0aGUgbXNrIHNvY2tldCBsb2NrICovXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NDU2OnN0YXRpYyBib29sIG1wdGNwX3BlbmRpbmdfZGF0YV9maW5fYWNrKHN0cnVjdCBzb2NrICpzaylcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NTcte1xcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDY0LVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ2NTpzdGF0aWMgdm9pZCBtcHRjcF9jaGVja19kYXRhX2Zpbl9hY2soc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ2Ni17XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00NjktXFx0LyogTG9vayBmb3IgYW4gYWNrbm93bGVkZ2VkIERBVEFfRklOICovXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NDcwOlxcdGlmIChtcHRjcF9wZW5kaW5nX2RhdGFfZmluX2FjayhzaykpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0NzE6XFx0XFx0V1JJVEVfT05DRShtc2stXFx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsIDApO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ3Mi1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ4OC0vKiBjYW4gYmUgY2FsbGVkIHdpdGggbm8gbG9jayBhY3F1aXJlZCAqL1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ4OTpzdGF0aWMgYm9vbCBtcHRjcF9wZW5kaW5nX2RhdGFfZmluKHN0cnVjdCBzb2NrICpzaywgdTY0ICpzZXEpXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDkwLXtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ5Mi1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0OTM6XFx0aWYgKFJFQURfT05DRShtc2stXFx1MDAzZXJjdl9kYXRhX2ZpbikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00OTQtXFx0ICAgICgoMSBcXHUwMDNjXFx1MDAzYyBpbmV0X3NrX3N0YXRlX2xvYWQoc2spKSBcXHUwMDI2XFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDk1LVxcdCAgICAgKFRDUEZfRVNUQUJMSVNIRUQgfCBUQ1BGX0ZJTl9XQUlUMSB8IFRDUEZfRklOX1dBSVQyKSkpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0OTY6XFx0XFx0dTY0IHJjdl9kYXRhX2Zpbl9zZXEgPSBSRUFEX09OQ0UobXNrLVxcdTAwM2VyY3ZfZGF0YV9maW5fc2VxKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00OTctXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NDk4OlxcdFxcdGlmIChSRUFEX09OQ0UobXNrLVxcdTAwM2VhY2tfc2VxKSA9PSByY3ZfZGF0YV9maW5fc2VxKSB7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDk5LVxcdFxcdFxcdGlmIChzZXEpXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NTAwOlxcdFxcdFxcdFxcdCpzZXEgPSByY3ZfZGF0YV9maW5fc2VxO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTUwMS1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTU5NT1zdGF0aWMgdm9pZCBtcHRjcF9jbGVhbnVwX3JidWYoc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgaW50IGNvcGllZClcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYxMy1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo2MTQ6c3RhdGljIHZvaWQgbXB0Y3BfY2hlY2tfZGF0YV9maW4oc3RydWN0IHNvY2sgKnNrKVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYxNS17XFxubmV0L21wdGNwL3Byb3RvY29sLmMtNjE2LVxcdHN0cnVjdCBtcHRjcF9zb2NrICptc2sgPSBtcHRjcF9zayhzayk7XFxubmV0L21wdGNwL3Byb3RvY29sLmM6NjE3OlxcdHU2NCByY3ZfZGF0YV9maW5fc2VxO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYxOC1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTYyMC1cXHQgKiBvZiB0aGUgY29ubmVjdGlvbiBpcyBpbiBFU1RBQkxJU0hFRCwgRklOX1dBSVQxLCBvciBGSU5fV0FJVDIuXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NjIxOlxcdCAqIG1zay1cXHUwMDNlcmN2X2RhdGFfZmluIHdhcyBzZXQgd2hlbiBwYXJzaW5nIHRoZSBpbmNvbWluZyBvcHRpb25zXFxubmV0L21wdGNwL3Byb3RvY29sLmMtNjIyLVxcdCAqIGF0IHRoZSBzdWJmbG93IGxldmVsIGFuZCB0aGUgbXNrIGxvY2sgd2FzIG5vdCBoZWxkLCBzbyB0aGlzXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MzEtXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NjMyOlxcdGlmIChtcHRjcF9wZW5kaW5nX2RhdGFfZmluKHNrLCBcXHUwMDI2cmN2X2RhdGFfZmluX3NlcSkpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MzMtXFx0XFx0V1JJVEVfT05DRShtc2stXFx1MDAzZWFja19zZXEsIG1zay1cXHUwMDNlYWNrX3NlcSArIDEpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjYzNDpcXHRcXHRXUklURV9PTkNFKG1zay1cXHUwMDNlcmN2X2RhdGFfZmluLCAwKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy02MzUtXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz04NzY9c3RhdGljIGJvb2wgbW92ZV9za2JzX3RvX21zayhzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLCBzdHJ1Y3Qgc29jayAqc3NrKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtODkwLVxcdCAqL1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjg5MTpcXHRpZiAobXB0Y3BfcGVuZGluZ19kYXRhX2ZpbihzaywgTlVMTCkpXFxubmV0L21wdGNwL3Byb3RvY29sLmMtODkyLVxcdFxcdG1wdGNwX3NjaGVkdWxlX3dvcmsoc2spO1xcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9MTA3Mj1zdGF0aWMgdm9pZCBfX21wdGNwX2NsZWFuX3VuYShzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTIwLVxcdGlmIChzbmRfdW5hID09IG1zay1cXHUwMDNlc25kX254dCBcXHUwMDI2XFx1MDAyNiBzbmRfdW5hID09IG1zay1cXHUwMDNld3JpdGVfc2VxKSB7XFxubmV0L21wdGNwL3Byb3RvY29sLmM6MTEyMTpcXHRcXHRpZiAobXB0Y3BfcnR4X3RpbWVyX3BlbmRpbmcoc2spIFxcdTAwMjZcXHUwMDI2ICFtcHRjcF9kYXRhX2Zpbl9lbmFibGVkKG1zaykpXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMTEyMi1cXHRcXHRcXHRtcHRjcF9zdG9wX3J0eF90aW1lcihzayk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTI2LVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjExMjc6XFx0aWYgKG1wdGNwX3BlbmRpbmdfZGF0YV9maW5fYWNrKHNrKSlcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xMTI4LVxcdFxcdG1wdGNwX3NjaGVkdWxlX3dvcmsoc2spO1xcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9MTY2Nz12b2lkIF9fbXB0Y3BfcHVzaF9wZW5kaW5nKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMTczMC1cXHRcXHRcXHRtcHRjcF9yZXNldF9ydHhfdGltZXIoc2spO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjE3MzE6XFx0XFx0bXB0Y3BfY2hlY2tfc2VuZF9kYXRhX2Zpbihzayk7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtMTczMi1cXHR9XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0xNzM1PXN0YXRpYyB2b2lkIF9fbXB0Y3Bfc3ViZmxvd19wdXNoX3BlbmRpbmcoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqc3NrLCBib29sIGZpcnN0KVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMTc5NS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoxNzk2OlxcdFxcdGlmIChtc2stXFx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0xNzk3LVxcdFxcdCAgICBtc2stXFx1MDAzZXNuZF9ueHQgKyAxID09IG1zay1cXHUwMDNld3JpdGVfc2VxKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9MjIwNj1zdGF0aWMgYm9vbCBfX21wdGNwX21vdmVfc2ticyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBsaXN0X2hlYWQgKnNrYnMsIHUzMiAqZGVsdGEpXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yMjMwLVxcdGlmIChtb3ZlZClcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyMjMxOlxcdFxcdG1wdGNwX2NoZWNrX2RhdGFfZmluKChzdHJ1Y3Qgc29jayAqKW1zayk7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtMjIzMi1cXHRyZXR1cm4gbW92ZWQ7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz0yNzgzPXN0YXRpYyB2b2lkIF9fbXB0Y3BfcmV0cmFucyhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yNzk4LVxcdGlmICghZGZyYWcpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzoyNzk5OlxcdFxcdGlmIChtcHRjcF9kYXRhX2Zpbl9lbmFibGVkKG1zaykpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0yODAwLVxcdFxcdFxcdHN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTI5ODQ9c3RhdGljIHZvaWQgbXB0Y3Bfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTI5OTktXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzAwMDpcXHRtcHRjcF9jaGVja19zZW5kX2RhdGFfZmluKHNrKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMDAxOlxcdG1wdGNwX2NoZWNrX2RhdGFfZmluX2Fjayhzayk7XFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzAwMjpcXHRtcHRjcF9jaGVja19kYXRhX2Zpbihzayk7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzAwMy1cXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTMxMzQ9dm9pZCBtcHRjcF9zdWJmbG93X3NodXRkb3duKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKnNzaywgaW50IGhvdylcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMxNTEtXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzE1MjpcXHRcXHRcXHQvKiBzaW11bGF0ZSB0aGUgZGF0YV9maW4gYWNrIHJlY2VwdGlvbiB0byBsZXQgdGhlIHN0YXRlXFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzE1My1cXHRcXHRcXHQgKiBtYWNoaW5lIG1vdmUgZm9yd2FyZFxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9MzIwOT1zdGF0aWMgaW50IG1wdGNwX2Nsb3NlX3N0YXRlKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMTgtXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzIxOTpzdGF0aWMgdm9pZCBtcHRjcF9jaGVja19zZW5kX2RhdGFfZmluKHN0cnVjdCBzb2NrICpzaylcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjIwLXtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMjMtXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzIyNDpcXHRwcl9kZWJ1ZyhcXFwibXNrPSVwIHNuZF9kYXRhX2Zpbl9lbmFibGU9JWQgcGVuZGluZz0lZCBzbmRfbnh0PSVsbHUgd3JpdGVfc2VxPSVsbHVcXFxcblxcXCIsXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzIyNTpcXHRcXHQgbXNrLCBtc2stXFx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsICEhbXB0Y3Bfc2VuZF9oZWFkKHNrKSxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjI2LVxcdFxcdCBtc2stXFx1MDAzZXNuZF9ueHQsIG1zay1cXHUwMDNld3JpdGVfc2VxKTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyMzAtXFx0ICovXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzIzMTpcXHRpZiAoIW1zay1cXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSB8fCBtc2stXFx1MDAzZXNuZF9ueHQgKyAxICE9IG1zay1cXHUwMDNld3JpdGVfc2VxIHx8XFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzIzMi1cXHQgICAgbXB0Y3Bfc2VuZF9oZWFkKHNrKSlcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTMyNDQ9c3RhdGljIHZvaWQgX19tcHRjcF93cl9zaHV0ZG93bihzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjQ3LVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjMyNDg6XFx0cHJfZGVidWcoXFxcIm1zaz0lcCBzbmRfZGF0YV9maW5fZW5hYmxlPSVkIHNodXRkb3duPSV4IHN0YXRlPSVkIHBlbmRpbmc9JWRcXFxcblxcXCIsXFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzI0OTpcXHRcXHQgbXNrLCBtc2stXFx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsIHNrLVxcdTAwM2Vza19zaHV0ZG93biwgc2stXFx1MDAzZXNrX3N0YXRlLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyNTAtXFx0XFx0ICEhbXB0Y3Bfc2VuZF9oZWFkKHNrKSk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zMjUzLVxcdFdSSVRFX09OQ0UobXNrLVxcdTAwM2V3cml0ZV9zZXEsIG1zay1cXHUwMDNld3JpdGVfc2VxICsgMSk7XFxubmV0L21wdGNwL3Byb3RvY29sLmM6MzI1NDpcXHRXUklURV9PTkNFKG1zay1cXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSwgMSk7XFxubmV0L21wdGNwL3Byb3RvY29sLmMtMzI1NS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzozMjU2OlxcdG1wdGNwX2NoZWNrX3NlbmRfZGF0YV9maW4oc2spO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTMyNTctfVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmM9MzQ0Mj1zdGF0aWMgaW50IG1wdGNwX2Rpc2Nvbm5lY3Qoc3RydWN0IHNvY2sgKnNrLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zNDc5LVxcdFdSSVRFX09OQ0UobXNrLVxcdTAwM2VmdWxseV9lc3RhYmxpc2hlZCwgZmFsc2UpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjM0ODA6XFx0V1JJVEVfT05DRShtc2stXFx1MDAzZXJjdl9kYXRhX2ZpbiwgZmFsc2UpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjM0ODE6XFx0V1JJVEVfT05DRShtc2stXFx1MDAzZXNuZF9kYXRhX2Zpbl9lbmFibGUsIGZhbHNlKTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy0zNDgyLVxcdFdSSVRFX09OQ0UobXNrLVxcdTAwM2VyY3ZfZmFzdGNsb3NlLCBmYWxzZSk7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD0xNDU9c3RydWN0IG1wdGNwX29wdGlvbnNfcmVjZWl2ZWQge1xcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmgtMTU2LVxcdFxcdCAgICBkc242NDoxLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjE1NzpcXHRcXHQgICAgZGF0YV9maW46MSxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xNTgtXFx0XFx0ICAgIHVzZV9hY2s6MSxcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oPTI4MD1zdHJ1Y3QgbXB0Y3Bfc29jayB7XFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0yOTItXFx0YXRvbWljNjRfdFxcdHJjdl93bmRfc2VudDtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaDoyOTM6XFx0dTY0XFx0XFx0cmN2X2RhdGFfZmluX3NlcTtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0yOTQtXFx0dTY0XFx0XFx0Ynl0ZXNfcmV0cmFucztcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTMxNC1cXHRib29sXFx0XFx0ZnVsbHlfZXN0YWJsaXNoZWQ7XFxubmV0L21wdGNwL3Byb3RvY29sLmg6MzE1OlxcdGJvb2xcXHRcXHRyY3ZfZGF0YV9maW47XFxubmV0L21wdGNwL3Byb3RvY29sLmg6MzE2OlxcdGJvb2xcXHRcXHRzbmRfZGF0YV9maW5fZW5hYmxlO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTMxNy1cXHRib29sXFx0XFx0cmN2X2Zhc3RjbG9zZTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oPTU0Mj1zdHJ1Y3QgbXB0Y3Bfc3ViZmxvd19jb250ZXh0IHtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTU3MC1cXHRcXHRtYXBfY3N1bV9yZXFkIDogMSxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaDo1NzE6XFx0XFx0bWFwX2RhdGFfZmluIDogMSxcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC01NzItXFx0XFx0bXBjX21hcCA6IDEsXFxuLS1cXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaD05Nzk9dm9pZCBfX21wdGNwX2Vycm9yX3JlcG9ydChzdHJ1Y3Qgc29jayAqc2spO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjk4MDpib29sIG1wdGNwX3VwZGF0ZV9yY3ZfZGF0YV9maW4oc3RydWN0IG1wdGNwX3NvY2sgKm1zaywgdTY0IGRhdGFfZmluX3NlcSwgYm9vbCB1c2VfNjRiaXQpO1xcbm5ldC9tcHRjcC9wcm90b2NvbC5oOjk4MTpzdGF0aWMgaW5saW5lIGJvb2wgbXB0Y3BfZGF0YV9maW5fZW5hYmxlZChjb25zdCBzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrKVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTk4Mi17XFxubmV0L21wdGNwL3Byb3RvY29sLmg6OTgzOlxcdHJldHVybiBSRUFEX09OQ0UobXNrLVxcdTAwM2VzbmRfZGF0YV9maW5fZW5hYmxlKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tcHRjcC9wcm90b2NvbC5oLTk4NC1cXHQgICAgICAgUkVBRF9PTkNFKG1zay1cXHUwMDNld3JpdGVfc2VxKSA9PSBSRUFEX09OQ0UobXNrLVxcdTAwM2VzbmRfbnh0KTtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5oPTEzMDQ9c3RhdGljIGlubGluZSBib29sIG1wdGNwX3RyeV9mYWxsYmFjayhzdHJ1Y3Qgc29jayAqc3NrLCBpbnQgZmJfbWliKVxcbi0tXFxubmV0L21wdGNwL3Byb3RvY29sLmgtMTMxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxubmV0L21wdGNwL3Byb3RvY29sLmg6MTMxMzpcXHRpZiAoUkVBRF9PTkNFKG1zay1cXHUwMDNlc25kX2RhdGFfZmluX2VuYWJsZSkgXFx1MDAyNlxcdTAwMjYgIShzc2stXFx1MDAzZXNrX3NodXRkb3duIFxcdTAwMjYgU0VORF9TSFVURE9XTikpIHtcXG5uZXQvbXB0Y3AvcHJvdG9jb2wuaC0xMzE0LVxcdFxcdGdmcF90IHNhdmVkX2FsbG9jYXRpb24gPSBzc2stXFx1MDAzZXNrX2FsbG9jYXRpb247XFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTEwMzA9c3RhdGljIGVudW0gbWFwcGluZ19zdGF0dXMgdmFsaWRhdGVfZGF0YV9jc3VtKHN0cnVjdCBzb2NrICpzc2ssIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEwOTctXFx0XFx0XFx0XFx0IHN1YmZsb3ctXFx1MDAzZW1hcF9zdWJmbG93X3NlcSxcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjEwOTg6XFx0XFx0XFx0XFx0IHN1YmZsb3ctXFx1MDAzZW1hcF9kYXRhX2xlbiArIHN1YmZsb3ctXFx1MDAzZW1hcF9kYXRhX2ZpbixcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEwOTktXFx0XFx0XFx0XFx0IHN1YmZsb3ctXFx1MDAzZW1hcF9kYXRhX2NzdW0pO1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYz0xMTA5PXN0YXRpYyBlbnVtIG1hcHBpbmdfc3RhdHVzIGdldF9tYXBwaW5nX3N0YXR1cyhzdHJ1Y3Qgc29jayAqc3NrLFxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTU3LVxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE1ODpcXHRpZiAobXBleHQtXFx1MDAzZWRhdGFfZmluID09IDEpIHtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjExNTk6XFx0XFx0dTY0IGRhdGFfZmluX3NlcTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExNjAtXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTYxLVxcdFxcdGlmIChkYXRhX2xlbiA9PSAxKSB7XFxubmV0L21wdGNwL3N1YmZsb3cuYzoxMTYyOlxcdFxcdFxcdGJvb2wgdXBkYXRlZCA9IG1wdGNwX3VwZGF0ZV9yY3ZfZGF0YV9maW4obXNrLCBtcGV4dC1cXHUwMDNlZGF0YV9zZXEsXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTYzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBtcGV4dC1cXHUwMDNlZHNuNjQpO1xcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTgwLVxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE4MTpcXHRcXHRkYXRhX2Zpbl9zZXEgPSBtcGV4dC1cXHUwMDNlZGF0YV9zZXEgKyBkYXRhX2xlbiAtIDE7XFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTgyLVxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE4MzpcXHRcXHQvKiBJZiBtcGV4dC1cXHUwMDNlZGF0YV9zZXEgaXMgYSAzMi1iaXQgdmFsdWUsIGRhdGFfZmluX3NlcSBtdXN0IGFsc29cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExODQtXFx0XFx0ICogYmUgbGltaXRlZCB0byAzMiBiaXRzLlxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMTg2LVxcdFxcdGlmICghbXBleHQtXFx1MDAzZWRzbjY0KVxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTE4NzpcXHRcXHRcXHRkYXRhX2Zpbl9zZXEgXFx1MDAyNj0gR0VOTUFTS19VTEwoMzEsIDApO1xcbm5ldC9tcHRjcC9zdWJmbG93LmMtMTE4OC1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjExODk6XFx0XFx0bXB0Y3BfdXBkYXRlX3Jjdl9kYXRhX2Zpbihtc2ssIGRhdGFfZmluX3NlcSwgbXBleHQtXFx1MDAzZWRzbjY0KTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExOTAtXFx0XFx0cHJfZGVidWcoXFxcIkRBVEFfRklOIHdpdGggbWFwcGluZyBzZXE9JWxsdSBkc242ND0lZFxcXFxuXFxcIixcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjExOTE6XFx0XFx0XFx0IGRhdGFfZmluX3NlcSwgbXBleHQtXFx1MDAzZWRzbjY0KTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTExOTItXFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jLTEyMjUtXFx0c3ViZmxvdy1cXHUwMDNlbWFwX3ZhbGlkID0gMTtcXG5uZXQvbXB0Y3Avc3ViZmxvdy5jOjEyMjY6XFx0c3ViZmxvdy1cXHUwMDNlbWFwX2RhdGFfZmluID0gbXBleHQtXFx1MDAzZWRhdGFfZmluO1xcbm5ldC9tcHRjcC9zdWJmbG93LmMtMTIyNy1cXHRzdWJmbG93LVxcdTAwM2VtcGNfbWFwID0gbXBleHQtXFx1MDAzZW1wY19tYXA7XFxuLS1cXG5uZXQvbXB0Y3Avc3ViZmxvdy5jPTEyODk9c3RhdGljIHZvaWQgc3ViZmxvd19zY2hlZF93b3JrX2lmX2Nsb3NlZChzdHJ1Y3QgbXB0Y3Bfc29jayAqbXNrLCBzdHJ1Y3Qgc29jayAqc3NrKVxcbi0tXFxubmV0L21wdGNwL3N1YmZsb3cuYy0xMzA5LVxcdCAgICBtc2stXFx1MDAzZWZpcnN0ID09IHNzayBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tcHRjcC9zdWJmbG93LmM6MTMxMDpcXHQgICAgbXB0Y3BfdXBkYXRlX3Jjdl9kYXRhX2Zpbihtc2ssIHN1YmZsb3ctXFx1MDAzZW1hcF9zZXEgK1xcbm5ldC9tcHRjcC9zdWJmbG93LmMtMTMxMS1cXHRcXHRcXHRcXHQgICAgICBzdWJmbG93LVxcdTAwM2VtYXBfZGF0YV9sZW4sIHRydWUpKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0OToyNy41NjEzODExOTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxMzU3NDYyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1QVENQIERhdGEgRklOIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGRhdGFfZmluYCBpc3N1ZSwgYW5kIGl0IGxvb2tzIGxpa2UgYG1wdGNwX3VwZGF0ZV9yY3ZfZGF0YV9maW5gIGNvbWVzIGludG8gcGxheSB3aGVuIHRoZSBgZGF0YV9maW5gIGZsYWcgaXMgc2V0LiBUaGF0IG1ha2VzIHNlbnNlLiBCdXQgdGhlIGNvbnRleHQgaXMgYSBiaXQgYnJvYWRlciDigJMgdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgYG1wdGNwX3BhcnNlX29wdGlvbmAsIHdoaWNoIGlzIHRoZSB3b3JraG9yc2UgZm9yIHBhcnNpbmcgVENQIG9wdGlvbnMuXG5cbkFoYSEgSWYgYGRhdGFfZmluYCBpcyBzZXQsIGBtcHRjcF9pbmNvbWluZ19vcHRpb25zYCAqbWlnaHQqIHNldCBgbXBleHQtXHUwMDNlZGF0YV9maW4gPSBtcF9vcHQuZGF0YV9maW47YC4gQW5kIHRoZW4sICp0aGF0J3MqIHdoYXQgYGdldF9tYXBwaW5nX3N0YXR1c2AgY2hlY2tzLiBUaGF0J3MgYSBnb29kIGJyZWFkY3J1bWIgdHJhaWwuIFNvLCBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AgYW5kIGBnZXRfbWFwcGluZ19zdGF0dXNgIGFyZSBkZWZpbml0ZWx5IHRoZSBmdW5jdGlvbnMgdG8gemVybyBpbiBvbi4gVGhleSdyZSB0aGUgY3JpdGljYWwgcGllY2VzIGludm9sdmVkIGluIHNldHRpbmcgYW5kIHJlYWRpbmcgdGhpcyBmbGFnLlxuXG5JIHNob3VsZCBhbHNvIGluY2x1ZGUgYG1wdGNwX3BhcnNlX29wdGlvbmAsIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLiBMZXQncyBzZWUuLi5pcyBpdCBpbmxpbmVkLCBvciBpcyBpdCBhIHByb3BlciBmdW5jdGlvbiBjYWxsPyBUaGF0IGNvdWxkIG1ha2UgYSBkaWZmZXJlbmNlLiBMZXQncyBsaXN0IHRoZXNlIGtleSBmdW5jdGlvbnM6IGBtcHRjcF9pbmNvbWluZ19vcHRpb25zYCwgYG1wdGNwX2dldF9vcHRpb25zYCwgYW5kIGBnZXRfbWFwcGluZ19zdGF0dXNgLiBUaGV5IGFyZSBhbGwgY3JpdGljYWwuXG5cbldhaXQuLi53aGF0IGFib3V0IHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIG1ha2Ugc3VyZSBNUFRDUCBpcyBhY3R1YWxseSBlbmFibGVkLiBPdGhlcndpc2UsIHRoaXMgaXMgYWxsIGFjYWRlbWljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzMyNSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0OTozMi44NzQ5NTgwMzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NjE1NTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVBUQ1BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21wdGNwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbXB0Y3AvS2NvbmZpZy0xLVxcbm5ldC9tcHRjcC9LY29uZmlnOjI6Y29uZmlnIE1QVENQXFxubmV0L21wdGNwL0tjb25maWctMy1cXHRib29sIFxcXCJNUFRDUDogTXVsdGlwYXRoIFRDUFxcXCJcXG4tLVxcbm5ldC9tcHRjcC9LY29uZmlnPTE2PWNvbmZpZyBJTkVUX01QVENQX0RJQUdcXG4tLVxcbm5ldC9tcHRjcC9LY29uZmlnLTE5LVxcbm5ldC9tcHRjcC9LY29uZmlnOjIwOmNvbmZpZyBNUFRDUF9JUFY2XFxubmV0L21wdGNwL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiTVBUQ1A6IElQdjYgc3VwcG9ydCBmb3IgTXVsdGlwYXRoIFRDUFxcXCJcXG4tLVxcbm5ldC9tcHRjcC9LY29uZmlnLTI0LVxcbm5ldC9tcHRjcC9LY29uZmlnOjI1OmNvbmZpZyBNUFRDUF9LVU5JVF9URVNUXFxubmV0L21wdGNwL0tjb25maWctMjYtXFx0dHJpc3RhdGUgXFxcIlRoaXMgYnVpbGRzIHRoZSBNUFRDUCBLVW5pdCB0ZXN0c1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo0OTozMy4xNzExMTc4NjJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxMTU4MTQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IG93biBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIGZhbWlsaWFyIHdpdGggbmV0d29yayBwcm90b2NvbCBpbnRlcm5hbHM6XG5cbioqRGl2aW5nIGludG8gdGhlIE1QVENQIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuQWxyaWdodCwgdGhlIGNvcmUgZm9jdXMgc2VlbXMgdG8gYmUgb24gTVBUQ1AgY29uZmlndXJhdGlvbiwgbmF0dXJhbGx5LiBNeSBtZW50YWwgY2hlY2tsaXN0IHN0YXJ0cyB3aXRoIGBNUFRDUGAgaXRzZWxmIOKAkyB0aGF0J3MgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiB0byBpbnZlc3RpZ2F0ZS4gQnV0LCBhcyB3ZSBhbGwga25vdywgdGhpbmdzIGFyZSByYXJlbHkgdGhhdCBzaW1wbGUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuU28sIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IHNjYW4gZm9yICpvdGhlciogcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIHNldHRpbmdzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGl0cyBiZWhhdmlvci4gVGhpcyBjb3VsZCBiZSBhbnl0aGluZyB0aGF0IGludGVncmF0ZXMgd2l0aCBpdCBvciBzaXRzIGFsb25nc2lkZSBpdC4gQSBob2xpc3RpYyBhcHByb2FjaCBpcyBiZXN0LlxuXG5BbmQsIGZpbmFsbHksIEknbGwgbmVlZCB0byBrbm93IHdoZXJlIHRvIGZpbmQgdGhlIGNvZGUgdGhhdCBhY3R1YWxseSBpbXBsZW1lbnRzIGFsbCB0aGlzLiBMZXQncyBzZWUuLi4gdGhlIGZpbGUgaXMgYG5ldC9tcHRjcC9vcHRpb25zLmNgLiBPa2F5LCBub3cgSSBoYXZlIGEgc3RhcnRpbmcgcG9pbnQgYW5kIHRoZSBmaWxlIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuIFRpbWUgdG8gZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTE2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDk6MzYuNTgyNzAxNDAxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAyOTU4NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2JqLVxcXFwkXFxcXChDT05GSUdfTVBUQ1BcXFxcKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbXB0Y3AvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tcHRjcC9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5uZXQvbXB0Y3AvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTVBUQ1ApICs9IG1wdGNwLm9cXG5uZXQvbXB0Y3AvTWFrZWZpbGUtMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6NDk6MzYuNzUzMDAyOTY5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NTQyMjIwMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBNUFRDUCBEU1MgT3B0aW9uIFBhcnNpbmcgQ2hhbmdlKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSB0aGUgY3JpdGljYWwgY2hhbmdlIGNlbnRlcnMgYXJvdW5kIGBDT05GSUdfTVBUQ1BgLiBUaGF0J3MgdGhlIG9ubHkgY29uZmlnIGZsYWcgSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoIGhlcmUuIExldCdzIHNlZS4uLiB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSB3YXkgTVBUQ1AgRFNTIG9wdGlvbnMgYXJlIHBhcnNlZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYG1wdGNwX3BhcnNlX29wdGlvbigpYCBmdW5jdGlvbi4gVGhlIGNvcmUgb2YgaXQgYWxsIGlzIG1ha2luZyBzdXJlIHRoZSBgZGF0YV9maW5gIGZsYWcgaXMgb25seSBjb25zaWRlcmVkIGlmIHRoZSBgdXNlX21hcGAgZmxhZyBpcyBhbHNvIHNldC4gRXNzZW50aWFsbHksIGl0IGlzIGZpeGluZyBhbiBpbmNvbnNpc3RlbmN5IHdoZXJlIGBkYXRhX2ZpbmAgbWlnaHQgaGF2ZSBiZWVuIHNldCBpbmRlcGVuZGVudGx5LlxuXG5UaGlzIGlzIGEgZnVuZGFtZW50YWwgY2hhbmdlIHRvIGhvdyBpbmNvbWluZyBwYWNrZXRzIHdpdGggRFNTIG9wdGlvbnMgYXJlIGhhbmRsZWQuIEl0IGRpcmVjdGx5IGltcGFjdHMgaG93IHRoZSBrZXJuZWwgcmVjb2duaXplcyBhIERBVEFfRklOLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgZmxvdyBjb250cm9sIGFuZCBjb25uZWN0aW9uIHRlcm1pbmF0aW9uLiBUaGlzIGlzIHRoZSBraW5kIG9mIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGJ5IHNlbmRpbmcgY3JhZnRlZCBwYWNrZXRzLCBzbyBpdCBuZWVkcyB0aG9yb3VnaCBmdXp6aW5nLiBXZSBoYXZlIHRvIGVuc3VyZSB0aGF0IHdlIGFyZSBub3QgaW50cm9kdWNpbmcgcmVncmVzc2lvbnMgb3IgY2F1c2luZyB1bmV4cGVjdGVkIHN0YXRlIHRyYW5zaXRpb25zLlxuXG5JIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGtleSBzeW1ib2xzLiBCYXNlZCBvbiB0aGUgY29kZSwgYG1wdGNwX3BhcnNlX29wdGlvbmAgd2lsbCBiZSBpbXBvcnRhbnQsIGV2ZW4gaWYgaXQgbWlnaHQgYmUgaW5saW5lZC4gSSBhbHNvIGtub3cgdGhhdCBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AsIGBtcHRjcF9nZXRfb3B0aW9uc2AsIGFuZCBgZ2V0X21hcHBpbmdfc3RhdHVzYCBhcmUgaW52b2x2ZWQgaW4gdGhlIG92ZXJhbGwgcHJvY2Vzcy4gTm93IHRoYXQgSSBkb3VibGUgY2hlY2tlZCB0aGUgc291cmNlLCBJIHJlYWxpemUgdGhhdCBgbXB0Y3BfcGFyc2Vfb3B0aW9uYCBpcyBpbmRlZWQgc3RhdGljLCBidXQgc3RpbGwgaW1wb3J0YW50LlxuXG5Hb2luZyBhIGxheWVyIGRlZXBlciwgSSBzZWUgdGhhdCBgbXB0Y3BfcGFyc2Vfb3B0aW9uYCBpcyBjYWxsZWQgYnkgYG1wdGNwX2dldF9vcHRpb25zYC4gYG1wdGNwX2dldF9vcHRpb25zYCBpcyBjYWxsZWQgZnJvbSBgbXB0Y3BfaW5jb21pbmdfb3B0aW9uc2AsIGBzdWJmbG93X2NoZWNrX3JlcWAsIGBtcHRjcF9zdWJmbG93X2luaXRfY29va2llX3JlcWAsIGBzdWJmbG93X2ZpbmlzaF9jb25uZWN0YCwgYW5kIGBzdWJmbG93X3N5bl9yZWN2X3NvY2tgLiBUaGF0IGNvbmZpcm1zIHRoYXQgYG1wdGNwX2dldF9vcHRpb25zYCBpcyBhIGZhbnRhc3RpYyBmb2N1cyBzeW1ib2wuIE5vdyB0aGF0IEkgaGF2ZSBkb25lIGFsbCB0aGlzIGFuYWx5c2lzLCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NDU4LCJPdXRwdXRUb2tlbnMiOjE5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjo1MDo0Mi4yOTUyMjcyNThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDU2NTYwMjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNUFRDUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1wdGNwX2dldF9vcHRpb25zXCIsXG4gICAgXCJtcHRjcF9pbmNvbWluZ19vcHRpb25zXCIsXG4gICAgXCJnZXRfbWFwcGluZ19zdGF0dXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBvZiBNUFRDUCBEU1Mgb3B0aW9ucyBpbiBgbXB0Y3BfcGFyc2Vfb3B0aW9uKClgLiBTcGVjaWZpY2FsbHksIGl0IGVuc3VyZXMgdGhhdCB0aGUgYGRhdGFfZmluYCBmbGFnIGlzIG9ubHkgZXh0cmFjdGVkIGFuZCBzZXQgaWYgdGhlIGB1c2VfbWFwYCBmbGFnIGlzIGFsc28gcHJlc2VudCBpbiB0aGUgb3B0aW9uLiBQcmV2aW91c2x5LCBgZGF0YV9maW5gIGNvdWxkIGJlIHNldCBpbmRlcGVuZGVudGx5IG9mIGB1c2VfbWFwYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIE1QVENQIHByb3RvY29sIGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgaW5jb21pbmcgcGFja2V0cyBhcmUgcHJvY2Vzc2VkIGFuZCB3aGV0aGVyIGEgREFUQV9GSU4gaXMgcmVjb2duaXplZC4gSXQgaXMgcmVhY2hhYmxlIGJ5IHNlbmRpbmcgY3JhZnRlZCBNUFRDUCBwYWNrZXRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIHN0YXRlIHRyYW5zaXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1QVENQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXB0Y3BfZ2V0X29wdGlvbnNcIixcbiAgICBcIm1wdGNwX2luY29taW5nX29wdGlvbnNcIixcbiAgICBcImdldF9tYXBwaW5nX3N0YXR1c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIG9mIE1QVENQIERTUyBvcHRpb25zIGluIGBtcHRjcF9wYXJzZV9vcHRpb24oKWAuIFNwZWNpZmljYWxseSwgaXQgZW5zdXJlcyB0aGF0IHRoZSBgZGF0YV9maW5gIGZsYWcgaXMgb25seSBleHRyYWN0ZWQgYW5kIHNldCBpZiB0aGUgYHVzZV9tYXBgIGZsYWcgaXMgYWxzbyBwcmVzZW50IGluIHRoZSBvcHRpb24uIFByZXZpb3VzbHksIGBkYXRhX2ZpbmAgY291bGQgYmUgc2V0IGluZGVwZW5kZW50bHkgb2YgYHVzZV9tYXBgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgTVBUQ1AgcHJvdG9jb2wgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyBpbmNvbWluZyBwYWNrZXRzIGFyZSBwcm9jZXNzZWQgYW5kIHdoZXRoZXIgYSBEQVRBX0ZJTiBpcyByZWNvZ25pemVkLiBJdCBpcyByZWFjaGFibGUgYnkgc2VuZGluZyBjcmFmdGVkIE1QVENQIHBhY2tldHMgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaW4gc3RhdGUgdHJhbnNpdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9wb4[1] Phase: Succeeded StartedAt: 2026-07-10 16:50:54 +0000 UTC FinishedAt: 2026-07-10 16:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 16:50:54 +0000 UTC FinishedAt: 2026-07-10 16:50:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2] Phase: Succeeded StartedAt: 2026-07-10 16:50:54 +0000 UTC FinishedAt: 2026-07-10 21:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-10 16:50:54 +0000 UTC FinishedAt: 2026-07-10 21:29:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-10 16:50:54 +0000 UTC FinishedAt: 2026-07-10 16:51:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-10 16:50:54 +0000 UTC FinishedAt: 2026-07-10 16:51:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9wb4/series-workflowx9wb4-convert-artifact-3622469197/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-10 16:51:14 +0000 UTC FinishedAt: 2026-07-10 17:45:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-10 16:51:14 +0000 UTC FinishedAt: 2026-07-10 17:45:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5877e7c1-5ce0-4960-846b-1bb227dad778,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-workflowx9wb4/series-workflowx9wb4-convert-artifact-3622469197/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": "a310d4d4-7be3-4fd3-a654-043530693338", "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-workflowx9wb4/series-workflowx9wb4-build-action-1507770051/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-10 16:51:14 +0000 UTC FinishedAt: 2026-07-10 17:43:32 +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:*5877e7c1-5ce0-4960-846b-1bb227dad778,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-workflowx9wb4/series-workflowx9wb4-convert-artifact-3622469197/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": "a310d4d4-7be3-4fd3-a654-043530693338", "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-workflowx9wb4/series-workflowx9wb4-build-action-1507770051/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-10 17:45:51 +0000 UTC FinishedAt: 2026-07-10 17:45:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-10 17:45:51 +0000 UTC FinishedAt: 2026-07-10 17:45:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-10 17:45:51 +0000 UTC FinishedAt: 2026-07-10 17:46:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-10 17:45:51 +0000 UTC FinishedAt: 2026-07-10 17:46:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx9wb4/series-workflowx9wb4-convert-artifact-2478262184/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-10 17:46:12 +0000 UTC FinishedAt: 2026-07-10 17:48:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-10 17:46:12 +0000 UTC FinishedAt: 2026-07-10 17:48:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a310d4d4-7be3-4fd3-a654-043530693338,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-workflowx9wb4/series-workflowx9wb4-build-action-1507770051/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-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-10 17:48:28 +0000 UTC FinishedAt: 2026-07-10 17:48:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-10 17:48:28 +0000 UTC FinishedAt: 2026-07-10 17:48:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-10 17:48:28 +0000 UTC FinishedAt: 2026-07-10 18:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-10 17:48:28 +0000 UTC FinishedAt: 2026-07-10 18:21:27 +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:*5877e7c1-5ce0-4960-846b-1bb227dad778,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-workflowx9wb4/series-workflowx9wb4-convert-artifact-2478262184/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": "75e3a965-009c-4190-b802-5fa5926163d8", "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-workflowx9wb4/series-workflowx9wb4-build-action-1124091220/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-10 17:48:28 +0000 UTC FinishedAt: 2026-07-10 18:20:20 +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:*5877e7c1-5ce0-4960-846b-1bb227dad778,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-workflowx9wb4/series-workflowx9wb4-convert-artifact-2478262184/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": "75e3a965-009c-4190-b802-5fa5926163d8", "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-workflowx9wb4/series-workflowx9wb4-build-action-1124091220/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-10 18:21:27 +0000 UTC FinishedAt: 2026-07-10 18:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-10 18:21:27 +0000 UTC FinishedAt: 2026-07-10 18:21:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-10 18:21:27 +0000 UTC FinishedAt: 2026-07-10 18:23:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-10 18:21:27 +0000 UTC FinishedAt: 2026-07-10 18:23:34 +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:*75e3a965-009c-4190-b802-5fa5926163d8,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-workflowx9wb4/series-workflowx9wb4-build-action-1124091220/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-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-10 18:23:43 +0000 UTC FinishedAt: 2026-07-10 21:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-10 18:23:43 +0000 UTC FinishedAt: 2026-07-10 21:29:20 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"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:*a310d4d4-7be3-4fd3-a654-043530693338,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*75e3a965-009c-4190-b802-5fa5926163d8,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-workflowx9wb4/series-workflowx9wb4-build-action-1507770051/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-workflowx9wb4/series-workflowx9wb4-build-action-1124091220/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-10 18:23:43 +0000 UTC FinishedAt: 2026-07-10 18:24:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-10 18:23:43 +0000 UTC FinishedAt: 2026-07-10 18:23:51 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"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-workflowx9wb4/series-workflowx9wb4-convert-artifact-3412039905/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-10 18:23:43 +0000 UTC FinishedAt: 2026-07-10 18:23:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-10 18:23:43 +0000 UTC FinishedAt: 2026-07-10 18:23:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-10 18:23:43 +0000 UTC FinishedAt: 2026-07-10 18:23:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-10 18:24:03 +0000 UTC FinishedAt: 2026-07-10 21:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx9wb4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mptcp_get_options","mptcp_incoming_options","get_mapping_status"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["MPTCP"],"series_id":"beb00f80-b93b-4d19-ae73-db56cbbb423d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-10 18:24:03 +0000 UTC FinishedAt: 2026-07-10 21:29:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a310d4d4-7be3-4fd3-a654-043530693338,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*75e3a965-009c-4190-b802-5fa5926163d8,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-workflowx9wb4/series-workflowx9wb4-build-action-1507770051/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-workflowx9wb4/series-workflowx9wb4-build-action-1124091220/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-workflowx9wb4/series-workflowx9wb4-convert-artifact-3412039905/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,}