Name: series-workflowdshd8 Phase: Failed StartedAt: 2026-06-24 18:51:10 +0000 UTC FinishedAt: 2026-06-24 19:03:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdshd8[0] Phase: Succeeded StartedAt: 2026-06-24 18:51:10 +0000 UTC FinishedAt: 2026-06-24 19:02:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdshd8[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 18:51:10 +0000 UTC FinishedAt: 2026-06-24 19:02:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBhbiB1bnVzZWQgbWFjcm8gKGBmb3JfZWFjaF9tZW1fY2dyb3VwYCksIGEgcmVkdW5kYW50IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIChgbWVtY2dfZXZlbnRzYCksIGFuZCB1cGRhdGVzIGEgY29tbWVudC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODAxY2U1MzAzZTMzZjRhNjYwNjRjZDgyZmQ3OTEyZDMxNzcwYTMwYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE5OjAyOjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wtdjEuaCBiL21tL21lbWNvbnRyb2wtdjEuaFxuaW5kZXggZjkyZjgxMTA4ZDVlZDIuLmQzZWQ1YjkzMjkwZmJiIDEwMDY0NFxuLS0tIGEvbW0vbWVtY29udHJvbC12MS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1jb250cm9sLXYxLmhcbkBAIC0xNywxNCAmIzQzOzE3LDggQEBcbiBcdCAgICAgaXRlciAhPSBOVUxMO1x0XHRcdFx0XFxcbiBcdCAgICAgaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihyb290LCBpdGVyLCBOVUxMKSlcbiBcbi0jZGVmaW5lIGZvcl9lYWNoX21lbV9jZ3JvdXAoaXRlcilcdFx0XHRcXFxuLVx0Zm9yIChpdGVyID0gbWVtX2Nncm91cF9pdGVyKE5VTEwsIE5VTEwsIE5VTEwpO1x0XFxcbi1cdCAgICAgaXRlciAhPSBOVUxMO1x0XHRcdFx0XFxcbi1cdCAgICAgaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihOVUxMLCBpdGVyLCBOVUxMKSlcbi1cbiB2b2lkIGRyYWluX2FsbF9zdG9jayhzdHJ1Y3QgbWVtX2Nncm91cCAqcm9vdF9tZW1jZyk7XG4gXG4tdW5zaWduZWQgbG9uZyBtZW1jZ19ldmVudHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgZXZlbnQpO1xuIGludCBtZW1vcnlfc3RhdF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdik7XG4gXG4gc3RydWN0IG1lbV9jZ3JvdXAgKm1lbV9jZ3JvdXBfcHJpdmF0ZV9pZF9nZXRfb25saW5lKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmNcbmluZGV4IDU2Y2Q0YWYwODIzMjZiLi5lMTcxZmUzNmIwNzExNyAxMDA2NDRcbi0tLSBhL21tL21lbWNvbnRyb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC5jXG5AQCAtNDIxNiw3ICYjNDM7NDIxNiw3IEBAIHN0YXRpYyBpbnQgbWVtX2Nncm91cF9jc3Nfb25saW5lKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MpXG4gXHQvKlxuIFx0ICogQSBtZW1jZyBtdXN0IGJlIHZpc2libGUgZm9yIGV4cGFuZF9zaHJpbmtlcl9pbmZvKClcbiBcdCAqIGJ5IHRoZSB0aW1lIHRoZSBtYXBzIGFyZSBhbGxvY2F0ZWQuIFNvLCB3ZSBhbGxvY2F0ZSBtYXBzXG4tXHQgKiBoZXJlLCB3aGVuIGZvcl9lYWNoX21lbV9jZ3JvdXAoKSBjYW4mIzM5O3Qgc2tpcCBpdC5cbiYjNDM7XHQgKiBoZXJlLCB3aGVuIG1lbV9jZ3JvdXBfaXRlcigpIGNhbiYjMzk7dCBza2lwIGl0LlxuIFx0ICovXG4gXHRpZiAoYWxsb2Nfc2hyaW5rZXJfaW5mbyhtZW1jZykpXG4gXHRcdGdvdG8gb2ZmbGluZV9rbWVtO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBhbiB1bnVzZWQgbWFjcm8gKGBmb3JfZWFjaF9tZW1fY2dyb3VwYCksIGEgcmVkdW5kYW50IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIChgbWVtY2dfZXZlbnRzYCksIGFuZCB1cGRhdGVzIGEgY29tbWVudC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MDFjZTUzMDNlMzNmNGE2NjA2NGNkODJmZDc5MTJkMzE3NzBhMzBhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMTk6MDI6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLXYxLmggYi9tbS9tZW1jb250cm9sLXYxLmgKaW5kZXggZjkyZjgxMTA4ZDVlZDIuLmQzZWQ1YjkzMjkwZmJiIDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9sLXYxLmgKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC12MS5oCkBAIC0xNywxNCAmIzQzOzE3LDggQEAKIAkgICAgIGl0ZXIgIT0gTlVMTDsJCQkJXAogCSAgICAgaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihyb290LCBpdGVyLCBOVUxMKSkKIAotI2RlZmluZSBmb3JfZWFjaF9tZW1fY2dyb3VwKGl0ZXIpCQkJXAotCWZvciAoaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihOVUxMLCBOVUxMLCBOVUxMKTsJXAotCSAgICAgaXRlciAhPSBOVUxMOwkJCQlcCi0JICAgICBpdGVyID0gbWVtX2Nncm91cF9pdGVyKE5VTEwsIGl0ZXIsIE5VTEwpKQotCiB2b2lkIGRyYWluX2FsbF9zdG9jayhzdHJ1Y3QgbWVtX2Nncm91cCAqcm9vdF9tZW1jZyk7CiAKLXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTsKIGludCBtZW1vcnlfc3RhdF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdik7CiAKIHN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX3ByaXZhdGVfaWRfZ2V0X29ubGluZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmMKaW5kZXggNTZjZDRhZjA4MjMyNmIuLmUxNzFmZTM2YjA3MTE3IDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9sLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC5jCkBAIC00MjE2LDcgJiM0Mzs0MjE2LDcgQEAgc3RhdGljIGludCBtZW1fY2dyb3VwX2Nzc19vbmxpbmUoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcykKIAkvKgogCSAqIEEgbWVtY2cgbXVzdCBiZSB2aXNpYmxlIGZvciBleHBhbmRfc2hyaW5rZXJfaW5mbygpCiAJICogYnkgdGhlIHRpbWUgdGhlIG1hcHMgYXJlIGFsbG9jYXRlZC4gU28sIHdlIGFsbG9jYXRlIG1hcHMKLQkgKiBoZXJlLCB3aGVuIGZvcl9lYWNoX21lbV9jZ3JvdXAoKSBjYW4mIzM5O3Qgc2tpcCBpdC4KJiM0MzsJICogaGVyZSwgd2hlbiBtZW1fY2dyb3VwX2l0ZXIoKSBjYW4mIzM5O3Qgc2tpcCBpdC4KIAkgKi8KIAlpZiAoYWxsb2Nfc2hyaW5rZXJfaW5mbyhtZW1jZykpCiAJCWdvdG8gb2ZmbGluZV9rbWVtOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1pbm9yIE1lbW9yeSBDb250cm9sIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYW5pbmcgdXAgc29tZSB1bnVzZWQgY29kZSBpbiB0aGUgbWVtb3J5IGNvbnRyb2wgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGF4aW5nIHRoZSBgZm9yX2VhY2hfbWVtX2Nncm91cGAgbWFjcm8gYW5kIHRoZSBgbWVtY2dfZXZlbnRzYCBmdW5jdGlvbiBkZWNsYXJhdGlvbiBmcm9tIGBtbS9tZW1jb250cm9sLXYxLmhgLiBJdCBhbHNvIHRvdWNoZXMgYSBjb21tZW50IGluIGBtbS9tZW1jb250cm9sLmNgLiBIbW0sIGp1c3QgYSBjbGVhbnVwLCB0aGVuPyBMb29rcyBsaWtlIGl0LgoKSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2gsIGV2ZW4gd2l0aCBzb21ldGhpbmcgdGhpcyBzZWVtaW5nbHkgdHJpdmlhbC4gQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgZm9yX2VhY2hfbWVtX2Nncm91cGAgYW5kIGBtZW1jZ19ldmVudHNgIHJlYWxseSAqYXJlKiB1bnVzZWQuIE5vIHBvaW50IGluIGJyZWFraW5nIGFueXRoaW5nIGZvciBhIG1pbm9yIGNsZWFudXAuIExldCYjMzk7cyBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIGlmIHRoZXkmIzM5O3JlIGx1cmtpbmcgYW55d2hlcmUgZWxzZSBpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBHb3R0YSBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGhpZGRlbiBkZXBlbmRlbmNpZXMgb3IgdW5leHBlY3RlZCB1c2VzLiBKdXN0IGEgcXVpY2sgZG91YmxlLWNoZWNrIGZvciBzYWZldHkmIzM5O3Mgc2FrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb3JfZWFjaF9tZW1fY2dyb3VwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wtdjEuYz03Njc9c3RhdGljIHZvaWQgbWVtX2Nncm91cF9vb21fbm90aWZ5KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtNzcwLVxubW0vbWVtY29udHJvbC12MS5jOjc3MTpcdGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCBtZW1jZylcbm1tL21lbWNvbnRyb2wtdjEuYy03NzItXHRcdG1lbV9jZ3JvdXBfb29tX25vdGlmeV9jYihpdGVyKTtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTI2ND1zdGF0aWMgYm9vbCBtZW1fY2dyb3VwX29vbV90cnlsb2NrKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtMTI2OS1cbm1tL21lbWNvbnRyb2wtdjEuYzoxMjcwOlx0Zm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIG1lbWNnKSB7XG5tbS9tZW1jb250cm9sLXYxLmMtMTI3MS1cdFx0aWYgKGl0ZXItXHUwMDNlb29tX2xvY2spIHtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtMTI4Ny1cdFx0ICovXG5tbS9tZW1jb250cm9sLXYxLmM6MTI4ODpcdFx0Zm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIG1lbWNnKSB7XG5tbS9tZW1jb250cm9sLXYxLmMtMTI4OS1cdFx0XHRpZiAoaXRlciA9PSBmYWlsZWQpIHtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTMwMz1zdGF0aWMgdm9pZCBtZW1fY2dyb3VwX29vbV91bmxvY2soc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuLS1cbm1tL21lbWNvbnRyb2wtdjEuYy0xMzA4LVx0bXV0ZXhfcmVsZWFzZShcdTAwMjZtZW1jZ19vb21fbG9ja19kZXBfbWFwLCBfUkVUX0lQXyk7XG5tbS9tZW1jb250cm9sLXYxLmM6MTMwOTpcdGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCBtZW1jZylcbm1tL21lbWNvbnRyb2wtdjEuYy0xMzEwLVx0XHRpdGVyLVx1MDAzZW9vbV9sb2NrID0gZmFsc2U7XG4tLVxubW0vbWVtY29udHJvbC12MS5jPTEzMTQ9c3RhdGljIHZvaWQgbWVtX2Nncm91cF9tYXJrX3VuZGVyX29vbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTEzMTgtXHRzcGluX2xvY2soXHUwMDI2bWVtY2dfb29tX2xvY2spO1xubW0vbWVtY29udHJvbC12MS5jOjEzMTk6XHRmb3JfZWFjaF9tZW1fY2dyb3VwX3RyZWUoaXRlciwgbWVtY2cpXG5tbS9tZW1jb250cm9sLXYxLmMtMTMyMC1cdFx0aXRlci1cdTAwM2V1bmRlcl9vb20mIzQzOyYjNDM7O1xuLS1cbm1tL21lbWNvbnRyb2wtdjEuYz0xMzI0PXN0YXRpYyB2b2lkIG1lbV9jZ3JvdXBfdW5tYXJrX3VuZGVyX29vbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTEzMzItXHRzcGluX2xvY2soXHUwMDI2bWVtY2dfb29tX2xvY2spO1xubW0vbWVtY29udHJvbC12MS5jOjEzMzM6XHRmb3JfZWFjaF9tZW1fY2dyb3VwX3RyZWUoaXRlciwgbWVtY2cpXG5tbS9tZW1jb250cm9sLXYxLmMtMTMzNC1cdFx0aWYgKGl0ZXItXHUwMDNldW5kZXJfb29tIFx1MDAzZSAwKVxuLS1cbm1tL21lbWNvbnRyb2wtdjEuaC0xNC0gKi9cbm1tL21lbWNvbnRyb2wtdjEuaDoxNTojZGVmaW5lIGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCByb290KVx0XHRcXFxubW0vbWVtY29udHJvbC12MS5oLTE2LVx0Zm9yIChpdGVyID0gbWVtX2Nncm91cF9pdGVyKHJvb3QsIE5VTEwsIE5VTEwpO1x0XFxcbi0tXG5tbS9tZW1jb250cm9sLmM9MTM2Mj12b2lkIG1lbV9jZ3JvdXBfc2Nhbl90YXNrcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG4tLVxubW0vbWVtY29udHJvbC5jLTEzNjktXG5tbS9tZW1jb250cm9sLmM6MTM3MDpcdGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCBtZW1jZykge1xubW0vbWVtY29udHJvbC5jLTEzNzEtXHRcdHN0cnVjdCBjc3NfdGFza19pdGVyIGl0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbWNnX2V2ZW50cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD05MTM9c3RhdGljIGlubGluZSB2b2lkIG1vZF9tZW1jZ19wYWdlX3N0YXRlKHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTkyNy1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjkyODp1bnNpZ25lZCBsb25nIG1lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBldmVudCk7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05MjktdW5zaWduZWQgbG9uZyBtZW1jZ19wYWdlX3N0YXRlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGlkeCk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9OTQwPXZvaWQgbW9kX2xydXZlY19rbWVtX3N0YXRlKHZvaWQgKnAsIGVudW0gbm9kZV9zdGF0X2l0ZW0gaWR4LCBpbnQgdmFsKTtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk0MS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk0Mjp2b2lkIGNvdW50X21lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGVudW0gdm1fZXZlbnRfaXRlbSBpZHgsXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NDMtXHRcdFx0dW5zaWduZWQgbG9uZyBjb3VudCk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9OTQ1PXN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9tZW1jZ19mb2xpb19ldmVudHMoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NTQtXHRtZW1jZyA9IGZvbGlvX21lbWNnKGZvbGlvKTtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk1NTpcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgaWR4LCBucik7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NTYtXHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NTgtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDo5NTk6c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2V2ZW50c19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk2MC1cdFx0XHRcdFx0ZW51bSB2bV9ldmVudF9pdGVtIGlkeCwgdW5zaWduZWQgbG9uZyBjb3VudClcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NjktXHRpZiAobGlrZWx5KG1lbWNnKSlcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk3MDpcdFx0Y291bnRfbWVtY2dfZXZlbnRzKG1lbWNnLCBpZHgsIGNvdW50KTtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk3MS1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTk3ND1zdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbWVtY2dfZXZlbnRfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTc2LXtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk3NzpcdGNvdW50X21lbWNnX2V2ZW50c19tbShtbSwgaWR4LCAxKTtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk3OC19XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTM5NT1zdGF0aWMgaW5saW5lIHZvaWQgbW9kX2xydXZlY19rbWVtX3N0YXRlKHZvaWQgKnAsIGVudW0gbm9kZV9zdGF0X2l0ZW0gaWR4LFxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE0MDItXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxNDAzOnN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9tZW1jZ19ldmVudHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQwNC1cdFx0XHRcdFx0ZW51bSB2bV9ldmVudF9pdGVtIGlkeCxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNDA5PXN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9tZW1jZ19mb2xpb19ldmVudHMoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDEzLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTQxNDpzdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbWVtY2dfZXZlbnRzX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQxNS1cdFx0XHRcdFx0ZW51bSB2bV9ldmVudF9pdGVtIGlkeCwgdW5zaWduZWQgbG9uZyBjb3VudClcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNzQ2PXN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9vYmpjZ19ldmVudHMoc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnLFxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE3NTYtXHRtZW1jZyA9IG9ial9jZ3JvdXBfbWVtY2cob2JqY2cpO1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTc1NzpcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgaWR4LCBjb3VudCk7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNzU4LVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWVtY2cuaD00OD1ERUNMQVJFX0VWRU5UX0NMQVNTKG1lbWNnX3JzdGF0X2V2ZW50cyxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9tZW1jZy5oLTY5LVxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWVtY2cuaDo3MDpERUZJTkVfRVZFTlQobWVtY2dfcnN0YXRfZXZlbnRzLCBjb3VudF9tZW1jZ19ldmVudHMsXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9tZW1jZy5oLTcxLVxuLS1cbm1tL2JwZl9tZW1jb250cm9sLmM9OTI9X19icGZfa2Z1bmMgdW5zaWduZWQgbG9uZyBicGZfbWVtX2Nncm91cF92bV9ldmVudHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL2JwZl9tZW1jb250cm9sLmMtOTctXG5tbS9icGZfbWVtY29udHJvbC5jOjk4Olx0cmV0dXJuIG1lbWNnX2V2ZW50cyhtZW1jZywgZXZlbnQpO1xubW0vYnBmX21lbWNvbnRyb2wuYy05OS19XG4tLVxubW0vbWVtY29udHJvbC12MS5jPTUzMz1zdGF0aWMgdm9pZCBtZW1jZzFfY2hhcmdlX3N0YXRpc3RpY3Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgbnJfcGFnZXMpXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTUzNi1cdGlmIChucl9wYWdlcyBcdTAwM2UgMClcbm1tL21lbWNvbnRyb2wtdjEuYzo1Mzc6XHRcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgUEdQR0lOLCAxKTtcbm1tL21lbWNvbnRyb2wtdjEuYy01MzgtXHRlbHNlIHtcbm1tL21lbWNvbnRyb2wtdjEuYzo1Mzk6XHRcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgUEdQR09VVCwgMSk7XG5tbS9tZW1jb250cm9sLXYxLmMtNTQwLVx0XHRucl9wYWdlcyA9IC1ucl9wYWdlczsgLyogZm9yIGV2ZW50ICovXG4tLVxubW0vbWVtY29udHJvbC12MS5jPTcyOD12b2lkIG1lbWNnMV91bmNoYXJnZV9iYXRjaChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGxvbmcgcGdwZ291dCxcbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtNzMzLVx0bG9jYWxfaXJxX3NhdmUoZmxhZ3MpO1xubW0vbWVtY29udHJvbC12MS5jOjczNDpcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgUEdQR09VVCwgcGdwZ291dCk7XG5tbS9tZW1jb250cm9sLXYxLmMtNzM1LVx0X190aGlzX2NwdV9hZGQobWVtY2ctXHUwMDNlZXZlbnRzX3BlcmNwdS1cdTAwM2Vucl9wYWdlX2V2ZW50cywgbnJfbWVtb3J5KTtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTkyNj12b2lkIG1lbWNnMV9zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxuLS1cbm1tL21lbWNvbnRyb2wtdjEuYy0xOTQ0LVx0XHRzZXFfYnVmX3ByaW50ZihzLCBcJiMzNDslcyAlbHVcXG5cJiMzNDssIHZtX2V2ZW50X25hbWUobWVtY2cxX2V2ZW50c1tpXSksXG5tbS9tZW1jb250cm9sLXYxLmM6MTk0NTpcdFx0XHQgICAgICAgbWVtY2dfZXZlbnRzX2xvY2FsKG1lbWNnLCBtZW1jZzFfZXZlbnRzW2ldKSk7XG5tbS9tZW1jb250cm9sLXYxLmMtMTk0Ni1cbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtMTk3My1cdFx0XHQgICAgICAgdm1fZXZlbnRfbmFtZShtZW1jZzFfZXZlbnRzW2ldKSxcbm1tL21lbWNvbnRyb2wtdjEuYzoxOTc0Olx0XHRcdCAgICAgICAodTY0KW1lbWNnX2V2ZW50cyhtZW1jZywgbWVtY2cxX2V2ZW50c1tpXSkpO1xubW0vbWVtY29udHJvbC12MS5jLTE5NzUtXG4tLVxubW0vbWVtY29udHJvbC12MS5oPTMxPXN0YXRpYyBpbmxpbmUgYm9vbCBkb19tZW1zd19hY2NvdW50KHZvaWQpXG4tLVxubW0vbWVtY29udHJvbC12MS5oLTM1LVxubW0vbWVtY29udHJvbC12MS5oOjM2OnVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTtcbm1tL21lbWNvbnRyb2wtdjEuaC0zNy11bnNpZ25lZCBsb25nIG1lbWNnX3BhZ2Vfc3RhdGVfbG9jYWwoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaWR4KTtcbi0tXG5tbS9tZW1jb250cm9sLmM9NTg5PXN0YXRpYyB1OCBtZW1fY2dyb3VwX2V2ZW50c19pbmRleFtOUl9WTV9FVkVOVF9JVEVNU10gX19yZWFkX21vc3RseTtcbm1tL21lbWNvbnRyb2wuYy01OTAtXG5tbS9tZW1jb250cm9sLmM6NTkxOnN0YXRpYyB2b2lkIGluaXRfbWVtY2dfZXZlbnRzKHZvaWQpXG5tbS9tZW1jb250cm9sLmMtNTkyLXtcbi0tXG5tbS9tZW1jb250cm9sLmMtNjAzLVxubW0vbWVtY29udHJvbC5jOjYwNDpzdGF0aWMgaW5saW5lIGludCBtZW1jZ19ldmVudHNfaW5kZXgoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcbm1tL21lbWNvbnRyb2wuYy02MDUte1xuLS1cbm1tL21lbWNvbnRyb2wuYz05OTg9dm9pZCBtb2RfbHJ1dmVjX2ttZW1fc3RhdGUodm9pZCAqcCwgZW51bSBub2RlX3N0YXRfaXRlbSBpZHgsIGludCB2YWwpXG4tLVxubW0vbWVtY29udHJvbC5jLTEwMjItLyoqXG5tbS9tZW1jb250cm9sLmM6MTAyMzogKiBjb3VudF9tZW1jZ19ldmVudHMgLSBhY2NvdW50IFZNIGV2ZW50cyBpbiBhIGNncm91cFxubW0vbWVtY29udHJvbC5jLTEwMjQtICogQG1lbWNnOiB0aGUgbWVtb3J5IGNncm91cFxuLS1cbm1tL21lbWNvbnRyb2wuYy0xMDI3LSAqL1xubW0vbWVtY29udHJvbC5jOjEwMjg6dm9pZCBjb3VudF9tZW1jZ19ldmVudHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBlbnVtIHZtX2V2ZW50X2l0ZW0gaWR4LFxubW0vbWVtY29udHJvbC5jLTEwMjktXHRcdFx0ICB1bnNpZ25lZCBsb25nIGNvdW50KVxubW0vbWVtY29udHJvbC5jLTEwMzAte1xubW0vbWVtY29udHJvbC5jOjEwMzE6XHRpbnQgaSA9IG1lbWNnX2V2ZW50c19pbmRleChpZHgpO1xubW0vbWVtY29udHJvbC5jLTEwMzItXHRpbnQgY3B1O1xuLS1cbm1tL21lbWNvbnRyb2wuYy0xMDQzLVx0bWVtY2dfcnN0YXRfdXBkYXRlZChtZW1jZywgY291bnQsIGNwdSk7XG5tbS9tZW1jb250cm9sLmM6MTA0NDpcdHRyYWNlX2NvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgaWR4LCBjb3VudCk7XG5tbS9tZW1jb250cm9sLmMtMTA0NS1cbi0tXG5tbS9tZW1jb250cm9sLmMtMTA0OC1cbm1tL21lbWNvbnRyb2wuYzoxMDQ5OnVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxubW0vbWVtY29udHJvbC5jLTEwNTAte1xubW0vbWVtY29udHJvbC5jOjEwNTE6XHRpbnQgaSA9IG1lbWNnX2V2ZW50c19pbmRleChldmVudCk7XG5tbS9tZW1jb250cm9sLmMtMTA1Mi1cbi0tXG5tbS9tZW1jb250cm9sLmM9MTA1OT1ib29sIG1lbWNnX3ZtX2V2ZW50X2l0ZW1fdmFsaWQoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcbi0tXG5tbS9tZW1jb250cm9sLmMtMTA2My1cbm1tL21lbWNvbnRyb2wuYzoxMDY0Olx0cmV0dXJuICFCQURfU1RBVF9JRFgobWVtY2dfZXZlbnRzX2luZGV4KGlkeCkpO1xubW0vbWVtY29udHJvbC5jLTEwNjUtfVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xMDY3LSNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYzoxMDY4OnVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxubW0vbWVtY29udHJvbC5jLTEwNjkte1xubW0vbWVtY29udHJvbC5jOjEwNzA6XHRpbnQgaSA9IG1lbWNnX2V2ZW50c19pbmRleChldmVudCk7XG5tbS9tZW1jb250cm9sLmMtMTA3MS1cbi0tXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xNzQ2LVx0XHRcdCAgICAgICB2bV9ldmVudF9uYW1lKG1lbWNnX3ZtX2V2ZW50X3N0YXRbaV0pLFxubW0vbWVtY29udHJvbC5jOjE3NDc6XHRcdFx0ICAgICAgIG1lbWNnX2V2ZW50cyhtZW1jZywgbWVtY2dfdm1fZXZlbnRfc3RhdFtpXSkpO1xubW0vbWVtY29udHJvbC5jLTE3NDgtXHR9XG4tLVxubW0vbWVtY29udHJvbC5jPTQxNTY9bWVtX2Nncm91cF9jc3NfYWxsb2Moc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKnBhcmVudF9jc3MpXG4tLVxubW0vbWVtY29udHJvbC5jLTQxODctXHRcdGluaXRfbWVtY2dfc3RhdHMoKTtcbm1tL21lbWNvbnRyb2wuYzo0MTg4Olx0XHRpbml0X21lbWNnX2V2ZW50cygpO1xubW0vbWVtY29udHJvbC5jLTQxODktXHRcdHBhZ2VfY291bnRlcl9pbml0KFx1MDAyNm1lbWNnLVx1MDAzZW1lbW9yeSwgTlVMTCwgdHJ1ZSk7XG4tLVxubW0vbWVtcG9saWN5LmM9ODkwPXVuc2lnbmVkIGxvbmcgY2hhbmdlX3Byb3RfbnVtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9tZW1wb2xpY3kuYy05MDAtXHRcdGNvdW50X3ZtX251bWFfZXZlbnRzKE5VTUFfUFRFX1VQREFURVMsIG5yX3VwZGF0ZWQpO1xubW0vbWVtcG9saWN5LmM6OTAxOlx0XHRjb3VudF9tZW1jZ19ldmVudHNfbW0odm1hLVx1MDAzZXZtX21tLCBOVU1BX1BURV9VUERBVEVTLCBucl91cGRhdGVkKTtcbm1tL21lbXBvbGljeS5jLTkwMi1cdH1cbi0tXG5tbS9taWdyYXRlLmM9Mjc0ND1pbnQgbWlncmF0ZV9taXNwbGFjZWRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG5vZGUpXG4tLVxubW0vbWlncmF0ZS5jLTI3NjAtXHRcdGNvdW50X3ZtX251bWFfZXZlbnRzKE5VTUFfUEFHRV9NSUdSQVRFLCBucl9zdWNjZWVkZWQpO1xubW0vbWlncmF0ZS5jOjI3NjE6XHRcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgTlVNQV9QQUdFX01JR1JBVEUsIG5yX3N1Y2NlZWRlZCk7XG5tbS9taWdyYXRlLmMtMjc2Mi1cdFx0aWYgKChzeXNjdGxfbnVtYV9iYWxhbmNpbmdfbW9kZSBcdTAwMjYgTlVNQV9CQUxBTkNJTkdfTUVNT1JZX1RJRVJJTkcpXG4tLVxubW0vc3dhcC5jPTM0Mj1zdGF0aWMgdm9pZCBscnVfYWN0aXZhdGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL3N3YXAuYy0zNTUtXHRfX2NvdW50X3ZtX2V2ZW50cyhQR0FDVElWQVRFLCBucl9wYWdlcyk7XG5tbS9zd2FwLmM6MzU2Olx0Y291bnRfbWVtY2dfZXZlbnRzKGxydXZlY19tZW1jZyhscnV2ZWMpLCBQR0FDVElWQVRFLCBucl9wYWdlcyk7XG5tbS9zd2FwLmMtMzU3LX1cbi0tXG5tbS9zd2FwLmM9NjA1PXN0YXRpYyB2b2lkIGxydV9kZWFjdGl2YXRlX2ZpbGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL3N3YXAuYy02NDAtXHRcdF9fY291bnRfdm1fZXZlbnRzKFBHREVBQ1RJVkFURSwgbnJfcGFnZXMpO1xubW0vc3dhcC5jOjY0MTpcdFx0Y291bnRfbWVtY2dfZXZlbnRzKGxydXZlY19tZW1jZyhscnV2ZWMpLCBQR0RFQUNUSVZBVEUsXG5tbS9zd2FwLmMtNjQyLVx0XHRcdFx0ICAgICBucl9wYWdlcyk7XG4tLVxubW0vc3dhcC5jPTY0Nj1zdGF0aWMgdm9pZCBscnVfZGVhY3RpdmF0ZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vc3dhcC5jLTY1OC1cdF9fY291bnRfdm1fZXZlbnRzKFBHREVBQ1RJVkFURSwgbnJfcGFnZXMpO1xubW0vc3dhcC5jOjY1OTpcdGNvdW50X21lbWNnX2V2ZW50cyhscnV2ZWNfbWVtY2cobHJ1dmVjKSwgUEdERUFDVElWQVRFLCBucl9wYWdlcyk7XG5tbS9zd2FwLmMtNjYwLX1cbi0tXG5tbS9zd2FwLmM9NjYyPXN0YXRpYyB2b2lkIGxydV9sYXp5ZnJlZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vc3dhcC5jLTY4NC1cdF9fY291bnRfdm1fZXZlbnRzKFBHTEFaWUZSRUUsIG5yX3BhZ2VzKTtcbm1tL3N3YXAuYzo2ODU6XHRjb3VudF9tZW1jZ19ldmVudHMobHJ1dmVjX21lbWNnKGxydXZlYyksIFBHTEFaWUZSRUUsIG5yX3BhZ2VzKTtcbm1tL3N3YXAuYy02ODYtfVxuLS1cbm1tL3Ztc2Nhbi5jPTIwNjg9c3RhdGljIHZvaWQgc2hyaW5rX2FjdGl2ZV9saXN0KHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbixcbi0tXG5tbS92bXNjYW4uYy0yMTQ3LVx0Y291bnRfdm1fZXZlbnRzKFBHREVBQ1RJVkFURSwgbnJfZGVhY3RpdmF0ZSk7XG5tbS92bXNjYW4uYzoyMTQ4Olx0Y291bnRfbWVtY2dfZXZlbnRzKGxydXZlY19tZW1jZyhscnV2ZWMpLCBQR0RFQUNUSVZBVEUsIG5yX2RlYWN0aXZhdGUpO1xubW0vdm1zY2FuLmMtMjE0OS1cdG1vZF9ub2RlX3BhZ2Vfc3RhdGUocGdkYXQsIE5SX0lTT0xBVEVEX0FOT04gJiM0MzsgZmlsZSwgLW5yX3Rha2VuKTtcbi0tXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jPTMzPXN0cnVjdCBtZW1jZ19jb3VudGVycyB7XG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy00MS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6NDI6c3RydWN0IG1lbWNnX2V2ZW50cyB7XG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTQzLVx0c3RydWN0IG1lbWNnX2NvdW50ZXJzIGNvdW50ZXJzO1xuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM9NjA9c3RhdGljIGludCBnZXRfbWVtY2dfY291bnRlcihjaGFyICpsaW5lLCBjb25zdCBjaGFyICpuYW1lLCBsb25nICpjb3VudGVyKVxuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtOTctXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjk4OnN0YXRpYyBpbnQgcmVhZF9tZW1jZ19ldmVudHMoc3RydWN0IG1lbWNnX2V2ZW50cyAqZXZlbnRzLCBib29sIHNob3dfZGlmZilcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtOTkte1xuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjAxLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzoyMDI6c3RhdGljIHZvaWQgcHJvY2Vzc19tZW1jZ19ldmVudHMoc3RydWN0IG1lbWNnX2V2ZW50cyAqZXZlbnRzLFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yMDMtXHRcdFx0XHQgc3RydWN0IGlub3RpZnlfZXZlbnQgKmV2ZW50KVxuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjE5LVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzoyMjA6XHRyZXQgPSByZWFkX21lbWNnX2V2ZW50cyhldmVudHMsIC8qIHNob3dfZGlmZiA9ICovdHJ1ZSk7XG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTIyMS1cdGlmIChyZXQpXG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yMjQtXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjIyNTpzdGF0aWMgdm9pZCBtb25pdG9yX2V2ZW50cyhzdHJ1Y3QgbWVtY2dfZXZlbnRzICpldmVudHMpXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTIyNi17XG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yNTMtXHRcdFx0d2hpbGUgKElOT1RJRllfRVZFTlRfT0soZXZlbnQsIGxlbmd0aCkpIHtcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MjU0Olx0XHRcdFx0cHJvY2Vzc19tZW1jZ19ldmVudHMoZXZlbnRzLCBldmVudCk7XG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTI1NS1cdFx0XHRcdGV2ZW50ID0gSU5PVElGWV9FVkVOVF9ORVhUKGV2ZW50LCBsZW5ndGgpO1xuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjYwLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzoyNjE6c3RhdGljIGludCBpbml0aWFsaXplX21lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtY2dfZXZlbnRzICpldmVudHMsXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTI2Mi1cdFx0XHRcdCAgIGNvbnN0IGNoYXIgKmNncm91cClcbi0tXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTI2NS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MjY2Olx0bWVtc2V0KGV2ZW50cywgMCwgc2l6ZW9mKHN0cnVjdCBtZW1jZ19ldmVudHMpKTtcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjY3LVxuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjc3LVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzoyNzg6XHRyZXQgPSByZWFkX21lbWNnX2V2ZW50cyhldmVudHMsIC8qIHNob3dfZGlmZiA9ICovZmFsc2UpO1xuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yNzktXHRpZiAocmV0KSB7XG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMDItXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjMwMzpzdGF0aWMgdm9pZCBjbGVhbnVwX21lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtY2dfZXZlbnRzICpldmVudHMpXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTMwNC17XG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYz0zMDk9aW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMTAte1xuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzozMTE6XHRzdHJ1Y3QgbWVtY2dfZXZlbnRzIGV2ZW50cztcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMzEyLVx0c3NpemVfdCByZXQ7XG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMTYtXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjMxNzpcdHJldCA9IGluaXRpYWxpemVfbWVtY2dfZXZlbnRzKFx1MDAyNmV2ZW50cywgYXJndlsxXSk7XG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTMxOC1cdGlmIChyZXQpXG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMjItXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjMyMzpcdGNsZWFudXBfbWVtY2dfZXZlbnRzKFx1MDAyNmV2ZW50cyk7XG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTMyNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjE2CgkJCQkJCQlvdXRwdXQ6IDc0CgkJCQkJCQl0aG91Z2h0czogNzIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBDb250cm9sIENsZWFudXAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtIbW0sIHdoYXQmIzM5O3MgdGhpcyBkb2luZyB0byBgbW0vbWVtY29udHJvbC12MS5oYD8mIzM0Oy4gSXQgc2VlbXMgdG8gYmUgcmVtb3ZpbmcgYGZvcl9lYWNoX21lbV9jZ3JvdXBgLiBXYWl0IGEgc2Vjb25k4oCmIGlzbiYjMzk7dCB0aGF0IG1hY3JvIGNvbXBsZXRlbHkgdW51c2VkIGluIHRoZSBrZXJuZWwgbm93PyBUaGF0JiMzOTtzIHJpZ2h0LCBpdCBpcyEgR29vZCByaWRkYW5jZS4KClRoZW4gSSBub3RpY2UgaXQmIzM5O3MgYWxzbyB0YWtpbmcgb3V0IGB1bnNpZ25lZCBsb25nIG1lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBldmVudCk7YCBmcm9tIHRoZSBzYW1lIGhlYWRlci4gSG9sZCBvbiwgYG1lbWNnX2V2ZW50c2AgaXMgYWN0dWFsbHkgZGVjbGFyZWQgaW4gYGluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oYCBhbmQgaW1wbGVtZW50ZWQgaW4gYG1tL21lbWNvbnRyb2wuY2AuIFRoaXMgZGVjbGFyYXRpb24gaW4gYG1tL21lbWNvbnRyb2wtdjEuaGAgd2FzIGp1c3QgYSBkdXBsaWNhdGUuIFJlZHVuZGFuY3kgaXMgbmV2ZXIgZ29vZC4KCkFuZCB0aGUgcGF0Y2ggYWxzbyB1cGRhdGVzIGEgY29tbWVudCBpbiBgbW0vbWVtY29udHJvbC5jYCwgcmVwbGFjaW5nIGBmb3JfZWFjaF9tZW1fY2dyb3VwKClgIHdpdGggYG1lbV9jZ3JvdXBfaXRlcigpYC4gUmlnaHQsIGp1c3QgYSBjbGFyaWZpY2F0aW9uLCBub3RoaW5nIG1ham9yLgoKU28sIHN1bW1pbmcgaXQgdXAsIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGNsZWFudXAgYW5kIHJlZmFjdG9yaW5nLiBJdCYjMzk7cyBlbGltaW5hdGluZyBhbiB1bnVzZWQgbWFjcm8sIHJlbW92aW5nIGEgcmVkdW5kYW50IGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCBhbmQgcHJvdmlkaW5nIGEgY29tbWVudCB1cGRhdGUuIFRoZXJlJiMzOTtzIG5vdGhpbmcgaGVyZSB0aGF0IGNoYW5nZXMgdGhlIGtlcm5lbCYjMzk7cyBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIHRoZSBkZWZpbml0aW9uIG9mIGEgbG93LXJpc2ssIHB1cmUgY2xlYW51cCBwYXRjaC4KCkkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgZGlmZiBqdXN0IHRvIGJlIGV4dHJhIHN1cmUuLi4gKltJIG1lbnRhbGx5IHJldmlldyB0aGUgcHJvdmlkZWQgZGlmZl0qIFllcCwgaXQmIzM5O3MgZXhhY3RseSB3aGF0IEkgdGhvdWdodDogdW51c2VkIG1hY3JvIGdvbmUsIHJlZHVuZGFudCBkZWNsYXJhdGlvbiBnb25lLCBjb21tZW50IHVwZGF0ZWQuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGp1c3QgYSByZWZhY3RvcmluZyBjaGFuZ2UsIEkgd291bGRuJiMzOTt0IHdhc3RlIG15IHRpbWUgZnV6emluZyB0aGlzLiBUaGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYWJzb2x1dGVseSBiZSBzZXQgdG8gZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHJlbW92ZXMgYW4gdW51c2VkIG1hY3JvIChgZm9yX2VhY2hfbWVtX2Nncm91cGApLCBhIHJlZHVuZGFudCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoYG1lbWNnX2V2ZW50c2ApLCBhbmQgdXBkYXRlcyBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW1vdmVzIGFuIHVudXNlZCBtYWNybyAoYGZvcl9lYWNoX21lbV9jZ3JvdXBgKSwgYSByZWR1bmRhbnQgZnVuY3Rpb24gZGVjbGFyYXRpb24gKGBtZW1jZ19ldmVudHNgKSwgYW5kIHVwZGF0ZXMgYSBjb21tZW50LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTowMjoyNS43MjQ0MDIyOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDMwODY5NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlbW92ZXMgYW4gdW51c2VkIG1hY3JvIChgZm9yX2VhY2hfbWVtX2Nncm91cGApLCBhIHJlZHVuZGFudCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoYG1lbWNnX2V2ZW50c2ApLCBhbmQgdXBkYXRlcyBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6MDI6MjUuNzI0NDA5M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIxNDg3NzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODAxY2U1MzAzZTMzZjRhNjYwNjRjZDgyZmQ3OTEyZDMxNzcwYTMwYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1biAyNCAxOTowMjoyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLXYxLmggYi9tbS9tZW1jb250cm9sLXYxLmhcXG5pbmRleCBmOTJmODExMDhkNWVkMi4uZDNlZDViOTMyOTBmYmIgMTAwNjQ0XFxuLS0tIGEvbW0vbWVtY29udHJvbC12MS5oXFxuKysrIGIvbW0vbWVtY29udHJvbC12MS5oXFxuQEAgLTE3LDE0ICsxNyw4IEBAXFxuIFxcdCAgICAgaXRlciAhPSBOVUxMO1xcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ICAgICBpdGVyID0gbWVtX2Nncm91cF9pdGVyKHJvb3QsIGl0ZXIsIE5VTEwpKVxcbiBcXG4tI2RlZmluZSBmb3JfZWFjaF9tZW1fY2dyb3VwKGl0ZXIpXFx0XFx0XFx0XFxcXFxcbi1cXHRmb3IgKGl0ZXIgPSBtZW1fY2dyb3VwX2l0ZXIoTlVMTCwgTlVMTCwgTlVMTCk7XFx0XFxcXFxcbi1cXHQgICAgIGl0ZXIgIT0gTlVMTDtcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihOVUxMLCBpdGVyLCBOVUxMKSlcXG4tXFxuIHZvaWQgZHJhaW5fYWxsX3N0b2NrKHN0cnVjdCBtZW1fY2dyb3VwICpyb290X21lbWNnKTtcXG4gXFxuLXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTtcXG4gaW50IG1lbW9yeV9zdGF0X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KTtcXG4gXFxuIHN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX3ByaXZhdGVfaWRfZ2V0X29ubGluZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXFxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuY1xcbmluZGV4IDU2Y2Q0YWYwODIzMjZiLi5lMTcxZmUzNmIwNzExNyAxMDA2NDRcXG4tLS0gYS9tbS9tZW1jb250cm9sLmNcXG4rKysgYi9tbS9tZW1jb250cm9sLmNcXG5AQCAtNDIxNiw3ICs0MjE2LDcgQEAgc3RhdGljIGludCBtZW1fY2dyb3VwX2Nzc19vbmxpbmUoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcylcXG4gXFx0LypcXG4gXFx0ICogQSBtZW1jZyBtdXN0IGJlIHZpc2libGUgZm9yIGV4cGFuZF9zaHJpbmtlcl9pbmZvKClcXG4gXFx0ICogYnkgdGhlIHRpbWUgdGhlIG1hcHMgYXJlIGFsbG9jYXRlZC4gU28sIHdlIGFsbG9jYXRlIG1hcHNcXG4tXFx0ICogaGVyZSwgd2hlbiBmb3JfZWFjaF9tZW1fY2dyb3VwKCkgY2FuJ3Qgc2tpcCBpdC5cXG4rXFx0ICogaGVyZSwgd2hlbiBtZW1fY2dyb3VwX2l0ZXIoKSBjYW4ndCBza2lwIGl0LlxcbiBcXHQgKi9cXG4gXFx0aWYgKGFsbG9jX3Nocmlua2VyX2luZm8obWVtY2cpKVxcbiBcXHRcXHRnb3RvIG9mZmxpbmVfa21lbTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6MDI6MjYuMzQ2OTI1Mzk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODQwODMzNjE3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW1vdmVzIGFuIHVudXNlZCBtYWNybyAoYGZvcl9lYWNoX21lbV9jZ3JvdXBgKSwgYSByZWR1bmRhbnQgZnVuY3Rpb24gZGVjbGFyYXRpb24gKGBtZW1jZ19ldmVudHNgKSwgYW5kIHVwZGF0ZXMgYSBjb21tZW50LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODAxY2U1MzAzZTMzZjRhNjYwNjRjZDgyZmQ3OTEyZDMxNzcwYTMwYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE5OjAyOjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC12MS5oIGIvbW0vbWVtY29udHJvbC12MS5oXG5pbmRleCBmOTJmODExMDhkNWVkMi4uZDNlZDViOTMyOTBmYmIgMTAwNjQ0XG4tLS0gYS9tbS9tZW1jb250cm9sLXYxLmhcbisrKyBiL21tL21lbWNvbnRyb2wtdjEuaFxuQEAgLTE3LDE0ICsxNyw4IEBAXG4gXHQgICAgIGl0ZXIgIT0gTlVMTDtcdFx0XHRcdFxcXG4gXHQgICAgIGl0ZXIgPSBtZW1fY2dyb3VwX2l0ZXIocm9vdCwgaXRlciwgTlVMTCkpXG4gXG4tI2RlZmluZSBmb3JfZWFjaF9tZW1fY2dyb3VwKGl0ZXIpXHRcdFx0XFxcbi1cdGZvciAoaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihOVUxMLCBOVUxMLCBOVUxMKTtcdFxcXG4tXHQgICAgIGl0ZXIgIT0gTlVMTDtcdFx0XHRcdFxcXG4tXHQgICAgIGl0ZXIgPSBtZW1fY2dyb3VwX2l0ZXIoTlVMTCwgaXRlciwgTlVMTCkpXG4tXG4gdm9pZCBkcmFpbl9hbGxfc3RvY2soc3RydWN0IG1lbV9jZ3JvdXAgKnJvb3RfbWVtY2cpO1xuIFxuLXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTtcbiBpbnQgbWVtb3J5X3N0YXRfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpO1xuIFxuIHN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX3ByaXZhdGVfaWRfZ2V0X29ubGluZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG5kaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jXG5pbmRleCA1NmNkNGFmMDgyMzI2Yi4uZTE3MWZlMzZiMDcxMTcgMTAwNjQ0XG4tLS0gYS9tbS9tZW1jb250cm9sLmNcbisrKyBiL21tL21lbWNvbnRyb2wuY1xuQEAgLTQyMTYsNyArNDIxNiw3IEBAIHN0YXRpYyBpbnQgbWVtX2Nncm91cF9jc3Nfb25saW5lKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MpXG4gXHQvKlxuIFx0ICogQSBtZW1jZyBtdXN0IGJlIHZpc2libGUgZm9yIGV4cGFuZF9zaHJpbmtlcl9pbmZvKClcbiBcdCAqIGJ5IHRoZSB0aW1lIHRoZSBtYXBzIGFyZSBhbGxvY2F0ZWQuIFNvLCB3ZSBhbGxvY2F0ZSBtYXBzXG4tXHQgKiBoZXJlLCB3aGVuIGZvcl9lYWNoX21lbV9jZ3JvdXAoKSBjYW4ndCBza2lwIGl0LlxuK1x0ICogaGVyZSwgd2hlbiBtZW1fY2dyb3VwX2l0ZXIoKSBjYW4ndCBza2lwIGl0LlxuIFx0ICovXG4gXHRpZiAoYWxsb2Nfc2hyaW5rZXJfaW5mbyhtZW1jZykpXG4gXHRcdGdvdG8gb2ZmbGluZV9rbWVtO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6MDI6MjYuMzQ2OTI4NDQ0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1NDQ5NzU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaW5vciBNZW1vcnkgQ29udHJvbCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYW5pbmcgdXAgc29tZSB1bnVzZWQgY29kZSBpbiB0aGUgbWVtb3J5IGNvbnRyb2wgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0J3MgYXhpbmcgdGhlIGBmb3JfZWFjaF9tZW1fY2dyb3VwYCBtYWNybyBhbmQgdGhlIGBtZW1jZ19ldmVudHNgIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZyb20gYG1tL21lbWNvbnRyb2wtdjEuaGAuIEl0IGFsc28gdG91Y2hlcyBhIGNvbW1lbnQgaW4gYG1tL21lbWNvbnRyb2wuY2AuIEhtbSwganVzdCBhIGNsZWFudXAsIHRoZW4/IExvb2tzIGxpa2UgaXQuXG5cbkl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2gsIGV2ZW4gd2l0aCBzb21ldGhpbmcgdGhpcyBzZWVtaW5nbHkgdHJpdmlhbC4gQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgZm9yX2VhY2hfbWVtX2Nncm91cGAgYW5kIGBtZW1jZ19ldmVudHNgIHJlYWxseSAqYXJlKiB1bnVzZWQuIE5vIHBvaW50IGluIGJyZWFraW5nIGFueXRoaW5nIGZvciBhIG1pbm9yIGNsZWFudXAuIExldCdzIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgaWYgdGhleSdyZSBsdXJraW5nIGFueXdoZXJlIGVsc2UgaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBoaWRkZW4gZGVwZW5kZW5jaWVzIG9yIHVuZXhwZWN0ZWQgdXNlcy4gSnVzdCBhIHF1aWNrIGRvdWJsZS1jaGVjayBmb3Igc2FmZXR5J3Mgc2FrZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjAyOjMwLjkwMTQyNzk1MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg5NzkxNTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvcl9lYWNoX21lbV9jZ3JvdXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtY29udHJvbC12MS5jPTc2Nz1zdGF0aWMgdm9pZCBtZW1fY2dyb3VwX29vbV9ub3RpZnkoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbi0tXFxubW0vbWVtY29udHJvbC12MS5jLTc3MC1cXG5tbS9tZW1jb250cm9sLXYxLmM6NzcxOlxcdGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCBtZW1jZylcXG5tbS9tZW1jb250cm9sLXYxLmMtNzcyLVxcdFxcdG1lbV9jZ3JvdXBfb29tX25vdGlmeV9jYihpdGVyKTtcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xMjY0PXN0YXRpYyBib29sIG1lbV9jZ3JvdXBfb29tX3RyeWxvY2soc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbi0tXFxubW0vbWVtY29udHJvbC12MS5jLTEyNjktXFxubW0vbWVtY29udHJvbC12MS5jOjEyNzA6XFx0Zm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIG1lbWNnKSB7XFxubW0vbWVtY29udHJvbC12MS5jLTEyNzEtXFx0XFx0aWYgKGl0ZXItXFx1MDAzZW9vbV9sb2NrKSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTI4Ny1cXHRcXHQgKi9cXG5tbS9tZW1jb250cm9sLXYxLmM6MTI4ODpcXHRcXHRmb3JfZWFjaF9tZW1fY2dyb3VwX3RyZWUoaXRlciwgbWVtY2cpIHtcXG5tbS9tZW1jb250cm9sLXYxLmMtMTI4OS1cXHRcXHRcXHRpZiAoaXRlciA9PSBmYWlsZWQpIHtcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xMzAzPXN0YXRpYyB2b2lkIG1lbV9jZ3JvdXBfb29tX3VubG9jayhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTMwOC1cXHRtdXRleF9yZWxlYXNlKFxcdTAwMjZtZW1jZ19vb21fbG9ja19kZXBfbWFwLCBfUkVUX0lQXyk7XFxubW0vbWVtY29udHJvbC12MS5jOjEzMDk6XFx0Zm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIG1lbWNnKVxcbm1tL21lbWNvbnRyb2wtdjEuYy0xMzEwLVxcdFxcdGl0ZXItXFx1MDAzZW9vbV9sb2NrID0gZmFsc2U7XFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmM9MTMxND1zdGF0aWMgdm9pZCBtZW1fY2dyb3VwX21hcmtfdW5kZXJfb29tKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYy0xMzE4LVxcdHNwaW5fbG9jayhcXHUwMDI2bWVtY2dfb29tX2xvY2spO1xcbm1tL21lbWNvbnRyb2wtdjEuYzoxMzE5OlxcdGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCBtZW1jZylcXG5tbS9tZW1jb250cm9sLXYxLmMtMTMyMC1cXHRcXHRpdGVyLVxcdTAwM2V1bmRlcl9vb20rKztcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xMzI0PXN0YXRpYyB2b2lkIG1lbV9jZ3JvdXBfdW5tYXJrX3VuZGVyX29vbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTMzMi1cXHRzcGluX2xvY2soXFx1MDAyNm1lbWNnX29vbV9sb2NrKTtcXG5tbS9tZW1jb250cm9sLXYxLmM6MTMzMzpcXHRmb3JfZWFjaF9tZW1fY2dyb3VwX3RyZWUoaXRlciwgbWVtY2cpXFxubW0vbWVtY29udHJvbC12MS5jLTEzMzQtXFx0XFx0aWYgKGl0ZXItXFx1MDAzZXVuZGVyX29vbSBcXHUwMDNlIDApXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmgtMTQtICovXFxubW0vbWVtY29udHJvbC12MS5oOjE1OiNkZWZpbmUgZm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIHJvb3QpXFx0XFx0XFxcXFxcbm1tL21lbWNvbnRyb2wtdjEuaC0xNi1cXHRmb3IgKGl0ZXIgPSBtZW1fY2dyb3VwX2l0ZXIocm9vdCwgTlVMTCwgTlVMTCk7XFx0XFxcXFxcbi0tXFxubW0vbWVtY29udHJvbC5jPTEzNjI9dm9pZCBtZW1fY2dyb3VwX3NjYW5fdGFza3Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTEzNjktXFxubW0vbWVtY29udHJvbC5jOjEzNzA6XFx0Zm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIG1lbWNnKSB7XFxubW0vbWVtY29udHJvbC5jLTEzNzEtXFx0XFx0c3RydWN0IGNzc190YXNrX2l0ZXIgaXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjAyOjMzLjQ5MTIyMzYwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDYwNjUwMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbWNnX2V2ZW50c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD05MTM9c3RhdGljIGlubGluZSB2b2lkIG1vZF9tZW1jZ19wYWdlX3N0YXRlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTI3LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjkyODp1bnNpZ25lZCBsb25nIG1lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBldmVudCk7XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTI5LXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBpZHgpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9OTQwPXZvaWQgbW9kX2xydXZlY19rbWVtX3N0YXRlKHZvaWQgKnAsIGVudW0gbm9kZV9zdGF0X2l0ZW0gaWR4LCBpbnQgdmFsKTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NDEtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6OTQyOnZvaWQgY291bnRfbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgZW51bSB2bV9ldmVudF9pdGVtIGlkeCxcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NDMtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBjb3VudCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD05NDU9c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2ZvbGlvX2V2ZW50cyhzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTU0LVxcdG1lbWNnID0gZm9saW9fbWVtY2coZm9saW8pO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk1NTpcXHRjb3VudF9tZW1jZ19ldmVudHMobWVtY2csIGlkeCwgbnIpO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk1Ni1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk1OC1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDo5NTk6c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2V2ZW50c19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NjAtXFx0XFx0XFx0XFx0XFx0ZW51bSB2bV9ldmVudF9pdGVtIGlkeCwgdW5zaWduZWQgbG9uZyBjb3VudClcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk2OS1cXHRpZiAobGlrZWx5KG1lbWNnKSlcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDo5NzA6XFx0XFx0Y291bnRfbWVtY2dfZXZlbnRzKG1lbWNnLCBpZHgsIGNvdW50KTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NzEtXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD05NzQ9c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2V2ZW50X21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTc2LXtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDo5Nzc6XFx0Y291bnRfbWVtY2dfZXZlbnRzX21tKG1tLCBpZHgsIDEpO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk3OC19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xMzk1PXN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbHJ1dmVjX2ttZW1fc3RhdGUodm9pZCAqcCwgZW51bSBub2RlX3N0YXRfaXRlbSBpZHgsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDAyLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE0MDM6c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQwNC1cXHRcXHRcXHRcXHRcXHRlbnVtIHZtX2V2ZW50X2l0ZW0gaWR4LFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTQwOT1zdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbWVtY2dfZm9saW9fZXZlbnRzKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDEzLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE0MTQ6c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2V2ZW50c19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDE1LVxcdFxcdFxcdFxcdFxcdGVudW0gdm1fZXZlbnRfaXRlbSBpZHgsIHVuc2lnbmVkIGxvbmcgY291bnQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNzQ2PXN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9vYmpjZ19ldmVudHMoc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTc1Ni1cXHRtZW1jZyA9IG9ial9jZ3JvdXBfbWVtY2cob2JqY2cpO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE3NTc6XFx0Y291bnRfbWVtY2dfZXZlbnRzKG1lbWNnLCBpZHgsIGNvdW50KTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNzU4LVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWVtY2cuaD00OD1ERUNMQVJFX0VWRU5UX0NMQVNTKG1lbWNnX3JzdGF0X2V2ZW50cyxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21lbWNnLmgtNjktXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWVtY2cuaDo3MDpERUZJTkVfRVZFTlQobWVtY2dfcnN0YXRfZXZlbnRzLCBjb3VudF9tZW1jZ19ldmVudHMsXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWVtY2cuaC03MS1cXG4tLVxcbm1tL2JwZl9tZW1jb250cm9sLmM9OTI9X19icGZfa2Z1bmMgdW5zaWduZWQgbG9uZyBicGZfbWVtX2Nncm91cF92bV9ldmVudHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vYnBmX21lbWNvbnRyb2wuYy05Ny1cXG5tbS9icGZfbWVtY29udHJvbC5jOjk4OlxcdHJldHVybiBtZW1jZ19ldmVudHMobWVtY2csIGV2ZW50KTtcXG5tbS9icGZfbWVtY29udHJvbC5jLTk5LX1cXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz01MzM9c3RhdGljIHZvaWQgbWVtY2cxX2NoYXJnZV9zdGF0aXN0aWNzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IG5yX3BhZ2VzKVxcbi0tXFxubW0vbWVtY29udHJvbC12MS5jLTUzNi1cXHRpZiAobnJfcGFnZXMgXFx1MDAzZSAwKVxcbm1tL21lbWNvbnRyb2wtdjEuYzo1Mzc6XFx0XFx0Y291bnRfbWVtY2dfZXZlbnRzKG1lbWNnLCBQR1BHSU4sIDEpO1xcbm1tL21lbWNvbnRyb2wtdjEuYy01MzgtXFx0ZWxzZSB7XFxubW0vbWVtY29udHJvbC12MS5jOjUzOTpcXHRcXHRjb3VudF9tZW1jZ19ldmVudHMobWVtY2csIFBHUEdPVVQsIDEpO1xcbm1tL21lbWNvbnRyb2wtdjEuYy01NDAtXFx0XFx0bnJfcGFnZXMgPSAtbnJfcGFnZXM7IC8qIGZvciBldmVudCAqL1xcbi0tXFxubW0vbWVtY29udHJvbC12MS5jPTcyOD12b2lkIG1lbWNnMV91bmNoYXJnZV9iYXRjaChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGxvbmcgcGdwZ291dCxcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYy03MzMtXFx0bG9jYWxfaXJxX3NhdmUoZmxhZ3MpO1xcbm1tL21lbWNvbnRyb2wtdjEuYzo3MzQ6XFx0Y291bnRfbWVtY2dfZXZlbnRzKG1lbWNnLCBQR1BHT1VULCBwZ3Bnb3V0KTtcXG5tbS9tZW1jb250cm9sLXYxLmMtNzM1LVxcdF9fdGhpc19jcHVfYWRkKG1lbWNnLVxcdTAwM2VldmVudHNfcGVyY3B1LVxcdTAwM2Vucl9wYWdlX2V2ZW50cywgbnJfbWVtb3J5KTtcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xOTI2PXZvaWQgbWVtY2cxX3N0YXRfZm9ybWF0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgc3RydWN0IHNlcV9idWYgKnMpXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTk0NC1cXHRcXHRzZXFfYnVmX3ByaW50ZihzLCBcXFwiJXMgJWx1XFxcXG5cXFwiLCB2bV9ldmVudF9uYW1lKG1lbWNnMV9ldmVudHNbaV0pLFxcbm1tL21lbWNvbnRyb2wtdjEuYzoxOTQ1OlxcdFxcdFxcdCAgICAgICBtZW1jZ19ldmVudHNfbG9jYWwobWVtY2csIG1lbWNnMV9ldmVudHNbaV0pKTtcXG5tbS9tZW1jb250cm9sLXYxLmMtMTk0Ni1cXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYy0xOTczLVxcdFxcdFxcdCAgICAgICB2bV9ldmVudF9uYW1lKG1lbWNnMV9ldmVudHNbaV0pLFxcbm1tL21lbWNvbnRyb2wtdjEuYzoxOTc0OlxcdFxcdFxcdCAgICAgICAodTY0KW1lbWNnX2V2ZW50cyhtZW1jZywgbWVtY2cxX2V2ZW50c1tpXSkpO1xcbm1tL21lbWNvbnRyb2wtdjEuYy0xOTc1LVxcbi0tXFxubW0vbWVtY29udHJvbC12MS5oPTMxPXN0YXRpYyBpbmxpbmUgYm9vbCBkb19tZW1zd19hY2NvdW50KHZvaWQpXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmgtMzUtXFxubW0vbWVtY29udHJvbC12MS5oOjM2OnVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTtcXG5tbS9tZW1jb250cm9sLXYxLmgtMzctdW5zaWduZWQgbG9uZyBtZW1jZ19wYWdlX3N0YXRlX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGlkeCk7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NTg5PXN0YXRpYyB1OCBtZW1fY2dyb3VwX2V2ZW50c19pbmRleFtOUl9WTV9FVkVOVF9JVEVNU10gX19yZWFkX21vc3RseTtcXG5tbS9tZW1jb250cm9sLmMtNTkwLVxcbm1tL21lbWNvbnRyb2wuYzo1OTE6c3RhdGljIHZvaWQgaW5pdF9tZW1jZ19ldmVudHModm9pZClcXG5tbS9tZW1jb250cm9sLmMtNTkyLXtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy02MDMtXFxubW0vbWVtY29udHJvbC5jOjYwNDpzdGF0aWMgaW5saW5lIGludCBtZW1jZ19ldmVudHNfaW5kZXgoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcXG5tbS9tZW1jb250cm9sLmMtNjA1LXtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz05OTg9dm9pZCBtb2RfbHJ1dmVjX2ttZW1fc3RhdGUodm9pZCAqcCwgZW51bSBub2RlX3N0YXRfaXRlbSBpZHgsIGludCB2YWwpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTAyMi0vKipcXG5tbS9tZW1jb250cm9sLmM6MTAyMzogKiBjb3VudF9tZW1jZ19ldmVudHMgLSBhY2NvdW50IFZNIGV2ZW50cyBpbiBhIGNncm91cFxcbm1tL21lbWNvbnRyb2wuYy0xMDI0LSAqIEBtZW1jZzogdGhlIG1lbW9yeSBjZ3JvdXBcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xMDI3LSAqL1xcbm1tL21lbWNvbnRyb2wuYzoxMDI4OnZvaWQgY291bnRfbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgZW51bSB2bV9ldmVudF9pdGVtIGlkeCxcXG5tbS9tZW1jb250cm9sLmMtMTAyOS1cXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgY291bnQpXFxubW0vbWVtY29udHJvbC5jLTEwMzAte1xcbm1tL21lbWNvbnRyb2wuYzoxMDMxOlxcdGludCBpID0gbWVtY2dfZXZlbnRzX2luZGV4KGlkeCk7XFxubW0vbWVtY29udHJvbC5jLTEwMzItXFx0aW50IGNwdTtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xMDQzLVxcdG1lbWNnX3JzdGF0X3VwZGF0ZWQobWVtY2csIGNvdW50LCBjcHUpO1xcbm1tL21lbWNvbnRyb2wuYzoxMDQ0OlxcdHRyYWNlX2NvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgaWR4LCBjb3VudCk7XFxubW0vbWVtY29udHJvbC5jLTEwNDUtXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTA0OC1cXG5tbS9tZW1jb250cm9sLmM6MTA0OTp1bnNpZ25lZCBsb25nIG1lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBldmVudClcXG5tbS9tZW1jb250cm9sLmMtMTA1MC17XFxubW0vbWVtY29udHJvbC5jOjEwNTE6XFx0aW50IGkgPSBtZW1jZ19ldmVudHNfaW5kZXgoZXZlbnQpO1xcbm1tL21lbWNvbnRyb2wuYy0xMDUyLVxcbi0tXFxubW0vbWVtY29udHJvbC5jPTEwNTk9Ym9vbCBtZW1jZ192bV9ldmVudF9pdGVtX3ZhbGlkKGVudW0gdm1fZXZlbnRfaXRlbSBpZHgpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTA2My1cXG5tbS9tZW1jb250cm9sLmM6MTA2NDpcXHRyZXR1cm4gIUJBRF9TVEFUX0lEWChtZW1jZ19ldmVudHNfaW5kZXgoaWR4KSk7XFxubW0vbWVtY29udHJvbC5jLTEwNjUtfVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTEwNjctI2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYzoxMDY4OnVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxcbm1tL21lbWNvbnRyb2wuYy0xMDY5LXtcXG5tbS9tZW1jb250cm9sLmM6MTA3MDpcXHRpbnQgaSA9IG1lbWNnX2V2ZW50c19pbmRleChldmVudCk7XFxubW0vbWVtY29udHJvbC5jLTEwNzEtXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTE3NDYtXFx0XFx0XFx0ICAgICAgIHZtX2V2ZW50X25hbWUobWVtY2dfdm1fZXZlbnRfc3RhdFtpXSksXFxubW0vbWVtY29udHJvbC5jOjE3NDc6XFx0XFx0XFx0ICAgICAgIG1lbWNnX2V2ZW50cyhtZW1jZywgbWVtY2dfdm1fZXZlbnRfc3RhdFtpXSkpO1xcbm1tL21lbWNvbnRyb2wuYy0xNzQ4LVxcdH1cXG4tLVxcbm1tL21lbWNvbnRyb2wuYz00MTU2PW1lbV9jZ3JvdXBfY3NzX2FsbG9jKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpwYXJlbnRfY3NzKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTQxODctXFx0XFx0aW5pdF9tZW1jZ19zdGF0cygpO1xcbm1tL21lbWNvbnRyb2wuYzo0MTg4OlxcdFxcdGluaXRfbWVtY2dfZXZlbnRzKCk7XFxubW0vbWVtY29udHJvbC5jLTQxODktXFx0XFx0cGFnZV9jb3VudGVyX2luaXQoXFx1MDAyNm1lbWNnLVxcdTAwM2VtZW1vcnksIE5VTEwsIHRydWUpO1xcbi0tXFxubW0vbWVtcG9saWN5LmM9ODkwPXVuc2lnbmVkIGxvbmcgY2hhbmdlX3Byb3RfbnVtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL21lbXBvbGljeS5jLTkwMC1cXHRcXHRjb3VudF92bV9udW1hX2V2ZW50cyhOVU1BX1BURV9VUERBVEVTLCBucl91cGRhdGVkKTtcXG5tbS9tZW1wb2xpY3kuYzo5MDE6XFx0XFx0Y291bnRfbWVtY2dfZXZlbnRzX21tKHZtYS1cXHUwMDNldm1fbW0sIE5VTUFfUFRFX1VQREFURVMsIG5yX3VwZGF0ZWQpO1xcbm1tL21lbXBvbGljeS5jLTkwMi1cXHR9XFxuLS1cXG5tbS9taWdyYXRlLmM9Mjc0ND1pbnQgbWlncmF0ZV9taXNwbGFjZWRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG5vZGUpXFxuLS1cXG5tbS9taWdyYXRlLmMtMjc2MC1cXHRcXHRjb3VudF92bV9udW1hX2V2ZW50cyhOVU1BX1BBR0VfTUlHUkFURSwgbnJfc3VjY2VlZGVkKTtcXG5tbS9taWdyYXRlLmM6Mjc2MTpcXHRcXHRjb3VudF9tZW1jZ19ldmVudHMobWVtY2csIE5VTUFfUEFHRV9NSUdSQVRFLCBucl9zdWNjZWVkZWQpO1xcbm1tL21pZ3JhdGUuYy0yNzYyLVxcdFxcdGlmICgoc3lzY3RsX251bWFfYmFsYW5jaW5nX21vZGUgXFx1MDAyNiBOVU1BX0JBTEFOQ0lOR19NRU1PUllfVElFUklORylcXG4tLVxcbm1tL3N3YXAuYz0zNDI9c3RhdGljIHZvaWQgbHJ1X2FjdGl2YXRlKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL3N3YXAuYy0zNTUtXFx0X19jb3VudF92bV9ldmVudHMoUEdBQ1RJVkFURSwgbnJfcGFnZXMpO1xcbm1tL3N3YXAuYzozNTY6XFx0Y291bnRfbWVtY2dfZXZlbnRzKGxydXZlY19tZW1jZyhscnV2ZWMpLCBQR0FDVElWQVRFLCBucl9wYWdlcyk7XFxubW0vc3dhcC5jLTM1Ny19XFxuLS1cXG5tbS9zd2FwLmM9NjA1PXN0YXRpYyB2b2lkIGxydV9kZWFjdGl2YXRlX2ZpbGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vc3dhcC5jLTY0MC1cXHRcXHRfX2NvdW50X3ZtX2V2ZW50cyhQR0RFQUNUSVZBVEUsIG5yX3BhZ2VzKTtcXG5tbS9zd2FwLmM6NjQxOlxcdFxcdGNvdW50X21lbWNnX2V2ZW50cyhscnV2ZWNfbWVtY2cobHJ1dmVjKSwgUEdERUFDVElWQVRFLFxcbm1tL3N3YXAuYy02NDItXFx0XFx0XFx0XFx0ICAgICBucl9wYWdlcyk7XFxuLS1cXG5tbS9zd2FwLmM9NjQ2PXN0YXRpYyB2b2lkIGxydV9kZWFjdGl2YXRlKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL3N3YXAuYy02NTgtXFx0X19jb3VudF92bV9ldmVudHMoUEdERUFDVElWQVRFLCBucl9wYWdlcyk7XFxubW0vc3dhcC5jOjY1OTpcXHRjb3VudF9tZW1jZ19ldmVudHMobHJ1dmVjX21lbWNnKGxydXZlYyksIFBHREVBQ1RJVkFURSwgbnJfcGFnZXMpO1xcbm1tL3N3YXAuYy02NjAtfVxcbi0tXFxubW0vc3dhcC5jPTY2Mj1zdGF0aWMgdm9pZCBscnVfbGF6eWZyZWUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vc3dhcC5jLTY4NC1cXHRfX2NvdW50X3ZtX2V2ZW50cyhQR0xBWllGUkVFLCBucl9wYWdlcyk7XFxubW0vc3dhcC5jOjY4NTpcXHRjb3VudF9tZW1jZ19ldmVudHMobHJ1dmVjX21lbWNnKGxydXZlYyksIFBHTEFaWUZSRUUsIG5yX3BhZ2VzKTtcXG5tbS9zd2FwLmMtNjg2LX1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTIwNjg9c3RhdGljIHZvaWQgc2hyaW5rX2FjdGl2ZV9saXN0KHVuc2lnbmVkIGxvbmcgbnJfdG9fc2NhbixcXG4tLVxcbm1tL3Ztc2Nhbi5jLTIxNDctXFx0Y291bnRfdm1fZXZlbnRzKFBHREVBQ1RJVkFURSwgbnJfZGVhY3RpdmF0ZSk7XFxubW0vdm1zY2FuLmM6MjE0ODpcXHRjb3VudF9tZW1jZ19ldmVudHMobHJ1dmVjX21lbWNnKGxydXZlYyksIFBHREVBQ1RJVkFURSwgbnJfZGVhY3RpdmF0ZSk7XFxubW0vdm1zY2FuLmMtMjE0OS1cXHRtb2Rfbm9kZV9wYWdlX3N0YXRlKHBnZGF0LCBOUl9JU09MQVRFRF9BTk9OICsgZmlsZSwgLW5yX3Rha2VuKTtcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM9MzM9c3RydWN0IG1lbWNnX2NvdW50ZXJzIHtcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtNDEtXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzo0MjpzdHJ1Y3QgbWVtY2dfZXZlbnRzIHtcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTQzLVxcdHN0cnVjdCBtZW1jZ19jb3VudGVycyBjb3VudGVycztcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM9NjA9c3RhdGljIGludCBnZXRfbWVtY2dfY291bnRlcihjaGFyICpsaW5lLCBjb25zdCBjaGFyICpuYW1lLCBsb25nICpjb3VudGVyKVxcbi0tXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy05Ny1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjk4OnN0YXRpYyBpbnQgcmVhZF9tZW1jZ19ldmVudHMoc3RydWN0IG1lbWNnX2V2ZW50cyAqZXZlbnRzLCBib29sIHNob3dfZGlmZilcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTk5LXtcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjAxLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MjAyOnN0YXRpYyB2b2lkIHByb2Nlc3NfbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1jZ19ldmVudHMgKmV2ZW50cyxcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTIwMy1cXHRcXHRcXHRcXHQgc3RydWN0IGlub3RpZnlfZXZlbnQgKmV2ZW50KVxcbi0tXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yMTktXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzoyMjA6XFx0cmV0ID0gcmVhZF9tZW1jZ19ldmVudHMoZXZlbnRzLCAvKiBzaG93X2RpZmYgPSAqL3RydWUpO1xcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjIxLVxcdGlmIChyZXQpXFxuLS1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTIyNC1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjIyNTpzdGF0aWMgdm9pZCBtb25pdG9yX2V2ZW50cyhzdHJ1Y3QgbWVtY2dfZXZlbnRzICpldmVudHMpXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yMjYte1xcbi0tXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yNTMtXFx0XFx0XFx0d2hpbGUgKElOT1RJRllfRVZFTlRfT0soZXZlbnQsIGxlbmd0aCkpIHtcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjI1NDpcXHRcXHRcXHRcXHRwcm9jZXNzX21lbWNnX2V2ZW50cyhldmVudHMsIGV2ZW50KTtcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTI1NS1cXHRcXHRcXHRcXHRldmVudCA9IElOT1RJRllfRVZFTlRfTkVYVChldmVudCwgbGVuZ3RoKTtcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjYwLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MjYxOnN0YXRpYyBpbnQgaW5pdGlhbGl6ZV9tZW1jZ19ldmVudHMoc3RydWN0IG1lbWNnX2V2ZW50cyAqZXZlbnRzLFxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjYyLVxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgKmNncm91cClcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjY1LVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MjY2OlxcdG1lbXNldChldmVudHMsIDAsIHNpemVvZihzdHJ1Y3QgbWVtY2dfZXZlbnRzKSk7XFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yNjctXFxuLS1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTI3Ny1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjI3ODpcXHRyZXQgPSByZWFkX21lbWNnX2V2ZW50cyhldmVudHMsIC8qIHNob3dfZGlmZiA9ICovZmFsc2UpO1xcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjc5LVxcdGlmIChyZXQpIHtcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMzAyLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MzAzOnN0YXRpYyB2b2lkIGNsZWFudXBfbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1jZ19ldmVudHMgKmV2ZW50cylcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTMwNC17XFxuLS1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jPTMwOT1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMTAte1xcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MzExOlxcdHN0cnVjdCBtZW1jZ19ldmVudHMgZXZlbnRzO1xcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMzEyLVxcdHNzaXplX3QgcmV0O1xcbi0tXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMTYtXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzozMTc6XFx0cmV0ID0gaW5pdGlhbGl6ZV9tZW1jZ19ldmVudHMoXFx1MDAyNmV2ZW50cywgYXJndlsxXSk7XFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMTgtXFx0aWYgKHJldClcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMzIyLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MzIzOlxcdGNsZWFudXBfbWVtY2dfZXZlbnRzKFxcdTAwMjZldmVudHMpO1xcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMzI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTowMjozNS45NTE4ODE4NDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODAzMzQ0NDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbW9yeSBDb250cm9sIENsZWFudXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiSG1tLCB3aGF0J3MgdGhpcyBkb2luZyB0byBgbW0vbWVtY29udHJvbC12MS5oYD9cIi4gSXQgc2VlbXMgdG8gYmUgcmVtb3ZpbmcgYGZvcl9lYWNoX21lbV9jZ3JvdXBgLiBXYWl0IGEgc2Vjb25k4oCmIGlzbid0IHRoYXQgbWFjcm8gY29tcGxldGVseSB1bnVzZWQgaW4gdGhlIGtlcm5lbCBub3c/IFRoYXQncyByaWdodCwgaXQgaXMhIEdvb2QgcmlkZGFuY2UuXG5cblRoZW4gSSBub3RpY2UgaXQncyBhbHNvIHRha2luZyBvdXQgYHVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTtgIGZyb20gdGhlIHNhbWUgaGVhZGVyLiBIb2xkIG9uLCBgbWVtY2dfZXZlbnRzYCBpcyBhY3R1YWxseSBkZWNsYXJlZCBpbiBgaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhgIGFuZCBpbXBsZW1lbnRlZCBpbiBgbW0vbWVtY29udHJvbC5jYC4gVGhpcyBkZWNsYXJhdGlvbiBpbiBgbW0vbWVtY29udHJvbC12MS5oYCB3YXMganVzdCBhIGR1cGxpY2F0ZS4gUmVkdW5kYW5jeSBpcyBuZXZlciBnb29kLlxuXG5BbmQgdGhlIHBhdGNoIGFsc28gdXBkYXRlcyBhIGNvbW1lbnQgaW4gYG1tL21lbWNvbnRyb2wuY2AsIHJlcGxhY2luZyBgZm9yX2VhY2hfbWVtX2Nncm91cCgpYCB3aXRoIGBtZW1fY2dyb3VwX2l0ZXIoKWAuIFJpZ2h0LCBqdXN0IGEgY2xhcmlmaWNhdGlvbiwgbm90aGluZyBtYWpvci5cblxuU28sIHN1bW1pbmcgaXQgdXAsIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGNsZWFudXAgYW5kIHJlZmFjdG9yaW5nLiBJdCdzIGVsaW1pbmF0aW5nIGFuIHVudXNlZCBtYWNybywgcmVtb3ZpbmcgYSByZWR1bmRhbnQgZnVuY3Rpb24gZGVjbGFyYXRpb24sIGFuZCBwcm92aWRpbmcgYSBjb21tZW50IHVwZGF0ZS4gVGhlcmUncyBub3RoaW5nIGhlcmUgdGhhdCBjaGFuZ2VzIHRoZSBrZXJuZWwncyBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIHRoZSBkZWZpbml0aW9uIG9mIGEgbG93LXJpc2ssIHB1cmUgY2xlYW51cCBwYXRjaC5cblxuSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBkaWZmIGp1c3QgdG8gYmUgZXh0cmEgc3VyZS4uLiAqW0kgbWVudGFsbHkgcmV2aWV3IHRoZSBwcm92aWRlZCBkaWZmXSogWWVwLCBpdCdzIGV4YWN0bHkgd2hhdCBJIHRob3VnaHQ6IHVudXNlZCBtYWNybyBnb25lLCByZWR1bmRhbnQgZGVjbGFyYXRpb24gZ29uZSwgY29tbWVudCB1cGRhdGVkLlxuXG5HaXZlbiB0aGF0IGl0J3MganVzdCBhIHJlZmFjdG9yaW5nIGNoYW5nZSwgSSB3b3VsZG4ndCB3YXN0ZSBteSB0aW1lIGZ1enppbmcgdGhpcy4gVGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgc2hvdWxkIGFic29sdXRlbHkgYmUgc2V0IHRvIGZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjE2LCJPdXRwdXRUb2tlbnMiOjc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTowMjo0NC43NTUyMjg4NzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBhbiB1bnVzZWQgbWFjcm8gKGBmb3JfZWFjaF9tZW1fY2dyb3VwYCksIGEgcmVkdW5kYW50IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIChgbWVtY2dfZXZlbnRzYCksIGFuZCB1cGRhdGVzIGEgY29tbWVudC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlbW92ZXMgYW4gdW51c2VkIG1hY3JvIChgZm9yX2VhY2hfbWVtX2Nncm91cGApLCBhIHJlZHVuZGFudCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoYG1lbWNnX2V2ZW50c2ApLCBhbmQgdXBkYXRlcyBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowdshd8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 18:51:10 +0000 UTC FinishedAt: 2026-06-24 19:02:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjAyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBhbiB1bnVzZWQgbWFjcm8gKGBmb3JfZWFjaF9tZW1fY2dyb3VwYCksIGEgcmVkdW5kYW50IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIChgbWVtY2dfZXZlbnRzYCksIGFuZCB1cGRhdGVzIGEgY29tbWVudC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjAyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODAxY2U1MzAzZTMzZjRhNjYwNjRjZDgyZmQ3OTEyZDMxNzcwYTMwYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE5OjAyOjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wtdjEuaCBiL21tL21lbWNvbnRyb2wtdjEuaFxuaW5kZXggZjkyZjgxMTA4ZDVlZDIuLmQzZWQ1YjkzMjkwZmJiIDEwMDY0NFxuLS0tIGEvbW0vbWVtY29udHJvbC12MS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9tZW1jb250cm9sLXYxLmhcbkBAIC0xNywxNCAmIzQzOzE3LDggQEBcbiBcdCAgICAgaXRlciAhPSBOVUxMO1x0XHRcdFx0XFxcbiBcdCAgICAgaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihyb290LCBpdGVyLCBOVUxMKSlcbiBcbi0jZGVmaW5lIGZvcl9lYWNoX21lbV9jZ3JvdXAoaXRlcilcdFx0XHRcXFxuLVx0Zm9yIChpdGVyID0gbWVtX2Nncm91cF9pdGVyKE5VTEwsIE5VTEwsIE5VTEwpO1x0XFxcbi1cdCAgICAgaXRlciAhPSBOVUxMO1x0XHRcdFx0XFxcbi1cdCAgICAgaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihOVUxMLCBpdGVyLCBOVUxMKSlcbi1cbiB2b2lkIGRyYWluX2FsbF9zdG9jayhzdHJ1Y3QgbWVtX2Nncm91cCAqcm9vdF9tZW1jZyk7XG4gXG4tdW5zaWduZWQgbG9uZyBtZW1jZ19ldmVudHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgZXZlbnQpO1xuIGludCBtZW1vcnlfc3RhdF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdik7XG4gXG4gc3RydWN0IG1lbV9jZ3JvdXAgKm1lbV9jZ3JvdXBfcHJpdmF0ZV9pZF9nZXRfb25saW5lKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZyxcbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmNcbmluZGV4IDU2Y2Q0YWYwODIzMjZiLi5lMTcxZmUzNmIwNzExNyAxMDA2NDRcbi0tLSBhL21tL21lbWNvbnRyb2wuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC5jXG5AQCAtNDIxNiw3ICYjNDM7NDIxNiw3IEBAIHN0YXRpYyBpbnQgbWVtX2Nncm91cF9jc3Nfb25saW5lKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MpXG4gXHQvKlxuIFx0ICogQSBtZW1jZyBtdXN0IGJlIHZpc2libGUgZm9yIGV4cGFuZF9zaHJpbmtlcl9pbmZvKClcbiBcdCAqIGJ5IHRoZSB0aW1lIHRoZSBtYXBzIGFyZSBhbGxvY2F0ZWQuIFNvLCB3ZSBhbGxvY2F0ZSBtYXBzXG4tXHQgKiBoZXJlLCB3aGVuIGZvcl9lYWNoX21lbV9jZ3JvdXAoKSBjYW4mIzM5O3Qgc2tpcCBpdC5cbiYjNDM7XHQgKiBoZXJlLCB3aGVuIG1lbV9jZ3JvdXBfaXRlcigpIGNhbiYjMzk7dCBza2lwIGl0LlxuIFx0ICovXG4gXHRpZiAoYWxsb2Nfc2hyaW5rZXJfaW5mbyhtZW1jZykpXG4gXHRcdGdvdG8gb2ZmbGluZV9rbWVtO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjAyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBhbiB1bnVzZWQgbWFjcm8gKGBmb3JfZWFjaF9tZW1fY2dyb3VwYCksIGEgcmVkdW5kYW50IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIChgbWVtY2dfZXZlbnRzYCksIGFuZCB1cGRhdGVzIGEgY29tbWVudC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MDFjZTUzMDNlMzNmNGE2NjA2NGNkODJmZDc5MTJkMzE3NzBhMzBhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMTk6MDI6MjQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLXYxLmggYi9tbS9tZW1jb250cm9sLXYxLmgKaW5kZXggZjkyZjgxMTA4ZDVlZDIuLmQzZWQ1YjkzMjkwZmJiIDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9sLXYxLmgKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC12MS5oCkBAIC0xNywxNCAmIzQzOzE3LDggQEAKIAkgICAgIGl0ZXIgIT0gTlVMTDsJCQkJXAogCSAgICAgaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihyb290LCBpdGVyLCBOVUxMKSkKIAotI2RlZmluZSBmb3JfZWFjaF9tZW1fY2dyb3VwKGl0ZXIpCQkJXAotCWZvciAoaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihOVUxMLCBOVUxMLCBOVUxMKTsJXAotCSAgICAgaXRlciAhPSBOVUxMOwkJCQlcCi0JICAgICBpdGVyID0gbWVtX2Nncm91cF9pdGVyKE5VTEwsIGl0ZXIsIE5VTEwpKQotCiB2b2lkIGRyYWluX2FsbF9zdG9jayhzdHJ1Y3QgbWVtX2Nncm91cCAqcm9vdF9tZW1jZyk7CiAKLXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTsKIGludCBtZW1vcnlfc3RhdF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdik7CiAKIHN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX3ByaXZhdGVfaWRfZ2V0X29ubGluZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmMKaW5kZXggNTZjZDRhZjA4MjMyNmIuLmUxNzFmZTM2YjA3MTE3IDEwMDY0NAotLS0gYS9tbS9tZW1jb250cm9sLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtY29udHJvbC5jCkBAIC00MjE2LDcgJiM0Mzs0MjE2LDcgQEAgc3RhdGljIGludCBtZW1fY2dyb3VwX2Nzc19vbmxpbmUoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcykKIAkvKgogCSAqIEEgbWVtY2cgbXVzdCBiZSB2aXNpYmxlIGZvciBleHBhbmRfc2hyaW5rZXJfaW5mbygpCiAJICogYnkgdGhlIHRpbWUgdGhlIG1hcHMgYXJlIGFsbG9jYXRlZC4gU28sIHdlIGFsbG9jYXRlIG1hcHMKLQkgKiBoZXJlLCB3aGVuIGZvcl9lYWNoX21lbV9jZ3JvdXAoKSBjYW4mIzM5O3Qgc2tpcCBpdC4KJiM0MzsJICogaGVyZSwgd2hlbiBtZW1fY2dyb3VwX2l0ZXIoKSBjYW4mIzM5O3Qgc2tpcCBpdC4KIAkgKi8KIAlpZiAoYWxsb2Nfc2hyaW5rZXJfaW5mbyhtZW1jZykpCiAJCWdvdG8gb2ZmbGluZV9rbWVtOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTQyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1pbm9yIE1lbW9yeSBDb250cm9sIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYW5pbmcgdXAgc29tZSB1bnVzZWQgY29kZSBpbiB0aGUgbWVtb3J5IGNvbnRyb2wgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGF4aW5nIHRoZSBgZm9yX2VhY2hfbWVtX2Nncm91cGAgbWFjcm8gYW5kIHRoZSBgbWVtY2dfZXZlbnRzYCBmdW5jdGlvbiBkZWNsYXJhdGlvbiBmcm9tIGBtbS9tZW1jb250cm9sLXYxLmhgLiBJdCBhbHNvIHRvdWNoZXMgYSBjb21tZW50IGluIGBtbS9tZW1jb250cm9sLmNgLiBIbW0sIGp1c3QgYSBjbGVhbnVwLCB0aGVuPyBMb29rcyBsaWtlIGl0LgoKSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2gsIGV2ZW4gd2l0aCBzb21ldGhpbmcgdGhpcyBzZWVtaW5nbHkgdHJpdmlhbC4gQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgZm9yX2VhY2hfbWVtX2Nncm91cGAgYW5kIGBtZW1jZ19ldmVudHNgIHJlYWxseSAqYXJlKiB1bnVzZWQuIE5vIHBvaW50IGluIGJyZWFraW5nIGFueXRoaW5nIGZvciBhIG1pbm9yIGNsZWFudXAuIExldCYjMzk7cyBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIGlmIHRoZXkmIzM5O3JlIGx1cmtpbmcgYW55d2hlcmUgZWxzZSBpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBHb3R0YSBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGhpZGRlbiBkZXBlbmRlbmNpZXMgb3IgdW5leHBlY3RlZCB1c2VzLiBKdXN0IGEgcXVpY2sgZG91YmxlLWNoZWNrIGZvciBzYWZldHkmIzM5O3Mgc2FrZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb3JfZWFjaF9tZW1fY2dyb3VwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbWNvbnRyb2wtdjEuYz03Njc9c3RhdGljIHZvaWQgbWVtX2Nncm91cF9vb21fbm90aWZ5KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtNzcwLVxubW0vbWVtY29udHJvbC12MS5jOjc3MTpcdGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCBtZW1jZylcbm1tL21lbWNvbnRyb2wtdjEuYy03NzItXHRcdG1lbV9jZ3JvdXBfb29tX25vdGlmeV9jYihpdGVyKTtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTI2ND1zdGF0aWMgYm9vbCBtZW1fY2dyb3VwX29vbV90cnlsb2NrKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtMTI2OS1cbm1tL21lbWNvbnRyb2wtdjEuYzoxMjcwOlx0Zm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIG1lbWNnKSB7XG5tbS9tZW1jb250cm9sLXYxLmMtMTI3MS1cdFx0aWYgKGl0ZXItXHUwMDNlb29tX2xvY2spIHtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtMTI4Ny1cdFx0ICovXG5tbS9tZW1jb250cm9sLXYxLmM6MTI4ODpcdFx0Zm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIG1lbWNnKSB7XG5tbS9tZW1jb250cm9sLXYxLmMtMTI4OS1cdFx0XHRpZiAoaXRlciA9PSBmYWlsZWQpIHtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTMwMz1zdGF0aWMgdm9pZCBtZW1fY2dyb3VwX29vbV91bmxvY2soc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxuLS1cbm1tL21lbWNvbnRyb2wtdjEuYy0xMzA4LVx0bXV0ZXhfcmVsZWFzZShcdTAwMjZtZW1jZ19vb21fbG9ja19kZXBfbWFwLCBfUkVUX0lQXyk7XG5tbS9tZW1jb250cm9sLXYxLmM6MTMwOTpcdGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCBtZW1jZylcbm1tL21lbWNvbnRyb2wtdjEuYy0xMzEwLVx0XHRpdGVyLVx1MDAzZW9vbV9sb2NrID0gZmFsc2U7XG4tLVxubW0vbWVtY29udHJvbC12MS5jPTEzMTQ9c3RhdGljIHZvaWQgbWVtX2Nncm91cF9tYXJrX3VuZGVyX29vbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTEzMTgtXHRzcGluX2xvY2soXHUwMDI2bWVtY2dfb29tX2xvY2spO1xubW0vbWVtY29udHJvbC12MS5jOjEzMTk6XHRmb3JfZWFjaF9tZW1fY2dyb3VwX3RyZWUoaXRlciwgbWVtY2cpXG5tbS9tZW1jb250cm9sLXYxLmMtMTMyMC1cdFx0aXRlci1cdTAwM2V1bmRlcl9vb20mIzQzOyYjNDM7O1xuLS1cbm1tL21lbWNvbnRyb2wtdjEuYz0xMzI0PXN0YXRpYyB2b2lkIG1lbV9jZ3JvdXBfdW5tYXJrX3VuZGVyX29vbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTEzMzItXHRzcGluX2xvY2soXHUwMDI2bWVtY2dfb29tX2xvY2spO1xubW0vbWVtY29udHJvbC12MS5jOjEzMzM6XHRmb3JfZWFjaF9tZW1fY2dyb3VwX3RyZWUoaXRlciwgbWVtY2cpXG5tbS9tZW1jb250cm9sLXYxLmMtMTMzNC1cdFx0aWYgKGl0ZXItXHUwMDNldW5kZXJfb29tIFx1MDAzZSAwKVxuLS1cbm1tL21lbWNvbnRyb2wtdjEuaC0xNC0gKi9cbm1tL21lbWNvbnRyb2wtdjEuaDoxNTojZGVmaW5lIGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCByb290KVx0XHRcXFxubW0vbWVtY29udHJvbC12MS5oLTE2LVx0Zm9yIChpdGVyID0gbWVtX2Nncm91cF9pdGVyKHJvb3QsIE5VTEwsIE5VTEwpO1x0XFxcbi0tXG5tbS9tZW1jb250cm9sLmM9MTM2Mj12b2lkIG1lbV9jZ3JvdXBfc2Nhbl90YXNrcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG4tLVxubW0vbWVtY29udHJvbC5jLTEzNjktXG5tbS9tZW1jb250cm9sLmM6MTM3MDpcdGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCBtZW1jZykge1xubW0vbWVtY29udHJvbC5jLTEzNzEtXHRcdHN0cnVjdCBjc3NfdGFza19pdGVyIGl0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbWNnX2V2ZW50cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD05MTM9c3RhdGljIGlubGluZSB2b2lkIG1vZF9tZW1jZ19wYWdlX3N0YXRlKHN0cnVjdCBwYWdlICpwYWdlLFxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTkyNy1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjkyODp1bnNpZ25lZCBsb25nIG1lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBldmVudCk7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05MjktdW5zaWduZWQgbG9uZyBtZW1jZ19wYWdlX3N0YXRlKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGlkeCk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9OTQwPXZvaWQgbW9kX2xydXZlY19rbWVtX3N0YXRlKHZvaWQgKnAsIGVudW0gbm9kZV9zdGF0X2l0ZW0gaWR4LCBpbnQgdmFsKTtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk0MS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk0Mjp2b2lkIGNvdW50X21lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGVudW0gdm1fZXZlbnRfaXRlbSBpZHgsXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NDMtXHRcdFx0dW5zaWduZWQgbG9uZyBjb3VudCk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9OTQ1PXN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9tZW1jZ19mb2xpb19ldmVudHMoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NTQtXHRtZW1jZyA9IGZvbGlvX21lbWNnKGZvbGlvKTtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk1NTpcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgaWR4LCBucik7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NTYtXHRyY3VfcmVhZF91bmxvY2soKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NTgtXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDo5NTk6c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2V2ZW50c19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk2MC1cdFx0XHRcdFx0ZW51bSB2bV9ldmVudF9pdGVtIGlkeCwgdW5zaWduZWQgbG9uZyBjb3VudClcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NjktXHRpZiAobGlrZWx5KG1lbWNnKSlcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk3MDpcdFx0Y291bnRfbWVtY2dfZXZlbnRzKG1lbWNnLCBpZHgsIGNvdW50KTtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk3MS1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oPTk3ND1zdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbWVtY2dfZXZlbnRfbW0oc3RydWN0IG1tX3N0cnVjdCAqbW0sXG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTc2LXtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk3NzpcdGNvdW50X21lbWNnX2V2ZW50c19tbShtbSwgaWR4LCAxKTtcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk3OC19XG4tLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTM5NT1zdGF0aWMgaW5saW5lIHZvaWQgbW9kX2xydXZlY19rbWVtX3N0YXRlKHZvaWQgKnAsIGVudW0gbm9kZV9zdGF0X2l0ZW0gaWR4LFxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE0MDItXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDoxNDAzOnN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9tZW1jZ19ldmVudHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQwNC1cdFx0XHRcdFx0ZW51bSB2bV9ldmVudF9pdGVtIGlkeCxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNDA5PXN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9tZW1jZ19mb2xpb19ldmVudHMoc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDEzLVxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTQxNDpzdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbWVtY2dfZXZlbnRzX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQxNS1cdFx0XHRcdFx0ZW51bSB2bV9ldmVudF9pdGVtIGlkeCwgdW5zaWduZWQgbG9uZyBjb3VudClcbi0tXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNzQ2PXN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9vYmpjZ19ldmVudHMoc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnLFxuLS1cbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTE3NTYtXHRtZW1jZyA9IG9ial9jZ3JvdXBfbWVtY2cob2JqY2cpO1xuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6MTc1NzpcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgaWR4LCBjb3VudCk7XG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNzU4LVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWVtY2cuaD00OD1ERUNMQVJFX0VWRU5UX0NMQVNTKG1lbWNnX3JzdGF0X2V2ZW50cyxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9tZW1jZy5oLTY5LVxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWVtY2cuaDo3MDpERUZJTkVfRVZFTlQobWVtY2dfcnN0YXRfZXZlbnRzLCBjb3VudF9tZW1jZ19ldmVudHMsXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9tZW1jZy5oLTcxLVxuLS1cbm1tL2JwZl9tZW1jb250cm9sLmM9OTI9X19icGZfa2Z1bmMgdW5zaWduZWQgbG9uZyBicGZfbWVtX2Nncm91cF92bV9ldmVudHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxuLS1cbm1tL2JwZl9tZW1jb250cm9sLmMtOTctXG5tbS9icGZfbWVtY29udHJvbC5jOjk4Olx0cmV0dXJuIG1lbWNnX2V2ZW50cyhtZW1jZywgZXZlbnQpO1xubW0vYnBmX21lbWNvbnRyb2wuYy05OS19XG4tLVxubW0vbWVtY29udHJvbC12MS5jPTUzMz1zdGF0aWMgdm9pZCBtZW1jZzFfY2hhcmdlX3N0YXRpc3RpY3Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgbnJfcGFnZXMpXG4tLVxubW0vbWVtY29udHJvbC12MS5jLTUzNi1cdGlmIChucl9wYWdlcyBcdTAwM2UgMClcbm1tL21lbWNvbnRyb2wtdjEuYzo1Mzc6XHRcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgUEdQR0lOLCAxKTtcbm1tL21lbWNvbnRyb2wtdjEuYy01MzgtXHRlbHNlIHtcbm1tL21lbWNvbnRyb2wtdjEuYzo1Mzk6XHRcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgUEdQR09VVCwgMSk7XG5tbS9tZW1jb250cm9sLXYxLmMtNTQwLVx0XHRucl9wYWdlcyA9IC1ucl9wYWdlczsgLyogZm9yIGV2ZW50ICovXG4tLVxubW0vbWVtY29udHJvbC12MS5jPTcyOD12b2lkIG1lbWNnMV91bmNoYXJnZV9iYXRjaChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGxvbmcgcGdwZ291dCxcbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtNzMzLVx0bG9jYWxfaXJxX3NhdmUoZmxhZ3MpO1xubW0vbWVtY29udHJvbC12MS5jOjczNDpcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgUEdQR09VVCwgcGdwZ291dCk7XG5tbS9tZW1jb250cm9sLXYxLmMtNzM1LVx0X190aGlzX2NwdV9hZGQobWVtY2ctXHUwMDNlZXZlbnRzX3BlcmNwdS1cdTAwM2Vucl9wYWdlX2V2ZW50cywgbnJfbWVtb3J5KTtcbi0tXG5tbS9tZW1jb250cm9sLXYxLmM9MTkyNj12b2lkIG1lbWNnMV9zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxuLS1cbm1tL21lbWNvbnRyb2wtdjEuYy0xOTQ0LVx0XHRzZXFfYnVmX3ByaW50ZihzLCBcJiMzNDslcyAlbHVcXG5cJiMzNDssIHZtX2V2ZW50X25hbWUobWVtY2cxX2V2ZW50c1tpXSksXG5tbS9tZW1jb250cm9sLXYxLmM6MTk0NTpcdFx0XHQgICAgICAgbWVtY2dfZXZlbnRzX2xvY2FsKG1lbWNnLCBtZW1jZzFfZXZlbnRzW2ldKSk7XG5tbS9tZW1jb250cm9sLXYxLmMtMTk0Ni1cbi0tXG5tbS9tZW1jb250cm9sLXYxLmMtMTk3My1cdFx0XHQgICAgICAgdm1fZXZlbnRfbmFtZShtZW1jZzFfZXZlbnRzW2ldKSxcbm1tL21lbWNvbnRyb2wtdjEuYzoxOTc0Olx0XHRcdCAgICAgICAodTY0KW1lbWNnX2V2ZW50cyhtZW1jZywgbWVtY2cxX2V2ZW50c1tpXSkpO1xubW0vbWVtY29udHJvbC12MS5jLTE5NzUtXG4tLVxubW0vbWVtY29udHJvbC12MS5oPTMxPXN0YXRpYyBpbmxpbmUgYm9vbCBkb19tZW1zd19hY2NvdW50KHZvaWQpXG4tLVxubW0vbWVtY29udHJvbC12MS5oLTM1LVxubW0vbWVtY29udHJvbC12MS5oOjM2OnVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTtcbm1tL21lbWNvbnRyb2wtdjEuaC0zNy11bnNpZ25lZCBsb25nIG1lbWNnX3BhZ2Vfc3RhdGVfbG9jYWwoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaWR4KTtcbi0tXG5tbS9tZW1jb250cm9sLmM9NTg5PXN0YXRpYyB1OCBtZW1fY2dyb3VwX2V2ZW50c19pbmRleFtOUl9WTV9FVkVOVF9JVEVNU10gX19yZWFkX21vc3RseTtcbm1tL21lbWNvbnRyb2wuYy01OTAtXG5tbS9tZW1jb250cm9sLmM6NTkxOnN0YXRpYyB2b2lkIGluaXRfbWVtY2dfZXZlbnRzKHZvaWQpXG5tbS9tZW1jb250cm9sLmMtNTkyLXtcbi0tXG5tbS9tZW1jb250cm9sLmMtNjAzLVxubW0vbWVtY29udHJvbC5jOjYwNDpzdGF0aWMgaW5saW5lIGludCBtZW1jZ19ldmVudHNfaW5kZXgoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcbm1tL21lbWNvbnRyb2wuYy02MDUte1xuLS1cbm1tL21lbWNvbnRyb2wuYz05OTg9dm9pZCBtb2RfbHJ1dmVjX2ttZW1fc3RhdGUodm9pZCAqcCwgZW51bSBub2RlX3N0YXRfaXRlbSBpZHgsIGludCB2YWwpXG4tLVxubW0vbWVtY29udHJvbC5jLTEwMjItLyoqXG5tbS9tZW1jb250cm9sLmM6MTAyMzogKiBjb3VudF9tZW1jZ19ldmVudHMgLSBhY2NvdW50IFZNIGV2ZW50cyBpbiBhIGNncm91cFxubW0vbWVtY29udHJvbC5jLTEwMjQtICogQG1lbWNnOiB0aGUgbWVtb3J5IGNncm91cFxuLS1cbm1tL21lbWNvbnRyb2wuYy0xMDI3LSAqL1xubW0vbWVtY29udHJvbC5jOjEwMjg6dm9pZCBjb3VudF9tZW1jZ19ldmVudHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBlbnVtIHZtX2V2ZW50X2l0ZW0gaWR4LFxubW0vbWVtY29udHJvbC5jLTEwMjktXHRcdFx0ICB1bnNpZ25lZCBsb25nIGNvdW50KVxubW0vbWVtY29udHJvbC5jLTEwMzAte1xubW0vbWVtY29udHJvbC5jOjEwMzE6XHRpbnQgaSA9IG1lbWNnX2V2ZW50c19pbmRleChpZHgpO1xubW0vbWVtY29udHJvbC5jLTEwMzItXHRpbnQgY3B1O1xuLS1cbm1tL21lbWNvbnRyb2wuYy0xMDQzLVx0bWVtY2dfcnN0YXRfdXBkYXRlZChtZW1jZywgY291bnQsIGNwdSk7XG5tbS9tZW1jb250cm9sLmM6MTA0NDpcdHRyYWNlX2NvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgaWR4LCBjb3VudCk7XG5tbS9tZW1jb250cm9sLmMtMTA0NS1cbi0tXG5tbS9tZW1jb250cm9sLmMtMTA0OC1cbm1tL21lbWNvbnRyb2wuYzoxMDQ5OnVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxubW0vbWVtY29udHJvbC5jLTEwNTAte1xubW0vbWVtY29udHJvbC5jOjEwNTE6XHRpbnQgaSA9IG1lbWNnX2V2ZW50c19pbmRleChldmVudCk7XG5tbS9tZW1jb250cm9sLmMtMTA1Mi1cbi0tXG5tbS9tZW1jb250cm9sLmM9MTA1OT1ib29sIG1lbWNnX3ZtX2V2ZW50X2l0ZW1fdmFsaWQoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcbi0tXG5tbS9tZW1jb250cm9sLmMtMTA2My1cbm1tL21lbWNvbnRyb2wuYzoxMDY0Olx0cmV0dXJuICFCQURfU1RBVF9JRFgobWVtY2dfZXZlbnRzX2luZGV4KGlkeCkpO1xubW0vbWVtY29udHJvbC5jLTEwNjUtfVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xMDY3LSNpZmRlZiBDT05GSUdfTUVNQ0dfVjFcbm1tL21lbWNvbnRyb2wuYzoxMDY4OnVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxubW0vbWVtY29udHJvbC5jLTEwNjkte1xubW0vbWVtY29udHJvbC5jOjEwNzA6XHRpbnQgaSA9IG1lbWNnX2V2ZW50c19pbmRleChldmVudCk7XG5tbS9tZW1jb250cm9sLmMtMTA3MS1cbi0tXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxuLS1cbm1tL21lbWNvbnRyb2wuYy0xNzQ2LVx0XHRcdCAgICAgICB2bV9ldmVudF9uYW1lKG1lbWNnX3ZtX2V2ZW50X3N0YXRbaV0pLFxubW0vbWVtY29udHJvbC5jOjE3NDc6XHRcdFx0ICAgICAgIG1lbWNnX2V2ZW50cyhtZW1jZywgbWVtY2dfdm1fZXZlbnRfc3RhdFtpXSkpO1xubW0vbWVtY29udHJvbC5jLTE3NDgtXHR9XG4tLVxubW0vbWVtY29udHJvbC5jPTQxNTY9bWVtX2Nncm91cF9jc3NfYWxsb2Moc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKnBhcmVudF9jc3MpXG4tLVxubW0vbWVtY29udHJvbC5jLTQxODctXHRcdGluaXRfbWVtY2dfc3RhdHMoKTtcbm1tL21lbWNvbnRyb2wuYzo0MTg4Olx0XHRpbml0X21lbWNnX2V2ZW50cygpO1xubW0vbWVtY29udHJvbC5jLTQxODktXHRcdHBhZ2VfY291bnRlcl9pbml0KFx1MDAyNm1lbWNnLVx1MDAzZW1lbW9yeSwgTlVMTCwgdHJ1ZSk7XG4tLVxubW0vbWVtcG9saWN5LmM9ODkwPXVuc2lnbmVkIGxvbmcgY2hhbmdlX3Byb3RfbnVtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5tbS9tZW1wb2xpY3kuYy05MDAtXHRcdGNvdW50X3ZtX251bWFfZXZlbnRzKE5VTUFfUFRFX1VQREFURVMsIG5yX3VwZGF0ZWQpO1xubW0vbWVtcG9saWN5LmM6OTAxOlx0XHRjb3VudF9tZW1jZ19ldmVudHNfbW0odm1hLVx1MDAzZXZtX21tLCBOVU1BX1BURV9VUERBVEVTLCBucl91cGRhdGVkKTtcbm1tL21lbXBvbGljeS5jLTkwMi1cdH1cbi0tXG5tbS9taWdyYXRlLmM9Mjc0ND1pbnQgbWlncmF0ZV9taXNwbGFjZWRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG5vZGUpXG4tLVxubW0vbWlncmF0ZS5jLTI3NjAtXHRcdGNvdW50X3ZtX251bWFfZXZlbnRzKE5VTUFfUEFHRV9NSUdSQVRFLCBucl9zdWNjZWVkZWQpO1xubW0vbWlncmF0ZS5jOjI3NjE6XHRcdGNvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgTlVNQV9QQUdFX01JR1JBVEUsIG5yX3N1Y2NlZWRlZCk7XG5tbS9taWdyYXRlLmMtMjc2Mi1cdFx0aWYgKChzeXNjdGxfbnVtYV9iYWxhbmNpbmdfbW9kZSBcdTAwMjYgTlVNQV9CQUxBTkNJTkdfTUVNT1JZX1RJRVJJTkcpXG4tLVxubW0vc3dhcC5jPTM0Mj1zdGF0aWMgdm9pZCBscnVfYWN0aXZhdGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL3N3YXAuYy0zNTUtXHRfX2NvdW50X3ZtX2V2ZW50cyhQR0FDVElWQVRFLCBucl9wYWdlcyk7XG5tbS9zd2FwLmM6MzU2Olx0Y291bnRfbWVtY2dfZXZlbnRzKGxydXZlY19tZW1jZyhscnV2ZWMpLCBQR0FDVElWQVRFLCBucl9wYWdlcyk7XG5tbS9zd2FwLmMtMzU3LX1cbi0tXG5tbS9zd2FwLmM9NjA1PXN0YXRpYyB2b2lkIGxydV9kZWFjdGl2YXRlX2ZpbGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL3N3YXAuYy02NDAtXHRcdF9fY291bnRfdm1fZXZlbnRzKFBHREVBQ1RJVkFURSwgbnJfcGFnZXMpO1xubW0vc3dhcC5jOjY0MTpcdFx0Y291bnRfbWVtY2dfZXZlbnRzKGxydXZlY19tZW1jZyhscnV2ZWMpLCBQR0RFQUNUSVZBVEUsXG5tbS9zd2FwLmMtNjQyLVx0XHRcdFx0ICAgICBucl9wYWdlcyk7XG4tLVxubW0vc3dhcC5jPTY0Nj1zdGF0aWMgdm9pZCBscnVfZGVhY3RpdmF0ZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vc3dhcC5jLTY1OC1cdF9fY291bnRfdm1fZXZlbnRzKFBHREVBQ1RJVkFURSwgbnJfcGFnZXMpO1xubW0vc3dhcC5jOjY1OTpcdGNvdW50X21lbWNnX2V2ZW50cyhscnV2ZWNfbWVtY2cobHJ1dmVjKSwgUEdERUFDVElWQVRFLCBucl9wYWdlcyk7XG5tbS9zd2FwLmMtNjYwLX1cbi0tXG5tbS9zd2FwLmM9NjYyPXN0YXRpYyB2b2lkIGxydV9sYXp5ZnJlZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vc3dhcC5jLTY4NC1cdF9fY291bnRfdm1fZXZlbnRzKFBHTEFaWUZSRUUsIG5yX3BhZ2VzKTtcbm1tL3N3YXAuYzo2ODU6XHRjb3VudF9tZW1jZ19ldmVudHMobHJ1dmVjX21lbWNnKGxydXZlYyksIFBHTEFaWUZSRUUsIG5yX3BhZ2VzKTtcbm1tL3N3YXAuYy02ODYtfVxuLS1cbm1tL3Ztc2Nhbi5jPTIwNjg9c3RhdGljIHZvaWQgc2hyaW5rX2FjdGl2ZV9saXN0KHVuc2lnbmVkIGxvbmcgbnJfdG9fc2Nhbixcbi0tXG5tbS92bXNjYW4uYy0yMTQ3LVx0Y291bnRfdm1fZXZlbnRzKFBHREVBQ1RJVkFURSwgbnJfZGVhY3RpdmF0ZSk7XG5tbS92bXNjYW4uYzoyMTQ4Olx0Y291bnRfbWVtY2dfZXZlbnRzKGxydXZlY19tZW1jZyhscnV2ZWMpLCBQR0RFQUNUSVZBVEUsIG5yX2RlYWN0aXZhdGUpO1xubW0vdm1zY2FuLmMtMjE0OS1cdG1vZF9ub2RlX3BhZ2Vfc3RhdGUocGdkYXQsIE5SX0lTT0xBVEVEX0FOT04gJiM0MzsgZmlsZSwgLW5yX3Rha2VuKTtcbi0tXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jPTMzPXN0cnVjdCBtZW1jZ19jb3VudGVycyB7XG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy00MS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6NDI6c3RydWN0IG1lbWNnX2V2ZW50cyB7XG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTQzLVx0c3RydWN0IG1lbWNnX2NvdW50ZXJzIGNvdW50ZXJzO1xuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM9NjA9c3RhdGljIGludCBnZXRfbWVtY2dfY291bnRlcihjaGFyICpsaW5lLCBjb25zdCBjaGFyICpuYW1lLCBsb25nICpjb3VudGVyKVxuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtOTctXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjk4OnN0YXRpYyBpbnQgcmVhZF9tZW1jZ19ldmVudHMoc3RydWN0IG1lbWNnX2V2ZW50cyAqZXZlbnRzLCBib29sIHNob3dfZGlmZilcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtOTkte1xuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjAxLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzoyMDI6c3RhdGljIHZvaWQgcHJvY2Vzc19tZW1jZ19ldmVudHMoc3RydWN0IG1lbWNnX2V2ZW50cyAqZXZlbnRzLFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yMDMtXHRcdFx0XHQgc3RydWN0IGlub3RpZnlfZXZlbnQgKmV2ZW50KVxuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjE5LVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzoyMjA6XHRyZXQgPSByZWFkX21lbWNnX2V2ZW50cyhldmVudHMsIC8qIHNob3dfZGlmZiA9ICovdHJ1ZSk7XG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTIyMS1cdGlmIChyZXQpXG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yMjQtXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjIyNTpzdGF0aWMgdm9pZCBtb25pdG9yX2V2ZW50cyhzdHJ1Y3QgbWVtY2dfZXZlbnRzICpldmVudHMpXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTIyNi17XG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yNTMtXHRcdFx0d2hpbGUgKElOT1RJRllfRVZFTlRfT0soZXZlbnQsIGxlbmd0aCkpIHtcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MjU0Olx0XHRcdFx0cHJvY2Vzc19tZW1jZ19ldmVudHMoZXZlbnRzLCBldmVudCk7XG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTI1NS1cdFx0XHRcdGV2ZW50ID0gSU5PVElGWV9FVkVOVF9ORVhUKGV2ZW50LCBsZW5ndGgpO1xuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjYwLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzoyNjE6c3RhdGljIGludCBpbml0aWFsaXplX21lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtY2dfZXZlbnRzICpldmVudHMsXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTI2Mi1cdFx0XHRcdCAgIGNvbnN0IGNoYXIgKmNncm91cClcbi0tXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTI2NS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MjY2Olx0bWVtc2V0KGV2ZW50cywgMCwgc2l6ZW9mKHN0cnVjdCBtZW1jZ19ldmVudHMpKTtcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjY3LVxuLS1cbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjc3LVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzoyNzg6XHRyZXQgPSByZWFkX21lbWNnX2V2ZW50cyhldmVudHMsIC8qIHNob3dfZGlmZiA9ICovZmFsc2UpO1xuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yNzktXHRpZiAocmV0KSB7XG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMDItXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjMwMzpzdGF0aWMgdm9pZCBjbGVhbnVwX21lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtY2dfZXZlbnRzICpldmVudHMpXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTMwNC17XG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYz0zMDk9aW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMTAte1xuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzozMTE6XHRzdHJ1Y3QgbWVtY2dfZXZlbnRzIGV2ZW50cztcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMzEyLVx0c3NpemVfdCByZXQ7XG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMTYtXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjMxNzpcdHJldCA9IGluaXRpYWxpemVfbWVtY2dfZXZlbnRzKFx1MDAyNmV2ZW50cywgYXJndlsxXSk7XG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTMxOC1cdGlmIChyZXQpXG4tLVxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMjItXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjMyMzpcdGNsZWFudXBfbWVtY2dfZXZlbnRzKFx1MDAyNmV2ZW50cyk7XG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTMyNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjE2CgkJCQkJCQlvdXRwdXQ6IDc0CgkJCQkJCQl0aG91Z2h0czogNzIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBDb250cm9sIENsZWFudXAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtIbW0sIHdoYXQmIzM5O3MgdGhpcyBkb2luZyB0byBgbW0vbWVtY29udHJvbC12MS5oYD8mIzM0Oy4gSXQgc2VlbXMgdG8gYmUgcmVtb3ZpbmcgYGZvcl9lYWNoX21lbV9jZ3JvdXBgLiBXYWl0IGEgc2Vjb25k4oCmIGlzbiYjMzk7dCB0aGF0IG1hY3JvIGNvbXBsZXRlbHkgdW51c2VkIGluIHRoZSBrZXJuZWwgbm93PyBUaGF0JiMzOTtzIHJpZ2h0LCBpdCBpcyEgR29vZCByaWRkYW5jZS4KClRoZW4gSSBub3RpY2UgaXQmIzM5O3MgYWxzbyB0YWtpbmcgb3V0IGB1bnNpZ25lZCBsb25nIG1lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBldmVudCk7YCBmcm9tIHRoZSBzYW1lIGhlYWRlci4gSG9sZCBvbiwgYG1lbWNnX2V2ZW50c2AgaXMgYWN0dWFsbHkgZGVjbGFyZWQgaW4gYGluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oYCBhbmQgaW1wbGVtZW50ZWQgaW4gYG1tL21lbWNvbnRyb2wuY2AuIFRoaXMgZGVjbGFyYXRpb24gaW4gYG1tL21lbWNvbnRyb2wtdjEuaGAgd2FzIGp1c3QgYSBkdXBsaWNhdGUuIFJlZHVuZGFuY3kgaXMgbmV2ZXIgZ29vZC4KCkFuZCB0aGUgcGF0Y2ggYWxzbyB1cGRhdGVzIGEgY29tbWVudCBpbiBgbW0vbWVtY29udHJvbC5jYCwgcmVwbGFjaW5nIGBmb3JfZWFjaF9tZW1fY2dyb3VwKClgIHdpdGggYG1lbV9jZ3JvdXBfaXRlcigpYC4gUmlnaHQsIGp1c3QgYSBjbGFyaWZpY2F0aW9uLCBub3RoaW5nIG1ham9yLgoKU28sIHN1bW1pbmcgaXQgdXAsIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGNsZWFudXAgYW5kIHJlZmFjdG9yaW5nLiBJdCYjMzk7cyBlbGltaW5hdGluZyBhbiB1bnVzZWQgbWFjcm8sIHJlbW92aW5nIGEgcmVkdW5kYW50IGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCBhbmQgcHJvdmlkaW5nIGEgY29tbWVudCB1cGRhdGUuIFRoZXJlJiMzOTtzIG5vdGhpbmcgaGVyZSB0aGF0IGNoYW5nZXMgdGhlIGtlcm5lbCYjMzk7cyBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIHRoZSBkZWZpbml0aW9uIG9mIGEgbG93LXJpc2ssIHB1cmUgY2xlYW51cCBwYXRjaC4KCkkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgZGlmZiBqdXN0IHRvIGJlIGV4dHJhIHN1cmUuLi4gKltJIG1lbnRhbGx5IHJldmlldyB0aGUgcHJvdmlkZWQgZGlmZl0qIFllcCwgaXQmIzM5O3MgZXhhY3RseSB3aGF0IEkgdGhvdWdodDogdW51c2VkIG1hY3JvIGdvbmUsIHJlZHVuZGFudCBkZWNsYXJhdGlvbiBnb25lLCBjb21tZW50IHVwZGF0ZWQuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGp1c3QgYSByZWZhY3RvcmluZyBjaGFuZ2UsIEkgd291bGRuJiMzOTt0IHdhc3RlIG15IHRpbWUgZnV6emluZyB0aGlzLiBUaGUgYFdvcnRoRnV6emluZ2AgZmxhZyBzaG91bGQgYWJzb2x1dGVseSBiZSBzZXQgdG8gZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTk6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IHJlbW92ZXMgYW4gdW51c2VkIG1hY3JvIChgZm9yX2VhY2hfbWVtX2Nncm91cGApLCBhIHJlZHVuZGFudCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoYG1lbWNnX2V2ZW50c2ApLCBhbmQgdXBkYXRlcyBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZW1vdmVzIGFuIHVudXNlZCBtYWNybyAoYGZvcl9lYWNoX21lbV9jZ3JvdXBgKSwgYSByZWR1bmRhbnQgZnVuY3Rpb24gZGVjbGFyYXRpb24gKGBtZW1jZ19ldmVudHNgKSwgYW5kIHVwZGF0ZXMgYSBjb21tZW50LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTowMjoyNS43MjQ0MDIyOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDMwODY5NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlbW92ZXMgYW4gdW51c2VkIG1hY3JvIChgZm9yX2VhY2hfbWVtX2Nncm91cGApLCBhIHJlZHVuZGFudCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoYG1lbWNnX2V2ZW50c2ApLCBhbmQgdXBkYXRlcyBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6MDI6MjUuNzI0NDA5M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIxNDg3NzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODAxY2U1MzAzZTMzZjRhNjYwNjRjZDgyZmQ3OTEyZDMxNzcwYTMwYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1biAyNCAxOTowMjoyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLXYxLmggYi9tbS9tZW1jb250cm9sLXYxLmhcXG5pbmRleCBmOTJmODExMDhkNWVkMi4uZDNlZDViOTMyOTBmYmIgMTAwNjQ0XFxuLS0tIGEvbW0vbWVtY29udHJvbC12MS5oXFxuKysrIGIvbW0vbWVtY29udHJvbC12MS5oXFxuQEAgLTE3LDE0ICsxNyw4IEBAXFxuIFxcdCAgICAgaXRlciAhPSBOVUxMO1xcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ICAgICBpdGVyID0gbWVtX2Nncm91cF9pdGVyKHJvb3QsIGl0ZXIsIE5VTEwpKVxcbiBcXG4tI2RlZmluZSBmb3JfZWFjaF9tZW1fY2dyb3VwKGl0ZXIpXFx0XFx0XFx0XFxcXFxcbi1cXHRmb3IgKGl0ZXIgPSBtZW1fY2dyb3VwX2l0ZXIoTlVMTCwgTlVMTCwgTlVMTCk7XFx0XFxcXFxcbi1cXHQgICAgIGl0ZXIgIT0gTlVMTDtcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdCAgICAgaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihOVUxMLCBpdGVyLCBOVUxMKSlcXG4tXFxuIHZvaWQgZHJhaW5fYWxsX3N0b2NrKHN0cnVjdCBtZW1fY2dyb3VwICpyb290X21lbWNnKTtcXG4gXFxuLXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTtcXG4gaW50IG1lbW9yeV9zdGF0X3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KTtcXG4gXFxuIHN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX3ByaXZhdGVfaWRfZ2V0X29ubGluZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXFxuZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuY1xcbmluZGV4IDU2Y2Q0YWYwODIzMjZiLi5lMTcxZmUzNmIwNzExNyAxMDA2NDRcXG4tLS0gYS9tbS9tZW1jb250cm9sLmNcXG4rKysgYi9tbS9tZW1jb250cm9sLmNcXG5AQCAtNDIxNiw3ICs0MjE2LDcgQEAgc3RhdGljIGludCBtZW1fY2dyb3VwX2Nzc19vbmxpbmUoc3RydWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcylcXG4gXFx0LypcXG4gXFx0ICogQSBtZW1jZyBtdXN0IGJlIHZpc2libGUgZm9yIGV4cGFuZF9zaHJpbmtlcl9pbmZvKClcXG4gXFx0ICogYnkgdGhlIHRpbWUgdGhlIG1hcHMgYXJlIGFsbG9jYXRlZC4gU28sIHdlIGFsbG9jYXRlIG1hcHNcXG4tXFx0ICogaGVyZSwgd2hlbiBmb3JfZWFjaF9tZW1fY2dyb3VwKCkgY2FuJ3Qgc2tpcCBpdC5cXG4rXFx0ICogaGVyZSwgd2hlbiBtZW1fY2dyb3VwX2l0ZXIoKSBjYW4ndCBza2lwIGl0LlxcbiBcXHQgKi9cXG4gXFx0aWYgKGFsbG9jX3Nocmlua2VyX2luZm8obWVtY2cpKVxcbiBcXHRcXHRnb3RvIG9mZmxpbmVfa21lbTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6MDI6MjYuMzQ2OTI1Mzk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODQwODMzNjE3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZW1vdmVzIGFuIHVudXNlZCBtYWNybyAoYGZvcl9lYWNoX21lbV9jZ3JvdXBgKSwgYSByZWR1bmRhbnQgZnVuY3Rpb24gZGVjbGFyYXRpb24gKGBtZW1jZ19ldmVudHNgKSwgYW5kIHVwZGF0ZXMgYSBjb21tZW50LiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODAxY2U1MzAzZTMzZjRhNjYwNjRjZDgyZmQ3OTEyZDMxNzcwYTMwYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE5OjAyOjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC12MS5oIGIvbW0vbWVtY29udHJvbC12MS5oXG5pbmRleCBmOTJmODExMDhkNWVkMi4uZDNlZDViOTMyOTBmYmIgMTAwNjQ0XG4tLS0gYS9tbS9tZW1jb250cm9sLXYxLmhcbisrKyBiL21tL21lbWNvbnRyb2wtdjEuaFxuQEAgLTE3LDE0ICsxNyw4IEBAXG4gXHQgICAgIGl0ZXIgIT0gTlVMTDtcdFx0XHRcdFxcXG4gXHQgICAgIGl0ZXIgPSBtZW1fY2dyb3VwX2l0ZXIocm9vdCwgaXRlciwgTlVMTCkpXG4gXG4tI2RlZmluZSBmb3JfZWFjaF9tZW1fY2dyb3VwKGl0ZXIpXHRcdFx0XFxcbi1cdGZvciAoaXRlciA9IG1lbV9jZ3JvdXBfaXRlcihOVUxMLCBOVUxMLCBOVUxMKTtcdFxcXG4tXHQgICAgIGl0ZXIgIT0gTlVMTDtcdFx0XHRcdFxcXG4tXHQgICAgIGl0ZXIgPSBtZW1fY2dyb3VwX2l0ZXIoTlVMTCwgaXRlciwgTlVMTCkpXG4tXG4gdm9pZCBkcmFpbl9hbGxfc3RvY2soc3RydWN0IG1lbV9jZ3JvdXAgKnJvb3RfbWVtY2cpO1xuIFxuLXVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTtcbiBpbnQgbWVtb3J5X3N0YXRfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpO1xuIFxuIHN0cnVjdCBtZW1fY2dyb3VwICptZW1fY2dyb3VwX3ByaXZhdGVfaWRfZ2V0X29ubGluZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXG5kaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jXG5pbmRleCA1NmNkNGFmMDgyMzI2Yi4uZTE3MWZlMzZiMDcxMTcgMTAwNjQ0XG4tLS0gYS9tbS9tZW1jb250cm9sLmNcbisrKyBiL21tL21lbWNvbnRyb2wuY1xuQEAgLTQyMTYsNyArNDIxNiw3IEBAIHN0YXRpYyBpbnQgbWVtX2Nncm91cF9jc3Nfb25saW5lKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MpXG4gXHQvKlxuIFx0ICogQSBtZW1jZyBtdXN0IGJlIHZpc2libGUgZm9yIGV4cGFuZF9zaHJpbmtlcl9pbmZvKClcbiBcdCAqIGJ5IHRoZSB0aW1lIHRoZSBtYXBzIGFyZSBhbGxvY2F0ZWQuIFNvLCB3ZSBhbGxvY2F0ZSBtYXBzXG4tXHQgKiBoZXJlLCB3aGVuIGZvcl9lYWNoX21lbV9jZ3JvdXAoKSBjYW4ndCBza2lwIGl0LlxuK1x0ICogaGVyZSwgd2hlbiBtZW1fY2dyb3VwX2l0ZXIoKSBjYW4ndCBza2lwIGl0LlxuIFx0ICovXG4gXHRpZiAoYWxsb2Nfc2hyaW5rZXJfaW5mbyhtZW1jZykpXG4gXHRcdGdvdG8gb2ZmbGluZV9rbWVtO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTk6MDI6MjYuMzQ2OTI4NDQ0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1NDQ5NzU4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaW5vciBNZW1vcnkgQ29udHJvbCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYW5pbmcgdXAgc29tZSB1bnVzZWQgY29kZSBpbiB0aGUgbWVtb3J5IGNvbnRyb2wgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0J3MgYXhpbmcgdGhlIGBmb3JfZWFjaF9tZW1fY2dyb3VwYCBtYWNybyBhbmQgdGhlIGBtZW1jZ19ldmVudHNgIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZyb20gYG1tL21lbWNvbnRyb2wtdjEuaGAuIEl0IGFsc28gdG91Y2hlcyBhIGNvbW1lbnQgaW4gYG1tL21lbWNvbnRyb2wuY2AuIEhtbSwganVzdCBhIGNsZWFudXAsIHRoZW4/IExvb2tzIGxpa2UgaXQuXG5cbkl0J3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2gsIGV2ZW4gd2l0aCBzb21ldGhpbmcgdGhpcyBzZWVtaW5nbHkgdHJpdmlhbC4gQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgZm9yX2VhY2hfbWVtX2Nncm91cGAgYW5kIGBtZW1jZ19ldmVudHNgIHJlYWxseSAqYXJlKiB1bnVzZWQuIE5vIHBvaW50IGluIGJyZWFraW5nIGFueXRoaW5nIGZvciBhIG1pbm9yIGNsZWFudXAuIExldCdzIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgaWYgdGhleSdyZSBsdXJraW5nIGFueXdoZXJlIGVsc2UgaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gR290dGEgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBoaWRkZW4gZGVwZW5kZW5jaWVzIG9yIHVuZXhwZWN0ZWQgdXNlcy4gSnVzdCBhIHF1aWNrIGRvdWJsZS1jaGVjayBmb3Igc2FmZXR5J3Mgc2FrZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE0MiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjAyOjMwLjkwMTQyNzk1MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg5NzkxNTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvcl9lYWNoX21lbV9jZ3JvdXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtY29udHJvbC12MS5jPTc2Nz1zdGF0aWMgdm9pZCBtZW1fY2dyb3VwX29vbV9ub3RpZnkoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbi0tXFxubW0vbWVtY29udHJvbC12MS5jLTc3MC1cXG5tbS9tZW1jb250cm9sLXYxLmM6NzcxOlxcdGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCBtZW1jZylcXG5tbS9tZW1jb250cm9sLXYxLmMtNzcyLVxcdFxcdG1lbV9jZ3JvdXBfb29tX25vdGlmeV9jYihpdGVyKTtcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xMjY0PXN0YXRpYyBib29sIG1lbV9jZ3JvdXBfb29tX3RyeWxvY2soc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKVxcbi0tXFxubW0vbWVtY29udHJvbC12MS5jLTEyNjktXFxubW0vbWVtY29udHJvbC12MS5jOjEyNzA6XFx0Zm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIG1lbWNnKSB7XFxubW0vbWVtY29udHJvbC12MS5jLTEyNzEtXFx0XFx0aWYgKGl0ZXItXFx1MDAzZW9vbV9sb2NrKSB7XFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTI4Ny1cXHRcXHQgKi9cXG5tbS9tZW1jb250cm9sLXYxLmM6MTI4ODpcXHRcXHRmb3JfZWFjaF9tZW1fY2dyb3VwX3RyZWUoaXRlciwgbWVtY2cpIHtcXG5tbS9tZW1jb250cm9sLXYxLmMtMTI4OS1cXHRcXHRcXHRpZiAoaXRlciA9PSBmYWlsZWQpIHtcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xMzAzPXN0YXRpYyB2b2lkIG1lbV9jZ3JvdXBfb29tX3VubG9jayhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTMwOC1cXHRtdXRleF9yZWxlYXNlKFxcdTAwMjZtZW1jZ19vb21fbG9ja19kZXBfbWFwLCBfUkVUX0lQXyk7XFxubW0vbWVtY29udHJvbC12MS5jOjEzMDk6XFx0Zm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIG1lbWNnKVxcbm1tL21lbWNvbnRyb2wtdjEuYy0xMzEwLVxcdFxcdGl0ZXItXFx1MDAzZW9vbV9sb2NrID0gZmFsc2U7XFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmM9MTMxND1zdGF0aWMgdm9pZCBtZW1fY2dyb3VwX21hcmtfdW5kZXJfb29tKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZylcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYy0xMzE4LVxcdHNwaW5fbG9jayhcXHUwMDI2bWVtY2dfb29tX2xvY2spO1xcbm1tL21lbWNvbnRyb2wtdjEuYzoxMzE5OlxcdGZvcl9lYWNoX21lbV9jZ3JvdXBfdHJlZShpdGVyLCBtZW1jZylcXG5tbS9tZW1jb250cm9sLXYxLmMtMTMyMC1cXHRcXHRpdGVyLVxcdTAwM2V1bmRlcl9vb20rKztcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xMzI0PXN0YXRpYyB2b2lkIG1lbV9jZ3JvdXBfdW5tYXJrX3VuZGVyX29vbShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTMzMi1cXHRzcGluX2xvY2soXFx1MDAyNm1lbWNnX29vbV9sb2NrKTtcXG5tbS9tZW1jb250cm9sLXYxLmM6MTMzMzpcXHRmb3JfZWFjaF9tZW1fY2dyb3VwX3RyZWUoaXRlciwgbWVtY2cpXFxubW0vbWVtY29udHJvbC12MS5jLTEzMzQtXFx0XFx0aWYgKGl0ZXItXFx1MDAzZXVuZGVyX29vbSBcXHUwMDNlIDApXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmgtMTQtICovXFxubW0vbWVtY29udHJvbC12MS5oOjE1OiNkZWZpbmUgZm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIHJvb3QpXFx0XFx0XFxcXFxcbm1tL21lbWNvbnRyb2wtdjEuaC0xNi1cXHRmb3IgKGl0ZXIgPSBtZW1fY2dyb3VwX2l0ZXIocm9vdCwgTlVMTCwgTlVMTCk7XFx0XFxcXFxcbi0tXFxubW0vbWVtY29udHJvbC5jPTEzNjI9dm9pZCBtZW1fY2dyb3VwX3NjYW5fdGFza3Moc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vbWVtY29udHJvbC5jLTEzNjktXFxubW0vbWVtY29udHJvbC5jOjEzNzA6XFx0Zm9yX2VhY2hfbWVtX2Nncm91cF90cmVlKGl0ZXIsIG1lbWNnKSB7XFxubW0vbWVtY29udHJvbC5jLTEzNzEtXFx0XFx0c3RydWN0IGNzc190YXNrX2l0ZXIgaXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE5OjAyOjMzLjQ5MTIyMzYwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDYwNjUwMzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbWNnX2V2ZW50c1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD05MTM9c3RhdGljIGlubGluZSB2b2lkIG1vZF9tZW1jZ19wYWdlX3N0YXRlKHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTI3LVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjkyODp1bnNpZ25lZCBsb25nIG1lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBldmVudCk7XFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTI5LXVuc2lnbmVkIGxvbmcgbWVtY2dfcGFnZV9zdGF0ZShzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBpZHgpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9OTQwPXZvaWQgbW9kX2xydXZlY19rbWVtX3N0YXRlKHZvaWQgKnAsIGVudW0gbm9kZV9zdGF0X2l0ZW0gaWR4LCBpbnQgdmFsKTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NDEtXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg6OTQyOnZvaWQgY291bnRfbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgZW51bSB2bV9ldmVudF9pdGVtIGlkeCxcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NDMtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBjb3VudCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD05NDU9c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2ZvbGlvX2V2ZW50cyhzdHJ1Y3QgZm9saW8gKmZvbGlvLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTU0LVxcdG1lbWNnID0gZm9saW9fbWVtY2coZm9saW8pO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjk1NTpcXHRjb3VudF9tZW1jZ19ldmVudHMobWVtY2csIGlkeCwgbnIpO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk1Ni1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk1OC1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDo5NTk6c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2V2ZW50c19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NjAtXFx0XFx0XFx0XFx0XFx0ZW51bSB2bV9ldmVudF9pdGVtIGlkeCwgdW5zaWduZWQgbG9uZyBjb3VudClcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk2OS1cXHRpZiAobGlrZWx5KG1lbWNnKSlcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDo5NzA6XFx0XFx0Y291bnRfbWVtY2dfZXZlbnRzKG1lbWNnLCBpZHgsIGNvdW50KTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC05NzEtXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD05NzQ9c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2V2ZW50X21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtOTc2LXtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaDo5Nzc6XFx0Y291bnRfbWVtY2dfZXZlbnRzX21tKG1tLCBpZHgsIDEpO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oLTk3OC19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xMzk1PXN0YXRpYyBpbmxpbmUgdm9pZCBtb2RfbHJ1dmVjX2ttZW1fc3RhdGUodm9pZCAqcCwgZW51bSBub2RlX3N0YXRfaXRlbSBpZHgsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDAyLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE0MDM6c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTQwNC1cXHRcXHRcXHRcXHRcXHRlbnVtIHZtX2V2ZW50X2l0ZW0gaWR4LFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmg9MTQwOT1zdGF0aWMgaW5saW5lIHZvaWQgY291bnRfbWVtY2dfZm9saW9fZXZlbnRzKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDEzLVxcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE0MTQ6c3RhdGljIGlubGluZSB2b2lkIGNvdW50X21lbWNnX2V2ZW50c19tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSxcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNDE1LVxcdFxcdFxcdFxcdFxcdGVudW0gdm1fZXZlbnRfaXRlbSBpZHgsIHVuc2lnbmVkIGxvbmcgY291bnQpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaD0xNzQ2PXN0YXRpYyBpbmxpbmUgdm9pZCBjb3VudF9vYmpjZ19ldmVudHMoc3RydWN0IG9ial9jZ3JvdXAgKm9iamNnLFxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmgtMTc1Ni1cXHRtZW1jZyA9IG9ial9jZ3JvdXBfbWVtY2cob2JqY2cpO1xcbmluY2x1ZGUvbGludXgvbWVtY29udHJvbC5oOjE3NTc6XFx0Y291bnRfbWVtY2dfZXZlbnRzKG1lbWNnLCBpZHgsIGNvdW50KTtcXG5pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaC0xNzU4LVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWVtY2cuaD00OD1ERUNMQVJFX0VWRU5UX0NMQVNTKG1lbWNnX3JzdGF0X2V2ZW50cyxcXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL21lbWNnLmgtNjktXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWVtY2cuaDo3MDpERUZJTkVfRVZFTlQobWVtY2dfcnN0YXRfZXZlbnRzLCBjb3VudF9tZW1jZ19ldmVudHMsXFxuaW5jbHVkZS90cmFjZS9ldmVudHMvbWVtY2cuaC03MS1cXG4tLVxcbm1tL2JwZl9tZW1jb250cm9sLmM9OTI9X19icGZfa2Z1bmMgdW5zaWduZWQgbG9uZyBicGZfbWVtX2Nncm91cF92bV9ldmVudHMoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLFxcbi0tXFxubW0vYnBmX21lbWNvbnRyb2wuYy05Ny1cXG5tbS9icGZfbWVtY29udHJvbC5jOjk4OlxcdHJldHVybiBtZW1jZ19ldmVudHMobWVtY2csIGV2ZW50KTtcXG5tbS9icGZfbWVtY29udHJvbC5jLTk5LX1cXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz01MzM9c3RhdGljIHZvaWQgbWVtY2cxX2NoYXJnZV9zdGF0aXN0aWNzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IG5yX3BhZ2VzKVxcbi0tXFxubW0vbWVtY29udHJvbC12MS5jLTUzNi1cXHRpZiAobnJfcGFnZXMgXFx1MDAzZSAwKVxcbm1tL21lbWNvbnRyb2wtdjEuYzo1Mzc6XFx0XFx0Y291bnRfbWVtY2dfZXZlbnRzKG1lbWNnLCBQR1BHSU4sIDEpO1xcbm1tL21lbWNvbnRyb2wtdjEuYy01MzgtXFx0ZWxzZSB7XFxubW0vbWVtY29udHJvbC12MS5jOjUzOTpcXHRcXHRjb3VudF9tZW1jZ19ldmVudHMobWVtY2csIFBHUEdPVVQsIDEpO1xcbm1tL21lbWNvbnRyb2wtdjEuYy01NDAtXFx0XFx0bnJfcGFnZXMgPSAtbnJfcGFnZXM7IC8qIGZvciBldmVudCAqL1xcbi0tXFxubW0vbWVtY29udHJvbC12MS5jPTcyOD12b2lkIG1lbWNnMV91bmNoYXJnZV9iYXRjaChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHVuc2lnbmVkIGxvbmcgcGdwZ291dCxcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYy03MzMtXFx0bG9jYWxfaXJxX3NhdmUoZmxhZ3MpO1xcbm1tL21lbWNvbnRyb2wtdjEuYzo3MzQ6XFx0Y291bnRfbWVtY2dfZXZlbnRzKG1lbWNnLCBQR1BHT1VULCBwZ3Bnb3V0KTtcXG5tbS9tZW1jb250cm9sLXYxLmMtNzM1LVxcdF9fdGhpc19jcHVfYWRkKG1lbWNnLVxcdTAwM2VldmVudHNfcGVyY3B1LVxcdTAwM2Vucl9wYWdlX2V2ZW50cywgbnJfbWVtb3J5KTtcXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYz0xOTI2PXZvaWQgbWVtY2cxX3N0YXRfZm9ybWF0KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgc3RydWN0IHNlcV9idWYgKnMpXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmMtMTk0NC1cXHRcXHRzZXFfYnVmX3ByaW50ZihzLCBcXFwiJXMgJWx1XFxcXG5cXFwiLCB2bV9ldmVudF9uYW1lKG1lbWNnMV9ldmVudHNbaV0pLFxcbm1tL21lbWNvbnRyb2wtdjEuYzoxOTQ1OlxcdFxcdFxcdCAgICAgICBtZW1jZ19ldmVudHNfbG9jYWwobWVtY2csIG1lbWNnMV9ldmVudHNbaV0pKTtcXG5tbS9tZW1jb250cm9sLXYxLmMtMTk0Ni1cXG4tLVxcbm1tL21lbWNvbnRyb2wtdjEuYy0xOTczLVxcdFxcdFxcdCAgICAgICB2bV9ldmVudF9uYW1lKG1lbWNnMV9ldmVudHNbaV0pLFxcbm1tL21lbWNvbnRyb2wtdjEuYzoxOTc0OlxcdFxcdFxcdCAgICAgICAodTY0KW1lbWNnX2V2ZW50cyhtZW1jZywgbWVtY2cxX2V2ZW50c1tpXSkpO1xcbm1tL21lbWNvbnRyb2wtdjEuYy0xOTc1LVxcbi0tXFxubW0vbWVtY29udHJvbC12MS5oPTMxPXN0YXRpYyBpbmxpbmUgYm9vbCBkb19tZW1zd19hY2NvdW50KHZvaWQpXFxuLS1cXG5tbS9tZW1jb250cm9sLXYxLmgtMzUtXFxubW0vbWVtY29udHJvbC12MS5oOjM2OnVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTtcXG5tbS9tZW1jb250cm9sLXYxLmgtMzctdW5zaWduZWQgbG9uZyBtZW1jZ19wYWdlX3N0YXRlX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGlkeCk7XFxuLS1cXG5tbS9tZW1jb250cm9sLmM9NTg5PXN0YXRpYyB1OCBtZW1fY2dyb3VwX2V2ZW50c19pbmRleFtOUl9WTV9FVkVOVF9JVEVNU10gX19yZWFkX21vc3RseTtcXG5tbS9tZW1jb250cm9sLmMtNTkwLVxcbm1tL21lbWNvbnRyb2wuYzo1OTE6c3RhdGljIHZvaWQgaW5pdF9tZW1jZ19ldmVudHModm9pZClcXG5tbS9tZW1jb250cm9sLmMtNTkyLXtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy02MDMtXFxubW0vbWVtY29udHJvbC5jOjYwNDpzdGF0aWMgaW5saW5lIGludCBtZW1jZ19ldmVudHNfaW5kZXgoZW51bSB2bV9ldmVudF9pdGVtIGlkeClcXG5tbS9tZW1jb250cm9sLmMtNjA1LXtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYz05OTg9dm9pZCBtb2RfbHJ1dmVjX2ttZW1fc3RhdGUodm9pZCAqcCwgZW51bSBub2RlX3N0YXRfaXRlbSBpZHgsIGludCB2YWwpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTAyMi0vKipcXG5tbS9tZW1jb250cm9sLmM6MTAyMzogKiBjb3VudF9tZW1jZ19ldmVudHMgLSBhY2NvdW50IFZNIGV2ZW50cyBpbiBhIGNncm91cFxcbm1tL21lbWNvbnRyb2wuYy0xMDI0LSAqIEBtZW1jZzogdGhlIG1lbW9yeSBjZ3JvdXBcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xMDI3LSAqL1xcbm1tL21lbWNvbnRyb2wuYzoxMDI4OnZvaWQgY291bnRfbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgZW51bSB2bV9ldmVudF9pdGVtIGlkeCxcXG5tbS9tZW1jb250cm9sLmMtMTAyOS1cXHRcXHRcXHQgIHVuc2lnbmVkIGxvbmcgY291bnQpXFxubW0vbWVtY29udHJvbC5jLTEwMzAte1xcbm1tL21lbWNvbnRyb2wuYzoxMDMxOlxcdGludCBpID0gbWVtY2dfZXZlbnRzX2luZGV4KGlkeCk7XFxubW0vbWVtY29udHJvbC5jLTEwMzItXFx0aW50IGNwdTtcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy0xMDQzLVxcdG1lbWNnX3JzdGF0X3VwZGF0ZWQobWVtY2csIGNvdW50LCBjcHUpO1xcbm1tL21lbWNvbnRyb2wuYzoxMDQ0OlxcdHRyYWNlX2NvdW50X21lbWNnX2V2ZW50cyhtZW1jZywgaWR4LCBjb3VudCk7XFxubW0vbWVtY29udHJvbC5jLTEwNDUtXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTA0OC1cXG5tbS9tZW1jb250cm9sLmM6MTA0OTp1bnNpZ25lZCBsb25nIG1lbWNnX2V2ZW50cyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIGludCBldmVudClcXG5tbS9tZW1jb250cm9sLmMtMTA1MC17XFxubW0vbWVtY29udHJvbC5jOjEwNTE6XFx0aW50IGkgPSBtZW1jZ19ldmVudHNfaW5kZXgoZXZlbnQpO1xcbm1tL21lbWNvbnRyb2wuYy0xMDUyLVxcbi0tXFxubW0vbWVtY29udHJvbC5jPTEwNTk9Ym9vbCBtZW1jZ192bV9ldmVudF9pdGVtX3ZhbGlkKGVudW0gdm1fZXZlbnRfaXRlbSBpZHgpXFxuLS1cXG5tbS9tZW1jb250cm9sLmMtMTA2My1cXG5tbS9tZW1jb250cm9sLmM6MTA2NDpcXHRyZXR1cm4gIUJBRF9TVEFUX0lEWChtZW1jZ19ldmVudHNfaW5kZXgoaWR4KSk7XFxubW0vbWVtY29udHJvbC5jLTEwNjUtfVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTEwNjctI2lmZGVmIENPTkZJR19NRU1DR19WMVxcbm1tL21lbWNvbnRyb2wuYzoxMDY4OnVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzX2xvY2FsKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KVxcbm1tL21lbWNvbnRyb2wuYy0xMDY5LXtcXG5tbS9tZW1jb250cm9sLmM6MTA3MDpcXHRpbnQgaSA9IG1lbWNnX2V2ZW50c19pbmRleChldmVudCk7XFxubW0vbWVtY29udHJvbC5jLTEwNzEtXFxuLS1cXG5tbS9tZW1jb250cm9sLmM9MTY5Mz1zdGF0aWMgdm9pZCBtZW1jZ19zdGF0X2Zvcm1hdChzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csIHN0cnVjdCBzZXFfYnVmICpzKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTE3NDYtXFx0XFx0XFx0ICAgICAgIHZtX2V2ZW50X25hbWUobWVtY2dfdm1fZXZlbnRfc3RhdFtpXSksXFxubW0vbWVtY29udHJvbC5jOjE3NDc6XFx0XFx0XFx0ICAgICAgIG1lbWNnX2V2ZW50cyhtZW1jZywgbWVtY2dfdm1fZXZlbnRfc3RhdFtpXSkpO1xcbm1tL21lbWNvbnRyb2wuYy0xNzQ4LVxcdH1cXG4tLVxcbm1tL21lbWNvbnRyb2wuYz00MTU2PW1lbV9jZ3JvdXBfY3NzX2FsbG9jKHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpwYXJlbnRfY3NzKVxcbi0tXFxubW0vbWVtY29udHJvbC5jLTQxODctXFx0XFx0aW5pdF9tZW1jZ19zdGF0cygpO1xcbm1tL21lbWNvbnRyb2wuYzo0MTg4OlxcdFxcdGluaXRfbWVtY2dfZXZlbnRzKCk7XFxubW0vbWVtY29udHJvbC5jLTQxODktXFx0XFx0cGFnZV9jb3VudGVyX2luaXQoXFx1MDAyNm1lbWNnLVxcdTAwM2VtZW1vcnksIE5VTEwsIHRydWUpO1xcbi0tXFxubW0vbWVtcG9saWN5LmM9ODkwPXVuc2lnbmVkIGxvbmcgY2hhbmdlX3Byb3RfbnVtYShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbm1tL21lbXBvbGljeS5jLTkwMC1cXHRcXHRjb3VudF92bV9udW1hX2V2ZW50cyhOVU1BX1BURV9VUERBVEVTLCBucl91cGRhdGVkKTtcXG5tbS9tZW1wb2xpY3kuYzo5MDE6XFx0XFx0Y291bnRfbWVtY2dfZXZlbnRzX21tKHZtYS1cXHUwMDNldm1fbW0sIE5VTUFfUFRFX1VQREFURVMsIG5yX3VwZGF0ZWQpO1xcbm1tL21lbXBvbGljeS5jLTkwMi1cXHR9XFxuLS1cXG5tbS9taWdyYXRlLmM9Mjc0ND1pbnQgbWlncmF0ZV9taXNwbGFjZWRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbywgaW50IG5vZGUpXFxuLS1cXG5tbS9taWdyYXRlLmMtMjc2MC1cXHRcXHRjb3VudF92bV9udW1hX2V2ZW50cyhOVU1BX1BBR0VfTUlHUkFURSwgbnJfc3VjY2VlZGVkKTtcXG5tbS9taWdyYXRlLmM6Mjc2MTpcXHRcXHRjb3VudF9tZW1jZ19ldmVudHMobWVtY2csIE5VTUFfUEFHRV9NSUdSQVRFLCBucl9zdWNjZWVkZWQpO1xcbm1tL21pZ3JhdGUuYy0yNzYyLVxcdFxcdGlmICgoc3lzY3RsX251bWFfYmFsYW5jaW5nX21vZGUgXFx1MDAyNiBOVU1BX0JBTEFOQ0lOR19NRU1PUllfVElFUklORylcXG4tLVxcbm1tL3N3YXAuYz0zNDI9c3RhdGljIHZvaWQgbHJ1X2FjdGl2YXRlKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL3N3YXAuYy0zNTUtXFx0X19jb3VudF92bV9ldmVudHMoUEdBQ1RJVkFURSwgbnJfcGFnZXMpO1xcbm1tL3N3YXAuYzozNTY6XFx0Y291bnRfbWVtY2dfZXZlbnRzKGxydXZlY19tZW1jZyhscnV2ZWMpLCBQR0FDVElWQVRFLCBucl9wYWdlcyk7XFxubW0vc3dhcC5jLTM1Ny19XFxuLS1cXG5tbS9zd2FwLmM9NjA1PXN0YXRpYyB2b2lkIGxydV9kZWFjdGl2YXRlX2ZpbGUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vc3dhcC5jLTY0MC1cXHRcXHRfX2NvdW50X3ZtX2V2ZW50cyhQR0RFQUNUSVZBVEUsIG5yX3BhZ2VzKTtcXG5tbS9zd2FwLmM6NjQxOlxcdFxcdGNvdW50X21lbWNnX2V2ZW50cyhscnV2ZWNfbWVtY2cobHJ1dmVjKSwgUEdERUFDVElWQVRFLFxcbm1tL3N3YXAuYy02NDItXFx0XFx0XFx0XFx0ICAgICBucl9wYWdlcyk7XFxuLS1cXG5tbS9zd2FwLmM9NjQ2PXN0YXRpYyB2b2lkIGxydV9kZWFjdGl2YXRlKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL3N3YXAuYy02NTgtXFx0X19jb3VudF92bV9ldmVudHMoUEdERUFDVElWQVRFLCBucl9wYWdlcyk7XFxubW0vc3dhcC5jOjY1OTpcXHRjb3VudF9tZW1jZ19ldmVudHMobHJ1dmVjX21lbWNnKGxydXZlYyksIFBHREVBQ1RJVkFURSwgbnJfcGFnZXMpO1xcbm1tL3N3YXAuYy02NjAtfVxcbi0tXFxubW0vc3dhcC5jPTY2Mj1zdGF0aWMgdm9pZCBscnVfbGF6eWZyZWUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vc3dhcC5jLTY4NC1cXHRfX2NvdW50X3ZtX2V2ZW50cyhQR0xBWllGUkVFLCBucl9wYWdlcyk7XFxubW0vc3dhcC5jOjY4NTpcXHRjb3VudF9tZW1jZ19ldmVudHMobHJ1dmVjX21lbWNnKGxydXZlYyksIFBHTEFaWUZSRUUsIG5yX3BhZ2VzKTtcXG5tbS9zd2FwLmMtNjg2LX1cXG4tLVxcbm1tL3Ztc2Nhbi5jPTIwNjg9c3RhdGljIHZvaWQgc2hyaW5rX2FjdGl2ZV9saXN0KHVuc2lnbmVkIGxvbmcgbnJfdG9fc2NhbixcXG4tLVxcbm1tL3Ztc2Nhbi5jLTIxNDctXFx0Y291bnRfdm1fZXZlbnRzKFBHREVBQ1RJVkFURSwgbnJfZGVhY3RpdmF0ZSk7XFxubW0vdm1zY2FuLmM6MjE0ODpcXHRjb3VudF9tZW1jZ19ldmVudHMobHJ1dmVjX21lbWNnKGxydXZlYyksIFBHREVBQ1RJVkFURSwgbnJfZGVhY3RpdmF0ZSk7XFxubW0vdm1zY2FuLmMtMjE0OS1cXHRtb2Rfbm9kZV9wYWdlX3N0YXRlKHBnZGF0LCBOUl9JU09MQVRFRF9BTk9OICsgZmlsZSwgLW5yX3Rha2VuKTtcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM9MzM9c3RydWN0IG1lbWNnX2NvdW50ZXJzIHtcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtNDEtXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzo0MjpzdHJ1Y3QgbWVtY2dfZXZlbnRzIHtcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTQzLVxcdHN0cnVjdCBtZW1jZ19jb3VudGVycyBjb3VudGVycztcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM9NjA9c3RhdGljIGludCBnZXRfbWVtY2dfY291bnRlcihjaGFyICpsaW5lLCBjb25zdCBjaGFyICpuYW1lLCBsb25nICpjb3VudGVyKVxcbi0tXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy05Ny1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjk4OnN0YXRpYyBpbnQgcmVhZF9tZW1jZ19ldmVudHMoc3RydWN0IG1lbWNnX2V2ZW50cyAqZXZlbnRzLCBib29sIHNob3dfZGlmZilcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTk5LXtcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjAxLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MjAyOnN0YXRpYyB2b2lkIHByb2Nlc3NfbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1jZ19ldmVudHMgKmV2ZW50cyxcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTIwMy1cXHRcXHRcXHRcXHQgc3RydWN0IGlub3RpZnlfZXZlbnQgKmV2ZW50KVxcbi0tXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yMTktXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzoyMjA6XFx0cmV0ID0gcmVhZF9tZW1jZ19ldmVudHMoZXZlbnRzLCAvKiBzaG93X2RpZmYgPSAqL3RydWUpO1xcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjIxLVxcdGlmIChyZXQpXFxuLS1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTIyNC1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjIyNTpzdGF0aWMgdm9pZCBtb25pdG9yX2V2ZW50cyhzdHJ1Y3QgbWVtY2dfZXZlbnRzICpldmVudHMpXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yMjYte1xcbi0tXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yNTMtXFx0XFx0XFx0d2hpbGUgKElOT1RJRllfRVZFTlRfT0soZXZlbnQsIGxlbmd0aCkpIHtcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjI1NDpcXHRcXHRcXHRcXHRwcm9jZXNzX21lbWNnX2V2ZW50cyhldmVudHMsIGV2ZW50KTtcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTI1NS1cXHRcXHRcXHRcXHRldmVudCA9IElOT1RJRllfRVZFTlRfTkVYVChldmVudCwgbGVuZ3RoKTtcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjYwLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MjYxOnN0YXRpYyBpbnQgaW5pdGlhbGl6ZV9tZW1jZ19ldmVudHMoc3RydWN0IG1lbWNnX2V2ZW50cyAqZXZlbnRzLFxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjYyLVxcdFxcdFxcdFxcdCAgIGNvbnN0IGNoYXIgKmNncm91cClcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjY1LVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MjY2OlxcdG1lbXNldChldmVudHMsIDAsIHNpemVvZihzdHJ1Y3QgbWVtY2dfZXZlbnRzKSk7XFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0yNjctXFxuLS1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTI3Ny1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jOjI3ODpcXHRyZXQgPSByZWFkX21lbWNnX2V2ZW50cyhldmVudHMsIC8qIHNob3dfZGlmZiA9ICovZmFsc2UpO1xcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMjc5LVxcdGlmIChyZXQpIHtcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMzAyLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MzAzOnN0YXRpYyB2b2lkIGNsZWFudXBfbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1jZ19ldmVudHMgKmV2ZW50cylcXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jLTMwNC17XFxuLS1cXG5zYW1wbGVzL2Nncm91cC9tZW1jZ19ldmVudF9saXN0ZW5lci5jPTMwOT1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMTAte1xcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MzExOlxcdHN0cnVjdCBtZW1jZ19ldmVudHMgZXZlbnRzO1xcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMzEyLVxcdHNzaXplX3QgcmV0O1xcbi0tXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMTYtXFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYzozMTc6XFx0cmV0ID0gaW5pdGlhbGl6ZV9tZW1jZ19ldmVudHMoXFx1MDAyNmV2ZW50cywgYXJndlsxXSk7XFxuc2FtcGxlcy9jZ3JvdXAvbWVtY2dfZXZlbnRfbGlzdGVuZXIuYy0zMTgtXFx0aWYgKHJldClcXG4tLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMzIyLVxcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmM6MzIzOlxcdGNsZWFudXBfbWVtY2dfZXZlbnRzKFxcdTAwMjZldmVudHMpO1xcbnNhbXBsZXMvY2dyb3VwL21lbWNnX2V2ZW50X2xpc3RlbmVyLmMtMzI0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTowMjozNS45NTE4ODE4NDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODAzMzQ0NDMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbW9yeSBDb250cm9sIENsZWFudXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiSG1tLCB3aGF0J3MgdGhpcyBkb2luZyB0byBgbW0vbWVtY29udHJvbC12MS5oYD9cIi4gSXQgc2VlbXMgdG8gYmUgcmVtb3ZpbmcgYGZvcl9lYWNoX21lbV9jZ3JvdXBgLiBXYWl0IGEgc2Vjb25k4oCmIGlzbid0IHRoYXQgbWFjcm8gY29tcGxldGVseSB1bnVzZWQgaW4gdGhlIGtlcm5lbCBub3c/IFRoYXQncyByaWdodCwgaXQgaXMhIEdvb2QgcmlkZGFuY2UuXG5cblRoZW4gSSBub3RpY2UgaXQncyBhbHNvIHRha2luZyBvdXQgYHVuc2lnbmVkIGxvbmcgbWVtY2dfZXZlbnRzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgaW50IGV2ZW50KTtgIGZyb20gdGhlIHNhbWUgaGVhZGVyLiBIb2xkIG9uLCBgbWVtY2dfZXZlbnRzYCBpcyBhY3R1YWxseSBkZWNsYXJlZCBpbiBgaW5jbHVkZS9saW51eC9tZW1jb250cm9sLmhgIGFuZCBpbXBsZW1lbnRlZCBpbiBgbW0vbWVtY29udHJvbC5jYC4gVGhpcyBkZWNsYXJhdGlvbiBpbiBgbW0vbWVtY29udHJvbC12MS5oYCB3YXMganVzdCBhIGR1cGxpY2F0ZS4gUmVkdW5kYW5jeSBpcyBuZXZlciBnb29kLlxuXG5BbmQgdGhlIHBhdGNoIGFsc28gdXBkYXRlcyBhIGNvbW1lbnQgaW4gYG1tL21lbWNvbnRyb2wuY2AsIHJlcGxhY2luZyBgZm9yX2VhY2hfbWVtX2Nncm91cCgpYCB3aXRoIGBtZW1fY2dyb3VwX2l0ZXIoKWAuIFJpZ2h0LCBqdXN0IGEgY2xhcmlmaWNhdGlvbiwgbm90aGluZyBtYWpvci5cblxuU28sIHN1bW1pbmcgaXQgdXAsIHRoaXMgcGF0Y2ggaXMgYWxsIGFib3V0IGNsZWFudXAgYW5kIHJlZmFjdG9yaW5nLiBJdCdzIGVsaW1pbmF0aW5nIGFuIHVudXNlZCBtYWNybywgcmVtb3ZpbmcgYSByZWR1bmRhbnQgZnVuY3Rpb24gZGVjbGFyYXRpb24sIGFuZCBwcm92aWRpbmcgYSBjb21tZW50IHVwZGF0ZS4gVGhlcmUncyBub3RoaW5nIGhlcmUgdGhhdCBjaGFuZ2VzIHRoZSBrZXJuZWwncyBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIHRoZSBkZWZpbml0aW9uIG9mIGEgbG93LXJpc2ssIHB1cmUgY2xlYW51cCBwYXRjaC5cblxuSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBkaWZmIGp1c3QgdG8gYmUgZXh0cmEgc3VyZS4uLiAqW0kgbWVudGFsbHkgcmV2aWV3IHRoZSBwcm92aWRlZCBkaWZmXSogWWVwLCBpdCdzIGV4YWN0bHkgd2hhdCBJIHRob3VnaHQ6IHVudXNlZCBtYWNybyBnb25lLCByZWR1bmRhbnQgZGVjbGFyYXRpb24gZ29uZSwgY29tbWVudCB1cGRhdGVkLlxuXG5HaXZlbiB0aGF0IGl0J3MganVzdCBhIHJlZmFjdG9yaW5nIGNoYW5nZSwgSSB3b3VsZG4ndCB3YXN0ZSBteSB0aW1lIGZ1enppbmcgdGhpcy4gVGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgc2hvdWxkIGFic29sdXRlbHkgYmUgc2V0IHRvIGZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjE2LCJPdXRwdXRUb2tlbnMiOjc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxOTowMjo0NC43NTUyMjg4NzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVtb3ZlcyBhbiB1bnVzZWQgbWFjcm8gKGBmb3JfZWFjaF9tZW1fY2dyb3VwYCksIGEgcmVkdW5kYW50IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIChgbWVtY2dfZXZlbnRzYCksIGFuZCB1cGRhdGVzIGEgY29tbWVudC4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlbW92ZXMgYW4gdW51c2VkIG1hY3JvIChgZm9yX2VhY2hfbWVtX2Nncm91cGApLCBhIHJlZHVuZGFudCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoYG1lbWNnX2V2ZW50c2ApLCBhbmQgdXBkYXRlcyBhIGNvbW1lbnQuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowdshd8[1] Phase: Running StartedAt: 2026-06-24 19:02:55 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdshd8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-24 19:02:55 +0000 UTC FinishedAt: 2026-06-24 19:03:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}