Name: series-workflow45swr Phase: Succeeded StartedAt: 2026-08-13 12:47:36 +0000 UTC FinishedAt: 2026-08-13 16:34:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[0] Phase: Succeeded StartedAt: 2026-08-13 12:47:36 +0000 UTC FinishedAt: 2026-08-13 12:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 12:47:36 +0000 UTC FinishedAt: 2026-08-13 12:50:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "6f033615ef8fb2374daa7e50a8ff68616bc850d2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "6f033615ef8fb2374daa7e50a8ff68616bc850d2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "ff8e39ea-0f98-4e61-8298-627bf62f2974" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_check" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBCUEYgdmVyaWZpZXIgaXNzdWUgd2hlcmUgdGhlIHBvaW50ZXIgdHlwZSBmb3IgYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIChSTVcpIGluc3RydWN0aW9ucyB3YXMgb25seSBzYXZlZCBmb3IgYXJlbmEgcG9pbnRlcnMuIEJ5IHNhdmluZyB0aGUgcG9pbnRlciB0eXBlIGZvciBhbGwgcG9pbnRlciB0eXBlcywgaXQgcHJldmVudHMgYSBzaW5nbGUgaW5zdHJ1Y3Rpb24gZnJvbSBiZWluZyB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXIgdHlwZXMgKGUuZy4sIGJvdGggYXJlbmEgYW5kIG1hcCB2YWx1ZSBwb2ludGVycykgYWNyb3NzIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aHMuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIHR5cGUgY29uZnVzaW9uIGFuZCBpbmNvcnJlY3QgSklUIGNvbXBpbGF0aW9uLCB3aGljaCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlc2UgdHlwZXMgb2YgYnVncyBhcmUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGNhdWdodCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHNhdmUgdGhlIGF1eGlsaWFyeSBwb2ludGVyIHR5cGUgZm9yIGFsbCBhdG9taWMgUk1XIG9wZXJhdGlvbnMsIG5vdCBqdXN0IGFyZW5hIHBvaW50ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBhdG9taWMgb3BlcmF0aW9ucyBhbmQgcG9pbnRlciB0eXBlcy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgQlBGIHByb2dyYW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWUyM2VkNWE0NmE2MmZjYTcwNzM2NmU3NzU1YjY4NDk1OTYwNDgzN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDEyOjQ5OjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMTY0ZDE2YzI0M2NhNi4uM2Q2NzJmNjY2NWJlYyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtNjUwOSwxMSAmIzQzOzY1MDksOSBAQCBzdGF0aWMgaW50IGNoZWNrX2F0b21pY19ybXcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRpZiAoaXNfYXJlbmFfcmVnKGVudiwgaW5zbi1cdTAwM2Vkc3RfcmVnKSkge1xuLVx0XHRlcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIFBUUl9UT19BUkVOQSwgZmFsc2UpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdHJldHVybiBlcnI7XG4tXHR9XG4mIzQzO1x0ZXJyID0gc2F2ZV9hdXhfcHRyX3R5cGUoZW52LCBkc3RfcmVnLVx1MDAzZXR5cGUsIGZhbHNlKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcdC8qIENoZWNrIHdoZXRoZXIgd2UgY2FuIHdyaXRlIGludG8gdGhlIHNhbWUgbWVtb3J5LiAqL1xuIFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSwgaW5zbi1cdTAwM2VvZmYsXG4gXHRcdFx0ICAgICAgIEJQRl9TSVpFKGluc24tXHUwMDNlY29kZSksIEJQRl9XUklURSwgLTEsIHRydWUsIGZhbHNlKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXG5pbmRleCBiMjQxYmJjZjU0YThhLi4yZTQzZGExODgxOTRiIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXG5AQCAtMjUsNiAmIzQzOzI1LDE1IEBAIHN0cnVjdCB7XG4gXHRfX3Vsb25nKG1hcF9leHRyYSwgQVJFTkFfVk1fU1RBUlQpOyAvKiBzdGFydCBvZiBtbWFwKCkgcmVnaW9uICovXG4gfSBhcmVuYSBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspO1xuIFxuJiM0MztzdHJ1Y3Qge1xuJiM0MztcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJSQVkpO1xuJiM0MztcdF9fdWludChtYXhfZW50cmllcywgMSk7XG4mIzQzO1x0X190eXBlKGtleSwgX191MzIpO1xuJiM0MztcdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xuJiM0Mzt9IGF0b21pY19tYXAgU0VDKFwmIzM0Oy5tYXBzXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBfX3U2NCBhcmVuYV9hdG9taWNfdGFyZ2V0IFNFQyhcJiMzNDsuYWRkcl9zcGFjZS4xXCYjMzQ7KTtcbiYjNDM7XG4gU0VDKFwmIzM0O3NvY2tldFwmIzM0OylcbiBfX3N1Y2Nlc3MgX19yZXR2YWwoMClcbiBpbnQgYmFzaWNfYWxsb2MxX25vc2xlZXAodm9pZCAqY3R4KVxuQEAgLTYzNyw2ICYjNDM7NjQ2LDQxIEBAIGludCBub25fYXJlbmFfcHRyX2FkZF90b19hcmVuYV9wdHIodm9pZCAqY3R4KVxuIFxuICNlbmRpZlxuIFxuJiM0MztTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuJiM0MztfX2Rlc2NyaXB0aW9uKFwmIzM0O2FyZW5hIGFuZCBtYXAgdmFsdWUgYXRvbWljIGF0IHRoZSBzYW1lIGluc3RydWN0aW9uXCYjMzQ7KVxuJiM0MztfX2ZhaWx1cmUgX19tc2coXCYjMzQ7c2FtZSBpbnNuIGNhbm5vdCBiZSB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXJzXCYjMzQ7KVxuJiM0MztfX2FyY2hfeDg2XzY0XG4mIzQzO19fbG9hZF9pZl9KSVRlZCgpXG4mIzQzO19fbmFrZWQgdm9pZCBtaXhlZF9hcmVuYV9tYXBfdmFsdWVfYXRvbWljKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFwmIzM0O1x0XHRcdFx0XHRcXFxuJiM0MztcdHIxID0gMDtcdFx0XHRcdFx0XFxcbiYjNDM7XHQqKHUzMiAqKShyMTAgLSA0KSA9IHIxO1x0XHRcdFxcXG4mIzQzO1x0cjIgPSByMTA7XHRcdFx0XHRcdFxcXG4mIzQzO1x0cjIgJiM0Mzs9IC00O1x0XHRcdFx0XHRcXFxuJiM0MztcdHIxID0gJVthdG9taWNfbWFwXSBsbDtcdFx0XHRcdFxcXG4mIzQzO1x0Y2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dO1x0XHRcdFxcXG4mIzQzO1x0aWYgcjAgPT0gMCBnb3RvIDFmO1x0XHRcdFx0XFxcbiYjNDM7XHRyNiA9IHIwO1x0XHRcdFx0XHRcXFxuJiM0MztcdHI3ID0gJVthcmVuYV9hdG9taWNfdGFyZ2V0XSBsbDtcdFx0XHRcXFxuJiM0MztcdC5ieXRlIDB4YmY7IC5ieXRlIDB4Nzc7IC5zaG9ydCAxOyAubG9uZyAxO1x0XFxcbiYjNDM7XHRjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XHRcdFx0XFxcbiYjNDM7XHRpZiB3MCAhPSAwIGdvdG8gMmY7XHRcdFx0XHRcXFxuJiM0MztcdHI4ID0gcjY7XHRcdFx0XHRcdFxcXG4mIzQzO1x0Z290byAzZjtcdFx0XHRcdFx0XFxcbiYjNDM7MjpcdHI4ID0gcjc7XHRcdFx0XHRcdFxcXG4mIzQzOzM6XHRyOSA9IDE7XHRcdFx0XHRcdFxcXG4mIzQzO1x0bG9jayAqKHU2NCAqKShyOCAmIzQzOyAwKSAmIzQzOz0gcjk7XHRcdFx0XFxcbiYjNDM7MTpcdHIwID0gMDtcdFx0XHRcdFx0XFxcbiYjNDM7XHRleGl0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1wmIzM0O1x0OlxuJiM0MztcdDogX19pbW1fYWRkcihhdG9taWNfbWFwKSxcbiYjNDM7XHQgIF9faW1tX2FkZHIoYXJlbmFfYXRvbWljX3RhcmdldCksXG4mIzQzO1x0ICBfX2ltbShicGZfbWFwX2xvb2t1cF9lbGVtKSxcbiYjNDM7XHQgIF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpXG4mIzQzO1x0OiBfX2Nsb2JiZXJfYWxsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgX19ub2lubGluZVxuIHUzMiBfX2FyZW5hICpjaGVja19hcmVuYV9hcmdfbm9uZ2xvYmFsKHUzMiBfX2FyZW5hICphcmcpXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHNhdmUgdGhlIGF1eGlsaWFyeSBwb2ludGVyIHR5cGUgZm9yIGFsbCBhdG9taWMgUk1XIG9wZXJhdGlvbnMsIG5vdCBqdXN0IGFyZW5hIHBvaW50ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBhdG9taWMgb3BlcmF0aW9ucyBhbmQgcG9pbnRlciB0eXBlcy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgQlBGIHByb2dyYW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWUyM2VkNWE0NmE2MmZjYTcwNzM2NmU3NzU1YjY4NDk1OTYwNDgzNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDEyOjQ5OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDE2NGQxNmMyNDNjYTYuLjNkNjcyZjY2NjViZWMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTY1MDksMTEgJiM0Mzs2NTA5LDkgQEAgc3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCWlmIChpc19hcmVuYV9yZWcoZW52LCBpbnNuLSZndDtkc3RfcmVnKSkgewotCQllcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIFBUUl9UT19BUkVOQSwgZmFsc2UpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQl9CiYjNDM7CWVyciA9IHNhdmVfYXV4X3B0cl90eXBlKGVudiwgZHN0X3JlZy0mZ3Q7dHlwZSwgZmFsc2UpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKIAkvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiB3cml0ZSBpbnRvIHRoZSBzYW1lIG1lbW9yeS4gKi8KIAllcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LSZndDtpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi0mZ3Q7ZHN0X3JlZyksIGluc24tJmd0O29mZiwKIAkJCSAgICAgICBCUEZfU0laRShpbnNuLSZndDtjb2RlKSwgQlBGX1dSSVRFLCAtMSwgdHJ1ZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYwppbmRleCBiMjQxYmJjZjU0YThhLi4yZTQzZGExODgxOTRiIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYwpAQCAtMjUsNiAmIzQzOzI1LDE1IEBAIHN0cnVjdCB7CiAJX191bG9uZyhtYXBfZXh0cmEsIEFSRU5BX1ZNX1NUQVJUKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqLwogfSBhcmVuYSBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKIAomIzQzO3N0cnVjdCB7CiYjNDM7CV9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJSQVkpOwomIzQzOwlfX3VpbnQobWF4X2VudHJpZXMsIDEpOwomIzQzOwlfX3R5cGUoa2V5LCBfX3UzMik7CiYjNDM7CV9fdHlwZSh2YWx1ZSwgX191NjQpOwomIzQzO30gYXRvbWljX21hcCBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKJiM0MzsKJiM0MztzdGF0aWMgX191NjQgYXJlbmFfYXRvbWljX3RhcmdldCBTRUMoJiMzNDsuYWRkcl9zcGFjZS4xJiMzNDspOwomIzQzOwogU0VDKCYjMzQ7c29ja2V0JiMzNDspCiBfX3N1Y2Nlc3MgX19yZXR2YWwoMCkKIGludCBiYXNpY19hbGxvYzFfbm9zbGVlcCh2b2lkICpjdHgpCkBAIC02MzcsNiAmIzQzOzY0Niw0MSBAQCBpbnQgbm9uX2FyZW5hX3B0cl9hZGRfdG9fYXJlbmFfcHRyKHZvaWQgKmN0eCkKIAogI2VuZGlmCiAKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7YXJlbmEgYW5kIG1hcCB2YWx1ZSBhdG9taWMgYXQgdGhlIHNhbWUgaW5zdHJ1Y3Rpb24mIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtzYW1lIGluc24gY2Fubm90IGJlIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlcnMmIzM0OykKJiM0MztfX2FyY2hfeDg2XzY0CiYjNDM7X19sb2FkX2lmX0pJVGVkKCkKJiM0MztfX25ha2VkIHZvaWQgbWl4ZWRfYXJlbmFfbWFwX3ZhbHVlX2F0b21pYyh2b2lkKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlICgmIzM0OwkJCQkJXAomIzQzOwlyMSA9IDA7CQkJCQlcCiYjNDM7CSoodTMyICopKHIxMCAtIDQpID0gcjE7CQkJXAomIzQzOwlyMiA9IHIxMDsJCQkJCVwKJiM0MzsJcjIgJiM0Mzs9IC00OwkJCQkJXAomIzQzOwlyMSA9ICVbYXRvbWljX21hcF0gbGw7CQkJCVwKJiM0MzsJY2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dOwkJCVwKJiM0MzsJaWYgcjAgPT0gMCBnb3RvIDFmOwkJCQlcCiYjNDM7CXI2ID0gcjA7CQkJCQlcCiYjNDM7CXI3ID0gJVthcmVuYV9hdG9taWNfdGFyZ2V0XSBsbDsJCQlcCiYjNDM7CS5ieXRlIDB4YmY7IC5ieXRlIDB4Nzc7IC5zaG9ydCAxOyAubG9uZyAxOwlcCiYjNDM7CWNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTsJCQlcCiYjNDM7CWlmIHcwICE9IDAgZ290byAyZjsJCQkJXAomIzQzOwlyOCA9IHI2OwkJCQkJXAomIzQzOwlnb3RvIDNmOwkJCQkJXAomIzQzOzI6CXI4ID0gcjc7CQkJCQlcCiYjNDM7MzoJcjkgPSAxOwkJCQkJXAomIzQzOwlsb2NrICoodTY0ICopKHI4ICYjNDM7IDApICYjNDM7PSByOTsJCQlcCiYjNDM7MToJcjAgPSAwOwkJCQkJXAomIzQzOwlleGl0OwkJCQkJCVwKJiM0MzsmIzM0Owk6CiYjNDM7CTogX19pbW1fYWRkcihhdG9taWNfbWFwKSwKJiM0MzsJICBfX2ltbV9hZGRyKGFyZW5hX2F0b21pY190YXJnZXQpLAomIzQzOwkgIF9faW1tKGJwZl9tYXBfbG9va3VwX2VsZW0pLAomIzQzOwkgIF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpCiYjNDM7CTogX19jbG9iYmVyX2FsbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIF9fbm9pbmxpbmUKIHUzMiBfX2FyZW5hICpjaGVja19hcmVuYV9hcmdfbm9uZ2xvYmFsKHUzMiBfX2FyZW5hICphcmcpCiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBpdCBoYW5kbGVzIGF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoUk1XKSBvcGVyYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgaW4gYGNoZWNrX2F0b21pY19ybXdgLCBhbmQgdGhlIGNvcmUgb2YgaXQgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHJlcGxhY2VtZW50OiBpbnN0ZWFkIG9mIG9ubHkgc2F2aW5nIHRoZSBhdXhpbGlhcnkgcG9pbnRlciB0eXBlIHdoZW4gdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIChgZHN0X3JlZ2ApIGlzIGFuIGFyZW5hIHJlZ2lzdGVyLCBpdCBub3cgc2F2ZXMgdGhlIHR5cGUgZm9yICphbGwqIGF0b21pYyBSTVcgb3BlcmF0aW9ucy4KClRoZSBvcmlnaW5hbCBjb2RlIHNuaXBwZXQgd2FzOgoKYGBgYwotCWlmIChpc19hcmVuYV9yZWcoZW52LCBpbnNuLSZndDtkc3RfcmVnKSkgewotCQllcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIFBUUl9UT19BUkVOQSwgZmFsc2UpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQl9CiYjNDM7CWVyciA9IHNhdmVfYXV4X3B0cl90eXBlKGVudiwgZHN0X3JlZy0mZ3Q7dHlwZSwgZmFsc2UpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKYGBgCgpUaGlzIGVuc3VyZXMgY29uc2lzdGVuY3kgYnkgcHJldmVudGluZyB0aGUgc2FtZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcy4gVGhlIGFkZGVkIHNlbGZ0ZXN0IGNvbmZpcm1zIHRoaXMuIFNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBmb3IgdGhlIGJldHRlci4gVGhpcyBpcyBnb29kOyBpdCYjMzk7cyBlbmZvcmNpbmcgc3RyaWN0ZXIgcG9pbnRlciB0eXBlIGNoZWNraW5nIGR1cmluZyBCUEYgdmVyaWZpY2F0aW9uLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgdmVyaWZ5IGBjaGVja19hdG9taWNfcm13YCBhbmQgYHNhdmVfYXV4X3B0cl90eXBlYCBtb3JlIGNsb3NlbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIGNvbmZpcm0gdGhlIHJlYXNvbmluZywgZXNwZWNpYWxseSBpZiB0aGUgY2hhbmdlIGhhcyBicm9hZGVyIGVmZmVjdHMuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIGF0b21pYyBvcGVyYXRpb25zIGFuZCBwb3RlbnRpYWwgcG9pbnRlciB0eXBlIGNvbmZ1c2lvbiwgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gVGhlIGtleSBmb2N1cyBoZXJlIHdpbGwgYmUgdGhlIGBjaGVja19hdG9taWNfcm13YCBmdW5jdGlvbi4gR2l2ZW4gdGhpcyBpcyBCUEYtcmVsYXRlZCwgSSYjMzk7bGwgYmUgc3VyZSB0byBlbmFibGUgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnLiBUaW1lIHRvIGZpcmUgdXAgdGhvc2UgdG9vbHMgYW5kIHNlZSBpZiB3ZSBjYW4gc2hha2Ugc29tZXRoaW5nIGxvb3NlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX2F0b21pY19ybXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTY0MDQ9c3RhdGljIGludCBjaGVja19zdG9yZV9yZWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDQxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0NDI6c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ0My1cdFx0XHQgICAgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02NTYxPXN0YXRpYyBpbnQgY2hlY2tfYXRvbWljKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU3My1cdGNhc2UgQlBGX0NNUFhDSEc6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjU3NDpcdFx0cmV0dXJuIGNoZWNrX2F0b21pY19ybXcoZW52LCBpbnNuKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTc1LVx0Y2FzZSBCUEZfTE9BRF9BQ1E6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQXRvbWljIFJNVyBEZXBlbmRlbmN5KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMuIEkmIzM5O20gbG9va2luZyBhdCBgY2hlY2tfYXRvbWljX3Jtd2AsIHdoaWNoIGlzLCBpbnRlcmVzdGluZ2x5LCBhIHN0YXRpYyBmdW5jdGlvbi4gTm93LCB0aGF0IGFsb25lIHdvdWxkbiYjMzk7dCBub3JtYWxseSByYWlzZSBhIGZsYWcsIGJ1dCBpdCYjMzk7cyBjYWxsZWQgYnkgYW5vdGhlciBzdGF0aWMgZnVuY3Rpb24sIGBjaGVja19hdG9taWNgLiBTbywgdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IGJlY29tZXMsICYjMzQ7V2hhdCBjYWxscyBgY2hlY2tfYXRvbWljYD8mIzM0OyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIGhlcmUgaXMgY3J1Y2lhbCB0byBzZWUgaWYgdGhpcyBpcyBhbiBpc29sYXRlZCwgaW50ZXJuYWwgY2hlY2sgb3IgYSBkZWVwZXIgYXJjaGl0ZWN0dXJhbCBjb25jZXJuLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBjaGVja19hdG9taWNgIHRvIHNlZSBpdHMgdXNhZ2UgY29udGV4dC4gSXMgaXQgYmVpbmcgdXNlZCB3aXRoaW4gYSBzcGVjaWZpYyBtb2R1bGU/IElzIGl0IHBhcnQgb2YgYSBsYXJnZXIsIHBvdGVudGlhbGx5IHByb2JsZW1hdGljLCBhdG9taWMgb3BlcmF0aW9uIHZhbGlkYXRpb24gc2NoZW1lPyBLbm93aW5nIHRoZSBjYWxsZXIgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwdXJwb3NlIG9mIHRoZXNlIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19hdG9taWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTY0MDQ9c3RhdGljIGludCBjaGVja19zdG9yZV9yZWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDQxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0NDI6c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ0My1cdFx0XHQgICAgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTIyLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1MjM6c3RhdGljIGludCBjaGVja19hdG9taWNfbG9hZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1MjQtXHRcdFx0ICAgICBzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NDEtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjU0MjpzdGF0aWMgaW50IGNoZWNrX2F0b21pY19zdG9yZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NDMtXHRcdFx0ICAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTYwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1NjE6c3RhdGljIGludCBjaGVja19hdG9taWMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NjIte1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTczLVx0Y2FzZSBCUEZfQ01QWENIRzpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NTc0Olx0XHRyZXR1cm4gY2hlY2tfYXRvbWljX3JtdyhlbnYsIGluc24pO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NzUtXHRjYXNlIEJQRl9MT0FEX0FDUTpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU4MC1cdFx0fVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1ODE6XHRcdHJldHVybiBjaGVja19hdG9taWNfbG9hZChlbnYsIGluc24pO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTY1ODItXHRjYXNlIEJQRl9TVE9SRV9SRUw6XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1ODctXHRcdH1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NTg4Olx0XHRyZXR1cm4gY2hlY2tfYXRvbWljX3N0b3JlKGVudiwgaW5zbik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU4OS1cdGRlZmF1bHQ6XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3MjYwPXN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTcyNzctXHRcdGlmIChCUEZfTU9ERShpbnNuLVx1MDAzZWNvZGUpID09IEJQRl9BVE9NSUMpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTcyNzg6XHRcdFx0cmV0dXJuIGNoZWNrX2F0b21pYyhlbnYsIGluc24pO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE3Mjc5LVx0XHRyZXR1cm4gY2hlY2tfc3RvcmVfcmVnKGVudiwgaW5zbiwgZmFsc2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NjMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkZvY3VzaW5nIG9uIEJQRiBWZXJpZmljYXRpb24qKgoKT2theSwgc28gYGRvX2NoZWNrX2luc25gIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXQmIzM5O3Mgbm90IGEgZGlyZWN0IGVudHJ5IHBvaW50LiBJIG5lZWQgdG8gZmluZCB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIEJQRiB2ZXJpZmllci4gTGV0JiMzOTtzIHNlZS4uLkFoLCB0aGF0JiMzOTtzIGl0ISBgYnBmX2NoZWNrYCBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIHdob2xlIHZlcmlmaWNhdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBtYWtlIHRoYXQgdGhlIGZvY3VzIHN5bWJvbCBmb3Igbm93OyB1bmRlcnN0YW5kaW5nIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiBgYnBmX2NoZWNrYCBpcyBrZXkuIEkmIzM5O2xsIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gYW5kIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTU3PXN0YXRpYyBib29sIGJwZl9nbG9iYWxfcGVyY3B1X21hX3NldDtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01OC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1OTovKiBicGZfY2hlY2soKSBpcyBhIHN0YXRpYyBjb2RlIGFuYWx5emVyIHRoYXQgd2Fsa3MgZUJQRiBwcm9ncmFtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjAtICogaW5zdHJ1Y3Rpb24gYnkgaW5zdHJ1Y3Rpb24gYW5kIHVwZGF0ZXMgcmVnaXN0ZXIvc3RhY2sgc3RhdGUuXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExOTk0PXN0YXRpYyBpbnQgcHJvY2Vzc19rZl9hcmdfcHRyX3RvX3JidHJlZV9ub2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMDA1LSAqIExTTSBob29rcyBhbmQgaXRlcnMgKGJvdGggc2xlZXBhYmxlIGFuZCBub24tc2xlZXBhYmxlKSBhcmUgc2FmZS5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjAwNjogKiBBbnkgc2xlZXBhYmxlIHByb2dzIGFyZSBhbHNvIHNhZmUgc2luY2UgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoKSBlbmZvcmNlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIwMDctICogdGhlbSBjYW4gb25seSBiZSBhdHRhY2hlZCB0byBzb21lIHNwZWNpZmljIGhvb2sgcG9pbnRzLlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTAzMz1zdGF0aWMgYm9vbCBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbChlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA0Ni1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTA0NzppbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA0OC1cdFx0XHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTQ3MD1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MDAtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1MDE6XHRyZXQgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChcdTAwMjZlbnYtXHUwMDNlbG9nLCBwcm9nLCB0Z3RfcHJvZywgYnRmX2lkLCBcdTAwMjZ0Z3RfaW5mbyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MDItXHRpZiAocmV0KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU2OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTU3MDppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1NzEtXHRcdFx0XHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwMDM9c3RhdGljIGVudW0gYnBmX3NpZ19rZXlyaW5nIGJwZl9jbGFzc2lmeV9rZXlyaW5nKHMzMiBrZXlyaW5nX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDAxNy0vKlxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMDE4OiAqIFZlcmlmeSB0aGUgUEtDUyM3IHNpZ25hdHVyZSBvZiBhIGxvYWRlZCBwcm9ncmFtLiBDYWxsZWQgZnJvbSBicGZfY2hlY2soKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMDE5LSAqIG9uY2UgdGhlIHByb2dyYW0mIzM5O3MgbWV0YWRhdGEgbWFwcyBoYXZlIGJlZW4gcmVzb2x2ZWQgaW50byB1c2VkX21hcHMsIHNvXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwMDI2PXN0YXRpYyBpbnQgYnBmX3Byb2dfdmVyaWZ5X3NpZ25hdHVyZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE0Mi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDE0MzppbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE0NC1cdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE1Ny1cdC8qICYjMzk7c3RydWN0IGJwZl92ZXJpZmllcl9lbnYmIzM5OyBjYW4gYmUgZ2xvYmFsLCBidXQgc2luY2UgaXQmIzM5O3Mgbm90IHNtYWxsLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMTU4Olx0ICogYWxsb2NhdGUvZnJlZSBpdCBldmVyeSB0aW1lIGJwZl9jaGVjaygpIGlzIGNhbGxlZFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMTU5LVx0ICovXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjY1LVx0LyogVmFsaWRhdGUgQlRGIGFnYWluc3QgdGhlIGNvbXBsZXRlIHN1YnByb2dyYW0gbGF5b3V0IGFuZCBhcHBseSBDTy1SRS4gKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDI2NjpcdHJldCA9IGJwZl9jaGVja19idGZfaW5mbyhlbnYsIGF0dHIsIHVhdHRyKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDI2Ny1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjg1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMjg2Olx0cmV0ID0gYnBmX2NoZWNrX2NmZyhlbnYpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjg3LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTk5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgc28gYGJwZl9jaGVja2AgaXMgdGhlIHByaW1hcnkgZnVuY3Rpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLCBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmxhZyBhcHBlYXJzIHRvIGJlIGBCUEZfU1lTQ0FMTGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MganVzdCBtYWtlICpzdXJlKiB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWdzIHRoYXQgbWlnaHQgYmUgc3VidGx5IGludm9sdmVkIGluIHRoaXMgd2hvbGUgdGhpbmcg4oCTIGdvdHRhIGJlIHRob3JvdWdoLgoKSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggSSYjMzk7bSByZXZpZXdpbmcgaGFzIG1hZGUgY2hhbmdlcyB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gQ29uc2lkZXJpbmcgdGhhdCBmaWxlIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLCB0aGlzIGFsbCBzZWVtcyB0byBiZSBjb2FsZXNjaW5nIHByZXR0eSBuZWF0bHkuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHJlYWxseSBkaXZlIGludG8gYHZlcmlmaWVyLmNgIGFuZCBmaWd1cmUgb3V0IHdoYXQgdGhlIHBhdGNoIGlzICpkb2luZyogd2l0aCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLVxcJFxcKENPTkZJR19CUEZfU1lTQ0FMTFxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGZpeHVwcy5vIGNmZy5vIHN0YXRlcy5vIGJhY2t0cmFjay5vIGNoZWNrX2J0Zi5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE1LW9iai0ke0NPTkZJR19CUEZfTFNNfVx0ICAmIzQzOz0gYnBmX2lub2RlX3N0b3JhZ2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkaXNhc20ubyBtcHJvZy5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gdHJhbXBvbGluZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGFyZW5hLm8gcmFuZ2VfdHJlZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIxLWVuZGlmXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT0yMz1pZmVxICgkKENPTkZJR19ORVQpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRldm1hcC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNwdW1hcC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IG9mZmxvYWQub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBuZXRfbmFtZXNwYWNlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gdGN4Lm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjktZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzA9aWZlcSAoJChDT05GSUdfUEVSRl9FVkVOVFMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN0YWNrbWFwLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMzItZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzM9aWZlcSAoJChDT05GSUdfQ0dST1VQUykseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gY2dyb3VwX2l0ZXIubyBicGZfY2dycF9zdG9yYWdlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMzUtZW5kaWZcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTM3PWlmZXEgKCQoQ09ORklHX0lORVQpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHJldXNlcG9ydF9hcnJheS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM5LWVuZGlmXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT00Mz1pZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfc3RydWN0X29wcy5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNwdW1hc2sub1xua2VybmVsL2JwZi9NYWtlZmlsZS00Ni0jIGJwZl9sc21fcHJvdG8ubyBtdXN0IHByZWNlZGUgYnBmX2xzbS5vLiBUaGUgY3VycmVudCBwYWhvbGUgbG9naWNcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTU4PWlmbmVxICgkKENPTkZJR19DUllQVE8pLClcbmtlcm5lbC9icGYvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gY3J5cHRvLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNjAtZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU9NjE9b2JqLSQoQ09ORklHX0JQRl9QUkVMT0FEKSAmIzQzOz0gcHJlbG9hZC9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNjItXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHJlbG9fY29yZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zl9pdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6NjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmX3JlbG9jYXRlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6NjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0ga21lbV9jYWNoZV9pdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNjctaWZlcSAoJChDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVIpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRtYWJ1Zl9pdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNjktZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgzMQoJCQkJCQkJb3V0cHV0OiAxMDkKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgU2VjdXJpdHkgTW9kdWxlKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgQlBGX1NZU0NBTExgLCBhbmQgbXkgcHJpbWFyeSBmb2N1cyBzeW1ib2wgaXMgYGJwZl9jaGVja2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FyZSB0aGVyZSAqb3RoZXIqIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBleGVjdXRpb24gcGF0aCB0aGF0IG1pZ2h0IHNlcnZlIGFzIGVxdWFsbHkgZ29vZCwgb3IgZXZlbiBiZXR0ZXIsIGZvY3VzIHBvaW50cyBmb3IgbXkgYW5hbHlzaXM/JiMzNDsgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYWx0ZXJuYXRpdmVzIHRoYXQgbWlnaHQgYmUgbW9yZSByZXZlYWxpbmcuCgpMZXQmIzM5O3MgdHJhY2UgdGhpcyBmdW5jdGlvbiBjYWxsIGNoYWluOiBUaGUgcGF0Y2ggdG91Y2hlcyBgY2hlY2tfYXRvbWljX3Jtd2AsIHdoaWNoIGlzIGNhbGxlZCBieSBgY2hlY2tfYXRvbWljYC4gYGNoZWNrX2F0b21pY2AgdGhlbiBmZWVkcyBpbnRvIGBkb19jaGVja19pbnNuYCwgd2hpY2gsIGluIHR1cm4sIGlzIGEgZGVwZW5kZW5jeSBmb3IgYGRvX2NoZWNrYC4gRmluYWxseSwgYGRvX2NoZWNrYCBnZXRzIGNhbGxlZCBieSBgYnBmX2NoZWNrYC4gR2l2ZW4gdGhhdCBwYXRoLCBgYnBmX2NoZWNrYCBsb29rcyBwcmV0dHkgc29saWQgYXMgdGhlIGZvY2FsIHBvaW50LiBJdCBoaXRzIGFsbCB0aGUgaGlnaCBsZXZlbCBjaGVja3MuCgpUaGVyZWZvcmUsIEkmIzM5O2xsIHN0aWNrIHdpdGggYGJwZl9jaGVja2AuIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgdGhlIHJlc3VsdHMgYmFzZWQgb24gdGhpcyB1bmRlcnN0YW5kaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzYXZlIHRoZSBhdXhpbGlhcnkgcG9pbnRlciB0eXBlIGZvciBhbGwgYXRvbWljIFJNVyBvcGVyYXRpb25zLCBub3QganVzdCBhcmVuYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYXRvbWljIG9wZXJhdGlvbnMgYW5kIHBvaW50ZXIgdHlwZXMuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzYXZlIHRoZSBhdXhpbGlhcnkgcG9pbnRlciB0eXBlIGZvciBhbGwgYXRvbWljIFJNVyBvcGVyYXRpb25zLCBub3QganVzdCBhcmVuYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYXRvbWljIG9wZXJhdGlvbnMgYW5kIHBvaW50ZXIgdHlwZXMuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIEJQRiB2ZXJpZmllciBpc3N1ZSB3aGVyZSB0aGUgcG9pbnRlciB0eXBlIGZvciBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgaW5zdHJ1Y3Rpb25zIHdhcyBvbmx5IHNhdmVkIGZvciBhcmVuYSBwb2ludGVycy4gQnkgc2F2aW5nIHRoZSBwb2ludGVyIHR5cGUgZm9yIGFsbCBwb2ludGVyIHR5cGVzLCBpdCBwcmV2ZW50cyBhIHNpbmdsZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcyAoZS5nLiwgYm90aCBhcmVuYSBhbmQgbWFwIHZhbHVlIHBvaW50ZXJzKSBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocy4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdHlwZSBjb25mdXNpb24gYW5kIGluY29ycmVjdCBKSVQgY29tcGlsYXRpb24sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgY2F1Z2h0IGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVlMjNlZDVhNDZhNjJmY2E3MDczNjZlNzc1NWI2ODQ5NTk2MDQ4MzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxMjo0OTozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAxNjRkMTZjMjQzY2E2Li4zZDY3MmY2NjY1YmVjIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC02NTA5LDExICYjNDM7NjUwOSw5IEBAIHN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX3JtdyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlpZiAoaXNfYXJlbmFfcmVnKGVudiwgaW5zbi0mZ3Q7ZHN0X3JlZykpIHsKLQkJZXJyID0gc2F2ZV9hdXhfcHRyX3R5cGUoZW52LCBQVFJfVE9fQVJFTkEsIGZhbHNlKTsKLQkJaWYgKGVycikKLQkJCXJldHVybiBlcnI7Ci0JfQomIzQzOwllcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIGRzdF9yZWctJmd0O3R5cGUsIGZhbHNlKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAJLyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkuICovCiAJZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi0mZ3Q7aW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tJmd0O2RzdF9yZWcpLCBpbnNuLSZndDtvZmYsCiAJCQkgICAgICAgQlBGX1NJWkUoaW5zbi0mZ3Q7Y29kZSksIEJQRl9XUklURSwgLTEsIHRydWUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMKaW5kZXggYjI0MWJiY2Y1NGE4YS4uMmU0M2RhMTg4MTk0YiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMKQEAgLTI1LDYgJiM0MzsyNSwxNSBAQCBzdHJ1Y3QgewogCV9fdWxvbmcobWFwX2V4dHJhLCBBUkVOQV9WTV9TVEFSVCk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi8KIH0gYXJlbmEgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7CiAKJiM0MztzdHJ1Y3QgewomIzQzOwlfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX0FSUkFZKTsKJiM0MzsJX191aW50KG1heF9lbnRyaWVzLCAxKTsKJiM0MzsJX190eXBlKGtleSwgX191MzIpOwomIzQzOwlfX3R5cGUodmFsdWUsIF9fdTY0KTsKJiM0Mzt9IGF0b21pY19tYXAgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7CiYjNDM7CiYjNDM7c3RhdGljIF9fdTY0IGFyZW5hX2F0b21pY190YXJnZXQgU0VDKCYjMzQ7LmFkZHJfc3BhY2UuMSYjMzQ7KTsKJiM0MzsKIFNFQygmIzM0O3NvY2tldCYjMzQ7KQogX19zdWNjZXNzIF9fcmV0dmFsKDApCiBpbnQgYmFzaWNfYWxsb2MxX25vc2xlZXAodm9pZCAqY3R4KQpAQCAtNjM3LDYgJiM0Mzs2NDYsNDEgQEAgaW50IG5vbl9hcmVuYV9wdHJfYWRkX3RvX2FyZW5hX3B0cih2b2lkICpjdHgpCiAKICNlbmRpZgogCiYjNDM7U0VDKCYjMzQ7c29ja2V0JiMzNDspCiYjNDM7X19kZXNjcmlwdGlvbigmIzM0O2FyZW5hIGFuZCBtYXAgdmFsdWUgYXRvbWljIGF0IHRoZSBzYW1lIGluc3RydWN0aW9uJiMzNDspCiYjNDM7X19mYWlsdXJlIF9fbXNnKCYjMzQ7c2FtZSBpbnNuIGNhbm5vdCBiZSB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXJzJiMzNDspCiYjNDM7X19hcmNoX3g4Nl82NAomIzQzO19fbG9hZF9pZl9KSVRlZCgpCiYjNDM7X19uYWtlZCB2b2lkIG1peGVkX2FyZW5hX21hcF92YWx1ZV9hdG9taWModm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoJiMzNDsJCQkJCVwKJiM0MzsJcjEgPSAwOwkJCQkJXAomIzQzOwkqKHUzMiAqKShyMTAgLSA0KSA9IHIxOwkJCVwKJiM0MzsJcjIgPSByMTA7CQkJCQlcCiYjNDM7CXIyICYjNDM7PSAtNDsJCQkJCVwKJiM0MzsJcjEgPSAlW2F0b21pY19tYXBdIGxsOwkJCQlcCiYjNDM7CWNhbGwgJVticGZfbWFwX2xvb2t1cF9lbGVtXTsJCQlcCiYjNDM7CWlmIHIwID09IDAgZ290byAxZjsJCQkJXAomIzQzOwlyNiA9IHIwOwkJCQkJXAomIzQzOwlyNyA9ICVbYXJlbmFfYXRvbWljX3RhcmdldF0gbGw7CQkJXAomIzQzOwkuYnl0ZSAweGJmOyAuYnl0ZSAweDc3OyAuc2hvcnQgMTsgLmxvbmcgMTsJXAomIzQzOwljYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07CQkJXAomIzQzOwlpZiB3MCAhPSAwIGdvdG8gMmY7CQkJCVwKJiM0MzsJcjggPSByNjsJCQkJCVwKJiM0MzsJZ290byAzZjsJCQkJCVwKJiM0MzsyOglyOCA9IHI3OwkJCQkJXAomIzQzOzM6CXI5ID0gMTsJCQkJCVwKJiM0MzsJbG9jayAqKHU2NCAqKShyOCAmIzQzOyAwKSAmIzQzOz0gcjk7CQkJXAomIzQzOzE6CXIwID0gMDsJCQkJCVwKJiM0MzsJZXhpdDsJCQkJCQlcCiYjNDM7JiMzNDsJOgomIzQzOwk6IF9faW1tX2FkZHIoYXRvbWljX21hcCksCiYjNDM7CSAgX19pbW1fYWRkcihhcmVuYV9hdG9taWNfdGFyZ2V0KSwKJiM0MzsJICBfX2ltbShicGZfbWFwX2xvb2t1cF9lbGVtKSwKJiM0MzsJICBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKQomIzQzOwk6IF9fY2xvYmJlcl9hbGwpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBfX25vaW5saW5lCiB1MzIgX19hcmVuYSAqY2hlY2tfYXJlbmFfYXJnX25vbmdsb2JhbCh1MzIgX19hcmVuYSAqYXJnKQogewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkxNAoJCQkJCQkJb3V0cHV0OiAxNjEKCQkJCQkJCXRob3VnaHRzOiA1NTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQlBGIFZlcmlmaWVyIEJ1ZyBGaXg6IEVuc3VyaW5nIENvcnJlY3QgUG9pbnRlciBUeXBlIFRyYWNraW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgdGhlIGBjaGVja19hdG9taWNfcm13YCBmdW5jdGlvbiBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gSXQgc2VlbXMgbGlrZSBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIGJ1ZyBmaXgsIGJ1dCBpbXBvcnRhbnQgbm9uZXRoZWxlc3MuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgdGhhdCB0aGUgY29kZSBub3cgY2FsbHMgYHNhdmVfYXV4X3B0cl90eXBlYCB3aXRoIHRoZSBhY3R1YWwgcG9pbnRlciB0eXBlIG9mIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciAoYGRzdF9yZWctJmd0O3R5cGVgKSBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgYFBUUl9UT19BUkVOQWAuCgpFc3NlbnRpYWxseSwgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaXMgdGhhdCB0aGUgdmVyaWZpZXIgbm93IGNvcnJlY3RseSB0cmFja3MgdGhlIHBvaW50ZXIgdHlwZSBpbiBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgaW5zdHJ1Y3Rpb25zLiBCZWZvcmUsIGl0IHdhcyBvbmx5IHRyYWNraW5nIGFyZW5hIHBvaW50ZXJzIGluIHRoaXMgY29udGV4dCwgYnV0IG5vdyBpdCYjMzk7cyBjb3JyZWN0bHkgY2hlY2tpbmcgYWxsIHBvaW50ZXIgdHlwZXMuIFRoZSBhZGRlZCB0ZXN0IGNhc2UsIGBtaXhlZF9hcmVuYV9tYXBfdmFsdWVfYXRvbWljYCwgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGRpcmVjdGx5IHRlc3RzIHRoaXMuIEl0IG1ha2VzIHN1cmUgdGhhdCBhIHNpbmdsZSBSTVcgaW5zdHJ1Y3Rpb24gKmNhbiYjMzk7dCogYmUgdXNlZCB3aXRoLCBzYXksIGJvdGggYW4gYXJlbmEgcG9pbnRlciBhbmQgYSBtYXAgdmFsdWUgcG9pbnRlciwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgYnVnIHdlIGFyZSBmaXhpbmcuCgpUaGlzIGNoYW5nZSBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhlIHZlcmlmaWVyJiMzOTtzIHR5cGUgdHJhY2tpbmcgaXMgYWNjdXJhdGUgYW5kIGNvbnNpc3RlbnQsIHdoaWNoIGlzIHBhcmFtb3VudCBmb3IgdGhlIEpJVCBhbmQgb3ZlcmFsbCBleGVjdXRpb24gc2FmZXR5LiBJZiB0aGUgdmVyaWZpZXIgbWlzY2xhc3NpZmllcyBhIHBvaW50ZXIsIHRoZSBKSVQgY291bGQgZ2VuZXJhdGUgaW5jb3JyZWN0IGNvZGUgZm9yIHRoYXQgaW5zdHJ1Y3Rpb24uIFdlIGNvdWxkIGVuZCB1cCB3aXRoIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcy4KCkkgaW5pdGlhbGx5IHdvbmRlcmVkIGlmIHRoaXMgaGFkIHNvbWV0aGluZyB0byBkbyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBidXQgaXQmIzM5O3MgY2xlYXJseSBub3QgcmVsYXRlZC4gS01TQU4gaGFuZGxlcyB0aGF0LiBUaGlzIGlzIHNwZWNpZmljYWxseSBhYm91dCBwb2ludGVyICp0eXBlcyogYW5kIGVuc3VyaW5nIHRoZSB2ZXJpZmllciBjYW4gY29ycmVjdGx5IGFuZCBjb25zaXN0ZW50bHkgdHJhY2sgdGhlc2UgZGlmZmVyZW50IHBvaW50ZXIgdHlwZXMuCgpMZXQgbWUgcmVmcmVzaCBteXNlbGYgb24gdGhlIGBzYXZlX2F1eF9wdHJfdHlwZWAgZnVuY3Rpb24gaXRzZWxmLiBBaCwgcmlnaHQsIGl0IHNhdmVzIHRoZSBwb2ludGVyIHR5cGUgaW4gYGVudi0mZ3Q7aW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ucHRyX3R5cGVgLiBBbmQgaWYgdGhlIHNhbWUgaW5zdHJ1Y3Rpb24gaXMgdXNlZCB3aXRoIGRpZmZlcmVudCBwb2ludGVyIHR5cGVzIGluIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aHMsIGBzYXZlX2F1eF9wdHJfdHlwZWAgcmV0dXJucyBhbiBlcnJvciAoYC1FSU5WQUxgKSBpZiB0aGUgdHlwZXMgZG9uJiMzOTt0IG1hdGNoLiBUaGlzIGlzIHRoZSBzYWZlZ3VhcmQgdGhhdCYjMzk7cyBiZWluZyBwdXQgaW4gcGxhY2UgYW5kIG1hZGUgbW9yZSBjb25zaXN0ZW50IGhlcmUsIHByZXZlbnRpbmcgdHlwZSBjb25mdXNpb24uCgpTbywgdGhpcyBpcyBhIHNlY3VyaXR5LXJlbGF0ZWQgZml4LCBwcmV2ZW50aW5nIHR5cGUgY29uZnVzaW9uIG9yIGluY29ycmVjdCBKSVQgY29kZSBnZW5lcmF0aW9uLiBTaW5jZSBpdCYjMzk7cyBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgSSYjMzk7bGwgc2V0IE5lZWRzS01TQU4gdG8gZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgQlBGIHZlcmlmaWVyIGlzc3VlIHdoZXJlIHRoZSBwb2ludGVyIHR5cGUgZm9yIGF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoUk1XKSBpbnN0cnVjdGlvbnMgd2FzIG9ubHkgc2F2ZWQgZm9yIGFyZW5hIHBvaW50ZXJzLiBCeSBzYXZpbmcgdGhlIHBvaW50ZXIgdHlwZSBmb3IgYWxsIHBvaW50ZXIgdHlwZXMsIGl0IHByZXZlbnRzIGEgc2luZ2xlIGluc3RydWN0aW9uIGZyb20gYmVpbmcgdXNlZCB3aXRoIGRpZmZlcmVudCBwb2ludGVyIHR5cGVzIChlLmcuLCBib3RoIGFyZW5hIGFuZCBtYXAgdmFsdWUgcG9pbnRlcnMpIGFjcm9zcyBkaWZmZXJlbnQgZXhlY3V0aW9uIHBhdGhzLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCB0eXBlIGNvbmZ1c2lvbiBhbmQgaW5jb3JyZWN0IEpJVCBjb21waWxhdGlvbiwgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyBjYXVnaHQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgQlBGIHZlcmlmaWVyIGlzc3VlIHdoZXJlIHRoZSBwb2ludGVyIHR5cGUgZm9yIGF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoUk1XKSBpbnN0cnVjdGlvbnMgd2FzIG9ubHkgc2F2ZWQgZm9yIGFyZW5hIHBvaW50ZXJzLiBCeSBzYXZpbmcgdGhlIHBvaW50ZXIgdHlwZSBmb3IgYWxsIHBvaW50ZXIgdHlwZXMsIGl0IHByZXZlbnRzIGEgc2luZ2xlIGluc3RydWN0aW9uIGZyb20gYmVpbmcgdXNlZCB3aXRoIGRpZmZlcmVudCBwb2ludGVyIHR5cGVzIChlLmcuLCBib3RoIGFyZW5hIGFuZCBtYXAgdmFsdWUgcG9pbnRlcnMpIGFjcm9zcyBkaWZmZXJlbnQgZXhlY3V0aW9uIHBhdGhzLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCB0eXBlIGNvbmZ1c2lvbiBhbmQgaW5jb3JyZWN0IEpJVCBjb21waWxhdGlvbiwgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyBjYXVnaHQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6MzUuNjgxNDA3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMjgwODUwMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIEJQRiB2ZXJpZmllciBpc3N1ZSB3aGVyZSB0aGUgcG9pbnRlciB0eXBlIGZvciBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgaW5zdHJ1Y3Rpb25zIHdhcyBvbmx5IHNhdmVkIGZvciBhcmVuYSBwb2ludGVycy4gQnkgc2F2aW5nIHRoZSBwb2ludGVyIHR5cGUgZm9yIGFsbCBwb2ludGVyIHR5cGVzLCBpdCBwcmV2ZW50cyBhIHNpbmdsZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcyAoZS5nLiwgYm90aCBhcmVuYSBhbmQgbWFwIHZhbHVlIHBvaW50ZXJzKSBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocy4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdHlwZSBjb25mdXNpb24gYW5kIGluY29ycmVjdCBKSVQgY29tcGlsYXRpb24sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgY2F1Z2h0IGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzYXZlIHRoZSBhdXhpbGlhcnkgcG9pbnRlciB0eXBlIGZvciBhbGwgYXRvbWljIFJNVyBvcGVyYXRpb25zLCBub3QganVzdCBhcmVuYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYXRvbWljIG9wZXJhdGlvbnMgYW5kIHBvaW50ZXIgdHlwZXMuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIEJQRiBwcm9ncmFtcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6MzUuNjgxNDE0NDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTAyOTA4NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZTIzZWQ1YTQ2YTYyZmNhNzA3MzY2ZTc3NTViNjg0OTU5NjA0ODM3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDEyOjQ5OjMzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDE2NGQxNmMyNDNjYTYuLjNkNjcyZjY2NjViZWMgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTY1MDksMTEgKzY1MDksOSBAQCBzdGF0aWMgaW50IGNoZWNrX2F0b21pY19ybXcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdGlmIChpc19hcmVuYV9yZWcoZW52LCBpbnNuLVxcdTAwM2Vkc3RfcmVnKSkge1xcbi1cXHRcXHRlcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIFBUUl9UT19BUkVOQSwgZmFsc2UpO1xcbi1cXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbi1cXHR9XFxuK1xcdGVyciA9IHNhdmVfYXV4X3B0cl90eXBlKGVudiwgZHN0X3JlZy1cXHUwMDNldHlwZSwgZmFsc2UpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHQvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiB3cml0ZSBpbnRvIHRoZSBzYW1lIG1lbW9yeS4gKi9cXG4gXFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZWRzdF9yZWcpLCBpbnNuLVxcdTAwM2VvZmYsXFxuIFxcdFxcdFxcdCAgICAgICBCUEZfU0laRShpbnNuLVxcdTAwM2Vjb2RlKSwgQlBGX1dSSVRFLCAtMSwgdHJ1ZSwgZmFsc2UpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXFxuaW5kZXggYjI0MWJiY2Y1NGE4YS4uMmU0M2RhMTg4MTk0YiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXFxuQEAgLTI1LDYgKzI1LDE1IEBAIHN0cnVjdCB7XFxuIFxcdF9fdWxvbmcobWFwX2V4dHJhLCBBUkVOQV9WTV9TVEFSVCk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi9cXG4gfSBhcmVuYSBTRUMoXFxcIi5tYXBzXFxcIik7XFxuIFxcbitzdHJ1Y3Qge1xcbitcXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX0FSUkFZKTtcXG4rXFx0X191aW50KG1heF9lbnRyaWVzLCAxKTtcXG4rXFx0X190eXBlKGtleSwgX191MzIpO1xcbitcXHRfX3R5cGUodmFsdWUsIF9fdTY0KTtcXG4rfSBhdG9taWNfbWFwIFNFQyhcXFwiLm1hcHNcXFwiKTtcXG4rXFxuK3N0YXRpYyBfX3U2NCBhcmVuYV9hdG9taWNfdGFyZ2V0IFNFQyhcXFwiLmFkZHJfc3BhY2UuMVxcXCIpO1xcbitcXG4gU0VDKFxcXCJzb2NrZXRcXFwiKVxcbiBfX3N1Y2Nlc3MgX19yZXR2YWwoMClcXG4gaW50IGJhc2ljX2FsbG9jMV9ub3NsZWVwKHZvaWQgKmN0eClcXG5AQCAtNjM3LDYgKzY0Niw0MSBAQCBpbnQgbm9uX2FyZW5hX3B0cl9hZGRfdG9fYXJlbmFfcHRyKHZvaWQgKmN0eClcXG4gXFxuICNlbmRpZlxcbiBcXG4rU0VDKFxcXCJzb2NrZXRcXFwiKVxcbitfX2Rlc2NyaXB0aW9uKFxcXCJhcmVuYSBhbmQgbWFwIHZhbHVlIGF0b21pYyBhdCB0aGUgc2FtZSBpbnN0cnVjdGlvblxcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwic2FtZSBpbnNuIGNhbm5vdCBiZSB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXJzXFxcIilcXG4rX19hcmNoX3g4Nl82NFxcbitfX2xvYWRfaWZfSklUZWQoKVxcbitfX25ha2VkIHZvaWQgbWl4ZWRfYXJlbmFfbWFwX3ZhbHVlX2F0b21pYyh2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxcIlxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjEgPSAwO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0Kih1MzIgKikocjEwIC0gNCkgPSByMTtcXHRcXHRcXHRcXFxcXFxuK1xcdHIyID0gcjEwO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjIgKz0gLTQ7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyMSA9ICVbYXRvbWljX21hcF0gbGw7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRjYWxsICVbYnBmX21hcF9sb29rdXBfZWxlbV07XFx0XFx0XFx0XFxcXFxcbitcXHRpZiByMCA9PSAwIGdvdG8gMWY7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyNiA9IHIwO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjcgPSAlW2FyZW5hX2F0b21pY190YXJnZXRdIGxsO1xcdFxcdFxcdFxcXFxcXG4rXFx0LmJ5dGUgMHhiZjsgLmJ5dGUgMHg3NzsgLnNob3J0IDE7IC5sb25nIDE7XFx0XFxcXFxcbitcXHRjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XFx0XFx0XFx0XFxcXFxcbitcXHRpZiB3MCAhPSAwIGdvdG8gMmY7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyOCA9IHI2O1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0Z290byAzZjtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuKzI6XFx0cjggPSByNztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuKzM6XFx0cjkgPSAxO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0bG9jayAqKHU2NCAqKShyOCArIDApICs9IHI5O1xcdFxcdFxcdFxcXFxcXG4rMTpcXHRyMCA9IDA7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRleGl0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFxcIlxcdDpcXG4rXFx0OiBfX2ltbV9hZGRyKGF0b21pY19tYXApLFxcbitcXHQgIF9faW1tX2FkZHIoYXJlbmFfYXRvbWljX3RhcmdldCksXFxuK1xcdCAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksXFxuK1xcdCAgX19pbW0oYnBmX2dldF9wcmFuZG9tX3UzMilcXG4rXFx0OiBfX2Nsb2JiZXJfYWxsKTtcXG4rfVxcbitcXG4gc3RhdGljIF9fbm9pbmxpbmVcXG4gdTMyIF9fYXJlbmEgKmNoZWNrX2FyZW5hX2FyZ19ub25nbG9iYWwodTMyIF9fYXJlbmEgKmFyZylcXG4ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTozNy4zOTI3OTc1MjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMTU1ODA3NzM4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gc2F2ZSB0aGUgYXV4aWxpYXJ5IHBvaW50ZXIgdHlwZSBmb3IgYWxsIGF0b21pYyBSTVcgb3BlcmF0aW9ucywgbm90IGp1c3QgYXJlbmEgcG9pbnRlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGF0b21pYyBvcGVyYXRpb25zIGFuZCBwb2ludGVyIHR5cGVzLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsIHdoZW4gbG9hZGluZyBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVlMjNlZDVhNDZhNjJmY2E3MDczNjZlNzc1NWI2ODQ5NTk2MDQ4MzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxMjo0OTozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMTY0ZDE2YzI0M2NhNi4uM2Q2NzJmNjY2NWJlYyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtNjUwOSwxMSArNjUwOSw5IEBAIHN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX3JtdyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGlmIChpc19hcmVuYV9yZWcoZW52LCBpbnNuLVx1MDAzZWRzdF9yZWcpKSB7XG4tXHRcdGVyciA9IHNhdmVfYXV4X3B0cl90eXBlKGVudiwgUFRSX1RPX0FSRU5BLCBmYWxzZSk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0cmV0dXJuIGVycjtcbi1cdH1cbitcdGVyciA9IHNhdmVfYXV4X3B0cl90eXBlKGVudiwgZHN0X3JlZy1cdTAwM2V0eXBlLCBmYWxzZSk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuIFx0LyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkuICovXG4gXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVx1MDAzZWluc25faWR4LCBkc3RfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVx1MDAzZWRzdF9yZWcpLCBpbnNuLVx1MDAzZW9mZixcbiBcdFx0XHQgICAgICAgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSwgQlBGX1dSSVRFLCAtMSwgdHJ1ZSwgZmFsc2UpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcbmluZGV4IGIyNDFiYmNmNTRhOGEuLjJlNDNkYTE4ODE5NGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcbkBAIC0yNSw2ICsyNSwxNSBAQCBzdHJ1Y3Qge1xuIFx0X191bG9uZyhtYXBfZXh0cmEsIEFSRU5BX1ZNX1NUQVJUKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xuIH0gYXJlbmEgU0VDKFwiLm1hcHNcIik7XG4gXG4rc3RydWN0IHtcbitcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJSQVkpO1xuK1x0X191aW50KG1heF9lbnRyaWVzLCAxKTtcbitcdF9fdHlwZShrZXksIF9fdTMyKTtcbitcdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xuK30gYXRvbWljX21hcCBTRUMoXCIubWFwc1wiKTtcbitcbitzdGF0aWMgX191NjQgYXJlbmFfYXRvbWljX3RhcmdldCBTRUMoXCIuYWRkcl9zcGFjZS4xXCIpO1xuK1xuIFNFQyhcInNvY2tldFwiKVxuIF9fc3VjY2VzcyBfX3JldHZhbCgwKVxuIGludCBiYXNpY19hbGxvYzFfbm9zbGVlcCh2b2lkICpjdHgpXG5AQCAtNjM3LDYgKzY0Niw0MSBAQCBpbnQgbm9uX2FyZW5hX3B0cl9hZGRfdG9fYXJlbmFfcHRyKHZvaWQgKmN0eClcbiBcbiAjZW5kaWZcbiBcbitTRUMoXCJzb2NrZXRcIilcbitfX2Rlc2NyaXB0aW9uKFwiYXJlbmEgYW5kIG1hcCB2YWx1ZSBhdG9taWMgYXQgdGhlIHNhbWUgaW5zdHJ1Y3Rpb25cIilcbitfX2ZhaWx1cmUgX19tc2coXCJzYW1lIGluc24gY2Fubm90IGJlIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlcnNcIilcbitfX2FyY2hfeDg2XzY0XG4rX19sb2FkX2lmX0pJVGVkKClcbitfX25ha2VkIHZvaWQgbWl4ZWRfYXJlbmFfbWFwX3ZhbHVlX2F0b21pYyh2b2lkKVxuK3tcbitcdGFzbSB2b2xhdGlsZSAoXCJcdFx0XHRcdFx0XFxcbitcdHIxID0gMDtcdFx0XHRcdFx0XFxcbitcdCoodTMyICopKHIxMCAtIDQpID0gcjE7XHRcdFx0XFxcbitcdHIyID0gcjEwO1x0XHRcdFx0XHRcXFxuK1x0cjIgKz0gLTQ7XHRcdFx0XHRcdFxcXG4rXHRyMSA9ICVbYXRvbWljX21hcF0gbGw7XHRcdFx0XHRcXFxuK1x0Y2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dO1x0XHRcdFxcXG4rXHRpZiByMCA9PSAwIGdvdG8gMWY7XHRcdFx0XHRcXFxuK1x0cjYgPSByMDtcdFx0XHRcdFx0XFxcbitcdHI3ID0gJVthcmVuYV9hdG9taWNfdGFyZ2V0XSBsbDtcdFx0XHRcXFxuK1x0LmJ5dGUgMHhiZjsgLmJ5dGUgMHg3NzsgLnNob3J0IDE7IC5sb25nIDE7XHRcXFxuK1x0Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1x0XHRcdFxcXG4rXHRpZiB3MCAhPSAwIGdvdG8gMmY7XHRcdFx0XHRcXFxuK1x0cjggPSByNjtcdFx0XHRcdFx0XFxcbitcdGdvdG8gM2Y7XHRcdFx0XHRcdFxcXG4rMjpcdHI4ID0gcjc7XHRcdFx0XHRcdFxcXG4rMzpcdHI5ID0gMTtcdFx0XHRcdFx0XFxcbitcdGxvY2sgKih1NjQgKikocjggKyAwKSArPSByOTtcdFx0XHRcXFxuKzE6XHRyMCA9IDA7XHRcdFx0XHRcdFxcXG4rXHRleGl0O1x0XHRcdFx0XHRcdFxcXG4rXCJcdDpcbitcdDogX19pbW1fYWRkcihhdG9taWNfbWFwKSxcbitcdCAgX19pbW1fYWRkcihhcmVuYV9hdG9taWNfdGFyZ2V0KSxcbitcdCAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksXG4rXHQgIF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpXG4rXHQ6IF9fY2xvYmJlcl9hbGwpO1xuK31cbitcbiBzdGF0aWMgX19ub2lubGluZVxuIHUzMiBfX2FyZW5hICpjaGVja19hcmVuYV9hcmdfbm9uZ2xvYmFsKHUzMiBfX2FyZW5hICphcmcpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6MzcuMzkyODAxNTEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQwNTA2MDE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBob3cgaXQgaGFuZGxlcyBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgb3BlcmF0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGluIGBjaGVja19hdG9taWNfcm13YCwgYW5kIHRoZSBjb3JlIG9mIGl0IGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCByZXBsYWNlbWVudDogaW5zdGVhZCBvZiBvbmx5IHNhdmluZyB0aGUgYXV4aWxpYXJ5IHBvaW50ZXIgdHlwZSB3aGVuIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciAoYGRzdF9yZWdgKSBpcyBhbiBhcmVuYSByZWdpc3RlciwgaXQgbm93IHNhdmVzIHRoZSB0eXBlIGZvciAqYWxsKiBhdG9taWMgUk1XIG9wZXJhdGlvbnMuXG5cblRoZSBvcmlnaW5hbCBjb2RlIHNuaXBwZXQgd2FzOlxuXG5gYGBjXG4tXHRpZiAoaXNfYXJlbmFfcmVnKGVudiwgaW5zbi1cdTAwM2Vkc3RfcmVnKSkge1xuLVx0XHRlcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIFBUUl9UT19BUkVOQSwgZmFsc2UpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdHJldHVybiBlcnI7XG4tXHR9XG4rXHRlcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIGRzdF9yZWctXHUwMDNldHlwZSwgZmFsc2UpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbmBgYFxuXG5UaGlzIGVuc3VyZXMgY29uc2lzdGVuY3kgYnkgcHJldmVudGluZyB0aGUgc2FtZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcy4gVGhlIGFkZGVkIHNlbGZ0ZXN0IGNvbmZpcm1zIHRoaXMuIFNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBmb3IgdGhlIGJldHRlci4gVGhpcyBpcyBnb29kOyBpdCdzIGVuZm9yY2luZyBzdHJpY3RlciBwb2ludGVyIHR5cGUgY2hlY2tpbmcgZHVyaW5nIEJQRiB2ZXJpZmljYXRpb24uXG5cbk15IG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHZlcmlmeSBgY2hlY2tfYXRvbWljX3Jtd2AgYW5kIGBzYXZlX2F1eF9wdHJfdHlwZWAgbW9yZSBjbG9zZWx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCBjb25maXJtIHRoZSByZWFzb25pbmcsIGVzcGVjaWFsbHkgaWYgdGhlIGNoYW5nZSBoYXMgYnJvYWRlciBlZmZlY3RzLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIGF0b21pYyBvcGVyYXRpb25zIGFuZCBwb3RlbnRpYWwgcG9pbnRlciB0eXBlIGNvbmZ1c2lvbiwgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gVGhlIGtleSBmb2N1cyBoZXJlIHdpbGwgYmUgdGhlIGBjaGVja19hdG9taWNfcm13YCBmdW5jdGlvbi4gR2l2ZW4gdGhpcyBpcyBCUEYtcmVsYXRlZCwgSSdsbCBiZSBzdXJlIHRvIGVuYWJsZSB0aGUgYEJQRl9TWVNDQUxMYCBjb25maWcuIFRpbWUgdG8gZmlyZSB1cCB0aG9zZSB0b29scyBhbmQgc2VlIGlmIHdlIGNhbiBzaGFrZSBzb21ldGhpbmcgbG9vc2UhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo0Mi43OTc4NjYzMDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzMjAzMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2F0b21pY19ybXdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz02NDA0PXN0YXRpYyBpbnQgY2hlY2tfc3RvcmVfcmVnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDQxLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NDQyOnN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX3JtdyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDQzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjU2MT1zdGF0aWMgaW50IGNoZWNrX2F0b21pYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU3My1cXHRjYXNlIEJQRl9DTVBYQ0hHOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NTc0OlxcdFxcdHJldHVybiBjaGVja19hdG9taWNfcm13KGVudiwgaW5zbik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NzUtXFx0Y2FzZSBCUEZfTE9BRF9BQ1E6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ5OjQyLjkzMTA3NDQzOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjkyNTgxMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgQXRvbWljIFJNVyBEZXBlbmRlbmN5KipcblxuQWxyaWdodCwgbGV0J3MgZGlzc2VjdCB0aGlzLiBJJ20gbG9va2luZyBhdCBgY2hlY2tfYXRvbWljX3Jtd2AsIHdoaWNoIGlzLCBpbnRlcmVzdGluZ2x5LCBhIHN0YXRpYyBmdW5jdGlvbi4gTm93LCB0aGF0IGFsb25lIHdvdWxkbid0IG5vcm1hbGx5IHJhaXNlIGEgZmxhZywgYnV0IGl0J3MgY2FsbGVkIGJ5IGFub3RoZXIgc3RhdGljIGZ1bmN0aW9uLCBgY2hlY2tfYXRvbWljYC4gU28sIHRoZSBxdWVzdGlvbiBpbW1lZGlhdGVseSBiZWNvbWVzLCBcIldoYXQgY2FsbHMgYGNoZWNrX2F0b21pY2A/XCIgVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBncmFwaCBoZXJlIGlzIGNydWNpYWwgdG8gc2VlIGlmIHRoaXMgaXMgYW4gaXNvbGF0ZWQsIGludGVybmFsIGNoZWNrIG9yIGEgZGVlcGVyIGFyY2hpdGVjdHVyYWwgY29uY2Vybi4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgY2hlY2tfYXRvbWljYCB0byBzZWUgaXRzIHVzYWdlIGNvbnRleHQuIElzIGl0IGJlaW5nIHVzZWQgd2l0aGluIGEgc3BlY2lmaWMgbW9kdWxlPyBJcyBpdCBwYXJ0IG9mIGEgbGFyZ2VyLCBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYywgYXRvbWljIG9wZXJhdGlvbiB2YWxpZGF0aW9uIHNjaGVtZT8gS25vd2luZyB0aGUgY2FsbGVyIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBvZiB0aGVzZSBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4OTUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo0Ni40MDAzMzczOTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5NzY4MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2F0b21pY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTY0MDQ9c3RhdGljIGludCBjaGVja19zdG9yZV9yZWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY0NDEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0NDI6c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY0NDMtXFx0XFx0XFx0ICAgIHN0cnVjdCBicGZfaW5zbiAqaW5zbilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTIyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NTIzOnN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX2xvYWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjUyNC1cXHRcXHRcXHQgICAgIHN0cnVjdCBicGZfaW5zbiAqaW5zbilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTQxLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NTQyOnN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX3N0b3JlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NDMtXFx0XFx0XFx0ICAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NjAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1NjE6c3RhdGljIGludCBjaGVja19hdG9taWMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTYyLXtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTczLVxcdGNhc2UgQlBGX0NNUFhDSEc6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1NzQ6XFx0XFx0cmV0dXJuIGNoZWNrX2F0b21pY19ybXcoZW52LCBpbnNuKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU3NS1cXHRjYXNlIEJQRl9MT0FEX0FDUTpcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTgwLVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjU4MTpcXHRcXHRyZXR1cm4gY2hlY2tfYXRvbWljX2xvYWQoZW52LCBpbnNuKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU4Mi1cXHRjYXNlIEJQRl9TVE9SRV9SRUw6XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU4Ny1cXHRcXHR9XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1ODg6XFx0XFx0cmV0dXJuIGNoZWNrX2F0b21pY19zdG9yZShlbnYsIGluc24pO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTg5LVxcdGRlZmF1bHQ6XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTcyNjA9c3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3Mjc3LVxcdFxcdGlmIChCUEZfTU9ERShpbnNuLVxcdTAwM2Vjb2RlKSA9PSBCUEZfQVRPTUlDKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzI3ODpcXHRcXHRcXHRyZXR1cm4gY2hlY2tfYXRvbWljKGVudiwgaW5zbik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3Mjc5LVxcdFxcdHJldHVybiBjaGVja19zdG9yZV9yZWcoZW52LCBpbnNuLCBmYWxzZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ5OjQ2LjUzMDExMjA4MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3Mjk1MTI4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRm9jdXNpbmcgb24gQlBGIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIGBkb19jaGVja19pbnNuYCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0J3Mgbm90IGEgZGlyZWN0IGVudHJ5IHBvaW50LiBJIG5lZWQgdG8gZmluZCB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIEJQRiB2ZXJpZmllci4gTGV0J3Mgc2VlLi4uQWgsIHRoYXQncyBpdCEgYGJwZl9jaGVja2AgaXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIHRoZSB3aG9sZSB2ZXJpZmljYXRpb24gcHJvY2Vzcy4gSSdsbCBtYWtlIHRoYXQgdGhlIGZvY3VzIHN5bWJvbCBmb3Igbm93OyB1bmRlcnN0YW5kaW5nIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIGBicGZfY2hlY2tgIGlzIGtleS4gSSdsbCBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB0cmFjZSB0aGUgY29udHJvbCBmbG93IGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NjMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo1MC4yNTk2Mjg2MDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMzk5NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTU3PXN0YXRpYyBib29sIGJwZl9nbG9iYWxfcGVyY3B1X21hX3NldDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU5Oi8qIGJwZl9jaGVjaygpIGlzIGEgc3RhdGljIGNvZGUgYW5hbHl6ZXIgdGhhdCB3YWxrcyBlQlBGIHByb2dyYW1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjAtICogaW5zdHJ1Y3Rpb24gYnkgaW5zdHJ1Y3Rpb24gYW5kIHVwZGF0ZXMgcmVnaXN0ZXIvc3RhY2sgc3RhdGUuXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTQ9c3RhdGljIGludCBwcm9jZXNzX2tmX2FyZ19wdHJfdG9fcmJ0cmVlX25vZGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjAwNS0gKiBMU00gaG9va3MgYW5kIGl0ZXJzIChib3RoIHNsZWVwYWJsZSBhbmQgbm9uLXNsZWVwYWJsZSkgYXJlIHNhZmUuXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMDA2OiAqIEFueSBzbGVlcGFibGUgcHJvZ3MgYXJlIGFsc28gc2FmZSBzaW5jZSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCgpIGVuZm9yY2VcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIwMDctICogdGhlbSBjYW4gb25seSBiZSBhdHRhY2hlZCB0byBzb21lIHNwZWNpZmljIGhvb2sgcG9pbnRzLlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MDMzPXN0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkwNDYtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MDQ3OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA0OC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NDcwPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTAwLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTUwMTpcXHRyZXQgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFxcdTAwMjZ0Z3RfaW5mbyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTAyLVxcdGlmIChyZXQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1NjktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTcwOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1NzEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwMDM9c3RhdGljIGVudW0gYnBmX3NpZ19rZXlyaW5nIGJwZl9jbGFzc2lmeV9rZXlyaW5nKHMzMiBrZXlyaW5nX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMDE3LS8qXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMDE4OiAqIFZlcmlmeSB0aGUgUEtDUyM3IHNpZ25hdHVyZSBvZiBhIGxvYWRlZCBwcm9ncmFtLiBDYWxsZWQgZnJvbSBicGZfY2hlY2soKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDAxOS0gKiBvbmNlIHRoZSBwcm9ncmFtJ3MgbWV0YWRhdGEgbWFwcyBoYXZlIGJlZW4gcmVzb2x2ZWQgaW50byB1c2VkX21hcHMsIHNvXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwMjY9c3RhdGljIGludCBicGZfcHJvZ192ZXJpZnlfc2lnbmF0dXJlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAxNDItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMTQzOmludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE0NC1cXHQgICAgICBzdHJ1Y3QgYnBmX2xvZ19hdHRyICphdHRyX2xvZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE1Ny1cXHQvKiAnc3RydWN0IGJwZl92ZXJpZmllcl9lbnYnIGNhbiBiZSBnbG9iYWwsIGJ1dCBzaW5jZSBpdCdzIG5vdCBzbWFsbCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjAxNTg6XFx0ICogYWxsb2NhdGUvZnJlZSBpdCBldmVyeSB0aW1lIGJwZl9jaGVjaygpIGlzIGNhbGxlZFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE1OS1cXHQgKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDI2NS1cXHQvKiBWYWxpZGF0ZSBCVEYgYWdhaW5zdCB0aGUgY29tcGxldGUgc3VicHJvZ3JhbSBsYXlvdXQgYW5kIGFwcGx5IENPLVJFLiAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDI2NjpcXHRyZXQgPSBicGZfY2hlY2tfYnRmX2luZm8oZW52LCBhdHRyLCB1YXR0cik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjY3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjg1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDI4NjpcXHRyZXQgPSBicGZfY2hlY2tfY2ZnKGVudik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjg3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo1MC40MjMwMzQ4MDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk4MTk5NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlBGIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIGBicGZfY2hlY2tgIGlzIHRoZSBwcmltYXJ5IGZ1bmN0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLCBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmxhZyBhcHBlYXJzIHRvIGJlIGBCUEZfU1lTQ0FMTGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyBqdXN0IG1ha2UgKnN1cmUqIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY29uZmlncyB0aGF0IG1pZ2h0IGJlIHN1YnRseSBpbnZvbHZlZCBpbiB0aGlzIHdob2xlIHRoaW5nIOKAkyBnb3R0YSBiZSB0aG9yb3VnaC5cblxuSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggSSdtIHJldmlld2luZyBoYXMgbWFkZSBjaGFuZ2VzIHRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBDb25zaWRlcmluZyB0aGF0IGZpbGUgZ2V0cyBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQsIHRoaXMgYWxsIHNlZW1zIHRvIGJlIGNvYWxlc2NpbmcgcHJldHR5IG5lYXRseS4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gcmVhbGx5IGRpdmUgaW50byBgdmVyaWZpZXIuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCB0aGUgcGF0Y2ggaXMgKmRvaW5nKiB3aXRoIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTk5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6NTMuODIxMjM3NjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTQ2NDg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXFxcXCRcXFxcKENPTkZJR19CUEZfU1lTQ0FMTFxcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gKz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXFxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGZpeHVwcy5vIGNmZy5vIHN0YXRlcy5vIGJhY2t0cmFjay5vIGNoZWNrX2J0Zi5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xNS1vYmotJHtDT05GSUdfQlBGX0xTTX1cXHQgICs9IGJwZl9pbm9kZV9zdG9yYWdlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGlzYXNtLm8gbXByb2cub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTctb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IHRyYW1wb2xpbmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYXJlbmEubyByYW5nZV90cmVlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIxLWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTIzPWlmZXEgKCQoQ09ORklHX05FVCkseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGV2bWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY3B1bWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gb2ZmbG9hZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IG5ldF9uYW1lc3BhY2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSB0Y3gub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMjktZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMwPWlmZXEgKCQoQ09ORklHX1BFUkZfRVZFTlRTKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBzdGFja21hcC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0zMi1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzM9aWZlcSAoJChDT05GSUdfQ0dST1VQUykseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY2dyb3VwX2l0ZXIubyBicGZfY2dycF9zdG9yYWdlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM1LWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTM3PWlmZXEgKCQoQ09ORklHX0lORVQpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHJldXNlcG9ydF9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0zOS1lbmRpZlxcbi0tXFxua2VybmVsL2JwZi9NYWtlZmlsZT00Mz1pZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfc3RydWN0X29wcy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNwdW1hc2sub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTU4PWlmbmVxICgkKENPTkZJR19DUllQVE8pLClcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY3J5cHRvLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYwLWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT02MT1vYmotJChDT05GSUdfQlBGX1BSRUxPQUQpICs9IHByZWxvYWQvXFxua2VybmVsL2JwZi9NYWtlZmlsZS02Mi1cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gcmVsb19jb3JlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGZfcmVsb2NhdGUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBrbWVtX2NhY2hlX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjctaWZlcSAoJChDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVIpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRtYWJ1Zl9pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY5LWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ5OjUzLjk0MjcwODkyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODAxMjc1OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFNlY3VyaXR5IE1vZHVsZSoqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgQlBGX1NZU0NBTExgLCBhbmQgbXkgcHJpbWFyeSBmb2N1cyBzeW1ib2wgaXMgYGJwZl9jaGVja2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFyZSB0aGVyZSAqb3RoZXIqIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBleGVjdXRpb24gcGF0aCB0aGF0IG1pZ2h0IHNlcnZlIGFzIGVxdWFsbHkgZ29vZCwgb3IgZXZlbiBiZXR0ZXIsIGZvY3VzIHBvaW50cyBmb3IgbXkgYW5hbHlzaXM/XCIgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYWx0ZXJuYXRpdmVzIHRoYXQgbWlnaHQgYmUgbW9yZSByZXZlYWxpbmcuXG5cbkxldCdzIHRyYWNlIHRoaXMgZnVuY3Rpb24gY2FsbCBjaGFpbjogVGhlIHBhdGNoIHRvdWNoZXMgYGNoZWNrX2F0b21pY19ybXdgLCB3aGljaCBpcyBjYWxsZWQgYnkgYGNoZWNrX2F0b21pY2AuIGBjaGVja19hdG9taWNgIHRoZW4gZmVlZHMgaW50byBgZG9fY2hlY2tfaW5zbmAsIHdoaWNoLCBpbiB0dXJuLCBpcyBhIGRlcGVuZGVuY3kgZm9yIGBkb19jaGVja2AuIEZpbmFsbHksIGBkb19jaGVja2AgZ2V0cyBjYWxsZWQgYnkgYGJwZl9jaGVja2AuIEdpdmVuIHRoYXQgcGF0aCwgYGJwZl9jaGVja2AgbG9va3MgcHJldHR5IHNvbGlkIGFzIHRoZSBmb2NhbCBwb2ludC4gSXQgaGl0cyBhbGwgdGhlIGhpZ2ggbGV2ZWwgY2hlY2tzLlxuXG5UaGVyZWZvcmUsIEknbGwgc3RpY2sgd2l0aCBgYnBmX2NoZWNrYC4gSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIHRoZSByZXN1bHRzIGJhc2VkIG9uIHRoaXMgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgzMSwiT3V0cHV0VG9rZW5zIjoxMDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6NTguNzQzOTg3NzAxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2ODgxNzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gc2F2ZSB0aGUgYXV4aWxpYXJ5IHBvaW50ZXIgdHlwZSBmb3IgYWxsIGF0b21pYyBSTVcgb3BlcmF0aW9ucywgbm90IGp1c3QgYXJlbmEgcG9pbnRlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGF0b21pYyBvcGVyYXRpb25zIGFuZCBwb2ludGVyIHR5cGVzLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsIHdoZW4gbG9hZGluZyBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHNhdmUgdGhlIGF1eGlsaWFyeSBwb2ludGVyIHR5cGUgZm9yIGFsbCBhdG9taWMgUk1XIG9wZXJhdGlvbnMsIG5vdCBqdXN0IGFyZW5hIHBvaW50ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBhdG9taWMgb3BlcmF0aW9ucyBhbmQgcG9pbnRlciB0eXBlcy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgQlBGIHByb2dyYW1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo1OC45NTA4ODA1NDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDExMzYyOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6NTguOTUxNzUyOTk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwMDEwNDg0NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIEJQRiB2ZXJpZmllciBpc3N1ZSB3aGVyZSB0aGUgcG9pbnRlciB0eXBlIGZvciBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgaW5zdHJ1Y3Rpb25zIHdhcyBvbmx5IHNhdmVkIGZvciBhcmVuYSBwb2ludGVycy4gQnkgc2F2aW5nIHRoZSBwb2ludGVyIHR5cGUgZm9yIGFsbCBwb2ludGVyIHR5cGVzLCBpdCBwcmV2ZW50cyBhIHNpbmdsZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcyAoZS5nLiwgYm90aCBhcmVuYSBhbmQgbWFwIHZhbHVlIHBvaW50ZXJzKSBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocy4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdHlwZSBjb25mdXNpb24gYW5kIGluY29ycmVjdCBKSVQgY29tcGlsYXRpb24sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgY2F1Z2h0IGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWUyM2VkNWE0NmE2MmZjYTcwNzM2NmU3NzU1YjY4NDk1OTYwNDgzN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDEyOjQ5OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCAxNjRkMTZjMjQzY2E2Li4zZDY3MmY2NjY1YmVjIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC02NTA5LDExICs2NTA5LDkgQEAgc3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0aWYgKGlzX2FyZW5hX3JlZyhlbnYsIGluc24tXHUwMDNlZHN0X3JlZykpIHtcbi1cdFx0ZXJyID0gc2F2ZV9hdXhfcHRyX3R5cGUoZW52LCBQVFJfVE9fQVJFTkEsIGZhbHNlKTtcbi1cdFx0aWYgKGVycilcbi1cdFx0XHRyZXR1cm4gZXJyO1xuLVx0fVxuK1x0ZXJyID0gc2F2ZV9hdXhfcHRyX3R5cGUoZW52LCBkc3RfcmVnLVx1MDAzZXR5cGUsIGZhbHNlKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4gXHQvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiB3cml0ZSBpbnRvIHRoZSBzYW1lIG1lbW9yeS4gKi9cbiBcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXHUwMDNlZHN0X3JlZyksIGluc24tXHUwMDNlb2ZmLFxuIFx0XHRcdCAgICAgICBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLCBCUEZfV1JJVEUsIC0xLCB0cnVlLCBmYWxzZSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xuaW5kZXggYjI0MWJiY2Y1NGE4YS4uMmU0M2RhMTg4MTk0YiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xuQEAgLTI1LDYgKzI1LDE1IEBAIHN0cnVjdCB7XG4gXHRfX3Vsb25nKG1hcF9leHRyYSwgQVJFTkFfVk1fU1RBUlQpOyAvKiBzdGFydCBvZiBtbWFwKCkgcmVnaW9uICovXG4gfSBhcmVuYSBTRUMoXCIubWFwc1wiKTtcbiBcbitzdHJ1Y3Qge1xuK1x0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUlJBWSk7XG4rXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xuK1x0X190eXBlKGtleSwgX191MzIpO1xuK1x0X190eXBlKHZhbHVlLCBfX3U2NCk7XG4rfSBhdG9taWNfbWFwIFNFQyhcIi5tYXBzXCIpO1xuK1xuK3N0YXRpYyBfX3U2NCBhcmVuYV9hdG9taWNfdGFyZ2V0IFNFQyhcIi5hZGRyX3NwYWNlLjFcIik7XG4rXG4gU0VDKFwic29ja2V0XCIpXG4gX19zdWNjZXNzIF9fcmV0dmFsKDApXG4gaW50IGJhc2ljX2FsbG9jMV9ub3NsZWVwKHZvaWQgKmN0eClcbkBAIC02MzcsNiArNjQ2LDQxIEBAIGludCBub25fYXJlbmFfcHRyX2FkZF90b19hcmVuYV9wdHIodm9pZCAqY3R4KVxuIFxuICNlbmRpZlxuIFxuK1NFQyhcInNvY2tldFwiKVxuK19fZGVzY3JpcHRpb24oXCJhcmVuYSBhbmQgbWFwIHZhbHVlIGF0b21pYyBhdCB0aGUgc2FtZSBpbnN0cnVjdGlvblwiKVxuK19fZmFpbHVyZSBfX21zZyhcInNhbWUgaW5zbiBjYW5ub3QgYmUgdXNlZCB3aXRoIGRpZmZlcmVudCBwb2ludGVyc1wiKVxuK19fYXJjaF94ODZfNjRcbitfX2xvYWRfaWZfSklUZWQoKVxuK19fbmFrZWQgdm9pZCBtaXhlZF9hcmVuYV9tYXBfdmFsdWVfYXRvbWljKHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcIlx0XHRcdFx0XHRcXFxuK1x0cjEgPSAwO1x0XHRcdFx0XHRcXFxuK1x0Kih1MzIgKikocjEwIC0gNCkgPSByMTtcdFx0XHRcXFxuK1x0cjIgPSByMTA7XHRcdFx0XHRcdFxcXG4rXHRyMiArPSAtNDtcdFx0XHRcdFx0XFxcbitcdHIxID0gJVthdG9taWNfbWFwXSBsbDtcdFx0XHRcdFxcXG4rXHRjYWxsICVbYnBmX21hcF9sb29rdXBfZWxlbV07XHRcdFx0XFxcbitcdGlmIHIwID09IDAgZ290byAxZjtcdFx0XHRcdFxcXG4rXHRyNiA9IHIwO1x0XHRcdFx0XHRcXFxuK1x0cjcgPSAlW2FyZW5hX2F0b21pY190YXJnZXRdIGxsO1x0XHRcdFxcXG4rXHQuYnl0ZSAweGJmOyAuYnl0ZSAweDc3OyAuc2hvcnQgMTsgLmxvbmcgMTtcdFxcXG4rXHRjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XHRcdFx0XFxcbitcdGlmIHcwICE9IDAgZ290byAyZjtcdFx0XHRcdFxcXG4rXHRyOCA9IHI2O1x0XHRcdFx0XHRcXFxuK1x0Z290byAzZjtcdFx0XHRcdFx0XFxcbisyOlx0cjggPSByNztcdFx0XHRcdFx0XFxcbiszOlx0cjkgPSAxO1x0XHRcdFx0XHRcXFxuK1x0bG9jayAqKHU2NCAqKShyOCArIDApICs9IHI5O1x0XHRcdFxcXG4rMTpcdHIwID0gMDtcdFx0XHRcdFx0XFxcbitcdGV4aXQ7XHRcdFx0XHRcdFx0XFxcbitcIlx0OlxuK1x0OiBfX2ltbV9hZGRyKGF0b21pY19tYXApLFxuK1x0ICBfX2ltbV9hZGRyKGFyZW5hX2F0b21pY190YXJnZXQpLFxuK1x0ICBfX2ltbShicGZfbWFwX2xvb2t1cF9lbGVtKSxcbitcdCAgX19pbW0oYnBmX2dldF9wcmFuZG9tX3UzMilcbitcdDogX19jbG9iYmVyX2FsbCk7XG4rfVxuK1xuIHN0YXRpYyBfX25vaW5saW5lXG4gdTMyIF9fYXJlbmEgKmNoZWNrX2FyZW5hX2FyZ19ub25nbG9iYWwodTMyIF9fYXJlbmEgKmFyZylcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo1OC45NTE3NTc3ODhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMTA0NDczNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQlBGIFZlcmlmaWVyIEJ1ZyBGaXg6IEVuc3VyaW5nIENvcnJlY3QgUG9pbnRlciBUeXBlIFRyYWNraW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHRoZSBgY2hlY2tfYXRvbWljX3Jtd2AgZnVuY3Rpb24gaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEl0IHNlZW1zIGxpa2UgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBidWcgZml4LCBidXQgaW1wb3J0YW50IG5vbmV0aGVsZXNzLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHRoYXQgdGhlIGNvZGUgbm93IGNhbGxzIGBzYXZlX2F1eF9wdHJfdHlwZWAgd2l0aCB0aGUgYWN0dWFsIHBvaW50ZXIgdHlwZSBvZiB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgKGBkc3RfcmVnLVx1MDAzZXR5cGVgKSBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgYFBUUl9UT19BUkVOQWAuXG5cbkVzc2VudGlhbGx5LCB3aGF0J3MgaGFwcGVuaW5nIGlzIHRoYXQgdGhlIHZlcmlmaWVyIG5vdyBjb3JyZWN0bHkgdHJhY2tzIHRoZSBwb2ludGVyIHR5cGUgaW4gYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIChSTVcpIGluc3RydWN0aW9ucy4gQmVmb3JlLCBpdCB3YXMgb25seSB0cmFja2luZyBhcmVuYSBwb2ludGVycyBpbiB0aGlzIGNvbnRleHQsIGJ1dCBub3cgaXQncyBjb3JyZWN0bHkgY2hlY2tpbmcgYWxsIHBvaW50ZXIgdHlwZXMuIFRoZSBhZGRlZCB0ZXN0IGNhc2UsIGBtaXhlZF9hcmVuYV9tYXBfdmFsdWVfYXRvbWljYCwgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGRpcmVjdGx5IHRlc3RzIHRoaXMuIEl0IG1ha2VzIHN1cmUgdGhhdCBhIHNpbmdsZSBSTVcgaW5zdHJ1Y3Rpb24gKmNhbid0KiBiZSB1c2VkIHdpdGgsIHNheSwgYm90aCBhbiBhcmVuYSBwb2ludGVyIGFuZCBhIG1hcCB2YWx1ZSBwb2ludGVyLCB3aGljaCBpcyB0aGUgdHlwZSBvZiBidWcgd2UgYXJlIGZpeGluZy5cblxuVGhpcyBjaGFuZ2UgaXMgYWxsIGFib3V0IGVuc3VyaW5nIHRoZSB2ZXJpZmllcidzIHR5cGUgdHJhY2tpbmcgaXMgYWNjdXJhdGUgYW5kIGNvbnNpc3RlbnQsIHdoaWNoIGlzIHBhcmFtb3VudCBmb3IgdGhlIEpJVCBhbmQgb3ZlcmFsbCBleGVjdXRpb24gc2FmZXR5LiBJZiB0aGUgdmVyaWZpZXIgbWlzY2xhc3NpZmllcyBhIHBvaW50ZXIsIHRoZSBKSVQgY291bGQgZ2VuZXJhdGUgaW5jb3JyZWN0IGNvZGUgZm9yIHRoYXQgaW5zdHJ1Y3Rpb24uIFdlIGNvdWxkIGVuZCB1cCB3aXRoIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcy5cblxuSSBpbml0aWFsbHkgd29uZGVyZWQgaWYgdGhpcyBoYWQgc29tZXRoaW5nIHRvIGRvIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnksIGJ1dCBpdCdzIGNsZWFybHkgbm90IHJlbGF0ZWQuIEtNU0FOIGhhbmRsZXMgdGhhdC4gVGhpcyBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgcG9pbnRlciAqdHlwZXMqIGFuZCBlbnN1cmluZyB0aGUgdmVyaWZpZXIgY2FuIGNvcnJlY3RseSBhbmQgY29uc2lzdGVudGx5IHRyYWNrIHRoZXNlIGRpZmZlcmVudCBwb2ludGVyIHR5cGVzLlxuXG5MZXQgbWUgcmVmcmVzaCBteXNlbGYgb24gdGhlIGBzYXZlX2F1eF9wdHJfdHlwZWAgZnVuY3Rpb24gaXRzZWxmLiBBaCwgcmlnaHQsIGl0IHNhdmVzIHRoZSBwb2ludGVyIHR5cGUgaW4gYGVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5wdHJfdHlwZWAuIEFuZCBpZiB0aGUgc2FtZSBpbnN0cnVjdGlvbiBpcyB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXIgdHlwZXMgaW4gZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocywgYHNhdmVfYXV4X3B0cl90eXBlYCByZXR1cm5zIGFuIGVycm9yIChgLUVJTlZBTGApIGlmIHRoZSB0eXBlcyBkb24ndCBtYXRjaC4gVGhpcyBpcyB0aGUgc2FmZWd1YXJkIHRoYXQncyBiZWluZyBwdXQgaW4gcGxhY2UgYW5kIG1hZGUgbW9yZSBjb25zaXN0ZW50IGhlcmUsIHByZXZlbnRpbmcgdHlwZSBjb25mdXNpb24uXG5cblNvLCB0aGlzIGlzIGEgc2VjdXJpdHktcmVsYXRlZCBmaXgsIHByZXZlbnRpbmcgdHlwZSBjb25mdXNpb24gb3IgaW5jb3JyZWN0IEpJVCBjb2RlIGdlbmVyYXRpb24uIFNpbmNlIGl0J3Mgbm90IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIEknbGwgc2V0IE5lZWRzS01TQU4gdG8gZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTQsIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NTA6MDguOTYyMjA5OTQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIEJQRiB2ZXJpZmllciBpc3N1ZSB3aGVyZSB0aGUgcG9pbnRlciB0eXBlIGZvciBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgaW5zdHJ1Y3Rpb25zIHdhcyBvbmx5IHNhdmVkIGZvciBhcmVuYSBwb2ludGVycy4gQnkgc2F2aW5nIHRoZSBwb2ludGVyIHR5cGUgZm9yIGFsbCBwb2ludGVyIHR5cGVzLCBpdCBwcmV2ZW50cyBhIHNpbmdsZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcyAoZS5nLiwgYm90aCBhcmVuYSBhbmQgbWFwIHZhbHVlIHBvaW50ZXJzKSBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocy4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdHlwZSBjb25mdXNpb24gYW5kIGluY29ycmVjdCBKSVQgY29tcGlsYXRpb24sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgY2F1Z2h0IGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBCUEYgdmVyaWZpZXIgaXNzdWUgd2hlcmUgdGhlIHBvaW50ZXIgdHlwZSBmb3IgYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIChSTVcpIGluc3RydWN0aW9ucyB3YXMgb25seSBzYXZlZCBmb3IgYXJlbmEgcG9pbnRlcnMuIEJ5IHNhdmluZyB0aGUgcG9pbnRlciB0eXBlIGZvciBhbGwgcG9pbnRlciB0eXBlcywgaXQgcHJldmVudHMgYSBzaW5nbGUgaW5zdHJ1Y3Rpb24gZnJvbSBiZWluZyB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXIgdHlwZXMgKGUuZy4sIGJvdGggYXJlbmEgYW5kIG1hcCB2YWx1ZSBwb2ludGVycykgYWNyb3NzIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aHMuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIHR5cGUgY29uZnVzaW9uIGFuZCBpbmNvcnJlY3QgSklUIGNvbXBpbGF0aW9uLCB3aGljaCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlc2UgdHlwZXMgb2YgYnVncyBhcmUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGNhdWdodCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow45swr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 12:47:36 +0000 UTC FinishedAt: 2026-08-13 12:50:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "6f033615ef8fb2374daa7e50a8ff68616bc850d2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "6f033615ef8fb2374daa7e50a8ff68616bc850d2", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "ff8e39ea-0f98-4e61-8298-627bf62f2974" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_check" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2NoZWNrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBCUEYgdmVyaWZpZXIgaXNzdWUgd2hlcmUgdGhlIHBvaW50ZXIgdHlwZSBmb3IgYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIChSTVcpIGluc3RydWN0aW9ucyB3YXMgb25seSBzYXZlZCBmb3IgYXJlbmEgcG9pbnRlcnMuIEJ5IHNhdmluZyB0aGUgcG9pbnRlciB0eXBlIGZvciBhbGwgcG9pbnRlciB0eXBlcywgaXQgcHJldmVudHMgYSBzaW5nbGUgaW5zdHJ1Y3Rpb24gZnJvbSBiZWluZyB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXIgdHlwZXMgKGUuZy4sIGJvdGggYXJlbmEgYW5kIG1hcCB2YWx1ZSBwb2ludGVycykgYWNyb3NzIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aHMuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIHR5cGUgY29uZnVzaW9uIGFuZCBpbmNvcnJlY3QgSklUIGNvbXBpbGF0aW9uLCB3aGljaCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlc2UgdHlwZXMgb2YgYnVncyBhcmUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGNhdWdodCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHNhdmUgdGhlIGF1eGlsaWFyeSBwb2ludGVyIHR5cGUgZm9yIGFsbCBhdG9taWMgUk1XIG9wZXJhdGlvbnMsIG5vdCBqdXN0IGFyZW5hIHBvaW50ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBhdG9taWMgb3BlcmF0aW9ucyBhbmQgcG9pbnRlciB0eXBlcy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgQlBGIHByb2dyYW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWUyM2VkNWE0NmE2MmZjYTcwNzM2NmU3NzU1YjY4NDk1OTYwNDgzN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDEyOjQ5OjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMTY0ZDE2YzI0M2NhNi4uM2Q2NzJmNjY2NWJlYyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtNjUwOSwxMSAmIzQzOzY1MDksOSBAQCBzdGF0aWMgaW50IGNoZWNrX2F0b21pY19ybXcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG4gXG4tXHRpZiAoaXNfYXJlbmFfcmVnKGVudiwgaW5zbi1cdTAwM2Vkc3RfcmVnKSkge1xuLVx0XHRlcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIFBUUl9UT19BUkVOQSwgZmFsc2UpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdHJldHVybiBlcnI7XG4tXHR9XG4mIzQzO1x0ZXJyID0gc2F2ZV9hdXhfcHRyX3R5cGUoZW52LCBkc3RfcmVnLVx1MDAzZXR5cGUsIGZhbHNlKTtcbiYjNDM7XHRpZiAoZXJyKVxuJiM0MztcdFx0cmV0dXJuIGVycjtcbiBcdC8qIENoZWNrIHdoZXRoZXIgd2UgY2FuIHdyaXRlIGludG8gdGhlIHNhbWUgbWVtb3J5LiAqL1xuIFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cdTAwM2VpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi1cdTAwM2Vkc3RfcmVnKSwgaW5zbi1cdTAwM2VvZmYsXG4gXHRcdFx0ICAgICAgIEJQRl9TSVpFKGluc24tXHUwMDNlY29kZSksIEJQRl9XUklURSwgLTEsIHRydWUsIGZhbHNlKTtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXG5pbmRleCBiMjQxYmJjZjU0YThhLi4yZTQzZGExODgxOTRiIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXG5AQCAtMjUsNiAmIzQzOzI1LDE1IEBAIHN0cnVjdCB7XG4gXHRfX3Vsb25nKG1hcF9leHRyYSwgQVJFTkFfVk1fU1RBUlQpOyAvKiBzdGFydCBvZiBtbWFwKCkgcmVnaW9uICovXG4gfSBhcmVuYSBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspO1xuIFxuJiM0MztzdHJ1Y3Qge1xuJiM0MztcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJSQVkpO1xuJiM0MztcdF9fdWludChtYXhfZW50cmllcywgMSk7XG4mIzQzO1x0X190eXBlKGtleSwgX191MzIpO1xuJiM0MztcdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xuJiM0Mzt9IGF0b21pY19tYXAgU0VDKFwmIzM0Oy5tYXBzXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBfX3U2NCBhcmVuYV9hdG9taWNfdGFyZ2V0IFNFQyhcJiMzNDsuYWRkcl9zcGFjZS4xXCYjMzQ7KTtcbiYjNDM7XG4gU0VDKFwmIzM0O3NvY2tldFwmIzM0OylcbiBfX3N1Y2Nlc3MgX19yZXR2YWwoMClcbiBpbnQgYmFzaWNfYWxsb2MxX25vc2xlZXAodm9pZCAqY3R4KVxuQEAgLTYzNyw2ICYjNDM7NjQ2LDQxIEBAIGludCBub25fYXJlbmFfcHRyX2FkZF90b19hcmVuYV9wdHIodm9pZCAqY3R4KVxuIFxuICNlbmRpZlxuIFxuJiM0MztTRUMoXCYjMzQ7c29ja2V0XCYjMzQ7KVxuJiM0MztfX2Rlc2NyaXB0aW9uKFwmIzM0O2FyZW5hIGFuZCBtYXAgdmFsdWUgYXRvbWljIGF0IHRoZSBzYW1lIGluc3RydWN0aW9uXCYjMzQ7KVxuJiM0MztfX2ZhaWx1cmUgX19tc2coXCYjMzQ7c2FtZSBpbnNuIGNhbm5vdCBiZSB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXJzXCYjMzQ7KVxuJiM0MztfX2FyY2hfeDg2XzY0XG4mIzQzO19fbG9hZF9pZl9KSVRlZCgpXG4mIzQzO19fbmFrZWQgdm9pZCBtaXhlZF9hcmVuYV9tYXBfdmFsdWVfYXRvbWljKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRhc20gdm9sYXRpbGUgKFwmIzM0O1x0XHRcdFx0XHRcXFxuJiM0MztcdHIxID0gMDtcdFx0XHRcdFx0XFxcbiYjNDM7XHQqKHUzMiAqKShyMTAgLSA0KSA9IHIxO1x0XHRcdFxcXG4mIzQzO1x0cjIgPSByMTA7XHRcdFx0XHRcdFxcXG4mIzQzO1x0cjIgJiM0Mzs9IC00O1x0XHRcdFx0XHRcXFxuJiM0MztcdHIxID0gJVthdG9taWNfbWFwXSBsbDtcdFx0XHRcdFxcXG4mIzQzO1x0Y2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dO1x0XHRcdFxcXG4mIzQzO1x0aWYgcjAgPT0gMCBnb3RvIDFmO1x0XHRcdFx0XFxcbiYjNDM7XHRyNiA9IHIwO1x0XHRcdFx0XHRcXFxuJiM0MztcdHI3ID0gJVthcmVuYV9hdG9taWNfdGFyZ2V0XSBsbDtcdFx0XHRcXFxuJiM0MztcdC5ieXRlIDB4YmY7IC5ieXRlIDB4Nzc7IC5zaG9ydCAxOyAubG9uZyAxO1x0XFxcbiYjNDM7XHRjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XHRcdFx0XFxcbiYjNDM7XHRpZiB3MCAhPSAwIGdvdG8gMmY7XHRcdFx0XHRcXFxuJiM0MztcdHI4ID0gcjY7XHRcdFx0XHRcdFxcXG4mIzQzO1x0Z290byAzZjtcdFx0XHRcdFx0XFxcbiYjNDM7MjpcdHI4ID0gcjc7XHRcdFx0XHRcdFxcXG4mIzQzOzM6XHRyOSA9IDE7XHRcdFx0XHRcdFxcXG4mIzQzO1x0bG9jayAqKHU2NCAqKShyOCAmIzQzOyAwKSAmIzQzOz0gcjk7XHRcdFx0XFxcbiYjNDM7MTpcdHIwID0gMDtcdFx0XHRcdFx0XFxcbiYjNDM7XHRleGl0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1wmIzM0O1x0OlxuJiM0MztcdDogX19pbW1fYWRkcihhdG9taWNfbWFwKSxcbiYjNDM7XHQgIF9faW1tX2FkZHIoYXJlbmFfYXRvbWljX3RhcmdldCksXG4mIzQzO1x0ICBfX2ltbShicGZfbWFwX2xvb2t1cF9lbGVtKSxcbiYjNDM7XHQgIF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpXG4mIzQzO1x0OiBfX2Nsb2JiZXJfYWxsKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgX19ub2lubGluZVxuIHUzMiBfX2FyZW5hICpjaGVja19hcmVuYV9hcmdfbm9uZ2xvYmFsKHUzMiBfX2FyZW5hICphcmcpXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9jaGVjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHNhdmUgdGhlIGF1eGlsaWFyeSBwb2ludGVyIHR5cGUgZm9yIGFsbCBhdG9taWMgUk1XIG9wZXJhdGlvbnMsIG5vdCBqdXN0IGFyZW5hIHBvaW50ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBhdG9taWMgb3BlcmF0aW9ucyBhbmQgcG9pbnRlciB0eXBlcy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgQlBGIHByb2dyYW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWUyM2VkNWE0NmE2MmZjYTcwNzM2NmU3NzU1YjY4NDk1OTYwNDgzNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDEyOjQ5OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCmluZGV4IDE2NGQxNmMyNDNjYTYuLjNkNjcyZjY2NjViZWMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTY1MDksMTEgJiM0Mzs2NTA5LDkgQEAgc3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsCiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCWlmIChpc19hcmVuYV9yZWcoZW52LCBpbnNuLSZndDtkc3RfcmVnKSkgewotCQllcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIFBUUl9UT19BUkVOQSwgZmFsc2UpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQl9CiYjNDM7CWVyciA9IHNhdmVfYXV4X3B0cl90eXBlKGVudiwgZHN0X3JlZy0mZ3Q7dHlwZSwgZmFsc2UpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKIAkvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiB3cml0ZSBpbnRvIHRoZSBzYW1lIG1lbW9yeS4gKi8KIAllcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LSZndDtpbnNuX2lkeCwgZHN0X3JlZywgYXJnbm9fZnJvbV9yZWcoaW5zbi0mZ3Q7ZHN0X3JlZyksIGluc24tJmd0O29mZiwKIAkJCSAgICAgICBCUEZfU0laRShpbnNuLSZndDtjb2RlKSwgQlBGX1dSSVRFLCAtMSwgdHJ1ZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYwppbmRleCBiMjQxYmJjZjU0YThhLi4yZTQzZGExODgxOTRiIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYwpAQCAtMjUsNiAmIzQzOzI1LDE1IEBAIHN0cnVjdCB7CiAJX191bG9uZyhtYXBfZXh0cmEsIEFSRU5BX1ZNX1NUQVJUKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqLwogfSBhcmVuYSBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKIAomIzQzO3N0cnVjdCB7CiYjNDM7CV9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJSQVkpOwomIzQzOwlfX3VpbnQobWF4X2VudHJpZXMsIDEpOwomIzQzOwlfX3R5cGUoa2V5LCBfX3UzMik7CiYjNDM7CV9fdHlwZSh2YWx1ZSwgX191NjQpOwomIzQzO30gYXRvbWljX21hcCBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKJiM0MzsKJiM0MztzdGF0aWMgX191NjQgYXJlbmFfYXRvbWljX3RhcmdldCBTRUMoJiMzNDsuYWRkcl9zcGFjZS4xJiMzNDspOwomIzQzOwogU0VDKCYjMzQ7c29ja2V0JiMzNDspCiBfX3N1Y2Nlc3MgX19yZXR2YWwoMCkKIGludCBiYXNpY19hbGxvYzFfbm9zbGVlcCh2b2lkICpjdHgpCkBAIC02MzcsNiAmIzQzOzY0Niw0MSBAQCBpbnQgbm9uX2FyZW5hX3B0cl9hZGRfdG9fYXJlbmFfcHRyKHZvaWQgKmN0eCkKIAogI2VuZGlmCiAKJiM0MztTRUMoJiMzNDtzb2NrZXQmIzM0OykKJiM0MztfX2Rlc2NyaXB0aW9uKCYjMzQ7YXJlbmEgYW5kIG1hcCB2YWx1ZSBhdG9taWMgYXQgdGhlIHNhbWUgaW5zdHJ1Y3Rpb24mIzM0OykKJiM0MztfX2ZhaWx1cmUgX19tc2coJiMzNDtzYW1lIGluc24gY2Fubm90IGJlIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlcnMmIzM0OykKJiM0MztfX2FyY2hfeDg2XzY0CiYjNDM7X19sb2FkX2lmX0pJVGVkKCkKJiM0MztfX25ha2VkIHZvaWQgbWl4ZWRfYXJlbmFfbWFwX3ZhbHVlX2F0b21pYyh2b2lkKQomIzQzO3sKJiM0MzsJYXNtIHZvbGF0aWxlICgmIzM0OwkJCQkJXAomIzQzOwlyMSA9IDA7CQkJCQlcCiYjNDM7CSoodTMyICopKHIxMCAtIDQpID0gcjE7CQkJXAomIzQzOwlyMiA9IHIxMDsJCQkJCVwKJiM0MzsJcjIgJiM0Mzs9IC00OwkJCQkJXAomIzQzOwlyMSA9ICVbYXRvbWljX21hcF0gbGw7CQkJCVwKJiM0MzsJY2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dOwkJCVwKJiM0MzsJaWYgcjAgPT0gMCBnb3RvIDFmOwkJCQlcCiYjNDM7CXI2ID0gcjA7CQkJCQlcCiYjNDM7CXI3ID0gJVthcmVuYV9hdG9taWNfdGFyZ2V0XSBsbDsJCQlcCiYjNDM7CS5ieXRlIDB4YmY7IC5ieXRlIDB4Nzc7IC5zaG9ydCAxOyAubG9uZyAxOwlcCiYjNDM7CWNhbGwgJVticGZfZ2V0X3ByYW5kb21fdTMyXTsJCQlcCiYjNDM7CWlmIHcwICE9IDAgZ290byAyZjsJCQkJXAomIzQzOwlyOCA9IHI2OwkJCQkJXAomIzQzOwlnb3RvIDNmOwkJCQkJXAomIzQzOzI6CXI4ID0gcjc7CQkJCQlcCiYjNDM7MzoJcjkgPSAxOwkJCQkJXAomIzQzOwlsb2NrICoodTY0ICopKHI4ICYjNDM7IDApICYjNDM7PSByOTsJCQlcCiYjNDM7MToJcjAgPSAwOwkJCQkJXAomIzQzOwlleGl0OwkJCQkJCVwKJiM0MzsmIzM0Owk6CiYjNDM7CTogX19pbW1fYWRkcihhdG9taWNfbWFwKSwKJiM0MzsJICBfX2ltbV9hZGRyKGFyZW5hX2F0b21pY190YXJnZXQpLAomIzQzOwkgIF9faW1tKGJwZl9tYXBfbG9va3VwX2VsZW0pLAomIzQzOwkgIF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpCiYjNDM7CTogX19jbG9iYmVyX2FsbCk7CiYjNDM7fQomIzQzOwogc3RhdGljIF9fbm9pbmxpbmUKIHUzMiBfX2FyZW5hICpjaGVja19hcmVuYV9hcmdfbm9uZ2xvYmFsKHUzMiBfX2FyZW5hICphcmcpCiB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFZlcmlmaWVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyBpdCBoYW5kbGVzIGF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoUk1XKSBvcGVyYXRpb25zLiBJdCBsb29rcyBsaWtlIHRoZSBjaGFuZ2UgaXMgaW4gYGNoZWNrX2F0b21pY19ybXdgLCBhbmQgdGhlIGNvcmUgb2YgaXQgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHJlcGxhY2VtZW50OiBpbnN0ZWFkIG9mIG9ubHkgc2F2aW5nIHRoZSBhdXhpbGlhcnkgcG9pbnRlciB0eXBlIHdoZW4gdGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIChgZHN0X3JlZ2ApIGlzIGFuIGFyZW5hIHJlZ2lzdGVyLCBpdCBub3cgc2F2ZXMgdGhlIHR5cGUgZm9yICphbGwqIGF0b21pYyBSTVcgb3BlcmF0aW9ucy4KClRoZSBvcmlnaW5hbCBjb2RlIHNuaXBwZXQgd2FzOgoKYGBgYwotCWlmIChpc19hcmVuYV9yZWcoZW52LCBpbnNuLSZndDtkc3RfcmVnKSkgewotCQllcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIFBUUl9UT19BUkVOQSwgZmFsc2UpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQl9CiYjNDM7CWVyciA9IHNhdmVfYXV4X3B0cl90eXBlKGVudiwgZHN0X3JlZy0mZ3Q7dHlwZSwgZmFsc2UpOwomIzQzOwlpZiAoZXJyKQomIzQzOwkJcmV0dXJuIGVycjsKYGBgCgpUaGlzIGVuc3VyZXMgY29uc2lzdGVuY3kgYnkgcHJldmVudGluZyB0aGUgc2FtZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcy4gVGhlIGFkZGVkIHNlbGZ0ZXN0IGNvbmZpcm1zIHRoaXMuIFNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBmb3IgdGhlIGJldHRlci4gVGhpcyBpcyBnb29kOyBpdCYjMzk7cyBlbmZvcmNpbmcgc3RyaWN0ZXIgcG9pbnRlciB0eXBlIGNoZWNraW5nIGR1cmluZyBCUEYgdmVyaWZpY2F0aW9uLgoKTXkgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgdmVyaWZ5IGBjaGVja19hdG9taWNfcm13YCBhbmQgYHNhdmVfYXV4X3B0cl90eXBlYCBtb3JlIGNsb3NlbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYW5kIGNvbmZpcm0gdGhlIHJlYXNvbmluZywgZXNwZWNpYWxseSBpZiB0aGUgY2hhbmdlIGhhcyBicm9hZGVyIGVmZmVjdHMuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIGF0b21pYyBvcGVyYXRpb25zIGFuZCBwb3RlbnRpYWwgcG9pbnRlciB0eXBlIGNvbmZ1c2lvbiwgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gVGhlIGtleSBmb2N1cyBoZXJlIHdpbGwgYmUgdGhlIGBjaGVja19hdG9taWNfcm13YCBmdW5jdGlvbi4gR2l2ZW4gdGhpcyBpcyBCUEYtcmVsYXRlZCwgSSYjMzk7bGwgYmUgc3VyZSB0byBlbmFibGUgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnLiBUaW1lIHRvIGZpcmUgdXAgdGhvc2UgdG9vbHMgYW5kIHNlZSBpZiB3ZSBjYW4gc2hha2Ugc29tZXRoaW5nIGxvb3NlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX2F0b21pY19ybXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTY0MDQ9c3RhdGljIGludCBjaGVja19zdG9yZV9yZWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDQxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0NDI6c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ0My1cdFx0XHQgICAgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz02NTYxPXN0YXRpYyBpbnQgY2hlY2tfYXRvbWljKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU3My1cdGNhc2UgQlBGX0NNUFhDSEc6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjU3NDpcdFx0cmV0dXJuIGNoZWNrX2F0b21pY19ybXcoZW52LCBpbnNuKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTc1LVx0Y2FzZSBCUEZfTE9BRF9BQ1E6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQXRvbWljIFJNVyBEZXBlbmRlbmN5KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMuIEkmIzM5O20gbG9va2luZyBhdCBgY2hlY2tfYXRvbWljX3Jtd2AsIHdoaWNoIGlzLCBpbnRlcmVzdGluZ2x5LCBhIHN0YXRpYyBmdW5jdGlvbi4gTm93LCB0aGF0IGFsb25lIHdvdWxkbiYjMzk7dCBub3JtYWxseSByYWlzZSBhIGZsYWcsIGJ1dCBpdCYjMzk7cyBjYWxsZWQgYnkgYW5vdGhlciBzdGF0aWMgZnVuY3Rpb24sIGBjaGVja19hdG9taWNgLiBTbywgdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IGJlY29tZXMsICYjMzQ7V2hhdCBjYWxscyBgY2hlY2tfYXRvbWljYD8mIzM0OyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIGhlcmUgaXMgY3J1Y2lhbCB0byBzZWUgaWYgdGhpcyBpcyBhbiBpc29sYXRlZCwgaW50ZXJuYWwgY2hlY2sgb3IgYSBkZWVwZXIgYXJjaGl0ZWN0dXJhbCBjb25jZXJuLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBjaGVja19hdG9taWNgIHRvIHNlZSBpdHMgdXNhZ2UgY29udGV4dC4gSXMgaXQgYmVpbmcgdXNlZCB3aXRoaW4gYSBzcGVjaWZpYyBtb2R1bGU/IElzIGl0IHBhcnQgb2YgYSBsYXJnZXIsIHBvdGVudGlhbGx5IHByb2JsZW1hdGljLCBhdG9taWMgb3BlcmF0aW9uIHZhbGlkYXRpb24gc2NoZW1lPyBLbm93aW5nIHRoZSBjYWxsZXIgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBwdXJwb3NlIG9mIHRoZXNlIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19hdG9taWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTY0MDQ9c3RhdGljIGludCBjaGVja19zdG9yZV9yZWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDQxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0NDI6c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjQ0My1cdFx0XHQgICAgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTIyLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1MjM6c3RhdGljIGludCBjaGVja19hdG9taWNfbG9hZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1MjQtXHRcdFx0ICAgICBzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NDEtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjU0MjpzdGF0aWMgaW50IGNoZWNrX2F0b21pY19zdG9yZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NDMtXHRcdFx0ICAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTYwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1NjE6c3RhdGljIGludCBjaGVja19hdG9taWMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NjIte1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTczLVx0Y2FzZSBCUEZfQ01QWENIRzpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NTc0Olx0XHRyZXR1cm4gY2hlY2tfYXRvbWljX3JtdyhlbnYsIGluc24pO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NzUtXHRjYXNlIEJQRl9MT0FEX0FDUTpcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU4MC1cdFx0fVxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1ODE6XHRcdHJldHVybiBjaGVja19hdG9taWNfbG9hZChlbnYsIGluc24pO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTY1ODItXHRjYXNlIEJQRl9TVE9SRV9SRUw6XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1ODctXHRcdH1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NTg4Olx0XHRyZXR1cm4gY2hlY2tfYXRvbWljX3N0b3JlKGVudiwgaW5zbik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU4OS1cdGRlZmF1bHQ6XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE3MjYwPXN0YXRpYyBpbnQgZG9fY2hlY2tfaW5zbihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBib29sICpkb19wcmludF9zdGF0ZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTcyNzctXHRcdGlmIChCUEZfTU9ERShpbnNuLVx1MDAzZWNvZGUpID09IEJQRl9BVE9NSUMpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTcyNzg6XHRcdFx0cmV0dXJuIGNoZWNrX2F0b21pYyhlbnYsIGluc24pO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE3Mjc5LVx0XHRyZXR1cm4gY2hlY2tfc3RvcmVfcmVnKGVudiwgaW5zbiwgZmFsc2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NjMKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkZvY3VzaW5nIG9uIEJQRiBWZXJpZmljYXRpb24qKgoKT2theSwgc28gYGRvX2NoZWNrX2luc25gIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXQmIzM5O3Mgbm90IGEgZGlyZWN0IGVudHJ5IHBvaW50LiBJIG5lZWQgdG8gZmluZCB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIEJQRiB2ZXJpZmllci4gTGV0JiMzOTtzIHNlZS4uLkFoLCB0aGF0JiMzOTtzIGl0ISBgYnBmX2NoZWNrYCBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIHdob2xlIHZlcmlmaWNhdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBtYWtlIHRoYXQgdGhlIGZvY3VzIHN5bWJvbCBmb3Igbm93OyB1bmRlcnN0YW5kaW5nIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiBgYnBmX2NoZWNrYCBpcyBrZXkuIEkmIzM5O2xsIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gYW5kIHRyYWNlIHRoZSBjb250cm9sIGZsb3cgZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfY2hlY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTU3PXN0YXRpYyBib29sIGJwZl9nbG9iYWxfcGVyY3B1X21hX3NldDtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy01OC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo1OTovKiBicGZfY2hlY2soKSBpcyBhIHN0YXRpYyBjb2RlIGFuYWx5emVyIHRoYXQgd2Fsa3MgZUJQRiBwcm9ncmFtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjAtICogaW5zdHJ1Y3Rpb24gYnkgaW5zdHJ1Y3Rpb24gYW5kIHVwZGF0ZXMgcmVnaXN0ZXIvc3RhY2sgc3RhdGUuXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExOTk0PXN0YXRpYyBpbnQgcHJvY2Vzc19rZl9hcmdfcHRyX3RvX3JidHJlZV9ub2RlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMDA1LSAqIExTTSBob29rcyBhbmQgaXRlcnMgKGJvdGggc2xlZXBhYmxlIGFuZCBub24tc2xlZXBhYmxlKSBhcmUgc2FmZS5cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjAwNjogKiBBbnkgc2xlZXBhYmxlIHByb2dzIGFyZSBhbHNvIHNhZmUgc2luY2UgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoKSBlbmZvcmNlXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIwMDctICogdGhlbSBjYW4gb25seSBiZSBhdHRhY2hlZCB0byBzb21lIHNwZWNpZmljIGhvb2sgcG9pbnRzLlxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTAzMz1zdGF0aWMgYm9vbCBhdHRhY2hfdXNlc190cmFtcG9saW5lX3JldHZhbChlbnVtIGJwZl9hdHRhY2hfdHlwZSB0eXBlKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA0Ni1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTA0NzppbnQgYnBmX2NoZWNrX2F0dGFjaF90YXJnZXQoc3RydWN0IGJwZl92ZXJpZmllcl9sb2cgKmxvZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA0OC1cdFx0XHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTQ3MD1zdGF0aWMgaW50IGNoZWNrX2F0dGFjaF9idGZfaWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MDAtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk1MDE6XHRyZXQgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChcdTAwMjZlbnYtXHUwMDNlbG9nLCBwcm9nLCB0Z3RfcHJvZywgYnRmX2lkLCBcdTAwMjZ0Z3RfaW5mbyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1MDItXHRpZiAocmV0KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTU2OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTU3MDppbnQgYnBmX2NoZWNrX2F0dGFjaF9idGZfaWRfbXVsdGkoc3RydWN0IGJ0ZiAqYnRmLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBidGZfaWQsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1NzEtXHRcdFx0XHQgIHN0cnVjdCBicGZfYXR0YWNoX3RhcmdldF9pbmZvICp0Z3RfaW5mbylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwMDM9c3RhdGljIGVudW0gYnBmX3NpZ19rZXlyaW5nIGJwZl9jbGFzc2lmeV9rZXlyaW5nKHMzMiBrZXlyaW5nX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDAxNy0vKlxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMDE4OiAqIFZlcmlmeSB0aGUgUEtDUyM3IHNpZ25hdHVyZSBvZiBhIGxvYWRlZCBwcm9ncmFtLiBDYWxsZWQgZnJvbSBicGZfY2hlY2soKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMDE5LSAqIG9uY2UgdGhlIHByb2dyYW0mIzM5O3MgbWV0YWRhdGEgbWFwcyBoYXZlIGJlZW4gcmVzb2x2ZWQgaW50byB1c2VkX21hcHMsIHNvXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTIwMDI2PXN0YXRpYyBpbnQgYnBmX3Byb2dfdmVyaWZ5X3NpZ25hdHVyZShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE0Mi1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDE0MzppbnQgYnBmX2NoZWNrKHN0cnVjdCBicGZfcHJvZyAqKnByb2csIHVuaW9uIGJwZl9hdHRyICphdHRyLCBicGZwdHJfdCB1YXR0cixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE0NC1cdCAgICAgIHN0cnVjdCBicGZfbG9nX2F0dHIgKmF0dHJfbG9nKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE1Ny1cdC8qICYjMzk7c3RydWN0IGJwZl92ZXJpZmllcl9lbnYmIzM5OyBjYW4gYmUgZ2xvYmFsLCBidXQgc2luY2UgaXQmIzM5O3Mgbm90IHNtYWxsLFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMTU4Olx0ICogYWxsb2NhdGUvZnJlZSBpdCBldmVyeSB0aW1lIGJwZl9jaGVjaygpIGlzIGNhbGxlZFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMTU5LVx0ICovXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjY1LVx0LyogVmFsaWRhdGUgQlRGIGFnYWluc3QgdGhlIGNvbXBsZXRlIHN1YnByb2dyYW0gbGF5b3V0IGFuZCBhcHBseSBDTy1SRS4gKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDI2NjpcdHJldCA9IGJwZl9jaGVja19idGZfaW5mbyhlbnYsIGF0dHIsIHVhdHRyKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDI2Ny1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjg1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMjg2Olx0cmV0ID0gYnBmX2NoZWNrX2NmZyhlbnYpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjg3LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTk5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgc28gYGJwZl9jaGVja2AgaXMgdGhlIHByaW1hcnkgZnVuY3Rpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBoZXJlLCBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmxhZyBhcHBlYXJzIHRvIGJlIGBCUEZfU1lTQ0FMTGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3MganVzdCBtYWtlICpzdXJlKiB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWdzIHRoYXQgbWlnaHQgYmUgc3VidGx5IGludm9sdmVkIGluIHRoaXMgd2hvbGUgdGhpbmcg4oCTIGdvdHRhIGJlIHRob3JvdWdoLgoKSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggSSYjMzk7bSByZXZpZXdpbmcgaGFzIG1hZGUgY2hhbmdlcyB0byBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gQ29uc2lkZXJpbmcgdGhhdCBmaWxlIGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLCB0aGlzIGFsbCBzZWVtcyB0byBiZSBjb2FsZXNjaW5nIHByZXR0eSBuZWF0bHkuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHJlYWxseSBkaXZlIGludG8gYHZlcmlmaWVyLmNgIGFuZCBmaWd1cmUgb3V0IHdoYXQgdGhlIHBhdGNoIGlzICpkb2luZyogd2l0aCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLVxcJFxcKENPTkZJR19CUEZfU1lTQ0FMTFxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gJiM0Mzs9IC1Xbm8tb3ZlcnJpZGUtaW5pdCAkKGNmbGFncy1ub2djc2UteXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXG5rZXJuZWwvYnBmL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGZpeHVwcy5vIGNmZy5vIHN0YXRlcy5vIGJhY2t0cmFjay5vIGNoZWNrX2J0Zi5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE1LW9iai0ke0NPTkZJR19CUEZfTFNNfVx0ICAmIzQzOz0gYnBmX2lub2RlX3N0b3JhZ2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkaXNhc20ubyBtcHJvZy5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gdHJhbXBvbGluZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zi5vIG1lbWFsbG9jLm8gcnFzcGlubG9jay5vIHN0cmVhbS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTE5LWlmZXEgKCQoQ09ORklHX01NVSkkKENPTkZJR182NEJJVCkseXkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGFyZW5hLm8gcmFuZ2VfdHJlZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIxLWVuZGlmXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT0yMz1pZmVxICgkKENPTkZJR19ORVQpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRldm1hcC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNwdW1hcC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IG9mZmxvYWQub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBuZXRfbmFtZXNwYWNlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gdGN4Lm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMjktZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzA9aWZlcSAoJChDT05GSUdfUEVSRl9FVkVOVFMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN0YWNrbWFwLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMzItZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzM9aWZlcSAoJChDT05GSUdfQ0dST1VQUykseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gY2dyb3VwX2l0ZXIubyBicGZfY2dycF9zdG9yYWdlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtMzUtZW5kaWZcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTM3PWlmZXEgKCQoQ09ORklHX0lORVQpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHJldXNlcG9ydF9hcnJheS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM5LWVuZGlmXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT00Mz1pZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfc3RydWN0X29wcy5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNwdW1hc2sub1xua2VybmVsL2JwZi9NYWtlZmlsZS00Ni0jIGJwZl9sc21fcHJvdG8ubyBtdXN0IHByZWNlZGUgYnBmX2xzbS5vLiBUaGUgY3VycmVudCBwYWhvbGUgbG9naWNcbi0tXG5rZXJuZWwvYnBmL01ha2VmaWxlPTU4PWlmbmVxICgkKENPTkZJR19DUllQVE8pLClcbmtlcm5lbC9icGYvTWFrZWZpbGU6NTk6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gY3J5cHRvLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNjAtZW5kaWZcbmtlcm5lbC9icGYvTWFrZWZpbGU9NjE9b2JqLSQoQ09ORklHX0JQRl9QUkVMT0FEKSAmIzQzOz0gcHJlbG9hZC9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNjItXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHJlbG9fY29yZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zl9pdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6NjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnRmX3JlbG9jYXRlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6NjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0ga21lbV9jYWNoZV9pdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNjctaWZlcSAoJChDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVIpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGRtYWJ1Zl9pdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNjktZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzgzMQoJCQkJCQkJb3V0cHV0OiAxMDkKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgU2VjdXJpdHkgTW9kdWxlKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgQlBGX1NZU0NBTExgLCBhbmQgbXkgcHJpbWFyeSBmb2N1cyBzeW1ib2wgaXMgYGJwZl9jaGVja2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FyZSB0aGVyZSAqb3RoZXIqIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBleGVjdXRpb24gcGF0aCB0aGF0IG1pZ2h0IHNlcnZlIGFzIGVxdWFsbHkgZ29vZCwgb3IgZXZlbiBiZXR0ZXIsIGZvY3VzIHBvaW50cyBmb3IgbXkgYW5hbHlzaXM/JiMzNDsgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYWx0ZXJuYXRpdmVzIHRoYXQgbWlnaHQgYmUgbW9yZSByZXZlYWxpbmcuCgpMZXQmIzM5O3MgdHJhY2UgdGhpcyBmdW5jdGlvbiBjYWxsIGNoYWluOiBUaGUgcGF0Y2ggdG91Y2hlcyBgY2hlY2tfYXRvbWljX3Jtd2AsIHdoaWNoIGlzIGNhbGxlZCBieSBgY2hlY2tfYXRvbWljYC4gYGNoZWNrX2F0b21pY2AgdGhlbiBmZWVkcyBpbnRvIGBkb19jaGVja19pbnNuYCwgd2hpY2gsIGluIHR1cm4sIGlzIGEgZGVwZW5kZW5jeSBmb3IgYGRvX2NoZWNrYC4gRmluYWxseSwgYGRvX2NoZWNrYCBnZXRzIGNhbGxlZCBieSBgYnBmX2NoZWNrYC4gR2l2ZW4gdGhhdCBwYXRoLCBgYnBmX2NoZWNrYCBsb29rcyBwcmV0dHkgc29saWQgYXMgdGhlIGZvY2FsIHBvaW50LiBJdCBoaXRzIGFsbCB0aGUgaGlnaCBsZXZlbCBjaGVja3MuCgpUaGVyZWZvcmUsIEkmIzM5O2xsIHN0aWNrIHdpdGggYGJwZl9jaGVja2AuIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgdGhlIHJlc3VsdHMgYmFzZWQgb24gdGhpcyB1bmRlcnN0YW5kaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzYXZlIHRoZSBhdXhpbGlhcnkgcG9pbnRlciB0eXBlIGZvciBhbGwgYXRvbWljIFJNVyBvcGVyYXRpb25zLCBub3QganVzdCBhcmVuYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYXRvbWljIG9wZXJhdGlvbnMgYW5kIHBvaW50ZXIgdHlwZXMuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfY2hlY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzYXZlIHRoZSBhdXhpbGlhcnkgcG9pbnRlciB0eXBlIGZvciBhbGwgYXRvbWljIFJNVyBvcGVyYXRpb25zLCBub3QganVzdCBhcmVuYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYXRvbWljIG9wZXJhdGlvbnMgYW5kIHBvaW50ZXIgdHlwZXMuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxMjo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIEJQRiB2ZXJpZmllciBpc3N1ZSB3aGVyZSB0aGUgcG9pbnRlciB0eXBlIGZvciBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgaW5zdHJ1Y3Rpb25zIHdhcyBvbmx5IHNhdmVkIGZvciBhcmVuYSBwb2ludGVycy4gQnkgc2F2aW5nIHRoZSBwb2ludGVyIHR5cGUgZm9yIGFsbCBwb2ludGVyIHR5cGVzLCBpdCBwcmV2ZW50cyBhIHNpbmdsZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcyAoZS5nLiwgYm90aCBhcmVuYSBhbmQgbWFwIHZhbHVlIHBvaW50ZXJzKSBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocy4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdHlwZSBjb25mdXNpb24gYW5kIGluY29ycmVjdCBKSVQgY29tcGlsYXRpb24sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgY2F1Z2h0IGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVlMjNlZDVhNDZhNjJmY2E3MDczNjZlNzc1NWI2ODQ5NTk2MDQ4MzcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxMjo0OTozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCAxNjRkMTZjMjQzY2E2Li4zZDY3MmY2NjY1YmVjIDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC02NTA5LDExICYjNDM7NjUwOSw5IEBAIHN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX3JtdyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LAogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlpZiAoaXNfYXJlbmFfcmVnKGVudiwgaW5zbi0mZ3Q7ZHN0X3JlZykpIHsKLQkJZXJyID0gc2F2ZV9hdXhfcHRyX3R5cGUoZW52LCBQVFJfVE9fQVJFTkEsIGZhbHNlKTsKLQkJaWYgKGVycikKLQkJCXJldHVybiBlcnI7Ci0JfQomIzQzOwllcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIGRzdF9yZWctJmd0O3R5cGUsIGZhbHNlKTsKJiM0MzsJaWYgKGVycikKJiM0MzsJCXJldHVybiBlcnI7CiAJLyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkuICovCiAJZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi0mZ3Q7aW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tJmd0O2RzdF9yZWcpLCBpbnNuLSZndDtvZmYsCiAJCQkgICAgICAgQlBGX1NJWkUoaW5zbi0mZ3Q7Y29kZSksIEJQRl9XUklURSwgLTEsIHRydWUsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMKaW5kZXggYjI0MWJiY2Y1NGE4YS4uMmU0M2RhMTg4MTk0YiAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMKQEAgLTI1LDYgJiM0MzsyNSwxNSBAQCBzdHJ1Y3QgewogCV9fdWxvbmcobWFwX2V4dHJhLCBBUkVOQV9WTV9TVEFSVCk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi8KIH0gYXJlbmEgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7CiAKJiM0MztzdHJ1Y3QgewomIzQzOwlfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX0FSUkFZKTsKJiM0MzsJX191aW50KG1heF9lbnRyaWVzLCAxKTsKJiM0MzsJX190eXBlKGtleSwgX191MzIpOwomIzQzOwlfX3R5cGUodmFsdWUsIF9fdTY0KTsKJiM0Mzt9IGF0b21pY19tYXAgU0VDKCYjMzQ7Lm1hcHMmIzM0Oyk7CiYjNDM7CiYjNDM7c3RhdGljIF9fdTY0IGFyZW5hX2F0b21pY190YXJnZXQgU0VDKCYjMzQ7LmFkZHJfc3BhY2UuMSYjMzQ7KTsKJiM0MzsKIFNFQygmIzM0O3NvY2tldCYjMzQ7KQogX19zdWNjZXNzIF9fcmV0dmFsKDApCiBpbnQgYmFzaWNfYWxsb2MxX25vc2xlZXAodm9pZCAqY3R4KQpAQCAtNjM3LDYgJiM0Mzs2NDYsNDEgQEAgaW50IG5vbl9hcmVuYV9wdHJfYWRkX3RvX2FyZW5hX3B0cih2b2lkICpjdHgpCiAKICNlbmRpZgogCiYjNDM7U0VDKCYjMzQ7c29ja2V0JiMzNDspCiYjNDM7X19kZXNjcmlwdGlvbigmIzM0O2FyZW5hIGFuZCBtYXAgdmFsdWUgYXRvbWljIGF0IHRoZSBzYW1lIGluc3RydWN0aW9uJiMzNDspCiYjNDM7X19mYWlsdXJlIF9fbXNnKCYjMzQ7c2FtZSBpbnNuIGNhbm5vdCBiZSB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXJzJiMzNDspCiYjNDM7X19hcmNoX3g4Nl82NAomIzQzO19fbG9hZF9pZl9KSVRlZCgpCiYjNDM7X19uYWtlZCB2b2lkIG1peGVkX2FyZW5hX21hcF92YWx1ZV9hdG9taWModm9pZCkKJiM0Mzt7CiYjNDM7CWFzbSB2b2xhdGlsZSAoJiMzNDsJCQkJCVwKJiM0MzsJcjEgPSAwOwkJCQkJXAomIzQzOwkqKHUzMiAqKShyMTAgLSA0KSA9IHIxOwkJCVwKJiM0MzsJcjIgPSByMTA7CQkJCQlcCiYjNDM7CXIyICYjNDM7PSAtNDsJCQkJCVwKJiM0MzsJcjEgPSAlW2F0b21pY19tYXBdIGxsOwkJCQlcCiYjNDM7CWNhbGwgJVticGZfbWFwX2xvb2t1cF9lbGVtXTsJCQlcCiYjNDM7CWlmIHIwID09IDAgZ290byAxZjsJCQkJXAomIzQzOwlyNiA9IHIwOwkJCQkJXAomIzQzOwlyNyA9ICVbYXJlbmFfYXRvbWljX3RhcmdldF0gbGw7CQkJXAomIzQzOwkuYnl0ZSAweGJmOyAuYnl0ZSAweDc3OyAuc2hvcnQgMTsgLmxvbmcgMTsJXAomIzQzOwljYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07CQkJXAomIzQzOwlpZiB3MCAhPSAwIGdvdG8gMmY7CQkJCVwKJiM0MzsJcjggPSByNjsJCQkJCVwKJiM0MzsJZ290byAzZjsJCQkJCVwKJiM0MzsyOglyOCA9IHI3OwkJCQkJXAomIzQzOzM6CXI5ID0gMTsJCQkJCVwKJiM0MzsJbG9jayAqKHU2NCAqKShyOCAmIzQzOyAwKSAmIzQzOz0gcjk7CQkJXAomIzQzOzE6CXIwID0gMDsJCQkJCVwKJiM0MzsJZXhpdDsJCQkJCQlcCiYjNDM7JiMzNDsJOgomIzQzOwk6IF9faW1tX2FkZHIoYXRvbWljX21hcCksCiYjNDM7CSAgX19pbW1fYWRkcihhcmVuYV9hdG9taWNfdGFyZ2V0KSwKJiM0MzsJICBfX2ltbShicGZfbWFwX2xvb2t1cF9lbGVtKSwKJiM0MzsJICBfX2ltbShicGZfZ2V0X3ByYW5kb21fdTMyKQomIzQzOwk6IF9fY2xvYmJlcl9hbGwpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBfX25vaW5saW5lCiB1MzIgX19hcmVuYSAqY2hlY2tfYXJlbmFfYXJnX25vbmdsb2JhbCh1MzIgX19hcmVuYSAqYXJnKQogewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkxNAoJCQkJCQkJb3V0cHV0OiAxNjEKCQkJCQkJCXRob3VnaHRzOiA1NTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQlBGIFZlcmlmaWVyIEJ1ZyBGaXg6IEVuc3VyaW5nIENvcnJlY3QgUG9pbnRlciBUeXBlIFRyYWNraW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgdGhlIGBjaGVja19hdG9taWNfcm13YCBmdW5jdGlvbiBpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYC4gSXQgc2VlbXMgbGlrZSBhIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIGJ1ZyBmaXgsIGJ1dCBpbXBvcnRhbnQgbm9uZXRoZWxlc3MuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgdGhhdCB0aGUgY29kZSBub3cgY2FsbHMgYHNhdmVfYXV4X3B0cl90eXBlYCB3aXRoIHRoZSBhY3R1YWwgcG9pbnRlciB0eXBlIG9mIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciAoYGRzdF9yZWctJmd0O3R5cGVgKSBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgYFBUUl9UT19BUkVOQWAuCgpFc3NlbnRpYWxseSwgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaXMgdGhhdCB0aGUgdmVyaWZpZXIgbm93IGNvcnJlY3RseSB0cmFja3MgdGhlIHBvaW50ZXIgdHlwZSBpbiBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgaW5zdHJ1Y3Rpb25zLiBCZWZvcmUsIGl0IHdhcyBvbmx5IHRyYWNraW5nIGFyZW5hIHBvaW50ZXJzIGluIHRoaXMgY29udGV4dCwgYnV0IG5vdyBpdCYjMzk7cyBjb3JyZWN0bHkgY2hlY2tpbmcgYWxsIHBvaW50ZXIgdHlwZXMuIFRoZSBhZGRlZCB0ZXN0IGNhc2UsIGBtaXhlZF9hcmVuYV9tYXBfdmFsdWVfYXRvbWljYCwgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGRpcmVjdGx5IHRlc3RzIHRoaXMuIEl0IG1ha2VzIHN1cmUgdGhhdCBhIHNpbmdsZSBSTVcgaW5zdHJ1Y3Rpb24gKmNhbiYjMzk7dCogYmUgdXNlZCB3aXRoLCBzYXksIGJvdGggYW4gYXJlbmEgcG9pbnRlciBhbmQgYSBtYXAgdmFsdWUgcG9pbnRlciwgd2hpY2ggaXMgdGhlIHR5cGUgb2YgYnVnIHdlIGFyZSBmaXhpbmcuCgpUaGlzIGNoYW5nZSBpcyBhbGwgYWJvdXQgZW5zdXJpbmcgdGhlIHZlcmlmaWVyJiMzOTtzIHR5cGUgdHJhY2tpbmcgaXMgYWNjdXJhdGUgYW5kIGNvbnNpc3RlbnQsIHdoaWNoIGlzIHBhcmFtb3VudCBmb3IgdGhlIEpJVCBhbmQgb3ZlcmFsbCBleGVjdXRpb24gc2FmZXR5LiBJZiB0aGUgdmVyaWZpZXIgbWlzY2xhc3NpZmllcyBhIHBvaW50ZXIsIHRoZSBKSVQgY291bGQgZ2VuZXJhdGUgaW5jb3JyZWN0IGNvZGUgZm9yIHRoYXQgaW5zdHJ1Y3Rpb24uIFdlIGNvdWxkIGVuZCB1cCB3aXRoIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcy4KCkkgaW5pdGlhbGx5IHdvbmRlcmVkIGlmIHRoaXMgaGFkIHNvbWV0aGluZyB0byBkbyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBidXQgaXQmIzM5O3MgY2xlYXJseSBub3QgcmVsYXRlZC4gS01TQU4gaGFuZGxlcyB0aGF0LiBUaGlzIGlzIHNwZWNpZmljYWxseSBhYm91dCBwb2ludGVyICp0eXBlcyogYW5kIGVuc3VyaW5nIHRoZSB2ZXJpZmllciBjYW4gY29ycmVjdGx5IGFuZCBjb25zaXN0ZW50bHkgdHJhY2sgdGhlc2UgZGlmZmVyZW50IHBvaW50ZXIgdHlwZXMuCgpMZXQgbWUgcmVmcmVzaCBteXNlbGYgb24gdGhlIGBzYXZlX2F1eF9wdHJfdHlwZWAgZnVuY3Rpb24gaXRzZWxmLiBBaCwgcmlnaHQsIGl0IHNhdmVzIHRoZSBwb2ludGVyIHR5cGUgaW4gYGVudi0mZ3Q7aW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ucHRyX3R5cGVgLiBBbmQgaWYgdGhlIHNhbWUgaW5zdHJ1Y3Rpb24gaXMgdXNlZCB3aXRoIGRpZmZlcmVudCBwb2ludGVyIHR5cGVzIGluIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aHMsIGBzYXZlX2F1eF9wdHJfdHlwZWAgcmV0dXJucyBhbiBlcnJvciAoYC1FSU5WQUxgKSBpZiB0aGUgdHlwZXMgZG9uJiMzOTt0IG1hdGNoLiBUaGlzIGlzIHRoZSBzYWZlZ3VhcmQgdGhhdCYjMzk7cyBiZWluZyBwdXQgaW4gcGxhY2UgYW5kIG1hZGUgbW9yZSBjb25zaXN0ZW50IGhlcmUsIHByZXZlbnRpbmcgdHlwZSBjb25mdXNpb24uCgpTbywgdGhpcyBpcyBhIHNlY3VyaXR5LXJlbGF0ZWQgZml4LCBwcmV2ZW50aW5nIHR5cGUgY29uZnVzaW9uIG9yIGluY29ycmVjdCBKSVQgY29kZSBnZW5lcmF0aW9uLiBTaW5jZSBpdCYjMzk7cyBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSwgSSYjMzk7bGwgc2V0IE5lZWRzS01TQU4gdG8gZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDEyOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgQlBGIHZlcmlmaWVyIGlzc3VlIHdoZXJlIHRoZSBwb2ludGVyIHR5cGUgZm9yIGF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoUk1XKSBpbnN0cnVjdGlvbnMgd2FzIG9ubHkgc2F2ZWQgZm9yIGFyZW5hIHBvaW50ZXJzLiBCeSBzYXZpbmcgdGhlIHBvaW50ZXIgdHlwZSBmb3IgYWxsIHBvaW50ZXIgdHlwZXMsIGl0IHByZXZlbnRzIGEgc2luZ2xlIGluc3RydWN0aW9uIGZyb20gYmVpbmcgdXNlZCB3aXRoIGRpZmZlcmVudCBwb2ludGVyIHR5cGVzIChlLmcuLCBib3RoIGFyZW5hIGFuZCBtYXAgdmFsdWUgcG9pbnRlcnMpIGFjcm9zcyBkaWZmZXJlbnQgZXhlY3V0aW9uIHBhdGhzLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCB0eXBlIGNvbmZ1c2lvbiBhbmQgaW5jb3JyZWN0IEpJVCBjb21waWxhdGlvbiwgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyBjYXVnaHQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgQlBGIHZlcmlmaWVyIGlzc3VlIHdoZXJlIHRoZSBwb2ludGVyIHR5cGUgZm9yIGF0b21pYyByZWFkLW1vZGlmeS13cml0ZSAoUk1XKSBpbnN0cnVjdGlvbnMgd2FzIG9ubHkgc2F2ZWQgZm9yIGFyZW5hIHBvaW50ZXJzLiBCeSBzYXZpbmcgdGhlIHBvaW50ZXIgdHlwZSBmb3IgYWxsIHBvaW50ZXIgdHlwZXMsIGl0IHByZXZlbnRzIGEgc2luZ2xlIGluc3RydWN0aW9uIGZyb20gYmVpbmcgdXNlZCB3aXRoIGRpZmZlcmVudCBwb2ludGVyIHR5cGVzIChlLmcuLCBib3RoIGFyZW5hIGFuZCBtYXAgdmFsdWUgcG9pbnRlcnMpIGFjcm9zcyBkaWZmZXJlbnQgZXhlY3V0aW9uIHBhdGhzLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCB0eXBlIGNvbmZ1c2lvbiBhbmQgaW5jb3JyZWN0IEpJVCBjb21waWxhdGlvbiwgd2hpY2ggY291bGQgbGVhZCB0byBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyBjYXVnaHQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6MzUuNjgxNDA3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMjgwODUwMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2NoZWNrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIEJQRiB2ZXJpZmllciBpc3N1ZSB3aGVyZSB0aGUgcG9pbnRlciB0eXBlIGZvciBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgaW5zdHJ1Y3Rpb25zIHdhcyBvbmx5IHNhdmVkIGZvciBhcmVuYSBwb2ludGVycy4gQnkgc2F2aW5nIHRoZSBwb2ludGVyIHR5cGUgZm9yIGFsbCBwb2ludGVyIHR5cGVzLCBpdCBwcmV2ZW50cyBhIHNpbmdsZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcyAoZS5nLiwgYm90aCBhcmVuYSBhbmQgbWFwIHZhbHVlIHBvaW50ZXJzKSBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocy4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdHlwZSBjb25mdXNpb24gYW5kIGluY29ycmVjdCBKSVQgY29tcGlsYXRpb24sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgY2F1Z2h0IGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiB2ZXJpZmllciB0byBzYXZlIHRoZSBhdXhpbGlhcnkgcG9pbnRlciB0eXBlIGZvciBhbGwgYXRvbWljIFJNVyBvcGVyYXRpb25zLCBub3QganVzdCBhcmVuYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiB2ZXJpZmllciBsb2dpYywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gYXRvbWljIG9wZXJhdGlvbnMgYW5kIHBvaW50ZXIgdHlwZXMuIEl0IGlzIHJlYWNoYWJsZSB2aWEgdGhlIGJwZigpIHN5c2NhbGwgd2hlbiBsb2FkaW5nIEJQRiBwcm9ncmFtcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6MzUuNjgxNDE0NDNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTAyOTA4NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZTIzZWQ1YTQ2YTYyZmNhNzA3MzY2ZTc3NTViNjg0OTU5NjA0ODM3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDEzIDEyOjQ5OjMzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbmluZGV4IDE2NGQxNmMyNDNjYTYuLjNkNjcyZjY2NjViZWMgMTAwNjQ0XFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXFxuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuQEAgLTY1MDksMTEgKzY1MDksOSBAQCBzdGF0aWMgaW50IGNoZWNrX2F0b21pY19ybXcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuLVxcdGlmIChpc19hcmVuYV9yZWcoZW52LCBpbnNuLVxcdTAwM2Vkc3RfcmVnKSkge1xcbi1cXHRcXHRlcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIFBUUl9UT19BUkVOQSwgZmFsc2UpO1xcbi1cXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRyZXR1cm4gZXJyO1xcbi1cXHR9XFxuK1xcdGVyciA9IHNhdmVfYXV4X3B0cl90eXBlKGVudiwgZHN0X3JlZy1cXHUwMDNldHlwZSwgZmFsc2UpO1xcbitcXHRpZiAoZXJyKVxcbitcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXHQvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiB3cml0ZSBpbnRvIHRoZSBzYW1lIG1lbW9yeS4gKi9cXG4gXFx0ZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGVudi1cXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXFx1MDAzZWRzdF9yZWcpLCBpbnNuLVxcdTAwM2VvZmYsXFxuIFxcdFxcdFxcdCAgICAgICBCUEZfU0laRShpbnNuLVxcdTAwM2Vjb2RlKSwgQlBGX1dSSVRFLCAtMSwgdHJ1ZSwgZmFsc2UpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXFxuaW5kZXggYjI0MWJiY2Y1NGE4YS4uMmU0M2RhMTg4MTk0YiAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXFxuQEAgLTI1LDYgKzI1LDE1IEBAIHN0cnVjdCB7XFxuIFxcdF9fdWxvbmcobWFwX2V4dHJhLCBBUkVOQV9WTV9TVEFSVCk7IC8qIHN0YXJ0IG9mIG1tYXAoKSByZWdpb24gKi9cXG4gfSBhcmVuYSBTRUMoXFxcIi5tYXBzXFxcIik7XFxuIFxcbitzdHJ1Y3Qge1xcbitcXHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX0FSUkFZKTtcXG4rXFx0X191aW50KG1heF9lbnRyaWVzLCAxKTtcXG4rXFx0X190eXBlKGtleSwgX191MzIpO1xcbitcXHRfX3R5cGUodmFsdWUsIF9fdTY0KTtcXG4rfSBhdG9taWNfbWFwIFNFQyhcXFwiLm1hcHNcXFwiKTtcXG4rXFxuK3N0YXRpYyBfX3U2NCBhcmVuYV9hdG9taWNfdGFyZ2V0IFNFQyhcXFwiLmFkZHJfc3BhY2UuMVxcXCIpO1xcbitcXG4gU0VDKFxcXCJzb2NrZXRcXFwiKVxcbiBfX3N1Y2Nlc3MgX19yZXR2YWwoMClcXG4gaW50IGJhc2ljX2FsbG9jMV9ub3NsZWVwKHZvaWQgKmN0eClcXG5AQCAtNjM3LDYgKzY0Niw0MSBAQCBpbnQgbm9uX2FyZW5hX3B0cl9hZGRfdG9fYXJlbmFfcHRyKHZvaWQgKmN0eClcXG4gXFxuICNlbmRpZlxcbiBcXG4rU0VDKFxcXCJzb2NrZXRcXFwiKVxcbitfX2Rlc2NyaXB0aW9uKFxcXCJhcmVuYSBhbmQgbWFwIHZhbHVlIGF0b21pYyBhdCB0aGUgc2FtZSBpbnN0cnVjdGlvblxcXCIpXFxuK19fZmFpbHVyZSBfX21zZyhcXFwic2FtZSBpbnNuIGNhbm5vdCBiZSB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXJzXFxcIilcXG4rX19hcmNoX3g4Nl82NFxcbitfX2xvYWRfaWZfSklUZWQoKVxcbitfX25ha2VkIHZvaWQgbWl4ZWRfYXJlbmFfbWFwX3ZhbHVlX2F0b21pYyh2b2lkKVxcbit7XFxuK1xcdGFzbSB2b2xhdGlsZSAoXFxcIlxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjEgPSAwO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0Kih1MzIgKikocjEwIC0gNCkgPSByMTtcXHRcXHRcXHRcXFxcXFxuK1xcdHIyID0gcjEwO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjIgKz0gLTQ7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyMSA9ICVbYXRvbWljX21hcF0gbGw7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRjYWxsICVbYnBmX21hcF9sb29rdXBfZWxlbV07XFx0XFx0XFx0XFxcXFxcbitcXHRpZiByMCA9PSAwIGdvdG8gMWY7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyNiA9IHIwO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cjcgPSAlW2FyZW5hX2F0b21pY190YXJnZXRdIGxsO1xcdFxcdFxcdFxcXFxcXG4rXFx0LmJ5dGUgMHhiZjsgLmJ5dGUgMHg3NzsgLnNob3J0IDE7IC5sb25nIDE7XFx0XFxcXFxcbitcXHRjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XFx0XFx0XFx0XFxcXFxcbitcXHRpZiB3MCAhPSAwIGdvdG8gMmY7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyOCA9IHI2O1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0Z290byAzZjtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuKzI6XFx0cjggPSByNztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuKzM6XFx0cjkgPSAxO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0bG9jayAqKHU2NCAqKShyOCArIDApICs9IHI5O1xcdFxcdFxcdFxcXFxcXG4rMTpcXHRyMCA9IDA7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRleGl0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFxcIlxcdDpcXG4rXFx0OiBfX2ltbV9hZGRyKGF0b21pY19tYXApLFxcbitcXHQgIF9faW1tX2FkZHIoYXJlbmFfYXRvbWljX3RhcmdldCksXFxuK1xcdCAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksXFxuK1xcdCAgX19pbW0oYnBmX2dldF9wcmFuZG9tX3UzMilcXG4rXFx0OiBfX2Nsb2JiZXJfYWxsKTtcXG4rfVxcbitcXG4gc3RhdGljIF9fbm9pbmxpbmVcXG4gdTMyIF9fYXJlbmEgKmNoZWNrX2FyZW5hX2FyZ19ub25nbG9iYWwodTMyIF9fYXJlbmEgKmFyZylcXG4ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTozNy4zOTI3OTc1MjNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMTU1ODA3NzM4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gc2F2ZSB0aGUgYXV4aWxpYXJ5IHBvaW50ZXIgdHlwZSBmb3IgYWxsIGF0b21pYyBSTVcgb3BlcmF0aW9ucywgbm90IGp1c3QgYXJlbmEgcG9pbnRlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGF0b21pYyBvcGVyYXRpb25zIGFuZCBwb2ludGVyIHR5cGVzLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsIHdoZW4gbG9hZGluZyBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVlMjNlZDVhNDZhNjJmY2E3MDczNjZlNzc1NWI2ODQ5NTk2MDQ4MzdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxMjo0OTozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggMTY0ZDE2YzI0M2NhNi4uM2Q2NzJmNjY2NWJlYyAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtNjUwOSwxMSArNjUwOSw5IEBAIHN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX3JtdyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdGlmIChpc19hcmVuYV9yZWcoZW52LCBpbnNuLVx1MDAzZWRzdF9yZWcpKSB7XG4tXHRcdGVyciA9IHNhdmVfYXV4X3B0cl90eXBlKGVudiwgUFRSX1RPX0FSRU5BLCBmYWxzZSk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0cmV0dXJuIGVycjtcbi1cdH1cbitcdGVyciA9IHNhdmVfYXV4X3B0cl90eXBlKGVudiwgZHN0X3JlZy1cdTAwM2V0eXBlLCBmYWxzZSk7XG4rXHRpZiAoZXJyKVxuK1x0XHRyZXR1cm4gZXJyO1xuIFx0LyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkuICovXG4gXHRlcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgZW52LVx1MDAzZWluc25faWR4LCBkc3RfcmVnLCBhcmdub19mcm9tX3JlZyhpbnNuLVx1MDAzZWRzdF9yZWcpLCBpbnNuLVx1MDAzZW9mZixcbiBcdFx0XHQgICAgICAgQlBGX1NJWkUoaW5zbi1cdTAwM2Vjb2RlKSwgQlBGX1dSSVRFLCAtMSwgdHJ1ZSwgZmFsc2UpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcbmluZGV4IGIyNDFiYmNmNTRhOGEuLjJlNDNkYTE4ODE5NGIgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmNcbkBAIC0yNSw2ICsyNSwxNSBAQCBzdHJ1Y3Qge1xuIFx0X191bG9uZyhtYXBfZXh0cmEsIEFSRU5BX1ZNX1NUQVJUKTsgLyogc3RhcnQgb2YgbW1hcCgpIHJlZ2lvbiAqL1xuIH0gYXJlbmEgU0VDKFwiLm1hcHNcIik7XG4gXG4rc3RydWN0IHtcbitcdF9fdWludCh0eXBlLCBCUEZfTUFQX1RZUEVfQVJSQVkpO1xuK1x0X191aW50KG1heF9lbnRyaWVzLCAxKTtcbitcdF9fdHlwZShrZXksIF9fdTMyKTtcbitcdF9fdHlwZSh2YWx1ZSwgX191NjQpO1xuK30gYXRvbWljX21hcCBTRUMoXCIubWFwc1wiKTtcbitcbitzdGF0aWMgX191NjQgYXJlbmFfYXRvbWljX3RhcmdldCBTRUMoXCIuYWRkcl9zcGFjZS4xXCIpO1xuK1xuIFNFQyhcInNvY2tldFwiKVxuIF9fc3VjY2VzcyBfX3JldHZhbCgwKVxuIGludCBiYXNpY19hbGxvYzFfbm9zbGVlcCh2b2lkICpjdHgpXG5AQCAtNjM3LDYgKzY0Niw0MSBAQCBpbnQgbm9uX2FyZW5hX3B0cl9hZGRfdG9fYXJlbmFfcHRyKHZvaWQgKmN0eClcbiBcbiAjZW5kaWZcbiBcbitTRUMoXCJzb2NrZXRcIilcbitfX2Rlc2NyaXB0aW9uKFwiYXJlbmEgYW5kIG1hcCB2YWx1ZSBhdG9taWMgYXQgdGhlIHNhbWUgaW5zdHJ1Y3Rpb25cIilcbitfX2ZhaWx1cmUgX19tc2coXCJzYW1lIGluc24gY2Fubm90IGJlIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlcnNcIilcbitfX2FyY2hfeDg2XzY0XG4rX19sb2FkX2lmX0pJVGVkKClcbitfX25ha2VkIHZvaWQgbWl4ZWRfYXJlbmFfbWFwX3ZhbHVlX2F0b21pYyh2b2lkKVxuK3tcbitcdGFzbSB2b2xhdGlsZSAoXCJcdFx0XHRcdFx0XFxcbitcdHIxID0gMDtcdFx0XHRcdFx0XFxcbitcdCoodTMyICopKHIxMCAtIDQpID0gcjE7XHRcdFx0XFxcbitcdHIyID0gcjEwO1x0XHRcdFx0XHRcXFxuK1x0cjIgKz0gLTQ7XHRcdFx0XHRcdFxcXG4rXHRyMSA9ICVbYXRvbWljX21hcF0gbGw7XHRcdFx0XHRcXFxuK1x0Y2FsbCAlW2JwZl9tYXBfbG9va3VwX2VsZW1dO1x0XHRcdFxcXG4rXHRpZiByMCA9PSAwIGdvdG8gMWY7XHRcdFx0XHRcXFxuK1x0cjYgPSByMDtcdFx0XHRcdFx0XFxcbitcdHI3ID0gJVthcmVuYV9hdG9taWNfdGFyZ2V0XSBsbDtcdFx0XHRcXFxuK1x0LmJ5dGUgMHhiZjsgLmJ5dGUgMHg3NzsgLnNob3J0IDE7IC5sb25nIDE7XHRcXFxuK1x0Y2FsbCAlW2JwZl9nZXRfcHJhbmRvbV91MzJdO1x0XHRcdFxcXG4rXHRpZiB3MCAhPSAwIGdvdG8gMmY7XHRcdFx0XHRcXFxuK1x0cjggPSByNjtcdFx0XHRcdFx0XFxcbitcdGdvdG8gM2Y7XHRcdFx0XHRcdFxcXG4rMjpcdHI4ID0gcjc7XHRcdFx0XHRcdFxcXG4rMzpcdHI5ID0gMTtcdFx0XHRcdFx0XFxcbitcdGxvY2sgKih1NjQgKikocjggKyAwKSArPSByOTtcdFx0XHRcXFxuKzE6XHRyMCA9IDA7XHRcdFx0XHRcdFxcXG4rXHRleGl0O1x0XHRcdFx0XHRcdFxcXG4rXCJcdDpcbitcdDogX19pbW1fYWRkcihhdG9taWNfbWFwKSxcbitcdCAgX19pbW1fYWRkcihhcmVuYV9hdG9taWNfdGFyZ2V0KSxcbitcdCAgX19pbW0oYnBmX21hcF9sb29rdXBfZWxlbSksXG4rXHQgIF9faW1tKGJwZl9nZXRfcHJhbmRvbV91MzIpXG4rXHQ6IF9fY2xvYmJlcl9hbGwpO1xuK31cbitcbiBzdGF0aWMgX19ub2lubGluZVxuIHUzMiBfX2FyZW5hICpjaGVja19hcmVuYV9hcmdfbm9uZ2xvYmFsKHUzMiBfX2FyZW5hICphcmcpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6MzcuMzkyODAxNTEzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQwNTA2MDE3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBob3cgaXQgaGFuZGxlcyBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgb3BlcmF0aW9ucy4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGluIGBjaGVja19hdG9taWNfcm13YCwgYW5kIHRoZSBjb3JlIG9mIGl0IGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCByZXBsYWNlbWVudDogaW5zdGVhZCBvZiBvbmx5IHNhdmluZyB0aGUgYXV4aWxpYXJ5IHBvaW50ZXIgdHlwZSB3aGVuIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlciAoYGRzdF9yZWdgKSBpcyBhbiBhcmVuYSByZWdpc3RlciwgaXQgbm93IHNhdmVzIHRoZSB0eXBlIGZvciAqYWxsKiBhdG9taWMgUk1XIG9wZXJhdGlvbnMuXG5cblRoZSBvcmlnaW5hbCBjb2RlIHNuaXBwZXQgd2FzOlxuXG5gYGBjXG4tXHRpZiAoaXNfYXJlbmFfcmVnKGVudiwgaW5zbi1cdTAwM2Vkc3RfcmVnKSkge1xuLVx0XHRlcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIFBUUl9UT19BUkVOQSwgZmFsc2UpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdHJldHVybiBlcnI7XG4tXHR9XG4rXHRlcnIgPSBzYXZlX2F1eF9wdHJfdHlwZShlbnYsIGRzdF9yZWctXHUwMDNldHlwZSwgZmFsc2UpO1xuK1x0aWYgKGVycilcbitcdFx0cmV0dXJuIGVycjtcbmBgYFxuXG5UaGlzIGVuc3VyZXMgY29uc2lzdGVuY3kgYnkgcHJldmVudGluZyB0aGUgc2FtZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcy4gVGhlIGFkZGVkIHNlbGZ0ZXN0IGNvbmZpcm1zIHRoaXMuIFNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBmb3IgdGhlIGJldHRlci4gVGhpcyBpcyBnb29kOyBpdCdzIGVuZm9yY2luZyBzdHJpY3RlciBwb2ludGVyIHR5cGUgY2hlY2tpbmcgZHVyaW5nIEJQRiB2ZXJpZmljYXRpb24uXG5cbk15IG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHZlcmlmeSBgY2hlY2tfYXRvbWljX3Jtd2AgYW5kIGBzYXZlX2F1eF9wdHJfdHlwZWAgbW9yZSBjbG9zZWx5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGFuZCBjb25maXJtIHRoZSByZWFzb25pbmcsIGVzcGVjaWFsbHkgaWYgdGhlIGNoYW5nZSBoYXMgYnJvYWRlciBlZmZlY3RzLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIGF0b21pYyBvcGVyYXRpb25zIGFuZCBwb3RlbnRpYWwgcG9pbnRlciB0eXBlIGNvbmZ1c2lvbiwgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4gVGhlIGtleSBmb2N1cyBoZXJlIHdpbGwgYmUgdGhlIGBjaGVja19hdG9taWNfcm13YCBmdW5jdGlvbi4gR2l2ZW4gdGhpcyBpcyBCUEYtcmVsYXRlZCwgSSdsbCBiZSBzdXJlIHRvIGVuYWJsZSB0aGUgYEJQRl9TWVNDQUxMYCBjb25maWcuIFRpbWUgdG8gZmlyZSB1cCB0aG9zZSB0b29scyBhbmQgc2VlIGlmIHdlIGNhbiBzaGFrZSBzb21ldGhpbmcgbG9vc2UhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo0Mi43OTc4NjYzMDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzMjAzMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2F0b21pY19ybXdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz02NDA0PXN0YXRpYyBpbnQgY2hlY2tfc3RvcmVfcmVnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDQxLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NDQyOnN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX3JtdyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NDQzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NjU2MT1zdGF0aWMgaW50IGNoZWNrX2F0b21pYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU3My1cXHRjYXNlIEJQRl9DTVBYQ0hHOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NTc0OlxcdFxcdHJldHVybiBjaGVja19hdG9taWNfcm13KGVudiwgaW5zbik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NzUtXFx0Y2FzZSBCUEZfTE9BRF9BQ1E6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ5OjQyLjkzMTA3NDQzOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjkyNTgxMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgQXRvbWljIFJNVyBEZXBlbmRlbmN5KipcblxuQWxyaWdodCwgbGV0J3MgZGlzc2VjdCB0aGlzLiBJJ20gbG9va2luZyBhdCBgY2hlY2tfYXRvbWljX3Jtd2AsIHdoaWNoIGlzLCBpbnRlcmVzdGluZ2x5LCBhIHN0YXRpYyBmdW5jdGlvbi4gTm93LCB0aGF0IGFsb25lIHdvdWxkbid0IG5vcm1hbGx5IHJhaXNlIGEgZmxhZywgYnV0IGl0J3MgY2FsbGVkIGJ5IGFub3RoZXIgc3RhdGljIGZ1bmN0aW9uLCBgY2hlY2tfYXRvbWljYC4gU28sIHRoZSBxdWVzdGlvbiBpbW1lZGlhdGVseSBiZWNvbWVzLCBcIldoYXQgY2FsbHMgYGNoZWNrX2F0b21pY2A/XCIgVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBncmFwaCBoZXJlIGlzIGNydWNpYWwgdG8gc2VlIGlmIHRoaXMgaXMgYW4gaXNvbGF0ZWQsIGludGVybmFsIGNoZWNrIG9yIGEgZGVlcGVyIGFyY2hpdGVjdHVyYWwgY29uY2Vybi4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgY2hlY2tfYXRvbWljYCB0byBzZWUgaXRzIHVzYWdlIGNvbnRleHQuIElzIGl0IGJlaW5nIHVzZWQgd2l0aGluIGEgc3BlY2lmaWMgbW9kdWxlPyBJcyBpdCBwYXJ0IG9mIGEgbGFyZ2VyLCBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYywgYXRvbWljIG9wZXJhdGlvbiB2YWxpZGF0aW9uIHNjaGVtZT8gS25vd2luZyB0aGUgY2FsbGVyIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcHVycG9zZSBvZiB0aGVzZSBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4OTUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo0Ni40MDAzMzczOTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5NzY4MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX2F0b21pY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTY0MDQ9c3RhdGljIGludCBjaGVja19zdG9yZV9yZWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY0NDEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY0NDI6c3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY0NDMtXFx0XFx0XFx0ICAgIHN0cnVjdCBicGZfaW5zbiAqaW5zbilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTIyLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NTIzOnN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX2xvYWQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjUyNC1cXHRcXHRcXHQgICAgIHN0cnVjdCBicGZfaW5zbiAqaW5zbilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTQxLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo2NTQyOnN0YXRpYyBpbnQgY2hlY2tfYXRvbWljX3N0b3JlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NDMtXFx0XFx0XFx0ICAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTY1NjAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1NjE6c3RhdGljIGludCBjaGVja19hdG9taWMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTYyLXtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTczLVxcdGNhc2UgQlBGX0NNUFhDSEc6XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1NzQ6XFx0XFx0cmV0dXJuIGNoZWNrX2F0b21pY19ybXcoZW52LCBpbnNuKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU3NS1cXHRjYXNlIEJQRl9MT0FEX0FDUTpcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTgwLVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NjU4MTpcXHRcXHRyZXR1cm4gY2hlY2tfYXRvbWljX2xvYWQoZW52LCBpbnNuKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU4Mi1cXHRjYXNlIEJQRl9TVE9SRV9SRUw6XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjU4Ny1cXHRcXHR9XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjY1ODg6XFx0XFx0cmV0dXJuIGNoZWNrX2F0b21pY19zdG9yZShlbnYsIGluc24pO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy02NTg5LVxcdGRlZmF1bHQ6XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTcyNjA9c3RhdGljIGludCBkb19jaGVja19pbnNuKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGJvb2wgKmRvX3ByaW50X3N0YXRlKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3Mjc3LVxcdFxcdGlmIChCUEZfTU9ERShpbnNuLVxcdTAwM2Vjb2RlKSA9PSBCUEZfQVRPTUlDKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxNzI3ODpcXHRcXHRcXHRyZXR1cm4gY2hlY2tfYXRvbWljKGVudiwgaW5zbik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE3Mjc5LVxcdFxcdHJldHVybiBjaGVja19zdG9yZV9yZWcoZW52LCBpbnNuLCBmYWxzZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ5OjQ2LjUzMDExMjA4MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3Mjk1MTI4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRm9jdXNpbmcgb24gQlBGIFZlcmlmaWNhdGlvbioqXG5cbk9rYXksIHNvIGBkb19jaGVja19pbnNuYCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0J3Mgbm90IGEgZGlyZWN0IGVudHJ5IHBvaW50LiBJIG5lZWQgdG8gZmluZCB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIEJQRiB2ZXJpZmllci4gTGV0J3Mgc2VlLi4uQWgsIHRoYXQncyBpdCEgYGJwZl9jaGVja2AgaXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgZm9yIHRoZSB3aG9sZSB2ZXJpZmljYXRpb24gcHJvY2Vzcy4gSSdsbCBtYWtlIHRoYXQgdGhlIGZvY3VzIHN5bWJvbCBmb3Igbm93OyB1bmRlcnN0YW5kaW5nIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIGBicGZfY2hlY2tgIGlzIGtleS4gSSdsbCBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB0cmFjZSB0aGUgY29udHJvbCBmbG93IGZyb20gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NjMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo1MC4yNTk2Mjg2MDVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMzk5NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTU3PXN0YXRpYyBib29sIGJwZl9nbG9iYWxfcGVyY3B1X21hX3NldDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNTgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjU5Oi8qIGJwZl9jaGVjaygpIGlzIGEgc3RhdGljIGNvZGUgYW5hbHl6ZXIgdGhhdCB3YWxrcyBlQlBGIHByb2dyYW1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNjAtICogaW5zdHJ1Y3Rpb24gYnkgaW5zdHJ1Y3Rpb24gYW5kIHVwZGF0ZXMgcmVnaXN0ZXIvc3RhY2sgc3RhdGUuXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTQ9c3RhdGljIGludCBwcm9jZXNzX2tmX2FyZ19wdHJfdG9fcmJ0cmVlX25vZGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjAwNS0gKiBMU00gaG9va3MgYW5kIGl0ZXJzIChib3RoIHNsZWVwYWJsZSBhbmQgbm9uLXNsZWVwYWJsZSkgYXJlIHNhZmUuXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMDA2OiAqIEFueSBzbGVlcGFibGUgcHJvZ3MgYXJlIGFsc28gc2FmZSBzaW5jZSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldCgpIGVuZm9yY2VcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIwMDctICogdGhlbSBjYW4gb25seSBiZSBhdHRhY2hlZCB0byBzb21lIHNwZWNpZmljIGhvb2sgcG9pbnRzLlxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5MDMzPXN0YXRpYyBib29sIGF0dGFjaF91c2VzX3RyYW1wb2xpbmVfcmV0dmFsKGVudW0gYnBmX2F0dGFjaF90eXBlIHR5cGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTkwNDYtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5MDQ3OmludCBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTA0OC1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NDcwPXN0YXRpYyBpbnQgY2hlY2tfYXR0YWNoX2J0Zl9pZChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTAwLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTUwMTpcXHRyZXQgPSBicGZfY2hlY2tfYXR0YWNoX3RhcmdldChcXHUwMDI2ZW52LVxcdTAwM2Vsb2csIHByb2csIHRndF9wcm9nLCBidGZfaWQsIFxcdTAwMjZ0Z3RfaW5mbyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NTAyLVxcdGlmIChyZXQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1NjktXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NTcwOmludCBicGZfY2hlY2tfYXR0YWNoX2J0Zl9pZF9tdWx0aShzdHJ1Y3QgYnRmICpidGYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGJ0Zl9pZCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk1NzEtXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYnBmX2F0dGFjaF90YXJnZXRfaW5mbyAqdGd0X2luZm8pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwMDM9c3RhdGljIGVudW0gYnBmX3NpZ19rZXlyaW5nIGJwZl9jbGFzc2lmeV9rZXlyaW5nKHMzMiBrZXlyaW5nX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMDE3LS8qXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMDE4OiAqIFZlcmlmeSB0aGUgUEtDUyM3IHNpZ25hdHVyZSBvZiBhIGxvYWRlZCBwcm9ncmFtLiBDYWxsZWQgZnJvbSBicGZfY2hlY2soKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDAxOS0gKiBvbmNlIHRoZSBwcm9ncmFtJ3MgbWV0YWRhdGEgbWFwcyBoYXZlIGJlZW4gcmVzb2x2ZWQgaW50byB1c2VkX21hcHMsIHNvXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MjAwMjY9c3RhdGljIGludCBicGZfcHJvZ192ZXJpZnlfc2lnbmF0dXJlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMjAxNDItXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjIwMTQzOmludCBicGZfY2hlY2soc3RydWN0IGJwZl9wcm9nICoqcHJvZywgdW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE0NC1cXHQgICAgICBzdHJ1Y3QgYnBmX2xvZ19hdHRyICphdHRyX2xvZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE1Ny1cXHQvKiAnc3RydWN0IGJwZl92ZXJpZmllcl9lbnYnIGNhbiBiZSBnbG9iYWwsIGJ1dCBzaW5jZSBpdCdzIG5vdCBzbWFsbCxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MjAxNTg6XFx0ICogYWxsb2NhdGUvZnJlZSBpdCBldmVyeSB0aW1lIGJwZl9jaGVjaygpIGlzIGNhbGxlZFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDE1OS1cXHQgKi9cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0yMDI2NS1cXHQvKiBWYWxpZGF0ZSBCVEYgYWdhaW5zdCB0aGUgY29tcGxldGUgc3VicHJvZ3JhbSBsYXlvdXQgYW5kIGFwcGx5IENPLVJFLiAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDI2NjpcXHRyZXQgPSBicGZfY2hlY2tfYnRmX2luZm8oZW52LCBhdHRyLCB1YXR0cik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjY3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjg1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoyMDI4NjpcXHRyZXQgPSBicGZfY2hlY2tfY2ZnKGVudik7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTIwMjg3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo1MC40MjMwMzQ4MDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk4MTk5NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlBGIExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIGBicGZfY2hlY2tgIGlzIHRoZSBwcmltYXJ5IGZ1bmN0aW9uIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLCBhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmxhZyBhcHBlYXJzIHRvIGJlIGBCUEZfU1lTQ0FMTGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQncyBqdXN0IG1ha2UgKnN1cmUqIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY29uZmlncyB0aGF0IG1pZ2h0IGJlIHN1YnRseSBpbnZvbHZlZCBpbiB0aGlzIHdob2xlIHRoaW5nIOKAkyBnb3R0YSBiZSB0aG9yb3VnaC5cblxuSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggSSdtIHJldmlld2luZyBoYXMgbWFkZSBjaGFuZ2VzIHRvIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBDb25zaWRlcmluZyB0aGF0IGZpbGUgZ2V0cyBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQsIHRoaXMgYWxsIHNlZW1zIHRvIGJlIGNvYWxlc2NpbmcgcHJldHR5IG5lYXRseS4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gcmVhbGx5IGRpdmUgaW50byBgdmVyaWZpZXIuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCB0aGUgcGF0Y2ggaXMgKmRvaW5nKiB3aXRoIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTk5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6NTMuODIxMjM3NjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTQ2NDg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotXFxcXCRcXFxcKENPTkZJR19CUEZfU1lTQ0FMTFxcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gKz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXFxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGZpeHVwcy5vIGNmZy5vIHN0YXRlcy5vIGJhY2t0cmFjay5vIGNoZWNrX2J0Zi5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xNS1vYmotJHtDT05GSUdfQlBGX0xTTX1cXHQgICs9IGJwZl9pbm9kZV9zdG9yYWdlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGlzYXNtLm8gbXByb2cub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTctb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IHRyYW1wb2xpbmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYXJlbmEubyByYW5nZV90cmVlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIxLWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTIzPWlmZXEgKCQoQ09ORklHX05FVCkseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGV2bWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY3B1bWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gb2ZmbG9hZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IG5ldF9uYW1lc3BhY2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSB0Y3gub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMjktZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMwPWlmZXEgKCQoQ09ORklHX1BFUkZfRVZFTlRTKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBzdGFja21hcC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0zMi1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzM9aWZlcSAoJChDT05GSUdfQ0dST1VQUykseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY2dyb3VwX2l0ZXIubyBicGZfY2dycF9zdG9yYWdlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM1LWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTM3PWlmZXEgKCQoQ09ORklHX0lORVQpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHJldXNlcG9ydF9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0zOS1lbmRpZlxcbi0tXFxua2VybmVsL2JwZi9NYWtlZmlsZT00Mz1pZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfc3RydWN0X29wcy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNwdW1hc2sub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTU4PWlmbmVxICgkKENPTkZJR19DUllQVE8pLClcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY3J5cHRvLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYwLWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT02MT1vYmotJChDT05GSUdfQlBGX1BSRUxPQUQpICs9IHByZWxvYWQvXFxua2VybmVsL2JwZi9NYWtlZmlsZS02Mi1cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gcmVsb19jb3JlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGZfcmVsb2NhdGUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBrbWVtX2NhY2hlX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjctaWZlcSAoJChDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVIpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRtYWJ1Zl9pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY5LWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDEyOjQ5OjUzLjk0MjcwODkyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODAxMjc1OTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQlBGIFNlY3VyaXR5IE1vZHVsZSoqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgQlBGX1NZU0NBTExgLCBhbmQgbXkgcHJpbWFyeSBmb2N1cyBzeW1ib2wgaXMgYGJwZl9jaGVja2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFyZSB0aGVyZSAqb3RoZXIqIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBleGVjdXRpb24gcGF0aCB0aGF0IG1pZ2h0IHNlcnZlIGFzIGVxdWFsbHkgZ29vZCwgb3IgZXZlbiBiZXR0ZXIsIGZvY3VzIHBvaW50cyBmb3IgbXkgYW5hbHlzaXM/XCIgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYWx0ZXJuYXRpdmVzIHRoYXQgbWlnaHQgYmUgbW9yZSByZXZlYWxpbmcuXG5cbkxldCdzIHRyYWNlIHRoaXMgZnVuY3Rpb24gY2FsbCBjaGFpbjogVGhlIHBhdGNoIHRvdWNoZXMgYGNoZWNrX2F0b21pY19ybXdgLCB3aGljaCBpcyBjYWxsZWQgYnkgYGNoZWNrX2F0b21pY2AuIGBjaGVja19hdG9taWNgIHRoZW4gZmVlZHMgaW50byBgZG9fY2hlY2tfaW5zbmAsIHdoaWNoLCBpbiB0dXJuLCBpcyBhIGRlcGVuZGVuY3kgZm9yIGBkb19jaGVja2AuIEZpbmFsbHksIGBkb19jaGVja2AgZ2V0cyBjYWxsZWQgYnkgYGJwZl9jaGVja2AuIEdpdmVuIHRoYXQgcGF0aCwgYGJwZl9jaGVja2AgbG9va3MgcHJldHR5IHNvbGlkIGFzIHRoZSBmb2NhbCBwb2ludC4gSXQgaGl0cyBhbGwgdGhlIGhpZ2ggbGV2ZWwgY2hlY2tzLlxuXG5UaGVyZWZvcmUsIEknbGwgc3RpY2sgd2l0aCBgYnBmX2NoZWNrYC4gSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIHRoZSByZXN1bHRzIGJhc2VkIG9uIHRoaXMgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgzMSwiT3V0cHV0VG9rZW5zIjoxMDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6NTguNzQzOTg3NzAxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2ODgxNzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9jaGVja1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gc2F2ZSB0aGUgYXV4aWxpYXJ5IHBvaW50ZXIgdHlwZSBmb3IgYWxsIGF0b21pYyBSTVcgb3BlcmF0aW9ucywgbm90IGp1c3QgYXJlbmEgcG9pbnRlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgdmVyaWZpZXIgbG9naWMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIGF0b21pYyBvcGVyYXRpb25zIGFuZCBwb2ludGVyIHR5cGVzLiBJdCBpcyByZWFjaGFibGUgdmlhIHRoZSBicGYoKSBzeXNjYWxsIHdoZW4gbG9hZGluZyBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfY2hlY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIHNhdmUgdGhlIGF1eGlsaWFyeSBwb2ludGVyIHR5cGUgZm9yIGFsbCBhdG9taWMgUk1XIG9wZXJhdGlvbnMsIG5vdCBqdXN0IGFyZW5hIHBvaW50ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHZlcmlmaWVyIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBhdG9taWMgb3BlcmF0aW9ucyBhbmQgcG9pbnRlciB0eXBlcy4gSXQgaXMgcmVhY2hhYmxlIHZpYSB0aGUgYnBmKCkgc3lzY2FsbCB3aGVuIGxvYWRpbmcgQlBGIHByb2dyYW1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo1OC45NTA4ODA1NDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDExMzYyOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NDk6NTguOTUxNzUyOTk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwMDEwNDg0NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIEJQRiB2ZXJpZmllciBpc3N1ZSB3aGVyZSB0aGUgcG9pbnRlciB0eXBlIGZvciBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgaW5zdHJ1Y3Rpb25zIHdhcyBvbmx5IHNhdmVkIGZvciBhcmVuYSBwb2ludGVycy4gQnkgc2F2aW5nIHRoZSBwb2ludGVyIHR5cGUgZm9yIGFsbCBwb2ludGVyIHR5cGVzLCBpdCBwcmV2ZW50cyBhIHNpbmdsZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcyAoZS5nLiwgYm90aCBhcmVuYSBhbmQgbWFwIHZhbHVlIHBvaW50ZXJzKSBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocy4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdHlwZSBjb25mdXNpb24gYW5kIGluY29ycmVjdCBKSVQgY29tcGlsYXRpb24sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgY2F1Z2h0IGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWUyM2VkNWE0NmE2MmZjYTcwNzM2NmU3NzU1YjY4NDk1OTYwNDgzN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDEzIDEyOjQ5OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5pbmRleCAxNjRkMTZjMjQzY2E2Li4zZDY3MmY2NjY1YmVjIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC02NTA5LDExICs2NTA5LDkgQEAgc3RhdGljIGludCBjaGVja19hdG9taWNfcm13KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0aWYgKGlzX2FyZW5hX3JlZyhlbnYsIGluc24tXHUwMDNlZHN0X3JlZykpIHtcbi1cdFx0ZXJyID0gc2F2ZV9hdXhfcHRyX3R5cGUoZW52LCBQVFJfVE9fQVJFTkEsIGZhbHNlKTtcbi1cdFx0aWYgKGVycilcbi1cdFx0XHRyZXR1cm4gZXJyO1xuLVx0fVxuK1x0ZXJyID0gc2F2ZV9hdXhfcHRyX3R5cGUoZW52LCBkc3RfcmVnLVx1MDAzZXR5cGUsIGZhbHNlKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4gXHQvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiB3cml0ZSBpbnRvIHRoZSBzYW1lIG1lbW9yeS4gKi9cbiBcdGVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBlbnYtXHUwMDNlaW5zbl9pZHgsIGRzdF9yZWcsIGFyZ25vX2Zyb21fcmVnKGluc24tXHUwMDNlZHN0X3JlZyksIGluc24tXHUwMDNlb2ZmLFxuIFx0XHRcdCAgICAgICBCUEZfU0laRShpbnNuLVx1MDAzZWNvZGUpLCBCUEZfV1JJVEUsIC0xLCB0cnVlLCBmYWxzZSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xuaW5kZXggYjI0MWJiY2Y1NGE4YS4uMmU0M2RhMTg4MTk0YiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuY1xuQEAgLTI1LDYgKzI1LDE1IEBAIHN0cnVjdCB7XG4gXHRfX3Vsb25nKG1hcF9leHRyYSwgQVJFTkFfVk1fU1RBUlQpOyAvKiBzdGFydCBvZiBtbWFwKCkgcmVnaW9uICovXG4gfSBhcmVuYSBTRUMoXCIubWFwc1wiKTtcbiBcbitzdHJ1Y3Qge1xuK1x0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9BUlJBWSk7XG4rXHRfX3VpbnQobWF4X2VudHJpZXMsIDEpO1xuK1x0X190eXBlKGtleSwgX191MzIpO1xuK1x0X190eXBlKHZhbHVlLCBfX3U2NCk7XG4rfSBhdG9taWNfbWFwIFNFQyhcIi5tYXBzXCIpO1xuK1xuK3N0YXRpYyBfX3U2NCBhcmVuYV9hdG9taWNfdGFyZ2V0IFNFQyhcIi5hZGRyX3NwYWNlLjFcIik7XG4rXG4gU0VDKFwic29ja2V0XCIpXG4gX19zdWNjZXNzIF9fcmV0dmFsKDApXG4gaW50IGJhc2ljX2FsbG9jMV9ub3NsZWVwKHZvaWQgKmN0eClcbkBAIC02MzcsNiArNjQ2LDQxIEBAIGludCBub25fYXJlbmFfcHRyX2FkZF90b19hcmVuYV9wdHIodm9pZCAqY3R4KVxuIFxuICNlbmRpZlxuIFxuK1NFQyhcInNvY2tldFwiKVxuK19fZGVzY3JpcHRpb24oXCJhcmVuYSBhbmQgbWFwIHZhbHVlIGF0b21pYyBhdCB0aGUgc2FtZSBpbnN0cnVjdGlvblwiKVxuK19fZmFpbHVyZSBfX21zZyhcInNhbWUgaW5zbiBjYW5ub3QgYmUgdXNlZCB3aXRoIGRpZmZlcmVudCBwb2ludGVyc1wiKVxuK19fYXJjaF94ODZfNjRcbitfX2xvYWRfaWZfSklUZWQoKVxuK19fbmFrZWQgdm9pZCBtaXhlZF9hcmVuYV9tYXBfdmFsdWVfYXRvbWljKHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlIChcIlx0XHRcdFx0XHRcXFxuK1x0cjEgPSAwO1x0XHRcdFx0XHRcXFxuK1x0Kih1MzIgKikocjEwIC0gNCkgPSByMTtcdFx0XHRcXFxuK1x0cjIgPSByMTA7XHRcdFx0XHRcdFxcXG4rXHRyMiArPSAtNDtcdFx0XHRcdFx0XFxcbitcdHIxID0gJVthdG9taWNfbWFwXSBsbDtcdFx0XHRcdFxcXG4rXHRjYWxsICVbYnBmX21hcF9sb29rdXBfZWxlbV07XHRcdFx0XFxcbitcdGlmIHIwID09IDAgZ290byAxZjtcdFx0XHRcdFxcXG4rXHRyNiA9IHIwO1x0XHRcdFx0XHRcXFxuK1x0cjcgPSAlW2FyZW5hX2F0b21pY190YXJnZXRdIGxsO1x0XHRcdFxcXG4rXHQuYnl0ZSAweGJmOyAuYnl0ZSAweDc3OyAuc2hvcnQgMTsgLmxvbmcgMTtcdFxcXG4rXHRjYWxsICVbYnBmX2dldF9wcmFuZG9tX3UzMl07XHRcdFx0XFxcbitcdGlmIHcwICE9IDAgZ290byAyZjtcdFx0XHRcdFxcXG4rXHRyOCA9IHI2O1x0XHRcdFx0XHRcXFxuK1x0Z290byAzZjtcdFx0XHRcdFx0XFxcbisyOlx0cjggPSByNztcdFx0XHRcdFx0XFxcbiszOlx0cjkgPSAxO1x0XHRcdFx0XHRcXFxuK1x0bG9jayAqKHU2NCAqKShyOCArIDApICs9IHI5O1x0XHRcdFxcXG4rMTpcdHIwID0gMDtcdFx0XHRcdFx0XFxcbitcdGV4aXQ7XHRcdFx0XHRcdFx0XFxcbitcIlx0OlxuK1x0OiBfX2ltbV9hZGRyKGF0b21pY19tYXApLFxuK1x0ICBfX2ltbV9hZGRyKGFyZW5hX2F0b21pY190YXJnZXQpLFxuK1x0ICBfX2ltbShicGZfbWFwX2xvb2t1cF9lbGVtKSxcbitcdCAgX19pbW0oYnBmX2dldF9wcmFuZG9tX3UzMilcbitcdDogX19jbG9iYmVyX2FsbCk7XG4rfVxuK1xuIHN0YXRpYyBfX25vaW5saW5lXG4gdTMyIF9fYXJlbmEgKmNoZWNrX2FyZW5hX2FyZ19ub25nbG9iYWwodTMyIF9fYXJlbmEgKmFyZylcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxMjo0OTo1OC45NTE3NTc3ODhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwMTA0NDczNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQlBGIFZlcmlmaWVyIEJ1ZyBGaXg6IEVuc3VyaW5nIENvcnJlY3QgUG9pbnRlciBUeXBlIFRyYWNraW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIEJQRiB2ZXJpZmllciwgc3BlY2lmaWNhbGx5IHRoZSBgY2hlY2tfYXRvbWljX3Jtd2AgZnVuY3Rpb24gaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEl0IHNlZW1zIGxpa2UgYSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBidWcgZml4LCBidXQgaW1wb3J0YW50IG5vbmV0aGVsZXNzLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHRoYXQgdGhlIGNvZGUgbm93IGNhbGxzIGBzYXZlX2F1eF9wdHJfdHlwZWAgd2l0aCB0aGUgYWN0dWFsIHBvaW50ZXIgdHlwZSBvZiB0aGUgZGVzdGluYXRpb24gcmVnaXN0ZXIgKGBkc3RfcmVnLVx1MDAzZXR5cGVgKSBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgYFBUUl9UT19BUkVOQWAuXG5cbkVzc2VudGlhbGx5LCB3aGF0J3MgaGFwcGVuaW5nIGlzIHRoYXQgdGhlIHZlcmlmaWVyIG5vdyBjb3JyZWN0bHkgdHJhY2tzIHRoZSBwb2ludGVyIHR5cGUgaW4gYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIChSTVcpIGluc3RydWN0aW9ucy4gQmVmb3JlLCBpdCB3YXMgb25seSB0cmFja2luZyBhcmVuYSBwb2ludGVycyBpbiB0aGlzIGNvbnRleHQsIGJ1dCBub3cgaXQncyBjb3JyZWN0bHkgY2hlY2tpbmcgYWxsIHBvaW50ZXIgdHlwZXMuIFRoZSBhZGRlZCB0ZXN0IGNhc2UsIGBtaXhlZF9hcmVuYV9tYXBfdmFsdWVfYXRvbWljYCwgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGRpcmVjdGx5IHRlc3RzIHRoaXMuIEl0IG1ha2VzIHN1cmUgdGhhdCBhIHNpbmdsZSBSTVcgaW5zdHJ1Y3Rpb24gKmNhbid0KiBiZSB1c2VkIHdpdGgsIHNheSwgYm90aCBhbiBhcmVuYSBwb2ludGVyIGFuZCBhIG1hcCB2YWx1ZSBwb2ludGVyLCB3aGljaCBpcyB0aGUgdHlwZSBvZiBidWcgd2UgYXJlIGZpeGluZy5cblxuVGhpcyBjaGFuZ2UgaXMgYWxsIGFib3V0IGVuc3VyaW5nIHRoZSB2ZXJpZmllcidzIHR5cGUgdHJhY2tpbmcgaXMgYWNjdXJhdGUgYW5kIGNvbnNpc3RlbnQsIHdoaWNoIGlzIHBhcmFtb3VudCBmb3IgdGhlIEpJVCBhbmQgb3ZlcmFsbCBleGVjdXRpb24gc2FmZXR5LiBJZiB0aGUgdmVyaWZpZXIgbWlzY2xhc3NpZmllcyBhIHBvaW50ZXIsIHRoZSBKSVQgY291bGQgZ2VuZXJhdGUgaW5jb3JyZWN0IGNvZGUgZm9yIHRoYXQgaW5zdHJ1Y3Rpb24uIFdlIGNvdWxkIGVuZCB1cCB3aXRoIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcy5cblxuSSBpbml0aWFsbHkgd29uZGVyZWQgaWYgdGhpcyBoYWQgc29tZXRoaW5nIHRvIGRvIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnksIGJ1dCBpdCdzIGNsZWFybHkgbm90IHJlbGF0ZWQuIEtNU0FOIGhhbmRsZXMgdGhhdC4gVGhpcyBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgcG9pbnRlciAqdHlwZXMqIGFuZCBlbnN1cmluZyB0aGUgdmVyaWZpZXIgY2FuIGNvcnJlY3RseSBhbmQgY29uc2lzdGVudGx5IHRyYWNrIHRoZXNlIGRpZmZlcmVudCBwb2ludGVyIHR5cGVzLlxuXG5MZXQgbWUgcmVmcmVzaCBteXNlbGYgb24gdGhlIGBzYXZlX2F1eF9wdHJfdHlwZWAgZnVuY3Rpb24gaXRzZWxmLiBBaCwgcmlnaHQsIGl0IHNhdmVzIHRoZSBwb2ludGVyIHR5cGUgaW4gYGVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5wdHJfdHlwZWAuIEFuZCBpZiB0aGUgc2FtZSBpbnN0cnVjdGlvbiBpcyB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXIgdHlwZXMgaW4gZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocywgYHNhdmVfYXV4X3B0cl90eXBlYCByZXR1cm5zIGFuIGVycm9yIChgLUVJTlZBTGApIGlmIHRoZSB0eXBlcyBkb24ndCBtYXRjaC4gVGhpcyBpcyB0aGUgc2FmZWd1YXJkIHRoYXQncyBiZWluZyBwdXQgaW4gcGxhY2UgYW5kIG1hZGUgbW9yZSBjb25zaXN0ZW50IGhlcmUsIHByZXZlbnRpbmcgdHlwZSBjb25mdXNpb24uXG5cblNvLCB0aGlzIGlzIGEgc2VjdXJpdHktcmVsYXRlZCBmaXgsIHByZXZlbnRpbmcgdHlwZSBjb25mdXNpb24gb3IgaW5jb3JyZWN0IEpJVCBjb2RlIGdlbmVyYXRpb24uIFNpbmNlIGl0J3Mgbm90IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnksIEknbGwgc2V0IE5lZWRzS01TQU4gdG8gZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MTQsIk91dHB1dFRva2VucyI6MTYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTI6NTA6MDguOTYyMjA5OTQ5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIEJQRiB2ZXJpZmllciBpc3N1ZSB3aGVyZSB0aGUgcG9pbnRlciB0eXBlIGZvciBhdG9taWMgcmVhZC1tb2RpZnktd3JpdGUgKFJNVykgaW5zdHJ1Y3Rpb25zIHdhcyBvbmx5IHNhdmVkIGZvciBhcmVuYSBwb2ludGVycy4gQnkgc2F2aW5nIHRoZSBwb2ludGVyIHR5cGUgZm9yIGFsbCBwb2ludGVyIHR5cGVzLCBpdCBwcmV2ZW50cyBhIHNpbmdsZSBpbnN0cnVjdGlvbiBmcm9tIGJlaW5nIHVzZWQgd2l0aCBkaWZmZXJlbnQgcG9pbnRlciB0eXBlcyAoZS5nLiwgYm90aCBhcmVuYSBhbmQgbWFwIHZhbHVlIHBvaW50ZXJzKSBhY3Jvc3MgZGlmZmVyZW50IGV4ZWN1dGlvbiBwYXRocy4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgdHlwZSBjb25mdXNpb24gYW5kIGluY29ycmVjdCBKSVQgY29tcGlsYXRpb24sIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMgY2F1Z2h0IGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBCUEYgdmVyaWZpZXIgaXNzdWUgd2hlcmUgdGhlIHBvaW50ZXIgdHlwZSBmb3IgYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIChSTVcpIGluc3RydWN0aW9ucyB3YXMgb25seSBzYXZlZCBmb3IgYXJlbmEgcG9pbnRlcnMuIEJ5IHNhdmluZyB0aGUgcG9pbnRlciB0eXBlIGZvciBhbGwgcG9pbnRlciB0eXBlcywgaXQgcHJldmVudHMgYSBzaW5nbGUgaW5zdHJ1Y3Rpb24gZnJvbSBiZWluZyB1c2VkIHdpdGggZGlmZmVyZW50IHBvaW50ZXIgdHlwZXMgKGUuZy4sIGJvdGggYXJlbmEgYW5kIG1hcCB2YWx1ZSBwb2ludGVycykgYWNyb3NzIGRpZmZlcmVudCBleGVjdXRpb24gcGF0aHMuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIHR5cGUgY29uZnVzaW9uIGFuZCBpbmNvcnJlY3QgSklUIGNvbXBpbGF0aW9uLCB3aGljaCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBwb2ludGVyIGRlcmVmZXJlbmNlcy4gVGhlc2UgdHlwZXMgb2YgYnVncyBhcmUgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWVzIGNhdWdodCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow45swr[1] Phase: Succeeded StartedAt: 2026-08-13 12:50:21 +0000 UTC FinishedAt: 2026-08-13 12:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 12:50:21 +0000 UTC FinishedAt: 2026-08-13 12:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2] Phase: Succeeded StartedAt: 2026-08-13 12:50:21 +0000 UTC FinishedAt: 2026-08-13 16:34:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-13 12:50:21 +0000 UTC FinishedAt: 2026-08-13 16:34:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-13 12:50:21 +0000 UTC FinishedAt: 2026-08-13 12:50:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-13 12:50:21 +0000 UTC FinishedAt: 2026-08-13 12:50:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-convert-artifact-3290263027/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-13 12:50:31 +0000 UTC FinishedAt: 2026-08-13 13:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-13 12:50:31 +0000 UTC FinishedAt: 2026-08-13 13:09:18 +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:*3679be8f-eb07-4c5c-9c0d-a9531038519a,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-workflow45swr/series-workflow45swr-convert-artifact-3290263027/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": "7a12787f-4404-4b4e-8dfe-c66f29f87459", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-build-action-4206350497/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-13 12:50:31 +0000 UTC FinishedAt: 2026-08-13 13:09:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3679be8f-eb07-4c5c-9c0d-a9531038519a,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-workflow45swr/series-workflow45swr-convert-artifact-3290263027/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": "7a12787f-4404-4b4e-8dfe-c66f29f87459", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-build-action-4206350497/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-13 13:09:18 +0000 UTC FinishedAt: 2026-08-13 13:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-13 13:09:18 +0000 UTC FinishedAt: 2026-08-13 13:09:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-13 13:09:18 +0000 UTC FinishedAt: 2026-08-13 13:09:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-13 13:09:18 +0000 UTC FinishedAt: 2026-08-13 13:09:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-convert-artifact-131052522/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-13 13:09:28 +0000 UTC FinishedAt: 2026-08-13 13:11:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-13 13:09:28 +0000 UTC FinishedAt: 2026-08-13 13:11:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7a12787f-4404-4b4e-8dfe-c66f29f87459,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-build-action-4206350497/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-13 13:11:45 +0000 UTC FinishedAt: 2026-08-13 13:11:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-13 13:11:45 +0000 UTC FinishedAt: 2026-08-13 13:11:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-13 13:11:45 +0000 UTC FinishedAt: 2026-08-13 13:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-13 13:11:45 +0000 UTC FinishedAt: 2026-08-13 13:31:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3679be8f-eb07-4c5c-9c0d-a9531038519a,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-workflow45swr/series-workflow45swr-convert-artifact-131052522/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": "9ef31c6e-510f-4aa0-9759-f2342b6e3597", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-build-action-2052579342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-13 13:11:45 +0000 UTC FinishedAt: 2026-08-13 13:31:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3679be8f-eb07-4c5c-9c0d-a9531038519a,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-workflow45swr/series-workflow45swr-convert-artifact-131052522/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": "9ef31c6e-510f-4aa0-9759-f2342b6e3597", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-build-action-2052579342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 13:31:18 +0000 UTC FinishedAt: 2026-08-13 13:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 13:31:18 +0000 UTC FinishedAt: 2026-08-13 13:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 13:31:18 +0000 UTC FinishedAt: 2026-08-13 13:33:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 13:31:18 +0000 UTC FinishedAt: 2026-08-13 13:33:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9ef31c6e-510f-4aa0-9759-f2342b6e3597,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-build-action-2052579342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 13:33:15 +0000 UTC FinishedAt: 2026-08-13 16:34:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 13:33:15 +0000 UTC FinishedAt: 2026-08-13 16:34:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*7a12787f-4404-4b4e-8dfe-c66f29f87459,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9ef31c6e-510f-4aa0-9759-f2342b6e3597,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-build-action-4206350497/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-build-action-2052579342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 13:33:15 +0000 UTC FinishedAt: 2026-08-13 13:33:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 13:33:15 +0000 UTC FinishedAt: 2026-08-13 13:33:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-convert-artifact-927409791/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 13:33:15 +0000 UTC FinishedAt: 2026-08-13 13:33:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 13:33:15 +0000 UTC FinishedAt: 2026-08-13 13:33:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 13:33:15 +0000 UTC FinishedAt: 2026-08-13 13:33:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 13:33:25 +0000 UTC FinishedAt: 2026-08-13 16:34:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45swr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_check"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6f033615ef8fb2374daa7e50a8ff68616bc850d2","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ff8e39ea-0f98-4e61-8298-627bf62f2974","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 13:33:25 +0000 UTC FinishedAt: 2026-08-13 16:34:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7a12787f-4404-4b4e-8dfe-c66f29f87459,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9ef31c6e-510f-4aa0-9759-f2342b6e3597,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-build-action-4206350497/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-build-action-2052579342/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow45swr/series-workflow45swr-convert-artifact-927409791/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}