Name: series-workflowspzrp Phase: Succeeded StartedAt: 2026-06-22 15:33:10 +0000 UTC FinishedAt: 2026-06-22 15:59:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspzrp[0] Phase: Succeeded StartedAt: 2026-06-22 15:33:10 +0000 UTC FinishedAt: 2026-06-22 15:41:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspzrp[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 15:33:10 +0000 UTC FinishedAt: 2026-06-22 15:41:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "13a1e1a618858407fa12c391f664ea750651f6b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "13a1e1a618858407fa12c391f664ea750651f6b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION" ], "series_id": "537b3cd2-79ca-474c-b210-079f6da86a1b" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "compaction_free" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE1OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjb21wYWN0aW9uX2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmZmM4ZTBmNjM2NTgwY2I4MGUwMzNhY2IzYTM0OTQxOGUwNWMzODgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMTU6NDA6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vY29tcGFjdGlvbi5jIGIvbW0vY29tcGFjdGlvbi5jXG5pbmRleCBiNzc2ZjM1YWQwMjAwNy4uZjA4NzY1YWRlMDE0Y2UgMTAwNjQ0XG4tLS0gYS9tbS9jb21wYWN0aW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2NvbXBhY3Rpb24uY1xuQEAgLTE4NzUsMTUgJiM0MzsxODc1LDE0IEBAIHN0YXRpYyB2b2lkIGNvbXBhY3Rpb25fZnJlZShzdHJ1Y3QgZm9saW8gKmRzdCwgdW5zaWduZWQgbG9uZyBkYXRhKVxuIFx0aW50IG9yZGVyID0gZm9saW9fb3JkZXIoZHN0KTtcbiBcdHN0cnVjdCBwYWdlICpwYWdlID0gXHUwMDI2ZHN0LVx1MDAzZXBhZ2U7XG4gXG4tXHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkpIHtcbi1cdFx0ZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKTtcbiYjNDM7XHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkgXHUwMDI2XHUwMDI2IGZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlcikpIHtcbiBcdFx0bGlzdF9hZGQoXHUwMDI2ZHN0LVx1MDAzZWxydSwgXHUwMDI2Y2MtXHUwMDNlZnJlZXBhZ2VzW29yZGVyXSk7XG4gXHRcdGNjLVx1MDAzZW5yX2ZyZWVwYWdlcyAmIzQzOz0gMSBcdTAwM2NcdTAwM2Mgb3JkZXI7XG4gXHR9XG4gXHRjYy1cdTAwM2Vucl9taWdyYXRlcGFnZXMgJiM0Mzs9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0Lypcbi1cdCAqIHNvbWVvbmUgZWxzZSBoYXMgcmVmZXJlbmNlZCB0aGUgcGFnZSwgd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXJcbi1cdCAqIGZyZWUgbGlzdC5cbiYjNDM7XHQgKiBzb21lb25lIGVsc2UgaGFzIHJlZmVyZW5jZWQgdGhlIHBhZ2Ugb3IgZnJlZV9wYWdlc19wcmVwYXJlKCkgZmFpbHMsXG4mIzQzO1x0ICogd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXIgZnJlZSBsaXN0LlxuIFx0ICovXG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE1OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjb21wYWN0aW9uX2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZmYzhlMGY2MzY1ODBjYjgwZTAzM2FjYjNhMzQ5NDE4ZTA1YzM4ODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyMiAxNTo0MDoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2NvbXBhY3Rpb24uYyBiL21tL2NvbXBhY3Rpb24uYwppbmRleCBiNzc2ZjM1YWQwMjAwNy4uZjA4NzY1YWRlMDE0Y2UgMTAwNjQ0Ci0tLSBhL21tL2NvbXBhY3Rpb24uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9jb21wYWN0aW9uLmMKQEAgLTE4NzUsMTUgJiM0MzsxODc1LDE0IEBAIHN0YXRpYyB2b2lkIGNvbXBhY3Rpb25fZnJlZShzdHJ1Y3QgZm9saW8gKmRzdCwgdW5zaWduZWQgbG9uZyBkYXRhKQogCWludCBvcmRlciA9IGZvbGlvX29yZGVyKGRzdCk7CiAJc3RydWN0IHBhZ2UgKnBhZ2UgPSAmYW1wO2RzdC0mZ3Q7cGFnZTsKIAotCWlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSkgewotCQlmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpOwomIzQzOwlpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkgJmFtcDsmYW1wOyBmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpKSB7CiAJCWxpc3RfYWRkKCZhbXA7ZHN0LSZndDtscnUsICZhbXA7Y2MtJmd0O2ZyZWVwYWdlc1tvcmRlcl0pOwogCQljYy0mZ3Q7bnJfZnJlZXBhZ2VzICYjNDM7PSAxICZsdDsmbHQ7IG9yZGVyOwogCX0KIAljYy0mZ3Q7bnJfbWlncmF0ZXBhZ2VzICYjNDM7PSAxICZsdDsmbHQ7IG9yZGVyOwogCS8qCi0JICogc29tZW9uZSBlbHNlIGhhcyByZWZlcmVuY2VkIHRoZSBwYWdlLCB3ZSBjYW5ub3QgdGFrZSBpdCBiYWNrIHRvIG91cgotCSAqIGZyZWUgbGlzdC4KJiM0MzsJICogc29tZW9uZSBlbHNlIGhhcyByZWZlcmVuY2VkIHRoZSBwYWdlIG9yIGZyZWVfcGFnZXNfcHJlcGFyZSgpIGZhaWxzLAomIzQzOwkgKiB3ZSBjYW5ub3QgdGFrZSBpdCBiYWNrIHRvIG91ciBmcmVlIGxpc3QuCiAJICovCiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzOQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBgbW0vY29tcGFjdGlvbi5jYCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbW0vY29tcGFjdGlvbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIHRvIHRoZSBgY29tcGFjdGlvbl9mcmVlYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIG1vZGlmaWNhdGlvbiwgYnV0IHNvbWV0aGluZyBjYXRjaGVzIG15IGV5ZS4gVGhleSYjMzk7dmUgY2hhbmdlZCB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50IGhlcmUuIEl0IHVzZWQgdG8gYmUgYSBzaW1wbGUgYGZvbGlvX3B1dF90ZXN0emVybyhkc3QpYCBjYWxsLiBOb3csIGl0JiMzOTtzIGNvbWJpbmVkIHdpdGggYSBjYWxsIHRvIGBmcmVlX3BhZ2VzX3ByZXBhcmVgLCBhbmQgdGhlIGNvZGUgcmVsaWVzIG9uIHRoZSByZXR1cm4gdmFsdWU6CgpgYGBjCi0JaWYgKGZvbGlvX3B1dF90ZXN0emVybyhkc3QpKSB7Ci0JCWZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlcik7CiYjNDM7CWlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSAmYW1wOyZhbXA7IGZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlcikpIHsKIAkJbGlzdF9hZGQoJmFtcDtkc3QtJmd0O2xydSwgJmFtcDtjYy0mZ3Q7ZnJlZXBhZ2VzW29yZGVyXSk7CiAJCWNjLSZndDtucl9mcmVlcGFnZXMgJiM0Mzs9IDEgJmx0OyZsdDsgb3JkZXI7CiAJfQpgYGAKClRoZSBkaWZmZXJlbmNlIGlzLCBub3cgYGZyZWVfcGFnZXNfcHJlcGFyZWAgcmV0dXJucyBhIGJvb2xlYW4uIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGJvb2xlYW4gcmVwcmVzZW50cy4gSXMgaXQgYW4gaW5kaWNhdGlvbiBvZiBzdWNjZXNzLCBhIHBvdGVudGlhbCBmYWlsdXJlIHN0YXRlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBzaG91bGQga25vdyB0aGlzLCBidXQgSSYjMzk7bGwgcXVpY2tseSBncmVwIHRoZSBjb2RlIHRvIHNlZSB3aGF0IGBmcmVlX3BhZ2VzX3ByZXBhcmVgJiMzOTtzIHNpZ25hdHVyZSByZWFsbHkgaXMuIEkmIzM5O2xsIHNlYXJjaCBmb3IgaXQgbm93IHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIGVuc3VyZSB0aGVyZSYjMzk7cyBubyBzdWJ0bGUgaW50ZXJhY3Rpb24gSSYjMzk7bSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZyZWVfcGFnZXNfcHJlcGFyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9jb21wYWN0aW9uLmM9MTg3Mj1zdGF0aWMgdm9pZCBjb21wYWN0aW9uX2ZyZWUoc3RydWN0IGZvbGlvICpkc3QsIHVuc2lnbmVkIGxvbmcgZGF0YSlcbi0tXG5tbS9jb21wYWN0aW9uLmMtMTg3Ny1cbm1tL2NvbXBhY3Rpb24uYzoxODc4Olx0aWYgKGZvbGlvX3B1dF90ZXN0emVybyhkc3QpIFx1MDAyNlx1MDAyNiBmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpKSB7XG5tbS9jb21wYWN0aW9uLmMtMTg3OS1cdFx0bGlzdF9hZGQoXHUwMDI2ZHN0LVx1MDAzZWxydSwgXHUwMDI2Y2MtXHUwMDNlZnJlZXBhZ2VzW29yZGVyXSk7XG4tLVxubW0vY29tcGFjdGlvbi5jLTE4ODMtXHQvKlxubW0vY29tcGFjdGlvbi5jOjE4ODQ6XHQgKiBzb21lb25lIGVsc2UgaGFzIHJlZmVyZW5jZWQgdGhlIHBhZ2Ugb3IgZnJlZV9wYWdlc19wcmVwYXJlKCkgZmFpbHMsXG5tbS9jb21wYWN0aW9uLmMtMTg4NS1cdCAqIHdlIGNhbm5vdCB0YWtlIGl0IGJhY2sgdG8gb3VyIGZyZWUgbGlzdC5cbi0tXG5tbS9pbnRlcm5hbC5oPTkxMD12b2lkIHBvc3RfYWxsb2NfaG9vayhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyLCBnZnBfdCBnZnBfZmxhZ3MpO1xubW0vaW50ZXJuYWwuaDo5MTE6ZXh0ZXJuIGJvb2wgZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpO1xubW0vaW50ZXJuYWwuaC05MTItXG4tLVxubW0va3NtLmM9OTQ5PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmtzbV9nZXRfZm9saW8oc3RydWN0IGtzbV9zdGFibGVfbm9kZSAqc3RhYmxlX25vZGUsXG4tLVxubW0va3NtLmMtOTgxLVx0XHQgKiBzZWN0aW9uIG9mIF9fcmVtb3ZlX21hcHBpbmcoKTsgYnV0IGFub24gZm9saW8tXHUwMDNlbWFwcGluZ1xubW0va3NtLmM6OTgyOlx0XHQgKiBpcyByZXNldCB0byBOVUxMIGxhdGVyLCBpbiBmcmVlX3BhZ2VzX3ByZXBhcmUoKS5cbm1tL2tzbS5jLTk4My1cdFx0ICovXG4tLVxubW0vcGFnZV9hbGxvYy5jPTYzPXR5cGVkZWYgaW50IF9fYml0d2lzZSBmcGlfdDtcbi0tXG5tbS9wYWdlX2FsbG9jLmMtOTItXG5tbS9wYWdlX2FsbG9jLmM6OTM6LyogZnJlZV9wYWdlc19wcmVwYXJlKCkgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9yIHBhZ2UocykgYmVpbmcgZnJlZWQuICovXG5tbS9wYWdlX2FsbG9jLmMtOTQtI2RlZmluZSBGUElfUFJFUEFSRURcdFx0KChfX2ZvcmNlIGZwaV90KUJJVCgzKSlcbi0tXG5tbS9wYWdlX2FsbG9jLmM9MTMwOD1zdGF0aWMgaW5saW5lIHZvaWQgcGdhbGxvY190YWdfc3ViX3BhZ2VzKHN0cnVjdCBhbGxvY190YWcgKnRhZywgdW5zaWduZWQgaW50IG5yKSB7fVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xMzExLVxubW0vcGFnZV9hbGxvYy5jOjEzMTI6c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIF9fZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLFxubW0vcGFnZV9hbGxvYy5jLTEzMTMtXHRcdHVuc2lnbmVkIGludCBvcmRlciwgZnBpX3QgZnBpX2ZsYWdzKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xNDQ4LVxubW0vcGFnZV9hbGxvYy5jOjE0NDk6Ym9vbCBmcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbm1tL3BhZ2VfYWxsb2MuYy0xNDUwLXtcbm1tL3BhZ2VfYWxsb2MuYzoxNDUxOlx0cmV0dXJuIF9fZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyLCBGUElfTk9ORSk7XG5tbS9wYWdlX2FsbG9jLmMtMTQ1Mi19XG4tLVxubW0vcGFnZV9hbGxvYy5jPTE1Nzg9c3RhdGljIHZvaWQgX19mcmVlX3BhZ2VzX29rKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTE1ODMtXG5tbS9wYWdlX2FsbG9jLmM6MTU4NDpcdGlmIChfX2ZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlciwgZnBpX2ZsYWdzKSlcbm1tL3BhZ2VfYWxsb2MuYy0xNTg1LVx0XHRmcmVlX29uZV9wYWdlKHpvbmUsIHBhZ2UsIHBmbiwgb3JkZXIsIGZwaV9mbGFncyk7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTI5Mzc9c3RhdGljIHZvaWQgX19mcmVlX2Zyb3plbl9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0yOTQ5LVxubW0vcGFnZV9hbGxvYy5jOjI5NTA6XHRpZiAoIV9fZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyLCBmcGlfZmxhZ3MpKVxubW0vcGFnZV9hbGxvYy5jLTI5NTEtXHRcdHJldHVybjtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9Mjk5OT12b2lkIGZyZWVfdW5yZWZfZm9saW9zKHN0cnVjdCBmb2xpb19iYXRjaCAqZm9saW9zKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0zMDEwLVxubW0vcGFnZV9hbGxvYy5jOjMwMTE6XHRcdGlmICghX19mcmVlX3BhZ2VzX3ByZXBhcmUoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSwgb3JkZXIsIEZQSV9OT05FKSlcbm1tL3BhZ2VfYWxsb2MuYy0zMDEyLVx0XHRcdGNvbnRpbnVlO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz02ODQ2PXN0YXRpYyB2b2lkIGZyZWVfcHJlcGFyZWRfY29udGlnX3JhbmdlKHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy02ODYxLVx0XHQgKiBGcmVlIHRoZSBjaHVuayBhcyBhIHNpbmdsZSBibG9jay4gT3VyIGNhbGxlciBoYXMgYWxyZWFkeVxubW0vcGFnZV9hbGxvYy5jOjY4NjI6XHRcdCAqIGNhbGxlZCBmcmVlX3BhZ2VzX3ByZXBhcmUoKSBmb3IgZWFjaCBvcmRlci0wIHBhZ2UuXG5tbS9wYWdlX2FsbG9jLmMtNjg2My1cdFx0ICovXG4tLVxubW0vcGFnZV9hbGxvYy5jPTY4NzI9c3RhdGljIHZvaWQgX19mcmVlX2NvbnRpZ19yYW5nZV9jb21tb24odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTY4OTYtXHRcdGlmIChjYW5fZnJlZSlcbm1tL3BhZ2VfYWxsb2MuYzo2ODk3Olx0XHRcdGNhbl9mcmVlID0gZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIDApO1xubW0vcGFnZV9hbGxvYy5jLTY4OTgtXG4tLVxubW0vcm1hcC5jPTE3NzY9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIF9fZm9saW9fcmVtb3ZlX3JtYXAoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9ybWFwLmMtMTg3OC1cdCAqIHdoaWNoIGluY3JlbWVudHMgbWFwY291bnQgYWZ0ZXIgdXMgYnV0IHNldHMgbWFwcGluZyBiZWZvcmUgdXM6XG5tbS9ybWFwLmM6MTg3OTpcdCAqIHNvIGxlYXZlIHRoZSByZXNldCB0byBmcmVlX3BhZ2VzX3ByZXBhcmUsIGFuZCByZW1lbWJlciB0aGF0XG5tbS9ybWFwLmMtMTg4MC1cdCAqIGl0JiMzOTtzIG9ubHkgcmVsaWFibGUgd2hpbGUgbWFwcGVkLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3OTkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgY29tcGFjdGlvbl9mcmVlYCBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIFRoZSBrZXkgbW9kaWZpY2F0aW9uIGlzIHdpdGhpbiBgY29tcGFjdGlvbl9mcmVlYCwgc3BlY2lmaWNhbGx5IGluIGBtbS9jb21wYWN0aW9uLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2hlY2sgZm9yIHRoZSByZXR1cm4gdmFsdWUgb2YgYGZyZWVfcGFnZXNfcHJlcGFyZWAuIE5vdywgaW5zdGVhZCBvZiBibGluZGx5IGFkZGluZyB0aGUgcGFnZSB0byB0aGUgZnJlZSBsaXN0LCB0aGUgY29kZSB3aWxsIGV2YWx1YXRlIHdoYXQgYGZyZWVfcGFnZXNfcHJlcGFyZWAgcmV0dXJucy4gSWYgaXTigJlzIGBmYWxzZWAsIHRoZSBwYWdlIGlzbuKAmXQgYWRkZWQuIENsZWFybHksIHRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW4gYXR0ZW1wdCB0byBwcmV2ZW50IHBhZ2UgaW5zZXJ0aW9uIHVuZGVyIHNvbWUgY29uZGl0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNvbmRpdGlvbi4KClRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBjb25maXJtIHRoZSB1c2FnZSBvZiBgY29tcGFjdGlvbl9mcmVlYCBpbiB0aGUgY29kZSwgc28gdGhhdCBJIGNhbiBmaWd1cmUgb3V0IHdoeSB0aGUgY29kZSBjaGFuZ2Ugd291bGQgaGF2ZSBiZWVuIHVzZWZ1bC4gSXQgbG9va3MgbGlrZSBpdCBpcyB1c2VkIGFzIGEgY2FsbGJhY2sgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXQgdG8gaXRzIGNhbGwgc2l0ZXMgdG8gZnVsbHkgZ3Jhc3AgaXRzIGludGVuZGVkIGJlaGF2aW9yIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGNvbmRpdGlvbmFsLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHNjZW5hcmlvcyB3b3VsZCBsZWFkIHRvIGBmcmVlX3BhZ2VzX3ByZXBhcmVgIHJldHVybmluZyBgZmFsc2VgIGFuZCBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgYWZmZWN0IG1lbW9yeSBtYW5hZ2VtZW50IGR1cmluZyBjb21wYWN0aW9uLiBUaGVyZSYjMzk7cyBhIGNvbnRleHQgSSYjMzk7bSBtaXNzaW5nIGF0IHRoZSBtb21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29tcGFjdGlvbl9mcmVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vY29tcGFjdGlvbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2NvbXBhY3Rpb24uYz0xODYyPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmNvbXBhY3Rpb25fYWxsb2Moc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgZGF0YSlcbi0tXG5tbS9jb21wYWN0aW9uLmMtMTg3MS0gKi9cbm1tL2NvbXBhY3Rpb24uYzoxODcyOnN0YXRpYyB2b2lkIGNvbXBhY3Rpb25fZnJlZShzdHJ1Y3QgZm9saW8gKmRzdCwgdW5zaWduZWQgbG9uZyBkYXRhKVxubW0vY29tcGFjdGlvbi5jLTE4NzMte1xuLS1cbm1tL2NvbXBhY3Rpb24uYz0yNTMyPWNvbXBhY3Rfem9uZShzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgc3RydWN0IGNhcHR1cmVfY29udHJvbCAqY2FwYylcbi0tXG5tbS9jb21wYWN0aW9uLmMtMjY2OC1cdFx0ZXJyID0gbWlncmF0ZV9wYWdlcyhcdTAwMjZjYy1cdTAwM2VtaWdyYXRlcGFnZXMsIGNvbXBhY3Rpb25fYWxsb2MsXG5tbS9jb21wYWN0aW9uLmM6MjY2OTpcdFx0XHRcdGNvbXBhY3Rpb25fZnJlZSwgKHVuc2lnbmVkIGxvbmcpY2MsIGNjLVx1MDAzZW1vZGUsXG5tbS9jb21wYWN0aW9uLmMtMjY3MC1cdFx0XHRcdE1SX0NPTVBBQ1RJT04sIFx1MDAyNm5yX3N1Y2NlZWRlZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQwMQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgS2VybmVsIE1lbW9yeSBDb21wYWN0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYGNvbXBhY3Rpb25fZnJlZWAgaXMgaW5kZWVkIGJlaW5nIHBhc3NlZCB0byBgbWlncmF0ZV9wYWdlc2Agd2l0aGluIGBjb21wYWN0X3pvbmVgLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50IOKAkyB0aGF0JiMzOTtzIHNvbWUgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBtZW1vcnkgY29tcGFjdGlvbiwgdGhlIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSB0aGF0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBvbiB0aGF0IHBhdGguIFRoZSBzcGVjaWZpYyBzeW1ib2wgSSBzaG91bGQgYmUgemVyb2luZyBpbiBvbiBpcyBgY29tcGFjdGlvbl9mcmVlYCwgb2J2aW91c2x5LiBOb3csIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfQ09NUEFDVElPTmAgaXMgZW5hYmxlZCwgYW5kIG1heWJlIGdvIGxvb2sgYXQgYG1tL01ha2VmaWxlYCBvciBgbW0vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGF0IGBjb21wYWN0aW9uLmNgIGlzIHRoZSByaWdodCBmaWxlLiBJJiMzOTttIGJ1aWxkaW5nIGEgZnV6emluZyBjYW1wYWlnbiBhcm91bmQgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb21wYWN0aW9uXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTUxPW9iai15XHRcdFx0Oj0gZmlsZW1hcC5vIG1lbXBvb2wubyBvb21fa2lsbC5vIGZhZHZpc2UubyBcXFxuLS1cbm1tL01ha2VmaWxlLTU1LVx0XHRcdCAgIG1tX2luaXQubyBwZXJjcHUubyBzbGFiX2NvbW1vbi5vIFxcXG5tbS9NYWtlZmlsZTo1NjpcdFx0XHQgICBjb21wYWN0aW9uLm8gc2hvd19tZW0ubyBcXFxubW0vTWFrZWZpbGUtNTctXHRcdFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc4OQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGBjb21wYWN0aW9uLm9gIGluIHRoZSBNZW1vcnkgTWFuYWdlbWVudCBNYWtlZmlsZSoqCgpSaWdodCwgYGNvbXBhY3Rpb24ub2AgaXMgc2l0dGluZyB0aGVyZSwgbGlzdGVkIGluIGBvYmoteWAgd2l0aGluIHRoZSBgbW0vTWFrZWZpbGVgLiBUaGF0IHBsYWNlbWVudCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIEJ1dCBiZWZvcmUgSSBtYWtlIGFueSBhc3N1bXB0aW9ucywgbXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGNvbmZpcm0gaWYgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGNvbXBpbGVkLiBJIG5lZWQgdG8gcnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIG9yIGAjaWZkZWZgIGJsb2NrcyB0aGF0IG1pZ2h0IGdhdGUgaXRzIGluY2x1c2lvbiBiYXNlZCBvbiBjb25maWd1cmF0aW9uIGZsYWdzLiBMZXQmIzM5O3MgZGlnIGRlZXBlciB0byBtYWtlIHN1cmUgdGhpcyBpcyBhbHdheXMgaW5jbHVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19DT01QQUNUSU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2NvbXBhY3Rpb24uYy0yOC1cbm1tL2NvbXBhY3Rpb24uYzoyOTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL2NvbXBhY3Rpb24uYy0zMC0vKlxuLS1cbm1tL2NvbXBhY3Rpb24uYz01OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdmlhX2NvbXBhY3RfbWVtb3J5KGludCBvcmRlcikgeyByZXR1cm4gZmFsc2U7IH1cbi0tXG5tbS9jb21wYWN0aW9uLmMtNjEtXG5tbS9jb21wYWN0aW9uLmM6NjI6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXG5tbS9jb21wYWN0aW9uLmMtNjMtXG4tLVxubW0vY29tcGFjdGlvbi5jPTkxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHJlbGVhc2VfZnJlZV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVwYWdlcylcbi0tXG5tbS9jb21wYWN0aW9uLmMtMTE1LVxubW0vY29tcGFjdGlvbi5jOjExNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL2NvbXBhY3Rpb24uYy0xMTctXG4tLVxubW0vY29tcGFjdGlvbi5jPTQ5MD1zdGF0aWMgYm9vbCB0ZXN0X2FuZF9zZXRfc2tpcChzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgc3RydWN0IHBhZ2UgKnBhZ2UpXG4tLVxubW0vY29tcGFjdGlvbi5jLTQ5My19XG5tbS9jb21wYWN0aW9uLmM6NDk0OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vY29tcGFjdGlvbi5jLTQ5NS1cbi0tXG5tbS9jb21wYWN0aW9uLmM9MTMzNz1pc29sYXRlX21pZ3JhdGVwYWdlc19yYW5nZShzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXG4tLVxubW0vY29tcGFjdGlvbi5jLTEzNzItXG5tbS9jb21wYWN0aW9uLmM6MTM3MzojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gfHwgQ09ORklHX0NNQSAqL1xubW0vY29tcGFjdGlvbi5jOjEzNzQ6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS9jb21wYWN0aW9uLmMtMTM3NS1cbi0tXG5tbS9jb21wYWN0aW9uLmM9MzM1Mz1zdWJzeXNfaW5pdGNhbGwoa2NvbXBhY3RkX2luaXQpXG5tbS9jb21wYWN0aW9uLmMtMzM1NC1cbm1tL2NvbXBhY3Rpb24uYzozMzU1OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xuLS1cbm1tL2ludGVybmFsLmg9OTk5PXN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdF9zdWJzZWN0aW9uX21hcCh1bnNpZ25lZCBsb25nIHBmbixcbi0tXG5tbS9pbnRlcm5hbC5oLTEwMDQtXG5tbS9pbnRlcm5hbC5oOjEwMDU6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXG5tbS9pbnRlcm5hbC5oLTEwMDYtXG4tLVxubW0vaW50ZXJuYWwuaD0xMDc0PXZvaWQgaW5pdF9jbWFfcmVzZXJ2ZWRfcGFnZWJsb2NrKHN0cnVjdCBwYWdlICpwYWdlKTtcbm1tL2ludGVybmFsLmgtMTA3NS1cbm1tL2ludGVybmFsLmg6MTA3NjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gfHwgQ09ORklHX0NNQSAqL1xubW0vaW50ZXJuYWwuaC0xMDc3LVxuLS1cbm1tL21tX2luaXQuYz0xMzMzPXN0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsXG4tLVxubW0vbW1faW5pdC5jLTEzNzUtXG5tbS9tbV9pbml0LmM6MTM3NjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL21tX2luaXQuYy0xMzc3LXN0YXRpYyB2b2lkIHBnZGF0X2luaXRfa2NvbXBhY3RkKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4tLVxubW0vb29tX2tpbGwuYz00NTY9c3RhdGljIHZvaWQgZHVtcF9oZWFkZXIoc3RydWN0IG9vbV9jb250cm9sICpvYylcbi0tXG5tbS9vb21fa2lsbC5jLTQ2MC1cdFx0XHRjdXJyZW50LVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqKTtcbm1tL29vbV9raWxsLmM6NDYxOlx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19DT01QQUNUSU9OKSBcdTAwMjZcdTAwMjYgb2MtXHUwMDNlb3JkZXIpXG5tbS9vb21fa2lsbC5jLTQ2Mi1cdFx0cHJfd2FybihcJiMzNDtDT01QQUNUSU9OIGlzIGRpc2FibGVkISEhXFxuXCYjMzQ7KTtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NzEwPXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYnVkZHlfb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNzE1LVxubW0vcGFnZV9hbGxvYy5jOjcxNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL3BhZ2VfYWxsb2MuYy03MTctc3RhdGljIGlubGluZSBzdHJ1Y3QgY2FwdHVyZV9jb250cm9sICp0YXNrX2NhcGMoc3RydWN0IHpvbmUgKnpvbmUpXG4tLVxubW0vcGFnZV9hbGxvYy5jPTc2NT1jb21wYWN0aW9uX2NhcHR1cmUoc3RydWN0IGNhcHR1cmVfY29udHJvbCAqY2FwYywgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTc2OS19XG5tbS9wYWdlX2FsbG9jLmM6NzcwOiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vcGFnZV9hbGxvYy5jLTc3MS1cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDA0Nz1fX2FsbG9jX3BhZ2VzX21heV9vb20oZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNDEzOC1cbm1tL3BhZ2VfYWxsb2MuYzo0MTM5OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0vcGFnZV9hbGxvYy5jLTQxNDAtLyogVHJ5IG1lbW9yeSBjb21wYWN0aW9uIGZvciBoaWdoLW9yZGVyIGFsbG9jYXRpb25zIGJlZm9yZSByZWNsYWltICovXG4tLVxubW0vcGFnZV9hbGxvYy5jPTQyNzk9c2hvdWxkX2NvbXBhY3RfcmV0cnkoZ2ZwX3QgZ2ZwX21hc2ssIHN0cnVjdCBhbGxvY19jb250ZXh0ICphYywgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00MzA0LX1cbm1tL3BhZ2VfYWxsb2MuYzo0MzA1OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vcGFnZV9hbGxvYy5jLTQzMDYtXG4tLVxubW0vdm1zY2FuLmM9NjMzMT1zdGF0aWMgdm9pZCBzaHJpbmtfem9uZXMoc3RydWN0IHpvbmVsaXN0ICp6b25lbGlzdCwgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXG4tLVxubW0vdm1zY2FuLmMtNjM3MS1cdFx0XHQgKi9cbm1tL3Ztc2Nhbi5jOjYzNzI6XHRcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NPTVBBQ1RJT04pIFx1MDAyNlx1MDAyNlxubW0vdm1zY2FuLmMtNjM3My1cdFx0XHQgICAgc2MtXHUwMDNlb3JkZXIgXHUwMDNlIFBBR0VfQUxMT0NfQ09TVExZX09SREVSIFx1MDAyNlx1MDAyNlxuLS1cbm1tL3Ztc3RhdC5jPTEwNDI9dm9pZCBtZW1tYXBfcGFnZXNfYWRkKGxvbmcgZGVsdGEpXG4tLVxubW0vdm1zdGF0LmMtMTA0Ni1cbm1tL3Ztc3RhdC5jOjEwNDc6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS92bXN0YXQuYy0xMDQ4LVxuLS1cbm1tL3Ztc3RhdC5jPTExODc9Y29uc3QgY2hhciAqIGNvbnN0IHZtc3RhdF90ZXh0W10gPSB7XG4tLVxubW0vdm1zdGF0LmMtMTM3MC0jZW5kaWZcbm1tL3Ztc3RhdC5jOjEzNzE6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS92bXN0YXQuYy0xMzcyLVx0W0koQ09NUEFDVE1JR1JBVEVfU0NBTk5FRCldXHRcdD0gXCYjMzQ7Y29tcGFjdF9taWdyYXRlX3NjYW5uZWRcJiMzNDssXG4tLVxubW0vdm1zdGF0LmMtMTQ5Ni1cbm1tL3Ztc3RhdC5jOjE0OTc6I2lmIChkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pKSB8fCBcXFxubW0vdm1zdGF0LmMtMTQ5OC0gICAgIGRlZmluZWQoQ09ORklHX1BST0NfRlMpXG4tLVxubW0vdm1zdGF0LmM9MjI2OD12b2lkIF9faW5pdCBpbml0X21tX2ludGVybmFscyh2b2lkKVxuLS1cbm1tL3Ztc3RhdC5jLTIzMDEtXG5tbS92bXN0YXQuYzoyMzAyOiNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pXG5tbS92bXN0YXQuYy0yMzAzLVxuLS1cbm1tL3pzbWFsbG9jLmM9MTk5PXN0cnVjdCB6c19wb29sIHtcbi0tXG5tbS96c21hbGxvYy5jLTIxMy0jZW5kaWZcbm1tL3pzbWFsbG9jLmM6MjE0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yMTUtXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrO1xuLS1cbm1tL3pzbWFsbG9jLmM9MzYwPXN0YXRpYyBib29sIFpzSHVnZVBhZ2Uoc3RydWN0IHpzcGFnZSAqenNwYWdlKVxuLS1cbm1tL3pzbWFsbG9jLmMtMzY0LVxubW0venNtYWxsb2MuYzozNjU6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTM2Ni1zdGF0aWMgdm9pZCBraWNrX2RlZmVycmVkX2ZyZWUoc3RydWN0IHpzX3Bvb2wgKnBvb2wpO1xuLS1cbm1tL3pzbWFsbG9jLmM9OTMxPXN0YXRpYyBzdHJ1Y3QgenNwYWdlICphbGxvY196c3BhZ2Uoc3RydWN0IHpzX3Bvb2wgKnBvb2wsXG4tLVxubW0venNtYWxsb2MuYy05NDEtXG5tbS96c21hbGxvYy5jOjk0MjpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQ09NUEFDVElPTikpXG5tbS96c21hbGxvYy5jLTk0My1cdFx0Z2ZwIFx1MDAyNj0gfl9fR0ZQX01PVkFCTEU7XG4tLVxubW0venNtYWxsb2MuYz0xNTk0PXN0YXRpYyBpbnQgcHV0YmFja196c3BhZ2Uoc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzLCBzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpXG4tLVxubW0venNtYWxsb2MuYy0xNjAzLVxubW0venNtYWxsb2MuYzoxNjA0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0xNjA1LS8qXG4tLVxubW0venNtYWxsb2MuYz0xNjA5PXN0YXRpYyB2b2lkIGxvY2tfenNwYWdlKHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSlcbi0tXG5tbS96c21hbGxvYy5jLTE2NDUtfVxubW0venNtYWxsb2MuYzoxNjQ2OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0venNtYWxsb2MuYy0xNjQ3LVxubW0venNtYWxsb2MuYzoxNjQ4OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0xNjQ5LVxuLS1cbm1tL3pzbWFsbG9jLmM9MjIzNz1zdGF0aWMgaW50IF9faW5pdCB6c19pbml0KHZvaWQpXG4tLVxubW0venNtYWxsb2MuYy0yMjQ0LVxubW0venNtYWxsb2MuYzoyMjQ1OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yMjQ2LVx0cmMgPSBzZXRfbW92YWJsZV9vcHMoXHUwMDI2enNtYWxsb2NfbW9wcywgUEdUWV96c21hbGxvYyk7XG4tLVxubW0venNtYWxsb2MuYz0yMjU2PXN0YXRpYyB2b2lkIF9fZXhpdCB6c19leGl0KHZvaWQpXG5tbS96c21hbGxvYy5jLTIyNTcte1xubW0venNtYWxsb2MuYzoyMjU4OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yMjU5LVx0c2V0X21vdmFibGVfb3BzKE5VTEwsIFBHVFlfenNtYWxsb2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjcyCgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogNDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWVtb3J5IENvbXBhY3Rpb24gTG9naWMqKgoKT2theSwgc28gdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlIGlzIGBDT05GSUdfQ09NUEFDVElPTmAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY29tcGFjdGlvbl9mcmVlYCBpcyBpbmRlZWQgcmVhY2hhYmxlLCBhbmQgaXQgaXMuIEl0JiMzOTtzIGEgY2FsbGJhY2sgcGFzc2VkIHRvIGBtaWdyYXRlX3BhZ2VzYCB3aXRoaW4gYGNvbXBhY3Rfem9uZWAuIGBjb21wYWN0X3pvbmVgIGdldHMgY2FsbGVkIGZyb20gYGNvbXBhY3Rfem9uZV9vcmRlcmAsIGBrY29tcGFjdGRfZG9fd29ya2AsIG9yIGB0cnlfdG9fY29tcGFjdF9wYWdlc2AuIFRoaXMgaXMgZGVmaW5pdGVseSBpbiB0aGUgY29yZSBrZXJuZWwgbG9naWMsIG5vIGRvdWJ0IGFib3V0IGl0LgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSwgaXMgYENPTkZJR19DT01QQUNUSU9OYCB0aGUgb25seSByZWxldmFudCBjb25maWcgaGVyZT8gWWVzLCBpdCBhcHBlYXJzIHRvIGJlLgoKTGV0IG1lIHRha2UgYW5vdGhlciBsb29rIGF0IGBjb21wYWN0aW9uX2ZyZWVgLgoKYGBgYwpzdGF0aWMgdm9pZCBjb21wYWN0aW9uX2ZyZWUoc3RydWN0IGZvbGlvICpkc3QsIHVuc2lnbmVkIGxvbmcgZGF0YSkKewoJc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MgPSAoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqKWRhdGE7CglpbnQgb3JkZXIgPSBmb2xpb19vcmRlcihkc3QpOwoJc3RydWN0IHBhZ2UgKnBhZ2UgPSAmYW1wO2RzdC0mZ3Q7cGFnZTsKCglpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkgJmFtcDsmYW1wOyBmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpKSB7CgkJbGlzdF9hZGQoJmFtcDtkc3QtJmd0O2xydSwgJmFtcDtjYy0mZ3Q7ZnJlZXBhZ2VzW29yZGVyXSk7CgkJY2MtJmd0O25yX2ZyZWVwYWdlcyAmIzQzOz0gMSAmbHQ7Jmx0OyBvcmRlcjsKCX0KCWNjLSZndDtucl9taWdyYXRlcGFnZXMgJiM0Mzs9IDEgJmx0OyZsdDsgb3JkZXI7CgkvKgoJICogc29tZW9uZSBlbHNlIGhhcyByZWZlcmVuY2VkIHRoZSBwYWdlIG9yIGZyZWVfcGFnZXNfcHJlcGFyZSgpIGZhaWxzLAoJICogd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXIgZnJlZSBsaXN0LgoJICovCn0KYGBgCgpSaWdodCwgSSBzZWUgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGNvbXBhY3Rpb25fZnJlZWAgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBgZnJlZV9wYWdlc19wcmVwYXJlYCBiZWZvcmUgYWRkaW5nIHRoZSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgYGZyZWVfcGFnZXNfcHJlcGFyZWAgY291bGQgZmFpbCwgYnV0IHRoZSBwYWdlIHdhcyBzdGlsbCBhZGRlZCB0byB0aGUgZnJlZSBsaXN0LiBTbywgaXQmIzM5O3MgYSBjcml0aWNhbCBhZGp1c3RtZW50IGluIHRoZSBtZW1vcnkgY29tcGFjdGlvbiBwcm9jZXNzLgoKSSBuZWVkIHRvIGZvY3VzIG9uIGBjb21wYWN0aW9uX2ZyZWVgIGFzIHRoZSBwcmltYXJ5IHN5bWJvbCBoZXJlLiBgQ09ORklHX0NPTVBBQ1RJT05gIG5lZWRzIHRvIGJlIGVuYWJsZWQuIEkgdGhpbmsgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMsIGJ1dCBpdCBsb29rcyBsaWtlIGBjb21wYWN0aW9uX2ZyZWVgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIG1vZGlmaWVkLgoKVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IGNvbXBhY3Rpb24gbG9naWMuIEl0IGVuc3VyZXMgdGhhdCBvbmx5IHByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIGdldCBhZGRlZCB0byB0aGUgZnJlZSBsaXN0LgoKTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjb21wYWN0aW9uX2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjb21wYWN0aW9uX2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDoxMy44Mzc3NzcyMTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzU3OTczMzAzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY29tcGFjdGlvbl9mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjEzLjgzNzc4MzQ0MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4MjYzNTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmZjOGUwZjYzNjU4MGNiODBlMDMzYWNiM2EzNDk0MThlMDVjMzg4MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyMiAxNTo0MDoxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9jb21wYWN0aW9uLmMgYi9tbS9jb21wYWN0aW9uLmNcXG5pbmRleCBiNzc2ZjM1YWQwMjAwNy4uZjA4NzY1YWRlMDE0Y2UgMTAwNjQ0XFxuLS0tIGEvbW0vY29tcGFjdGlvbi5jXFxuKysrIGIvbW0vY29tcGFjdGlvbi5jXFxuQEAgLTE4NzUsMTUgKzE4NzUsMTQgQEAgc3RhdGljIHZvaWQgY29tcGFjdGlvbl9mcmVlKHN0cnVjdCBmb2xpbyAqZHN0LCB1bnNpZ25lZCBsb25nIGRhdGEpXFxuIFxcdGludCBvcmRlciA9IGZvbGlvX29yZGVyKGRzdCk7XFxuIFxcdHN0cnVjdCBwYWdlICpwYWdlID0gXFx1MDAyNmRzdC1cXHUwMDNlcGFnZTtcXG4gXFxuLVxcdGlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSkge1xcbi1cXHRcXHRmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpO1xcbitcXHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkgXFx1MDAyNlxcdTAwMjYgZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKSkge1xcbiBcXHRcXHRsaXN0X2FkZChcXHUwMDI2ZHN0LVxcdTAwM2VscnUsIFxcdTAwMjZjYy1cXHUwMDNlZnJlZXBhZ2VzW29yZGVyXSk7XFxuIFxcdFxcdGNjLVxcdTAwM2Vucl9mcmVlcGFnZXMgKz0gMSBcXHUwMDNjXFx1MDAzYyBvcmRlcjtcXG4gXFx0fVxcbiBcXHRjYy1cXHUwMDNlbnJfbWlncmF0ZXBhZ2VzICs9IDEgXFx1MDAzY1xcdTAwM2Mgb3JkZXI7XFxuIFxcdC8qXFxuLVxcdCAqIHNvbWVvbmUgZWxzZSBoYXMgcmVmZXJlbmNlZCB0aGUgcGFnZSwgd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXJcXG4tXFx0ICogZnJlZSBsaXN0LlxcbitcXHQgKiBzb21lb25lIGVsc2UgaGFzIHJlZmVyZW5jZWQgdGhlIHBhZ2Ugb3IgZnJlZV9wYWdlc19wcmVwYXJlKCkgZmFpbHMsXFxuK1xcdCAqIHdlIGNhbm5vdCB0YWtlIGl0IGJhY2sgdG8gb3VyIGZyZWUgbGlzdC5cXG4gXFx0ICovXFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjE0LjUyNjg1MDM2NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4OTA2NTEyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09NUEFDVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNvbXBhY3Rpb25fZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvbXBhY3Rpb25fZnJlZSB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIGZyZWVfcGFnZXNfcHJlcGFyZSBiZWZvcmUgYWRkaW5nIGEgcGFnZSB0byB0aGUgZnJlZSBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IGNvbXBhY3Rpb24gbG9naWMgdGhhdCBwcmV2ZW50cyBhZGRpbmcgaW1wcm9wZXJseSBwcmVwYXJlZCBwYWdlcyB0byB0aGUgZnJlZSBsaXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZmYzhlMGY2MzY1ODBjYjgwZTAzM2FjYjNhMzQ5NDE4ZTA1YzM4ODBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAxNTo0MDoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2NvbXBhY3Rpb24uYyBiL21tL2NvbXBhY3Rpb24uY1xuaW5kZXggYjc3NmYzNWFkMDIwMDcuLmYwODc2NWFkZTAxNGNlIDEwMDY0NFxuLS0tIGEvbW0vY29tcGFjdGlvbi5jXG4rKysgYi9tbS9jb21wYWN0aW9uLmNcbkBAIC0xODc1LDE1ICsxODc1LDE0IEBAIHN0YXRpYyB2b2lkIGNvbXBhY3Rpb25fZnJlZShzdHJ1Y3QgZm9saW8gKmRzdCwgdW5zaWduZWQgbG9uZyBkYXRhKVxuIFx0aW50IG9yZGVyID0gZm9saW9fb3JkZXIoZHN0KTtcbiBcdHN0cnVjdCBwYWdlICpwYWdlID0gXHUwMDI2ZHN0LVx1MDAzZXBhZ2U7XG4gXG4tXHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkpIHtcbi1cdFx0ZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKTtcbitcdGlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSBcdTAwMjZcdTAwMjYgZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKSkge1xuIFx0XHRsaXN0X2FkZChcdTAwMjZkc3QtXHUwMDNlbHJ1LCBcdTAwMjZjYy1cdTAwM2VmcmVlcGFnZXNbb3JkZXJdKTtcbiBcdFx0Y2MtXHUwMDNlbnJfZnJlZXBhZ2VzICs9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0fVxuIFx0Y2MtXHUwMDNlbnJfbWlncmF0ZXBhZ2VzICs9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0Lypcbi1cdCAqIHNvbWVvbmUgZWxzZSBoYXMgcmVmZXJlbmNlZCB0aGUgcGFnZSwgd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXJcbi1cdCAqIGZyZWUgbGlzdC5cbitcdCAqIHNvbWVvbmUgZWxzZSBoYXMgcmVmZXJlbmNlZCB0aGUgcGFnZSBvciBmcmVlX3BhZ2VzX3ByZXBhcmUoKSBmYWlscyxcbitcdCAqIHdlIGNhbm5vdCB0YWtlIGl0IGJhY2sgdG8gb3VyIGZyZWUgbGlzdC5cbiBcdCAqL1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjE0LjUyNjg1MjA2NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MTIyNDk5ODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIGBtbS9jb21wYWN0aW9uLmNgIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbW0vY29tcGFjdGlvbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIHRvIHRoZSBgY29tcGFjdGlvbl9mcmVlYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIG1vZGlmaWNhdGlvbiwgYnV0IHNvbWV0aGluZyBjYXRjaGVzIG15IGV5ZS4gVGhleSd2ZSBjaGFuZ2VkIHRoZSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgaGVyZS4gSXQgdXNlZCB0byBiZSBhIHNpbXBsZSBgZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdClgIGNhbGwuIE5vdywgaXQncyBjb21iaW5lZCB3aXRoIGEgY2FsbCB0byBgZnJlZV9wYWdlc19wcmVwYXJlYCwgYW5kIHRoZSBjb2RlIHJlbGllcyBvbiB0aGUgcmV0dXJuIHZhbHVlOlxuXG5gYGBjXG4tXHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkpIHtcbi1cdFx0ZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKTtcbitcdGlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSBcdTAwMjZcdTAwMjYgZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKSkge1xuIFx0XHRsaXN0X2FkZChcdTAwMjZkc3QtXHUwMDNlbHJ1LCBcdTAwMjZjYy1cdTAwM2VmcmVlcGFnZXNbb3JkZXJdKTtcbiBcdFx0Y2MtXHUwMDNlbnJfZnJlZXBhZ2VzICs9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0fVxuYGBgXG5cblRoZSBkaWZmZXJlbmNlIGlzLCBub3cgYGZyZWVfcGFnZXNfcHJlcGFyZWAgcmV0dXJucyBhIGJvb2xlYW4uIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGJvb2xlYW4gcmVwcmVzZW50cy4gSXMgaXQgYW4gaW5kaWNhdGlvbiBvZiBzdWNjZXNzLCBhIHBvdGVudGlhbCBmYWlsdXJlIHN0YXRlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBzaG91bGQga25vdyB0aGlzLCBidXQgSSdsbCBxdWlja2x5IGdyZXAgdGhlIGNvZGUgdG8gc2VlIHdoYXQgYGZyZWVfcGFnZXNfcHJlcGFyZWAncyBzaWduYXR1cmUgcmVhbGx5IGlzLiBJJ2xsIHNlYXJjaCBmb3IgaXQgbm93IHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIGVuc3VyZSB0aGVyZSdzIG5vIHN1YnRsZSBpbnRlcmFjdGlvbiBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzOSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjMxLjY0OTM1NDYxOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODEzNzIwMTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnJlZV9wYWdlc19wcmVwYXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9jb21wYWN0aW9uLmM9MTg3Mj1zdGF0aWMgdm9pZCBjb21wYWN0aW9uX2ZyZWUoc3RydWN0IGZvbGlvICpkc3QsIHVuc2lnbmVkIGxvbmcgZGF0YSlcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0xODc3LVxcbm1tL2NvbXBhY3Rpb24uYzoxODc4OlxcdGlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSBcXHUwMDI2XFx1MDAyNiBmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpKSB7XFxubW0vY29tcGFjdGlvbi5jLTE4NzktXFx0XFx0bGlzdF9hZGQoXFx1MDAyNmRzdC1cXHUwMDNlbHJ1LCBcXHUwMDI2Y2MtXFx1MDAzZWZyZWVwYWdlc1tvcmRlcl0pO1xcbi0tXFxubW0vY29tcGFjdGlvbi5jLTE4ODMtXFx0LypcXG5tbS9jb21wYWN0aW9uLmM6MTg4NDpcXHQgKiBzb21lb25lIGVsc2UgaGFzIHJlZmVyZW5jZWQgdGhlIHBhZ2Ugb3IgZnJlZV9wYWdlc19wcmVwYXJlKCkgZmFpbHMsXFxubW0vY29tcGFjdGlvbi5jLTE4ODUtXFx0ICogd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXIgZnJlZSBsaXN0Llxcbi0tXFxubW0vaW50ZXJuYWwuaD05MTA9dm9pZCBwb3N0X2FsbG9jX2hvb2soc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlciwgZ2ZwX3QgZ2ZwX2ZsYWdzKTtcXG5tbS9pbnRlcm5hbC5oOjkxMTpleHRlcm4gYm9vbCBmcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcik7XFxubW0vaW50ZXJuYWwuaC05MTItXFxuLS1cXG5tbS9rc20uYz05NDk9c3RhdGljIHN0cnVjdCBmb2xpbyAqa3NtX2dldF9mb2xpbyhzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSxcXG4tLVxcbm1tL2tzbS5jLTk4MS1cXHRcXHQgKiBzZWN0aW9uIG9mIF9fcmVtb3ZlX21hcHBpbmcoKTsgYnV0IGFub24gZm9saW8tXFx1MDAzZW1hcHBpbmdcXG5tbS9rc20uYzo5ODI6XFx0XFx0ICogaXMgcmVzZXQgdG8gTlVMTCBsYXRlciwgaW4gZnJlZV9wYWdlc19wcmVwYXJlKCkuXFxubW0va3NtLmMtOTgzLVxcdFxcdCAqL1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTYzPXR5cGVkZWYgaW50IF9fYml0d2lzZSBmcGlfdDtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy05Mi1cXG5tbS9wYWdlX2FsbG9jLmM6OTM6LyogZnJlZV9wYWdlc19wcmVwYXJlKCkgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9yIHBhZ2UocykgYmVpbmcgZnJlZWQuICovXFxubW0vcGFnZV9hbGxvYy5jLTk0LSNkZWZpbmUgRlBJX1BSRVBBUkVEXFx0XFx0KChfX2ZvcmNlIGZwaV90KUJJVCgzKSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMzA4PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2FsbG9jX3RhZ19zdWJfcGFnZXMoc3RydWN0IGFsbG9jX3RhZyAqdGFnLCB1bnNpZ25lZCBpbnQgbnIpIHt9XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTMxMS1cXG5tbS9wYWdlX2FsbG9jLmM6MTMxMjpzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgX19mcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsXFxubW0vcGFnZV9hbGxvYy5jLTEzMTMtXFx0XFx0dW5zaWduZWQgaW50IG9yZGVyLCBmcGlfdCBmcGlfZmxhZ3MpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTQ0OC1cXG5tbS9wYWdlX2FsbG9jLmM6MTQ0OTpib29sIGZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbm1tL3BhZ2VfYWxsb2MuYy0xNDUwLXtcXG5tbS9wYWdlX2FsbG9jLmM6MTQ1MTpcXHRyZXR1cm4gX19mcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIsIEZQSV9OT05FKTtcXG5tbS9wYWdlX2FsbG9jLmMtMTQ1Mi19XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9MTU3OD1zdGF0aWMgdm9pZCBfX2ZyZWVfcGFnZXNfb2soc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xNTgzLVxcbm1tL3BhZ2VfYWxsb2MuYzoxNTg0OlxcdGlmIChfX2ZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlciwgZnBpX2ZsYWdzKSlcXG5tbS9wYWdlX2FsbG9jLmMtMTU4NS1cXHRcXHRmcmVlX29uZV9wYWdlKHpvbmUsIHBhZ2UsIHBmbiwgb3JkZXIsIGZwaV9mbGFncyk7XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9MjkzNz1zdGF0aWMgdm9pZCBfX2ZyZWVfZnJvemVuX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMjk0OS1cXG5tbS9wYWdlX2FsbG9jLmM6Mjk1MDpcXHRpZiAoIV9fZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyLCBmcGlfZmxhZ3MpKVxcbm1tL3BhZ2VfYWxsb2MuYy0yOTUxLVxcdFxcdHJldHVybjtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0yOTk5PXZvaWQgZnJlZV91bnJlZl9mb2xpb3Moc3RydWN0IGZvbGlvX2JhdGNoICpmb2xpb3MpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMzAxMC1cXG5tbS9wYWdlX2FsbG9jLmM6MzAxMTpcXHRcXHRpZiAoIV9fZnJlZV9wYWdlc19wcmVwYXJlKFxcdTAwMjZmb2xpby1cXHUwMDNlcGFnZSwgb3JkZXIsIEZQSV9OT05FKSlcXG5tbS9wYWdlX2FsbG9jLmMtMzAxMi1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz02ODQ2PXN0YXRpYyB2b2lkIGZyZWVfcHJlcGFyZWRfY29udGlnX3JhbmdlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTY4NjEtXFx0XFx0ICogRnJlZSB0aGUgY2h1bmsgYXMgYSBzaW5nbGUgYmxvY2suIE91ciBjYWxsZXIgaGFzIGFscmVhZHlcXG5tbS9wYWdlX2FsbG9jLmM6Njg2MjpcXHRcXHQgKiBjYWxsZWQgZnJlZV9wYWdlc19wcmVwYXJlKCkgZm9yIGVhY2ggb3JkZXItMCBwYWdlLlxcbm1tL3BhZ2VfYWxsb2MuYy02ODYzLVxcdFxcdCAqL1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTY4NzI9c3RhdGljIHZvaWQgX19mcmVlX2NvbnRpZ19yYW5nZV9jb21tb24odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjg5Ni1cXHRcXHRpZiAoY2FuX2ZyZWUpXFxubW0vcGFnZV9hbGxvYy5jOjY4OTc6XFx0XFx0XFx0Y2FuX2ZyZWUgPSBmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgMCk7XFxubW0vcGFnZV9hbGxvYy5jLTY4OTgtXFxuLS1cXG5tbS9ybWFwLmM9MTc3Nj1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgX19mb2xpb19yZW1vdmVfcm1hcChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vcm1hcC5jLTE4NzgtXFx0ICogd2hpY2ggaW5jcmVtZW50cyBtYXBjb3VudCBhZnRlciB1cyBidXQgc2V0cyBtYXBwaW5nIGJlZm9yZSB1czpcXG5tbS9ybWFwLmM6MTg3OTpcXHQgKiBzbyBsZWF2ZSB0aGUgcmVzZXQgdG8gZnJlZV9wYWdlc19wcmVwYXJlLCBhbmQgcmVtZW1iZXIgdGhhdFxcbm1tL3JtYXAuYy0xODgwLVxcdCAqIGl0J3Mgb25seSByZWxpYWJsZSB3aGlsZSBtYXBwZWQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjMxLjkzMDczMjMyMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTE3NTE2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgY29tcGFjdGlvbl9mcmVlYCBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBUaGUga2V5IG1vZGlmaWNhdGlvbiBpcyB3aXRoaW4gYGNvbXBhY3Rpb25fZnJlZWAsIHNwZWNpZmljYWxseSBpbiBgbW0vY29tcGFjdGlvbi5jYC4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIGEgY2hlY2sgZm9yIHRoZSByZXR1cm4gdmFsdWUgb2YgYGZyZWVfcGFnZXNfcHJlcGFyZWAuIE5vdywgaW5zdGVhZCBvZiBibGluZGx5IGFkZGluZyB0aGUgcGFnZSB0byB0aGUgZnJlZSBsaXN0LCB0aGUgY29kZSB3aWxsIGV2YWx1YXRlIHdoYXQgYGZyZWVfcGFnZXNfcHJlcGFyZWAgcmV0dXJucy4gSWYgaXTigJlzIGBmYWxzZWAsIHRoZSBwYWdlIGlzbuKAmXQgYWRkZWQuIENsZWFybHksIHRoYXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbiBhdHRlbXB0IHRvIHByZXZlbnQgcGFnZSBpbnNlcnRpb24gdW5kZXIgc29tZSBjb25kaXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgY29uZGl0aW9uLlxuXG5UaGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgY29uZmlybSB0aGUgdXNhZ2Ugb2YgYGNvbXBhY3Rpb25fZnJlZWAgaW4gdGhlIGNvZGUsIHNvIHRoYXQgSSBjYW4gZmlndXJlIG91dCB3aHkgdGhlIGNvZGUgY2hhbmdlIHdvdWxkIGhhdmUgYmVlbiB1c2VmdWwuIEl0IGxvb2tzIGxpa2UgaXQgaXMgdXNlZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXQgdG8gaXRzIGNhbGwgc2l0ZXMgdG8gZnVsbHkgZ3Jhc3AgaXRzIGludGVuZGVkIGJlaGF2aW9yIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGNvbmRpdGlvbmFsLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHNjZW5hcmlvcyB3b3VsZCBsZWFkIHRvIGBmcmVlX3BhZ2VzX3ByZXBhcmVgIHJldHVybmluZyBgZmFsc2VgIGFuZCBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgYWZmZWN0IG1lbW9yeSBtYW5hZ2VtZW50IGR1cmluZyBjb21wYWN0aW9uLiBUaGVyZSdzIGEgY29udGV4dCBJJ20gbWlzc2luZyBhdCB0aGUgbW9tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzk5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjM2LjUyMjQ4NjMzNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ3OTUzODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29tcGFjdGlvbl9mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2NvbXBhY3Rpb24uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9jb21wYWN0aW9uLmM9MTg2Mj1zdGF0aWMgc3RydWN0IGZvbGlvICpjb21wYWN0aW9uX2FsbG9jKHN0cnVjdCBmb2xpbyAqc3JjLCB1bnNpZ25lZCBsb25nIGRhdGEpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTg3MS0gKi9cXG5tbS9jb21wYWN0aW9uLmM6MTg3MjpzdGF0aWMgdm9pZCBjb21wYWN0aW9uX2ZyZWUoc3RydWN0IGZvbGlvICpkc3QsIHVuc2lnbmVkIGxvbmcgZGF0YSlcXG5tbS9jb21wYWN0aW9uLmMtMTg3My17XFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9MjUzMj1jb21wYWN0X3pvbmUoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHN0cnVjdCBjYXB0dXJlX2NvbnRyb2wgKmNhcGMpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMjY2OC1cXHRcXHRlcnIgPSBtaWdyYXRlX3BhZ2VzKFxcdTAwMjZjYy1cXHUwMDNlbWlncmF0ZXBhZ2VzLCBjb21wYWN0aW9uX2FsbG9jLFxcbm1tL2NvbXBhY3Rpb24uYzoyNjY5OlxcdFxcdFxcdFxcdGNvbXBhY3Rpb25fZnJlZSwgKHVuc2lnbmVkIGxvbmcpY2MsIGNjLVxcdTAwM2Vtb2RlLFxcbm1tL2NvbXBhY3Rpb24uYy0yNjcwLVxcdFxcdFxcdFxcdE1SX0NPTVBBQ1RJT04sIFxcdTAwMjZucl9zdWNjZWVkZWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDozNi42ODcyODY5NjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTMzMzk0Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgS2VybmVsIE1lbW9yeSBDb21wYWN0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgY29tcGFjdGlvbl9mcmVlYCBpcyBpbmRlZWQgYmVpbmcgcGFzc2VkIHRvIGBtaWdyYXRlX3BhZ2VzYCB3aXRoaW4gYGNvbXBhY3Rfem9uZWAuIFRoYXQncyBhIGtleSBwb2ludCDigJMgdGhhdCdzIHNvbWUgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBtZW1vcnkgY29tcGFjdGlvbiwgdGhlIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSB0aGF0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBmb2N1cyBteSBlZmZvcnRzIG9uIHRoYXQgcGF0aC4gVGhlIHNwZWNpZmljIHN5bWJvbCBJIHNob3VsZCBiZSB6ZXJvaW5nIGluIG9uIGlzIGBjb21wYWN0aW9uX2ZyZWVgLCBvYnZpb3VzbHkuIE5vdywgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19DT01QQUNUSU9OYCBpcyBlbmFibGVkLCBhbmQgbWF5YmUgZ28gbG9vayBhdCBgbW0vTWFrZWZpbGVgIG9yIGBtbS9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgYGNvbXBhY3Rpb24uY2AgaXMgdGhlIHJpZ2h0IGZpbGUuIEknbSBidWlsZGluZyBhIGZ1enppbmcgY2FtcGFpZ24gYXJvdW5kIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MDEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDo0MC4yMjA2ODM1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY2Mzk5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29tcGFjdGlvblxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT01MT1vYmoteVxcdFxcdFxcdDo9IGZpbGVtYXAubyBtZW1wb29sLm8gb29tX2tpbGwubyBmYWR2aXNlLm8gXFxcXFxcbi0tXFxubW0vTWFrZWZpbGUtNTUtXFx0XFx0XFx0ICAgbW1faW5pdC5vIHBlcmNwdS5vIHNsYWJfY29tbW9uLm8gXFxcXFxcbm1tL01ha2VmaWxlOjU2OlxcdFxcdFxcdCAgIGNvbXBhY3Rpb24ubyBzaG93X21lbS5vIFxcXFxcXG5tbS9NYWtlZmlsZS01Ny1cXHRcXHRcXHQgICBpbnRlcnZhbF90cmVlLm8gbGlzdF9scnUubyB3b3JraW5nc2V0Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDo0MC4zMjczMzEyMTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU3NDQ4ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZvciBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgY29tcGFjdGlvbi5vYCBpbiB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgTWFrZWZpbGUqKlxuXG5SaWdodCwgYGNvbXBhY3Rpb24ub2AgaXMgc2l0dGluZyB0aGVyZSwgbGlzdGVkIGluIGBvYmoteWAgd2l0aGluIHRoZSBgbW0vTWFrZWZpbGVgLiBUaGF0IHBsYWNlbWVudCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIEJ1dCBiZWZvcmUgSSBtYWtlIGFueSBhc3N1bXB0aW9ucywgbXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGNvbmZpcm0gaWYgaXQncyB1bmNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIEkgbmVlZCB0byBydWxlIG91dCB0aGUgcG9zc2liaWxpdHkgb2YgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgb3IgYCNpZmRlZmAgYmxvY2tzIHRoYXQgbWlnaHQgZ2F0ZSBpdHMgaW5jbHVzaW9uIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24gZmxhZ3MuIExldCdzIGRpZyBkZWVwZXIgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYWx3YXlzIGluY2x1ZGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzg5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTU6NDA6NDMuMzg0NzgzODM3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY1MzQzOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0NPTVBBQ1RJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2NvbXBhY3Rpb24uYy0yOC1cXG5tbS9jb21wYWN0aW9uLmM6Mjk6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vY29tcGFjdGlvbi5jLTMwLS8qXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9NTk9c3RhdGljIGlubGluZSBib29sIGlzX3ZpYV9jb21wYWN0X21lbW9yeShpbnQgb3JkZXIpIHsgcmV0dXJuIGZhbHNlOyB9XFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtNjEtXFxubW0vY29tcGFjdGlvbi5jOjYyOiNpZiBkZWZpbmVkIENPTkZJR19DT01QQUNUSU9OIHx8IGRlZmluZWQgQ09ORklHX0NNQVxcbm1tL2NvbXBhY3Rpb24uYy02My1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz05MT1zdGF0aWMgdW5zaWduZWQgbG9uZyByZWxlYXNlX2ZyZWVfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmcmVlcGFnZXMpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTE1LVxcbm1tL2NvbXBhY3Rpb24uYzoxMTY6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vY29tcGFjdGlvbi5jLTExNy1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz00OTA9c3RhdGljIGJvb2wgdGVzdF9hbmRfc2V0X3NraXAoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxubW0vY29tcGFjdGlvbi5jLTQ5My19XFxubW0vY29tcGFjdGlvbi5jOjQ5NDojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5tbS9jb21wYWN0aW9uLmMtNDk1LVxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTEzMzc9aXNvbGF0ZV9taWdyYXRlcGFnZXNfcmFuZ2Uoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxcbi0tXFxubW0vY29tcGFjdGlvbi5jLTEzNzItXFxubW0vY29tcGFjdGlvbi5jOjEzNzM6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OIHx8IENPTkZJR19DTUEgKi9cXG5tbS9jb21wYWN0aW9uLmM6MTM3NDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS9jb21wYWN0aW9uLmMtMTM3NS1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz0zMzUzPXN1YnN5c19pbml0Y2FsbChrY29tcGFjdGRfaW5pdClcXG5tbS9jb21wYWN0aW9uLmMtMzM1NC1cXG5tbS9jb21wYWN0aW9uLmM6MzM1NTojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG4tLVxcbm1tL2ludGVybmFsLmg9OTk5PXN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdF9zdWJzZWN0aW9uX21hcCh1bnNpZ25lZCBsb25nIHBmbixcXG4tLVxcbm1tL2ludGVybmFsLmgtMTAwNC1cXG5tbS9pbnRlcm5hbC5oOjEwMDU6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXFxubW0vaW50ZXJuYWwuaC0xMDA2LVxcbi0tXFxubW0vaW50ZXJuYWwuaD0xMDc0PXZvaWQgaW5pdF9jbWFfcmVzZXJ2ZWRfcGFnZWJsb2NrKHN0cnVjdCBwYWdlICpwYWdlKTtcXG5tbS9pbnRlcm5hbC5oLTEwNzUtXFxubW0vaW50ZXJuYWwuaDoxMDc2OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiB8fCBDT05GSUdfQ01BICovXFxubW0vaW50ZXJuYWwuaC0xMDc3LVxcbi0tXFxubW0vbW1faW5pdC5jPTEzMzM9c3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCxcXG4tLVxcbm1tL21tX2luaXQuYy0xMzc1LVxcbm1tL21tX2luaXQuYzoxMzc2OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL21tX2luaXQuYy0xMzc3LXN0YXRpYyB2b2lkIHBnZGF0X2luaXRfa2NvbXBhY3RkKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXFxuLS1cXG5tbS9vb21fa2lsbC5jPTQ1Nj1zdGF0aWMgdm9pZCBkdW1wX2hlYWRlcihzdHJ1Y3Qgb29tX2NvbnRyb2wgKm9jKVxcbi0tXFxubW0vb29tX2tpbGwuYy00NjAtXFx0XFx0XFx0Y3VycmVudC1cXHUwMDNlc2lnbmFsLVxcdTAwM2Vvb21fc2NvcmVfYWRqKTtcXG5tbS9vb21fa2lsbC5jOjQ2MTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTVBBQ1RJT04pIFxcdTAwMjZcXHUwMDI2IG9jLVxcdTAwM2VvcmRlcilcXG5tbS9vb21fa2lsbC5jLTQ2Mi1cXHRcXHRwcl93YXJuKFxcXCJDT01QQUNUSU9OIGlzIGRpc2FibGVkISEhXFxcXG5cXFwiKTtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz03MTA9c3RhdGljIGlubGluZSB2b2lkIHNldF9idWRkeV9vcmRlcihzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTcxNS1cXG5tbS9wYWdlX2FsbG9jLmM6NzE2OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3BhZ2VfYWxsb2MuYy03MTctc3RhdGljIGlubGluZSBzdHJ1Y3QgY2FwdHVyZV9jb250cm9sICp0YXNrX2NhcGMoc3RydWN0IHpvbmUgKnpvbmUpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NzY1PWNvbXBhY3Rpb25fY2FwdHVyZShzdHJ1Y3QgY2FwdHVyZV9jb250cm9sICpjYXBjLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy03NjktfVxcbm1tL3BhZ2VfYWxsb2MuYzo3NzA6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OICovXFxubW0vcGFnZV9hbGxvYy5jLTc3MS1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz00MDQ3PV9fYWxsb2NfcGFnZXNfbWF5X29vbShnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQxMzgtXFxubW0vcGFnZV9hbGxvYy5jOjQxMzk6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vcGFnZV9hbGxvYy5jLTQxNDAtLyogVHJ5IG1lbW9yeSBjb21wYWN0aW9uIGZvciBoaWdoLW9yZGVyIGFsbG9jYXRpb25zIGJlZm9yZSByZWNsYWltICovXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NDI3OT1zaG91bGRfY29tcGFjdF9yZXRyeShnZnBfdCBnZnBfbWFzaywgc3RydWN0IGFsbG9jX2NvbnRleHQgKmFjLCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNDMwNC19XFxubW0vcGFnZV9hbGxvYy5jOjQzMDU6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OICovXFxubW0vcGFnZV9hbGxvYy5jLTQzMDYtXFxuLS1cXG5tbS92bXNjYW4uYz02MzMxPXN0YXRpYyB2b2lkIHNocmlua196b25lcyhzdHJ1Y3Qgem9uZWxpc3QgKnpvbmVsaXN0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTYzNzEtXFx0XFx0XFx0ICovXFxubW0vdm1zY2FuLmM6NjM3MjpcXHRcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQ09NUEFDVElPTikgXFx1MDAyNlxcdTAwMjZcXG5tbS92bXNjYW4uYy02MzczLVxcdFxcdFxcdCAgICBzYy1cXHUwMDNlb3JkZXIgXFx1MDAzZSBQQUdFX0FMTE9DX0NPU1RMWV9PUkRFUiBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubW0vdm1zdGF0LmM9MTA0Mj12b2lkIG1lbW1hcF9wYWdlc19hZGQobG9uZyBkZWx0YSlcXG4tLVxcbm1tL3Ztc3RhdC5jLTEwNDYtXFxubW0vdm1zdGF0LmM6MTA0NzojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS92bXN0YXQuYy0xMDQ4LVxcbi0tXFxubW0vdm1zdGF0LmM9MTE4Nz1jb25zdCBjaGFyICogY29uc3Qgdm1zdGF0X3RleHRbXSA9IHtcXG4tLVxcbm1tL3Ztc3RhdC5jLTEzNzAtI2VuZGlmXFxubW0vdm1zdGF0LmM6MTM3MTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS92bXN0YXQuYy0xMzcyLVxcdFtJKENPTVBBQ1RNSUdSQVRFX1NDQU5ORUQpXVxcdFxcdD0gXFxcImNvbXBhY3RfbWlncmF0ZV9zY2FubmVkXFxcIixcXG4tLVxcbm1tL3Ztc3RhdC5jLTE0OTYtXFxubW0vdm1zdGF0LmM6MTQ5NzojaWYgKGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19DT01QQUNUSU9OKSkgfHwgXFxcXFxcbm1tL3Ztc3RhdC5jLTE0OTgtICAgICBkZWZpbmVkKENPTkZJR19QUk9DX0ZTKVxcbi0tXFxubW0vdm1zdGF0LmM9MjI2OD12b2lkIF9faW5pdCBpbml0X21tX2ludGVybmFscyh2b2lkKVxcbi0tXFxubW0vdm1zdGF0LmMtMjMwMS1cXG5tbS92bXN0YXQuYzoyMzAyOiNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQ09NUEFDVElPTilcXG5tbS92bXN0YXQuYy0yMzAzLVxcbi0tXFxubW0venNtYWxsb2MuYz0xOTk9c3RydWN0IHpzX3Bvb2wge1xcbi0tXFxubW0venNtYWxsb2MuYy0yMTMtI2VuZGlmXFxubW0venNtYWxsb2MuYzoyMTQ6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0yMTUtXFx0c3RydWN0IHdvcmtfc3RydWN0IGZyZWVfd29yaztcXG4tLVxcbm1tL3pzbWFsbG9jLmM9MzYwPXN0YXRpYyBib29sIFpzSHVnZVBhZ2Uoc3RydWN0IHpzcGFnZSAqenNwYWdlKVxcbi0tXFxubW0venNtYWxsb2MuYy0zNjQtXFxubW0venNtYWxsb2MuYzozNjU6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0zNjYtc3RhdGljIHZvaWQga2lja19kZWZlcnJlZF9mcmVlKHN0cnVjdCB6c19wb29sICpwb29sKTtcXG4tLVxcbm1tL3pzbWFsbG9jLmM9OTMxPXN0YXRpYyBzdHJ1Y3QgenNwYWdlICphbGxvY196c3BhZ2Uoc3RydWN0IHpzX3Bvb2wgKnBvb2wsXFxuLS1cXG5tbS96c21hbGxvYy5jLTk0MS1cXG5tbS96c21hbGxvYy5jOjk0MjpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTVBBQ1RJT04pKVxcbm1tL3pzbWFsbG9jLmMtOTQzLVxcdFxcdGdmcCBcXHUwMDI2PSB+X19HRlBfTU9WQUJMRTtcXG4tLVxcbm1tL3pzbWFsbG9jLmM9MTU5ND1zdGF0aWMgaW50IHB1dGJhY2tfenNwYWdlKHN0cnVjdCBzaXplX2NsYXNzICpjbGFzcywgc3RydWN0IHpzcGFnZSAqenNwYWdlKVxcbi0tXFxubW0venNtYWxsb2MuYy0xNjAzLVxcbm1tL3pzbWFsbG9jLmM6MTYwNDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTE2MDUtLypcXG4tLVxcbm1tL3pzbWFsbG9jLmM9MTYwOT1zdGF0aWMgdm9pZCBsb2NrX3pzcGFnZShzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpXFxuLS1cXG5tbS96c21hbGxvYy5jLTE2NDUtfVxcbm1tL3pzbWFsbG9jLmM6MTY0NjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5tbS96c21hbGxvYy5jLTE2NDctXFxubW0venNtYWxsb2MuYzoxNjQ4OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3pzbWFsbG9jLmMtMTY0OS1cXG4tLVxcbm1tL3pzbWFsbG9jLmM9MjIzNz1zdGF0aWMgaW50IF9faW5pdCB6c19pbml0KHZvaWQpXFxuLS1cXG5tbS96c21hbGxvYy5jLTIyNDQtXFxubW0venNtYWxsb2MuYzoyMjQ1OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3pzbWFsbG9jLmMtMjI0Ni1cXHRyYyA9IHNldF9tb3ZhYmxlX29wcyhcXHUwMDI2enNtYWxsb2NfbW9wcywgUEdUWV96c21hbGxvYyk7XFxuLS1cXG5tbS96c21hbGxvYy5jPTIyNTY9c3RhdGljIHZvaWQgX19leGl0IHpzX2V4aXQodm9pZClcXG5tbS96c21hbGxvYy5jLTIyNTcte1xcbm1tL3pzbWFsbG9jLmM6MjI1ODojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTIyNTktXFx0c2V0X21vdmFibGVfb3BzKE5VTEwsIFBHVFlfenNtYWxsb2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDo0My41MzEzMjk4ODNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY4MTEyNTc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1lbW9yeSBDb21wYWN0aW9uIExvZ2ljKipcblxuT2theSwgc28gdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlIGlzIGBDT05GSUdfQ09NUEFDVElPTmAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY29tcGFjdGlvbl9mcmVlYCBpcyBpbmRlZWQgcmVhY2hhYmxlLCBhbmQgaXQgaXMuIEl0J3MgYSBjYWxsYmFjayBwYXNzZWQgdG8gYG1pZ3JhdGVfcGFnZXNgIHdpdGhpbiBgY29tcGFjdF96b25lYC4gYGNvbXBhY3Rfem9uZWAgZ2V0cyBjYWxsZWQgZnJvbSBgY29tcGFjdF96b25lX29yZGVyYCwgYGtjb21wYWN0ZF9kb193b3JrYCwgb3IgYHRyeV90b19jb21wYWN0X3BhZ2VzYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYywgbm8gZG91YnQgYWJvdXQgaXQuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSwgaXMgYENPTkZJR19DT01QQUNUSU9OYCB0aGUgb25seSByZWxldmFudCBjb25maWcgaGVyZT8gWWVzLCBpdCBhcHBlYXJzIHRvIGJlLlxuXG5MZXQgbWUgdGFrZSBhbm90aGVyIGxvb2sgYXQgYGNvbXBhY3Rpb25fZnJlZWAuXG5cbmBgYGNcbnN0YXRpYyB2b2lkIGNvbXBhY3Rpb25fZnJlZShzdHJ1Y3QgZm9saW8gKmRzdCwgdW5zaWduZWQgbG9uZyBkYXRhKVxue1xuXHRzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYyA9IChzdHJ1Y3QgY29tcGFjdF9jb250cm9sICopZGF0YTtcblx0aW50IG9yZGVyID0gZm9saW9fb3JkZXIoZHN0KTtcblx0c3RydWN0IHBhZ2UgKnBhZ2UgPSBcdTAwMjZkc3QtXHUwMDNlcGFnZTtcblxuXHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkgXHUwMDI2XHUwMDI2IGZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlcikpIHtcblx0XHRsaXN0X2FkZChcdTAwMjZkc3QtXHUwMDNlbHJ1LCBcdTAwMjZjYy1cdTAwM2VmcmVlcGFnZXNbb3JkZXJdKTtcblx0XHRjYy1cdTAwM2Vucl9mcmVlcGFnZXMgKz0gMSBcdTAwM2NcdTAwM2Mgb3JkZXI7XG5cdH1cblx0Y2MtXHUwMDNlbnJfbWlncmF0ZXBhZ2VzICs9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuXHQvKlxuXHQgKiBzb21lb25lIGVsc2UgaGFzIHJlZmVyZW5jZWQgdGhlIHBhZ2Ugb3IgZnJlZV9wYWdlc19wcmVwYXJlKCkgZmFpbHMsXG5cdCAqIHdlIGNhbm5vdCB0YWtlIGl0IGJhY2sgdG8gb3VyIGZyZWUgbGlzdC5cblx0ICovXG59XG5gYGBcblxuUmlnaHQsIEkgc2VlIHRoZSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIHBhdGNoIG1vZGlmaWVzIGBjb21wYWN0aW9uX2ZyZWVgIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgYGZyZWVfcGFnZXNfcHJlcGFyZWAgYmVmb3JlIGFkZGluZyB0aGUgcGFnZSB0byB0aGUgZnJlZSBsaXN0LiBUaGlzIGZpeGVzIGEgYnVnIHdoZXJlIGBmcmVlX3BhZ2VzX3ByZXBhcmVgIGNvdWxkIGZhaWwsIGJ1dCB0aGUgcGFnZSB3YXMgc3RpbGwgYWRkZWQgdG8gdGhlIGZyZWUgbGlzdC4gU28sIGl0J3MgYSBjcml0aWNhbCBhZGp1c3RtZW50IGluIHRoZSBtZW1vcnkgY29tcGFjdGlvbiBwcm9jZXNzLlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gYGNvbXBhY3Rpb25fZnJlZWAgYXMgdGhlIHByaW1hcnkgc3ltYm9sIGhlcmUuIGBDT05GSUdfQ09NUEFDVElPTmAgbmVlZHMgdG8gYmUgZW5hYmxlZC4gSSB0aGluayB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGNoZWNrIGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMsIGJ1dCBpdCBsb29rcyBsaWtlIGBjb21wYWN0aW9uX2ZyZWVgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIG1vZGlmaWVkLlxuXG5UaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYy4gSXQgZW5zdXJlcyB0aGF0IG9ubHkgcHJvcGVybHkgcHJlcGFyZWQgcGFnZXMgZ2V0IGFkZGVkIHRvIHRoZSBmcmVlIGxpc3QuXG5cbkxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI3MiwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDo1MS4yMTI0NTcwOTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDUwMzk1MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPTVBBQ1RJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjb21wYWN0aW9uX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb21wYWN0aW9uX2ZyZWUgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBmcmVlX3BhZ2VzX3ByZXBhcmUgYmVmb3JlIGFkZGluZyBhIHBhZ2UgdG8gdGhlIGZyZWUgbGlzdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBjb21wYWN0aW9uIGxvZ2ljIHRoYXQgcHJldmVudHMgYWRkaW5nIGltcHJvcGVybHkgcHJlcGFyZWQgcGFnZXMgdG8gdGhlIGZyZWUgbGlzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY29tcGFjdGlvbl9mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowspzrp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 15:33:10 +0000 UTC FinishedAt: 2026-06-22 15:40:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "13a1e1a618858407fa12c391f664ea750651f6b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "13a1e1a618858407fa12c391f664ea750651f6b2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "COMPACTION" ], "series_id": "537b3cd2-79ca-474c-b210-079f6da86a1b" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "compaction_free" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE1OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjb21wYWN0aW9uX2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmZmM4ZTBmNjM2NTgwY2I4MGUwMzNhY2IzYTM0OTQxOGUwNWMzODgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMTU6NDA6MTIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vY29tcGFjdGlvbi5jIGIvbW0vY29tcGFjdGlvbi5jXG5pbmRleCBiNzc2ZjM1YWQwMjAwNy4uZjA4NzY1YWRlMDE0Y2UgMTAwNjQ0XG4tLS0gYS9tbS9jb21wYWN0aW9uLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2NvbXBhY3Rpb24uY1xuQEAgLTE4NzUsMTUgJiM0MzsxODc1LDE0IEBAIHN0YXRpYyB2b2lkIGNvbXBhY3Rpb25fZnJlZShzdHJ1Y3QgZm9saW8gKmRzdCwgdW5zaWduZWQgbG9uZyBkYXRhKVxuIFx0aW50IG9yZGVyID0gZm9saW9fb3JkZXIoZHN0KTtcbiBcdHN0cnVjdCBwYWdlICpwYWdlID0gXHUwMDI2ZHN0LVx1MDAzZXBhZ2U7XG4gXG4tXHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkpIHtcbi1cdFx0ZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKTtcbiYjNDM7XHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkgXHUwMDI2XHUwMDI2IGZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlcikpIHtcbiBcdFx0bGlzdF9hZGQoXHUwMDI2ZHN0LVx1MDAzZWxydSwgXHUwMDI2Y2MtXHUwMDNlZnJlZXBhZ2VzW29yZGVyXSk7XG4gXHRcdGNjLVx1MDAzZW5yX2ZyZWVwYWdlcyAmIzQzOz0gMSBcdTAwM2NcdTAwM2Mgb3JkZXI7XG4gXHR9XG4gXHRjYy1cdTAwM2Vucl9taWdyYXRlcGFnZXMgJiM0Mzs9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0Lypcbi1cdCAqIHNvbWVvbmUgZWxzZSBoYXMgcmVmZXJlbmNlZCB0aGUgcGFnZSwgd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXJcbi1cdCAqIGZyZWUgbGlzdC5cbiYjNDM7XHQgKiBzb21lb25lIGVsc2UgaGFzIHJlZmVyZW5jZWQgdGhlIHBhZ2Ugb3IgZnJlZV9wYWdlc19wcmVwYXJlKCkgZmFpbHMsXG4mIzQzO1x0ICogd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXIgZnJlZSBsaXN0LlxuIFx0ICovXG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE1OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjb21wYWN0aW9uX2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZmYzhlMGY2MzY1ODBjYjgwZTAzM2FjYjNhMzQ5NDE4ZTA1YzM4ODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1biAyMiAxNTo0MDoxMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2NvbXBhY3Rpb24uYyBiL21tL2NvbXBhY3Rpb24uYwppbmRleCBiNzc2ZjM1YWQwMjAwNy4uZjA4NzY1YWRlMDE0Y2UgMTAwNjQ0Ci0tLSBhL21tL2NvbXBhY3Rpb24uYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9jb21wYWN0aW9uLmMKQEAgLTE4NzUsMTUgJiM0MzsxODc1LDE0IEBAIHN0YXRpYyB2b2lkIGNvbXBhY3Rpb25fZnJlZShzdHJ1Y3QgZm9saW8gKmRzdCwgdW5zaWduZWQgbG9uZyBkYXRhKQogCWludCBvcmRlciA9IGZvbGlvX29yZGVyKGRzdCk7CiAJc3RydWN0IHBhZ2UgKnBhZ2UgPSAmYW1wO2RzdC0mZ3Q7cGFnZTsKIAotCWlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSkgewotCQlmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpOwomIzQzOwlpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkgJmFtcDsmYW1wOyBmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpKSB7CiAJCWxpc3RfYWRkKCZhbXA7ZHN0LSZndDtscnUsICZhbXA7Y2MtJmd0O2ZyZWVwYWdlc1tvcmRlcl0pOwogCQljYy0mZ3Q7bnJfZnJlZXBhZ2VzICYjNDM7PSAxICZsdDsmbHQ7IG9yZGVyOwogCX0KIAljYy0mZ3Q7bnJfbWlncmF0ZXBhZ2VzICYjNDM7PSAxICZsdDsmbHQ7IG9yZGVyOwogCS8qCi0JICogc29tZW9uZSBlbHNlIGhhcyByZWZlcmVuY2VkIHRoZSBwYWdlLCB3ZSBjYW5ub3QgdGFrZSBpdCBiYWNrIHRvIG91cgotCSAqIGZyZWUgbGlzdC4KJiM0MzsJICogc29tZW9uZSBlbHNlIGhhcyByZWZlcmVuY2VkIHRoZSBwYWdlIG9yIGZyZWVfcGFnZXNfcHJlcGFyZSgpIGZhaWxzLAomIzQzOwkgKiB3ZSBjYW5ub3QgdGFrZSBpdCBiYWNrIHRvIG91ciBmcmVlIGxpc3QuCiAJICovCiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzOQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBgbW0vY29tcGFjdGlvbi5jYCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbW0vY29tcGFjdGlvbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIHRvIHRoZSBgY29tcGFjdGlvbl9mcmVlYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIG1vZGlmaWNhdGlvbiwgYnV0IHNvbWV0aGluZyBjYXRjaGVzIG15IGV5ZS4gVGhleSYjMzk7dmUgY2hhbmdlZCB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50IGhlcmUuIEl0IHVzZWQgdG8gYmUgYSBzaW1wbGUgYGZvbGlvX3B1dF90ZXN0emVybyhkc3QpYCBjYWxsLiBOb3csIGl0JiMzOTtzIGNvbWJpbmVkIHdpdGggYSBjYWxsIHRvIGBmcmVlX3BhZ2VzX3ByZXBhcmVgLCBhbmQgdGhlIGNvZGUgcmVsaWVzIG9uIHRoZSByZXR1cm4gdmFsdWU6CgpgYGBjCi0JaWYgKGZvbGlvX3B1dF90ZXN0emVybyhkc3QpKSB7Ci0JCWZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlcik7CiYjNDM7CWlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSAmYW1wOyZhbXA7IGZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlcikpIHsKIAkJbGlzdF9hZGQoJmFtcDtkc3QtJmd0O2xydSwgJmFtcDtjYy0mZ3Q7ZnJlZXBhZ2VzW29yZGVyXSk7CiAJCWNjLSZndDtucl9mcmVlcGFnZXMgJiM0Mzs9IDEgJmx0OyZsdDsgb3JkZXI7CiAJfQpgYGAKClRoZSBkaWZmZXJlbmNlIGlzLCBub3cgYGZyZWVfcGFnZXNfcHJlcGFyZWAgcmV0dXJucyBhIGJvb2xlYW4uIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGJvb2xlYW4gcmVwcmVzZW50cy4gSXMgaXQgYW4gaW5kaWNhdGlvbiBvZiBzdWNjZXNzLCBhIHBvdGVudGlhbCBmYWlsdXJlIHN0YXRlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBzaG91bGQga25vdyB0aGlzLCBidXQgSSYjMzk7bGwgcXVpY2tseSBncmVwIHRoZSBjb2RlIHRvIHNlZSB3aGF0IGBmcmVlX3BhZ2VzX3ByZXBhcmVgJiMzOTtzIHNpZ25hdHVyZSByZWFsbHkgaXMuIEkmIzM5O2xsIHNlYXJjaCBmb3IgaXQgbm93IHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIGVuc3VyZSB0aGVyZSYjMzk7cyBubyBzdWJ0bGUgaW50ZXJhY3Rpb24gSSYjMzk7bSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZyZWVfcGFnZXNfcHJlcGFyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9jb21wYWN0aW9uLmM9MTg3Mj1zdGF0aWMgdm9pZCBjb21wYWN0aW9uX2ZyZWUoc3RydWN0IGZvbGlvICpkc3QsIHVuc2lnbmVkIGxvbmcgZGF0YSlcbi0tXG5tbS9jb21wYWN0aW9uLmMtMTg3Ny1cbm1tL2NvbXBhY3Rpb24uYzoxODc4Olx0aWYgKGZvbGlvX3B1dF90ZXN0emVybyhkc3QpIFx1MDAyNlx1MDAyNiBmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpKSB7XG5tbS9jb21wYWN0aW9uLmMtMTg3OS1cdFx0bGlzdF9hZGQoXHUwMDI2ZHN0LVx1MDAzZWxydSwgXHUwMDI2Y2MtXHUwMDNlZnJlZXBhZ2VzW29yZGVyXSk7XG4tLVxubW0vY29tcGFjdGlvbi5jLTE4ODMtXHQvKlxubW0vY29tcGFjdGlvbi5jOjE4ODQ6XHQgKiBzb21lb25lIGVsc2UgaGFzIHJlZmVyZW5jZWQgdGhlIHBhZ2Ugb3IgZnJlZV9wYWdlc19wcmVwYXJlKCkgZmFpbHMsXG5tbS9jb21wYWN0aW9uLmMtMTg4NS1cdCAqIHdlIGNhbm5vdCB0YWtlIGl0IGJhY2sgdG8gb3VyIGZyZWUgbGlzdC5cbi0tXG5tbS9pbnRlcm5hbC5oPTkxMD12b2lkIHBvc3RfYWxsb2NfaG9vayhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyLCBnZnBfdCBnZnBfZmxhZ3MpO1xubW0vaW50ZXJuYWwuaDo5MTE6ZXh0ZXJuIGJvb2wgZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpO1xubW0vaW50ZXJuYWwuaC05MTItXG4tLVxubW0va3NtLmM9OTQ5PXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmtzbV9nZXRfZm9saW8oc3RydWN0IGtzbV9zdGFibGVfbm9kZSAqc3RhYmxlX25vZGUsXG4tLVxubW0va3NtLmMtOTgxLVx0XHQgKiBzZWN0aW9uIG9mIF9fcmVtb3ZlX21hcHBpbmcoKTsgYnV0IGFub24gZm9saW8tXHUwMDNlbWFwcGluZ1xubW0va3NtLmM6OTgyOlx0XHQgKiBpcyByZXNldCB0byBOVUxMIGxhdGVyLCBpbiBmcmVlX3BhZ2VzX3ByZXBhcmUoKS5cbm1tL2tzbS5jLTk4My1cdFx0ICovXG4tLVxubW0vcGFnZV9hbGxvYy5jPTYzPXR5cGVkZWYgaW50IF9fYml0d2lzZSBmcGlfdDtcbi0tXG5tbS9wYWdlX2FsbG9jLmMtOTItXG5tbS9wYWdlX2FsbG9jLmM6OTM6LyogZnJlZV9wYWdlc19wcmVwYXJlKCkgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9yIHBhZ2UocykgYmVpbmcgZnJlZWQuICovXG5tbS9wYWdlX2FsbG9jLmMtOTQtI2RlZmluZSBGUElfUFJFUEFSRURcdFx0KChfX2ZvcmNlIGZwaV90KUJJVCgzKSlcbi0tXG5tbS9wYWdlX2FsbG9jLmM9MTMwOD1zdGF0aWMgaW5saW5lIHZvaWQgcGdhbGxvY190YWdfc3ViX3BhZ2VzKHN0cnVjdCBhbGxvY190YWcgKnRhZywgdW5zaWduZWQgaW50IG5yKSB7fVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xMzExLVxubW0vcGFnZV9hbGxvYy5jOjEzMTI6c3RhdGljIF9fYWx3YXlzX2lubGluZSBib29sIF9fZnJlZV9wYWdlc19wcmVwYXJlKHN0cnVjdCBwYWdlICpwYWdlLFxubW0vcGFnZV9hbGxvYy5jLTEzMTMtXHRcdHVuc2lnbmVkIGludCBvcmRlciwgZnBpX3QgZnBpX2ZsYWdzKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0xNDQ4LVxubW0vcGFnZV9hbGxvYy5jOjE0NDk6Ym9vbCBmcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbm1tL3BhZ2VfYWxsb2MuYy0xNDUwLXtcbm1tL3BhZ2VfYWxsb2MuYzoxNDUxOlx0cmV0dXJuIF9fZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyLCBGUElfTk9ORSk7XG5tbS9wYWdlX2FsbG9jLmMtMTQ1Mi19XG4tLVxubW0vcGFnZV9hbGxvYy5jPTE1Nzg9c3RhdGljIHZvaWQgX19mcmVlX3BhZ2VzX29rKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTE1ODMtXG5tbS9wYWdlX2FsbG9jLmM6MTU4NDpcdGlmIChfX2ZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlciwgZnBpX2ZsYWdzKSlcbm1tL3BhZ2VfYWxsb2MuYy0xNTg1LVx0XHRmcmVlX29uZV9wYWdlKHpvbmUsIHBhZ2UsIHBmbiwgb3JkZXIsIGZwaV9mbGFncyk7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTI5Mzc9c3RhdGljIHZvaWQgX19mcmVlX2Zyb3plbl9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0yOTQ5LVxubW0vcGFnZV9hbGxvYy5jOjI5NTA6XHRpZiAoIV9fZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyLCBmcGlfZmxhZ3MpKVxubW0vcGFnZV9hbGxvYy5jLTI5NTEtXHRcdHJldHVybjtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9Mjk5OT12b2lkIGZyZWVfdW5yZWZfZm9saW9zKHN0cnVjdCBmb2xpb19iYXRjaCAqZm9saW9zKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy0zMDEwLVxubW0vcGFnZV9hbGxvYy5jOjMwMTE6XHRcdGlmICghX19mcmVlX3BhZ2VzX3ByZXBhcmUoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSwgb3JkZXIsIEZQSV9OT05FKSlcbm1tL3BhZ2VfYWxsb2MuYy0zMDEyLVx0XHRcdGNvbnRpbnVlO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz02ODQ2PXN0YXRpYyB2b2lkIGZyZWVfcHJlcGFyZWRfY29udGlnX3JhbmdlKHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy02ODYxLVx0XHQgKiBGcmVlIHRoZSBjaHVuayBhcyBhIHNpbmdsZSBibG9jay4gT3VyIGNhbGxlciBoYXMgYWxyZWFkeVxubW0vcGFnZV9hbGxvYy5jOjY4NjI6XHRcdCAqIGNhbGxlZCBmcmVlX3BhZ2VzX3ByZXBhcmUoKSBmb3IgZWFjaCBvcmRlci0wIHBhZ2UuXG5tbS9wYWdlX2FsbG9jLmMtNjg2My1cdFx0ICovXG4tLVxubW0vcGFnZV9hbGxvYy5jPTY4NzI9c3RhdGljIHZvaWQgX19mcmVlX2NvbnRpZ19yYW5nZV9jb21tb24odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTY4OTYtXHRcdGlmIChjYW5fZnJlZSlcbm1tL3BhZ2VfYWxsb2MuYzo2ODk3Olx0XHRcdGNhbl9mcmVlID0gZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIDApO1xubW0vcGFnZV9hbGxvYy5jLTY4OTgtXG4tLVxubW0vcm1hcC5jPTE3NzY9c3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkIF9fZm9saW9fcmVtb3ZlX3JtYXAoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5tbS9ybWFwLmMtMTg3OC1cdCAqIHdoaWNoIGluY3JlbWVudHMgbWFwY291bnQgYWZ0ZXIgdXMgYnV0IHNldHMgbWFwcGluZyBiZWZvcmUgdXM6XG5tbS9ybWFwLmM6MTg3OTpcdCAqIHNvIGxlYXZlIHRoZSByZXNldCB0byBmcmVlX3BhZ2VzX3ByZXBhcmUsIGFuZCByZW1lbWJlciB0aGF0XG5tbS9ybWFwLmMtMTg4MC1cdCAqIGl0JiMzOTtzIG9ubHkgcmVsaWFibGUgd2hpbGUgbWFwcGVkLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE1OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3OTkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgY29tcGFjdGlvbl9mcmVlYCBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIFRoZSBrZXkgbW9kaWZpY2F0aW9uIGlzIHdpdGhpbiBgY29tcGFjdGlvbl9mcmVlYCwgc3BlY2lmaWNhbGx5IGluIGBtbS9jb21wYWN0aW9uLmNgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY2hlY2sgZm9yIHRoZSByZXR1cm4gdmFsdWUgb2YgYGZyZWVfcGFnZXNfcHJlcGFyZWAuIE5vdywgaW5zdGVhZCBvZiBibGluZGx5IGFkZGluZyB0aGUgcGFnZSB0byB0aGUgZnJlZSBsaXN0LCB0aGUgY29kZSB3aWxsIGV2YWx1YXRlIHdoYXQgYGZyZWVfcGFnZXNfcHJlcGFyZWAgcmV0dXJucy4gSWYgaXTigJlzIGBmYWxzZWAsIHRoZSBwYWdlIGlzbuKAmXQgYWRkZWQuIENsZWFybHksIHRoYXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW4gYXR0ZW1wdCB0byBwcmV2ZW50IHBhZ2UgaW5zZXJ0aW9uIHVuZGVyIHNvbWUgY29uZGl0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGNvbmRpdGlvbi4KClRoZSBuZXh0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBjb25maXJtIHRoZSB1c2FnZSBvZiBgY29tcGFjdGlvbl9mcmVlYCBpbiB0aGUgY29kZSwgc28gdGhhdCBJIGNhbiBmaWd1cmUgb3V0IHdoeSB0aGUgY29kZSBjaGFuZ2Ugd291bGQgaGF2ZSBiZWVuIHVzZWZ1bC4gSXQgbG9va3MgbGlrZSBpdCBpcyB1c2VkIGFzIGEgY2FsbGJhY2sgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXQgdG8gaXRzIGNhbGwgc2l0ZXMgdG8gZnVsbHkgZ3Jhc3AgaXRzIGludGVuZGVkIGJlaGF2aW9yIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGNvbmRpdGlvbmFsLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHNjZW5hcmlvcyB3b3VsZCBsZWFkIHRvIGBmcmVlX3BhZ2VzX3ByZXBhcmVgIHJldHVybmluZyBgZmFsc2VgIGFuZCBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgYWZmZWN0IG1lbW9yeSBtYW5hZ2VtZW50IGR1cmluZyBjb21wYWN0aW9uLiBUaGVyZSYjMzk7cyBhIGNvbnRleHQgSSYjMzk7bSBtaXNzaW5nIGF0IHRoZSBtb21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29tcGFjdGlvbl9mcmVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vY29tcGFjdGlvbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2NvbXBhY3Rpb24uYz0xODYyPXN0YXRpYyBzdHJ1Y3QgZm9saW8gKmNvbXBhY3Rpb25fYWxsb2Moc3RydWN0IGZvbGlvICpzcmMsIHVuc2lnbmVkIGxvbmcgZGF0YSlcbi0tXG5tbS9jb21wYWN0aW9uLmMtMTg3MS0gKi9cbm1tL2NvbXBhY3Rpb24uYzoxODcyOnN0YXRpYyB2b2lkIGNvbXBhY3Rpb25fZnJlZShzdHJ1Y3QgZm9saW8gKmRzdCwgdW5zaWduZWQgbG9uZyBkYXRhKVxubW0vY29tcGFjdGlvbi5jLTE4NzMte1xuLS1cbm1tL2NvbXBhY3Rpb24uYz0yNTMyPWNvbXBhY3Rfem9uZShzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgc3RydWN0IGNhcHR1cmVfY29udHJvbCAqY2FwYylcbi0tXG5tbS9jb21wYWN0aW9uLmMtMjY2OC1cdFx0ZXJyID0gbWlncmF0ZV9wYWdlcyhcdTAwMjZjYy1cdTAwM2VtaWdyYXRlcGFnZXMsIGNvbXBhY3Rpb25fYWxsb2MsXG5tbS9jb21wYWN0aW9uLmM6MjY2OTpcdFx0XHRcdGNvbXBhY3Rpb25fZnJlZSwgKHVuc2lnbmVkIGxvbmcpY2MsIGNjLVx1MDAzZW1vZGUsXG5tbS9jb21wYWN0aW9uLmMtMjY3MC1cdFx0XHRcdE1SX0NPTVBBQ1RJT04sIFx1MDAyNm5yX3N1Y2NlZWRlZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQwMQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgS2VybmVsIE1lbW9yeSBDb21wYWN0aW9uKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYGNvbXBhY3Rpb25fZnJlZWAgaXMgaW5kZWVkIGJlaW5nIHBhc3NlZCB0byBgbWlncmF0ZV9wYWdlc2Agd2l0aGluIGBjb21wYWN0X3pvbmVgLiBUaGF0JiMzOTtzIGEga2V5IHBvaW50IOKAkyB0aGF0JiMzOTtzIHNvbWUgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBtZW1vcnkgY29tcGFjdGlvbiwgdGhlIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSB0aGF0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBvbiB0aGF0IHBhdGguIFRoZSBzcGVjaWZpYyBzeW1ib2wgSSBzaG91bGQgYmUgemVyb2luZyBpbiBvbiBpcyBgY29tcGFjdGlvbl9mcmVlYCwgb2J2aW91c2x5LiBOb3csIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfQ09NUEFDVElPTmAgaXMgZW5hYmxlZCwgYW5kIG1heWJlIGdvIGxvb2sgYXQgYG1tL01ha2VmaWxlYCBvciBgbW0vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGF0IGBjb21wYWN0aW9uLmNgIGlzIHRoZSByaWdodCBmaWxlLiBJJiMzOTttIGJ1aWxkaW5nIGEgZnV6emluZyBjYW1wYWlnbiBhcm91bmQgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxNTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb21wYWN0aW9uXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL01ha2VmaWxlPTUxPW9iai15XHRcdFx0Oj0gZmlsZW1hcC5vIG1lbXBvb2wubyBvb21fa2lsbC5vIGZhZHZpc2UubyBcXFxuLS1cbm1tL01ha2VmaWxlLTU1LVx0XHRcdCAgIG1tX2luaXQubyBwZXJjcHUubyBzbGFiX2NvbW1vbi5vIFxcXG5tbS9NYWtlZmlsZTo1NjpcdFx0XHQgICBjb21wYWN0aW9uLm8gc2hvd19tZW0ubyBcXFxubW0vTWFrZWZpbGUtNTctXHRcdFx0ICAgaW50ZXJ2YWxfdHJlZS5vIGxpc3RfbHJ1Lm8gd29ya2luZ3NldC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc4OQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGBjb21wYWN0aW9uLm9gIGluIHRoZSBNZW1vcnkgTWFuYWdlbWVudCBNYWtlZmlsZSoqCgpSaWdodCwgYGNvbXBhY3Rpb24ub2AgaXMgc2l0dGluZyB0aGVyZSwgbGlzdGVkIGluIGBvYmoteWAgd2l0aGluIHRoZSBgbW0vTWFrZWZpbGVgLiBUaGF0IHBsYWNlbWVudCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIEJ1dCBiZWZvcmUgSSBtYWtlIGFueSBhc3N1bXB0aW9ucywgbXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGNvbmZpcm0gaWYgaXQmIzM5O3MgdW5jb25kaXRpb25hbGx5IGNvbXBpbGVkLiBJIG5lZWQgdG8gcnVsZSBvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIG9yIGAjaWZkZWZgIGJsb2NrcyB0aGF0IG1pZ2h0IGdhdGUgaXRzIGluY2x1c2lvbiBiYXNlZCBvbiBjb25maWd1cmF0aW9uIGZsYWdzLiBMZXQmIzM5O3MgZGlnIGRlZXBlciB0byBtYWtlIHN1cmUgdGhpcyBpcyBhbHdheXMgaW5jbHVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19DT01QQUNUSU9OJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2NvbXBhY3Rpb24uYy0yOC1cbm1tL2NvbXBhY3Rpb24uYzoyOTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL2NvbXBhY3Rpb24uYy0zMC0vKlxuLS1cbm1tL2NvbXBhY3Rpb24uYz01OT1zdGF0aWMgaW5saW5lIGJvb2wgaXNfdmlhX2NvbXBhY3RfbWVtb3J5KGludCBvcmRlcikgeyByZXR1cm4gZmFsc2U7IH1cbi0tXG5tbS9jb21wYWN0aW9uLmMtNjEtXG5tbS9jb21wYWN0aW9uLmM6NjI6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXG5tbS9jb21wYWN0aW9uLmMtNjMtXG4tLVxubW0vY29tcGFjdGlvbi5jPTkxPXN0YXRpYyB1bnNpZ25lZCBsb25nIHJlbGVhc2VfZnJlZV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKmZyZWVwYWdlcylcbi0tXG5tbS9jb21wYWN0aW9uLmMtMTE1LVxubW0vY29tcGFjdGlvbi5jOjExNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL2NvbXBhY3Rpb24uYy0xMTctXG4tLVxubW0vY29tcGFjdGlvbi5jPTQ5MD1zdGF0aWMgYm9vbCB0ZXN0X2FuZF9zZXRfc2tpcChzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgc3RydWN0IHBhZ2UgKnBhZ2UpXG4tLVxubW0vY29tcGFjdGlvbi5jLTQ5My19XG5tbS9jb21wYWN0aW9uLmM6NDk0OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vY29tcGFjdGlvbi5jLTQ5NS1cbi0tXG5tbS9jb21wYWN0aW9uLmM9MTMzNz1pc29sYXRlX21pZ3JhdGVwYWdlc19yYW5nZShzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYywgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXG4tLVxubW0vY29tcGFjdGlvbi5jLTEzNzItXG5tbS9jb21wYWN0aW9uLmM6MTM3MzojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gfHwgQ09ORklHX0NNQSAqL1xubW0vY29tcGFjdGlvbi5jOjEzNzQ6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS9jb21wYWN0aW9uLmMtMTM3NS1cbi0tXG5tbS9jb21wYWN0aW9uLmM9MzM1Mz1zdWJzeXNfaW5pdGNhbGwoa2NvbXBhY3RkX2luaXQpXG5tbS9jb21wYWN0aW9uLmMtMzM1NC1cbm1tL2NvbXBhY3Rpb24uYzozMzU1OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xuLS1cbm1tL2ludGVybmFsLmg9OTk5PXN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdF9zdWJzZWN0aW9uX21hcCh1bnNpZ25lZCBsb25nIHBmbixcbi0tXG5tbS9pbnRlcm5hbC5oLTEwMDQtXG5tbS9pbnRlcm5hbC5oOjEwMDU6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXG5tbS9pbnRlcm5hbC5oLTEwMDYtXG4tLVxubW0vaW50ZXJuYWwuaD0xMDc0PXZvaWQgaW5pdF9jbWFfcmVzZXJ2ZWRfcGFnZWJsb2NrKHN0cnVjdCBwYWdlICpwYWdlKTtcbm1tL2ludGVybmFsLmgtMTA3NS1cbm1tL2ludGVybmFsLmg6MTA3NjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gfHwgQ09ORklHX0NNQSAqL1xubW0vaW50ZXJuYWwuaC0xMDc3LVxuLS1cbm1tL21tX2luaXQuYz0xMzMzPXN0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQsXG4tLVxubW0vbW1faW5pdC5jLTEzNzUtXG5tbS9tbV9pbml0LmM6MTM3NjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL21tX2luaXQuYy0xMzc3LXN0YXRpYyB2b2lkIHBnZGF0X2luaXRfa2NvbXBhY3RkKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXG4tLVxubW0vb29tX2tpbGwuYz00NTY9c3RhdGljIHZvaWQgZHVtcF9oZWFkZXIoc3RydWN0IG9vbV9jb250cm9sICpvYylcbi0tXG5tbS9vb21fa2lsbC5jLTQ2MC1cdFx0XHRjdXJyZW50LVx1MDAzZXNpZ25hbC1cdTAwM2Vvb21fc2NvcmVfYWRqKTtcbm1tL29vbV9raWxsLmM6NDYxOlx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19DT01QQUNUSU9OKSBcdTAwMjZcdTAwMjYgb2MtXHUwMDNlb3JkZXIpXG5tbS9vb21fa2lsbC5jLTQ2Mi1cdFx0cHJfd2FybihcJiMzNDtDT01QQUNUSU9OIGlzIGRpc2FibGVkISEhXFxuXCYjMzQ7KTtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NzEwPXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYnVkZHlfb3JkZXIoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNzE1LVxubW0vcGFnZV9hbGxvYy5jOjcxNjojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cbm1tL3BhZ2VfYWxsb2MuYy03MTctc3RhdGljIGlubGluZSBzdHJ1Y3QgY2FwdHVyZV9jb250cm9sICp0YXNrX2NhcGMoc3RydWN0IHpvbmUgKnpvbmUpXG4tLVxubW0vcGFnZV9hbGxvYy5jPTc2NT1jb21wYWN0aW9uX2NhcHR1cmUoc3RydWN0IGNhcHR1cmVfY29udHJvbCAqY2FwYywgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0vcGFnZV9hbGxvYy5jLTc2OS19XG5tbS9wYWdlX2FsbG9jLmM6NzcwOiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vcGFnZV9hbGxvYy5jLTc3MS1cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDA0Nz1fX2FsbG9jX3BhZ2VzX21heV9vb20oZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcixcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNDEzOC1cbm1tL3BhZ2VfYWxsb2MuYzo0MTM5OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0vcGFnZV9hbGxvYy5jLTQxNDAtLyogVHJ5IG1lbW9yeSBjb21wYWN0aW9uIGZvciBoaWdoLW9yZGVyIGFsbG9jYXRpb25zIGJlZm9yZSByZWNsYWltICovXG4tLVxubW0vcGFnZV9hbGxvYy5jPTQyNzk9c2hvdWxkX2NvbXBhY3RfcmV0cnkoZ2ZwX3QgZ2ZwX21hc2ssIHN0cnVjdCBhbGxvY19jb250ZXh0ICphYywgaW50IG9yZGVyLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy00MzA0LX1cbm1tL3BhZ2VfYWxsb2MuYzo0MzA1OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0vcGFnZV9hbGxvYy5jLTQzMDYtXG4tLVxubW0vdm1zY2FuLmM9NjMzMT1zdGF0aWMgdm9pZCBzaHJpbmtfem9uZXMoc3RydWN0IHpvbmVsaXN0ICp6b25lbGlzdCwgc3RydWN0IHNjYW5fY29udHJvbCAqc2MpXG4tLVxubW0vdm1zY2FuLmMtNjM3MS1cdFx0XHQgKi9cbm1tL3Ztc2Nhbi5jOjYzNzI6XHRcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0NPTVBBQ1RJT04pIFx1MDAyNlx1MDAyNlxubW0vdm1zY2FuLmMtNjM3My1cdFx0XHQgICAgc2MtXHUwMDNlb3JkZXIgXHUwMDNlIFBBR0VfQUxMT0NfQ09TVExZX09SREVSIFx1MDAyNlx1MDAyNlxuLS1cbm1tL3Ztc3RhdC5jPTEwNDI9dm9pZCBtZW1tYXBfcGFnZXNfYWRkKGxvbmcgZGVsdGEpXG4tLVxubW0vdm1zdGF0LmMtMTA0Ni1cbm1tL3Ztc3RhdC5jOjEwNDc6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS92bXN0YXQuYy0xMDQ4LVxuLS1cbm1tL3Ztc3RhdC5jPTExODc9Y29uc3QgY2hhciAqIGNvbnN0IHZtc3RhdF90ZXh0W10gPSB7XG4tLVxubW0vdm1zdGF0LmMtMTM3MC0jZW5kaWZcbm1tL3Ztc3RhdC5jOjEzNzE6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS92bXN0YXQuYy0xMzcyLVx0W0koQ09NUEFDVE1JR1JBVEVfU0NBTk5FRCldXHRcdD0gXCYjMzQ7Y29tcGFjdF9taWdyYXRlX3NjYW5uZWRcJiMzNDssXG4tLVxubW0vdm1zdGF0LmMtMTQ5Ni1cbm1tL3Ztc3RhdC5jOjE0OTc6I2lmIChkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pKSB8fCBcXFxubW0vdm1zdGF0LmMtMTQ5OC0gICAgIGRlZmluZWQoQ09ORklHX1BST0NfRlMpXG4tLVxubW0vdm1zdGF0LmM9MjI2OD12b2lkIF9faW5pdCBpbml0X21tX2ludGVybmFscyh2b2lkKVxuLS1cbm1tL3Ztc3RhdC5jLTIzMDEtXG5tbS92bXN0YXQuYzoyMzAyOiNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX0NPTVBBQ1RJT04pXG5tbS92bXN0YXQuYy0yMzAzLVxuLS1cbm1tL3pzbWFsbG9jLmM9MTk5PXN0cnVjdCB6c19wb29sIHtcbi0tXG5tbS96c21hbGxvYy5jLTIxMy0jZW5kaWZcbm1tL3pzbWFsbG9jLmM6MjE0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yMTUtXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrO1xuLS1cbm1tL3pzbWFsbG9jLmM9MzYwPXN0YXRpYyBib29sIFpzSHVnZVBhZ2Uoc3RydWN0IHpzcGFnZSAqenNwYWdlKVxuLS1cbm1tL3pzbWFsbG9jLmMtMzY0LVxubW0venNtYWxsb2MuYzozNjU6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXG5tbS96c21hbGxvYy5jLTM2Ni1zdGF0aWMgdm9pZCBraWNrX2RlZmVycmVkX2ZyZWUoc3RydWN0IHpzX3Bvb2wgKnBvb2wpO1xuLS1cbm1tL3pzbWFsbG9jLmM9OTMxPXN0YXRpYyBzdHJ1Y3QgenNwYWdlICphbGxvY196c3BhZ2Uoc3RydWN0IHpzX3Bvb2wgKnBvb2wsXG4tLVxubW0venNtYWxsb2MuYy05NDEtXG5tbS96c21hbGxvYy5jOjk0MjpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfQ09NUEFDVElPTikpXG5tbS96c21hbGxvYy5jLTk0My1cdFx0Z2ZwIFx1MDAyNj0gfl9fR0ZQX01PVkFCTEU7XG4tLVxubW0venNtYWxsb2MuYz0xNTk0PXN0YXRpYyBpbnQgcHV0YmFja196c3BhZ2Uoc3RydWN0IHNpemVfY2xhc3MgKmNsYXNzLCBzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpXG4tLVxubW0venNtYWxsb2MuYy0xNjAzLVxubW0venNtYWxsb2MuYzoxNjA0OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0xNjA1LS8qXG4tLVxubW0venNtYWxsb2MuYz0xNjA5PXN0YXRpYyB2b2lkIGxvY2tfenNwYWdlKHN0cnVjdCB6c3BhZ2UgKnpzcGFnZSlcbi0tXG5tbS96c21hbGxvYy5jLTE2NDUtfVxubW0venNtYWxsb2MuYzoxNjQ2OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiAqL1xubW0venNtYWxsb2MuYy0xNjQ3LVxubW0venNtYWxsb2MuYzoxNjQ4OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0xNjQ5LVxuLS1cbm1tL3pzbWFsbG9jLmM9MjIzNz1zdGF0aWMgaW50IF9faW5pdCB6c19pbml0KHZvaWQpXG4tLVxubW0venNtYWxsb2MuYy0yMjQ0LVxubW0venNtYWxsb2MuYzoyMjQ1OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yMjQ2LVx0cmMgPSBzZXRfbW92YWJsZV9vcHMoXHUwMDI2enNtYWxsb2NfbW9wcywgUEdUWV96c21hbGxvYyk7XG4tLVxubW0venNtYWxsb2MuYz0yMjU2PXN0YXRpYyB2b2lkIF9fZXhpdCB6c19leGl0KHZvaWQpXG5tbS96c21hbGxvYy5jLTIyNTcte1xubW0venNtYWxsb2MuYzoyMjU4OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxubW0venNtYWxsb2MuYy0yMjU5LVx0c2V0X21vdmFibGVfb3BzKE5VTEwsIFBHVFlfenNtYWxsb2MpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjcyCgkJCQkJCQlvdXRwdXQ6IDg5CgkJCQkJCQl0aG91Z2h0czogNDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWVtb3J5IENvbXBhY3Rpb24gTG9naWMqKgoKT2theSwgc28gdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlIGlzIGBDT05GSUdfQ09NUEFDVElPTmAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY29tcGFjdGlvbl9mcmVlYCBpcyBpbmRlZWQgcmVhY2hhYmxlLCBhbmQgaXQgaXMuIEl0JiMzOTtzIGEgY2FsbGJhY2sgcGFzc2VkIHRvIGBtaWdyYXRlX3BhZ2VzYCB3aXRoaW4gYGNvbXBhY3Rfem9uZWAuIGBjb21wYWN0X3pvbmVgIGdldHMgY2FsbGVkIGZyb20gYGNvbXBhY3Rfem9uZV9vcmRlcmAsIGBrY29tcGFjdGRfZG9fd29ya2AsIG9yIGB0cnlfdG9fY29tcGFjdF9wYWdlc2AuIFRoaXMgaXMgZGVmaW5pdGVseSBpbiB0aGUgY29yZSBrZXJuZWwgbG9naWMsIG5vIGRvdWJ0IGFib3V0IGl0LgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSwgaXMgYENPTkZJR19DT01QQUNUSU9OYCB0aGUgb25seSByZWxldmFudCBjb25maWcgaGVyZT8gWWVzLCBpdCBhcHBlYXJzIHRvIGJlLgoKTGV0IG1lIHRha2UgYW5vdGhlciBsb29rIGF0IGBjb21wYWN0aW9uX2ZyZWVgLgoKYGBgYwpzdGF0aWMgdm9pZCBjb21wYWN0aW9uX2ZyZWUoc3RydWN0IGZvbGlvICpkc3QsIHVuc2lnbmVkIGxvbmcgZGF0YSkKewoJc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MgPSAoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqKWRhdGE7CglpbnQgb3JkZXIgPSBmb2xpb19vcmRlcihkc3QpOwoJc3RydWN0IHBhZ2UgKnBhZ2UgPSAmYW1wO2RzdC0mZ3Q7cGFnZTsKCglpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkgJmFtcDsmYW1wOyBmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpKSB7CgkJbGlzdF9hZGQoJmFtcDtkc3QtJmd0O2xydSwgJmFtcDtjYy0mZ3Q7ZnJlZXBhZ2VzW29yZGVyXSk7CgkJY2MtJmd0O25yX2ZyZWVwYWdlcyAmIzQzOz0gMSAmbHQ7Jmx0OyBvcmRlcjsKCX0KCWNjLSZndDtucl9taWdyYXRlcGFnZXMgJiM0Mzs9IDEgJmx0OyZsdDsgb3JkZXI7CgkvKgoJICogc29tZW9uZSBlbHNlIGhhcyByZWZlcmVuY2VkIHRoZSBwYWdlIG9yIGZyZWVfcGFnZXNfcHJlcGFyZSgpIGZhaWxzLAoJICogd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXIgZnJlZSBsaXN0LgoJICovCn0KYGBgCgpSaWdodCwgSSBzZWUgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGNvbXBhY3Rpb25fZnJlZWAgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBgZnJlZV9wYWdlc19wcmVwYXJlYCBiZWZvcmUgYWRkaW5nIHRoZSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgZml4ZXMgYSBidWcgd2hlcmUgYGZyZWVfcGFnZXNfcHJlcGFyZWAgY291bGQgZmFpbCwgYnV0IHRoZSBwYWdlIHdhcyBzdGlsbCBhZGRlZCB0byB0aGUgZnJlZSBsaXN0LiBTbywgaXQmIzM5O3MgYSBjcml0aWNhbCBhZGp1c3RtZW50IGluIHRoZSBtZW1vcnkgY29tcGFjdGlvbiBwcm9jZXNzLgoKSSBuZWVkIHRvIGZvY3VzIG9uIGBjb21wYWN0aW9uX2ZyZWVgIGFzIHRoZSBwcmltYXJ5IHN5bWJvbCBoZXJlLiBgQ09ORklHX0NPTVBBQ1RJT05gIG5lZWRzIHRvIGJlIGVuYWJsZWQuIEkgdGhpbmsgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMsIGJ1dCBpdCBsb29rcyBsaWtlIGBjb21wYWN0aW9uX2ZyZWVgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIG1vZGlmaWVkLgoKVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IGNvbXBhY3Rpb24gbG9naWMuIEl0IGVuc3VyZXMgdGhhdCBvbmx5IHByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIGdldCBhZGRlZCB0byB0aGUgZnJlZSBsaXN0LgoKTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTU6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjb21wYWN0aW9uX2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NPTVBBQ1RJT04mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjb21wYWN0aW9uX2ZyZWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDoxMy44Mzc3NzcyMTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzU3OTczMzAzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY29tcGFjdGlvbl9mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjEzLjgzNzc4MzQ0MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg4MjYzNTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmZjOGUwZjYzNjU4MGNiODBlMDMzYWNiM2EzNDk0MThlMDVjMzg4MFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyMiAxNTo0MDoxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9jb21wYWN0aW9uLmMgYi9tbS9jb21wYWN0aW9uLmNcXG5pbmRleCBiNzc2ZjM1YWQwMjAwNy4uZjA4NzY1YWRlMDE0Y2UgMTAwNjQ0XFxuLS0tIGEvbW0vY29tcGFjdGlvbi5jXFxuKysrIGIvbW0vY29tcGFjdGlvbi5jXFxuQEAgLTE4NzUsMTUgKzE4NzUsMTQgQEAgc3RhdGljIHZvaWQgY29tcGFjdGlvbl9mcmVlKHN0cnVjdCBmb2xpbyAqZHN0LCB1bnNpZ25lZCBsb25nIGRhdGEpXFxuIFxcdGludCBvcmRlciA9IGZvbGlvX29yZGVyKGRzdCk7XFxuIFxcdHN0cnVjdCBwYWdlICpwYWdlID0gXFx1MDAyNmRzdC1cXHUwMDNlcGFnZTtcXG4gXFxuLVxcdGlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSkge1xcbi1cXHRcXHRmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpO1xcbitcXHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkgXFx1MDAyNlxcdTAwMjYgZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKSkge1xcbiBcXHRcXHRsaXN0X2FkZChcXHUwMDI2ZHN0LVxcdTAwM2VscnUsIFxcdTAwMjZjYy1cXHUwMDNlZnJlZXBhZ2VzW29yZGVyXSk7XFxuIFxcdFxcdGNjLVxcdTAwM2Vucl9mcmVlcGFnZXMgKz0gMSBcXHUwMDNjXFx1MDAzYyBvcmRlcjtcXG4gXFx0fVxcbiBcXHRjYy1cXHUwMDNlbnJfbWlncmF0ZXBhZ2VzICs9IDEgXFx1MDAzY1xcdTAwM2Mgb3JkZXI7XFxuIFxcdC8qXFxuLVxcdCAqIHNvbWVvbmUgZWxzZSBoYXMgcmVmZXJlbmNlZCB0aGUgcGFnZSwgd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXJcXG4tXFx0ICogZnJlZSBsaXN0LlxcbitcXHQgKiBzb21lb25lIGVsc2UgaGFzIHJlZmVyZW5jZWQgdGhlIHBhZ2Ugb3IgZnJlZV9wYWdlc19wcmVwYXJlKCkgZmFpbHMsXFxuK1xcdCAqIHdlIGNhbm5vdCB0YWtlIGl0IGJhY2sgdG8gb3VyIGZyZWUgbGlzdC5cXG4gXFx0ICovXFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjE0LjUyNjg1MDM2NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY4OTA2NTEyMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ09NUEFDVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNvbXBhY3Rpb25fZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvbXBhY3Rpb25fZnJlZSB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIGZyZWVfcGFnZXNfcHJlcGFyZSBiZWZvcmUgYWRkaW5nIGEgcGFnZSB0byB0aGUgZnJlZSBsaXN0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IGNvbXBhY3Rpb24gbG9naWMgdGhhdCBwcmV2ZW50cyBhZGRpbmcgaW1wcm9wZXJseSBwcmVwYXJlZCBwYWdlcyB0byB0aGUgZnJlZSBsaXN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZmYzhlMGY2MzY1ODBjYjgwZTAzM2FjYjNhMzQ5NDE4ZTA1YzM4ODBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyMiAxNTo0MDoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL2NvbXBhY3Rpb24uYyBiL21tL2NvbXBhY3Rpb24uY1xuaW5kZXggYjc3NmYzNWFkMDIwMDcuLmYwODc2NWFkZTAxNGNlIDEwMDY0NFxuLS0tIGEvbW0vY29tcGFjdGlvbi5jXG4rKysgYi9tbS9jb21wYWN0aW9uLmNcbkBAIC0xODc1LDE1ICsxODc1LDE0IEBAIHN0YXRpYyB2b2lkIGNvbXBhY3Rpb25fZnJlZShzdHJ1Y3QgZm9saW8gKmRzdCwgdW5zaWduZWQgbG9uZyBkYXRhKVxuIFx0aW50IG9yZGVyID0gZm9saW9fb3JkZXIoZHN0KTtcbiBcdHN0cnVjdCBwYWdlICpwYWdlID0gXHUwMDI2ZHN0LVx1MDAzZXBhZ2U7XG4gXG4tXHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkpIHtcbi1cdFx0ZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKTtcbitcdGlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSBcdTAwMjZcdTAwMjYgZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKSkge1xuIFx0XHRsaXN0X2FkZChcdTAwMjZkc3QtXHUwMDNlbHJ1LCBcdTAwMjZjYy1cdTAwM2VmcmVlcGFnZXNbb3JkZXJdKTtcbiBcdFx0Y2MtXHUwMDNlbnJfZnJlZXBhZ2VzICs9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0fVxuIFx0Y2MtXHUwMDNlbnJfbWlncmF0ZXBhZ2VzICs9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0Lypcbi1cdCAqIHNvbWVvbmUgZWxzZSBoYXMgcmVmZXJlbmNlZCB0aGUgcGFnZSwgd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXJcbi1cdCAqIGZyZWUgbGlzdC5cbitcdCAqIHNvbWVvbmUgZWxzZSBoYXMgcmVmZXJlbmNlZCB0aGUgcGFnZSBvciBmcmVlX3BhZ2VzX3ByZXBhcmUoKSBmYWlscyxcbitcdCAqIHdlIGNhbm5vdCB0YWtlIGl0IGJhY2sgdG8gb3VyIGZyZWUgbGlzdC5cbiBcdCAqL1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjE0LjUyNjg1MjA2NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MTIyNDk5ODI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIGBtbS9jb21wYWN0aW9uLmNgIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbW0vY29tcGFjdGlvbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIHRvIHRoZSBgY29tcGFjdGlvbl9mcmVlYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIG1vZGlmaWNhdGlvbiwgYnV0IHNvbWV0aGluZyBjYXRjaGVzIG15IGV5ZS4gVGhleSd2ZSBjaGFuZ2VkIHRoZSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgaGVyZS4gSXQgdXNlZCB0byBiZSBhIHNpbXBsZSBgZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdClgIGNhbGwuIE5vdywgaXQncyBjb21iaW5lZCB3aXRoIGEgY2FsbCB0byBgZnJlZV9wYWdlc19wcmVwYXJlYCwgYW5kIHRoZSBjb2RlIHJlbGllcyBvbiB0aGUgcmV0dXJuIHZhbHVlOlxuXG5gYGBjXG4tXHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkpIHtcbi1cdFx0ZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKTtcbitcdGlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSBcdTAwMjZcdTAwMjYgZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyKSkge1xuIFx0XHRsaXN0X2FkZChcdTAwMjZkc3QtXHUwMDNlbHJ1LCBcdTAwMjZjYy1cdTAwM2VmcmVlcGFnZXNbb3JkZXJdKTtcbiBcdFx0Y2MtXHUwMDNlbnJfZnJlZXBhZ2VzICs9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuIFx0fVxuYGBgXG5cblRoZSBkaWZmZXJlbmNlIGlzLCBub3cgYGZyZWVfcGFnZXNfcHJlcGFyZWAgcmV0dXJucyBhIGJvb2xlYW4uIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGJvb2xlYW4gcmVwcmVzZW50cy4gSXMgaXQgYW4gaW5kaWNhdGlvbiBvZiBzdWNjZXNzLCBhIHBvdGVudGlhbCBmYWlsdXJlIHN0YXRlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gSSBzaG91bGQga25vdyB0aGlzLCBidXQgSSdsbCBxdWlja2x5IGdyZXAgdGhlIGNvZGUgdG8gc2VlIHdoYXQgYGZyZWVfcGFnZXNfcHJlcGFyZWAncyBzaWduYXR1cmUgcmVhbGx5IGlzLiBJJ2xsIHNlYXJjaCBmb3IgaXQgbm93IHRvIGNvbmZpcm0gbXkgYXNzdW1wdGlvbnMgYW5kIGVuc3VyZSB0aGVyZSdzIG5vIHN1YnRsZSBpbnRlcmFjdGlvbiBJJ20gbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzOSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjMxLjY0OTM1NDYxOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODEzNzIwMTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnJlZV9wYWdlc19wcmVwYXJlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9jb21wYWN0aW9uLmM9MTg3Mj1zdGF0aWMgdm9pZCBjb21wYWN0aW9uX2ZyZWUoc3RydWN0IGZvbGlvICpkc3QsIHVuc2lnbmVkIGxvbmcgZGF0YSlcXG4tLVxcbm1tL2NvbXBhY3Rpb24uYy0xODc3LVxcbm1tL2NvbXBhY3Rpb24uYzoxODc4OlxcdGlmIChmb2xpb19wdXRfdGVzdHplcm8oZHN0KSBcXHUwMDI2XFx1MDAyNiBmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIpKSB7XFxubW0vY29tcGFjdGlvbi5jLTE4NzktXFx0XFx0bGlzdF9hZGQoXFx1MDAyNmRzdC1cXHUwMDNlbHJ1LCBcXHUwMDI2Y2MtXFx1MDAzZWZyZWVwYWdlc1tvcmRlcl0pO1xcbi0tXFxubW0vY29tcGFjdGlvbi5jLTE4ODMtXFx0LypcXG5tbS9jb21wYWN0aW9uLmM6MTg4NDpcXHQgKiBzb21lb25lIGVsc2UgaGFzIHJlZmVyZW5jZWQgdGhlIHBhZ2Ugb3IgZnJlZV9wYWdlc19wcmVwYXJlKCkgZmFpbHMsXFxubW0vY29tcGFjdGlvbi5jLTE4ODUtXFx0ICogd2UgY2Fubm90IHRha2UgaXQgYmFjayB0byBvdXIgZnJlZSBsaXN0Llxcbi0tXFxubW0vaW50ZXJuYWwuaD05MTA9dm9pZCBwb3N0X2FsbG9jX2hvb2soc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlciwgZ2ZwX3QgZ2ZwX2ZsYWdzKTtcXG5tbS9pbnRlcm5hbC5oOjkxMTpleHRlcm4gYm9vbCBmcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcik7XFxubW0vaW50ZXJuYWwuaC05MTItXFxuLS1cXG5tbS9rc20uYz05NDk9c3RhdGljIHN0cnVjdCBmb2xpbyAqa3NtX2dldF9mb2xpbyhzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSxcXG4tLVxcbm1tL2tzbS5jLTk4MS1cXHRcXHQgKiBzZWN0aW9uIG9mIF9fcmVtb3ZlX21hcHBpbmcoKTsgYnV0IGFub24gZm9saW8tXFx1MDAzZW1hcHBpbmdcXG5tbS9rc20uYzo5ODI6XFx0XFx0ICogaXMgcmVzZXQgdG8gTlVMTCBsYXRlciwgaW4gZnJlZV9wYWdlc19wcmVwYXJlKCkuXFxubW0va3NtLmMtOTgzLVxcdFxcdCAqL1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTYzPXR5cGVkZWYgaW50IF9fYml0d2lzZSBmcGlfdDtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy05Mi1cXG5tbS9wYWdlX2FsbG9jLmM6OTM6LyogZnJlZV9wYWdlc19wcmVwYXJlKCkgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9yIHBhZ2UocykgYmVpbmcgZnJlZWQuICovXFxubW0vcGFnZV9hbGxvYy5jLTk0LSNkZWZpbmUgRlBJX1BSRVBBUkVEXFx0XFx0KChfX2ZvcmNlIGZwaV90KUJJVCgzKSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0xMzA4PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2FsbG9jX3RhZ19zdWJfcGFnZXMoc3RydWN0IGFsbG9jX3RhZyAqdGFnLCB1bnNpZ25lZCBpbnQgbnIpIHt9XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTMxMS1cXG5tbS9wYWdlX2FsbG9jLmM6MTMxMjpzdGF0aWMgX19hbHdheXNfaW5saW5lIGJvb2wgX19mcmVlX3BhZ2VzX3ByZXBhcmUoc3RydWN0IHBhZ2UgKnBhZ2UsXFxubW0vcGFnZV9hbGxvYy5jLTEzMTMtXFx0XFx0dW5zaWduZWQgaW50IG9yZGVyLCBmcGlfdCBmcGlfZmxhZ3MpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMTQ0OC1cXG5tbS9wYWdlX2FsbG9jLmM6MTQ0OTpib29sIGZyZWVfcGFnZXNfcHJlcGFyZShzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbm1tL3BhZ2VfYWxsb2MuYy0xNDUwLXtcXG5tbS9wYWdlX2FsbG9jLmM6MTQ1MTpcXHRyZXR1cm4gX19mcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgb3JkZXIsIEZQSV9OT05FKTtcXG5tbS9wYWdlX2FsbG9jLmMtMTQ1Mi19XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9MTU3OD1zdGF0aWMgdm9pZCBfX2ZyZWVfcGFnZXNfb2soc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy0xNTgzLVxcbm1tL3BhZ2VfYWxsb2MuYzoxNTg0OlxcdGlmIChfX2ZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlciwgZnBpX2ZsYWdzKSlcXG5tbS9wYWdlX2FsbG9jLmMtMTU4NS1cXHRcXHRmcmVlX29uZV9wYWdlKHpvbmUsIHBhZ2UsIHBmbiwgb3JkZXIsIGZwaV9mbGFncyk7XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9MjkzNz1zdGF0aWMgdm9pZCBfX2ZyZWVfZnJvemVuX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMjk0OS1cXG5tbS9wYWdlX2FsbG9jLmM6Mjk1MDpcXHRpZiAoIV9fZnJlZV9wYWdlc19wcmVwYXJlKHBhZ2UsIG9yZGVyLCBmcGlfZmxhZ3MpKVxcbm1tL3BhZ2VfYWxsb2MuYy0yOTUxLVxcdFxcdHJldHVybjtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz0yOTk5PXZvaWQgZnJlZV91bnJlZl9mb2xpb3Moc3RydWN0IGZvbGlvX2JhdGNoICpmb2xpb3MpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtMzAxMC1cXG5tbS9wYWdlX2FsbG9jLmM6MzAxMTpcXHRcXHRpZiAoIV9fZnJlZV9wYWdlc19wcmVwYXJlKFxcdTAwMjZmb2xpby1cXHUwMDNlcGFnZSwgb3JkZXIsIEZQSV9OT05FKSlcXG5tbS9wYWdlX2FsbG9jLmMtMzAxMi1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz02ODQ2PXN0YXRpYyB2b2lkIGZyZWVfcHJlcGFyZWRfY29udGlnX3JhbmdlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTY4NjEtXFx0XFx0ICogRnJlZSB0aGUgY2h1bmsgYXMgYSBzaW5nbGUgYmxvY2suIE91ciBjYWxsZXIgaGFzIGFscmVhZHlcXG5tbS9wYWdlX2FsbG9jLmM6Njg2MjpcXHRcXHQgKiBjYWxsZWQgZnJlZV9wYWdlc19wcmVwYXJlKCkgZm9yIGVhY2ggb3JkZXItMCBwYWdlLlxcbm1tL3BhZ2VfYWxsb2MuYy02ODYzLVxcdFxcdCAqL1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTY4NzI9c3RhdGljIHZvaWQgX19mcmVlX2NvbnRpZ19yYW5nZV9jb21tb24odW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjg5Ni1cXHRcXHRpZiAoY2FuX2ZyZWUpXFxubW0vcGFnZV9hbGxvYy5jOjY4OTc6XFx0XFx0XFx0Y2FuX2ZyZWUgPSBmcmVlX3BhZ2VzX3ByZXBhcmUocGFnZSwgMCk7XFxubW0vcGFnZV9hbGxvYy5jLTY4OTgtXFxuLS1cXG5tbS9ybWFwLmM9MTc3Nj1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgX19mb2xpb19yZW1vdmVfcm1hcChzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxubW0vcm1hcC5jLTE4NzgtXFx0ICogd2hpY2ggaW5jcmVtZW50cyBtYXBjb3VudCBhZnRlciB1cyBidXQgc2V0cyBtYXBwaW5nIGJlZm9yZSB1czpcXG5tbS9ybWFwLmM6MTg3OTpcXHQgKiBzbyBsZWF2ZSB0aGUgcmVzZXQgdG8gZnJlZV9wYWdlc19wcmVwYXJlLCBhbmQgcmVtZW1iZXIgdGhhdFxcbm1tL3JtYXAuYy0xODgwLVxcdCAqIGl0J3Mgb25seSByZWxpYWJsZSB3aGlsZSBtYXBwZWQuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjMxLjkzMDczMjMyMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1OTE3NTE2MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgY29tcGFjdGlvbl9mcmVlYCBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBUaGUga2V5IG1vZGlmaWNhdGlvbiBpcyB3aXRoaW4gYGNvbXBhY3Rpb25fZnJlZWAsIHNwZWNpZmljYWxseSBpbiBgbW0vY29tcGFjdGlvbi5jYC4gSXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIGEgY2hlY2sgZm9yIHRoZSByZXR1cm4gdmFsdWUgb2YgYGZyZWVfcGFnZXNfcHJlcGFyZWAuIE5vdywgaW5zdGVhZCBvZiBibGluZGx5IGFkZGluZyB0aGUgcGFnZSB0byB0aGUgZnJlZSBsaXN0LCB0aGUgY29kZSB3aWxsIGV2YWx1YXRlIHdoYXQgYGZyZWVfcGFnZXNfcHJlcGFyZWAgcmV0dXJucy4gSWYgaXTigJlzIGBmYWxzZWAsIHRoZSBwYWdlIGlzbuKAmXQgYWRkZWQuIENsZWFybHksIHRoYXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbiBhdHRlbXB0IHRvIHByZXZlbnQgcGFnZSBpbnNlcnRpb24gdW5kZXIgc29tZSBjb25kaXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgY29uZGl0aW9uLlxuXG5UaGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgY29uZmlybSB0aGUgdXNhZ2Ugb2YgYGNvbXBhY3Rpb25fZnJlZWAgaW4gdGhlIGNvZGUsIHNvIHRoYXQgSSBjYW4gZmlndXJlIG91dCB3aHkgdGhlIGNvZGUgY2hhbmdlIHdvdWxkIGhhdmUgYmVlbiB1c2VmdWwuIEl0IGxvb2tzIGxpa2UgaXQgaXMgdXNlZCBhcyBhIGNhbGxiYWNrIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXQgdG8gaXRzIGNhbGwgc2l0ZXMgdG8gZnVsbHkgZ3Jhc3AgaXRzIGludGVuZGVkIGJlaGF2aW9yIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgbmV3IGNvbmRpdGlvbmFsLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHNjZW5hcmlvcyB3b3VsZCBsZWFkIHRvIGBmcmVlX3BhZ2VzX3ByZXBhcmVgIHJldHVybmluZyBgZmFsc2VgIGFuZCBob3cgdGhpcyBjaGFuZ2UgbWlnaHQgYWZmZWN0IG1lbW9yeSBtYW5hZ2VtZW50IGR1cmluZyBjb21wYWN0aW9uLiBUaGVyZSdzIGEgY29udGV4dCBJJ20gbWlzc2luZyBhdCB0aGUgbW9tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzk5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE1OjQwOjM2LjUyMjQ4NjMzNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ3OTUzODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29tcGFjdGlvbl9mcmVlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL2NvbXBhY3Rpb24uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9jb21wYWN0aW9uLmM9MTg2Mj1zdGF0aWMgc3RydWN0IGZvbGlvICpjb21wYWN0aW9uX2FsbG9jKHN0cnVjdCBmb2xpbyAqc3JjLCB1bnNpZ25lZCBsb25nIGRhdGEpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTg3MS0gKi9cXG5tbS9jb21wYWN0aW9uLmM6MTg3MjpzdGF0aWMgdm9pZCBjb21wYWN0aW9uX2ZyZWUoc3RydWN0IGZvbGlvICpkc3QsIHVuc2lnbmVkIGxvbmcgZGF0YSlcXG5tbS9jb21wYWN0aW9uLmMtMTg3My17XFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9MjUzMj1jb21wYWN0X3pvbmUoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHN0cnVjdCBjYXB0dXJlX2NvbnRyb2wgKmNhcGMpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMjY2OC1cXHRcXHRlcnIgPSBtaWdyYXRlX3BhZ2VzKFxcdTAwMjZjYy1cXHUwMDNlbWlncmF0ZXBhZ2VzLCBjb21wYWN0aW9uX2FsbG9jLFxcbm1tL2NvbXBhY3Rpb24uYzoyNjY5OlxcdFxcdFxcdFxcdGNvbXBhY3Rpb25fZnJlZSwgKHVuc2lnbmVkIGxvbmcpY2MsIGNjLVxcdTAwM2Vtb2RlLFxcbm1tL2NvbXBhY3Rpb24uYy0yNjcwLVxcdFxcdFxcdFxcdE1SX0NPTVBBQ1RJT04sIFxcdTAwMjZucl9zdWNjZWVkZWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDozNi42ODcyODY5NjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTMzMzk0Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgS2VybmVsIE1lbW9yeSBDb21wYWN0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgY29tcGFjdGlvbl9mcmVlYCBpcyBpbmRlZWQgYmVpbmcgcGFzc2VkIHRvIGBtaWdyYXRlX3BhZ2VzYCB3aXRoaW4gYGNvbXBhY3Rfem9uZWAuIFRoYXQncyBhIGtleSBwb2ludCDigJMgdGhhdCdzIHNvbWUgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBtZW1vcnkgY29tcGFjdGlvbiwgdGhlIGtpbmQgb2YgZnVuY3Rpb25hbGl0eSB0aGF0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBmb2N1cyBteSBlZmZvcnRzIG9uIHRoYXQgcGF0aC4gVGhlIHNwZWNpZmljIHN5bWJvbCBJIHNob3VsZCBiZSB6ZXJvaW5nIGluIG9uIGlzIGBjb21wYWN0aW9uX2ZyZWVgLCBvYnZpb3VzbHkuIE5vdywgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19DT01QQUNUSU9OYCBpcyBlbmFibGVkLCBhbmQgbWF5YmUgZ28gbG9vayBhdCBgbW0vTWFrZWZpbGVgIG9yIGBtbS9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgYGNvbXBhY3Rpb24uY2AgaXMgdGhlIHJpZ2h0IGZpbGUuIEknbSBidWlsZGluZyBhIGZ1enppbmcgY2FtcGFpZ24gYXJvdW5kIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MDEsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDo0MC4yMjA2ODM1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY2Mzk5NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29tcGFjdGlvblxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT01MT1vYmoteVxcdFxcdFxcdDo9IGZpbGVtYXAubyBtZW1wb29sLm8gb29tX2tpbGwubyBmYWR2aXNlLm8gXFxcXFxcbi0tXFxubW0vTWFrZWZpbGUtNTUtXFx0XFx0XFx0ICAgbW1faW5pdC5vIHBlcmNwdS5vIHNsYWJfY29tbW9uLm8gXFxcXFxcbm1tL01ha2VmaWxlOjU2OlxcdFxcdFxcdCAgIGNvbXBhY3Rpb24ubyBzaG93X21lbS5vIFxcXFxcXG5tbS9NYWtlZmlsZS01Ny1cXHRcXHRcXHQgICBpbnRlcnZhbF90cmVlLm8gbGlzdF9scnUubyB3b3JraW5nc2V0Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDo0MC4zMjczMzEyMTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU3NDQ4ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZvciBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgY29tcGFjdGlvbi5vYCBpbiB0aGUgTWVtb3J5IE1hbmFnZW1lbnQgTWFrZWZpbGUqKlxuXG5SaWdodCwgYGNvbXBhY3Rpb24ub2AgaXMgc2l0dGluZyB0aGVyZSwgbGlzdGVkIGluIGBvYmoteWAgd2l0aGluIHRoZSBgbW0vTWFrZWZpbGVgLiBUaGF0IHBsYWNlbWVudCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uIEJ1dCBiZWZvcmUgSSBtYWtlIGFueSBhc3N1bXB0aW9ucywgbXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBxdWlja2x5IGNvbmZpcm0gaWYgaXQncyB1bmNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIEkgbmVlZCB0byBydWxlIG91dCB0aGUgcG9zc2liaWxpdHkgb2YgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgb3IgYCNpZmRlZmAgYmxvY2tzIHRoYXQgbWlnaHQgZ2F0ZSBpdHMgaW5jbHVzaW9uIGJhc2VkIG9uIGNvbmZpZ3VyYXRpb24gZmxhZ3MuIExldCdzIGRpZyBkZWVwZXIgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYWx3YXlzIGluY2x1ZGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzg5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTU6NDA6NDMuMzg0NzgzODM3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY1MzQzOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0NPTVBBQ1RJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2NvbXBhY3Rpb24uYy0yOC1cXG5tbS9jb21wYWN0aW9uLmM6Mjk6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vY29tcGFjdGlvbi5jLTMwLS8qXFxuLS1cXG5tbS9jb21wYWN0aW9uLmM9NTk9c3RhdGljIGlubGluZSBib29sIGlzX3ZpYV9jb21wYWN0X21lbW9yeShpbnQgb3JkZXIpIHsgcmV0dXJuIGZhbHNlOyB9XFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtNjEtXFxubW0vY29tcGFjdGlvbi5jOjYyOiNpZiBkZWZpbmVkIENPTkZJR19DT01QQUNUSU9OIHx8IGRlZmluZWQgQ09ORklHX0NNQVxcbm1tL2NvbXBhY3Rpb24uYy02My1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz05MT1zdGF0aWMgdW5zaWduZWQgbG9uZyByZWxlYXNlX2ZyZWVfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpmcmVlcGFnZXMpXFxuLS1cXG5tbS9jb21wYWN0aW9uLmMtMTE1LVxcbm1tL2NvbXBhY3Rpb24uYzoxMTY6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vY29tcGFjdGlvbi5jLTExNy1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz00OTA9c3RhdGljIGJvb2wgdGVzdF9hbmRfc2V0X3NraXAoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHN0cnVjdCBwYWdlICpwYWdlKVxcbi0tXFxubW0vY29tcGFjdGlvbi5jLTQ5My19XFxubW0vY29tcGFjdGlvbi5jOjQ5NDojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5tbS9jb21wYWN0aW9uLmMtNDk1LVxcbi0tXFxubW0vY29tcGFjdGlvbi5jPTEzMzc9aXNvbGF0ZV9taWdyYXRlcGFnZXNfcmFuZ2Uoc3RydWN0IGNvbXBhY3RfY29udHJvbCAqY2MsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxcbi0tXFxubW0vY29tcGFjdGlvbi5jLTEzNzItXFxubW0vY29tcGFjdGlvbi5jOjEzNzM6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OIHx8IENPTkZJR19DTUEgKi9cXG5tbS9jb21wYWN0aW9uLmM6MTM3NDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS9jb21wYWN0aW9uLmMtMTM3NS1cXG4tLVxcbm1tL2NvbXBhY3Rpb24uYz0zMzUzPXN1YnN5c19pbml0Y2FsbChrY29tcGFjdGRfaW5pdClcXG5tbS9jb21wYWN0aW9uLmMtMzM1NC1cXG5tbS9jb21wYWN0aW9uLmM6MzM1NTojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG4tLVxcbm1tL2ludGVybmFsLmg9OTk5PXN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdF9zdWJzZWN0aW9uX21hcCh1bnNpZ25lZCBsb25nIHBmbixcXG4tLVxcbm1tL2ludGVybmFsLmgtMTAwNC1cXG5tbS9pbnRlcm5hbC5oOjEwMDU6I2lmIGRlZmluZWQgQ09ORklHX0NPTVBBQ1RJT04gfHwgZGVmaW5lZCBDT05GSUdfQ01BXFxubW0vaW50ZXJuYWwuaC0xMDA2LVxcbi0tXFxubW0vaW50ZXJuYWwuaD0xMDc0PXZvaWQgaW5pdF9jbWFfcmVzZXJ2ZWRfcGFnZWJsb2NrKHN0cnVjdCBwYWdlICpwYWdlKTtcXG5tbS9pbnRlcm5hbC5oLTEwNzUtXFxubW0vaW50ZXJuYWwuaDoxMDc2OiNlbmRpZiAvKiBDT05GSUdfQ09NUEFDVElPTiB8fCBDT05GSUdfQ01BICovXFxubW0vaW50ZXJuYWwuaC0xMDc3LVxcbi0tXFxubW0vbW1faW5pdC5jPTEzMzM9c3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCxcXG4tLVxcbm1tL21tX2luaXQuYy0xMzc1LVxcbm1tL21tX2luaXQuYzoxMzc2OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL21tX2luaXQuYy0xMzc3LXN0YXRpYyB2b2lkIHBnZGF0X2luaXRfa2NvbXBhY3RkKHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpXFxuLS1cXG5tbS9vb21fa2lsbC5jPTQ1Nj1zdGF0aWMgdm9pZCBkdW1wX2hlYWRlcihzdHJ1Y3Qgb29tX2NvbnRyb2wgKm9jKVxcbi0tXFxubW0vb29tX2tpbGwuYy00NjAtXFx0XFx0XFx0Y3VycmVudC1cXHUwMDNlc2lnbmFsLVxcdTAwM2Vvb21fc2NvcmVfYWRqKTtcXG5tbS9vb21fa2lsbC5jOjQ2MTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTVBBQ1RJT04pIFxcdTAwMjZcXHUwMDI2IG9jLVxcdTAwM2VvcmRlcilcXG5tbS9vb21fa2lsbC5jLTQ2Mi1cXHRcXHRwcl93YXJuKFxcXCJDT01QQUNUSU9OIGlzIGRpc2FibGVkISEhXFxcXG5cXFwiKTtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz03MTA9c3RhdGljIGlubGluZSB2b2lkIHNldF9idWRkeV9vcmRlcihzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTcxNS1cXG5tbS9wYWdlX2FsbG9jLmM6NzE2OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3BhZ2VfYWxsb2MuYy03MTctc3RhdGljIGlubGluZSBzdHJ1Y3QgY2FwdHVyZV9jb250cm9sICp0YXNrX2NhcGMoc3RydWN0IHpvbmUgKnpvbmUpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NzY1PWNvbXBhY3Rpb25fY2FwdHVyZShzdHJ1Y3QgY2FwdHVyZV9jb250cm9sICpjYXBjLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy03NjktfVxcbm1tL3BhZ2VfYWxsb2MuYzo3NzA6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OICovXFxubW0vcGFnZV9hbGxvYy5jLTc3MS1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz00MDQ3PV9fYWxsb2NfcGFnZXNfbWF5X29vbShnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTQxMzgtXFxubW0vcGFnZV9hbGxvYy5jOjQxMzk6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0vcGFnZV9hbGxvYy5jLTQxNDAtLyogVHJ5IG1lbW9yeSBjb21wYWN0aW9uIGZvciBoaWdoLW9yZGVyIGFsbG9jYXRpb25zIGJlZm9yZSByZWNsYWltICovXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NDI3OT1zaG91bGRfY29tcGFjdF9yZXRyeShnZnBfdCBnZnBfbWFzaywgc3RydWN0IGFsbG9jX2NvbnRleHQgKmFjLCBpbnQgb3JkZXIsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNDMwNC19XFxubW0vcGFnZV9hbGxvYy5jOjQzMDU6I2VuZGlmIC8qIENPTkZJR19DT01QQUNUSU9OICovXFxubW0vcGFnZV9hbGxvYy5jLTQzMDYtXFxuLS1cXG5tbS92bXNjYW4uYz02MzMxPXN0YXRpYyB2b2lkIHNocmlua196b25lcyhzdHJ1Y3Qgem9uZWxpc3QgKnpvbmVsaXN0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYylcXG4tLVxcbm1tL3Ztc2Nhbi5jLTYzNzEtXFx0XFx0XFx0ICovXFxubW0vdm1zY2FuLmM6NjM3MjpcXHRcXHRcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfQ09NUEFDVElPTikgXFx1MDAyNlxcdTAwMjZcXG5tbS92bXNjYW4uYy02MzczLVxcdFxcdFxcdCAgICBzYy1cXHUwMDNlb3JkZXIgXFx1MDAzZSBQQUdFX0FMTE9DX0NPU1RMWV9PUkRFUiBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubW0vdm1zdGF0LmM9MTA0Mj12b2lkIG1lbW1hcF9wYWdlc19hZGQobG9uZyBkZWx0YSlcXG4tLVxcbm1tL3Ztc3RhdC5jLTEwNDYtXFxubW0vdm1zdGF0LmM6MTA0NzojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS92bXN0YXQuYy0xMDQ4LVxcbi0tXFxubW0vdm1zdGF0LmM9MTE4Nz1jb25zdCBjaGFyICogY29uc3Qgdm1zdGF0X3RleHRbXSA9IHtcXG4tLVxcbm1tL3Ztc3RhdC5jLTEzNzAtI2VuZGlmXFxubW0vdm1zdGF0LmM6MTM3MTojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS92bXN0YXQuYy0xMzcyLVxcdFtJKENPTVBBQ1RNSUdSQVRFX1NDQU5ORUQpXVxcdFxcdD0gXFxcImNvbXBhY3RfbWlncmF0ZV9zY2FubmVkXFxcIixcXG4tLVxcbm1tL3Ztc3RhdC5jLTE0OTYtXFxubW0vdm1zdGF0LmM6MTQ5NzojaWYgKGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19DT01QQUNUSU9OKSkgfHwgXFxcXFxcbm1tL3Ztc3RhdC5jLTE0OTgtICAgICBkZWZpbmVkKENPTkZJR19QUk9DX0ZTKVxcbi0tXFxubW0vdm1zdGF0LmM9MjI2OD12b2lkIF9faW5pdCBpbml0X21tX2ludGVybmFscyh2b2lkKVxcbi0tXFxubW0vdm1zdGF0LmMtMjMwMS1cXG5tbS92bXN0YXQuYzoyMzAyOiNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfQ09NUEFDVElPTilcXG5tbS92bXN0YXQuYy0yMzAzLVxcbi0tXFxubW0venNtYWxsb2MuYz0xOTk9c3RydWN0IHpzX3Bvb2wge1xcbi0tXFxubW0venNtYWxsb2MuYy0yMTMtI2VuZGlmXFxubW0venNtYWxsb2MuYzoyMTQ6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0yMTUtXFx0c3RydWN0IHdvcmtfc3RydWN0IGZyZWVfd29yaztcXG4tLVxcbm1tL3pzbWFsbG9jLmM9MzYwPXN0YXRpYyBib29sIFpzSHVnZVBhZ2Uoc3RydWN0IHpzcGFnZSAqenNwYWdlKVxcbi0tXFxubW0venNtYWxsb2MuYy0zNjQtXFxubW0venNtYWxsb2MuYzozNjU6I2lmZGVmIENPTkZJR19DT01QQUNUSU9OXFxubW0venNtYWxsb2MuYy0zNjYtc3RhdGljIHZvaWQga2lja19kZWZlcnJlZF9mcmVlKHN0cnVjdCB6c19wb29sICpwb29sKTtcXG4tLVxcbm1tL3pzbWFsbG9jLmM9OTMxPXN0YXRpYyBzdHJ1Y3QgenNwYWdlICphbGxvY196c3BhZ2Uoc3RydWN0IHpzX3Bvb2wgKnBvb2wsXFxuLS1cXG5tbS96c21hbGxvYy5jLTk0MS1cXG5tbS96c21hbGxvYy5jOjk0MjpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0NPTVBBQ1RJT04pKVxcbm1tL3pzbWFsbG9jLmMtOTQzLVxcdFxcdGdmcCBcXHUwMDI2PSB+X19HRlBfTU9WQUJMRTtcXG4tLVxcbm1tL3pzbWFsbG9jLmM9MTU5ND1zdGF0aWMgaW50IHB1dGJhY2tfenNwYWdlKHN0cnVjdCBzaXplX2NsYXNzICpjbGFzcywgc3RydWN0IHpzcGFnZSAqenNwYWdlKVxcbi0tXFxubW0venNtYWxsb2MuYy0xNjAzLVxcbm1tL3pzbWFsbG9jLmM6MTYwNDojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTE2MDUtLypcXG4tLVxcbm1tL3pzbWFsbG9jLmM9MTYwOT1zdGF0aWMgdm9pZCBsb2NrX3pzcGFnZShzdHJ1Y3QgenNwYWdlICp6c3BhZ2UpXFxuLS1cXG5tbS96c21hbGxvYy5jLTE2NDUtfVxcbm1tL3pzbWFsbG9jLmM6MTY0NjojZW5kaWYgLyogQ09ORklHX0NPTVBBQ1RJT04gKi9cXG5tbS96c21hbGxvYy5jLTE2NDctXFxubW0venNtYWxsb2MuYzoxNjQ4OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3pzbWFsbG9jLmMtMTY0OS1cXG4tLVxcbm1tL3pzbWFsbG9jLmM9MjIzNz1zdGF0aWMgaW50IF9faW5pdCB6c19pbml0KHZvaWQpXFxuLS1cXG5tbS96c21hbGxvYy5jLTIyNDQtXFxubW0venNtYWxsb2MuYzoyMjQ1OiNpZmRlZiBDT05GSUdfQ09NUEFDVElPTlxcbm1tL3pzbWFsbG9jLmMtMjI0Ni1cXHRyYyA9IHNldF9tb3ZhYmxlX29wcyhcXHUwMDI2enNtYWxsb2NfbW9wcywgUEdUWV96c21hbGxvYyk7XFxuLS1cXG5tbS96c21hbGxvYy5jPTIyNTY9c3RhdGljIHZvaWQgX19leGl0IHpzX2V4aXQodm9pZClcXG5tbS96c21hbGxvYy5jLTIyNTcte1xcbm1tL3pzbWFsbG9jLmM6MjI1ODojaWZkZWYgQ09ORklHX0NPTVBBQ1RJT05cXG5tbS96c21hbGxvYy5jLTIyNTktXFx0c2V0X21vdmFibGVfb3BzKE5VTEwsIFBHVFlfenNtYWxsb2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDo0My41MzEzMjk4ODNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY4MTEyNTc2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1lbW9yeSBDb21wYWN0aW9uIExvZ2ljKipcblxuT2theSwgc28gdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiBoZXJlIGlzIGBDT05GSUdfQ09NUEFDVElPTmAuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgY29tcGFjdGlvbl9mcmVlYCBpcyBpbmRlZWQgcmVhY2hhYmxlLCBhbmQgaXQgaXMuIEl0J3MgYSBjYWxsYmFjayBwYXNzZWQgdG8gYG1pZ3JhdGVfcGFnZXNgIHdpdGhpbiBgY29tcGFjdF96b25lYC4gYGNvbXBhY3Rfem9uZWAgZ2V0cyBjYWxsZWQgZnJvbSBgY29tcGFjdF96b25lX29yZGVyYCwgYGtjb21wYWN0ZF9kb193b3JrYCwgb3IgYHRyeV90b19jb21wYWN0X3BhZ2VzYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGluIHRoZSBjb3JlIGtlcm5lbCBsb2dpYywgbm8gZG91YnQgYWJvdXQgaXQuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSwgaXMgYENPTkZJR19DT01QQUNUSU9OYCB0aGUgb25seSByZWxldmFudCBjb25maWcgaGVyZT8gWWVzLCBpdCBhcHBlYXJzIHRvIGJlLlxuXG5MZXQgbWUgdGFrZSBhbm90aGVyIGxvb2sgYXQgYGNvbXBhY3Rpb25fZnJlZWAuXG5cbmBgYGNcbnN0YXRpYyB2b2lkIGNvbXBhY3Rpb25fZnJlZShzdHJ1Y3QgZm9saW8gKmRzdCwgdW5zaWduZWQgbG9uZyBkYXRhKVxue1xuXHRzdHJ1Y3QgY29tcGFjdF9jb250cm9sICpjYyA9IChzdHJ1Y3QgY29tcGFjdF9jb250cm9sICopZGF0YTtcblx0aW50IG9yZGVyID0gZm9saW9fb3JkZXIoZHN0KTtcblx0c3RydWN0IHBhZ2UgKnBhZ2UgPSBcdTAwMjZkc3QtXHUwMDNlcGFnZTtcblxuXHRpZiAoZm9saW9fcHV0X3Rlc3R6ZXJvKGRzdCkgXHUwMDI2XHUwMDI2IGZyZWVfcGFnZXNfcHJlcGFyZShwYWdlLCBvcmRlcikpIHtcblx0XHRsaXN0X2FkZChcdTAwMjZkc3QtXHUwMDNlbHJ1LCBcdTAwMjZjYy1cdTAwM2VmcmVlcGFnZXNbb3JkZXJdKTtcblx0XHRjYy1cdTAwM2Vucl9mcmVlcGFnZXMgKz0gMSBcdTAwM2NcdTAwM2Mgb3JkZXI7XG5cdH1cblx0Y2MtXHUwMDNlbnJfbWlncmF0ZXBhZ2VzICs9IDEgXHUwMDNjXHUwMDNjIG9yZGVyO1xuXHQvKlxuXHQgKiBzb21lb25lIGVsc2UgaGFzIHJlZmVyZW5jZWQgdGhlIHBhZ2Ugb3IgZnJlZV9wYWdlc19wcmVwYXJlKCkgZmFpbHMsXG5cdCAqIHdlIGNhbm5vdCB0YWtlIGl0IGJhY2sgdG8gb3VyIGZyZWUgbGlzdC5cblx0ICovXG59XG5gYGBcblxuUmlnaHQsIEkgc2VlIHRoZSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhlIHBhdGNoIG1vZGlmaWVzIGBjb21wYWN0aW9uX2ZyZWVgIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgYGZyZWVfcGFnZXNfcHJlcGFyZWAgYmVmb3JlIGFkZGluZyB0aGUgcGFnZSB0byB0aGUgZnJlZSBsaXN0LiBUaGlzIGZpeGVzIGEgYnVnIHdoZXJlIGBmcmVlX3BhZ2VzX3ByZXBhcmVgIGNvdWxkIGZhaWwsIGJ1dCB0aGUgcGFnZSB3YXMgc3RpbGwgYWRkZWQgdG8gdGhlIGZyZWUgbGlzdC4gU28sIGl0J3MgYSBjcml0aWNhbCBhZGp1c3RtZW50IGluIHRoZSBtZW1vcnkgY29tcGFjdGlvbiBwcm9jZXNzLlxuXG5JIG5lZWQgdG8gZm9jdXMgb24gYGNvbXBhY3Rpb25fZnJlZWAgYXMgdGhlIHByaW1hcnkgc3ltYm9sIGhlcmUuIGBDT05GSUdfQ09NUEFDVElPTmAgbmVlZHMgdG8gYmUgZW5hYmxlZC4gSSB0aGluayB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCBxdWlja2x5IGNoZWNrIGZvciBvdGhlciByZWxldmFudCBmdW5jdGlvbnMsIGJ1dCBpdCBsb29rcyBsaWtlIGBjb21wYWN0aW9uX2ZyZWVgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIG1vZGlmaWVkLlxuXG5UaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYy4gSXQgZW5zdXJlcyB0aGF0IG9ubHkgcHJvcGVybHkgcHJlcGFyZWQgcGFnZXMgZ2V0IGFkZGVkIHRvIHRoZSBmcmVlIGxpc3QuXG5cbkxldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI3MiwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNTo0MDo1MS4yMTI0NTcwOTVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDUwMzk1MDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNPTVBBQ1RJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjb21wYWN0aW9uX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb21wYWN0aW9uX2ZyZWUgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBmcmVlX3BhZ2VzX3ByZXBhcmUgYmVmb3JlIGFkZGluZyBhIHBhZ2UgdG8gdGhlIGZyZWUgbGlzdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBjb21wYWN0aW9uIGxvZ2ljIHRoYXQgcHJldmVudHMgYWRkaW5nIGltcHJvcGVybHkgcHJlcGFyZWQgcGFnZXMgdG8gdGhlIGZyZWUgbGlzdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDT01QQUNUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY29tcGFjdGlvbl9mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29tcGFjdGlvbl9mcmVlIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgZnJlZV9wYWdlc19wcmVwYXJlIGJlZm9yZSBhZGRpbmcgYSBwYWdlIHRvIHRoZSBmcmVlIGxpc3QuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgY29tcGFjdGlvbiBsb2dpYyB0aGF0IHByZXZlbnRzIGFkZGluZyBpbXByb3Blcmx5IHByZXBhcmVkIHBhZ2VzIHRvIHRoZSBmcmVlIGxpc3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowspzrp[1] Phase: Succeeded StartedAt: 2026-06-22 15:41:38 +0000 UTC FinishedAt: 2026-06-22 15:41:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspzrp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-22 15:41:38 +0000 UTC FinishedAt: 2026-06-22 15:41:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspzrp[2] Phase: Succeeded StartedAt: 2026-06-22 15:41:38 +0000 UTC FinishedAt: 2026-06-22 15:59:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspzrp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["compaction_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"537b3cd2-79ca-474c-b210-079f6da86a1b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-06-22 15:41:39 +0000 UTC FinishedAt: 2026-06-22 15:59:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["compaction_free"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"537b3cd2-79ca-474c-b210-079f6da86a1b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowspzrp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["compaction_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"537b3cd2-79ca-474c-b210-079f6da86a1b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-22 15:41:39 +0000 UTC FinishedAt: 2026-06-22 15:42:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspzrp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["compaction_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"537b3cd2-79ca-474c-b210-079f6da86a1b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-22 15:41:39 +0000 UTC FinishedAt: 2026-06-22 15:41:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowspzrp/series-workflowspzrp-convert-artifact-1775866267/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspzrp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["compaction_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"537b3cd2-79ca-474c-b210-079f6da86a1b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-22 15:42:01 +0000 UTC FinishedAt: 2026-06-22 15:59:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspzrp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["compaction_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"537b3cd2-79ca-474c-b210-079f6da86a1b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-22 15:42:01 +0000 UTC FinishedAt: 2026-06-22 15:59:20 +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:*e034521f-3a6b-4041-9498-734fbea7f3f3,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-workflowspzrp/series-workflowspzrp-convert-artifact-1775866267/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": "1508a391-56d4-498a-b8ca-3ecb6d947103", "success": false },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-workflowspzrp/series-workflowspzrp-build-action-2064588249/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspzrp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["compaction_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"537b3cd2-79ca-474c-b210-079f6da86a1b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-22 15:42:01 +0000 UTC FinishedAt: 2026-06-22 15:58:56 +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:*e034521f-3a6b-4041-9498-734fbea7f3f3,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-workflowspzrp/series-workflowspzrp-convert-artifact-1775866267/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": "1508a391-56d4-498a-b8ca-3ecb6d947103", "success": false },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-workflowspzrp/series-workflowspzrp-build-action-2064588249/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowspzrp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["compaction_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"537b3cd2-79ca-474c-b210-079f6da86a1b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Failed StartedAt: 2026-06-22 15:59:20 +0000 UTC FinishedAt: 2026-06-22 15:59:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowspzrp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["compaction_free"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"13a1e1a618858407fa12c391f664ea750651f6b2","config_name":"upstream-apparmor-kasan.config","enable_configs":["COMPACTION"],"series_id":"537b3cd2-79ca-474c-b210-079f6da86a1b","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Failed StartedAt: 2026-06-22 15:59:20 +0000 UTC FinishedAt: 2026-06-22 15:59:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}