Name: series-workflowhfdjb Phase: Succeeded StartedAt: 2026-07-12 22:25:57 +0000 UTC FinishedAt: 2026-07-12 23:52:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[0] Phase: Succeeded StartedAt: 2026-07-12 22:25:57 +0000 UTC FinishedAt: 2026-07-12 22:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[0].run-triage Phase: Succeeded StartedAt: 2026-07-12 22:25:57 +0000 UTC FinishedAt: 2026-07-12 22:42:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "44696aa3a489d2baf58efa61b37833f100072bee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "44696aa3a489d2baf58efa61b37833f100072bee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "d5542982-2f2d-4e39-8c92-c2e54ddbe7b0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_request_rgpower_table", "mwifiex_dnld_rgpower_table" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGJlaGF2aW9yIGZvciByZWd1bGF0b3J5IHBvd2VyIHRhYmxlcyBpbiB0aGUgbXdpZmlleCBkcml2ZXIsIHN3aXRjaGluZyBmcm9tIHJlcXVlc3RfZmlybXdhcmUgdG8gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QgdG8gYXZvaWQgdGhlIHVzZXItbW9kZSBoZWxwZXIgZmFsbGJhY2suIEl0IGFsc28gcHJvcGFnYXRlcyB0aGUgZXhhY3QgZXJyb3IgY29kZSBpbnN0ZWFkIG9mIHJldHVybmluZyAtRUlPLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJmMTBjNmIzYTVhYmM1MzVjNDE5MWZhYTM4ODYzZjAwMTY4ODhlZGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAyMjo0MTo1OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNcbmluZGV4IGE2NTUwNTQ4ZDNiNDM1Li45NDYwZDUzNTJiMjM0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXG5AQCAtMTk2LDYgJiM0MzsxOTYsNyBAQCBzdGF0aWMgaW50IG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4gXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuIFx0Y2hhciByZ3Bvd2VyX3RhYmxlX25hbWVbMzBdO1xuIFx0Y2hhciBjb3VudHJ5X2NvZGVbM107XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdHN0cnNjcHkoY291bnRyeV9jb2RlLCBkb21haW5faW5mby1cdTAwM2Vjb3VudHJ5X2NvZGUsIHNpemVvZihjb3VudHJ5X2NvZGUpKTtcbiBcbkBAIC0yMTQsMTYgJiM0MzsyMTUsMTcgQEAgc3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuIFx0XHRhZGFwdGVyLVx1MDAzZXJncG93ZXJfZGF0YSA9IE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAoKHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2YWRhcHRlci1cdTAwM2VyZ3Bvd2VyX2RhdGEsIHJncG93ZXJfdGFibGVfbmFtZSxcbi1cdFx0XHQgICAgICBhZGFwdGVyLVx1MDAzZWRldikpKSB7XG4mIzQzO1x0cmV0ID0gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QoXHUwMDI2YWRhcHRlci1cdTAwM2VyZ3Bvd2VyX2RhdGEsIHJncG93ZXJfdGFibGVfbmFtZSxcbiYjNDM7XHRcdFx0XHQgICAgICBhZGFwdGVyLVx1MDAzZWRldik7XG4mIzQzO1xuJiM0MztcdGlmIChyZXQpIHtcbiBcdFx0bXdpZmlleF9kYmcoXG4gXHRcdFx0YWRhcHRlciwgSU5GTyxcbi1cdFx0XHRcJiMzNDtpbmZvOiAlczogZmFpbGVkIHRvIHJlcXVlc3QgcmVndWxhdG9yeSBwb3dlciB0YWJsZVxcblwmIzM0Oyxcbi1cdFx0XHRfX2Z1bmNfXyk7XG4tXHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0XHRcJiMzNDtpbmZvOiAlczogZmFpbGVkIHRvIHJlcXVlc3QgcmVndWxhdG9yeSBwb3dlciB0YWJsZTogJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdF9fZnVuY19fLCByZXQpO1xuIFx0fVxuIFxuLVx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGJlaGF2aW9yIGZvciByZWd1bGF0b3J5IHBvd2VyIHRhYmxlcyBpbiB0aGUgbXdpZmlleCBkcml2ZXIsIHN3aXRjaGluZyBmcm9tIHJlcXVlc3RfZmlybXdhcmUgdG8gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QgdG8gYXZvaWQgdGhlIHVzZXItbW9kZSBoZWxwZXIgZmFsbGJhY2suIEl0IGFsc28gcHJvcGFnYXRlcyB0aGUgZXhhY3QgZXJyb3IgY29kZSBpbnN0ZWFkIG9mIHJldHVybmluZyAtRUlPLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmYxMGM2YjNhNWFiYzUzNWM0MTkxZmFhMzg4NjNmMDAxNjg4OGVkYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDEyIDIyOjQxOjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jCmluZGV4IGE2NTUwNTQ4ZDNiNDM1Li45NDYwZDUzNTJiMjM0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYwpAQCAtMTk2LDYgJiM0MzsxOTYsNyBAQCBzdGF0aWMgaW50IG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpCiAJc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtJmd0O2FkYXB0ZXI7CiAJY2hhciByZ3Bvd2VyX3RhYmxlX25hbWVbMzBdOwogCWNoYXIgY291bnRyeV9jb2RlWzNdOwomIzQzOwlpbnQgcmV0OwogCiAJc3Ryc2NweShjb3VudHJ5X2NvZGUsIGRvbWFpbl9pbmZvLSZndDtjb3VudHJ5X2NvZGUsIHNpemVvZihjb3VudHJ5X2NvZGUpKTsKIApAQCAtMjE0LDE2ICYjNDM7MjE1LDE3IEBAIHN0YXRpYyBpbnQgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdikKIAkJYWRhcHRlci0mZ3Q7cmdwb3dlcl9kYXRhID0gTlVMTDsKIAl9CiAKLQlpZiAoKHJlcXVlc3RfZmlybXdhcmUoJmFtcDthZGFwdGVyLSZndDtyZ3Bvd2VyX2RhdGEsIHJncG93ZXJfdGFibGVfbmFtZSwKLQkJCSAgICAgIGFkYXB0ZXItJmd0O2RldikpKSB7CiYjNDM7CXJldCA9IHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0KCZhbXA7YWRhcHRlci0mZ3Q7cmdwb3dlcl9kYXRhLCByZ3Bvd2VyX3RhYmxlX25hbWUsCiYjNDM7CQkJCSAgICAgIGFkYXB0ZXItJmd0O2Rldik7CiYjNDM7CiYjNDM7CWlmIChyZXQpIHsKIAkJbXdpZmlleF9kYmcoCiAJCQlhZGFwdGVyLCBJTkZPLAotCQkJJiMzNDtpbmZvOiAlczogZmFpbGVkIHRvIHJlcXVlc3QgcmVndWxhdG9yeSBwb3dlciB0YWJsZVxuJiMzNDssCi0JCQlfX2Z1bmNfXyk7Ci0JCXJldHVybiAtRUlPOwomIzQzOwkJCSYjMzQ7aW5mbzogJXM6IGZhaWxlZCB0byByZXF1ZXN0IHJlZ3VsYXRvcnkgcG93ZXIgdGFibGU6ICVkXG4mIzM0OywKJiM0MzsJCQlfX2Z1bmNfXywgcmV0KTsKIAl9CiAKLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoOiBQb3RlbnRpYWwgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jYCBmaWxlLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlOiB0aGV5JiMzOTt2ZSBzd2FwcGVkIG91dCBgcmVxdWVzdF9maXJtd2FyZWAgZm9yIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAgYW5kIG5vdyByZXR1cm4gdGhlIGVycm9yIGNvZGUgZnJvbSB0aGUgZGlyZWN0IGNhbGwgaW5zdGVhZCBvZiBgLUVJT2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgZnV6emFibGU/JiMzNDsgVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4KCkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSXTigJlzIGluIGEgd2lyZWxlc3MgZHJpdmVyIOKAkyBNYXJ2ZWxsJiMzOTtzIG13aWZpZXguIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCB0aGVzZSB0eXBlcyBvZiBoYXJkd2FyZSBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBPZnRlbiwgdGhleSByZXF1aXJlIHRoZSBhY3R1YWwgaGFyZHdhcmUgb3IgYSB2ZXJ5IHNwZWNpZmljIGVtdWxhdG9yLiBJIGhhdmUgdG8gdGhpbmssIGNvdWxkIEkgZXZlbiB0cmlnZ2VyIHRoaXMgaW4gYSBWTT8gSG1tLCBpcyB0aGVyZSBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGUgbXdpZmlleCBkcml2ZXI/IExhc3QgdGltZSBJIGxvb2tlZCwgYG1hYzgwMjExX2h3c2ltYCBpc24mIzM5O3QgZ29pbmcgdG8gY3V0IGl0LCB0aGF0JiMzOTtzIGp1c3QgZm9yIHRoZSBtYWM4MDIxMSBsYXllciwgdGhpcyBpcyBhIGZ1bGxtYWMgZHJpdmVyLCBJSVJDLgoKVGhlbiwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgSSBjb3VsZCBwb3RlbnRpYWxseSBlbXVsYXRlIHRoaXMgaW4gYSBmdXp6aW5nIHNldHVwLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBtd2lmaWV4IGNhbiBiZSBwcm9iZWQgdmlhIGEgc3RhbmRhcmQgaW50ZXJmYWNlLiBNYXliZSB2aWEgVVNCLCBTRElPLCBvciBldmVuIFBDSWU/IElmIGl0JiMzOTtzIFVTQiwgdGhlbiB0aGVyZSYjMzk7cyBob3BlLiBTeXprYWxsZXIgbWlnaHQgYmUgYWJsZSB0byBlbXVsYXRlIGEgVVNCIGRldmljZSB1c2luZyBgZHVtbXlfaGNkYCBhbmQgYHJhdy1nYWRnZXRgLiBTbywgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhIFVTQiBkcml2ZXIgZm9yIG13aWZpZXguIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcCBpbiB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXguKnVzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9Mzc9Y29uZmlnIE1XSUZJRVhfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzo0NjpcdCAgbXdpZmlleF91c2IuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19NV0lGSUVYX1BDSUUpICYjNDM7PSBtd2lmaWV4X3BjaWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ0Om13aWZpZXhfdXNiLXkgJiM0Mzs9IHVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01XSUZJRVhfVVNCKSAmIzQzOz0gbXdpZmlleF91c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQ2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oPTkwPWVudW0gS0VZX1RZUEVfSUQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oOjEyMzplbnVtIG13aWZpZXhfdXNiX2VwIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyNC1cdE1XSUZJRVhfVVNCX0VQX0NNRF9FVkVOVCA9IDEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyMy0gKiBEbyBub3QgY2hlY2sgZm9yIGRhdGFfcmVjZWl2ZWQgZm9yIFVTQiwgYXMgZGF0YV9yZWNlaXZlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI1LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzpzdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG13aWZpZXhfdXNiX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTYtXHQvKiA4NzY2ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtd2lmaWV4X3VzYl90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDE6c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQ2OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4NzpcdFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXHUwMDNlZXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk2LVx0XHRcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTk3Olx0XHRcdCAqIG13aWZpZXhfdXNiX3JlY3ZfY29tcGxldGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXHRcdFx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzMi1cdGlmIChjYXJkLVx1MDAzZXJ4X2NtZF9lcCA9PSBjb250ZXh0LVx1MDAzZWVwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjMzOlx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGNvbnRleHQsIHNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjM1LVx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2YWRhcHRlci1cdTAwM2VyeF9wZW5kaW5nKSBcdTAwM2M9IEhJR0hfUlhfUEVORElORykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjIzNjpcdFx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGNvbnRleHQsIHNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNy1cdFx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl90eF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI4NTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNS1cdFx0XHRcdCB1c2JfcmN2aW50cGlwZShjYXJkLVx1MDAzZXVkZXYsIGN0eC1cdTAwM2VlcCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzE2Olx0XHRcdFx0IGN0eC1cdTAwM2Vza2ItXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzE3LVx0XHRcdFx0ICh2b2lkICopY3R4LCBjYXJkLVx1MDAzZXJ4X2NtZF9pbnRlcnZhbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMC1cdFx0XHRcdCAgdXNiX3JjdmJ1bGtwaXBlKGNhcmQtXHUwMDNldWRldiwgY3R4LVx1MDAzZWVwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozMjE6XHRcdFx0XHQgIGN0eC1cdTAwM2Vza2ItXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzIyLVx0XHRcdFx0ICAodm9pZCAqKWN0eCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyOS1cdGlmICh1c2Jfc3VibWl0X3VyYihjdHgtXHUwMDNldXJiLCBHRlBfQVRPTUlDKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjMzMDpcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFwmIzM0O3VzYl9zdWJtaXRfdXJiIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzMxLVx0XHRkZXZfa2ZyZWVfc2tiX2FueShjdHgtXHUwMDNlc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9mcmVlKHN0cnVjdCB1c2JfY2FyZF9yZWMgKmNhcmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM4NTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4Ni1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjUxNTpcdHJldCA9IG13aWZpZXhfYWRkX2NhcmQoY2FyZCwgXHUwMDI2Y2FyZC1cdTAwM2Vmd19kb25lLCBcdTAwMjZ1c2Jfb3BzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUxNi1cdFx0XHQgICAgICAgTVdJRklFWF9VU0IsIFx1MDAyNmNhcmQtXHUwMDNldWRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzItICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NTMzOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTk5LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYwMDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MjUtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1XSUZJRVhfUlhfREFUQV9VUkI7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYyNjpcdFx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNy1cdFx0XHRcdFx0XHQgIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYzMS1cdFx0aWYgKGNhcmQtXHUwMDNlcnhfY21kLnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MzI6XHRcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcdTAwMjZjYXJkLVx1MDAzZXJ4X2NtZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MzMtXHRcdFx0XHRcdFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2NDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjY5OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2NvcmVkdW1wKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtd2lmaWV4X3VzYl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc5Olx0Lm5hbWUgPSBcJiMzNDttd2lmaWV4X3VzYlwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODA6XHQucHJvYmUgPSBtd2lmaWV4X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODE6XHQuZGlzY29ubmVjdCA9IG13aWZpZXhfdXNiX2Rpc2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgyOlx0LmlkX3RhYmxlID0gbXdpZmlleF91c2JfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgzOlx0LnN1c3BlbmQgPSBtd2lmaWV4X3VzYl9zdXNwZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NDpcdC5yZXN1bWUgPSBtd2lmaWV4X3VzYl9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg1LVx0LnNvZnRfdW5iaW5kID0gMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02ODYtXHQuZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NzpcdFx0LmNvcmVkdW1wID0gbXdpZmlleF91c2JfY29yZWR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NzE0PXN0YXRpYyBpbnQgbXdpZmlleF9yZWFkX2RhdGFfc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCAqcGJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjczNDpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9wb3J0X3Jlc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTczNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3NzY6c3RhdGljIGJvb2wgbXdpZmlleF91c2JfaXNfcG9ydF9yZWFkeShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3ODk6c3RhdGljIGlubGluZSB1OCBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03OTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODAxOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODAyLVx0XHRcdFx0XHQgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LCB1OCBlcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODE4LVx0XHRcdFx0IHVzYl9zbmRpbnRwaXBlKGNhcmQtXHUwMDNldWRldiwgZXApLCBza2Jfc2VuZC1cdTAwM2VkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgxOTpcdFx0XHRcdCBza2Jfc2VuZC1cdTAwM2VsZW4sIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyMC1cdFx0XHRcdCAodm9pZCAqKWNvbnRleHQsIGNhcmQtXHUwMDNldHhfY21kX2ludGVydmFsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODI0LVx0XHRcdFx0ICBza2Jfc2VuZC1cdTAwM2VkYXRhLCBza2Jfc2VuZC1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODI1Olx0XHRcdFx0ICBtd2lmaWV4X3VzYl90eF9jb21wbGV0ZSwgKHZvaWQgKiljb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgzNy1cdFx0cG9ydC1cdTAwM2VibG9ja19zdGF0dXMgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgzODpcdFx0YWRhcHRlci1cdTAwM2VkYXRhX3NlbnQgPSBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODM5LVx0XHRyZXQgPSAtRU5PU1I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTg2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4NjI6c3RhdGljIGludCBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODYzLVx0XHRcdFx0XHQgICBzdHJ1Y3QgdXNiX3R4X2RhdGFfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtOTQ2LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjk0NzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2FnZ3JfdHhfZGF0YShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy05NDgtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Mi1cdGlmIChmX3NlbmRfYWdncl9idWYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDYzOlx0XHRyZXQgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFx1MDAyNnNrYl9zZW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDY0LVx0XHRpZiAoIXJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjUtXHRcdFx0Y29udGV4dCA9IFx1MDAyNnBvcnQtXHUwMDNldHhfZGF0YV9saXN0W3BvcnQtXHUwMDNldHhfZGF0YV9peCYjNDM7JiM0MztdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwNjY6XHRcdFx0cmV0ID0gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjctXHRcdFx0XHRcdFx0XHQgICAgIGNvbnRleHQsIHNrYl9zZW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA3OS1cdFx0XHRcdGFkYXB0ZXItXHUwMDNlZGF0YV9zZW50ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDgwOlx0XHRcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA4MS1cdFx0XHRcdC8qIG5vIGF2YWlsYWJsZSB1cmIsIHBvc3Rjb3B5IHBhY2tldCovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTUtXHRcdGNvbnRleHQgPSBcdTAwMjZwb3J0LVx1MDAzZXR4X2RhdGFfbGlzdFtwb3J0LVx1MDAzZXR4X2RhdGFfaXgmIzQzOyYjNDM7XTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDk2Olx0XHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTctXHRcdFx0XHRcdFx0ICAgICAgY29udGV4dCwgc2tiX3NlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExMTk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfdHhfYWdncl90bW8oc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTEyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMjktXHRzcGluX2xvY2tfYmgoXHUwMDI2cG9ydC1cdTAwM2V0eF9hZ2dyX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExMzA6XHRlcnIgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFx1MDAyNnNrYl9zZW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTMxLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTQwLVx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfc2VudCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE0MTpcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0Mi1cdFx0ZXJyID0gLTE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDktXHR1cmJfY254dCA9IFx1MDAyNnBvcnQtXHUwMDNldHhfZGF0YV9saXN0W3BvcnQtXHUwMDNldHhfZGF0YV9peCYjNDM7JiM0MztdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNTA6XHRlcnIgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgcG9ydC1cdTAwM2V0eF9kYXRhX2VwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNTEtXHRcdFx0XHRcdCAgICAgdXJiX2NueHQsIHNrYl9zZW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1OS0vKiBUaGlzIGZ1bmN0aW9uIHdyaXRlIGEgY29tbWFuZC9kYXRhIHBhY2tldCB0byBjYXJkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNjA6c3RhdGljIGludCBtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE2MS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTkyLVx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfc2VudCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE5MzpcdFx0XHRcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE5NC1cdFx0XHRcdFx0cmV0dXJuIC1FQlVTWTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIwMi1cdFx0aWYgKCFwb3J0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIwMzpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUiwgXCYjMzQ7V3JvbmcgdXNiIHR4IGRhdGEgcG9ydFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIwNC1cdFx0XHRyZXR1cm4gLTE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMDgtXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnBvcnQtXHUwMDNldHhfYWdncl9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjA5Olx0XHRcdHJldCA9ICBtd2lmaWV4X3VzYl9hZ2dyX3R4X2RhdGEoYWRhcHRlciwgZXAsIHNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjEwLVx0XHRcdFx0XHRcdFx0dHhfcGFyYW0sIHBvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyMTg6XHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLCBjb250ZXh0LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMTktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIyMTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3R4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjIyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1Ny1cdFx0dGltZXJfc2V0dXAoXHUwMDI2cG9ydC1cdTAwM2V0eF9hZ2dyLnRpbWVyX2NueHQuaG9sZF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjU4Olx0XHRcdCAgICBtd2lmaWV4X3VzYl90eF9hZ2dyX3RtbywgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1OS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjY0OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcnhfaW5pdChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyODA6XHRpZiAobXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcdTAwMjZjYXJkLVx1MDAzZXJ4X2NtZCwgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODEtXHRcdHJldHVybiAtMTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI4OS1cdFx0XHRyZXR1cm4gLTE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI5MDpcdFx0aWYgKG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXHUwMDI2Y2FyZC1cdTAwM2VyeF9kYXRhX2xpc3RbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI5MS1cdFx0XHRcdFx0ICAgICAgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTI5OT1zdGF0aWMgaW50IG13aWZpZXhfcmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTMzODpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9jbGVhbnVwX3R4X2FnZ3Ioc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTM1OT1zdGF0aWMgdm9pZCBtd2lmaWV4X3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTM2MzpcdG13aWZpZXhfdXNiX2ZyZWUoY2FyZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTM2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzY1Olx0bXdpZmlleF91c2JfY2xlYW51cF90eF9hZ2dyKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEzNzA9c3RhdGljIGludCBtd2lmaWV4X3Byb2dfZndfd19oZWxwZXIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTA3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfZG5sZF9mdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MDgtXHRcdFx0c3RydWN0IG13aWZpZXhfZndfaW1hZ2UgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjM6XHRyZXQgPSBtd2lmaWV4X3VzYl9yeF9pbml0KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjQtXHRpZiAoIXJldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTI1Olx0XHRyZXQgPSBtd2lmaWV4X3VzYl90eF9pbml0KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1MzA9c3RhdGljIHZvaWQgbXdpZmlleF9zdWJtaXRfcnhfdXJiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTM2LVx0ICAgICghYXRvbWljX3JlYWQoXHUwMDI2Y2FyZC1cdTAwM2VyeF9jbWRfdXJiX3BlbmRpbmcpKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTM3Olx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MzgtXHRcdFx0XHRcdCAgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1NDM6c3RhdGljIGludCBtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTQ0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1NTI9c3RhdGljIGludCBtd2lmaWV4X3BtX3dha2V1cF9jYXJkKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU2MzpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9zdWJtaXRfcmVtX3J4X3VyYnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU3Mi1cdFx0Y3R4ID0gXHUwMDI2Y2FyZC1cdTAwM2VyeF9kYXRhX2xpc3RbaV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU3MzpcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihjdHgsIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU3NC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTU3OT1td2lmaWV4X3BtX3dha2V1cF9jYXJkX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU4NDpzdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU4NS1cdC5yZWdpc3Rlcl9kZXYgPVx0XHRtd2lmaWV4X3JlZ2lzdGVyX2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5MC1cdC8qIFVTQiBzcGVjaWZpYyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTE6XHQuZG5sZF9mdyA9XHRcdG13aWZpZXhfdXNiX2RubGRfZncsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MjpcdC5jbWRyc3BfY29tcGxldGUgPVx0bXdpZmlleF91c2JfY21kX2V2ZW50X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTM6XHQuZXZlbnRfY29tcGxldGUgPVx0bXdpZmlleF91c2JfY21kX2V2ZW50X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTQ6XHQuaG9zdF90b19jYXJkID1cdFx0bXdpZmlleF91c2JfaG9zdF90b19jYXJkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTU6XHQuc3VibWl0X3JlbV9yeF91cmJzID1cdG13aWZpZXhfdXNiX3N1Ym1pdF9yZW1fcnhfdXJicyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk2Olx0Lm11bHRpX3BvcnRfcmVzeW5jID1cdG13aWZpZXhfdXNiX3BvcnRfcmVzeW5jLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTc6XHQuaXNfcG9ydF9yZWFkeSA9XHRtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTgtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE2MDA6bW9kdWxlX3VzYl9kcml2ZXIobXdpZmlleF91c2JfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNjAxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjM1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNd2lmaWV4IFVTQiBEcml2ZXIgZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgbXdpZmlleGAgaGFzIGEgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBtd2lmaWV4X3VzYmAuIFRoaXMgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBhdmVudWVzIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgdXNpbmcgcmF3LWdhZGdldCBvciBkdW1teV9oY2QuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGlzIHBhdGNoIHRoYXQgdGFyZ2V0cyBgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVgIHdpdGhpbiBgc3RhX2lvY3RsLmNgLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBmdW5jdGlvbi4gVGhlcmVmb3JlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgZXZlcnl3aGVyZSBgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVgIGlzIGNhbGxlZC4gRmluZGluZyB0aGUgY2FsbCBzaXRlcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBpcyB0cmlnZ2VyZWQgYW5kIGNvbnN0cnVjdGluZyBlZmZlY3RpdmUgZnV6emluZyBpbnB1dHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjI6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0xODM9c3RhdGljIHZvaWQgbXdpZmlleF9kbmxkX2R0X3R4cHdyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzoxOTM6c3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTIzMT1zdGF0aWMgaW50IG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTIzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzoyMzU6XHRyZXQgPSBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yMzYtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjExCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBjb2RlOgoKKipBbmFseXppbmcgdGhlIENhbGwgU2l0ZXMgb2YgYG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlYCBpcyB1c2VkIHdpdGhpbiB0aGUgTWFydmVsbCBXaS1GaSBkcml2ZXIsIG9yIHdoZXJldmVyIGl0IGxpdmVzLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gaWRlbnRpZnkgYWxsIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGViYXNlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBUaGF0JiMzOTtzIHRoZSBmdW5kYW1lbnRhbCBmaXJzdCBzdGVwLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0cyBvZiBpdHMgaW52b2NhdGlvbiBpcyBjcnVjaWFsIHRvIGRldGVybWluZSBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB0b29scyDigJMgbGlrZWx5IGEgY29kZSBzZWFyY2ggdXRpbGl0eSBvciBhIGRlYnVnZ2VyIOKAkyB0byByYXBpZGx5IGxvY2F0ZSBhbGwgY2FsbCBzaXRlcy4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW5mZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQmIzM5O3MgZXhlY3V0ZWQsIHdoYXQgYXJndW1lbnRzIGFyZSBwYXNzZWQgKGlmIGFueSksIGFuZCB3aGF0IHRoZSBvdmVyYWxsIGZsb3cgb2YgY29udHJvbCBsb29rcyBsaWtlLiBUaGlzIGluaXRpYWwgYW5hbHlzaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBpdHMgYmFzaWMgcm9sZSBhbmQgc2lnbmlmaWNhbmNlIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgd2lsbCB0YWtlIGEgbW9tZW50LCBidXQgaXQmIzM5O3MgZXNzZW50aWFsIGZvciBnZXR0aW5nIGEgZ29vZCBncmFzcCBvbiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjI6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0xOTM9c3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MjMxOnN0YXRpYyBpbnQgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yMzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNDM9dm9pZCBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yNDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjI0NTpcdGlmIChtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShwcml2KSA9PSAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTI0Ni1cdFx0cmV0dXJuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzk3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIHRoZSBDYWxsIFNpdGVzIG9mIGBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGVgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGVgIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIFdoZXJlIGlzIGl0IGJlaW5nICpjYWxsZWQqPyBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzeXN0ZW1hdGljYWxseSB0cmFjZSBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRhdGEgZmxvdyBhbmQgb3BlcmF0aW9uYWwgY29udGV4dC4gTGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfZG5sZF90eHB3cl90YWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NjY2PXN0YXRpYyB2b2lkIG13aWZpZXhfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNjk1LVx0XHRtd2lmaWV4X3NlbmRfZG9tYWluX2luZm9fY21kX2Z3KHdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjY5NjpcdFx0bXdpZmlleF9kbmxkX3R4cHdyX3RhYmxlKHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNjk3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTU4MD1pbnQgbXdpZmlleF9kbmxkX2R0X2NmZ2RhdGEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU4MS1cdFx0XHQgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlLCBjb25zdCBjaGFyICpwcmVmaXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTgyOnZvaWQgbXdpZmlleF9kbmxkX3R4cHdyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTgzLWludCBtd2lmaWV4X3NlbmRfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9MjMxPXN0YXRpYyBpbnQgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMjQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjI0Mzp2b2lkIG13aWZpZXhfZG5sZF90eHB3cl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTI1MT1zdGF0aWMgaW50IG13aWZpZXhfcHJvY2Vzc19jb3VudHJ5X2llKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTMwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzozMTA6XHRtd2lmaWV4X2RubGRfdHhwd3JfdGFibGUocHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzExLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfY21kLmM9OTc0PXZvaWQgbXdpZmlleF91YXBfc2V0X2NoYW5uZWwoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2NtZC5jLTEwMzEtXHRcdG13aWZpZXhfc2VuZF9kb21haW5faW5mb19jbWRfZncocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZXdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfY21kLmM6MTAzMjpcdFx0bXdpZmlleF9kbmxkX3R4cHdyX3RhYmxlKHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9jbWQuYy0xMDMzLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgwNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYHJlcXVlc3RfZmlybXdhcmVgIENoYW5nZSBpbiB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgdGhlIGNhbGxzIHRvIGBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGVgLiBJIHNlZSBpdCYjMzk7cyByZWFjaGVkIGZyb20gYG13aWZpZXhfcmVnX25vdGlmaWVyYCDigJMgdGhhdCYjMzk7cyB0aGUgY2ZnODAyMTEgcmVndWxhdG9yeSBub3RpZmllciwgaW50ZXJlc3Rpbmcg4oCTIGBtd2lmaWV4X3Byb2Nlc3NfY291bnRyeV9pZWAgd2hpY2ggZGVhbHMgd2l0aCB0aGUgY291bnRyeSBJRSBmcm9tIHRoZSBBUCwgYW5kIGFsc28gYG13aWZpZXhfdWFwX3NldF9jaGFubmVsYC4gVGhlc2UgY2FsbCBwYXRocyBzZWVtIGRlZmluaXRlbHkgcmVhY2hhYmxlLgoKVGhlIGtleSBjaGFuZ2UgaXMgdGhpcyBzd2FwIGZyb20gYHJlcXVlc3RfZmlybXdhcmVgIHRvIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAuIFRoaXMgaXMgZGVmaW5pdGVseSBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIEF2b2lkaW5nIHRoZSB1c2VyLW1vZGUgaGVscGVyIGZhbGxiYWNrIHdpdGggYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YCBjYW4gbWFrZSBhIGJpZyBkaWZmZXJlbmNlLCBwYXJ0aWN1bGFybHkgaW4gc2NlbmFyaW9zIHdoZXJlIHRoZSBoZWxwZXImIzM5O3MgYmxvY2tpbmcgYmVoYXZpb3IgY291bGQgYmUgcHJvYmxlbWF0aWMuIEFsc28sIGl0JiMzOTtzIG5vdyBwcm9wYWdhdGluZyB0aGUgYWN0dWFsIGVycm9yIGNvZGUgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBgLUVJT2AuIFRoaXMgaXMgYSBiZXR0ZXIgcHJhY3RpY2UuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgd29ydGggZnV6emluZz8gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIGFuZCB0aGF0IHRoZSBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgVVNCIGVtdWxhdGlvbiwgYWJzb2x1dGVseSwgaXQmIzM5O3Mgd29ydGggaXQuIFdlIHNob3VsZCBmb2N1cyBzcGVjaWZpY2FsbHkgb24gYG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlYCBzaW5jZSBpdCYjMzk7cyBtb3N0IGxpa2VseSB0byB0cmlnZ2VyIHRoZSBjaGFuZ2VkIGNvZGUgcGF0aC4KCkJlZm9yZSBkaXZpbmcgaW4sIEkgbmVlZCB0byB2ZXJpZnkgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBXZSYjMzk7bGwgbmVlZCBgQ09ORklHX01XSUZJRVhgIGFuZCBgQ09ORklHX01XSUZJRVhfVVNCYCBmb3Igc3VyZS4gQW5kLCBhcyB0aGlzIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCB3ZSBsaWtlbHkgYWxzbyBuZWVkIGBDT05GSUdfQ0ZHODAyMTFgIGFuZCBgQ09ORklHX01BQzgwMjExYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtLiBXZSBuZWVkIHRvIGJlIHN1cmUgd2UgYXJlIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk0NQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1XSUZJRVggRHJpdmVyIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGF0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMsIHNvIEkmIzM5O2xsIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIGluIHRoZSBzeXN0ZW0sIGp1c3QgdG8gYmUgdGhvcm91Z2guCgpSaWdodCwgYE1XSUZJRVhgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYCwgd2hpY2ggaXMgc3RhbmRhcmQuIEZvciB0aGlzIGFuYWx5c2lzLCBJIGNhbiBqdXN0IGZvY3VzIG9uIGxpc3RpbmcgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBUaGlzIHBhdGNoIGNoYW5nZXMgYHJlcXVlc3RfZmlybXdhcmVgIHRvIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcy4gSXMgdGhpcyBhIHNpbXBsZSBidWcgZml4LCBvciBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBJdCYjMzk7cyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0IGJ5cGFzc2VzIHRoZSB1c2VyLW1vZGUgaGVscGVyLiBUaGF0JiMzOTtzIHNpZ25pZmljYW50LiBUaGF0IGNvdWxkIGJlIGNydWNpYWwgaW4gc2NlbmFyaW9zIHdoZXJlIGNhbGxpbmcgdGhlIGhlbHBlciBpcyBwcm9ibGVtYXRpYywgb3IgcGVyaGFwcyB0byBhY2NlbGVyYXRlIGVycm9yIGhhbmRsaW5nLiBJIGFsc28gc2VlIHRoYXQgdGhlIHJldHVybiB2YWx1ZSBjaGFuZ2VzIGZyb20gYC1FSU9gIHRvIGByZXRgLCB3aGljaCBpcyBhbm90aGVyIHBvdGVudGlhbCBwb2ludCBvZiBjb25jZXJuIGZvciBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4KClNvLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gSSBuZWVkIHRvIGZvY3VzIG9uLiBPa2F5LCB5ZXAsIHRoYXQmIzM5O3MgdGhlIHByaW1hcnkgb25lLCBhbmQgcG90ZW50aWFsbHkgYG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlYCBhcyB3ZWxsLgoKSSYjMzk7bGwgcXVpY2tseSBjaGVjayBgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVgIGluIGBzdGFfaW9jdGwuY2AgdG8gc2VlIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTA6XHRcdH1cbiAxOTE6XHR9XG4gMTkyOlx0XG4gMTkzOlx0c3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuIDE5NDpcdHtcbiAxOTU6XHRcdHN0cnVjdCBtd2lmaWV4XzgwMl8xMWRfZG9tYWluX3JlZyAqZG9tYWluX2luZm8gPSBcdTAwMjZwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZG9tYWluX3JlZztcbiAxOTY6XHRcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG4gMTk3Olx0XHRjaGFyIHJncG93ZXJfdGFibGVfbmFtZVszMF07XG4gMTk4Olx0XHRjaGFyIGNvdW50cnlfY29kZVszXTtcbiAxOTk6XHRcdGludCByZXQ7XG4gMjAwOlx0XG4gMjAxOlx0XHRzdHJzY3B5KGNvdW50cnlfY29kZSwgZG9tYWluX2luZm8tXHUwMDNlY291bnRyeV9jb2RlLCBzaXplb2YoY291bnRyeV9jb2RlKSk7XG4gMjAyOlx0XG4gMjAzOlx0XHQvKiBXb3JsZCByZWd1bGF0b3J5IGRvbWFpbiBcJiMzNDswMFwmIzM0OyBoYXMgV1cgYXMgY291bnRyeSBjb2RlICovXG4gMjA0Olx0XHRpZiAoc3RybmNtcChjb3VudHJ5X2NvZGUsIFwmIzM0OzAwXCYjMzQ7LCAyKSA9PSAwKVxuIDIwNTpcdFx0XHRzdHJzY3B5KGNvdW50cnlfY29kZSwgXCYjMzQ7V1dcJiMzNDssIHNpemVvZihjb3VudHJ5X2NvZGUpKTtcbiAyMDY6XHRcbiAyMDc6XHRcdHNucHJpbnRmKHJncG93ZXJfdGFibGVfbmFtZSwgc2l6ZW9mKHJncG93ZXJfdGFibGVfbmFtZSksXG4gMjA4Olx0XHRcdCBcJiMzNDtueHAvcmdwb3dlcl8lcy5iaW5cJiMzNDssIGNvdW50cnlfY29kZSk7XG4gMjA5Olx0XG4gMjEwOlx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBJTkZPLCBcJiMzNDtpbmZvOiAlczogcmVxdWVzdGluZyByZWd1bGF0b3J5IHBvd2VyIHRhYmxlICVzXFxuXCYjMzQ7LFxuIDIxMTpcdFx0XHQgICAgX19mdW5jX18sIHJncG93ZXJfdGFibGVfbmFtZSk7XG4gMjEyOlx0XG4gMjEzOlx0XHRpZiAoYWRhcHRlci1cdTAwM2VyZ3Bvd2VyX2RhdGEpIHtcbiAyMTQ6XHRcdFx0cmVsZWFzZV9maXJtd2FyZShhZGFwdGVyLVx1MDAzZXJncG93ZXJfZGF0YSk7XG4gMjE1Olx0XHRcdGFkYXB0ZXItXHUwMDNlcmdwb3dlcl9kYXRhID0gTlVMTDtcbiAyMTY6XHRcdH1cbiAyMTc6XHRcbiAyMTg6XHRcdHJldCA9IHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0KFx1MDAyNmFkYXB0ZXItXHUwMDNlcmdwb3dlcl9kYXRhLCByZ3Bvd2VyX3RhYmxlX25hbWUsXG4gMjE5Olx0XHRcdFx0XHQgICAgICBhZGFwdGVyLVx1MDAzZWRldik7XG4gMjIwOlx0XG4gMjIxOlx0XHRpZiAocmV0KSB7XG4gMjIyOlx0XHRcdG13aWZpZXhfZGJnKFxuIDIyMzpcdFx0XHRcdGFkYXB0ZXIsIElORk8sXG4gMjI0Olx0XHRcdFx0XCYjMzQ7aW5mbzogJXM6IGZhaWxlZCB0byByZXF1ZXN0IHJlZ3VsYXRvcnkgcG93ZXIgdGFibGU6ICVkXFxuXCYjMzQ7LFxuIDIyNTpcdFx0XHRcdF9fZnVuY19fLCByZXQpO1xuIDIyNjpcdFx0fVxuIDIyNzpcdFxuIDIyODpcdFx0cmV0dXJuIHJldDtcbiAyMjk6XHR9XG4gMjMwOlx0XG4gMjMxOlx0c3RhdGljIGludCBtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuIDIzMjpcdHtcbiAyMzM6XHRcdGludCByZXQ7XG4gMjM0Olx0XG4gMjM1Olx0XHRyZXQgPSBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShwcml2KTtcbiAyMzY6XHRcdGlmIChyZXQpXG4gMjM3Olx0XHRcdHJldHVybiByZXQ7XG4gMjM4Olx0XG4gMjM5Olx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX3JncG93ZXJfdGFibGUocHJpdiwgcHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZXJncG93ZXJfZGF0YS1cdTAwM2VkYXRhLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM3NgoJCQkJCQkJb3V0cHV0OiAxNDAKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXcgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBzb2xpZC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIG13aWZpZXggZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGhvdyB0aGUgZmlybXdhcmUgbG9hZHMgcmVndWxhdG9yeSBwb3dlciB0YWJsZXMuIEl0IHNlZW1zIHRvIGltcHJvdmUgdGhhdCBwcm9jZXNzIGJ5IGxldmVyYWdpbmcgYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YCwgd2hpY2ggYnlwYXNzZXMgdGhlIHVzZXItbW9kZSBoZWxwZXIuIFRoYXTigJlzIGEgZ29vZCBtb3ZlOyB3ZSBhbGwga25vdyB0aG9zZSB1c2VyLW1vZGUgaGVscGVycyBjYW4gYmUgYSByZWFsIGJvdHRsZW5lY2sgYW5kIGEgcG90ZW50aWFsIHNvdXJjZSBvZiBoYW5ncyBhbmQgdGltZW91dHMuIFRoZSBmYWN0IHRoYXQgdGhlIGVycm9yIGNvZGUgcHJvcGFnYXRpb24gaGFzIGFsc28gYmVlbiBtb2RpZmllZCBmdXJ0aGVyIHN1cHBvcnRzIHRoYXQgaXQgaXMgZnVuY3Rpb25hbCwgYW5kIG5vdCBqdXN0IGEgY29zbWV0aWMgY2hhbmdlLgoKR2l2ZW4gdGhpcywgSSYjMzk7bSBkZWZpbml0ZWx5IGdvaW5nIHRvIGZsYWcgdGhpcyBhcyAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IC0gaXQmIzM5O3MgcmlwZSBmb3IgZXhwbG9yYXRpb24uIE15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVgIGFuZCBgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGVgIGZ1bmN0aW9uczsgdGhvc2UgYXJlIGNsZWFybHkgd2hlcmUgdGhlIGNvcmUgY2hhbmdlcyBhcmUgaGFwcGVuaW5nLiBJJiMzOTtsbCBhbHNvIG5lZWQgdG8gZW5hYmxlIHRoZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbnMgdG8gZW5zdXJlIGEgZ29vZCB0ZXN0IGNvdmVyYWdlLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIHN0YW5kYXJkIHN1c3BlY3RzIGFyZSBzZXQgY29ycmVjdGx5LiBJJiMzOTtkIGV4cGVjdCB0aGF0IGBGV19MT0FERVJgIGlzIGVuYWJsZWQsIGFuZCBgQ0ZHODAyMTFgIGlzIHVzdWFsbHkgZW5hYmxlZCB0b28sIHNvIEkmIzM5O2xsIGNoZWNrIHRob3NlIGp1c3QgdG8gYmUgdGhvcm91Z2guCgpBbHJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlJiMzNDssCiAgICAmIzM0O213aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGZpcm13YXJlIGxvYWRpbmcgYmVoYXZpb3IgZm9yIHJlZ3VsYXRvcnkgcG93ZXIgdGFibGVzIGluIHRoZSBtd2lmaWV4IGRyaXZlciwgc3dpdGNoaW5nIGZyb20gcmVxdWVzdF9maXJtd2FyZSB0byByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdCB0byBhdm9pZCB0aGUgdXNlci1tb2RlIGhlbHBlciBmYWxsYmFjay4gSXQgYWxzbyBwcm9wYWdhdGVzIHRoZSBleGFjdCBlcnJvciBjb2RlIGluc3RlYWQgb2YgcmV0dXJuaW5nIC1FSU8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgZmlybXdhcmUgbG9hZGluZyBiZWhhdmlvciBmb3IgcmVndWxhdG9yeSBwb3dlciB0YWJsZXMgaW4gdGhlIG13aWZpZXggZHJpdmVyLCBzd2l0Y2hpbmcgZnJvbSByZXF1ZXN0X2Zpcm13YXJlIHRvIHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0IHRvIGF2b2lkIHRoZSB1c2VyLW1vZGUgaGVscGVyIGZhbGxiYWNrLiBJdCBhbHNvIHByb3BhZ2F0ZXMgdGhlIGV4YWN0IGVycm9yIGNvZGUgaW5zdGVhZCBvZiByZXR1cm5pbmcgLUVJTy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MTo1OS43NDQ1ODE4NThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDQ2MDc5MjI5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlXCIsXG4gICAgXCJtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGZpcm13YXJlIGxvYWRpbmcgYmVoYXZpb3IgZm9yIHJlZ3VsYXRvcnkgcG93ZXIgdGFibGVzIGluIHRoZSBtd2lmaWV4IGRyaXZlciwgc3dpdGNoaW5nIGZyb20gcmVxdWVzdF9maXJtd2FyZSB0byByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdCB0byBhdm9pZCB0aGUgdXNlci1tb2RlIGhlbHBlciBmYWxsYmFjay4gSXQgYWxzbyBwcm9wYWdhdGVzIHRoZSBleGFjdCBlcnJvciBjb2RlIGluc3RlYWQgb2YgcmV0dXJuaW5nIC1FSU8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MTo1OS43NDQ1ODgwODhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMTU3MTc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJmMTBjNmIzYTVhYmM1MzVjNDE5MWZhYTM4ODYzZjAwMTY4ODhlZGFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMjI6NDE6NTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXFxuaW5kZXggYTY1NTA1NDhkM2I0MzUuLjk0NjBkNTM1MmIyMzRlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xcbkBAIC0xOTYsNiArMTk2LDcgQEAgc3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbiBcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4gXFx0Y2hhciByZ3Bvd2VyX3RhYmxlX25hbWVbMzBdO1xcbiBcXHRjaGFyIGNvdW50cnlfY29kZVszXTtcXG4rXFx0aW50IHJldDtcXG4gXFxuIFxcdHN0cnNjcHkoY291bnRyeV9jb2RlLCBkb21haW5faW5mby1cXHUwMDNlY291bnRyeV9jb2RlLCBzaXplb2YoY291bnRyeV9jb2RlKSk7XFxuIFxcbkBAIC0yMTQsMTYgKzIxNSwxNyBAQCBzdGF0aWMgaW50IG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuIFxcdFxcdGFkYXB0ZXItXFx1MDAzZXJncG93ZXJfZGF0YSA9IE5VTEw7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICgocmVxdWVzdF9maXJtd2FyZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcmdwb3dlcl9kYXRhLCByZ3Bvd2VyX3RhYmxlX25hbWUsXFxuLVxcdFxcdFxcdCAgICAgIGFkYXB0ZXItXFx1MDAzZWRldikpKSB7XFxuK1xcdHJldCA9IHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0KFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyZ3Bvd2VyX2RhdGEsIHJncG93ZXJfdGFibGVfbmFtZSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgYWRhcHRlci1cXHUwMDNlZGV2KTtcXG4rXFxuK1xcdGlmIChyZXQpIHtcXG4gXFx0XFx0bXdpZmlleF9kYmcoXFxuIFxcdFxcdFxcdGFkYXB0ZXIsIElORk8sXFxuLVxcdFxcdFxcdFxcXCJpbmZvOiAlczogZmFpbGVkIHRvIHJlcXVlc3QgcmVndWxhdG9yeSBwb3dlciB0YWJsZVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0X19mdW5jX18pO1xcbi1cXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0XFx0XFxcImluZm86ICVzOiBmYWlsZWQgdG8gcmVxdWVzdCByZWd1bGF0b3J5IHBvd2VyIHRhYmxlOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0X19mdW5jX18sIHJldCk7XFxuIFxcdH1cXG4gXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjAwLjI3NjkxMTYzNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5Mjg0NTM3MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZVwiLFxuICAgIFwibXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGJlaGF2aW9yIGZvciByZWd1bGF0b3J5IHBvd2VyIHRhYmxlcyBpbiB0aGUgbXdpZmlleCBkcml2ZXIsIHN3aXRjaGluZyBmcm9tIHJlcXVlc3RfZmlybXdhcmUgdG8gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QgdG8gYXZvaWQgdGhlIHVzZXItbW9kZSBoZWxwZXIgZmFsbGJhY2suIEl0IGFsc28gcHJvcGFnYXRlcyB0aGUgZXhhY3QgZXJyb3IgY29kZSBpbnN0ZWFkIG9mIHJldHVybmluZyAtRUlPLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiZjEwYzZiM2E1YWJjNTM1YzQxOTFmYWEzODg2M2YwMDE2ODg4ZWRhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMjI6NDE6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNcbmluZGV4IGE2NTUwNTQ4ZDNiNDM1Li45NDYwZDUzNTJiMjM0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXG5AQCAtMTk2LDYgKzE5Niw3IEBAIHN0YXRpYyBpbnQgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbiBcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG4gXHRjaGFyIHJncG93ZXJfdGFibGVfbmFtZVszMF07XG4gXHRjaGFyIGNvdW50cnlfY29kZVszXTtcbitcdGludCByZXQ7XG4gXG4gXHRzdHJzY3B5KGNvdW50cnlfY29kZSwgZG9tYWluX2luZm8tXHUwMDNlY291bnRyeV9jb2RlLCBzaXplb2YoY291bnRyeV9jb2RlKSk7XG4gXG5AQCAtMjE0LDE2ICsyMTUsMTcgQEAgc3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuIFx0XHRhZGFwdGVyLVx1MDAzZXJncG93ZXJfZGF0YSA9IE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAoKHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2YWRhcHRlci1cdTAwM2VyZ3Bvd2VyX2RhdGEsIHJncG93ZXJfdGFibGVfbmFtZSxcbi1cdFx0XHQgICAgICBhZGFwdGVyLVx1MDAzZWRldikpKSB7XG4rXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdChcdTAwMjZhZGFwdGVyLVx1MDAzZXJncG93ZXJfZGF0YSwgcmdwb3dlcl90YWJsZV9uYW1lLFxuK1x0XHRcdFx0ICAgICAgYWRhcHRlci1cdTAwM2VkZXYpO1xuK1xuK1x0aWYgKHJldCkge1xuIFx0XHRtd2lmaWV4X2RiZyhcbiBcdFx0XHRhZGFwdGVyLCBJTkZPLFxuLVx0XHRcdFwiaW5mbzogJXM6IGZhaWxlZCB0byByZXF1ZXN0IHJlZ3VsYXRvcnkgcG93ZXIgdGFibGVcXG5cIixcbi1cdFx0XHRfX2Z1bmNfXyk7XG4tXHRcdHJldHVybiAtRUlPO1xuK1x0XHRcdFwiaW5mbzogJXM6IGZhaWxlZCB0byByZXF1ZXN0IHJlZ3VsYXRvcnkgcG93ZXIgdGFibGU6ICVkXFxuXCIsXG4rXHRcdFx0X19mdW5jX18sIHJldCk7XG4gXHR9XG4gXG4tXHRyZXR1cm4gMDtcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjAwLjI3NjkxMzYyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MjYzMDE5MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2g6IFBvdGVudGlhbCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jYCBmaWxlLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2U6IHRoZXkndmUgc3dhcHBlZCBvdXQgYHJlcXVlc3RfZmlybXdhcmVgIGZvciBgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3RgIGFuZCBub3cgcmV0dXJuIHRoZSBlcnJvciBjb2RlIGZyb20gdGhlIGRpcmVjdCBjYWxsIGluc3RlYWQgb2YgYC1FSU9gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJJcyB0aGlzIGZ1enphYmxlP1wiIFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi5cblxuRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJdOKAmXMgaW4gYSB3aXJlbGVzcyBkcml2ZXIg4oCTIE1hcnZlbGwncyBtd2lmaWV4LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgdHlwZXMgb2YgaGFyZHdhcmUgZHJpdmVycyBhcmUgbm90b3Jpb3VzbHkgZGlmZmljdWx0IHRvIGZ1enogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gT2Z0ZW4sIHRoZXkgcmVxdWlyZSB0aGUgYWN0dWFsIGhhcmR3YXJlIG9yIGEgdmVyeSBzcGVjaWZpYyBlbXVsYXRvci4gSSBoYXZlIHRvIHRoaW5rLCBjb3VsZCBJIGV2ZW4gdHJpZ2dlciB0aGlzIGluIGEgVk0/IEhtbSwgaXMgdGhlcmUgYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhlIG13aWZpZXggZHJpdmVyPyBMYXN0IHRpbWUgSSBsb29rZWQsIGBtYWM4MDIxMV9od3NpbWAgaXNuJ3QgZ29pbmcgdG8gY3V0IGl0LCB0aGF0J3MganVzdCBmb3IgdGhlIG1hYzgwMjExIGxheWVyLCB0aGlzIGlzIGEgZnVsbG1hYyBkcml2ZXIsIElJUkMuXG5cblRoZW4sIEknbSB0aGlua2luZyBhYm91dCBob3cgSSBjb3VsZCBwb3RlbnRpYWxseSBlbXVsYXRlIHRoaXMgaW4gYSBmdXp6aW5nIHNldHVwLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBtd2lmaWV4IGNhbiBiZSBwcm9iZWQgdmlhIGEgc3RhbmRhcmQgaW50ZXJmYWNlLiBNYXliZSB2aWEgVVNCLCBTRElPLCBvciBldmVuIFBDSWU/IElmIGl0J3MgVVNCLCB0aGVuIHRoZXJlJ3MgaG9wZS4gU3l6a2FsbGVyIG1pZ2h0IGJlIGFibGUgdG8gZW11bGF0ZSBhIFVTQiBkZXZpY2UgdXNpbmcgYGR1bW15X2hjZGAgYW5kIGByYXctZ2FkZ2V0YC4gU28sIGxldCdzIHNlZSBpZiB0aGVyZSdzIGEgVVNCIGRyaXZlciBmb3IgbXdpZmlleC4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAgaW4gdGhpcyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjA1LjcwMzIxNzYzOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk4NDQ4MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXguKnVzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ2OlxcdCAgbXdpZmlleF91c2IuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX01XSUZJRVhfUENJRSkgKz0gbXdpZmlleF9wY2llLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGUtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ0Om13aWZpZXhfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01XSUZJRVhfVVNCKSArPSBtd2lmaWV4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2Z3Lmg9OTA9ZW51bSBLRVlfVFlQRV9JRCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaC0xMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2Z3Lmg6MTIzOmVudW0gbXdpZmlleF91c2JfZXAge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyNC1cXHRNV0lGSUVYX1VTQl9FUF9DTURfRVZFTlQgPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTIzLSAqIERvIG5vdCBjaGVjayBmb3IgZGF0YV9yZWNlaXZlZCBmb3IgVVNCLCBhcyBkYXRhX3JlY2VpdmVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNS0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTM6c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyB1c2Jfb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG13aWZpZXhfdXNiX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE2LVxcdC8qIDg3NjYgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Mzk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG13aWZpZXhfdXNiX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQxOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDY6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxODc6XFx0XFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXFx1MDAzZWVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5Ni1cXHRcXHRcXHQgKiB1cmIgZm9yIGNtZF9lcCB3aWxsIGJlIHJlLXN1Ym1pdHRlZCBpbiBjYWxsYmFja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxOTc6XFx0XFx0XFx0ICogbXdpZmlleF91c2JfcmVjdl9jb21wbGV0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXFx0XFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjMyLVxcdGlmIChjYXJkLVxcdTAwM2VyeF9jbWRfZXAgPT0gY29udGV4dC1cXHUwMDNlZXApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjMzOlxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY29udGV4dCwgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzUtXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyeF9wZW5kaW5nKSBcXHUwMDNjPSBISUdIX1JYX1BFTkRJTkcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjM2OlxcdFxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY29udGV4dCwgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNy1cXHRcXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjQ1OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI4NTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNS1cXHRcXHRcXHRcXHQgdXNiX3JjdmludHBpcGUoY2FyZC1cXHUwMDNldWRldiwgY3R4LVxcdTAwM2VlcCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjMxNjpcXHRcXHRcXHRcXHQgY3R4LVxcdTAwM2Vza2ItXFx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMTctXFx0XFx0XFx0XFx0ICh2b2lkICopY3R4LCBjYXJkLVxcdTAwM2VyeF9jbWRfaW50ZXJ2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMC1cXHRcXHRcXHRcXHQgIHVzYl9yY3ZidWxrcGlwZShjYXJkLVxcdTAwM2V1ZGV2LCBjdHgtXFx1MDAzZWVwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzIxOlxcdFxcdFxcdFxcdCAgY3R4LVxcdTAwM2Vza2ItXFx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMjItXFx0XFx0XFx0XFx0ICAodm9pZCAqKWN0eCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzI5LVxcdGlmICh1c2Jfc3VibWl0X3VyYihjdHgtXFx1MDAzZXVyYiwgR0ZQX0FUT01JQykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzMwOlxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcXFwidXNiX3N1Ym1pdF91cmIgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzMxLVxcdFxcdGRldl9rZnJlZV9za2JfYW55KGN0eC1cXHUwMDNlc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9mcmVlKHN0cnVjdCB1c2JfY2FyZF9yZWMgKmNhcmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozODU6c3RhdGljIGludCBtd2lmaWV4X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg2LVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NTE1OlxcdHJldCA9IG13aWZpZXhfYWRkX2NhcmQoY2FyZCwgXFx1MDAyNmNhcmQtXFx1MDAzZWZ3X2RvbmUsIFxcdTAwMjZ1c2Jfb3BzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MTYtXFx0XFx0XFx0ICAgICAgIE1XSUZJRVhfVVNCLCBcXHUwMDI2Y2FyZC1cXHUwMDNldWRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzItICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjUzMzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTU5OS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjAwOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVdJRklFWF9SWF9EQVRBX1VSQjsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MjY6XFx0XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MjctXFx0XFx0XFx0XFx0XFx0XFx0ICBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYzMS1cXHRcXHRpZiAoY2FyZC1cXHUwMDNlcnhfY21kLnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjMyOlxcdFxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXFx1MDAyNmNhcmQtXFx1MDAzZXJ4X2NtZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjQ1OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Njk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfY29yZWR1bXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtd2lmaWV4X3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY3OTpcXHQubmFtZSA9IFxcXCJtd2lmaWV4X3VzYlxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4MDpcXHQucHJvYmUgPSBtd2lmaWV4X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgxOlxcdC5kaXNjb25uZWN0ID0gbXdpZmlleF91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgyOlxcdC5pZF90YWJsZSA9IG13aWZpZXhfdXNiX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODM6XFx0LnN1c3BlbmQgPSBtd2lmaWV4X3VzYl9zdXNwZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODQ6XFx0LnJlc3VtZSA9IG13aWZpZXhfdXNiX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg1LVxcdC5zb2Z0X3VuYmluZCA9IDEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY4Ni1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODc6XFx0XFx0LmNvcmVkdW1wID0gbXdpZmlleF91c2JfY29yZWR1bXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY4OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTcxND1zdGF0aWMgaW50IG13aWZpZXhfcmVhZF9kYXRhX3N5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggKnBidWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3MzQ6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcG9ydF9yZXN5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjc3NjpzdGF0aWMgYm9vbCBtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3ODk6c3RhdGljIGlubGluZSB1OCBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgwMTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDItXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdXNiX3R4X2RhdGFfcG9ydCAqcG9ydCwgdTggZXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODE4LVxcdFxcdFxcdFxcdCB1c2Jfc25kaW50cGlwZShjYXJkLVxcdTAwM2V1ZGV2LCBlcCksIHNrYl9zZW5kLVxcdTAwM2VkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4MTk6XFx0XFx0XFx0XFx0IHNrYl9zZW5kLVxcdTAwM2VsZW4sIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjAtXFx0XFx0XFx0XFx0ICh2b2lkICopY29udGV4dCwgY2FyZC1cXHUwMDNldHhfY21kX2ludGVydmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjQtXFx0XFx0XFx0XFx0ICBza2Jfc2VuZC1cXHUwMDNlZGF0YSwgc2tiX3NlbmQtXFx1MDAzZWxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODI1OlxcdFxcdFxcdFxcdCAgbXdpZmlleF91c2JfdHhfY29tcGxldGUsICh2b2lkICopY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MzctXFx0XFx0cG9ydC1cXHUwMDNlYmxvY2tfc3RhdHVzID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODM4OlxcdFxcdGFkYXB0ZXItXFx1MDAzZWRhdGFfc2VudCA9IG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODM5LVxcdFxcdHJldCA9IC1FTk9TUjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjg2MjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2Ioc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODYzLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTk0Ni0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6OTQ3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfYWdncl90eF9kYXRhKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy05NDgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Mi1cXHRpZiAoZl9zZW5kX2FnZ3JfYnVmKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwNjM6XFx0XFx0cmV0ID0gbXdpZmlleF91c2JfcHJlcGFyZV90eF9hZ2dyX3NrYihhZGFwdGVyLCBwb3J0LCBcXHUwMDI2c2tiX3NlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDY0LVxcdFxcdGlmICghcmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjUtXFx0XFx0XFx0Y29udGV4dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA2NjpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBjb250ZXh0LCBza2Jfc2VuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA3OS1cXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3NlbnQgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDgwOlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA4MS1cXHRcXHRcXHRcXHQvKiBubyBhdmFpbGFibGUgdXJiLCBwb3N0Y29weSBwYWNrZXQqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTUtXFx0XFx0Y29udGV4dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA5NjpcXHRcXHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDk3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGNvbnRleHQsIHNrYl9zZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTE5OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3R4X2FnZ3JfdG1vKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTI5LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cG9ydC1cXHUwMDNldHhfYWdncl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTEzMDpcXHRlcnIgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFxcdTAwMjZza2Jfc2VuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMzEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDAtXFx0XFx0YWRhcHRlci1cXHUwMDNlZGF0YV9zZW50ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE0MTpcXHRcXHRcXHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDItXFx0XFx0ZXJyID0gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0OS1cXHR1cmJfY254dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE1MDpcXHRlcnIgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgcG9ydC1cXHUwMDNldHhfZGF0YV9lcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1MS1cXHRcXHRcXHRcXHRcXHQgICAgIHVyYl9jbnh0LCBza2Jfc2VuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1OS0vKiBUaGlzIGZ1bmN0aW9uIHdyaXRlIGEgY29tbWFuZC9kYXRhIHBhY2tldCB0byBjYXJkLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTYwOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfaG9zdF90b19jYXJkKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTYxLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExOTItXFx0XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlZGF0YV9zZW50ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE5MzpcXHRcXHRcXHRcXHRcXHRcXHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExOTQtXFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjAyLVxcdFxcdGlmICghcG9ydCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjAzOlxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcXFwiV3JvbmcgdXNiIHR4IGRhdGEgcG9ydFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMDQtXFx0XFx0XFx0cmV0dXJuIC0xO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMDgtXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9hZ2dyX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjA5OlxcdFxcdFxcdHJldCA9ICBtd2lmaWV4X3VzYl9hZ2dyX3R4X2RhdGEoYWRhcHRlciwgZXAsIHNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHR0eF9wYXJhbSwgcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIxODpcXHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLCBjb250ZXh0LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjE5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIyMTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3R4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1Ny1cXHRcXHR0aW1lcl9zZXR1cChcXHUwMDI2cG9ydC1cXHUwMDNldHhfYWdnci50aW1lcl9jbnh0LmhvbGRfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyNTg6XFx0XFx0XFx0ICAgIG13aWZpZXhfdXNiX3R4X2FnZ3JfdG1vLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI2NDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3J4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI4MDpcXHRpZiAobXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfY21kLCBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODEtXFx0XFx0cmV0dXJuIC0xO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODktXFx0XFx0XFx0cmV0dXJuIC0xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjkwOlxcdFxcdGlmIChtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9kYXRhX2xpc3RbaV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyOTEtXFx0XFx0XFx0XFx0XFx0ICAgICAgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMjk5PXN0YXRpYyBpbnQgbXdpZmlleF9yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzM4OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2NsZWFudXBfdHhfYWdncihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMzU5PXN0YXRpYyB2b2lkIG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzYzOlxcdG13aWZpZXhfdXNiX2ZyZWUoY2FyZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEzNjU6XFx0bXdpZmlleF91c2JfY2xlYW51cF90eF9hZ2dyKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzY2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEzNzA9c3RhdGljIGludCBtd2lmaWV4X3Byb2dfZndfd19oZWxwZXIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTA3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfZG5sZF9mdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA4LVxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2Z3X2ltYWdlICpmdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTIzOlxcdHJldCA9IG13aWZpZXhfdXNiX3J4X2luaXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjQtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjU6XFx0XFx0cmV0ID0gbXdpZmlleF91c2JfdHhfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTMwPXN0YXRpYyB2b2lkIG13aWZpZXhfc3VibWl0X3J4X3VyYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTM2LVxcdCAgICAoIWF0b21pY19yZWFkKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9jbWRfdXJiX3BlbmRpbmcpKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUzNzpcXHRcXHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9jbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MzgtXFx0XFx0XFx0XFx0XFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU0MzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTQ0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1NTI9c3RhdGljIGludCBtd2lmaWV4X3BtX3dha2V1cF9jYXJkKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU2MzpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9zdWJtaXRfcmVtX3J4X3VyYnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU3Mi1cXHRcXHRjdHggPSBcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfZGF0YV9saXN0W2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTczOlxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY3R4LCBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTc0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTc5PW13aWZpZXhfcG1fd2FrZXVwX2NhcmRfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTg0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgdXNiX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU4NS1cXHQucmVnaXN0ZXJfZGV2ID1cXHRcXHRtd2lmaWV4X3JlZ2lzdGVyX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTkwLVxcdC8qIFVTQiBzcGVjaWZpYyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTkxOlxcdC5kbmxkX2Z3ID1cXHRcXHRtd2lmaWV4X3VzYl9kbmxkX2Z3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTkyOlxcdC5jbWRyc3BfY29tcGxldGUgPVxcdG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MzpcXHQuZXZlbnRfY29tcGxldGUgPVxcdG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NDpcXHQuaG9zdF90b19jYXJkID1cXHRcXHRtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTU6XFx0LnN1Ym1pdF9yZW1fcnhfdXJicyA9XFx0bXdpZmlleF91c2Jfc3VibWl0X3JlbV9yeF91cmJzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk2OlxcdC5tdWx0aV9wb3J0X3Jlc3luYyA9XFx0bXdpZmlleF91c2JfcG9ydF9yZXN5bmMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTc6XFx0LmlzX3BvcnRfcmVhZHkgPVxcdG13aWZpZXhfdXNiX2lzX3BvcnRfcmVhZHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTgtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTYwMDptb2R1bGVfdXNiX2RyaXZlcihtd2lmaWV4X3VzYl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNjAxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MjowNy4wMDE2NzEzNDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU3ODk5ODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTXdpZmlleCBVU0IgRHJpdmVyIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBtd2lmaWV4YCBoYXMgYSBVU0IgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYG13aWZpZXhfdXNiYC4gVGhpcyBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGF2ZW51ZXMgZm9yIGZ1enppbmcsIHNwZWNpZmljYWxseSB1c2luZyByYXctZ2FkZ2V0IG9yIGR1bW15X2hjZC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoaXMgcGF0Y2ggdGhhdCB0YXJnZXRzIGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgd2l0aGluIGBzdGFfaW9jdGwuY2AuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCBldmVyeXdoZXJlIGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgaXMgY2FsbGVkLiBGaW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IGlzIHRyaWdnZXJlZCBhbmQgY29uc3RydWN0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIGlucHV0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MzUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MjoxMC45NTk1NzMxNzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0NTAwMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9MTgzPXN0YXRpYyB2b2lkIG13aWZpZXhfZG5sZF9kdF90eHB3cl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MTkzOnN0YXRpYyBpbnQgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yMzE9c3RhdGljIGludCBtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTIzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MjM1OlxcdHJldCA9IG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlKHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yMzYtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjI6NDI6MTEuMDE5MDMzNDY5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMDYzMzg3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIENhbGwgU2l0ZXMgb2YgYG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGVgIGlzIHVzZWQgd2l0aGluIHRoZSBNYXJ2ZWxsIFdpLUZpIGRyaXZlciwgb3Igd2hlcmV2ZXIgaXQgbGl2ZXMuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBpZGVudGlmeSBhbGwgdGhlIHBsYWNlcyBpbiB0aGUgY29kZWJhc2Ugd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIFRoYXQncyB0aGUgZnVuZGFtZW50YWwgZmlyc3Qgc3RlcC4gVW5kZXJzdGFuZGluZyB0aGUgY29udGV4dHMgb2YgaXRzIGludm9jYXRpb24gaXMgY3J1Y2lhbCB0byBkZXRlcm1pbmUgaXRzIHB1cnBvc2UgYW5kIGltcGFjdC4gSSdsbCBuZWVkIHRvIHVzZSBteSB0b29scyDigJMgbGlrZWx5IGEgY29kZSBzZWFyY2ggdXRpbGl0eSBvciBhIGRlYnVnZ2VyIOKAkyB0byByYXBpZGx5IGxvY2F0ZSBhbGwgY2FsbCBzaXRlcy4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW5mZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQncyBleGVjdXRlZCwgd2hhdCBhcmd1bWVudHMgYXJlIHBhc3NlZCAoaWYgYW55KSwgYW5kIHdoYXQgdGhlIG92ZXJhbGwgZmxvdyBvZiBjb250cm9sIGxvb2tzIGxpa2UuIFRoaXMgaW5pdGlhbCBhbmFseXNpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBiYXNpYyByb2xlIGFuZCBzaWduaWZpY2FuY2Ugd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgdGFrZSBhIG1vbWVudCwgYnV0IGl0J3MgZXNzZW50aWFsIGZvciBnZXR0aW5nIGEgZ29vZCBncmFzcCBvbiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjExLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjI6NDI6MTQuNDQ5NjY5MDUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzY5NzgxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0xOTM9c3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTIzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MjMxOnN0YXRpYyBpbnQgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMjMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNDM9dm9pZCBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMjQ0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MjQ1OlxcdGlmIChtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShwcml2KSA9PSAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yNDYtXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MjoxNC41ODMzNzEwMjVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjM1NjE0NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZTpcblxuKipBbmFseXppbmcgdGhlIENhbGwgU2l0ZXMgb2YgYG13aWZpZXhfZG5sZF90eHB3cl90YWJsZWAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgbXdpZmlleF9kbmxkX3R4cHdyX3RhYmxlYCBmdW5jdGlvbiBpcyBiZWluZyB1c2VkLiBXaGVyZSBpcyBpdCBiZWluZyAqY2FsbGVkKj8gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHN5c3RlbWF0aWNhbGx5IHRyYWNlIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGF0YSBmbG93IGFuZCBvcGVyYXRpb25hbCBjb250ZXh0LiBMZXQncyBzdGFydCBkaWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTc5NywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjE3LjIxODk4Nzc1NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA4MDI0OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9kbmxkX3R4cHdyX3RhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NjY2PXN0YXRpYyB2b2lkIG13aWZpZXhfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy02OTUtXFx0XFx0bXdpZmlleF9zZW5kX2RvbWFpbl9pbmZvX2NtZF9mdyh3aXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6Njk2OlxcdFxcdG13aWZpZXhfZG5sZF90eHB3cl90YWJsZShwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy02OTctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTgwPWludCBtd2lmaWV4X2RubGRfZHRfY2ZnZGF0YShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU4MS1cXHRcXHRcXHQgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlLCBjb25zdCBjaGFyICpwcmVmaXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU4Mjp2b2lkIG13aWZpZXhfZG5sZF90eHB3cl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1ODMtaW50IG13aWZpZXhfc2VuZF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTIzMT1zdGF0aWMgaW50IG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMjQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzoyNDM6dm9pZCBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNTE9c3RhdGljIGludCBtd2lmaWV4X3Byb2Nlc3NfY291bnRyeV9pZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTMwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MzEwOlxcdG13aWZpZXhfZG5sZF90eHB3cl90YWJsZShwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9jbWQuYz05NzQ9dm9pZCBtd2lmaWV4X3VhcF9zZXRfY2hhbm5lbChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9jbWQuYy0xMDMxLVxcdFxcdG13aWZpZXhfc2VuZF9kb21haW5faW5mb19jbWRfZncocHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNld2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfY21kLmM6MTAzMjpcXHRcXHRtd2lmaWV4X2RubGRfdHhwd3JfdGFibGUocHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9jbWQuYy0xMDMzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjI6NDI6MTcuMjc5ODA3OTIzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NDgzOTU3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBDaGFuZ2UgaW4gdGhlIE1hcnZlbGwgV2ktRmkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgY2FsbHMgdG8gYG13aWZpZXhfZG5sZF90eHB3cl90YWJsZWAuIEkgc2VlIGl0J3MgcmVhY2hlZCBmcm9tIGBtd2lmaWV4X3JlZ19ub3RpZmllcmAg4oCTIHRoYXQncyB0aGUgY2ZnODAyMTEgcmVndWxhdG9yeSBub3RpZmllciwgaW50ZXJlc3Rpbmcg4oCTIGBtd2lmaWV4X3Byb2Nlc3NfY291bnRyeV9pZWAgd2hpY2ggZGVhbHMgd2l0aCB0aGUgY291bnRyeSBJRSBmcm9tIHRoZSBBUCwgYW5kIGFsc28gYG13aWZpZXhfdWFwX3NldF9jaGFubmVsYC4gVGhlc2UgY2FsbCBwYXRocyBzZWVtIGRlZmluaXRlbHkgcmVhY2hhYmxlLlxuXG5UaGUga2V5IGNoYW5nZSBpcyB0aGlzIHN3YXAgZnJvbSBgcmVxdWVzdF9maXJtd2FyZWAgdG8gYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgKmZ1bmN0aW9uYWwqIGNoYW5nZS4gQXZvaWRpbmcgdGhlIHVzZXItbW9kZSBoZWxwZXIgZmFsbGJhY2sgd2l0aCBgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3RgIGNhbiBtYWtlIGEgYmlnIGRpZmZlcmVuY2UsIHBhcnRpY3VsYXJseSBpbiBzY2VuYXJpb3Mgd2hlcmUgdGhlIGhlbHBlcidzIGJsb2NraW5nIGJlaGF2aW9yIGNvdWxkIGJlIHByb2JsZW1hdGljLiBBbHNvLCBpdCdzIG5vdyBwcm9wYWdhdGluZyB0aGUgYWN0dWFsIGVycm9yIGNvZGUgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBgLUVJT2AuIFRoaXMgaXMgYSBiZXR0ZXIgcHJhY3RpY2UuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBHaXZlbiB0aGF0IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciBhbmQgdGhhdCB0aGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBlbXVsYXRpb24sIGFic29sdXRlbHksIGl0J3Mgd29ydGggaXQuIFdlIHNob3VsZCBmb2N1cyBzcGVjaWZpY2FsbHkgb24gYG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlYCBzaW5jZSBpdCdzIG1vc3QgbGlrZWx5IHRvIHRyaWdnZXIgdGhlIGNoYW5nZWQgY29kZSBwYXRoLlxuXG5CZWZvcmUgZGl2aW5nIGluLCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gV2UnbGwgbmVlZCBgQ09ORklHX01XSUZJRVhgIGFuZCBgQ09ORklHX01XSUZJRVhfVVNCYCBmb3Igc3VyZS4gQW5kLCBhcyB0aGlzIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCB3ZSBsaWtlbHkgYWxzbyBuZWVkIGBDT05GSUdfQ0ZHODAyMTFgIGFuZCBgQ09ORklHX01BQzgwMjExYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtLiBXZSBuZWVkIHRvIGJlIHN1cmUgd2UgYXJlIG5vdCBtaXNzaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgwNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MjoyMi43MjgyMDYyNzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjQyNjY0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MjoyMy4wMDA2Mzc0OTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0NjIyNjMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1XSUZJRVggRHJpdmVyIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhhdCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMsIHNvIEknbGwgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3MgaW4gdGhlIHN5c3RlbSwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuUmlnaHQsIGBNV0lGSUVYYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAsIHdoaWNoIGlzIHN0YW5kYXJkLiBGb3IgdGhpcyBhbmFseXNpcywgSSBjYW4ganVzdCBmb2N1cyBvbiBsaXN0aW5nIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYC5cblxuTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBUaGlzIHBhdGNoIGNoYW5nZXMgYHJlcXVlc3RfZmlybXdhcmVgIHRvIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcy4gSXMgdGhpcyBhIHNpbXBsZSBidWcgZml4LCBvciBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBJdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaXQgYnlwYXNzZXMgdGhlIHVzZXItbW9kZSBoZWxwZXIuIFRoYXQncyBzaWduaWZpY2FudC4gVGhhdCBjb3VsZCBiZSBjcnVjaWFsIGluIHNjZW5hcmlvcyB3aGVyZSBjYWxsaW5nIHRoZSBoZWxwZXIgaXMgcHJvYmxlbWF0aWMsIG9yIHBlcmhhcHMgdG8gYWNjZWxlcmF0ZSBlcnJvciBoYW5kbGluZy4gSSBhbHNvIHNlZSB0aGF0IHRoZSByZXR1cm4gdmFsdWUgY2hhbmdlcyBmcm9tIGAtRUlPYCB0byBgcmV0YCwgd2hpY2ggaXMgYW5vdGhlciBwb3RlbnRpYWwgcG9pbnQgb2YgY29uY2VybiBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBpZiBub3QgaGFuZGxlZCBjb3JyZWN0bHkuXG5cblNvLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTGV0J3MgbWFrZSBzdXJlIHRoYXQgYG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlYCBpcyB0aGUgb25seSBmdW5jdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24uIE9rYXksIHllcCwgdGhhdCdzIHRoZSBwcmltYXJ5IG9uZSwgYW5kIHBvdGVudGlhbGx5IGBtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZWAgYXMgd2VsbC5cblxuSSdsbCBxdWlja2x5IGNoZWNrIGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgaW4gYHN0YV9pb2N0bC5jYCB0byBzZWUgaG93IGl0J3MgYmVpbmcgdXNlZC4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTQ1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjI4LjU0Njg2NjYyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHRcXHR9XFxuIDE5MTpcXHR9XFxuIDE5MjpcXHRcXG4gMTkzOlxcdHN0YXRpYyBpbnQgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG4gMTk0OlxcdHtcXG4gMTk1OlxcdFxcdHN0cnVjdCBtd2lmaWV4XzgwMl8xMWRfZG9tYWluX3JlZyAqZG9tYWluX2luZm8gPSBcXHUwMDI2cHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlZG9tYWluX3JlZztcXG4gMTk2OlxcdFxcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbiAxOTc6XFx0XFx0Y2hhciByZ3Bvd2VyX3RhYmxlX25hbWVbMzBdO1xcbiAxOTg6XFx0XFx0Y2hhciBjb3VudHJ5X2NvZGVbM107XFxuIDE5OTpcXHRcXHRpbnQgcmV0O1xcbiAyMDA6XFx0XFxuIDIwMTpcXHRcXHRzdHJzY3B5KGNvdW50cnlfY29kZSwgZG9tYWluX2luZm8tXFx1MDAzZWNvdW50cnlfY29kZSwgc2l6ZW9mKGNvdW50cnlfY29kZSkpO1xcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQvKiBXb3JsZCByZWd1bGF0b3J5IGRvbWFpbiBcXFwiMDBcXFwiIGhhcyBXVyBhcyBjb3VudHJ5IGNvZGUgKi9cXG4gMjA0OlxcdFxcdGlmIChzdHJuY21wKGNvdW50cnlfY29kZSwgXFxcIjAwXFxcIiwgMikgPT0gMClcXG4gMjA1OlxcdFxcdFxcdHN0cnNjcHkoY291bnRyeV9jb2RlLCBcXFwiV1dcXFwiLCBzaXplb2YoY291bnRyeV9jb2RlKSk7XFxuIDIwNjpcXHRcXG4gMjA3OlxcdFxcdHNucHJpbnRmKHJncG93ZXJfdGFibGVfbmFtZSwgc2l6ZW9mKHJncG93ZXJfdGFibGVfbmFtZSksXFxuIDIwODpcXHRcXHRcXHQgXFxcIm54cC9yZ3Bvd2VyXyVzLmJpblxcXCIsIGNvdW50cnlfY29kZSk7XFxuIDIwOTpcXHRcXG4gMjEwOlxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIElORk8sIFxcXCJpbmZvOiAlczogcmVxdWVzdGluZyByZWd1bGF0b3J5IHBvd2VyIHRhYmxlICVzXFxcXG5cXFwiLFxcbiAyMTE6XFx0XFx0XFx0ICAgIF9fZnVuY19fLCByZ3Bvd2VyX3RhYmxlX25hbWUpO1xcbiAyMTI6XFx0XFxuIDIxMzpcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlcmdwb3dlcl9kYXRhKSB7XFxuIDIxNDpcXHRcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGFkYXB0ZXItXFx1MDAzZXJncG93ZXJfZGF0YSk7XFxuIDIxNTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VyZ3Bvd2VyX2RhdGEgPSBOVUxMO1xcbiAyMTY6XFx0XFx0fVxcbiAyMTc6XFx0XFxuIDIxODpcXHRcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdChcXHUwMDI2YWRhcHRlci1cXHUwMDNlcmdwb3dlcl9kYXRhLCByZ3Bvd2VyX3RhYmxlX25hbWUsXFxuIDIxOTpcXHRcXHRcXHRcXHRcXHQgICAgICBhZGFwdGVyLVxcdTAwM2VkZXYpO1xcbiAyMjA6XFx0XFxuIDIyMTpcXHRcXHRpZiAocmV0KSB7XFxuIDIyMjpcXHRcXHRcXHRtd2lmaWV4X2RiZyhcXG4gMjIzOlxcdFxcdFxcdFxcdGFkYXB0ZXIsIElORk8sXFxuIDIyNDpcXHRcXHRcXHRcXHRcXFwiaW5mbzogJXM6IGZhaWxlZCB0byByZXF1ZXN0IHJlZ3VsYXRvcnkgcG93ZXIgdGFibGU6ICVkXFxcXG5cXFwiLFxcbiAyMjU6XFx0XFx0XFx0XFx0X19mdW5jX18sIHJldCk7XFxuIDIyNjpcXHRcXHR9XFxuIDIyNzpcXHRcXG4gMjI4OlxcdFxcdHJldHVybiByZXQ7XFxuIDIyOTpcXHR9XFxuIDIzMDpcXHRcXG4gMjMxOlxcdHN0YXRpYyBpbnQgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG4gMjMyOlxcdHtcXG4gMjMzOlxcdFxcdGludCByZXQ7XFxuIDIzNDpcXHRcXG4gMjM1OlxcdFxcdHJldCA9IG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlKHByaXYpO1xcbiAyMzY6XFx0XFx0aWYgKHJldClcXG4gMjM3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDIzODpcXHRcXG4gMjM5OlxcdFxcdHJldHVybiBtd2lmaWV4X3NlbmRfcmdwb3dlcl90YWJsZShwcml2LCBwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VyZ3Bvd2VyX2RhdGEtXFx1MDAzZWRhdGEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjI4LjU0Njk3NDgwNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTc3MjY5ODg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV3IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBzb2xpZC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIG13aWZpZXggZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGhvdyB0aGUgZmlybXdhcmUgbG9hZHMgcmVndWxhdG9yeSBwb3dlciB0YWJsZXMuIEl0IHNlZW1zIHRvIGltcHJvdmUgdGhhdCBwcm9jZXNzIGJ5IGxldmVyYWdpbmcgYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YCwgd2hpY2ggYnlwYXNzZXMgdGhlIHVzZXItbW9kZSBoZWxwZXIuIFRoYXTigJlzIGEgZ29vZCBtb3ZlOyB3ZSBhbGwga25vdyB0aG9zZSB1c2VyLW1vZGUgaGVscGVycyBjYW4gYmUgYSByZWFsIGJvdHRsZW5lY2sgYW5kIGEgcG90ZW50aWFsIHNvdXJjZSBvZiBoYW5ncyBhbmQgdGltZW91dHMuIFRoZSBmYWN0IHRoYXQgdGhlIGVycm9yIGNvZGUgcHJvcGFnYXRpb24gaGFzIGFsc28gYmVlbiBtb2RpZmllZCBmdXJ0aGVyIHN1cHBvcnRzIHRoYXQgaXQgaXMgZnVuY3Rpb25hbCwgYW5kIG5vdCBqdXN0IGEgY29zbWV0aWMgY2hhbmdlLlxuXG5HaXZlbiB0aGlzLCBJJ20gZGVmaW5pdGVseSBnb2luZyB0byBmbGFnIHRoaXMgYXMgXCJXb3J0aEZ1enppbmdcIiAtIGl0J3MgcmlwZSBmb3IgZXhwbG9yYXRpb24uIE15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVgIGFuZCBgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGVgIGZ1bmN0aW9uczsgdGhvc2UgYXJlIGNsZWFybHkgd2hlcmUgdGhlIGNvcmUgY2hhbmdlcyBhcmUgaGFwcGVuaW5nLiBJJ2xsIGFsc28gbmVlZCB0byBlbmFibGUgdGhlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBjb25maWd1cmF0aW9ucyB0byBlbnN1cmUgYSBnb29kIHRlc3QgY292ZXJhZ2UuXG5cbkxldCdzIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIHN0YW5kYXJkIHN1c3BlY3RzIGFyZSBzZXQgY29ycmVjdGx5LiBJJ2QgZXhwZWN0IHRoYXQgYEZXX0xPQURFUmAgaXMgZW5hYmxlZCwgYW5kIGBDRkc4MDIxMWAgaXMgdXN1YWxseSBlbmFibGVkIHRvbywgc28gSSdsbCBjaGVjayB0aG9zZSBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5BbHJpZ2h0LCBJJ20gY29uZmlkZW50IGluIHRoZSBhbmFseXNpcy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Mzc2LCJPdXRwdXRUb2tlbnMiOjE0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjM0LjEyNDI0NzUxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODExMTQwNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVcIixcbiAgICBcIm13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgZmlybXdhcmUgbG9hZGluZyBiZWhhdmlvciBmb3IgcmVndWxhdG9yeSBwb3dlciB0YWJsZXMgaW4gdGhlIG13aWZpZXggZHJpdmVyLCBzd2l0Y2hpbmcgZnJvbSByZXF1ZXN0X2Zpcm13YXJlIHRvIHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0IHRvIGF2b2lkIHRoZSB1c2VyLW1vZGUgaGVscGVyIGZhbGxiYWNrLiBJdCBhbHNvIHByb3BhZ2F0ZXMgdGhlIGV4YWN0IGVycm9yIGNvZGUgaW5zdGVhZCBvZiByZXR1cm5pbmcgLUVJTy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZVwiLFxuICAgIFwibXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGJlaGF2aW9yIGZvciByZWd1bGF0b3J5IHBvd2VyIHRhYmxlcyBpbiB0aGUgbXdpZmlleCBkcml2ZXIsIHN3aXRjaGluZyBmcm9tIHJlcXVlc3RfZmlybXdhcmUgdG8gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QgdG8gYXZvaWQgdGhlIHVzZXItbW9kZSBoZWxwZXIgZmFsbGJhY2suIEl0IGFsc28gcHJvcGFnYXRlcyB0aGUgZXhhY3QgZXJyb3IgY29kZSBpbnN0ZWFkIG9mIHJldHVybmluZyAtRUlPLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowhfdjb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-12 22:25:57 +0000 UTC FinishedAt: 2026-07-12 22:42:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "44696aa3a489d2baf58efa61b37833f100072bee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "44696aa3a489d2baf58efa61b37833f100072bee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MWIFIEX", "MWIFIEX_USB" ], "series_id": "d5542982-2f2d-4e39-8c92-c2e54ddbe7b0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mwifiex_request_rgpower_table", "mwifiex_dnld_rgpower_table" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGJlaGF2aW9yIGZvciByZWd1bGF0b3J5IHBvd2VyIHRhYmxlcyBpbiB0aGUgbXdpZmlleCBkcml2ZXIsIHN3aXRjaGluZyBmcm9tIHJlcXVlc3RfZmlybXdhcmUgdG8gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QgdG8gYXZvaWQgdGhlIHVzZXItbW9kZSBoZWxwZXIgZmFsbGJhY2suIEl0IGFsc28gcHJvcGFnYXRlcyB0aGUgZXhhY3QgZXJyb3IgY29kZSBpbnN0ZWFkIG9mIHJldHVybmluZyAtRUlPLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJmMTBjNmIzYTVhYmM1MzVjNDE5MWZhYTM4ODYzZjAwMTY4ODhlZGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxMiAyMjo0MTo1OCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNcbmluZGV4IGE2NTUwNTQ4ZDNiNDM1Li45NDYwZDUzNTJiMjM0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXG5AQCAtMTk2LDYgJiM0MzsxOTYsNyBAQCBzdGF0aWMgaW50IG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4gXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cdTAwM2VhZGFwdGVyO1xuIFx0Y2hhciByZ3Bvd2VyX3RhYmxlX25hbWVbMzBdO1xuIFx0Y2hhciBjb3VudHJ5X2NvZGVbM107XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdHN0cnNjcHkoY291bnRyeV9jb2RlLCBkb21haW5faW5mby1cdTAwM2Vjb3VudHJ5X2NvZGUsIHNpemVvZihjb3VudHJ5X2NvZGUpKTtcbiBcbkBAIC0yMTQsMTYgJiM0MzsyMTUsMTcgQEAgc3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuIFx0XHRhZGFwdGVyLVx1MDAzZXJncG93ZXJfZGF0YSA9IE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAoKHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2YWRhcHRlci1cdTAwM2VyZ3Bvd2VyX2RhdGEsIHJncG93ZXJfdGFibGVfbmFtZSxcbi1cdFx0XHQgICAgICBhZGFwdGVyLVx1MDAzZWRldikpKSB7XG4mIzQzO1x0cmV0ID0gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QoXHUwMDI2YWRhcHRlci1cdTAwM2VyZ3Bvd2VyX2RhdGEsIHJncG93ZXJfdGFibGVfbmFtZSxcbiYjNDM7XHRcdFx0XHQgICAgICBhZGFwdGVyLVx1MDAzZWRldik7XG4mIzQzO1xuJiM0MztcdGlmIChyZXQpIHtcbiBcdFx0bXdpZmlleF9kYmcoXG4gXHRcdFx0YWRhcHRlciwgSU5GTyxcbi1cdFx0XHRcJiMzNDtpbmZvOiAlczogZmFpbGVkIHRvIHJlcXVlc3QgcmVndWxhdG9yeSBwb3dlciB0YWJsZVxcblwmIzM0Oyxcbi1cdFx0XHRfX2Z1bmNfXyk7XG4tXHRcdHJldHVybiAtRUlPO1xuJiM0MztcdFx0XHRcJiMzNDtpbmZvOiAlczogZmFpbGVkIHRvIHJlcXVlc3QgcmVndWxhdG9yeSBwb3dlciB0YWJsZTogJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRcdF9fZnVuY19fLCByZXQpO1xuIFx0fVxuIFxuLVx0cmV0dXJuIDA7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIGludCBtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01XSUZJRVgmIzM0OywKICAgICYjMzQ7TVdJRklFWF9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZSYjMzQ7LAogICAgJiMzNDttd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGJlaGF2aW9yIGZvciByZWd1bGF0b3J5IHBvd2VyIHRhYmxlcyBpbiB0aGUgbXdpZmlleCBkcml2ZXIsIHN3aXRjaGluZyBmcm9tIHJlcXVlc3RfZmlybXdhcmUgdG8gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QgdG8gYXZvaWQgdGhlIHVzZXItbW9kZSBoZWxwZXIgZmFsbGJhY2suIEl0IGFsc28gcHJvcGFnYXRlcyB0aGUgZXhhY3QgZXJyb3IgY29kZSBpbnN0ZWFkIG9mIHJldHVybmluZyAtRUlPLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmYxMGM2YjNhNWFiYzUzNWM0MTkxZmFhMzg4NjNmMDAxNjg4OGVkYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDEyIDIyOjQxOjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jCmluZGV4IGE2NTUwNTQ4ZDNiNDM1Li45NDYwZDUzNTJiMjM0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYwpAQCAtMTk2LDYgJiM0MzsxOTYsNyBAQCBzdGF0aWMgaW50IG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpCiAJc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtJmd0O2FkYXB0ZXI7CiAJY2hhciByZ3Bvd2VyX3RhYmxlX25hbWVbMzBdOwogCWNoYXIgY291bnRyeV9jb2RlWzNdOwomIzQzOwlpbnQgcmV0OwogCiAJc3Ryc2NweShjb3VudHJ5X2NvZGUsIGRvbWFpbl9pbmZvLSZndDtjb3VudHJ5X2NvZGUsIHNpemVvZihjb3VudHJ5X2NvZGUpKTsKIApAQCAtMjE0LDE2ICYjNDM7MjE1LDE3IEBAIHN0YXRpYyBpbnQgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdikKIAkJYWRhcHRlci0mZ3Q7cmdwb3dlcl9kYXRhID0gTlVMTDsKIAl9CiAKLQlpZiAoKHJlcXVlc3RfZmlybXdhcmUoJmFtcDthZGFwdGVyLSZndDtyZ3Bvd2VyX2RhdGEsIHJncG93ZXJfdGFibGVfbmFtZSwKLQkJCSAgICAgIGFkYXB0ZXItJmd0O2RldikpKSB7CiYjNDM7CXJldCA9IHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0KCZhbXA7YWRhcHRlci0mZ3Q7cmdwb3dlcl9kYXRhLCByZ3Bvd2VyX3RhYmxlX25hbWUsCiYjNDM7CQkJCSAgICAgIGFkYXB0ZXItJmd0O2Rldik7CiYjNDM7CiYjNDM7CWlmIChyZXQpIHsKIAkJbXdpZmlleF9kYmcoCiAJCQlhZGFwdGVyLCBJTkZPLAotCQkJJiMzNDtpbmZvOiAlczogZmFpbGVkIHRvIHJlcXVlc3QgcmVndWxhdG9yeSBwb3dlciB0YWJsZVxuJiMzNDssCi0JCQlfX2Z1bmNfXyk7Ci0JCXJldHVybiAtRUlPOwomIzQzOwkJCSYjMzQ7aW5mbzogJXM6IGZhaWxlZCB0byByZXF1ZXN0IHJlZ3VsYXRvcnkgcG93ZXIgdGFibGU6ICVkXG4mIzM0OywKJiM0MzsJCQlfX2Z1bmNfXywgcmV0KTsKIAl9CiAKLQlyZXR1cm4gMDsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTE2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoOiBQb3RlbnRpYWwgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jYCBmaWxlLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlOiB0aGV5JiMzOTt2ZSBzd2FwcGVkIG91dCBgcmVxdWVzdF9maXJtd2FyZWAgZm9yIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAgYW5kIG5vdyByZXR1cm4gdGhlIGVycm9yIGNvZGUgZnJvbSB0aGUgZGlyZWN0IGNhbGwgaW5zdGVhZCBvZiBgLUVJT2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0lzIHRoaXMgZnV6emFibGU/JiMzNDsgVGhhdCYjMzk7cyB0aGUgcmVhbCBxdWVzdGlvbi4KCkZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gSXTigJlzIGluIGEgd2lyZWxlc3MgZHJpdmVyIOKAkyBNYXJ2ZWxsJiMzOTtzIG13aWZpZXguIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhhdCB0aGVzZSB0eXBlcyBvZiBoYXJkd2FyZSBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gZnV6eiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBPZnRlbiwgdGhleSByZXF1aXJlIHRoZSBhY3R1YWwgaGFyZHdhcmUgb3IgYSB2ZXJ5IHNwZWNpZmljIGVtdWxhdG9yLiBJIGhhdmUgdG8gdGhpbmssIGNvdWxkIEkgZXZlbiB0cmlnZ2VyIHRoaXMgaW4gYSBWTT8gSG1tLCBpcyB0aGVyZSBhIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGUgbXdpZmlleCBkcml2ZXI/IExhc3QgdGltZSBJIGxvb2tlZCwgYG1hYzgwMjExX2h3c2ltYCBpc24mIzM5O3QgZ29pbmcgdG8gY3V0IGl0LCB0aGF0JiMzOTtzIGp1c3QgZm9yIHRoZSBtYWM4MDIxMSBsYXllciwgdGhpcyBpcyBhIGZ1bGxtYWMgZHJpdmVyLCBJSVJDLgoKVGhlbiwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgSSBjb3VsZCBwb3RlbnRpYWxseSBlbXVsYXRlIHRoaXMgaW4gYSBmdXp6aW5nIHNldHVwLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBtd2lmaWV4IGNhbiBiZSBwcm9iZWQgdmlhIGEgc3RhbmRhcmQgaW50ZXJmYWNlLiBNYXliZSB2aWEgVVNCLCBTRElPLCBvciBldmVuIFBDSWU/IElmIGl0JiMzOTtzIFVTQiwgdGhlbiB0aGVyZSYjMzk7cyBob3BlLiBTeXprYWxsZXIgbWlnaHQgYmUgYWJsZSB0byBlbXVsYXRlIGEgVVNCIGRldmljZSB1c2luZyBgZHVtbXlfaGNkYCBhbmQgYHJhdy1nYWRnZXRgLiBTbywgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhIFVTQiBkcml2ZXIgZm9yIG13aWZpZXguIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcCBpbiB0aGlzIGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXguKnVzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc9Mzc9Y29uZmlnIE1XSUZJRVhfVVNCXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgaXQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzo0NjpcdCAgbXdpZmlleF91c2IuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlPTQyPW9iai0kKENPTkZJR19NV0lGSUVYX1BDSUUpICYjNDM7PSBtd2lmaWV4X3BjaWUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ0Om13aWZpZXhfdXNiLXkgJiM0Mzs9IHVzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01XSUZJRVhfVVNCKSAmIzQzOz0gbXdpZmlleF91c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQ2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oPTkwPWVudW0gS0VZX1RZUEVfSUQge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oOjEyMzplbnVtIG13aWZpZXhfdXNiX2VwIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyNC1cdE1XSUZJRVhfVVNCX0VQX0NNRF9FVkVOVCA9IDEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyMy0gKiBEbyBub3QgY2hlY2sgZm9yIGRhdGFfcmVjZWl2ZWQgZm9yIFVTQiwgYXMgZGF0YV9yZWNlaXZlZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTI1LSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzpzdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG13aWZpZXhfdXNiX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTYtXHQvKiA4NzY2ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBtd2lmaWV4X3VzYl90YWJsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDE6c3RhdGljIGludCBtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKHN0cnVjdCB1cmJfY29udGV4dCAqY3R4LCBpbnQgc2l6ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ1LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQ2OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVjdihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE4NzpcdFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXHUwMDNlZXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE4OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTk2LVx0XHRcdCAqIHVyYiBmb3IgY21kX2VwIHdpbGwgYmUgcmUtc3VibWl0dGVkIGluIGNhbGxiYWNrXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTk3Olx0XHRcdCAqIG13aWZpZXhfdXNiX3JlY3ZfY29tcGxldGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXHRcdFx0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzMi1cdGlmIChjYXJkLVx1MDAzZXJ4X2NtZF9lcCA9PSBjb250ZXh0LVx1MDAzZWVwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjMzOlx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGNvbnRleHQsIHNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjM1LVx0XHRpZiAoYXRvbWljX3JlYWQoXHUwMDI2YWRhcHRlci1cdTAwM2VyeF9wZW5kaW5nKSBcdTAwM2M9IEhJR0hfUlhfUEVORElORykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjIzNjpcdFx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKGNvbnRleHQsIHNpemUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNy1cdFx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl90eF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI4NTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNS1cdFx0XHRcdCB1c2JfcmN2aW50cGlwZShjYXJkLVx1MDAzZXVkZXYsIGN0eC1cdTAwM2VlcCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzE2Olx0XHRcdFx0IGN0eC1cdTAwM2Vza2ItXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzE3LVx0XHRcdFx0ICh2b2lkICopY3R4LCBjYXJkLVx1MDAzZXJ4X2NtZF9pbnRlcnZhbCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMC1cdFx0XHRcdCAgdXNiX3JjdmJ1bGtwaXBlKGNhcmQtXHUwMDNldWRldiwgY3R4LVx1MDAzZWVwKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozMjE6XHRcdFx0XHQgIGN0eC1cdTAwM2Vza2ItXHUwMDNlZGF0YSwgc2l6ZSwgbXdpZmlleF91c2JfcnhfY29tcGxldGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzIyLVx0XHRcdFx0ICAodm9pZCAqKWN0eCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyOS1cdGlmICh1c2Jfc3VibWl0X3VyYihjdHgtXHUwMDNldXJiLCBHRlBfQVRPTUlDKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjMzMDpcdFx0bXdpZmlleF9kYmcoYWRhcHRlciwgRVJST1IsIFwmIzM0O3VzYl9zdWJtaXRfdXJiIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzMxLVx0XHRkZXZfa2ZyZWVfc2tiX2FueShjdHgtXHUwMDNlc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9mcmVlKHN0cnVjdCB1c2JfY2FyZF9yZWMgKmNhcmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg0LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM4NTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM4Ni1cdFx0XHQgICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjUxNTpcdHJldCA9IG13aWZpZXhfYWRkX2NhcmQoY2FyZCwgXHUwMDI2Y2FyZC1cdTAwM2Vmd19kb25lLCBcdTAwMjZ1c2Jfb3BzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUxNi1cdFx0XHQgICAgICAgTVdJRklFWF9VU0IsIFx1MDAyNmNhcmQtXHUwMDNldWRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzItICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NTMzOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNTk5LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYwMDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MjUtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1XSUZJRVhfUlhfREFUQV9VUkI7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjYyNjpcdFx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNy1cdFx0XHRcdFx0XHQgIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYzMS1cdFx0aWYgKGNhcmQtXHUwMDNlcnhfY21kLnNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MzI6XHRcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcdTAwMjZjYXJkLVx1MDAzZXJ4X2NtZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MzMtXHRcdFx0XHRcdFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2NDU6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjY5OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2NvcmVkdW1wKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtd2lmaWV4X3VzYl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc5Olx0Lm5hbWUgPSBcJiMzNDttd2lmaWV4X3VzYlwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODA6XHQucHJvYmUgPSBtd2lmaWV4X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODE6XHQuZGlzY29ubmVjdCA9IG13aWZpZXhfdXNiX2Rpc2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgyOlx0LmlkX3RhYmxlID0gbXdpZmlleF91c2JfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgzOlx0LnN1c3BlbmQgPSBtd2lmaWV4X3VzYl9zdXNwZW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NDpcdC5yZXN1bWUgPSBtd2lmaWV4X3VzYl9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg1LVx0LnNvZnRfdW5iaW5kID0gMSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02ODYtXHQuZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4NzpcdFx0LmNvcmVkdW1wID0gbXdpZmlleF91c2JfY29yZWR1bXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9NzE0PXN0YXRpYyBpbnQgbXdpZmlleF9yZWFkX2RhdGFfc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCAqcGJ1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzMzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjczNDpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9wb3J0X3Jlc3luYyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTczNS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3NzY6c3RhdGljIGJvb2wgbXdpZmlleF91c2JfaXNfcG9ydF9yZWFkeShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3ODk6c3RhdGljIGlubGluZSB1OCBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03OTAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODAxOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODAyLVx0XHRcdFx0XHQgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LCB1OCBlcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODE4LVx0XHRcdFx0IHVzYl9zbmRpbnRwaXBlKGNhcmQtXHUwMDNldWRldiwgZXApLCBza2Jfc2VuZC1cdTAwM2VkYXRhLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgxOTpcdFx0XHRcdCBza2Jfc2VuZC1cdTAwM2VsZW4sIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyMC1cdFx0XHRcdCAodm9pZCAqKWNvbnRleHQsIGNhcmQtXHUwMDNldHhfY21kX2ludGVydmFsKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODI0LVx0XHRcdFx0ICBza2Jfc2VuZC1cdTAwM2VkYXRhLCBza2Jfc2VuZC1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODI1Olx0XHRcdFx0ICBtd2lmaWV4X3VzYl90eF9jb21wbGV0ZSwgKHZvaWQgKiljb250ZXh0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgzNy1cdFx0cG9ydC1cdTAwM2VibG9ja19zdGF0dXMgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgzODpcdFx0YWRhcHRlci1cdTAwM2VkYXRhX3NlbnQgPSBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODM5LVx0XHRyZXQgPSAtRU5PU1I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTg2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4NjI6c3RhdGljIGludCBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODYzLVx0XHRcdFx0XHQgICBzdHJ1Y3QgdXNiX3R4X2RhdGFfcG9ydCAqcG9ydCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtOTQ2LSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjk0NzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2FnZ3JfdHhfZGF0YShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy05NDgtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Mi1cdGlmIChmX3NlbmRfYWdncl9idWYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDYzOlx0XHRyZXQgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFx1MDAyNnNrYl9zZW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDY0LVx0XHRpZiAoIXJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjUtXHRcdFx0Y29udGV4dCA9IFx1MDAyNnBvcnQtXHUwMDNldHhfZGF0YV9saXN0W3BvcnQtXHUwMDNldHhfZGF0YV9peCYjNDM7JiM0MztdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwNjY6XHRcdFx0cmV0ID0gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjctXHRcdFx0XHRcdFx0XHQgICAgIGNvbnRleHQsIHNrYl9zZW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA3OS1cdFx0XHRcdGFkYXB0ZXItXHUwMDNlZGF0YV9zZW50ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDgwOlx0XHRcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA4MS1cdFx0XHRcdC8qIG5vIGF2YWlsYWJsZSB1cmIsIHBvc3Rjb3B5IHBhY2tldCovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTUtXHRcdGNvbnRleHQgPSBcdTAwMjZwb3J0LVx1MDAzZXR4X2RhdGFfbGlzdFtwb3J0LVx1MDAzZXR4X2RhdGFfaXgmIzQzOyYjNDM7XTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDk2Olx0XHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTctXHRcdFx0XHRcdFx0ICAgICAgY29udGV4dCwgc2tiX3NlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExMTk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfdHhfYWdncl90bW8oc3RydWN0IHRpbWVyX2xpc3QgKnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTEyMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMjktXHRzcGluX2xvY2tfYmgoXHUwMDI2cG9ydC1cdTAwM2V0eF9hZ2dyX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExMzA6XHRlcnIgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFx1MDAyNnNrYl9zZW5kKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTMxLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTQwLVx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfc2VudCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE0MTpcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0Mi1cdFx0ZXJyID0gLTE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDktXHR1cmJfY254dCA9IFx1MDAyNnBvcnQtXHUwMDNldHhfZGF0YV9saXN0W3BvcnQtXHUwMDNldHhfZGF0YV9peCYjNDM7JiM0MztdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNTA6XHRlcnIgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgcG9ydC1cdTAwM2V0eF9kYXRhX2VwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNTEtXHRcdFx0XHRcdCAgICAgdXJiX2NueHQsIHNrYl9zZW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1OS0vKiBUaGlzIGZ1bmN0aW9uIHdyaXRlIGEgY29tbWFuZC9kYXRhIHBhY2tldCB0byBjYXJkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjExNjA6c3RhdGljIGludCBtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggZXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE2MS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTkyLVx0XHRcdFx0XHRhZGFwdGVyLVx1MDAzZWRhdGFfc2VudCA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE5MzpcdFx0XHRcdFx0XHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE5NC1cdFx0XHRcdFx0cmV0dXJuIC1FQlVTWTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIwMi1cdFx0aWYgKCFwb3J0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIwMzpcdFx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBFUlJPUiwgXCYjMzQ7V3JvbmcgdXNiIHR4IGRhdGEgcG9ydFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIwNC1cdFx0XHRyZXR1cm4gLTE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMDgtXHRcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnBvcnQtXHUwMDNldHhfYWdncl9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjA5Olx0XHRcdHJldCA9ICBtd2lmaWV4X3VzYl9hZ2dyX3R4X2RhdGEoYWRhcHRlciwgZXAsIHNrYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjEwLVx0XHRcdFx0XHRcdFx0dHhfcGFyYW0sIHBvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjE3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyMTg6XHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLCBjb250ZXh0LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMTktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIyMTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3R4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjIyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1Ny1cdFx0dGltZXJfc2V0dXAoXHUwMDI2cG9ydC1cdTAwM2V0eF9hZ2dyLnRpbWVyX2NueHQuaG9sZF90aW1lcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjU4Olx0XHRcdCAgICBtd2lmaWV4X3VzYl90eF9hZ2dyX3RtbywgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1OS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjY0OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcnhfaW5pdChzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyNjUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjc5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyODA6XHRpZiAobXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcdTAwMjZjYXJkLVx1MDAzZXJ4X2NtZCwgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODEtXHRcdHJldHVybiAtMTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI4OS1cdFx0XHRyZXR1cm4gLTE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI5MDpcdFx0aWYgKG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXHUwMDI2Y2FyZC1cdTAwM2VyeF9kYXRhX2xpc3RbaV0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI5MS1cdFx0XHRcdFx0ICAgICAgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTI5OT1zdGF0aWMgaW50IG13aWZpZXhfcmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzMzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTMzODpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9jbGVhbnVwX3R4X2FnZ3Ioc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTM1OT1zdGF0aWMgdm9pZCBtd2lmaWV4X3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTM2MzpcdG13aWZpZXhfdXNiX2ZyZWUoY2FyZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTM2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzY1Olx0bXdpZmlleF91c2JfY2xlYW51cF90eF9hZ2dyKGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzNjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEzNzA9c3RhdGljIGludCBtd2lmaWV4X3Byb2dfZndfd19oZWxwZXIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTA3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfZG5sZF9mdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MDgtXHRcdFx0c3RydWN0IG13aWZpZXhfZndfaW1hZ2UgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjM6XHRyZXQgPSBtd2lmaWV4X3VzYl9yeF9pbml0KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjQtXHRpZiAoIXJldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTI1Olx0XHRyZXQgPSBtd2lmaWV4X3VzYl90eF9pbml0KGFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1MzA9c3RhdGljIHZvaWQgbXdpZmlleF9zdWJtaXRfcnhfdXJiKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTM2LVx0ICAgICghYXRvbWljX3JlYWQoXHUwMDI2Y2FyZC1cdTAwM2VyeF9jbWRfdXJiX3BlbmRpbmcpKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTM3Olx0XHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFx1MDAyNmNhcmQtXHUwMDNlcnhfY21kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MzgtXHRcdFx0XHRcdCAgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1NDM6c3RhdGljIGludCBtd2lmaWV4X3VzYl9jbWRfZXZlbnRfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTQ0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1NTI9c3RhdGljIGludCBtd2lmaWV4X3BtX3dha2V1cF9jYXJkKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1NjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU2MzpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9zdWJtaXRfcmVtX3J4X3VyYnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTY0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU3Mi1cdFx0Y3R4ID0gXHUwMDI2Y2FyZC1cdTAwM2VyeF9kYXRhX2xpc3RbaV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU3MzpcdFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihjdHgsIE1XSUZJRVhfUlhfREFUQV9CVUZfU0laRSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU3NC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM9MTU3OT1td2lmaWV4X3BtX3dha2V1cF9jYXJkX2NvbXBsZXRlKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU4NDpzdGF0aWMgY29uc3Qgc3RydWN0IG13aWZpZXhfaWZfb3BzIHVzYl9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU4NS1cdC5yZWdpc3Rlcl9kZXYgPVx0XHRtd2lmaWV4X3JlZ2lzdGVyX2Rldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5MC1cdC8qIFVTQiBzcGVjaWZpYyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTE6XHQuZG5sZF9mdyA9XHRcdG13aWZpZXhfdXNiX2RubGRfZncsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MjpcdC5jbWRyc3BfY29tcGxldGUgPVx0bXdpZmlleF91c2JfY21kX2V2ZW50X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTM6XHQuZXZlbnRfY29tcGxldGUgPVx0bXdpZmlleF91c2JfY21kX2V2ZW50X2NvbXBsZXRlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTQ6XHQuaG9zdF90b19jYXJkID1cdFx0bXdpZmlleF91c2JfaG9zdF90b19jYXJkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTU6XHQuc3VibWl0X3JlbV9yeF91cmJzID1cdG13aWZpZXhfdXNiX3N1Ym1pdF9yZW1fcnhfdXJicyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk2Olx0Lm11bHRpX3BvcnRfcmVzeW5jID1cdG13aWZpZXhfdXNiX3BvcnRfcmVzeW5jLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTc6XHQuaXNfcG9ydF9yZWFkeSA9XHRtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTgtfTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE2MDA6bW9kdWxlX3VzYl9kcml2ZXIobXdpZmlleF91c2JfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNjAxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjM1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNd2lmaWV4IFVTQiBEcml2ZXIgZm9yIEZ1enppbmcgT3Bwb3J0dW5pdGllcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgbXdpZmlleGAgaGFzIGEgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBtd2lmaWV4X3VzYmAuIFRoaXMgb3BlbnMgdXAgc29tZSBpbnRlcmVzdGluZyBhdmVudWVzIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgdXNpbmcgcmF3LWdhZGdldCBvciBkdW1teV9oY2QuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGlzIHBhdGNoIHRoYXQgdGFyZ2V0cyBgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVgIHdpdGhpbiBgc3RhX2lvY3RsLmNgLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBmdW5jdGlvbi4gVGhlcmVmb3JlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgZXZlcnl3aGVyZSBgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVgIGlzIGNhbGxlZC4gRmluZGluZyB0aGUgY2FsbCBzaXRlcyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSBpcyB0cmlnZ2VyZWQgYW5kIGNvbnN0cnVjdGluZyBlZmZlY3RpdmUgZnV6emluZyBpbnB1dHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjI6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0xODM9c3RhdGljIHZvaWQgbXdpZmlleF9kbmxkX2R0X3R4cHdyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzoxOTM6c3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE5NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTIzMT1zdGF0aWMgaW50IG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTIzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzoyMzU6XHRyZXQgPSBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShwcml2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yMzYtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjExCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBjb2RlOgoKKipBbmFseXppbmcgdGhlIENhbGwgU2l0ZXMgb2YgYG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlYCBpcyB1c2VkIHdpdGhpbiB0aGUgTWFydmVsbCBXaS1GaSBkcml2ZXIsIG9yIHdoZXJldmVyIGl0IGxpdmVzLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gaWRlbnRpZnkgYWxsIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGViYXNlIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiBUaGF0JiMzOTtzIHRoZSBmdW5kYW1lbnRhbCBmaXJzdCBzdGVwLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0cyBvZiBpdHMgaW52b2NhdGlvbiBpcyBjcnVjaWFsIHRvIGRldGVybWluZSBpdHMgcHVycG9zZSBhbmQgaW1wYWN0LiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB0b29scyDigJMgbGlrZWx5IGEgY29kZSBzZWFyY2ggdXRpbGl0eSBvciBhIGRlYnVnZ2VyIOKAkyB0byByYXBpZGx5IGxvY2F0ZSBhbGwgY2FsbCBzaXRlcy4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW5mZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQmIzM5O3MgZXhlY3V0ZWQsIHdoYXQgYXJndW1lbnRzIGFyZSBwYXNzZWQgKGlmIGFueSksIGFuZCB3aGF0IHRoZSBvdmVyYWxsIGZsb3cgb2YgY29udHJvbCBsb29rcyBsaWtlLiBUaGlzIGluaXRpYWwgYW5hbHlzaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiBpdHMgYmFzaWMgcm9sZSBhbmQgc2lnbmlmaWNhbmNlIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgd2lsbCB0YWtlIGEgbW9tZW50LCBidXQgaXQmIzM5O3MgZXNzZW50aWFsIGZvciBnZXR0aW5nIGEgZ29vZCBncmFzcCBvbiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMjI6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0xOTM9c3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MjMxOnN0YXRpYyBpbnQgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yMzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNDM9dm9pZCBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yNDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjI0NTpcdGlmIChtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShwcml2KSA9PSAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTI0Ni1cdFx0cmV0dXJuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNzk3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIHRoZSBDYWxsIFNpdGVzIG9mIGBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGVgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGVgIGZ1bmN0aW9uIGlzIGJlaW5nIHVzZWQuIFdoZXJlIGlzIGl0IGJlaW5nICpjYWxsZWQqPyBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBzeXN0ZW1hdGljYWxseSB0cmFjZSBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQuIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRhdGEgZmxvdyBhbmQgb3BlcmF0aW9uYWwgY29udGV4dC4gTGV0JiMzOTtzIHN0YXJ0IGRpZ2dpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O213aWZpZXhfZG5sZF90eHB3cl90YWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NjY2PXN0YXRpYyB2b2lkIG13aWZpZXhfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNjk1LVx0XHRtd2lmaWV4X3NlbmRfZG9tYWluX2luZm9fY21kX2Z3KHdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jOjY5NjpcdFx0bXdpZmlleF9kbmxkX3R4cHdyX3RhYmxlKHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMtNjk3LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg9MTU4MD1pbnQgbXdpZmlleF9kbmxkX2R0X2NmZ2RhdGEoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU4MS1cdFx0XHQgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlLCBjb25zdCBjaGFyICpwcmVmaXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxNTgyOnZvaWQgbXdpZmlleF9kbmxkX3R4cHdyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaC0xNTgzLWludCBtd2lmaWV4X3NlbmRfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LCBjb25zdCB1OCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9MjMxPXN0YXRpYyBpbnQgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMjQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jOjI0Mzp2b2lkIG13aWZpZXhfZG5sZF90eHB3cl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTI0NC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTI1MT1zdGF0aWMgaW50IG13aWZpZXhfcHJvY2Vzc19jb3VudHJ5X2llKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTMwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzozMTA6XHRtd2lmaWV4X2RubGRfdHhwd3JfdGFibGUocHJpdik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzExLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfY21kLmM9OTc0PXZvaWQgbXdpZmlleF91YXBfc2V0X2NoYW5uZWwoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdWFwX2NtZC5jLTEwMzEtXHRcdG13aWZpZXhfc2VuZF9kb21haW5faW5mb19jbWRfZncocHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZXdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfY21kLmM6MTAzMjpcdFx0bXdpZmlleF9kbmxkX3R4cHdyX3RhYmxlKHByaXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9jbWQuYy0xMDMzLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgwNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYHJlcXVlc3RfZmlybXdhcmVgIENoYW5nZSBpbiB0aGUgTWFydmVsbCBXaS1GaSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRyYWNpbmcgdGhlIGNhbGxzIHRvIGBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGVgLiBJIHNlZSBpdCYjMzk7cyByZWFjaGVkIGZyb20gYG13aWZpZXhfcmVnX25vdGlmaWVyYCDigJMgdGhhdCYjMzk7cyB0aGUgY2ZnODAyMTEgcmVndWxhdG9yeSBub3RpZmllciwgaW50ZXJlc3Rpbmcg4oCTIGBtd2lmaWV4X3Byb2Nlc3NfY291bnRyeV9pZWAgd2hpY2ggZGVhbHMgd2l0aCB0aGUgY291bnRyeSBJRSBmcm9tIHRoZSBBUCwgYW5kIGFsc28gYG13aWZpZXhfdWFwX3NldF9jaGFubmVsYC4gVGhlc2UgY2FsbCBwYXRocyBzZWVtIGRlZmluaXRlbHkgcmVhY2hhYmxlLgoKVGhlIGtleSBjaGFuZ2UgaXMgdGhpcyBzd2FwIGZyb20gYHJlcXVlc3RfZmlybXdhcmVgIHRvIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAuIFRoaXMgaXMgZGVmaW5pdGVseSBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIEF2b2lkaW5nIHRoZSB1c2VyLW1vZGUgaGVscGVyIGZhbGxiYWNrIHdpdGggYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YCBjYW4gbWFrZSBhIGJpZyBkaWZmZXJlbmNlLCBwYXJ0aWN1bGFybHkgaW4gc2NlbmFyaW9zIHdoZXJlIHRoZSBoZWxwZXImIzM5O3MgYmxvY2tpbmcgYmVoYXZpb3IgY291bGQgYmUgcHJvYmxlbWF0aWMuIEFsc28sIGl0JiMzOTtzIG5vdyBwcm9wYWdhdGluZyB0aGUgYWN0dWFsIGVycm9yIGNvZGUgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBgLUVJT2AuIFRoaXMgaXMgYSBiZXR0ZXIgcHJhY3RpY2UuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gaXM6IGlzIHRoaXMgd29ydGggZnV6emluZz8gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIGFuZCB0aGF0IHRoZSBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgVVNCIGVtdWxhdGlvbiwgYWJzb2x1dGVseSwgaXQmIzM5O3Mgd29ydGggaXQuIFdlIHNob3VsZCBmb2N1cyBzcGVjaWZpY2FsbHkgb24gYG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlYCBzaW5jZSBpdCYjMzk7cyBtb3N0IGxpa2VseSB0byB0cmlnZ2VyIHRoZSBjaGFuZ2VkIGNvZGUgcGF0aC4KCkJlZm9yZSBkaXZpbmcgaW4sIEkgbmVlZCB0byB2ZXJpZnkgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLiBXZSYjMzk7bGwgbmVlZCBgQ09ORklHX01XSUZJRVhgIGFuZCBgQ09ORklHX01XSUZJRVhfVVNCYCBmb3Igc3VyZS4gQW5kLCBhcyB0aGlzIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCB3ZSBsaWtlbHkgYWxzbyBuZWVkIGBDT05GSUdfQ0ZHODAyMTFgIGFuZCBgQ09ORklHX01BQzgwMjExYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtLiBXZSBuZWVkIHRvIGJlIHN1cmUgd2UgYXJlIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTVdJRklFWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjI6Y29uZmlnIE1XSUZJRVhcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMy1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoyNTpjb25maWcgTVdJRklFWF9QQ0lFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0yNi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFBDSUUgODc2Ni84ODk3Lzg5OTdcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0zNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjM3OmNvbmZpZyBNV0lGSUVYX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBVU0I4NzY2Lzg3OTcvODk5N1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzk0NQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDI0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1XSUZJRVggRHJpdmVyIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGF0IGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMsIHNvIEkmIzM5O2xsIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIGluIHRoZSBzeXN0ZW0sIGp1c3QgdG8gYmUgdGhvcm91Z2guCgpSaWdodCwgYE1XSUZJRVhgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYENGRzgwMjExYCwgd2hpY2ggaXMgc3RhbmRhcmQuIEZvciB0aGlzIGFuYWx5c2lzLCBJIGNhbiBqdXN0IGZvY3VzIG9uIGxpc3RpbmcgYE1XSUZJRVhgIGFuZCBgTVdJRklFWF9VU0JgLgoKTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBUaGlzIHBhdGNoIGNoYW5nZXMgYHJlcXVlc3RfZmlybXdhcmVgIHRvIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcy4gSXMgdGhpcyBhIHNpbXBsZSBidWcgZml4LCBvciBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBJdCYjMzk7cyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIGl0IGJ5cGFzc2VzIHRoZSB1c2VyLW1vZGUgaGVscGVyLiBUaGF0JiMzOTtzIHNpZ25pZmljYW50LiBUaGF0IGNvdWxkIGJlIGNydWNpYWwgaW4gc2NlbmFyaW9zIHdoZXJlIGNhbGxpbmcgdGhlIGhlbHBlciBpcyBwcm9ibGVtYXRpYywgb3IgcGVyaGFwcyB0byBhY2NlbGVyYXRlIGVycm9yIGhhbmRsaW5nLiBJIGFsc28gc2VlIHRoYXQgdGhlIHJldHVybiB2YWx1ZSBjaGFuZ2VzIGZyb20gYC1FSU9gIHRvIGByZXRgLCB3aGljaCBpcyBhbm90aGVyIHBvdGVudGlhbCBwb2ludCBvZiBjb25jZXJuIGZvciBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIGlmIG5vdCBoYW5kbGVkIGNvcnJlY3RseS4KClNvLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0IGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gSSBuZWVkIHRvIGZvY3VzIG9uLiBPa2F5LCB5ZXAsIHRoYXQmIzM5O3MgdGhlIHByaW1hcnkgb25lLCBhbmQgcG90ZW50aWFsbHkgYG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlYCBhcyB3ZWxsLgoKSSYjMzk7bGwgcXVpY2tseSBjaGVjayBgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVgIGluIGBzdGFfaW9jdGwuY2AgdG8gc2VlIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDIyOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTA6XHRcdH1cbiAxOTE6XHR9XG4gMTkyOlx0XG4gMTkzOlx0c3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuIDE5NDpcdHtcbiAxOTU6XHRcdHN0cnVjdCBtd2lmaWV4XzgwMl8xMWRfZG9tYWluX3JlZyAqZG9tYWluX2luZm8gPSBcdTAwMjZwcml2LVx1MDAzZWFkYXB0ZXItXHUwMDNlZG9tYWluX3JlZztcbiAxOTY6XHRcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG4gMTk3Olx0XHRjaGFyIHJncG93ZXJfdGFibGVfbmFtZVszMF07XG4gMTk4Olx0XHRjaGFyIGNvdW50cnlfY29kZVszXTtcbiAxOTk6XHRcdGludCByZXQ7XG4gMjAwOlx0XG4gMjAxOlx0XHRzdHJzY3B5KGNvdW50cnlfY29kZSwgZG9tYWluX2luZm8tXHUwMDNlY291bnRyeV9jb2RlLCBzaXplb2YoY291bnRyeV9jb2RlKSk7XG4gMjAyOlx0XG4gMjAzOlx0XHQvKiBXb3JsZCByZWd1bGF0b3J5IGRvbWFpbiBcJiMzNDswMFwmIzM0OyBoYXMgV1cgYXMgY291bnRyeSBjb2RlICovXG4gMjA0Olx0XHRpZiAoc3RybmNtcChjb3VudHJ5X2NvZGUsIFwmIzM0OzAwXCYjMzQ7LCAyKSA9PSAwKVxuIDIwNTpcdFx0XHRzdHJzY3B5KGNvdW50cnlfY29kZSwgXCYjMzQ7V1dcJiMzNDssIHNpemVvZihjb3VudHJ5X2NvZGUpKTtcbiAyMDY6XHRcbiAyMDc6XHRcdHNucHJpbnRmKHJncG93ZXJfdGFibGVfbmFtZSwgc2l6ZW9mKHJncG93ZXJfdGFibGVfbmFtZSksXG4gMjA4Olx0XHRcdCBcJiMzNDtueHAvcmdwb3dlcl8lcy5iaW5cJiMzNDssIGNvdW50cnlfY29kZSk7XG4gMjA5Olx0XG4gMjEwOlx0XHRtd2lmaWV4X2RiZyhhZGFwdGVyLCBJTkZPLCBcJiMzNDtpbmZvOiAlczogcmVxdWVzdGluZyByZWd1bGF0b3J5IHBvd2VyIHRhYmxlICVzXFxuXCYjMzQ7LFxuIDIxMTpcdFx0XHQgICAgX19mdW5jX18sIHJncG93ZXJfdGFibGVfbmFtZSk7XG4gMjEyOlx0XG4gMjEzOlx0XHRpZiAoYWRhcHRlci1cdTAwM2VyZ3Bvd2VyX2RhdGEpIHtcbiAyMTQ6XHRcdFx0cmVsZWFzZV9maXJtd2FyZShhZGFwdGVyLVx1MDAzZXJncG93ZXJfZGF0YSk7XG4gMjE1Olx0XHRcdGFkYXB0ZXItXHUwMDNlcmdwb3dlcl9kYXRhID0gTlVMTDtcbiAyMTY6XHRcdH1cbiAyMTc6XHRcbiAyMTg6XHRcdHJldCA9IHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0KFx1MDAyNmFkYXB0ZXItXHUwMDNlcmdwb3dlcl9kYXRhLCByZ3Bvd2VyX3RhYmxlX25hbWUsXG4gMjE5Olx0XHRcdFx0XHQgICAgICBhZGFwdGVyLVx1MDAzZWRldik7XG4gMjIwOlx0XG4gMjIxOlx0XHRpZiAocmV0KSB7XG4gMjIyOlx0XHRcdG13aWZpZXhfZGJnKFxuIDIyMzpcdFx0XHRcdGFkYXB0ZXIsIElORk8sXG4gMjI0Olx0XHRcdFx0XCYjMzQ7aW5mbzogJXM6IGZhaWxlZCB0byByZXF1ZXN0IHJlZ3VsYXRvcnkgcG93ZXIgdGFibGU6ICVkXFxuXCYjMzQ7LFxuIDIyNTpcdFx0XHRcdF9fZnVuY19fLCByZXQpO1xuIDIyNjpcdFx0fVxuIDIyNzpcdFxuIDIyODpcdFx0cmV0dXJuIHJldDtcbiAyMjk6XHR9XG4gMjMwOlx0XG4gMjMxOlx0c3RhdGljIGludCBtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuIDIzMjpcdHtcbiAyMzM6XHRcdGludCByZXQ7XG4gMjM0Olx0XG4gMjM1Olx0XHRyZXQgPSBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShwcml2KTtcbiAyMzY6XHRcdGlmIChyZXQpXG4gMjM3Olx0XHRcdHJldHVybiByZXQ7XG4gMjM4Olx0XG4gMjM5Olx0XHRyZXR1cm4gbXdpZmlleF9zZW5kX3JncG93ZXJfdGFibGUocHJpdiwgcHJpdi1cdTAwM2VhZGFwdGVyLVx1MDAzZXJncG93ZXJfZGF0YS1cdTAwM2VkYXRhLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM3NgoJCQkJCQkJb3V0cHV0OiAxNDAKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXcgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBzb2xpZC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIG13aWZpZXggZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGhvdyB0aGUgZmlybXdhcmUgbG9hZHMgcmVndWxhdG9yeSBwb3dlciB0YWJsZXMuIEl0IHNlZW1zIHRvIGltcHJvdmUgdGhhdCBwcm9jZXNzIGJ5IGxldmVyYWdpbmcgYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YCwgd2hpY2ggYnlwYXNzZXMgdGhlIHVzZXItbW9kZSBoZWxwZXIuIFRoYXTigJlzIGEgZ29vZCBtb3ZlOyB3ZSBhbGwga25vdyB0aG9zZSB1c2VyLW1vZGUgaGVscGVycyBjYW4gYmUgYSByZWFsIGJvdHRsZW5lY2sgYW5kIGEgcG90ZW50aWFsIHNvdXJjZSBvZiBoYW5ncyBhbmQgdGltZW91dHMuIFRoZSBmYWN0IHRoYXQgdGhlIGVycm9yIGNvZGUgcHJvcGFnYXRpb24gaGFzIGFsc28gYmVlbiBtb2RpZmllZCBmdXJ0aGVyIHN1cHBvcnRzIHRoYXQgaXQgaXMgZnVuY3Rpb25hbCwgYW5kIG5vdCBqdXN0IGEgY29zbWV0aWMgY2hhbmdlLgoKR2l2ZW4gdGhpcywgSSYjMzk7bSBkZWZpbml0ZWx5IGdvaW5nIHRvIGZsYWcgdGhpcyBhcyAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IC0gaXQmIzM5O3MgcmlwZSBmb3IgZXhwbG9yYXRpb24uIE15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVgIGFuZCBgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGVgIGZ1bmN0aW9uczsgdGhvc2UgYXJlIGNsZWFybHkgd2hlcmUgdGhlIGNvcmUgY2hhbmdlcyBhcmUgaGFwcGVuaW5nLiBJJiMzOTtsbCBhbHNvIG5lZWQgdG8gZW5hYmxlIHRoZSBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgY29uZmlndXJhdGlvbnMgdG8gZW5zdXJlIGEgZ29vZCB0ZXN0IGNvdmVyYWdlLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIHN0YW5kYXJkIHN1c3BlY3RzIGFyZSBzZXQgY29ycmVjdGx5LiBJJiMzOTtkIGV4cGVjdCB0aGF0IGBGV19MT0FERVJgIGlzIGVuYWJsZWQsIGFuZCBgQ0ZHODAyMTFgIGlzIHVzdWFsbHkgZW5hYmxlZCB0b28sIHNvIEkmIzM5O2xsIGNoZWNrIHRob3NlIGp1c3QgdG8gYmUgdGhvcm91Z2guCgpBbHJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAyMjo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVdJRklFWCYjMzQ7LAogICAgJiMzNDtNV0lGSUVYX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O213aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlJiMzNDssCiAgICAmIzM0O213aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIGZpcm13YXJlIGxvYWRpbmcgYmVoYXZpb3IgZm9yIHJlZ3VsYXRvcnkgcG93ZXIgdGFibGVzIGluIHRoZSBtd2lmaWV4IGRyaXZlciwgc3dpdGNoaW5nIGZyb20gcmVxdWVzdF9maXJtd2FyZSB0byByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdCB0byBhdm9pZCB0aGUgdXNlci1tb2RlIGhlbHBlciBmYWxsYmFjay4gSXQgYWxzbyBwcm9wYWdhdGVzIHRoZSBleGFjdCBlcnJvciBjb2RlIGluc3RlYWQgb2YgcmV0dXJuaW5nIC1FSU8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNV0lGSUVYJiMzNDssCiAgICAmIzM0O01XSUZJRVhfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUmIzM0OywKICAgICYjMzQ7bXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgZmlybXdhcmUgbG9hZGluZyBiZWhhdmlvciBmb3IgcmVndWxhdG9yeSBwb3dlciB0YWJsZXMgaW4gdGhlIG13aWZpZXggZHJpdmVyLCBzd2l0Y2hpbmcgZnJvbSByZXF1ZXN0X2Zpcm13YXJlIHRvIHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0IHRvIGF2b2lkIHRoZSB1c2VyLW1vZGUgaGVscGVyIGZhbGxiYWNrLiBJdCBhbHNvIHByb3BhZ2F0ZXMgdGhlIGV4YWN0IGVycm9yIGNvZGUgaW5zdGVhZCBvZiByZXR1cm5pbmcgLUVJTy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MTo1OS43NDQ1ODE4NThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDQ2MDc5MjI5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNV0lGSUVYXCIsXG4gICAgXCJNV0lGSUVYX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlXCIsXG4gICAgXCJtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGZpcm13YXJlIGxvYWRpbmcgYmVoYXZpb3IgZm9yIHJlZ3VsYXRvcnkgcG93ZXIgdGFibGVzIGluIHRoZSBtd2lmaWV4IGRyaXZlciwgc3dpdGNoaW5nIGZyb20gcmVxdWVzdF9maXJtd2FyZSB0byByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdCB0byBhdm9pZCB0aGUgdXNlci1tb2RlIGhlbHBlciBmYWxsYmFjay4gSXQgYWxzbyBwcm9wYWdhdGVzIHRoZSBleGFjdCBlcnJvciBjb2RlIGluc3RlYWQgb2YgcmV0dXJuaW5nIC1FSU8uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MTo1OS43NDQ1ODgwODhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMTU3MTc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJmMTBjNmIzYTVhYmM1MzVjNDE5MWZhYTM4ODYzZjAwMTY4ODhlZGFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBKdWwgMTIgMjI6NDE6NTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXFxuaW5kZXggYTY1NTA1NDhkM2I0MzUuLjk0NjBkNTM1MmIyMzRlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xcbkBAIC0xOTYsNiArMTk2LDcgQEAgc3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbiBcXHRzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4gXFx0Y2hhciByZ3Bvd2VyX3RhYmxlX25hbWVbMzBdO1xcbiBcXHRjaGFyIGNvdW50cnlfY29kZVszXTtcXG4rXFx0aW50IHJldDtcXG4gXFxuIFxcdHN0cnNjcHkoY291bnRyeV9jb2RlLCBkb21haW5faW5mby1cXHUwMDNlY291bnRyeV9jb2RlLCBzaXplb2YoY291bnRyeV9jb2RlKSk7XFxuIFxcbkBAIC0yMTQsMTYgKzIxNSwxNyBAQCBzdGF0aWMgaW50IG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuIFxcdFxcdGFkYXB0ZXItXFx1MDAzZXJncG93ZXJfZGF0YSA9IE5VTEw7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICgocmVxdWVzdF9maXJtd2FyZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcmdwb3dlcl9kYXRhLCByZ3Bvd2VyX3RhYmxlX25hbWUsXFxuLVxcdFxcdFxcdCAgICAgIGFkYXB0ZXItXFx1MDAzZWRldikpKSB7XFxuK1xcdHJldCA9IHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0KFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyZ3Bvd2VyX2RhdGEsIHJncG93ZXJfdGFibGVfbmFtZSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgYWRhcHRlci1cXHUwMDNlZGV2KTtcXG4rXFxuK1xcdGlmIChyZXQpIHtcXG4gXFx0XFx0bXdpZmlleF9kYmcoXFxuIFxcdFxcdFxcdGFkYXB0ZXIsIElORk8sXFxuLVxcdFxcdFxcdFxcXCJpbmZvOiAlczogZmFpbGVkIHRvIHJlcXVlc3QgcmVndWxhdG9yeSBwb3dlciB0YWJsZVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0X19mdW5jX18pO1xcbi1cXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0XFx0XFxcImluZm86ICVzOiBmYWlsZWQgdG8gcmVxdWVzdCByZWd1bGF0b3J5IHBvd2VyIHRhYmxlOiAlZFxcXFxuXFxcIixcXG4rXFx0XFx0XFx0X19mdW5jX18sIHJldCk7XFxuIFxcdH1cXG4gXFxuLVxcdHJldHVybiAwO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjAwLjI3NjkxMTYzNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5Mjg0NTM3MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZVwiLFxuICAgIFwibXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGJlaGF2aW9yIGZvciByZWd1bGF0b3J5IHBvd2VyIHRhYmxlcyBpbiB0aGUgbXdpZmlleCBkcml2ZXIsIHN3aXRjaGluZyBmcm9tIHJlcXVlc3RfZmlybXdhcmUgdG8gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QgdG8gYXZvaWQgdGhlIHVzZXItbW9kZSBoZWxwZXIgZmFsbGJhY2suIEl0IGFsc28gcHJvcGFnYXRlcyB0aGUgZXhhY3QgZXJyb3IgY29kZSBpbnN0ZWFkIG9mIHJldHVybmluZyAtRUlPLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiZjEwYzZiM2E1YWJjNTM1YzQxOTFmYWEzODg2M2YwMDE2ODg4ZWRhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMjI6NDE6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmNcbmluZGV4IGE2NTUwNTQ4ZDNiNDM1Li45NDYwZDUzNTJiMjM0ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXG5AQCAtMTk2LDYgKzE5Niw3IEBAIHN0YXRpYyBpbnQgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbiBcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG4gXHRjaGFyIHJncG93ZXJfdGFibGVfbmFtZVszMF07XG4gXHRjaGFyIGNvdW50cnlfY29kZVszXTtcbitcdGludCByZXQ7XG4gXG4gXHRzdHJzY3B5KGNvdW50cnlfY29kZSwgZG9tYWluX2luZm8tXHUwMDNlY291bnRyeV9jb2RlLCBzaXplb2YoY291bnRyeV9jb2RlKSk7XG4gXG5AQCAtMjE0LDE2ICsyMTUsMTcgQEAgc3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxuIFx0XHRhZGFwdGVyLVx1MDAzZXJncG93ZXJfZGF0YSA9IE5VTEw7XG4gXHR9XG4gXG4tXHRpZiAoKHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2YWRhcHRlci1cdTAwM2VyZ3Bvd2VyX2RhdGEsIHJncG93ZXJfdGFibGVfbmFtZSxcbi1cdFx0XHQgICAgICBhZGFwdGVyLVx1MDAzZWRldikpKSB7XG4rXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdChcdTAwMjZhZGFwdGVyLVx1MDAzZXJncG93ZXJfZGF0YSwgcmdwb3dlcl90YWJsZV9uYW1lLFxuK1x0XHRcdFx0ICAgICAgYWRhcHRlci1cdTAwM2VkZXYpO1xuK1xuK1x0aWYgKHJldCkge1xuIFx0XHRtd2lmaWV4X2RiZyhcbiBcdFx0XHRhZGFwdGVyLCBJTkZPLFxuLVx0XHRcdFwiaW5mbzogJXM6IGZhaWxlZCB0byByZXF1ZXN0IHJlZ3VsYXRvcnkgcG93ZXIgdGFibGVcXG5cIixcbi1cdFx0XHRfX2Z1bmNfXyk7XG4tXHRcdHJldHVybiAtRUlPO1xuK1x0XHRcdFwiaW5mbzogJXM6IGZhaWxlZCB0byByZXF1ZXN0IHJlZ3VsYXRvcnkgcG93ZXIgdGFibGU6ICVkXFxuXCIsXG4rXHRcdFx0X19mdW5jX18sIHJldCk7XG4gXHR9XG4gXG4tXHRyZXR1cm4gMDtcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjAwLjI3NjkxMzYyNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0MjYzMDE5MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2g6IFBvdGVudGlhbCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgZnVuY3Rpb24gd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jYCBmaWxlLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2U6IHRoZXkndmUgc3dhcHBlZCBvdXQgYHJlcXVlc3RfZmlybXdhcmVgIGZvciBgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3RgIGFuZCBub3cgcmV0dXJuIHRoZSBlcnJvciBjb2RlIGZyb20gdGhlIGRpcmVjdCBjYWxsIGluc3RlYWQgb2YgYC1FSU9gLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJJcyB0aGlzIGZ1enphYmxlP1wiIFRoYXQncyB0aGUgcmVhbCBxdWVzdGlvbi5cblxuRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBJdOKAmXMgaW4gYSB3aXJlbGVzcyBkcml2ZXIg4oCTIE1hcnZlbGwncyBtd2lmaWV4LiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgdHlwZXMgb2YgaGFyZHdhcmUgZHJpdmVycyBhcmUgbm90b3Jpb3VzbHkgZGlmZmljdWx0IHRvIGZ1enogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gT2Z0ZW4sIHRoZXkgcmVxdWlyZSB0aGUgYWN0dWFsIGhhcmR3YXJlIG9yIGEgdmVyeSBzcGVjaWZpYyBlbXVsYXRvci4gSSBoYXZlIHRvIHRoaW5rLCBjb3VsZCBJIGV2ZW4gdHJpZ2dlciB0aGlzIGluIGEgVk0/IEhtbSwgaXMgdGhlcmUgYSBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhlIG13aWZpZXggZHJpdmVyPyBMYXN0IHRpbWUgSSBsb29rZWQsIGBtYWM4MDIxMV9od3NpbWAgaXNuJ3QgZ29pbmcgdG8gY3V0IGl0LCB0aGF0J3MganVzdCBmb3IgdGhlIG1hYzgwMjExIGxheWVyLCB0aGlzIGlzIGEgZnVsbG1hYyBkcml2ZXIsIElJUkMuXG5cblRoZW4sIEknbSB0aGlua2luZyBhYm91dCBob3cgSSBjb3VsZCBwb3RlbnRpYWxseSBlbXVsYXRlIHRoaXMgaW4gYSBmdXp6aW5nIHNldHVwLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBtd2lmaWV4IGNhbiBiZSBwcm9iZWQgdmlhIGEgc3RhbmRhcmQgaW50ZXJmYWNlLiBNYXliZSB2aWEgVVNCLCBTRElPLCBvciBldmVuIFBDSWU/IElmIGl0J3MgVVNCLCB0aGVuIHRoZXJlJ3MgaG9wZS4gU3l6a2FsbGVyIG1pZ2h0IGJlIGFibGUgdG8gZW11bGF0ZSBhIFVTQiBkZXZpY2UgdXNpbmcgYGR1bW15X2hjZGAgYW5kIGByYXctZ2FkZ2V0YC4gU28sIGxldCdzIHNlZSBpZiB0aGVyZSdzIGEgVVNCIGRyaXZlciBmb3IgbXdpZmlleC4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAgaW4gdGhpcyBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjA1LjcwMzIxNzYzOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk4NDQ4MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm13aWZpZXguKnVzYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnPTM3PWNvbmZpZyBNV0lGSUVYX1VTQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctNDUtXFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGl0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnOjQ2OlxcdCAgbXdpZmlleF91c2IuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU9NDI9b2JqLSQoQ09ORklHX01XSUZJRVhfUENJRSkgKz0gbXdpZmlleF9wY2llLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGUtNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlOjQ0Om13aWZpZXhfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX01XSUZJRVhfVVNCKSArPSBtd2lmaWV4X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L01ha2VmaWxlLTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2Z3Lmg9OTA9ZW51bSBLRVlfVFlQRV9JRCB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvZncuaC0xMjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2Z3Lmg6MTIzOmVudW0gbXdpZmlleF91c2JfZXAge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9mdy5oLTEyNC1cXHRNV0lGSUVYX1VTQl9FUF9DTURfRVZFTlQgPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD01NT1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTIzLSAqIERvIG5vdCBjaGVjayBmb3IgZGF0YV9yZWNlaXZlZCBmb3IgVVNCLCBhcyBkYXRhX3JlY2VpdmVkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaDoxMjQ6ICogaXMgaGFuZGxlZCBpbiBtd2lmaWV4X3VzYl9yZWN2IGZvciBVU0JcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTEyNS0gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTM6c3RhdGljIGNvbnN0IHN0cnVjdCBtd2lmaWV4X2lmX29wcyB1c2Jfb3BzO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU6c3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIG13aWZpZXhfdXNiX3RhYmxlW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE2LVxcdC8qIDg3NjYgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Mzk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIG13aWZpZXhfdXNiX3RhYmxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjQxOnN0YXRpYyBpbnQgbXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihzdHJ1Y3QgdXJiX2NvbnRleHQgKmN0eCwgaW50IHNpemUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy00NS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NDY6c3RhdGljIGludCBtd2lmaWV4X3VzYl9yZWN2KHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTQ3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxODc6XFx0XFx0c3RhdHVzID0gbXdpZmlleF91c2JfcmVjdihhZGFwdGVyLCBza2IsIGNvbnRleHQtXFx1MDAzZWVwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE5Ni1cXHRcXHRcXHQgKiB1cmIgZm9yIGNtZF9lcCB3aWxsIGJlIHJlLXN1Ym1pdHRlZCBpbiBjYWxsYmFja1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxOTc6XFx0XFx0XFx0ICogbXdpZmlleF91c2JfcmVjdl9jb21wbGV0ZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xOTgtXFx0XFx0XFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjMyLVxcdGlmIChjYXJkLVxcdTAwM2VyeF9jbWRfZXAgPT0gY29udGV4dC1cXHUwMDNlZXApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjMzOlxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY29udGV4dCwgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yMzUtXFx0XFx0aWYgKGF0b21pY19yZWFkKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyeF9wZW5kaW5nKSBcXHUwMDNjPSBISUdIX1JYX1BFTkRJTkcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjM2OlxcdFxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY29udGV4dCwgc2l6ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTIzNy1cXHRcXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTI0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MjQ1OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMjQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjI4NTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoc3RydWN0IHVyYl9jb250ZXh0ICpjdHgsIGludCBzaXplKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0yODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMxNS1cXHRcXHRcXHRcXHQgdXNiX3JjdmludHBpcGUoY2FyZC1cXHUwMDNldWRldiwgY3R4LVxcdTAwM2VlcCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjMxNjpcXHRcXHRcXHRcXHQgY3R4LVxcdTAwM2Vza2ItXFx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMTctXFx0XFx0XFx0XFx0ICh2b2lkICopY3R4LCBjYXJkLVxcdTAwM2VyeF9jbWRfaW50ZXJ2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTMyMC1cXHRcXHRcXHRcXHQgIHVzYl9yY3ZidWxrcGlwZShjYXJkLVxcdTAwM2V1ZGV2LCBjdHgtXFx1MDAzZWVwKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzIxOlxcdFxcdFxcdFxcdCAgY3R4LVxcdTAwM2Vza2ItXFx1MDAzZWRhdGEsIHNpemUsIG13aWZpZXhfdXNiX3J4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zMjItXFx0XFx0XFx0XFx0ICAodm9pZCAqKWN0eCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzI5LVxcdGlmICh1c2Jfc3VibWl0X3VyYihjdHgtXFx1MDAzZXVyYiwgR0ZQX0FUT01JQykpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MzMwOlxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcXFwidXNiX3N1Ym1pdF91cmIgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzMxLVxcdFxcdGRldl9rZnJlZV9za2JfYW55KGN0eC1cXHUwMDNlc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0zNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjM0NTpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9mcmVlKHN0cnVjdCB1c2JfY2FyZF9yZWMgKmNhcmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTM0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg0LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzozODU6c3RhdGljIGludCBtd2lmaWV4X3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMzg2LVxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTUxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NTE1OlxcdHJldCA9IG13aWZpZXhfYWRkX2NhcmQoY2FyZCwgXFx1MDAyNmNhcmQtXFx1MDAzZWZ3X2RvbmUsIFxcdTAwMjZ1c2Jfb3BzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MTYtXFx0XFx0XFx0ICAgICAgIE1XSUZJRVhfVVNCLCBcXHUwMDI2Y2FyZC1cXHUwMDNldWRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzItICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjUzMzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy01MzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTU5OS0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjAwOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYyNS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVdJRklFWF9SWF9EQVRBX1VSQjsgaSsrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2MjY6XFx0XFx0XFx0bXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfZGF0YV9saXN0W2ldLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02MjctXFx0XFx0XFx0XFx0XFx0XFx0ICBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTYzMS1cXHRcXHRpZiAoY2FyZC1cXHUwMDNlcnhfY21kLnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjMyOlxcdFxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoXFx1MDAyNmNhcmQtXFx1MDAzZXJ4X2NtZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjMzLVxcdFxcdFxcdFxcdFxcdFxcdCAgTVdJRklFWF9SWF9DTURfQlVGX1NJWkUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjQ1OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2Njk6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfY29yZWR1bXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy02NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6Njc4OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtd2lmaWV4X3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY3OTpcXHQubmFtZSA9IFxcXCJtd2lmaWV4X3VzYlxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjY4MDpcXHQucHJvYmUgPSBtd2lmaWV4X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgxOlxcdC5kaXNjb25uZWN0ID0gbXdpZmlleF91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6NjgyOlxcdC5pZF90YWJsZSA9IG13aWZpZXhfdXNiX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODM6XFx0LnN1c3BlbmQgPSBtd2lmaWV4X3VzYl9zdXNwZW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODQ6XFx0LnJlc3VtZSA9IG13aWZpZXhfdXNiX3Jlc3VtZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNjg1LVxcdC5zb2Z0X3VuYmluZCA9IDEsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY4Ni1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo2ODc6XFx0XFx0LmNvcmVkdW1wID0gbXdpZmlleF91c2JfY29yZWR1bXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTY4OC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTcxND1zdGF0aWMgaW50IG13aWZpZXhfcmVhZF9kYXRhX3N5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlciwgdTggKnBidWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzMzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3MzQ6c3RhdGljIHZvaWQgbXdpZmlleF91c2JfcG9ydF9yZXN5bmMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy03NzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjc3NjpzdGF0aWMgYm9vbCBtd2lmaWV4X3VzYl9pc19wb3J0X3JlYWR5KHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTc3Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo3ODk6c3RhdGljIGlubGluZSB1OCBtd2lmaWV4X3VzYl9kYXRhX3NlbnQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtNzkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjgwMTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2NvbnN0cnVjdF9zZW5kX3VyYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MDItXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgdXNiX3R4X2RhdGFfcG9ydCAqcG9ydCwgdTggZXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODE4LVxcdFxcdFxcdFxcdCB1c2Jfc25kaW50cGlwZShjYXJkLVxcdTAwM2V1ZGV2LCBlcCksIHNrYl9zZW5kLVxcdTAwM2VkYXRhLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzo4MTk6XFx0XFx0XFx0XFx0IHNrYl9zZW5kLVxcdTAwM2VsZW4sIG13aWZpZXhfdXNiX3R4X2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjAtXFx0XFx0XFx0XFx0ICh2b2lkICopY29udGV4dCwgY2FyZC1cXHUwMDNldHhfY21kX2ludGVydmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MjQtXFx0XFx0XFx0XFx0ICBza2Jfc2VuZC1cXHUwMDNlZGF0YSwgc2tiX3NlbmQtXFx1MDAzZWxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODI1OlxcdFxcdFxcdFxcdCAgbXdpZmlleF91c2JfdHhfY29tcGxldGUsICh2b2lkICopY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTgyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04MzctXFx0XFx0cG9ydC1cXHUwMDNlYmxvY2tfc3RhdHVzID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6ODM4OlxcdFxcdGFkYXB0ZXItXFx1MDAzZWRhdGFfc2VudCA9IG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODM5LVxcdFxcdHJldCA9IC1FTk9TUjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy04NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjg2MjpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3ByZXBhcmVfdHhfYWdncl9za2Ioc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtODYzLVxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCB1c2JfdHhfZGF0YV9wb3J0ICpwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTk0Ni0gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6OTQ3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfYWdncl90eF9kYXRhKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy05NDgtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA2Mi1cXHRpZiAoZl9zZW5kX2FnZ3JfYnVmKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEwNjM6XFx0XFx0cmV0ID0gbXdpZmlleF91c2JfcHJlcGFyZV90eF9hZ2dyX3NrYihhZGFwdGVyLCBwb3J0LCBcXHUwMDI2c2tiX3NlbmQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDY0LVxcdFxcdGlmICghcmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjUtXFx0XFx0XFx0Y29udGV4dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA2NjpcXHRcXHRcXHRyZXQgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgZXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwNjctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBjb250ZXh0LCBza2Jfc2VuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA3OS1cXHRcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VkYXRhX3NlbnQgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMDgwOlxcdFxcdFxcdFxcdFxcdG13aWZpZXhfdXNiX2RhdGFfc2VudChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTA4MS1cXHRcXHRcXHRcXHQvKiBubyBhdmFpbGFibGUgdXJiLCBwb3N0Y29weSBwYWNrZXQqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEwOTUtXFx0XFx0Y29udGV4dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTA5NjpcXHRcXHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMDk3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGNvbnRleHQsIHNrYl9zZW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTE5OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX3R4X2FnZ3JfdG1vKHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTIwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTI5LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2cG9ydC1cXHUwMDNldHhfYWdncl9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTEzMDpcXHRlcnIgPSBtd2lmaWV4X3VzYl9wcmVwYXJlX3R4X2FnZ3Jfc2tiKGFkYXB0ZXIsIHBvcnQsIFxcdTAwMjZza2Jfc2VuZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExMzEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDAtXFx0XFx0YWRhcHRlci1cXHUwMDNlZGF0YV9zZW50ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE0MTpcXHRcXHRcXHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExNDItXFx0XFx0ZXJyID0gLTE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE0OS1cXHR1cmJfY254dCA9IFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9kYXRhX2xpc3RbcG9ydC1cXHUwMDNldHhfZGF0YV9peCsrXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE1MDpcXHRlcnIgPSBtd2lmaWV4X3VzYl9jb25zdHJ1Y3Rfc2VuZF91cmIoYWRhcHRlciwgcG9ydCwgcG9ydC1cXHUwMDNldHhfZGF0YV9lcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1MS1cXHRcXHRcXHRcXHRcXHQgICAgIHVyYl9jbnh0LCBza2Jfc2VuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTE1OS0vKiBUaGlzIGZ1bmN0aW9uIHdyaXRlIGEgY29tbWFuZC9kYXRhIHBhY2tldCB0byBjYXJkLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMTYwOnN0YXRpYyBpbnQgbXdpZmlleF91c2JfaG9zdF90b19jYXJkKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IGVwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMTYxLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExOTItXFx0XFx0XFx0XFx0XFx0YWRhcHRlci1cXHUwMDNlZGF0YV9zZW50ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTE5MzpcXHRcXHRcXHRcXHRcXHRcXHRtd2lmaWV4X3VzYl9kYXRhX3NlbnQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTExOTQtXFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjAyLVxcdFxcdGlmICghcG9ydCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjAzOlxcdFxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcXFwiV3JvbmcgdXNiIHR4IGRhdGEgcG9ydFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMDQtXFx0XFx0XFx0cmV0dXJuIC0xO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyMDgtXFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZwb3J0LVxcdTAwM2V0eF9hZ2dyX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjA5OlxcdFxcdFxcdHJldCA9ICBtd2lmaWV4X3VzYl9hZ2dyX3R4X2RhdGEoYWRhcHRlciwgZXAsIHNrYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxMC1cXHRcXHRcXHRcXHRcXHRcXHRcXHR0eF9wYXJhbSwgcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIxNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIxODpcXHRyZXR1cm4gbXdpZmlleF91c2JfY29uc3RydWN0X3NlbmRfdXJiKGFkYXB0ZXIsIHBvcnQsIGVwLCBjb250ZXh0LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMjE5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTIyMTpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3R4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTIyMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1Ny1cXHRcXHR0aW1lcl9zZXR1cChcXHUwMDI2cG9ydC1cXHUwMDNldHhfYWdnci50aW1lcl9jbnh0LmhvbGRfdGltZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEyNTg6XFx0XFx0XFx0ICAgIG13aWZpZXhfdXNiX3R4X2FnZ3JfdG1vLCAwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI1OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI2NDpzdGF0aWMgaW50IG13aWZpZXhfdXNiX3J4X2luaXQoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTI3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTI4MDpcXHRpZiAobXdpZmlleF91c2Jfc3VibWl0X3J4X3VyYihcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfY21kLCBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODEtXFx0XFx0cmV0dXJuIC0xO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyODktXFx0XFx0XFx0cmV0dXJuIC0xO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMjkwOlxcdFxcdGlmIChtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9kYXRhX2xpc3RbaV0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEyOTEtXFx0XFx0XFx0XFx0XFx0ICAgICAgTVdJRklFWF9SWF9EQVRBX0JVRl9TSVpFKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMjk5PXN0YXRpYyBpbnQgbXdpZmlleF9yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzM4OnN0YXRpYyB2b2lkIG13aWZpZXhfdXNiX2NsZWFudXBfdHhfYWdncihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xMzU5PXN0YXRpYyB2b2lkIG13aWZpZXhfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxMzYzOlxcdG13aWZpZXhfdXNiX2ZyZWUoY2FyZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTEzNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjEzNjU6XFx0bXdpZmlleF91c2JfY2xlYW51cF90eF9hZ2dyKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xMzY2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTEzNzA9c3RhdGljIGludCBtd2lmaWV4X3Byb2dfZndfd19oZWxwZXIoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTA3OnN0YXRpYyBpbnQgbXdpZmlleF91c2JfZG5sZF9mdyhzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTA4LVxcdFxcdFxcdHN0cnVjdCBtd2lmaWV4X2Z3X2ltYWdlICpmdylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTIzOlxcdHJldCA9IG13aWZpZXhfdXNiX3J4X2luaXQoYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MjQtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1MjU6XFx0XFx0cmV0ID0gbXdpZmlleF91c2JfdHhfaW5pdChhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTUyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTMwPXN0YXRpYyB2b2lkIG13aWZpZXhfc3VibWl0X3J4X3VyYihzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLCB1OCBlcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTM2LVxcdCAgICAoIWF0b21pY19yZWFkKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9jbWRfdXJiX3BlbmRpbmcpKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTUzNzpcXHRcXHRtd2lmaWV4X3VzYl9zdWJtaXRfcnhfdXJiKFxcdTAwMjZjYXJkLVxcdTAwM2VyeF9jbWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1MzgtXFx0XFx0XFx0XFx0XFx0ICBNV0lGSUVYX1JYX0NNRF9CVUZfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU0Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU0MzpzdGF0aWMgaW50IG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZShzdHJ1Y3QgbXdpZmlleF9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTQ0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jPTE1NTI9c3RhdGljIGludCBtd2lmaWV4X3BtX3dha2V1cF9jYXJkKHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU2MzpzdGF0aWMgdm9pZCBtd2lmaWV4X3VzYl9zdWJtaXRfcmVtX3J4X3VyYnMoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU2NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU3Mi1cXHRcXHRjdHggPSBcXHUwMDI2Y2FyZC1cXHUwMDNlcnhfZGF0YV9saXN0W2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTczOlxcdFxcdG13aWZpZXhfdXNiX3N1Ym1pdF9yeF91cmIoY3R4LCBNV0lGSUVYX1JYX0RBVEFfQlVGX1NJWkUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTc0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYz0xNTc5PW13aWZpZXhfcG1fd2FrZXVwX2NhcmRfY29tcGxldGUoc3RydWN0IG13aWZpZXhfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTg0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbXdpZmlleF9pZl9vcHMgdXNiX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU4NS1cXHQucmVnaXN0ZXJfZGV2ID1cXHRcXHRtd2lmaWV4X3JlZ2lzdGVyX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNTkwLVxcdC8qIFVTQiBzcGVjaWZpYyAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTkxOlxcdC5kbmxkX2Z3ID1cXHRcXHRtd2lmaWV4X3VzYl9kbmxkX2Z3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTkyOlxcdC5jbWRyc3BfY29tcGxldGUgPVxcdG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5MzpcXHQuZXZlbnRfY29tcGxldGUgPVxcdG13aWZpZXhfdXNiX2NtZF9ldmVudF9jb21wbGV0ZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTU5NDpcXHQuaG9zdF90b19jYXJkID1cXHRcXHRtd2lmaWV4X3VzYl9ob3N0X3RvX2NhcmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTU6XFx0LnN1Ym1pdF9yZW1fcnhfdXJicyA9XFx0bXdpZmlleF91c2Jfc3VibWl0X3JlbV9yeF91cmJzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYzoxNTk2OlxcdC5tdWx0aV9wb3J0X3Jlc3luYyA9XFx0bXdpZmlleF91c2JfcG9ydF9yZXN5bmMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jOjE1OTc6XFx0LmlzX3BvcnRfcmVhZHkgPVxcdG13aWZpZXhfdXNiX2lzX3BvcnRfcmVhZHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VzYi5jLTE1OTgtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmMtMTU5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvdXNiLmM6MTYwMDptb2R1bGVfdXNiX2RyaXZlcihtd2lmaWV4X3VzYl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91c2IuYy0xNjAxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MjowNy4wMDE2NzEzNDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTU3ODk5ODkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTXdpZmlleCBVU0IgRHJpdmVyIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBtd2lmaWV4YCBoYXMgYSBVU0IgZHJpdmVyLCBzcGVjaWZpY2FsbHkgYG13aWZpZXhfdXNiYC4gVGhpcyBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGF2ZW51ZXMgZm9yIGZ1enppbmcsIHNwZWNpZmljYWxseSB1c2luZyByYXctZ2FkZ2V0IG9yIGR1bW15X2hjZC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoaXMgcGF0Y2ggdGhhdCB0YXJnZXRzIGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgd2l0aGluIGBzdGFfaW9jdGwuY2AuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBwaW5wb2ludCBldmVyeXdoZXJlIGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgaXMgY2FsbGVkLiBGaW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IGlzIHRyaWdnZXJlZCBhbmQgY29uc3RydWN0aW5nIGVmZmVjdGl2ZSBmdXp6aW5nIGlucHV0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MzUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MjoxMC45NTk1NzMxNzNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk0NTAwMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM9MTgzPXN0YXRpYyB2b2lkIG13aWZpZXhfZG5sZF9kdF90eHB3cl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTE5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MTkzOnN0YXRpYyBpbnQgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yMzE9c3RhdGljIGludCBtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTIzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MjM1OlxcdHJldCA9IG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlKHByaXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yMzYtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjI6NDI6MTEuMDE5MDMzNDY5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMDYzMzg3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgY29kZTpcblxuKipBbmFseXppbmcgdGhlIENhbGwgU2l0ZXMgb2YgYG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGVgIGlzIHVzZWQgd2l0aGluIHRoZSBNYXJ2ZWxsIFdpLUZpIGRyaXZlciwgb3Igd2hlcmV2ZXIgaXQgbGl2ZXMuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBpZGVudGlmeSBhbGwgdGhlIHBsYWNlcyBpbiB0aGUgY29kZWJhc2Ugd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIFRoYXQncyB0aGUgZnVuZGFtZW50YWwgZmlyc3Qgc3RlcC4gVW5kZXJzdGFuZGluZyB0aGUgY29udGV4dHMgb2YgaXRzIGludm9jYXRpb24gaXMgY3J1Y2lhbCB0byBkZXRlcm1pbmUgaXRzIHB1cnBvc2UgYW5kIGltcGFjdC4gSSdsbCBuZWVkIHRvIHVzZSBteSB0b29scyDigJMgbGlrZWx5IGEgY29kZSBzZWFyY2ggdXRpbGl0eSBvciBhIGRlYnVnZ2VyIOKAkyB0byByYXBpZGx5IGxvY2F0ZSBhbGwgY2FsbCBzaXRlcy4gRnJvbSB0aGVyZSwgSSBjYW4gYmVnaW4gdG8gaW5mZXIgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQncyBleGVjdXRlZCwgd2hhdCBhcmd1bWVudHMgYXJlIHBhc3NlZCAoaWYgYW55KSwgYW5kIHdoYXQgdGhlIG92ZXJhbGwgZmxvdyBvZiBjb250cm9sIGxvb2tzIGxpa2UuIFRoaXMgaW5pdGlhbCBhbmFseXNpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGl0cyBiYXNpYyByb2xlIGFuZCBzaWduaWZpY2FuY2Ugd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgdGFrZSBhIG1vbWVudCwgYnV0IGl0J3MgZXNzZW50aWFsIGZvciBnZXR0aW5nIGEgZ29vZCBncmFzcCBvbiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjExLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjI6NDI6MTQuNDQ5NjY5MDUzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzY5NzgxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0xOTM9c3RhdGljIGludCBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTIzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MjMxOnN0YXRpYyBpbnQgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMjMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNDM9dm9pZCBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMjQ0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MjQ1OlxcdGlmIChtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZShwcml2KSA9PSAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYy0yNDYtXFx0XFx0cmV0dXJuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MjoxNC41ODMzNzEwMjVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjM1NjE0NDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZTpcblxuKipBbmFseXppbmcgdGhlIENhbGwgU2l0ZXMgb2YgYG13aWZpZXhfZG5sZF90eHB3cl90YWJsZWAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgbXdpZmlleF9kbmxkX3R4cHdyX3RhYmxlYCBmdW5jdGlvbiBpcyBiZWluZyB1c2VkLiBXaGVyZSBpcyBpdCBiZWluZyAqY2FsbGVkKj8gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIHN5c3RlbWF0aWNhbGx5IHRyYWNlIGFsbCB0aGUgcGxhY2VzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZC4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGF0YSBmbG93IGFuZCBvcGVyYXRpb25hbCBjb250ZXh0LiBMZXQncyBzdGFydCBkaWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTc5NywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjE3LjIxODk4Nzc1NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA4MDI0OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXdpZmlleF9kbmxkX3R4cHdyX3RhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM9NjY2PXN0YXRpYyB2b2lkIG13aWZpZXhfcmVnX25vdGlmaWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy02OTUtXFx0XFx0bXdpZmlleF9zZW5kX2RvbWFpbl9pbmZvX2NtZF9mdyh3aXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmM6Njk2OlxcdFxcdG13aWZpZXhfZG5sZF90eHB3cl90YWJsZShwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuYy02OTctXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L21haW4uaD0xNTgwPWludCBtd2lmaWV4X2RubGRfZHRfY2ZnZGF0YShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmgtMTU4MS1cXHRcXHRcXHQgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlLCBjb25zdCBjaGFyICpwcmVmaXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9tYWluLmg6MTU4Mjp2b2lkIG13aWZpZXhfZG5sZF90eHB3cl90YWJsZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvbWFpbi5oLTE1ODMtaW50IG13aWZpZXhfc2VuZF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYsIGNvbnN0IHU4ICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jPTIzMT1zdGF0aWMgaW50IG13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlKHN0cnVjdCBtd2lmaWV4X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMjQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYzoyNDM6dm9pZCBtd2lmaWV4X2RubGRfdHhwd3JfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9zdGFfaW9jdGwuYz0yNTE9c3RhdGljIGludCBtd2lmaWV4X3Byb2Nlc3NfY291bnRyeV9pZShzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jLTMwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmM6MzEwOlxcdG13aWZpZXhfZG5sZF90eHB3cl90YWJsZShwcml2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvc3RhX2lvY3RsLmMtMzExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9jbWQuYz05NzQ9dm9pZCBtd2lmaWV4X3VhcF9zZXRfY2hhbm5lbChzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9jbWQuYy0xMDMxLVxcdFxcdG13aWZpZXhfc2VuZF9kb21haW5faW5mb19jbWRfZncocHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNld2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC91YXBfY21kLmM6MTAzMjpcXHRcXHRtd2lmaWV4X2RubGRfdHhwd3JfdGFibGUocHJpdik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3VhcF9jbWQuYy0xMDMzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMjI6NDI6MTcuMjc5ODA3OTIzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NDgzOTU3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIGByZXF1ZXN0X2Zpcm13YXJlYCBDaGFuZ2UgaW4gdGhlIE1hcnZlbGwgV2ktRmkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJhY2luZyB0aGUgY2FsbHMgdG8gYG13aWZpZXhfZG5sZF90eHB3cl90YWJsZWAuIEkgc2VlIGl0J3MgcmVhY2hlZCBmcm9tIGBtd2lmaWV4X3JlZ19ub3RpZmllcmAg4oCTIHRoYXQncyB0aGUgY2ZnODAyMTEgcmVndWxhdG9yeSBub3RpZmllciwgaW50ZXJlc3Rpbmcg4oCTIGBtd2lmaWV4X3Byb2Nlc3NfY291bnRyeV9pZWAgd2hpY2ggZGVhbHMgd2l0aCB0aGUgY291bnRyeSBJRSBmcm9tIHRoZSBBUCwgYW5kIGFsc28gYG13aWZpZXhfdWFwX3NldF9jaGFubmVsYC4gVGhlc2UgY2FsbCBwYXRocyBzZWVtIGRlZmluaXRlbHkgcmVhY2hhYmxlLlxuXG5UaGUga2V5IGNoYW5nZSBpcyB0aGlzIHN3YXAgZnJvbSBgcmVxdWVzdF9maXJtd2FyZWAgdG8gYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgKmZ1bmN0aW9uYWwqIGNoYW5nZS4gQXZvaWRpbmcgdGhlIHVzZXItbW9kZSBoZWxwZXIgZmFsbGJhY2sgd2l0aCBgcmVxdWVzdF9maXJtd2FyZV9kaXJlY3RgIGNhbiBtYWtlIGEgYmlnIGRpZmZlcmVuY2UsIHBhcnRpY3VsYXJseSBpbiBzY2VuYXJpb3Mgd2hlcmUgdGhlIGhlbHBlcidzIGJsb2NraW5nIGJlaGF2aW9yIGNvdWxkIGJlIHByb2JsZW1hdGljLiBBbHNvLCBpdCdzIG5vdyBwcm9wYWdhdGluZyB0aGUgYWN0dWFsIGVycm9yIGNvZGUgaW5zdGVhZCBvZiBqdXN0IHJldHVybmluZyBgLUVJT2AuIFRoaXMgaXMgYSBiZXR0ZXIgcHJhY3RpY2UuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBHaXZlbiB0aGF0IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciBhbmQgdGhhdCB0aGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiBlbXVsYXRpb24sIGFic29sdXRlbHksIGl0J3Mgd29ydGggaXQuIFdlIHNob3VsZCBmb2N1cyBzcGVjaWZpY2FsbHkgb24gYG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlYCBzaW5jZSBpdCdzIG1vc3QgbGlrZWx5IHRvIHRyaWdnZXIgdGhlIGNoYW5nZWQgY29kZSBwYXRoLlxuXG5CZWZvcmUgZGl2aW5nIGluLCBJIG5lZWQgdG8gdmVyaWZ5IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4gV2UnbGwgbmVlZCBgQ09ORklHX01XSUZJRVhgIGFuZCBgQ09ORklHX01XSUZJRVhfVVNCYCBmb3Igc3VyZS4gQW5kLCBhcyB0aGlzIGlzIGEgd2lyZWxlc3MgZHJpdmVyLCB3ZSBsaWtlbHkgYWxzbyBuZWVkIGBDT05GSUdfQ0ZHODAyMTFgIGFuZCBgQ09ORklHX01BQzgwMjExYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtLiBXZSBuZWVkIHRvIGJlIHN1cmUgd2UgYXJlIG5vdCBtaXNzaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgwNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MjoyMi43MjgyMDYyNzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjQyNjY0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTVdJRklFWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mjpjb25maWcgTVdJRklFWFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvS2NvbmZpZzoxMjpjb25maWcgTVdJRklFWF9TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMTMtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFNEODc4Ni9TRDg3ODcvU0Q4Nzk3L1NEODg4Ny9TRDg4OTcvU0Q4OTc3L1NEODk3OC9TRDg5ODcvU0Q4OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6MjU6Y29uZmlnIE1XSUZJRVhfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9LY29uZmlnLTI2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFdpRmktRXggRHJpdmVyIGZvciBQQ0lFIDg3NjYvODg5Ny84OTk3XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWc6Mzc6Y29uZmlnIE1XSUZJRVhfVVNCXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L0tjb25maWctMzgtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgV2lGaS1FeCBEcml2ZXIgZm9yIFVTQjg3NjYvODc5Ny84OTk3XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQyMjo0MjoyMy4wMDA2Mzc0OTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU0NjIyNjMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1XSUZJRVggRHJpdmVyIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhhdCBgTVdJRklFWGAgYW5kIGBNV0lGSUVYX1VTQmAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMsIHNvIEknbGwgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3MgaW4gdGhlIHN5c3RlbSwganVzdCB0byBiZSB0aG9yb3VnaC5cblxuUmlnaHQsIGBNV0lGSUVYYCBkZXBlbmRzIG9uIGBNQUM4MDIxMWAgYW5kIGBDRkc4MDIxMWAsIHdoaWNoIGlzIHN0YW5kYXJkLiBGb3IgdGhpcyBhbmFseXNpcywgSSBjYW4ganVzdCBmb2N1cyBvbiBsaXN0aW5nIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYC5cblxuTm93LCB0aGUgaW50ZXJlc3RpbmcgYml0LiBUaGlzIHBhdGNoIGNoYW5nZXMgYHJlcXVlc3RfZmlybXdhcmVgIHRvIGByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcy4gSXMgdGhpcyBhIHNpbXBsZSBidWcgZml4LCBvciBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBJdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgaXQgYnlwYXNzZXMgdGhlIHVzZXItbW9kZSBoZWxwZXIuIFRoYXQncyBzaWduaWZpY2FudC4gVGhhdCBjb3VsZCBiZSBjcnVjaWFsIGluIHNjZW5hcmlvcyB3aGVyZSBjYWxsaW5nIHRoZSBoZWxwZXIgaXMgcHJvYmxlbWF0aWMsIG9yIHBlcmhhcHMgdG8gYWNjZWxlcmF0ZSBlcnJvciBoYW5kbGluZy4gSSBhbHNvIHNlZSB0aGF0IHRoZSByZXR1cm4gdmFsdWUgY2hhbmdlcyBmcm9tIGAtRUlPYCB0byBgcmV0YCwgd2hpY2ggaXMgYW5vdGhlciBwb3RlbnRpYWwgcG9pbnQgb2YgY29uY2VybiBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBpZiBub3QgaGFuZGxlZCBjb3JyZWN0bHkuXG5cblNvLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTGV0J3MgbWFrZSBzdXJlIHRoYXQgYG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlYCBpcyB0aGUgb25seSBmdW5jdGlvbiBJIG5lZWQgdG8gZm9jdXMgb24uIE9rYXksIHllcCwgdGhhdCdzIHRoZSBwcmltYXJ5IG9uZSwgYW5kIHBvdGVudGlhbGx5IGBtd2lmaWV4X2RubGRfcmdwb3dlcl90YWJsZWAgYXMgd2VsbC5cblxuSSdsbCBxdWlja2x5IGNoZWNrIGBtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZWAgaW4gYHN0YV9pb2N0bC5jYCB0byBzZWUgaG93IGl0J3MgYmVpbmcgdXNlZC4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTQ1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjI4LjU0Njg2NjYyNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L3N0YV9pb2N0bC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHRcXHR9XFxuIDE5MTpcXHR9XFxuIDE5MjpcXHRcXG4gMTkzOlxcdHN0YXRpYyBpbnQgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG4gMTk0OlxcdHtcXG4gMTk1OlxcdFxcdHN0cnVjdCBtd2lmaWV4XzgwMl8xMWRfZG9tYWluX3JlZyAqZG9tYWluX2luZm8gPSBcXHUwMDI2cHJpdi1cXHUwMDNlYWRhcHRlci1cXHUwMDNlZG9tYWluX3JlZztcXG4gMTk2OlxcdFxcdHN0cnVjdCBtd2lmaWV4X2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVxcdTAwM2VhZGFwdGVyO1xcbiAxOTc6XFx0XFx0Y2hhciByZ3Bvd2VyX3RhYmxlX25hbWVbMzBdO1xcbiAxOTg6XFx0XFx0Y2hhciBjb3VudHJ5X2NvZGVbM107XFxuIDE5OTpcXHRcXHRpbnQgcmV0O1xcbiAyMDA6XFx0XFxuIDIwMTpcXHRcXHRzdHJzY3B5KGNvdW50cnlfY29kZSwgZG9tYWluX2luZm8tXFx1MDAzZWNvdW50cnlfY29kZSwgc2l6ZW9mKGNvdW50cnlfY29kZSkpO1xcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQvKiBXb3JsZCByZWd1bGF0b3J5IGRvbWFpbiBcXFwiMDBcXFwiIGhhcyBXVyBhcyBjb3VudHJ5IGNvZGUgKi9cXG4gMjA0OlxcdFxcdGlmIChzdHJuY21wKGNvdW50cnlfY29kZSwgXFxcIjAwXFxcIiwgMikgPT0gMClcXG4gMjA1OlxcdFxcdFxcdHN0cnNjcHkoY291bnRyeV9jb2RlLCBcXFwiV1dcXFwiLCBzaXplb2YoY291bnRyeV9jb2RlKSk7XFxuIDIwNjpcXHRcXG4gMjA3OlxcdFxcdHNucHJpbnRmKHJncG93ZXJfdGFibGVfbmFtZSwgc2l6ZW9mKHJncG93ZXJfdGFibGVfbmFtZSksXFxuIDIwODpcXHRcXHRcXHQgXFxcIm54cC9yZ3Bvd2VyXyVzLmJpblxcXCIsIGNvdW50cnlfY29kZSk7XFxuIDIwOTpcXHRcXG4gMjEwOlxcdFxcdG13aWZpZXhfZGJnKGFkYXB0ZXIsIElORk8sIFxcXCJpbmZvOiAlczogcmVxdWVzdGluZyByZWd1bGF0b3J5IHBvd2VyIHRhYmxlICVzXFxcXG5cXFwiLFxcbiAyMTE6XFx0XFx0XFx0ICAgIF9fZnVuY19fLCByZ3Bvd2VyX3RhYmxlX25hbWUpO1xcbiAyMTI6XFx0XFxuIDIxMzpcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlcmdwb3dlcl9kYXRhKSB7XFxuIDIxNDpcXHRcXHRcXHRyZWxlYXNlX2Zpcm13YXJlKGFkYXB0ZXItXFx1MDAzZXJncG93ZXJfZGF0YSk7XFxuIDIxNTpcXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VyZ3Bvd2VyX2RhdGEgPSBOVUxMO1xcbiAyMTY6XFx0XFx0fVxcbiAyMTc6XFx0XFxuIDIxODpcXHRcXHRyZXQgPSByZXF1ZXN0X2Zpcm13YXJlX2RpcmVjdChcXHUwMDI2YWRhcHRlci1cXHUwMDNlcmdwb3dlcl9kYXRhLCByZ3Bvd2VyX3RhYmxlX25hbWUsXFxuIDIxOTpcXHRcXHRcXHRcXHRcXHQgICAgICBhZGFwdGVyLVxcdTAwM2VkZXYpO1xcbiAyMjA6XFx0XFxuIDIyMTpcXHRcXHRpZiAocmV0KSB7XFxuIDIyMjpcXHRcXHRcXHRtd2lmaWV4X2RiZyhcXG4gMjIzOlxcdFxcdFxcdFxcdGFkYXB0ZXIsIElORk8sXFxuIDIyNDpcXHRcXHRcXHRcXHRcXFwiaW5mbzogJXM6IGZhaWxlZCB0byByZXF1ZXN0IHJlZ3VsYXRvcnkgcG93ZXIgdGFibGU6ICVkXFxcXG5cXFwiLFxcbiAyMjU6XFx0XFx0XFx0XFx0X19mdW5jX18sIHJldCk7XFxuIDIyNjpcXHRcXHR9XFxuIDIyNzpcXHRcXG4gMjI4OlxcdFxcdHJldHVybiByZXQ7XFxuIDIyOTpcXHR9XFxuIDIzMDpcXHRcXG4gMjMxOlxcdHN0YXRpYyBpbnQgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGUoc3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdilcXG4gMjMyOlxcdHtcXG4gMjMzOlxcdFxcdGludCByZXQ7XFxuIDIzNDpcXHRcXG4gMjM1OlxcdFxcdHJldCA9IG13aWZpZXhfcmVxdWVzdF9yZ3Bvd2VyX3RhYmxlKHByaXYpO1xcbiAyMzY6XFx0XFx0aWYgKHJldClcXG4gMjM3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDIzODpcXHRcXG4gMjM5OlxcdFxcdHJldHVybiBtd2lmaWV4X3NlbmRfcmdwb3dlcl90YWJsZShwcml2LCBwcml2LVxcdTAwM2VhZGFwdGVyLVxcdTAwM2VyZ3Bvd2VyX2RhdGEtXFx1MDAzZWRhdGEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjI4LjU0Njk3NDgwNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTc3MjY5ODg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV3IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBsb29rcyBzb2xpZC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIG13aWZpZXggZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGhvdyB0aGUgZmlybXdhcmUgbG9hZHMgcmVndWxhdG9yeSBwb3dlciB0YWJsZXMuIEl0IHNlZW1zIHRvIGltcHJvdmUgdGhhdCBwcm9jZXNzIGJ5IGxldmVyYWdpbmcgYHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0YCwgd2hpY2ggYnlwYXNzZXMgdGhlIHVzZXItbW9kZSBoZWxwZXIuIFRoYXTigJlzIGEgZ29vZCBtb3ZlOyB3ZSBhbGwga25vdyB0aG9zZSB1c2VyLW1vZGUgaGVscGVycyBjYW4gYmUgYSByZWFsIGJvdHRsZW5lY2sgYW5kIGEgcG90ZW50aWFsIHNvdXJjZSBvZiBoYW5ncyBhbmQgdGltZW91dHMuIFRoZSBmYWN0IHRoYXQgdGhlIGVycm9yIGNvZGUgcHJvcGFnYXRpb24gaGFzIGFsc28gYmVlbiBtb2RpZmllZCBmdXJ0aGVyIHN1cHBvcnRzIHRoYXQgaXQgaXMgZnVuY3Rpb25hbCwgYW5kIG5vdCBqdXN0IGEgY29zbWV0aWMgY2hhbmdlLlxuXG5HaXZlbiB0aGlzLCBJJ20gZGVmaW5pdGVseSBnb2luZyB0byBmbGFnIHRoaXMgYXMgXCJXb3J0aEZ1enppbmdcIiAtIGl0J3MgcmlwZSBmb3IgZXhwbG9yYXRpb24uIE15IHByaW1hcnkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBgbXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVgIGFuZCBgbXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGVgIGZ1bmN0aW9uczsgdGhvc2UgYXJlIGNsZWFybHkgd2hlcmUgdGhlIGNvcmUgY2hhbmdlcyBhcmUgaGFwcGVuaW5nLiBJJ2xsIGFsc28gbmVlZCB0byBlbmFibGUgdGhlIGBNV0lGSUVYYCBhbmQgYE1XSUZJRVhfVVNCYCBjb25maWd1cmF0aW9ucyB0byBlbnN1cmUgYSBnb29kIHRlc3QgY292ZXJhZ2UuXG5cbkxldCdzIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIHN0YW5kYXJkIHN1c3BlY3RzIGFyZSBzZXQgY29ycmVjdGx5LiBJJ2QgZXhwZWN0IHRoYXQgYEZXX0xPQURFUmAgaXMgZW5hYmxlZCwgYW5kIGBDRkc4MDIxMWAgaXMgdXN1YWxseSBlbmFibGVkIHRvbywgc28gSSdsbCBjaGVjayB0aG9zZSBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5BbHJpZ2h0LCBJJ20gY29uZmlkZW50IGluIHRoZSBhbmFseXNpcy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Mzc2LCJPdXRwdXRUb2tlbnMiOjE0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDIyOjQyOjM0LjEyNDI0NzUxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODExMTQwNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1XSUZJRVhcIixcbiAgICBcIk1XSUZJRVhfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXdpZmlleF9yZXF1ZXN0X3JncG93ZXJfdGFibGVcIixcbiAgICBcIm13aWZpZXhfZG5sZF9yZ3Bvd2VyX3RhYmxlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgZmlybXdhcmUgbG9hZGluZyBiZWhhdmlvciBmb3IgcmVndWxhdG9yeSBwb3dlciB0YWJsZXMgaW4gdGhlIG13aWZpZXggZHJpdmVyLCBzd2l0Y2hpbmcgZnJvbSByZXF1ZXN0X2Zpcm13YXJlIHRvIHJlcXVlc3RfZmlybXdhcmVfZGlyZWN0IHRvIGF2b2lkIHRoZSB1c2VyLW1vZGUgaGVscGVyIGZhbGxiYWNrLiBJdCBhbHNvIHByb3BhZ2F0ZXMgdGhlIGV4YWN0IGVycm9yIGNvZGUgaW5zdGVhZCBvZiByZXR1cm5pbmcgLUVJTy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVdJRklFWFwiLFxuICAgIFwiTVdJRklFWF9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtd2lmaWV4X3JlcXVlc3Rfcmdwb3dlcl90YWJsZVwiLFxuICAgIFwibXdpZmlleF9kbmxkX3JncG93ZXJfdGFibGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBmaXJtd2FyZSBsb2FkaW5nIGJlaGF2aW9yIGZvciByZWd1bGF0b3J5IHBvd2VyIHRhYmxlcyBpbiB0aGUgbXdpZmlleCBkcml2ZXIsIHN3aXRjaGluZyBmcm9tIHJlcXVlc3RfZmlybXdhcmUgdG8gcmVxdWVzdF9maXJtd2FyZV9kaXJlY3QgdG8gYXZvaWQgdGhlIHVzZXItbW9kZSBoZWxwZXIgZmFsbGJhY2suIEl0IGFsc28gcHJvcGFnYXRlcyB0aGUgZXhhY3QgZXJyb3IgY29kZSBpbnN0ZWFkIG9mIHJldHVybmluZyAtRUlPLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowhfdjb[1] Phase: Succeeded StartedAt: 2026-07-12 22:42:46 +0000 UTC FinishedAt: 2026-07-12 22:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-12 22:42:46 +0000 UTC FinishedAt: 2026-07-12 22:42:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2] Phase: Succeeded StartedAt: 2026-07-12 22:42:46 +0000 UTC FinishedAt: 2026-07-12 23:52:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-12 22:42:46 +0000 UTC FinishedAt: 2026-07-12 23:52:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-12 22:42:46 +0000 UTC FinishedAt: 2026-07-12 22:42:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-12 22:42:46 +0000 UTC FinishedAt: 2026-07-12 22:42:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowhfdjb/series-workflowhfdjb-convert-artifact-3060477995/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-12 22:42:56 +0000 UTC FinishedAt: 2026-07-12 23:07:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-12 22:42:56 +0000 UTC FinishedAt: 2026-07-12 23:07:47 +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:*16972bf8-b673-409b-985d-cd29932e0445,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-workflowhfdjb/series-workflowhfdjb-convert-artifact-3060477995/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": "4c973fc6-fc99-47ca-9be4-cf98177379a1", "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-workflowhfdjb/series-workflowhfdjb-build-action-4139696425/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-12 22:42:56 +0000 UTC FinishedAt: 2026-07-12 23:07:37 +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:*16972bf8-b673-409b-985d-cd29932e0445,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-workflowhfdjb/series-workflowhfdjb-convert-artifact-3060477995/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": "4c973fc6-fc99-47ca-9be4-cf98177379a1", "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-workflowhfdjb/series-workflowhfdjb-build-action-4139696425/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-12 23:07:47 +0000 UTC FinishedAt: 2026-07-12 23:07:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-12 23:07:47 +0000 UTC FinishedAt: 2026-07-12 23:07:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-12 23:07:47 +0000 UTC FinishedAt: 2026-07-12 23:07:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-12 23:07:47 +0000 UTC FinishedAt: 2026-07-12 23:07:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowhfdjb/series-workflowhfdjb-convert-artifact-2493851650/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-12 23:07:57 +0000 UTC FinishedAt: 2026-07-12 23:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-12 23:07:57 +0000 UTC FinishedAt: 2026-07-12 23:09:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4c973fc6-fc99-47ca-9be4-cf98177379a1,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-workflowhfdjb/series-workflowhfdjb-build-action-4139696425/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-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-12 23:10:01 +0000 UTC FinishedAt: 2026-07-12 23:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-12 23:10:01 +0000 UTC FinishedAt: 2026-07-12 23:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-12 23:10:01 +0000 UTC FinishedAt: 2026-07-12 23:49:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-12 23:10:01 +0000 UTC FinishedAt: 2026-07-12 23:49:58 +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:*16972bf8-b673-409b-985d-cd29932e0445,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-workflowhfdjb/series-workflowhfdjb-convert-artifact-2493851650/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": "1aefc7d4-8c49-4b8b-bf3a-9a1078c9acca", "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-workflowhfdjb/series-workflowhfdjb-build-action-3654881878/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-12 23:10:01 +0000 UTC FinishedAt: 2026-07-12 23:49:48 +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:*16972bf8-b673-409b-985d-cd29932e0445,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-workflowhfdjb/series-workflowhfdjb-convert-artifact-2493851650/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": "1aefc7d4-8c49-4b8b-bf3a-9a1078c9acca", "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-workflowhfdjb/series-workflowhfdjb-build-action-3654881878/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-12 23:49:58 +0000 UTC FinishedAt: 2026-07-12 23:49:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-12 23:49:58 +0000 UTC FinishedAt: 2026-07-12 23:49:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-12 23:49:58 +0000 UTC FinishedAt: 2026-07-12 23:51:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-12 23:49:58 +0000 UTC FinishedAt: 2026-07-12 23:51:23 +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:*1aefc7d4-8c49-4b8b-bf3a-9a1078c9acca,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-workflowhfdjb/series-workflowhfdjb-build-action-3654881878/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-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-12 23:51:33 +0000 UTC FinishedAt: 2026-07-12 23:52:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-12 23:51:33 +0000 UTC FinishedAt: 2026-07-12 23:52:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"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:*4c973fc6-fc99-47ca-9be4-cf98177379a1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1aefc7d4-8c49-4b8b-bf3a-9a1078c9acca,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-workflowhfdjb/series-workflowhfdjb-build-action-4139696425/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-workflowhfdjb/series-workflowhfdjb-build-action-3654881878/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-12 23:51:33 +0000 UTC FinishedAt: 2026-07-12 23:51:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-12 23:51:33 +0000 UTC FinishedAt: 2026-07-12 23:51:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"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-workflowhfdjb/series-workflowhfdjb-convert-artifact-3728327735/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-12 23:51:33 +0000 UTC FinishedAt: 2026-07-12 23:51:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-12 23:51:33 +0000 UTC FinishedAt: 2026-07-12 23:51:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-12 23:51:33 +0000 UTC FinishedAt: 2026-07-12 23:51:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-12 23:51:43 +0000 UTC FinishedAt: 2026-07-12 23:52:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfdjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mwifiex_request_rgpower_table","mwifiex_dnld_rgpower_table"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"44696aa3a489d2baf58efa61b37833f100072bee","config_name":"upstream-apparmor-kasan.config","enable_configs":["MWIFIEX","MWIFIEX_USB"],"series_id":"d5542982-2f2d-4e39-8c92-c2e54ddbe7b0","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-12 23:51:43 +0000 UTC FinishedAt: 2026-07-12 23:52:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4c973fc6-fc99-47ca-9be4-cf98177379a1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1aefc7d4-8c49-4b8b-bf3a-9a1078c9acca,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-workflowhfdjb/series-workflowhfdjb-build-action-4139696425/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-workflowhfdjb/series-workflowhfdjb-build-action-3654881878/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-workflowhfdjb/series-workflowhfdjb-convert-artifact-3728327735/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,}