Name: series-workflow566zr Phase: Failed StartedAt: 2026-07-25 05:35:32 +0000 UTC FinishedAt: 2026-07-25 06:01:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow566zr[0] Phase: Succeeded StartedAt: 2026-07-25 05:35:32 +0000 UTC FinishedAt: 2026-07-25 06:00:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow566zr[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 05:35:32 +0000 UTC FinishedAt: 2026-07-25 06:00:59 +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+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGF0aDExayBhbmQgYXRoMTJrLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIFdpLUZpIGRyaXZlcnMgZm9yIFF1YWxjb21tIGhhcmR3YXJlLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjBjY2JhN2EyMmU0NmM5Nzg2MWIxZGNkYzM4N2E1ZGNlOTg3MWU5YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDA2OjAwOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG5pbmRleCA0Y2JkNzI5Mzg0NWEyNC4uZDZmZWFhNzEwZmUyNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG5AQCAtMTU5LDYgJiM0MzsxNTksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHdtaV90bHZfcG9saWN5IHdtaV90bHZfcG9saWNpZXNbXSA9IHtcbiBcdFx0Lm1pbl9sZW4gPSBzaXplb2Yoc3RydWN0IGF0aDExa193bWlfcDJwX25vYV9pbmZvKSB9LFxuIFx0W1dNSV9UQUdfUDJQX05PQV9FVkVOVF0gPSB7XG4gXHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcDJwX25vYV9ldmVudCkgfSxcbiYjNDM7XHRbV01JX1RBR19QREVWX0NTQV9TV0lUQ0hfQ09VTlRfU1RBVFVTX0VWRU5UXSA9IHtcbiYjNDM7XHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGRldl9jc2Ffc3dpdGNoX2V2KSB9LFxuIH07XG4gXG4gI2RlZmluZSBQUklNQVAoX2h3X21vZGVfKSBcXFxuQEAgLTI2Miw2ICYjNDM7MjY0LDEzIEBAIGNvbnN0IHZvaWQgKiphdGgxMWtfd21pX3Rsdl9wYXJzZV9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuIFx0cmV0dXJuIHRiO1xuIH1cbiBcbiYjNDM7c3RhdGljIHUzMiBhdGgxMWtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHdtaV90bHYgKnRsdiA9IChjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqKWRhdGEgLSAxO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gRklFTERfR0VUKFdNSV9UTFZfTEVOLCB0bHYtXHUwMDNlaGVhZGVyKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGF0aDExa193bWlfY21kX3NlbmRfbm93YWl0KHN0cnVjdCBhdGgxMWtfcGRldl93bWkgKndtaSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgIHUzMiBjbWRfaWQpXG4ge1xuQEAgLTgzNTksMTUgJiM0Mzs4MzY4LDIzIEBAIGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4gXHRcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHdtaV9wZGV2X2NzYV9zd2l0Y2hfZXYgKmV2LFxuIFx0XHRcdFx0XHQgIGNvbnN0IHUzMiAqdmRldl9pZHMpXG4ge1xuLVx0aW50IGk7XG4mIzQzO1x0dTMyIHZkZXZfaWRzX2xlbiA9IGF0aDExa193bWlfdGx2X2RhdGFfbGVuKHZkZXZfaWRzKTtcbiYjNDM7XHR1MzIgbnVtX3ZkZXZzID0gZXYtXHUwMDNlbnVtX3ZkZXZzO1xuIFx0c3RydWN0IGF0aDExa192aWYgKmFydmlmO1xuJiM0MztcdGludCBpO1xuIFxuIFx0LyogRmluaXNoIENTQSBvbmNlIHRoZSBzd2l0Y2ggY291bnQgYmVjb21lcyBOVUxMICovXG4gXHRpZiAoZXYtXHUwMDNlY3VycmVudF9zd2l0Y2hfY291bnQpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRpZiAobnVtX3ZkZXZzIFx1MDAzZSB2ZGV2X2lkc19sZW4gLyBzaXplb2YoKnZkZXZfaWRzKSkge1xuJiM0MztcdFx0YXRoMTFrX3dhcm4oYWIsIFwmIzM0O2NzYSBzd2l0Y2ggY291bnQgbnVtX3ZkZXZzICV1IGV4Y2VlZHMgdGx2IGFycmF5IGxlbmd0aCAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgIG51bV92ZGV2cywgdmRldl9pZHNfbGVuKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZXYtXHUwMDNlbnVtX3ZkZXZzOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV92ZGV2czsgaSYjNDM7JiM0MzspIHtcbiBcdFx0YXJ2aWYgPSBhdGgxMWtfbWFjX2dldF9hcnZpZl9ieV92ZGV2X2lkKGFiLCB2ZGV2X2lkc1tpXSk7XG4gXG4gXHRcdGlmICghYXJ2aWYpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuaW5kZXggMmI3MDdmZmMxYTIwZmYuLmMyODMzZDFlOTVkM2I0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuQEAgLTIwNyw2ICYjNDM7MjA3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfd21pX3Rsdl9wb2xpY3kgYXRoMTJrX3dtaV90bHZfcG9saWNpZXNbXSA9IHtcbiBcdFx0Lm1pbl9sZW4gPSBzaXplb2Yoc3RydWN0IHdtaV9wZXJfY2hhaW5fcnNzaV9zdGF0X3BhcmFtcykgfSxcbiBcdFtXTUlfVEFHX09CU1NfQ09MT1JfQ09MTElTSU9OX0VWVF0gPSB7XG4gXHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfb2Jzc19jb2xvcl9jb2xsaXNpb25fZXZlbnQpIH0sXG4mIzQzO1x0W1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7XG4mIzQzO1x0XHQubWluX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2X2NzYV9ldmVudCkgfSxcbiB9O1xuIFxuIF9fbGUzMiBhdGgxMmtfd21pX3Rsdl9oZHIodTMyIGNtZCwgdTMyIGxlbilcbkBAIC0zNzQsNiAmIzQzOzM3NiwxMyBAQCBhdGgxMmtfd21pX3Rsdl9wYXJzZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cmV0dXJuIHRiO1xuIH1cbiBcbiYjNDM7c3RhdGljIHUzMiBhdGgxMmtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHdtaV90bHYgKnRsdiA9IChjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqKWRhdGEgLSAxO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbGUzMl9nZXRfYml0cyh0bHYtXHUwMDNlaGVhZGVyLCBXTUlfVExWX0xFTik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBhdGgxMmtfd21pX2NtZF9zZW5kX25vd2FpdChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWksIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICAgICB1MzIgY21kX2lkKVxuIHtcbkBAIC05MDc1LDEyICYjNDM7OTA4NCwxOSBAQCBhdGgxMmtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0XHRcdFx0XHQgIGNvbnN0IHUzMiAqdmRldl9pZHMpXG4ge1xuIFx0dTMyIGN1cnJlbnRfc3dpdGNoX2NvdW50ID0gbGUzMl90b19jcHUoZXYtXHUwMDNlY3VycmVudF9zd2l0Y2hfY291bnQpO1xuJiM0MztcdHUzMiB2ZGV2X2lkc19sZW4gPSBhdGgxMmtfd21pX3Rsdl9kYXRhX2xlbih2ZGV2X2lkcyk7XG4gXHR1MzIgbnVtX3ZkZXZzID0gbGUzMl90b19jcHUoZXYtXHUwMDNlbnVtX3ZkZXZzKTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmNvbmY7XG4gXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcbiBcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZjtcbiBcdGludCBpO1xuIFxuJiM0MztcdGlmIChudW1fdmRldnMgXHUwMDNlIHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7XG4mIzQzO1x0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7Y3NhIHN3aXRjaCBjb3VudCBudW1fdmRldnMgJXUgZXhjZWVkcyB0bHYgYXJyYXkgbGVuZ3RoICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgbnVtX3ZkZXZzLCB2ZGV2X2lkc19sZW4pO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmRldnM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGFydmlmID0gYXRoMTJrX21hY19nZXRfYXJ2aWZfYnlfdmRldl9pZChhYiwgdmRldl9pZHNbaV0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhdGgxMWsgYW5kIGF0aDEyaywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYwY2NiYTdhMjJlNDZjOTc4NjFiMWRjZGMzODdhNWRjZTk4NzFlOWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAwNjowMDoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jCmluZGV4IDRjYmQ3MjkzODQ1YTI0Li5kNmZlYWE3MTBmZTI1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jCkBAIC0xNTksNiAmIzQzOzE1OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd21pX3Rsdl9wb2xpY3kgd21pX3Rsdl9wb2xpY2llc1tdID0gewogCQkubWluX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTFrX3dtaV9wMnBfbm9hX2luZm8pIH0sCiAJW1dNSV9UQUdfUDJQX05PQV9FVkVOVF0gPSB7CiAJCS5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcDJwX25vYV9ldmVudCkgfSwKJiM0MzsJW1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7CiYjNDM7CQkubWluX2xlbiA9IHNpemVvZihzdHJ1Y3Qgd21pX3BkZXZfY3NhX3N3aXRjaF9ldikgfSwKIH07CiAKICNkZWZpbmUgUFJJTUFQKF9od19tb2RlXykgXApAQCAtMjYyLDYgJiM0MzsyNjQsMTMgQEAgY29uc3Qgdm9pZCAqKmF0aDExa193bWlfdGx2X3BhcnNlX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsCiAJcmV0dXJuIHRiOwogfQogCiYjNDM7c3RhdGljIHUzMiBhdGgxMWtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHdtaV90bHYgKnRsdiA9IChjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqKWRhdGEgLSAxOwomIzQzOwomIzQzOwlyZXR1cm4gRklFTERfR0VUKFdNSV9UTFZfTEVOLCB0bHYtJmd0O2hlYWRlcik7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBhdGgxMWtfd21pX2NtZF9zZW5kX25vd2FpdChzdHJ1Y3QgYXRoMTFrX3BkZXZfd21pICp3bWksIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJICAgICAgdTMyIGNtZF9pZCkKIHsKQEAgLTgzNTksMTUgJiM0Mzs4MzY4LDIzIEBAIGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsCiAJCQkJCSAgY29uc3Qgc3RydWN0IHdtaV9wZGV2X2NzYV9zd2l0Y2hfZXYgKmV2LAogCQkJCQkgIGNvbnN0IHUzMiAqdmRldl9pZHMpCiB7Ci0JaW50IGk7CiYjNDM7CXUzMiB2ZGV2X2lkc19sZW4gPSBhdGgxMWtfd21pX3Rsdl9kYXRhX2xlbih2ZGV2X2lkcyk7CiYjNDM7CXUzMiBudW1fdmRldnMgPSBldi0mZ3Q7bnVtX3ZkZXZzOwogCXN0cnVjdCBhdGgxMWtfdmlmICphcnZpZjsKJiM0MzsJaW50IGk7CiAKIAkvKiBGaW5pc2ggQ1NBIG9uY2UgdGhlIHN3aXRjaCBjb3VudCBiZWNvbWVzIE5VTEwgKi8KIAlpZiAoZXYtJmd0O2N1cnJlbnRfc3dpdGNoX2NvdW50KQogCQlyZXR1cm47CiAKJiM0MzsJaWYgKG51bV92ZGV2cyAmZ3Q7IHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7CiYjNDM7CQlhdGgxMWtfd2FybihhYiwgJiMzNDtjc2Egc3dpdGNoIGNvdW50IG51bV92ZGV2cyAldSBleGNlZWRzIHRsdiBhcnJheSBsZW5ndGggJXVcbiYjMzQ7LAomIzQzOwkJCSAgICBudW1fdmRldnMsIHZkZXZfaWRzX2xlbik7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKIAlyY3VfcmVhZF9sb2NrKCk7Ci0JZm9yIChpID0gMDsgaSAmbHQ7IGV2LSZndDtudW1fdmRldnM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBudW1fdmRldnM7IGkmIzQzOyYjNDM7KSB7CiAJCWFydmlmID0gYXRoMTFrX21hY19nZXRfYXJ2aWZfYnlfdmRldl9pZChhYiwgdmRldl9pZHNbaV0pOwogCiAJCWlmICghYXJ2aWYpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCmluZGV4IDJiNzA3ZmZjMWEyMGZmLi5jMjgzM2QxZTk1ZDNiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCkBAIC0yMDcsNiAmIzQzOzIwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX3dtaV90bHZfcG9saWN5IGF0aDEya193bWlfdGx2X3BvbGljaWVzW10gPSB7CiAJCS5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGVyX2NoYWluX3Jzc2lfc3RhdF9wYXJhbXMpIH0sCiAJW1dNSV9UQUdfT0JTU19DT0xPUl9DT0xMSVNJT05fRVZUXSA9IHsKIAkJLm1pbl9sZW4gPSBzaXplb2Yoc3RydWN0IHdtaV9vYnNzX2NvbG9yX2NvbGxpc2lvbl9ldmVudCkgfSwKJiM0MzsJW1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7CiYjNDM7CQkubWluX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2X2NzYV9ldmVudCkgfSwKIH07CiAKIF9fbGUzMiBhdGgxMmtfd21pX3Rsdl9oZHIodTMyIGNtZCwgdTMyIGxlbikKQEAgLTM3NCw2ICYjNDM7Mzc2LDEzIEBAIGF0aDEya193bWlfdGx2X3BhcnNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiAJcmV0dXJuIHRiOwogfQogCiYjNDM7c3RhdGljIHUzMiBhdGgxMmtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHdtaV90bHYgKnRsdiA9IChjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqKWRhdGEgLSAxOwomIzQzOwomIzQzOwlyZXR1cm4gbGUzMl9nZXRfYml0cyh0bHYtJmd0O2hlYWRlciwgV01JX1RMVl9MRU4pOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgYXRoMTJrX3dtaV9jbWRfc2VuZF9ub3dhaXQoc3RydWN0IGF0aDEya193bWlfcGRldiAqd21pLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgICAgIHUzMiBjbWRfaWQpCiB7CkBAIC05MDc1LDEyICYjNDM7OTA4NCwxOSBAQCBhdGgxMmtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLAogCQkJCQkgIGNvbnN0IHUzMiAqdmRldl9pZHMpCiB7CiAJdTMyIGN1cnJlbnRfc3dpdGNoX2NvdW50ID0gbGUzMl90b19jcHUoZXYtJmd0O2N1cnJlbnRfc3dpdGNoX2NvdW50KTsKJiM0MzsJdTMyIHZkZXZfaWRzX2xlbiA9IGF0aDEya193bWlfdGx2X2RhdGFfbGVuKHZkZXZfaWRzKTsKIAl1MzIgbnVtX3ZkZXZzID0gbGUzMl90b19jcHUoZXYtJmd0O251bV92ZGV2cyk7CiAJc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqY29uZjsKIAlzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjsKIAlzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWY7CiAJaW50IGk7CiAKJiM0MzsJaWYgKG51bV92ZGV2cyAmZ3Q7IHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7CiYjNDM7CQlhdGgxMmtfd2FybihhYiwgJiMzNDtjc2Egc3dpdGNoIGNvdW50IG51bV92ZGV2cyAldSBleGNlZWRzIHRsdiBhcnJheSBsZW5ndGggJXVcbiYjMzQ7LAomIzQzOwkJCSAgICBudW1fdmRldnMsIHZkZXZfaWRzX2xlbik7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKIAlyY3VfcmVhZF9sb2NrKCk7CiAJZm9yIChpID0gMDsgaSAmbHQ7IG51bV92ZGV2czsgaSYjNDM7JiM0MzspIHsKIAkJYXJ2aWYgPSBhdGgxMmtfbWFjX2dldF9hcnZpZl9ieV92ZGV2X2lkKGFiLCB2ZGV2X2lkc1tpXSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBUZXN0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCDigJMgaXQgbG9va3MgbGlrZSBpdCBhZGRzIGNydWNpYWwgYm91bmRzIGNoZWNraW5nIGFuZCBUTFYgcG9saWN5IGVuZm9yY2VtZW50IGluIGBhdGgxMWtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudGAgYW5kIGBhdGgxMmtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudGAuIFNwZWNpZmljYWxseSwgaXQgYWRkcmVzc2VzIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byBgbnVtX3ZkZXZzYCBhbmQgYHZkZXZfaWRzX2xlbmAgd2l0aGluIHRoZXNlIFF1YWxjb21tIEF0aGVyb3MgODAyLjExYXgvYmUgZHJpdmVycy4gVGhlIGRyaXZlcnMgYXJlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cyB3aXRoIHdpcmVsZXNzIGRyaXZlcnMsIGlzIGhvdyBmZWFzaWJsZSBpdCBpcyB0byBhY3R1YWxseSAqdGVzdCogdGhpcyBlZmZlY3RpdmVseS4KClRoZSBvYnZpb3VzIHF1ZXN0aW9uOiBjYW4gSSByZWFsaXN0aWNhbGx5IHRlc3QgdGhpcyBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/IFdpcmVsZXNzIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IGhhcmR3YXJlLWRlcGVuZGVudCwgb2Z0ZW4gcmVxdWlyaW5nIHNwZWNpZmljIHBoeXNpY2FsIGludGVyZmFjZXMgbGlrZSBQQ0llIG9yIEFIQi4gSSBuZWVkIHRvIGtub3cgaWYgdGhlc2UgYXJlIHRlc3RhYmxlLgoKSSBxdWlja2x5IHJlbWVtYmVyIHRoYXQgYG1hYzgwMjExX2h3c2ltYCBpcyBhIHRoaW5nIGJ1dCByZWFsaXplIGl0JiMzOTtzIGEgc2VwYXJhdGUgZHJpdmVyLCBub3QgYSBzaW11bGF0aW9uIGZvciBhdGgxMWsgb3IgYXRoMTJrLiBUaGUgY29yZSBkcml2ZXJzIGFyZSBkZXNpZ25lZCBmb3IgKnJlYWwqIGhhcmR3YXJlLiBPa2F5LCBzbyBoYXJkd2FyZS1sZXNzIGZ1enppbmcgaXMgcHJvYmFibHkgYSBuby1nby4gU3l6a2FsbGVyIHNvbWV0aW1lcyBtYW5hZ2VzIHRvIGZ1enogd2lyZWxlc3MgZHJpdmVycywgYnV0IHRoYXQmIzM5O3MgdXN1YWxseSB0aHJvdWdoIFVTQiBvciBQQ0kgZW11bGF0aW9uIGlmIHRoZSBkcml2ZXIgc3VwcG9ydHMgaXQuIFNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggUENJL0FIQiBkcml2ZXJzLCB3aGljaCBpcyBub3QgcmVhbGx5IHdoYXQgd2UmIzM5O3ZlIGdvdC4gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHN1cHBvcnQgaXMsIGZyb20gd2hhdCBJIGtub3csIHF1aXRlIGxpbWl0ZWQuCgpUaGUgcmVhbCBjaGFsbGVuZ2UgaXMgaGl0dGluZyB0aGUgYGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50YCBmdW5jdGlvbiBpbiB0aGUgZmlyc3QgcGxhY2UsIGFic2VudCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIFRoZXNlIGRyaXZlcnMgYXJlIGRlc2lnbmVkIHRvIHJlY2VpdmUgV01JIGV2ZW50cyBmcm9tIHRoZSBmaXJtd2FyZSwgdHlwaWNhbGx5IHRyYW5zbWl0dGVkIG92ZXIgSFRDL0NFIChDb3B5IEVuZ2luZSkuIFdpdGhvdXQgYSBmaXJtd2FyZSB0byBwcm92aWRlIHRoZSBldmVudHMsIGlzIHRoZSBkcml2ZXIgZXZlbiBnb2luZyB0byBiZSB0cmlnZ2VyZWQ/IEdlbmVyYWxseSwgbm8uIFdpdGhvdXQgYSBzcGVjaWZpYyBmdXp6aW5nIGhhcm5lc3Mgb3IsIGluIHRoZSByYXJlIGNhc2UsIFVTQiBkcml2ZXIgY29tcGF0aWJpbGl0eSwgcmVhY2hpbmcgdGhlc2UgZnVuY3Rpb25zIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCBpcyBnb2luZyB0byBiZSBpbXBvc3NpYmxlLgoKU28sIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSYjMzk7cyBhbnkgcGF0aHdheSB0byBpbmplY3QgV01JIGV2ZW50cy4gSSYjMzk7bGwgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSBpZiBgYXRoMTFrX3dtaV9wcm9jZXNzX2NzYV9zd2l0Y2hfY291bnRfZXZlbnRgIGlzIGNhbGxlZCBmcm9tICphbnl3aGVyZSogZWxzZSwgcGVyaGFwcyBzb21lIHNvcnQgb2YgdGVzdCBvciBkZWJ1Z2dpbmcgaW50ZXJmYWNlLiBJZiBub3QsIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW5jcmVkaWJseSBkaWZmaWN1bHQgdG8gdmFsaWRhdGUgd2l0aG91dCBwcm9wZXIgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX3dtaV9wcm9jZXNzX2NzYV9zd2l0Y2hfY291bnRfZXZlbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz04MzY2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjgzNjc6YXRoMTFrX3dtaV9wcm9jZXNzX2NzYV9zd2l0Y2hfY291bnRfZXZlbnQoc3RydWN0IGF0aDExa19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtODM2OC1cdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgd21pX3BkZXZfY3NhX3N3aXRjaF9ldiAqZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz04NDAzPWF0aDExa193bWlfcGRldl9jc2Ffc3dpdGNoX2NvdW50X3N0YXR1c19ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtODQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6ODQzMjpcdGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KGFiLCBldiwgdmRldl9pZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy04NDMzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMDYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMsIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgQ2FsbCBTaXRlcyBvZiBgYXRoMTFrX3dtaV9wZGV2X2NzYV9zd2l0Y2hfY291bnRfc3RhdHVzX2V2ZW50YCoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGBhdGgxMWtfd21pX3BkZXZfY3NhX3N3aXRjaF9jb3VudF9zdGF0dXNfZXZlbnRgIGZ1bmN0aW9uLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBmaWd1cmUgb3V0ICp3aGVyZSogaXQmIzM5O3MgYmVpbmcgaW52b2tlZC4gS25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbnMgaXMgY3J1Y2lhbCBmb3IgZ3Jhc3BpbmcgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUgb2YgdGhlIGF0aDExayB3aXJlbGVzcyBkcml2ZXIuIEkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcywgYW5kIGZyb20gdGhlcmUgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24gYW5kIHB1cnBvc2UuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa193bWlfcGRldl9jc2Ffc3dpdGNoX2NvdW50X3N0YXR1c19ldmVudCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jPTg0MDI9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6ODQwMzphdGgxMWtfd21pX3BkZXZfY3NhX3N3aXRjaF9jb3VudF9zdGF0dXNfZXZlbnQoc3RydWN0IGF0aDExa19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtODQwNC1cdFx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jPTg5MTY9c3RhdGljIHZvaWQgYXRoMTFrX3dtaV90bHZfb3Bfcngoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkwMDAtXHRjYXNlIFdNSV9QREVWX0NTQV9TV0lUQ0hfQ09VTlRfU1RBVFVTX0VWRU5USUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjkwMDE6XHRcdGF0aDExa193bWlfcGRldl9jc2Ffc3dpdGNoX2NvdW50X3N0YXR1c19ldmVudChhYiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTAwMi1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU2MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMWtfd21pX3Rsdl9vcF9yeCBIYW5kbGVyKioKCk9rYXksIHNvIGBhdGgxMWtfd21pX3Rsdl9vcF9yeGAgaXMgdGhlIHJlY2VpdmVyIGZvciBXTUkgbWVzc2FnZXMsIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgZmlybXdhcmUuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBJdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggUENJIGFuZCBBSEIgYXJjaGl0ZWN0dXJlcyB3aGljaCwgaWYgSSByZWNhbGwsIGFyZSBzdXBwb3J0ZWQgYnkgYXRoMTFrLiBHaXZlbiB0aGF0IHN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZG8gYSBncmVhdCBqb2Igb2Ygc2ltdWxhdGluZyBBdGhlcm9zIDgwMi4xMWF4IGhhcmR3YXJlLCBpdCBtZWFucyB0aGUgZHJpdmVyIGlzIHByb2JhYmx5IGdvaW5nIHRvIGZhaWwgdGhlIHByb2JlIHN0ZXAuIFRoZSBpbXBsaWNhdGlvbnM/IE5vIHN1Y2Nlc3NmdWwgcHJvYmUgbWVhbnMgdGhlIGVudGlyZSBXTUkgbGF5ZXIgd29uJiMzOTt0IGluaXRpYWxpemUuIEFuZCB0aGF0LCBpbiB0dXJuLCBraWxscyB0aGUgYWJpbGl0eSB0byByZWNlaXZlIGFuZCBwcm9jZXNzIGFueSBXTUkgZXZlbnRzLgoKSG9sZCBvbiwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIHRoaW5rIHN0cmF0ZWdpY2FsbHkgaGVyZS4gSXMgdGhlcmUgYW55IGZ1enppbmcgaW50ZXJmYWNlIGF2YWlsYWJsZSBmb3IgYXRoMTFrPyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUmIzM5O3MgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0FUSDExS19GVVpaYCB0aGF0IEkgY291bGQgZW5hYmxlLiBUaGF0IG1pZ2h0IGdpdmUgbWUgYSB3YXkgaW4uIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGF2ZW51ZSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDExSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gODAyLjExYXggY2hpcHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjEzOmNvbmZpZyBBVEgxMUtfQUhCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTQtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjE1Olx0ZGVwZW5kcyBvbiBBVEgxMUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xNi1cdGRlcGVuZHMgb24gUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyMDpjb25maWcgQVRIMTFLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMWsgUENJIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyMjpcdGRlcGVuZHMgb24gQVRIMTFLIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMy1cdHNlbGVjdCBNSElfQlVTXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjMwOmNvbmZpZyBBVEgxMUtfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMjpcdGRlcGVuZHMgb24gQVRIMTFLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjM4OmNvbmZpZyBBVEgxMUtfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtRQ0EgYXRoMTFrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQwOlx0ZGVwZW5kcyBvbiBBVEgxMUsgXHUwMDI2XHUwMDI2IERFQlVHX0ZTIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDEtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ2OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDthdGgxMWsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDg6XHRkZXBlbmRzIG9uIEFUSDExSyBcdTAwMjZcdTAwMjYgRVZFTlRfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1Mjpjb25maWcgQVRIMTFLX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTMtXHRib29sIFwmIzM0O1FDQSBhdGgxMWsgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NTQ6XHRkZXBlbmRzIG9uIEFUSDExS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTUtXHRkZXBlbmRzIG9uIFJFTEFZXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjYxOmNvbmZpZyBBVEgxMUtfQ0ZSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjItXHRib29sIFwmIzM0O2F0aDExayBjaGFubmVsIGZyZXF1ZW5jeSByZXNwb25zZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjM6XHRkZXBlbmRzIG9uIEFUSDExS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjQtXHRkZXBlbmRzIG9uIFJFTEFZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA3MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipGdXp6aW5nIEludGVyZmFjZXM6IEEgUXVpY2sgU2NhbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uICphdGgxMWsqLiBSaWdodCwgbm8gZGVkaWNhdGVkIGZ1enppbmcgaW50ZXJmYWNlIHRoZXJlIHRoYXQgSSYjMzk7bSBhd2FyZSBvZi4gSG1tLCBhIGNvbW1vbiBpc3N1ZSwgcmVhbGx5LiBUaGUgZGV2ZWxvcG1lbnQgZm9jdXMgYWx3YXlzIHNlZW1zIHRvIGJlIG9uIHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UgZmlyc3QsIGFuZCBmdXp6aW5nIG9mdGVuIGdldHMgdGFja2VkIG9uIGxhdGVyLCBvciBpbXBsZW1lbnRlZCBhcyBhIHZlcnkgc3BlY2lmaWMgaW50ZXJuYWwgcHJvY2VzcyByYXRoZXIgdGhhbiBhIHJlYWRpbHkgYXZhaWxhYmxlIGludGVyZmFjZS4KClNvLCAqYXRoMTJrKuKApiBhbnkgY2hhbmdlIHRoZXJlPyBJIGhhdmVuJiMzOTt0IGtlcHQgYXMgY2xvc2Ugb2YgYW4gZXllIG9uIHRoYXQgZHJpdmVyLCBzbyBJIG5lZWQgdG8gY2hlY2suIEhhdmUgdGhleSBidWlsdCBpbiBhIG1vcmUgYWNjZXNzaWJsZSBpbnRlcmZhY2UgZm9yIHRoaXMsIG9yIGFyZSB3ZSBzdGlsbCBzdHVjayB3aXRoIHRoZSBtb3JlIGFkLWhvYyBtZXRob2RzPyBOZWVkIHRvIGNoZWNrIHRoZSBjb2RlYmFzZS4uLiBzZWUgaWYgdGhlcmUgYXJlIGhvb2tzLCBjb21tYW5kLWxpbmUgb3B0aW9ucywgb3IgYW55dGhpbmcgaW4gdGhlIGRvY3VtZW50YXRpb24gdGhhdCB3b3VsZCBzdWdnZXN0IGEgZnV6emluZy1mcmllbmRseSBhcHByb2FjaC4gSXQmIzM5O3MgYSBrZXkgcXVlc3Rpb24gd2hlbiBldmFsdWF0aW5nIHRoZSBzZWN1cml0eSBwb3N0dXJlLCBhbmQgdGhlIGFtb3VudCBvZiBlZmZvcnQgcmVxdWlyZWQgdG8gaWRlbnRpZnkgdnVsbmVyYWJpbGl0aWVzLiBXZSYjMzk7cmUgbG9va2luZyBmb3IgdGhhdCBsb3ctaGFuZ2luZyBmcnVpdCwgdGhlIHBvdGVudGlhbCBmb3IgYXV0b21hdGVkIGRpc2NvdmVyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIMTJLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI6Y29uZmlnIEFUSDEyS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgUkVNT1RFUFJPQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTIwLVx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNTpjb25maWcgQVRIMTJLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXHRib29sIFwmIzM0O2F0aDEyayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNzpcdGRlcGVuZHMgb24gQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM1OmNvbmZpZyBBVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mzc6XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NDpjb25maWcgQVRIMTJLX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cdGJvb2wgXCYjMzQ7YXRoMTJrIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ2Olx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IEVWRU5UX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTM6Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1NTpcdGRlcGVuZHMgb24gQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTYtXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE1NAoJCQkJCQkJb3V0cHV0OiA5MQoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIHNjYW4gaW1tZWRpYXRlbHkgaGlnaGxpZ2h0cyBhIHBvdGVudGlhbCBpc3N1ZSBmb3IgZnV6emluZy4gVGhlcmUmIzM5O3Mgbm8gZnV6emluZyBpbnRlcmZhY2UgZGVmaW5lZCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBzZXRzIG9mZiBhbGFybSBiZWxscy4gVGhhdCYjMzk7cyBub3QgYSBnb29kIHNpZ24uIERpZ2dpbmcgZGVlcGVyLCBJIHNlZSB0aGlzIGlzIHJlbGF0ZWQgdG8gZHJpdmVycyBmb3IgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgUENJZSBhbmQgQUhCIGludGVyZmFjZXMuIFRoZXNlIGFyZSB0aGluZ3MgdGhhdCBRRU1VLCBhbmQgY2VydGFpbmx5IGNsb3VkIGVudmlyb25tZW50cyBsaWtlIEdDRSwgZG9uJiMzOTt0IGVtdWxhdGUuCgpUaGVuIEkgZG91YmxlIGNoZWNrIHRoZSBpbnN0cnVjdGlvbnMsIHRoZSBvbmVzIHRoYXQgbWF0dGVyIHRoZSBtb3N0LiBBbmQgeWVhaCwgaXQgY2xlYXJseSBzdGF0ZXMgdGhhdCBwYXRjaGVzIHNob3VsZG4mIzM5O3QgYmUgZnV6emVkIGlmIHRoZXkgZGVhbCB3aXRoIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVXMuIFRoZXkgbGlzdCBhIGZldyBleGFtcGxlcywgYW5kIGxvb2tpbmcgYXQgdGhvc2UgZXhhbXBsZXMgcmVpbmZvcmNlcyB0aGF0IHRoZSBwcm9ibGVtIGlzIHRoYXQgc3RhbmRhcmQgUUVNVSBjYW4mIzM5O3QgaGFuZGxlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSByZXF1aXJlbWVudHMuCgpBaC1oYSEgVGhlIHRleHQgbmFpbHMgaXQgZG93bjogYXRoMTFrIGFuZCBhdGgxMmsgYXJlIGV4cGxpY2l0bHkgV2ktRmkgZHJpdmVycywgYnV0IHRoZXkgYXJlIGFsc28gdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIGRyaXZlcnMsIGFuZCBhcyBzdWNoLCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlLiBTbywgYmFzZWQgb24gdGhlIGluc3RydWN0aW9ucywgYW5kIG15IG93biBleHBlcmllbmNlIHdpdGggdmlydHVhbGl6YXRpb24gYW5kIFFFTVUsIGl0JiMzOTtzIGNsZWFyOiB0aGlzIHBhdGNoIGlzICoqbm90Kiogd29ydGggZnV6emluZy4gVGhlIHRhcmdldCBjb2RlIHBhdGhzIGFyZSBpbmFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGltZSB0byBtb3ZlIG9uIHRvIHNvbWV0aGluZyBtb3JlIGZydWl0ZnVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGF0aDExayBhbmQgYXRoMTJrLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIFdpLUZpIGRyaXZlcnMgZm9yIFF1YWxjb21tIGhhcmR3YXJlLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhdGgxMWsgYW5kIGF0aDEyaywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA2OjAwOjE3LjgzOTMxMzY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0MzE0MTEwODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGF0aDExayBhbmQgYXRoMTJrLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIFdpLUZpIGRyaXZlcnMgZm9yIFF1YWxjb21tIGhhcmR3YXJlLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNjowMDoxNy44MzkzMTg0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4MzM0MDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjBjY2JhN2EyMmU0NmM5Nzg2MWIxZGNkYzM4N2E1ZGNlOTg3MWU5YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwNjowMDoxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuY1xcbmluZGV4IDRjYmQ3MjkzODQ1YTI0Li5kNmZlYWE3MTBmZTI1OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuY1xcbkBAIC0xNTksNiArMTU5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bWlfdGx2X3BvbGljeSB3bWlfdGx2X3BvbGljaWVzW10gPSB7XFxuIFxcdFxcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBhdGgxMWtfd21pX3AycF9ub2FfaW5mbykgfSxcXG4gXFx0W1dNSV9UQUdfUDJQX05PQV9FVkVOVF0gPSB7XFxuIFxcdFxcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcDJwX25vYV9ldmVudCkgfSxcXG4rXFx0W1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7XFxuK1xcdFxcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGRldl9jc2Ffc3dpdGNoX2V2KSB9LFxcbiB9O1xcbiBcXG4gI2RlZmluZSBQUklNQVAoX2h3X21vZGVfKSBcXFxcXFxuQEAgLTI2Miw2ICsyNjQsMTMgQEAgY29uc3Qgdm9pZCAqKmF0aDExa193bWlfdGx2X3BhcnNlX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuIFxcdHJldHVybiB0YjtcXG4gfVxcbiBcXG4rc3RhdGljIHUzMiBhdGgxMWtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCB3bWlfdGx2ICp0bHYgPSAoY29uc3Qgc3RydWN0IHdtaV90bHYgKilkYXRhIC0gMTtcXG4rXFxuK1xcdHJldHVybiBGSUVMRF9HRVQoV01JX1RMVl9MRU4sIHRsdi1cXHUwMDNlaGVhZGVyKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBhdGgxMWtfd21pX2NtZF9zZW5kX25vd2FpdChzdHJ1Y3QgYXRoMTFrX3BkZXZfd21pICp3bWksIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHUzMiBjbWRfaWQpXFxuIHtcXG5AQCAtODM1OSwxNSArODM2OCwyMyBAQCBhdGgxMWtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxcbiBcXHRcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCB3bWlfcGRldl9jc2Ffc3dpdGNoX2V2ICpldixcXG4gXFx0XFx0XFx0XFx0XFx0ICBjb25zdCB1MzIgKnZkZXZfaWRzKVxcbiB7XFxuLVxcdGludCBpO1xcbitcXHR1MzIgdmRldl9pZHNfbGVuID0gYXRoMTFrX3dtaV90bHZfZGF0YV9sZW4odmRldl9pZHMpO1xcbitcXHR1MzIgbnVtX3ZkZXZzID0gZXYtXFx1MDAzZW51bV92ZGV2cztcXG4gXFx0c3RydWN0IGF0aDExa192aWYgKmFydmlmO1xcbitcXHRpbnQgaTtcXG4gXFxuIFxcdC8qIEZpbmlzaCBDU0Egb25jZSB0aGUgc3dpdGNoIGNvdW50IGJlY29tZXMgTlVMTCAqL1xcbiBcXHRpZiAoZXYtXFx1MDAzZWN1cnJlbnRfc3dpdGNoX2NvdW50KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbitcXHRpZiAobnVtX3ZkZXZzIFxcdTAwM2UgdmRldl9pZHNfbGVuIC8gc2l6ZW9mKCp2ZGV2X2lkcykpIHtcXG4rXFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJjc2Egc3dpdGNoIGNvdW50IG51bV92ZGV2cyAldSBleGNlZWRzIHRsdiBhcnJheSBsZW5ndGggJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICBudW1fdmRldnMsIHZkZXZfaWRzX2xlbik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZXYtXFx1MDAzZW51bV92ZGV2czsgaSsrKSB7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fdmRldnM7IGkrKykge1xcbiBcXHRcXHRhcnZpZiA9IGF0aDExa19tYWNfZ2V0X2FydmlmX2J5X3ZkZXZfaWQoYWIsIHZkZXZfaWRzW2ldKTtcXG4gXFxuIFxcdFxcdGlmICghYXJ2aWYpIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcXG5pbmRleCAyYjcwN2ZmYzFhMjBmZi4uYzI4MzNkMWU5NWQzYjQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcXG5AQCAtMjA3LDYgKzIwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX3dtaV90bHZfcG9saWN5IGF0aDEya193bWlfdGx2X3BvbGljaWVzW10gPSB7XFxuIFxcdFxcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGVyX2NoYWluX3Jzc2lfc3RhdF9wYXJhbXMpIH0sXFxuIFxcdFtXTUlfVEFHX09CU1NfQ09MT1JfQ09MTElTSU9OX0VWVF0gPSB7XFxuIFxcdFxcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfb2Jzc19jb2xvcl9jb2xsaXNpb25fZXZlbnQpIH0sXFxuK1xcdFtXTUlfVEFHX1BERVZfQ1NBX1NXSVRDSF9DT1VOVF9TVEFUVVNfRVZFTlRdID0ge1xcbitcXHRcXHQubWluX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2X2NzYV9ldmVudCkgfSxcXG4gfTtcXG4gXFxuIF9fbGUzMiBhdGgxMmtfd21pX3Rsdl9oZHIodTMyIGNtZCwgdTMyIGxlbilcXG5AQCAtMzc0LDYgKzM3NiwxMyBAQCBhdGgxMmtfd21pX3Rsdl9wYXJzZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRyZXR1cm4gdGI7XFxuIH1cXG4gXFxuK3N0YXRpYyB1MzIgYXRoMTJrX3dtaV90bHZfZGF0YV9sZW4oY29uc3Qgdm9pZCAqZGF0YSlcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqdGx2ID0gKGNvbnN0IHN0cnVjdCB3bWlfdGx2ICopZGF0YSAtIDE7XFxuK1xcbitcXHRyZXR1cm4gbGUzMl9nZXRfYml0cyh0bHYtXFx1MDAzZWhlYWRlciwgV01JX1RMVl9MRU4pO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGF0aDEya193bWlfY21kX3NlbmRfbm93YWl0KHN0cnVjdCBhdGgxMmtfd21pX3BkZXYgKndtaSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICAgICAgdTMyIGNtZF9pZClcXG4ge1xcbkBAIC05MDc1LDEyICs5MDg0LDE5IEBAIGF0aDEya193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuIFxcdFxcdFxcdFxcdFxcdCAgY29uc3QgdTMyICp2ZGV2X2lkcylcXG4ge1xcbiBcXHR1MzIgY3VycmVudF9zd2l0Y2hfY291bnQgPSBsZTMyX3RvX2NwdShldi1cXHUwMDNlY3VycmVudF9zd2l0Y2hfY291bnQpO1xcbitcXHR1MzIgdmRldl9pZHNfbGVuID0gYXRoMTJrX3dtaV90bHZfZGF0YV9sZW4odmRldl9pZHMpO1xcbiBcXHR1MzIgbnVtX3ZkZXZzID0gbGUzMl90b19jcHUoZXYtXFx1MDAzZW51bV92ZGV2cyk7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmNvbmY7XFxuIFxcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWY7XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0aWYgKG51bV92ZGV2cyBcXHUwMDNlIHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7XFxuK1xcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiY3NhIHN3aXRjaCBjb3VudCBudW1fdmRldnMgJXUgZXhjZWVkcyB0bHYgYXJyYXkgbGVuZ3RoICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgbnVtX3ZkZXZzLCB2ZGV2X2lkc19sZW4pO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV92ZGV2czsgaSsrKSB7XFxuIFxcdFxcdGFydmlmID0gYXRoMTJrX21hY19nZXRfYXJ2aWZfYnlfdmRldl9pZChhYiwgdmRldl9pZHNbaV0pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNjowMDoxOC4yODgzNjM3ODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyODk4MjM1NjExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYXRoMTFrIGFuZCBhdGgxMmssIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gaGFyZHdhcmUuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYwY2NiYTdhMjJlNDZjOTc4NjFiMWRjZGMzODdhNWRjZTk4NzFlOWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwNjowMDoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG5pbmRleCA0Y2JkNzI5Mzg0NWEyNC4uZDZmZWFhNzEwZmUyNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG5AQCAtMTU5LDYgKzE1OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd21pX3Rsdl9wb2xpY3kgd21pX3Rsdl9wb2xpY2llc1tdID0ge1xuIFx0XHQubWluX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTFrX3dtaV9wMnBfbm9hX2luZm8pIH0sXG4gXHRbV01JX1RBR19QMlBfTk9BX0VWRU5UXSA9IHtcbiBcdFx0Lm1pbl9sZW4gPSBzaXplb2Yoc3RydWN0IHdtaV9wMnBfbm9hX2V2ZW50KSB9LFxuK1x0W1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7XG4rXHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGRldl9jc2Ffc3dpdGNoX2V2KSB9LFxuIH07XG4gXG4gI2RlZmluZSBQUklNQVAoX2h3X21vZGVfKSBcXFxuQEAgLTI2Miw2ICsyNjQsMTMgQEAgY29uc3Qgdm9pZCAqKmF0aDExa193bWlfdGx2X3BhcnNlX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4gXHRyZXR1cm4gdGI7XG4gfVxuIFxuK3N0YXRpYyB1MzIgYXRoMTFrX3dtaV90bHZfZGF0YV9sZW4oY29uc3Qgdm9pZCAqZGF0YSlcbit7XG4rXHRjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqdGx2ID0gKGNvbnN0IHN0cnVjdCB3bWlfdGx2ICopZGF0YSAtIDE7XG4rXG4rXHRyZXR1cm4gRklFTERfR0VUKFdNSV9UTFZfTEVOLCB0bHYtXHUwMDNlaGVhZGVyKTtcbit9XG4rXG4gc3RhdGljIGludCBhdGgxMWtfd21pX2NtZF9zZW5kX25vd2FpdChzdHJ1Y3QgYXRoMTFrX3BkZXZfd21pICp3bWksIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICAgICB1MzIgY21kX2lkKVxuIHtcbkBAIC04MzU5LDE1ICs4MzY4LDIzIEBAIGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4gXHRcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHdtaV9wZGV2X2NzYV9zd2l0Y2hfZXYgKmV2LFxuIFx0XHRcdFx0XHQgIGNvbnN0IHUzMiAqdmRldl9pZHMpXG4ge1xuLVx0aW50IGk7XG4rXHR1MzIgdmRldl9pZHNfbGVuID0gYXRoMTFrX3dtaV90bHZfZGF0YV9sZW4odmRldl9pZHMpO1xuK1x0dTMyIG51bV92ZGV2cyA9IGV2LVx1MDAzZW51bV92ZGV2cztcbiBcdHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZjtcbitcdGludCBpO1xuIFxuIFx0LyogRmluaXNoIENTQSBvbmNlIHRoZSBzd2l0Y2ggY291bnQgYmVjb21lcyBOVUxMICovXG4gXHRpZiAoZXYtXHUwMDNlY3VycmVudF9zd2l0Y2hfY291bnQpXG4gXHRcdHJldHVybjtcbiBcbitcdGlmIChudW1fdmRldnMgXHUwMDNlIHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7XG4rXHRcdGF0aDExa193YXJuKGFiLCBcImNzYSBzd2l0Y2ggY291bnQgbnVtX3ZkZXZzICV1IGV4Y2VlZHMgdGx2IGFycmF5IGxlbmd0aCAldVxcblwiLFxuK1x0XHRcdCAgICBudW1fdmRldnMsIHZkZXZfaWRzX2xlbik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHJjdV9yZWFkX2xvY2soKTtcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGV2LVx1MDAzZW51bV92ZGV2czsgaSsrKSB7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmRldnM7IGkrKykge1xuIFx0XHRhcnZpZiA9IGF0aDExa19tYWNfZ2V0X2FydmlmX2J5X3ZkZXZfaWQoYWIsIHZkZXZfaWRzW2ldKTtcbiBcbiBcdFx0aWYgKCFhcnZpZikge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5pbmRleCAyYjcwN2ZmYzFhMjBmZi4uYzI4MzNkMWU5NWQzYjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5AQCAtMjA3LDYgKzIwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX3dtaV90bHZfcG9saWN5IGF0aDEya193bWlfdGx2X3BvbGljaWVzW10gPSB7XG4gXHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGVyX2NoYWluX3Jzc2lfc3RhdF9wYXJhbXMpIH0sXG4gXHRbV01JX1RBR19PQlNTX0NPTE9SX0NPTExJU0lPTl9FVlRdID0ge1xuIFx0XHQubWluX2xlbiA9IHNpemVvZihzdHJ1Y3Qgd21pX29ic3NfY29sb3JfY29sbGlzaW9uX2V2ZW50KSB9LFxuK1x0W1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7XG4rXHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBhdGgxMmtfd21pX3BkZXZfY3NhX2V2ZW50KSB9LFxuIH07XG4gXG4gX19sZTMyIGF0aDEya193bWlfdGx2X2hkcih1MzIgY21kLCB1MzIgbGVuKVxuQEAgLTM3NCw2ICszNzYsMTMgQEAgYXRoMTJrX3dtaV90bHZfcGFyc2Uoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHJldHVybiB0YjtcbiB9XG4gXG4rc3RhdGljIHUzMiBhdGgxMmtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKVxuK3tcbitcdGNvbnN0IHN0cnVjdCB3bWlfdGx2ICp0bHYgPSAoY29uc3Qgc3RydWN0IHdtaV90bHYgKilkYXRhIC0gMTtcbitcbitcdHJldHVybiBsZTMyX2dldF9iaXRzKHRsdi1cdTAwM2VoZWFkZXIsIFdNSV9UTFZfTEVOKTtcbit9XG4rXG4gc3RhdGljIGludCBhdGgxMmtfd21pX2NtZF9zZW5kX25vd2FpdChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWksIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICAgICB1MzIgY21kX2lkKVxuIHtcbkBAIC05MDc1LDEyICs5MDg0LDE5IEBAIGF0aDEya193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHRcdFx0XHRcdCAgY29uc3QgdTMyICp2ZGV2X2lkcylcbiB7XG4gXHR1MzIgY3VycmVudF9zd2l0Y2hfY291bnQgPSBsZTMyX3RvX2NwdShldi1cdTAwM2VjdXJyZW50X3N3aXRjaF9jb3VudCk7XG4rXHR1MzIgdmRldl9pZHNfbGVuID0gYXRoMTJrX3dtaV90bHZfZGF0YV9sZW4odmRldl9pZHMpO1xuIFx0dTMyIG51bV92ZGV2cyA9IGxlMzJfdG9fY3B1KGV2LVx1MDAzZW51bV92ZGV2cyk7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpjb25mO1xuIFx0c3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWY7XG4gXHRzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWY7XG4gXHRpbnQgaTtcbiBcbitcdGlmIChudW1fdmRldnMgXHUwMDNlIHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7XG4rXHRcdGF0aDEya193YXJuKGFiLCBcImNzYSBzd2l0Y2ggY291bnQgbnVtX3ZkZXZzICV1IGV4Y2VlZHMgdGx2IGFycmF5IGxlbmd0aCAldVxcblwiLFxuK1x0XHRcdCAgICBudW1fdmRldnMsIHZkZXZfaWRzX2xlbik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV92ZGV2czsgaSsrKSB7XG4gXHRcdGFydmlmID0gYXRoMTJrX21hY19nZXRfYXJ2aWZfYnlfdmRldl9pZChhYiwgdmRldl9pZHNbaV0pO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDY6MDA6MTguMjg4MzY1MDg0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg3NDAwNzg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgVGVzdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBpdCBsb29rcyBsaWtlIGl0IGFkZHMgY3J1Y2lhbCBib3VuZHMgY2hlY2tpbmcgYW5kIFRMViBwb2xpY3kgZW5mb3JjZW1lbnQgaW4gYGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50YCBhbmQgYGF0aDEya193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50YC4gU3BlY2lmaWNhbGx5LCBpdCBhZGRyZXNzZXMgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIGBudW1fdmRldnNgIGFuZCBgdmRldl9pZHNfbGVuYCB3aXRoaW4gdGhlc2UgUXVhbGNvbW0gQXRoZXJvcyA4MDIuMTFheC9iZSBkcml2ZXJzLiBUaGUgZHJpdmVycyBhcmUgYGF0aDExa2AgYW5kIGBhdGgxMmtgLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzIHdpdGggd2lyZWxlc3MgZHJpdmVycywgaXMgaG93IGZlYXNpYmxlIGl0IGlzIHRvIGFjdHVhbGx5ICp0ZXN0KiB0aGlzIGVmZmVjdGl2ZWx5LlxuXG5UaGUgb2J2aW91cyBxdWVzdGlvbjogY2FuIEkgcmVhbGlzdGljYWxseSB0ZXN0IHRoaXMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSBoYXJkd2FyZS1kZXBlbmRlbnQsIG9mdGVuIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBpbnRlcmZhY2VzIGxpa2UgUENJZSBvciBBSEIuIEkgbmVlZCB0byBrbm93IGlmIHRoZXNlIGFyZSB0ZXN0YWJsZS5cblxuSSBxdWlja2x5IHJlbWVtYmVyIHRoYXQgYG1hYzgwMjExX2h3c2ltYCBpcyBhIHRoaW5nIGJ1dCByZWFsaXplIGl0J3MgYSBzZXBhcmF0ZSBkcml2ZXIsIG5vdCBhIHNpbXVsYXRpb24gZm9yIGF0aDExayBvciBhdGgxMmsuIFRoZSBjb3JlIGRyaXZlcnMgYXJlIGRlc2lnbmVkIGZvciAqcmVhbCogaGFyZHdhcmUuIE9rYXksIHNvIGhhcmR3YXJlLWxlc3MgZnV6emluZyBpcyBwcm9iYWJseSBhIG5vLWdvLiBTeXprYWxsZXIgc29tZXRpbWVzIG1hbmFnZXMgdG8gZnV6eiB3aXJlbGVzcyBkcml2ZXJzLCBidXQgdGhhdCdzIHVzdWFsbHkgdGhyb3VnaCBVU0Igb3IgUENJIGVtdWxhdGlvbiBpZiB0aGUgZHJpdmVyIHN1cHBvcnRzIGl0LiBTaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggUENJL0FIQiBkcml2ZXJzLCB3aGljaCBpcyBub3QgcmVhbGx5IHdoYXQgd2UndmUgZ290LiBTeXprYWxsZXIncyBQQ0kgZnV6emluZyBzdXBwb3J0IGlzLCBmcm9tIHdoYXQgSSBrbm93LCBxdWl0ZSBsaW1pdGVkLlxuXG5UaGUgcmVhbCBjaGFsbGVuZ2UgaXMgaGl0dGluZyB0aGUgYGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50YCBmdW5jdGlvbiBpbiB0aGUgZmlyc3QgcGxhY2UsIGFic2VudCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIFRoZXNlIGRyaXZlcnMgYXJlIGRlc2lnbmVkIHRvIHJlY2VpdmUgV01JIGV2ZW50cyBmcm9tIHRoZSBmaXJtd2FyZSwgdHlwaWNhbGx5IHRyYW5zbWl0dGVkIG92ZXIgSFRDL0NFIChDb3B5IEVuZ2luZSkuIFdpdGhvdXQgYSBmaXJtd2FyZSB0byBwcm92aWRlIHRoZSBldmVudHMsIGlzIHRoZSBkcml2ZXIgZXZlbiBnb2luZyB0byBiZSB0cmlnZ2VyZWQ/IEdlbmVyYWxseSwgbm8uIFdpdGhvdXQgYSBzcGVjaWZpYyBmdXp6aW5nIGhhcm5lc3Mgb3IsIGluIHRoZSByYXJlIGNhc2UsIFVTQiBkcml2ZXIgY29tcGF0aWJpbGl0eSwgcmVhY2hpbmcgdGhlc2UgZnVuY3Rpb25zIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCBpcyBnb2luZyB0byBiZSBpbXBvc3NpYmxlLlxuXG5TbywgSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJ3MgYW55IHBhdGh3YXkgdG8gaW5qZWN0IFdNSSBldmVudHMuIEknbGwgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSBpZiBgYXRoMTFrX3dtaV9wcm9jZXNzX2NzYV9zd2l0Y2hfY291bnRfZXZlbnRgIGlzIGNhbGxlZCBmcm9tICphbnl3aGVyZSogZWxzZSwgcGVyaGFwcyBzb21lIHNvcnQgb2YgdGVzdCBvciBkZWJ1Z2dpbmcgaW50ZXJmYWNlLiBJZiBub3QsIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW5jcmVkaWJseSBkaWZmaWN1bHQgdG8gdmFsaWRhdGUgd2l0aG91dCBwcm9wZXIgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNjowMDoyNy4xNjIzNzQ5MDhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3NzkyOTc2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jPTgzNjY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjgzNjc6YXRoMTFrX3dtaV9wcm9jZXNzX2NzYV9zd2l0Y2hfY291bnRfZXZlbnQoc3RydWN0IGF0aDExa19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTgzNjgtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgd21pX3BkZXZfY3NhX3N3aXRjaF9ldiAqZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jPTg0MDM9YXRoMTFrX3dtaV9wZGV2X2NzYV9zd2l0Y2hfY291bnRfc3RhdHVzX2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTg0MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo4NDMyOlxcdGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KGFiLCBldiwgdmRldl9pZHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtODQzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDY6MDA6MjkuMjQwMzA5OTU5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5OTQzMzk5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMsIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIFNpdGVzIG9mIGBhdGgxMWtfd21pX3BkZXZfY3NhX3N3aXRjaF9jb3VudF9zdGF0dXNfZXZlbnRgKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGBhdGgxMWtfd21pX3BkZXZfY3NhX3N3aXRjaF9jb3VudF9zdGF0dXNfZXZlbnRgIGZ1bmN0aW9uLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBmaWd1cmUgb3V0ICp3aGVyZSogaXQncyBiZWluZyBpbnZva2VkLiBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBpcyBjcnVjaWFsIGZvciBncmFzcGluZyBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgbGFyZ2VyIGFyY2hpdGVjdHVyZSBvZiB0aGUgYXRoMTFrIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIHNpdGVzLCBhbmQgZnJvbSB0aGVyZSBJIGNhbiBzdGFydCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBhbmQgcHVycG9zZS4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDA2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDY6MDA6MzIuMjM5NzQ1NzY4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTE2MjM4NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTFrX3dtaV9wZGV2X2NzYV9zd2l0Y2hfY291bnRfc3RhdHVzX2V2ZW50XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM9ODQwMj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6ODQwMzphdGgxMWtfd21pX3BkZXZfY3NhX3N3aXRjaF9jb3VudF9zdGF0dXNfZXZlbnQoc3RydWN0IGF0aDExa19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTg0MDQtXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM9ODkxNj1zdGF0aWMgdm9pZCBhdGgxMWtfd21pX3Rsdl9vcF9yeChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MDAwLVxcdGNhc2UgV01JX1BERVZfQ1NBX1NXSVRDSF9DT1VOVF9TVEFUVVNfRVZFTlRJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjkwMDE6XFx0XFx0YXRoMTFrX3dtaV9wZGV2X2NzYV9zd2l0Y2hfY291bnRfc3RhdHVzX2V2ZW50KGFiLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTAwMi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDY6MDA6MzQuMjMxMzc1Mjc1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0OTYxNzQyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMWtfd21pX3Rsdl9vcF9yeCBIYW5kbGVyKipcblxuT2theSwgc28gYGF0aDExa193bWlfdGx2X29wX3J4YCBpcyB0aGUgcmVjZWl2ZXIgZm9yIFdNSSBtZXNzYWdlcywgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBmaXJtd2FyZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIEl0J3MgdGhlIGNvcmUgb2YgaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIFBDSSBhbmQgQUhCIGFyY2hpdGVjdHVyZXMgd2hpY2gsIGlmIEkgcmVjYWxsLCBhcmUgc3VwcG9ydGVkIGJ5IGF0aDExay4gR2l2ZW4gdGhhdCBzdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZG8gYSBncmVhdCBqb2Igb2Ygc2ltdWxhdGluZyBBdGhlcm9zIDgwMi4xMWF4IGhhcmR3YXJlLCBpdCBtZWFucyB0aGUgZHJpdmVyIGlzIHByb2JhYmx5IGdvaW5nIHRvIGZhaWwgdGhlIHByb2JlIHN0ZXAuIFRoZSBpbXBsaWNhdGlvbnM/IE5vIHN1Y2Nlc3NmdWwgcHJvYmUgbWVhbnMgdGhlIGVudGlyZSBXTUkgbGF5ZXIgd29uJ3QgaW5pdGlhbGl6ZS4gQW5kIHRoYXQsIGluIHR1cm4sIGtpbGxzIHRoZSBhYmlsaXR5IHRvIHJlY2VpdmUgYW5kIHByb2Nlc3MgYW55IFdNSSBldmVudHMuXG5cbkhvbGQgb24sIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCB0aGluayBzdHJhdGVnaWNhbGx5IGhlcmUuIElzIHRoZXJlIGFueSBmdXp6aW5nIGludGVyZmFjZSBhdmFpbGFibGUgZm9yIGF0aDExaz8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlJ3MgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0FUSDExS19GVVpaYCB0aGF0IEkgY291bGQgZW5hYmxlLiBUaGF0IG1pZ2h0IGdpdmUgbWUgYSB3YXkgaW4uIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGF2ZW51ZSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTYzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA2OjAwOjM4Ljc4MDk5NDYzNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTczNTY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEgxMUtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gODAyLjExYXggY2hpcHNldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxMzpjb25maWcgQVRIMTFLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMWsgQUhCIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjE1OlxcdGRlcGVuZHMgb24gQVRIMTFLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE2LVxcdGRlcGVuZHMgb24gUkVNT1RFUFJPQ1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyMDpjb25maWcgQVRIMTFLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMWsgUENJIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjIyOlxcdGRlcGVuZHMgb24gQVRIMTFLIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMy1cXHRzZWxlY3QgTUhJX0JVU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMDpjb25maWcgQVRIMTFLX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMjpcXHRkZXBlbmRzIG9uIEFUSDExS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjM4OmNvbmZpZyBBVEgxMUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJRQ0EgYXRoMTFrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDA6XFx0ZGVwZW5kcyBvbiBBVEgxMUsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlMgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00MS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ2OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00Ny1cXHRib29sIFxcXCJhdGgxMWsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo0ODpcXHRkZXBlbmRzIG9uIEFUSDExSyBcXHUwMDI2XFx1MDAyNiBFVkVOVF9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NTI6Y29uZmlnIEFUSDExS19TUEVDVFJBTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01My1cXHRib29sIFxcXCJRQ0EgYXRoMTFrIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NTQ6XFx0ZGVwZW5kcyBvbiBBVEgxMUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01NS1cXHRkZXBlbmRzIG9uIFJFTEFZXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjYxOmNvbmZpZyBBVEgxMUtfQ0ZSXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYyLVxcdGJvb2wgXFxcImF0aDExayBjaGFubmVsIGZyZXF1ZW5jeSByZXNwb25zZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2MzpcXHRkZXBlbmRzIG9uIEFUSDExS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTY0LVxcdGRlcGVuZHMgb24gUkVMQVlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDY6MDA6MzguODM2NzM5MDAzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2NDQwNDkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRnV6emluZyBJbnRlcmZhY2VzOiBBIFF1aWNrIFNjYW4qKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gKmF0aDExayouIFJpZ2h0LCBubyBkZWRpY2F0ZWQgZnV6emluZyBpbnRlcmZhY2UgdGhlcmUgdGhhdCBJJ20gYXdhcmUgb2YuIEhtbSwgYSBjb21tb24gaXNzdWUsIHJlYWxseS4gVGhlIGRldmVsb3BtZW50IGZvY3VzIGFsd2F5cyBzZWVtcyB0byBiZSBvbiBzdGFiaWxpdHkgYW5kIHBlcmZvcm1hbmNlIGZpcnN0LCBhbmQgZnV6emluZyBvZnRlbiBnZXRzIHRhY2tlZCBvbiBsYXRlciwgb3IgaW1wbGVtZW50ZWQgYXMgYSB2ZXJ5IHNwZWNpZmljIGludGVybmFsIHByb2Nlc3MgcmF0aGVyIHRoYW4gYSByZWFkaWx5IGF2YWlsYWJsZSBpbnRlcmZhY2UuXG5cblNvLCAqYXRoMTJrKuKApiBhbnkgY2hhbmdlIHRoZXJlPyBJIGhhdmVuJ3Qga2VwdCBhcyBjbG9zZSBvZiBhbiBleWUgb24gdGhhdCBkcml2ZXIsIHNvIEkgbmVlZCB0byBjaGVjay4gSGF2ZSB0aGV5IGJ1aWx0IGluIGEgbW9yZSBhY2Nlc3NpYmxlIGludGVyZmFjZSBmb3IgdGhpcywgb3IgYXJlIHdlIHN0aWxsIHN0dWNrIHdpdGggdGhlIG1vcmUgYWQtaG9jIG1ldGhvZHM/IE5lZWQgdG8gY2hlY2sgdGhlIGNvZGViYXNlLi4uIHNlZSBpZiB0aGVyZSBhcmUgaG9va3MsIGNvbW1hbmQtbGluZSBvcHRpb25zLCBvciBhbnl0aGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiB0aGF0IHdvdWxkIHN1Z2dlc3QgYSBmdXp6aW5nLWZyaWVuZGx5IGFwcHJvYWNoLiBJdCdzIGEga2V5IHF1ZXN0aW9uIHdoZW4gZXZhbHVhdGluZyB0aGUgc2VjdXJpdHkgcG9zdHVyZSwgYW5kIHRoZSBhbW91bnQgb2YgZWZmb3J0IHJlcXVpcmVkIHRvIGlkZW50aWZ5IHZ1bG5lcmFiaWxpdGllcy4gV2UncmUgbG9va2luZyBmb3IgdGhhdCBsb3ctaGFuZ2luZyBmcnVpdCwgdGhlIHBvdGVudGlhbCBmb3IgYXV0b21hdGVkIGRpc2NvdmVyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA3MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA2OjAwOjQyLjMwMTE0NjA1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczNDIwNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQVRIMTJLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBSRU1PVEVQUk9DXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTIwLVxcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNzpcXHRkZXBlbmRzIG9uIEFUSDEyS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM1OmNvbmZpZyBBVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNzpcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDQ6Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ1LVxcdGJvb2wgXFxcImF0aDEyayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ2OlxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTYtXFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA2OjAwOjQyLjM1ODQ5NzY3MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTEyMTk4NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIHNjYW4gaW1tZWRpYXRlbHkgaGlnaGxpZ2h0cyBhIHBvdGVudGlhbCBpc3N1ZSBmb3IgZnV6emluZy4gVGhlcmUncyBubyBmdXp6aW5nIGludGVyZmFjZSBkZWZpbmVkIHNwZWNpZmljYWxseSBmb3IgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IHNldHMgb2ZmIGFsYXJtIGJlbGxzLiBUaGF0J3Mgbm90IGEgZ29vZCBzaWduLiBEaWdnaW5nIGRlZXBlciwgSSBzZWUgdGhpcyBpcyByZWxhdGVkIHRvIGRyaXZlcnMgZm9yIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IFBDSWUgYW5kIEFIQiBpbnRlcmZhY2VzLiBUaGVzZSBhcmUgdGhpbmdzIHRoYXQgUUVNVSwgYW5kIGNlcnRhaW5seSBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIGRvbid0IGVtdWxhdGUuXG5cblRoZW4gSSBkb3VibGUgY2hlY2sgdGhlIGluc3RydWN0aW9ucywgdGhlIG9uZXMgdGhhdCBtYXR0ZXIgdGhlIG1vc3QuIEFuZCB5ZWFoLCBpdCBjbGVhcmx5IHN0YXRlcyB0aGF0IHBhdGNoZXMgc2hvdWxkbid0IGJlIGZ1enplZCBpZiB0aGV5IGRlYWwgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzLiBUaGV5IGxpc3QgYSBmZXcgZXhhbXBsZXMsIGFuZCBsb29raW5nIGF0IHRob3NlIGV4YW1wbGVzIHJlaW5mb3JjZXMgdGhhdCB0aGUgcHJvYmxlbSBpcyB0aGF0IHN0YW5kYXJkIFFFTVUgY2FuJ3QgaGFuZGxlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSByZXF1aXJlbWVudHMuXG5cbkFoLWhhISBUaGUgdGV4dCBuYWlscyBpdCBkb3duOiBhdGgxMWsgYW5kIGF0aDEyayBhcmUgZXhwbGljaXRseSBXaS1GaSBkcml2ZXJzLCBidXQgdGhleSBhcmUgYWxzbyB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgZHJpdmVycywgYW5kIGFzIHN1Y2gsIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUuIFNvLCBiYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCBhbmQgbXkgb3duIGV4cGVyaWVuY2Ugd2l0aCB2aXJ0dWFsaXphdGlvbiBhbmQgUUVNVSwgaXQncyBjbGVhcjogdGhpcyBwYXRjaCBpcyAqKm5vdCoqIHdvcnRoIGZ1enppbmcuIFRoZSB0YXJnZXQgY29kZSBwYXRocyBhcmUgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRpbWUgdG8gbW92ZSBvbiB0byBzb21ldGhpbmcgbW9yZSBmcnVpdGZ1bC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE1NCwiT3V0cHV0VG9rZW5zIjo5MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNjowMDo0Ny4yNzA2OTg4MTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhdGgxMWsgYW5kIGF0aDEyaywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYXRoMTFrIGFuZCBhdGgxMmssIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gaGFyZHdhcmUuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow566zr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 05:35:32 +0000 UTC FinishedAt: 2026-07-25 06:00:49 +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+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGF0aDExayBhbmQgYXRoMTJrLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIFdpLUZpIGRyaXZlcnMgZm9yIFF1YWxjb21tIGhhcmR3YXJlLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjBjY2JhN2EyMmU0NmM5Nzg2MWIxZGNkYzM4N2E1ZGNlOTg3MWU5YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDA2OjAwOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG5pbmRleCA0Y2JkNzI5Mzg0NWEyNC4uZDZmZWFhNzEwZmUyNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG5AQCAtMTU5LDYgJiM0MzsxNTksOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHdtaV90bHZfcG9saWN5IHdtaV90bHZfcG9saWNpZXNbXSA9IHtcbiBcdFx0Lm1pbl9sZW4gPSBzaXplb2Yoc3RydWN0IGF0aDExa193bWlfcDJwX25vYV9pbmZvKSB9LFxuIFx0W1dNSV9UQUdfUDJQX05PQV9FVkVOVF0gPSB7XG4gXHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcDJwX25vYV9ldmVudCkgfSxcbiYjNDM7XHRbV01JX1RBR19QREVWX0NTQV9TV0lUQ0hfQ09VTlRfU1RBVFVTX0VWRU5UXSA9IHtcbiYjNDM7XHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGRldl9jc2Ffc3dpdGNoX2V2KSB9LFxuIH07XG4gXG4gI2RlZmluZSBQUklNQVAoX2h3X21vZGVfKSBcXFxuQEAgLTI2Miw2ICYjNDM7MjY0LDEzIEBAIGNvbnN0IHZvaWQgKiphdGgxMWtfd21pX3Rsdl9wYXJzZV9hbGxvYyhzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuIFx0cmV0dXJuIHRiO1xuIH1cbiBcbiYjNDM7c3RhdGljIHUzMiBhdGgxMWtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHdtaV90bHYgKnRsdiA9IChjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqKWRhdGEgLSAxO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gRklFTERfR0VUKFdNSV9UTFZfTEVOLCB0bHYtXHUwMDNlaGVhZGVyKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGF0aDExa193bWlfY21kX3NlbmRfbm93YWl0KHN0cnVjdCBhdGgxMWtfcGRldl93bWkgKndtaSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgICAgIHUzMiBjbWRfaWQpXG4ge1xuQEAgLTgzNTksMTUgJiM0Mzs4MzY4LDIzIEBAIGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4gXHRcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHdtaV9wZGV2X2NzYV9zd2l0Y2hfZXYgKmV2LFxuIFx0XHRcdFx0XHQgIGNvbnN0IHUzMiAqdmRldl9pZHMpXG4ge1xuLVx0aW50IGk7XG4mIzQzO1x0dTMyIHZkZXZfaWRzX2xlbiA9IGF0aDExa193bWlfdGx2X2RhdGFfbGVuKHZkZXZfaWRzKTtcbiYjNDM7XHR1MzIgbnVtX3ZkZXZzID0gZXYtXHUwMDNlbnVtX3ZkZXZzO1xuIFx0c3RydWN0IGF0aDExa192aWYgKmFydmlmO1xuJiM0MztcdGludCBpO1xuIFxuIFx0LyogRmluaXNoIENTQSBvbmNlIHRoZSBzd2l0Y2ggY291bnQgYmVjb21lcyBOVUxMICovXG4gXHRpZiAoZXYtXHUwMDNlY3VycmVudF9zd2l0Y2hfY291bnQpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRpZiAobnVtX3ZkZXZzIFx1MDAzZSB2ZGV2X2lkc19sZW4gLyBzaXplb2YoKnZkZXZfaWRzKSkge1xuJiM0MztcdFx0YXRoMTFrX3dhcm4oYWIsIFwmIzM0O2NzYSBzd2l0Y2ggY291bnQgbnVtX3ZkZXZzICV1IGV4Y2VlZHMgdGx2IGFycmF5IGxlbmd0aCAldVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgIG51bV92ZGV2cywgdmRldl9pZHNfbGVuKTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmN1X3JlYWRfbG9jaygpO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZXYtXHUwMDNlbnVtX3ZkZXZzOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV92ZGV2czsgaSYjNDM7JiM0MzspIHtcbiBcdFx0YXJ2aWYgPSBhdGgxMWtfbWFjX2dldF9hcnZpZl9ieV92ZGV2X2lkKGFiLCB2ZGV2X2lkc1tpXSk7XG4gXG4gXHRcdGlmICghYXJ2aWYpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuaW5kZXggMmI3MDdmZmMxYTIwZmYuLmMyODMzZDFlOTVkM2I0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xuQEAgLTIwNyw2ICYjNDM7MjA3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMmtfd21pX3Rsdl9wb2xpY3kgYXRoMTJrX3dtaV90bHZfcG9saWNpZXNbXSA9IHtcbiBcdFx0Lm1pbl9sZW4gPSBzaXplb2Yoc3RydWN0IHdtaV9wZXJfY2hhaW5fcnNzaV9zdGF0X3BhcmFtcykgfSxcbiBcdFtXTUlfVEFHX09CU1NfQ09MT1JfQ09MTElTSU9OX0VWVF0gPSB7XG4gXHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfb2Jzc19jb2xvcl9jb2xsaXNpb25fZXZlbnQpIH0sXG4mIzQzO1x0W1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7XG4mIzQzO1x0XHQubWluX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2X2NzYV9ldmVudCkgfSxcbiB9O1xuIFxuIF9fbGUzMiBhdGgxMmtfd21pX3Rsdl9oZHIodTMyIGNtZCwgdTMyIGxlbilcbkBAIC0zNzQsNiAmIzQzOzM3NiwxMyBAQCBhdGgxMmtfd21pX3Rsdl9wYXJzZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0cmV0dXJuIHRiO1xuIH1cbiBcbiYjNDM7c3RhdGljIHUzMiBhdGgxMmtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHdtaV90bHYgKnRsdiA9IChjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqKWRhdGEgLSAxO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbGUzMl9nZXRfYml0cyh0bHYtXHUwMDNlaGVhZGVyLCBXTUlfVExWX0xFTik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBhdGgxMmtfd21pX2NtZF9zZW5kX25vd2FpdChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWksIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICAgICB1MzIgY21kX2lkKVxuIHtcbkBAIC05MDc1LDEyICYjNDM7OTA4NCwxOSBAQCBhdGgxMmtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxuIFx0XHRcdFx0XHQgIGNvbnN0IHUzMiAqdmRldl9pZHMpXG4ge1xuIFx0dTMyIGN1cnJlbnRfc3dpdGNoX2NvdW50ID0gbGUzMl90b19jcHUoZXYtXHUwMDNlY3VycmVudF9zd2l0Y2hfY291bnQpO1xuJiM0MztcdHUzMiB2ZGV2X2lkc19sZW4gPSBhdGgxMmtfd21pX3Rsdl9kYXRhX2xlbih2ZGV2X2lkcyk7XG4gXHR1MzIgbnVtX3ZkZXZzID0gbGUzMl90b19jcHUoZXYtXHUwMDNlbnVtX3ZkZXZzKTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmNvbmY7XG4gXHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcbiBcdHN0cnVjdCBhdGgxMmtfdmlmICphaHZpZjtcbiBcdGludCBpO1xuIFxuJiM0MztcdGlmIChudW1fdmRldnMgXHUwMDNlIHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7XG4mIzQzO1x0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7Y3NhIHN3aXRjaCBjb3VudCBudW1fdmRldnMgJXUgZXhjZWVkcyB0bHYgYXJyYXkgbGVuZ3RoICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgbnVtX3ZkZXZzLCB2ZGV2X2lkc19sZW4pO1xuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmRldnM7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdGFydmlmID0gYXRoMTJrX21hY19nZXRfYXJ2aWZfYnlfdmRldl9pZChhYiwgdmRldl9pZHNbaV0pO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhdGgxMWsgYW5kIGF0aDEyaywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGYwY2NiYTdhMjJlNDZjOTc4NjFiMWRjZGMzODdhNWRjZTk4NzFlOWEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAwNjowMDoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jCmluZGV4IDRjYmQ3MjkzODQ1YTI0Li5kNmZlYWE3MTBmZTI1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jCkBAIC0xNTksNiAmIzQzOzE1OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd21pX3Rsdl9wb2xpY3kgd21pX3Rsdl9wb2xpY2llc1tdID0gewogCQkubWluX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTFrX3dtaV9wMnBfbm9hX2luZm8pIH0sCiAJW1dNSV9UQUdfUDJQX05PQV9FVkVOVF0gPSB7CiAJCS5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcDJwX25vYV9ldmVudCkgfSwKJiM0MzsJW1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7CiYjNDM7CQkubWluX2xlbiA9IHNpemVvZihzdHJ1Y3Qgd21pX3BkZXZfY3NhX3N3aXRjaF9ldikgfSwKIH07CiAKICNkZWZpbmUgUFJJTUFQKF9od19tb2RlXykgXApAQCAtMjYyLDYgJiM0MzsyNjQsMTMgQEAgY29uc3Qgdm9pZCAqKmF0aDExa193bWlfdGx2X3BhcnNlX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsCiAJcmV0dXJuIHRiOwogfQogCiYjNDM7c3RhdGljIHUzMiBhdGgxMWtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHdtaV90bHYgKnRsdiA9IChjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqKWRhdGEgLSAxOwomIzQzOwomIzQzOwlyZXR1cm4gRklFTERfR0VUKFdNSV9UTFZfTEVOLCB0bHYtJmd0O2hlYWRlcik7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBhdGgxMWtfd21pX2NtZF9zZW5kX25vd2FpdChzdHJ1Y3QgYXRoMTFrX3BkZXZfd21pICp3bWksIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJICAgICAgdTMyIGNtZF9pZCkKIHsKQEAgLTgzNTksMTUgJiM0Mzs4MzY4LDIzIEBAIGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsCiAJCQkJCSAgY29uc3Qgc3RydWN0IHdtaV9wZGV2X2NzYV9zd2l0Y2hfZXYgKmV2LAogCQkJCQkgIGNvbnN0IHUzMiAqdmRldl9pZHMpCiB7Ci0JaW50IGk7CiYjNDM7CXUzMiB2ZGV2X2lkc19sZW4gPSBhdGgxMWtfd21pX3Rsdl9kYXRhX2xlbih2ZGV2X2lkcyk7CiYjNDM7CXUzMiBudW1fdmRldnMgPSBldi0mZ3Q7bnVtX3ZkZXZzOwogCXN0cnVjdCBhdGgxMWtfdmlmICphcnZpZjsKJiM0MzsJaW50IGk7CiAKIAkvKiBGaW5pc2ggQ1NBIG9uY2UgdGhlIHN3aXRjaCBjb3VudCBiZWNvbWVzIE5VTEwgKi8KIAlpZiAoZXYtJmd0O2N1cnJlbnRfc3dpdGNoX2NvdW50KQogCQlyZXR1cm47CiAKJiM0MzsJaWYgKG51bV92ZGV2cyAmZ3Q7IHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7CiYjNDM7CQlhdGgxMWtfd2FybihhYiwgJiMzNDtjc2Egc3dpdGNoIGNvdW50IG51bV92ZGV2cyAldSBleGNlZWRzIHRsdiBhcnJheSBsZW5ndGggJXVcbiYjMzQ7LAomIzQzOwkJCSAgICBudW1fdmRldnMsIHZkZXZfaWRzX2xlbik7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKIAlyY3VfcmVhZF9sb2NrKCk7Ci0JZm9yIChpID0gMDsgaSAmbHQ7IGV2LSZndDtudW1fdmRldnM7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBudW1fdmRldnM7IGkmIzQzOyYjNDM7KSB7CiAJCWFydmlmID0gYXRoMTFrX21hY19nZXRfYXJ2aWZfYnlfdmRldl9pZChhYiwgdmRldl9pZHNbaV0pOwogCiAJCWlmICghYXJ2aWYpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCmluZGV4IDJiNzA3ZmZjMWEyMGZmLi5jMjgzM2QxZTk1ZDNiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jCkBAIC0yMDcsNiAmIzQzOzIwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX3dtaV90bHZfcG9saWN5IGF0aDEya193bWlfdGx2X3BvbGljaWVzW10gPSB7CiAJCS5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGVyX2NoYWluX3Jzc2lfc3RhdF9wYXJhbXMpIH0sCiAJW1dNSV9UQUdfT0JTU19DT0xPUl9DT0xMSVNJT05fRVZUXSA9IHsKIAkJLm1pbl9sZW4gPSBzaXplb2Yoc3RydWN0IHdtaV9vYnNzX2NvbG9yX2NvbGxpc2lvbl9ldmVudCkgfSwKJiM0MzsJW1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7CiYjNDM7CQkubWluX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2X2NzYV9ldmVudCkgfSwKIH07CiAKIF9fbGUzMiBhdGgxMmtfd21pX3Rsdl9oZHIodTMyIGNtZCwgdTMyIGxlbikKQEAgLTM3NCw2ICYjNDM7Mzc2LDEzIEBAIGF0aDEya193bWlfdGx2X3BhcnNlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZmICpza2IpCiAJcmV0dXJuIHRiOwogfQogCiYjNDM7c3RhdGljIHUzMiBhdGgxMmtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHdtaV90bHYgKnRsdiA9IChjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqKWRhdGEgLSAxOwomIzQzOwomIzQzOwlyZXR1cm4gbGUzMl9nZXRfYml0cyh0bHYtJmd0O2hlYWRlciwgV01JX1RMVl9MRU4pOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgYXRoMTJrX3dtaV9jbWRfc2VuZF9ub3dhaXQoc3RydWN0IGF0aDEya193bWlfcGRldiAqd21pLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgICAgIHUzMiBjbWRfaWQpCiB7CkBAIC05MDc1LDEyICYjNDM7OTA4NCwxOSBAQCBhdGgxMmtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLAogCQkJCQkgIGNvbnN0IHUzMiAqdmRldl9pZHMpCiB7CiAJdTMyIGN1cnJlbnRfc3dpdGNoX2NvdW50ID0gbGUzMl90b19jcHUoZXYtJmd0O2N1cnJlbnRfc3dpdGNoX2NvdW50KTsKJiM0MzsJdTMyIHZkZXZfaWRzX2xlbiA9IGF0aDEya193bWlfdGx2X2RhdGFfbGVuKHZkZXZfaWRzKTsKIAl1MzIgbnVtX3ZkZXZzID0gbGUzMl90b19jcHUoZXYtJmd0O251bV92ZGV2cyk7CiAJc3RydWN0IGllZWU4MDIxMV9ic3NfY29uZiAqY29uZjsKIAlzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjsKIAlzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWY7CiAJaW50IGk7CiAKJiM0MzsJaWYgKG51bV92ZGV2cyAmZ3Q7IHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7CiYjNDM7CQlhdGgxMmtfd2FybihhYiwgJiMzNDtjc2Egc3dpdGNoIGNvdW50IG51bV92ZGV2cyAldSBleGNlZWRzIHRsdiBhcnJheSBsZW5ndGggJXVcbiYjMzQ7LAomIzQzOwkJCSAgICBudW1fdmRldnMsIHZkZXZfaWRzX2xlbik7CiYjNDM7CQlyZXR1cm47CiYjNDM7CX0KJiM0MzsKIAlyY3VfcmVhZF9sb2NrKCk7CiAJZm9yIChpID0gMDsgaSAmbHQ7IG51bV92ZGV2czsgaSYjNDM7JiM0MzspIHsKIAkJYXJ2aWYgPSBhdGgxMmtfbWFjX2dldF9hcnZpZl9ieV92ZGV2X2lkKGFiLCB2ZGV2X2lkc1tpXSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBUZXN0YWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCDigJMgaXQgbG9va3MgbGlrZSBpdCBhZGRzIGNydWNpYWwgYm91bmRzIGNoZWNraW5nIGFuZCBUTFYgcG9saWN5IGVuZm9yY2VtZW50IGluIGBhdGgxMWtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudGAgYW5kIGBhdGgxMmtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudGAuIFNwZWNpZmljYWxseSwgaXQgYWRkcmVzc2VzIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byBgbnVtX3ZkZXZzYCBhbmQgYHZkZXZfaWRzX2xlbmAgd2l0aGluIHRoZXNlIFF1YWxjb21tIEF0aGVyb3MgODAyLjExYXgvYmUgZHJpdmVycy4gVGhlIGRyaXZlcnMgYXJlIGBhdGgxMWtgIGFuZCBgYXRoMTJrYC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cyB3aXRoIHdpcmVsZXNzIGRyaXZlcnMsIGlzIGhvdyBmZWFzaWJsZSBpdCBpcyB0byBhY3R1YWxseSAqdGVzdCogdGhpcyBlZmZlY3RpdmVseS4KClRoZSBvYnZpb3VzIHF1ZXN0aW9uOiBjYW4gSSByZWFsaXN0aWNhbGx5IHRlc3QgdGhpcyBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/IFdpcmVsZXNzIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IGhhcmR3YXJlLWRlcGVuZGVudCwgb2Z0ZW4gcmVxdWlyaW5nIHNwZWNpZmljIHBoeXNpY2FsIGludGVyZmFjZXMgbGlrZSBQQ0llIG9yIEFIQi4gSSBuZWVkIHRvIGtub3cgaWYgdGhlc2UgYXJlIHRlc3RhYmxlLgoKSSBxdWlja2x5IHJlbWVtYmVyIHRoYXQgYG1hYzgwMjExX2h3c2ltYCBpcyBhIHRoaW5nIGJ1dCByZWFsaXplIGl0JiMzOTtzIGEgc2VwYXJhdGUgZHJpdmVyLCBub3QgYSBzaW11bGF0aW9uIGZvciBhdGgxMWsgb3IgYXRoMTJrLiBUaGUgY29yZSBkcml2ZXJzIGFyZSBkZXNpZ25lZCBmb3IgKnJlYWwqIGhhcmR3YXJlLiBPa2F5LCBzbyBoYXJkd2FyZS1sZXNzIGZ1enppbmcgaXMgcHJvYmFibHkgYSBuby1nby4gU3l6a2FsbGVyIHNvbWV0aW1lcyBtYW5hZ2VzIHRvIGZ1enogd2lyZWxlc3MgZHJpdmVycywgYnV0IHRoYXQmIzM5O3MgdXN1YWxseSB0aHJvdWdoIFVTQiBvciBQQ0kgZW11bGF0aW9uIGlmIHRoZSBkcml2ZXIgc3VwcG9ydHMgaXQuIFNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggUENJL0FIQiBkcml2ZXJzLCB3aGljaCBpcyBub3QgcmVhbGx5IHdoYXQgd2UmIzM5O3ZlIGdvdC4gU3l6a2FsbGVyJiMzOTtzIFBDSSBmdXp6aW5nIHN1cHBvcnQgaXMsIGZyb20gd2hhdCBJIGtub3csIHF1aXRlIGxpbWl0ZWQuCgpUaGUgcmVhbCBjaGFsbGVuZ2UgaXMgaGl0dGluZyB0aGUgYGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50YCBmdW5jdGlvbiBpbiB0aGUgZmlyc3QgcGxhY2UsIGFic2VudCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIFRoZXNlIGRyaXZlcnMgYXJlIGRlc2lnbmVkIHRvIHJlY2VpdmUgV01JIGV2ZW50cyBmcm9tIHRoZSBmaXJtd2FyZSwgdHlwaWNhbGx5IHRyYW5zbWl0dGVkIG92ZXIgSFRDL0NFIChDb3B5IEVuZ2luZSkuIFdpdGhvdXQgYSBmaXJtd2FyZSB0byBwcm92aWRlIHRoZSBldmVudHMsIGlzIHRoZSBkcml2ZXIgZXZlbiBnb2luZyB0byBiZSB0cmlnZ2VyZWQ/IEdlbmVyYWxseSwgbm8uIFdpdGhvdXQgYSBzcGVjaWZpYyBmdXp6aW5nIGhhcm5lc3Mgb3IsIGluIHRoZSByYXJlIGNhc2UsIFVTQiBkcml2ZXIgY29tcGF0aWJpbGl0eSwgcmVhY2hpbmcgdGhlc2UgZnVuY3Rpb25zIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCBpcyBnb2luZyB0byBiZSBpbXBvc3NpYmxlLgoKU28sIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpZiB0aGVyZSYjMzk7cyBhbnkgcGF0aHdheSB0byBpbmplY3QgV01JIGV2ZW50cy4gSSYjMzk7bGwgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSBpZiBgYXRoMTFrX3dtaV9wcm9jZXNzX2NzYV9zd2l0Y2hfY291bnRfZXZlbnRgIGlzIGNhbGxlZCBmcm9tICphbnl3aGVyZSogZWxzZSwgcGVyaGFwcyBzb21lIHNvcnQgb2YgdGVzdCBvciBkZWJ1Z2dpbmcgaW50ZXJmYWNlLiBJZiBub3QsIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW5jcmVkaWJseSBkaWZmaWN1bHQgdG8gdmFsaWRhdGUgd2l0aG91dCBwcm9wZXIgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTFrX3dtaV9wcm9jZXNzX2NzYV9zd2l0Y2hfY291bnRfZXZlbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz04MzY2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjgzNjc6YXRoMTFrX3dtaV9wcm9jZXNzX2NzYV9zd2l0Y2hfY291bnRfZXZlbnQoc3RydWN0IGF0aDExa19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtODM2OC1cdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgd21pX3BkZXZfY3NhX3N3aXRjaF9ldiAqZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYz04NDAzPWF0aDExa193bWlfcGRldl9jc2Ffc3dpdGNoX2NvdW50X3N0YXR1c19ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtODQzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6ODQzMjpcdGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KGFiLCBldiwgdmRldl9pZHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy04NDMzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMDYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMsIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgQ2FsbCBTaXRlcyBvZiBgYXRoMTFrX3dtaV9wZGV2X2NzYV9zd2l0Y2hfY291bnRfc3RhdHVzX2V2ZW50YCoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGBhdGgxMWtfd21pX3BkZXZfY3NhX3N3aXRjaF9jb3VudF9zdGF0dXNfZXZlbnRgIGZ1bmN0aW9uLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBmaWd1cmUgb3V0ICp3aGVyZSogaXQmIzM5O3MgYmVpbmcgaW52b2tlZC4gS25vd2luZyB0aGUgY2FsbGluZyBmdW5jdGlvbnMgaXMgY3J1Y2lhbCBmb3IgZ3Jhc3BpbmcgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUgb2YgdGhlIGF0aDExayB3aXJlbGVzcyBkcml2ZXIuIEkgbmVlZCB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcywgYW5kIGZyb20gdGhlcmUgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24gYW5kIHB1cnBvc2UuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0aDExa193bWlfcGRldl9jc2Ffc3dpdGNoX2NvdW50X3N0YXR1c19ldmVudCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jPTg0MDI9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6ODQwMzphdGgxMWtfd21pX3BkZXZfY3NhX3N3aXRjaF9jb3VudF9zdGF0dXNfZXZlbnQoc3RydWN0IGF0aDExa19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtODQwNC1cdFx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jPTg5MTY9c3RhdGljIHZvaWQgYXRoMTFrX3dtaV90bHZfb3Bfcngoc3RydWN0IGF0aDExa19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTkwMDAtXHRjYXNlIFdNSV9QREVWX0NTQV9TV0lUQ0hfQ09VTlRfU1RBVFVTX0VWRU5USUQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjkwMDE6XHRcdGF0aDExa193bWlfcGRldl9jc2Ffc3dpdGNoX2NvdW50X3N0YXR1c19ldmVudChhYiwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTAwMi1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU2MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMWtfd21pX3Rsdl9vcF9yeCBIYW5kbGVyKioKCk9rYXksIHNvIGBhdGgxMWtfd21pX3Rsdl9vcF9yeGAgaXMgdGhlIHJlY2VpdmVyIGZvciBXTUkgbWVzc2FnZXMsIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgaW5jb21pbmcgbWVzc2FnZXMgZnJvbSB0aGUgZmlybXdhcmUuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLiBJdCYjMzk7cyB0aGUgY29yZSBvZiBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggUENJIGFuZCBBSEIgYXJjaGl0ZWN0dXJlcyB3aGljaCwgaWYgSSByZWNhbGwsIGFyZSBzdXBwb3J0ZWQgYnkgYXRoMTFrLiBHaXZlbiB0aGF0IHN0YW5kYXJkIFFFTVUgZG9lc24mIzM5O3QgZG8gYSBncmVhdCBqb2Igb2Ygc2ltdWxhdGluZyBBdGhlcm9zIDgwMi4xMWF4IGhhcmR3YXJlLCBpdCBtZWFucyB0aGUgZHJpdmVyIGlzIHByb2JhYmx5IGdvaW5nIHRvIGZhaWwgdGhlIHByb2JlIHN0ZXAuIFRoZSBpbXBsaWNhdGlvbnM/IE5vIHN1Y2Nlc3NmdWwgcHJvYmUgbWVhbnMgdGhlIGVudGlyZSBXTUkgbGF5ZXIgd29uJiMzOTt0IGluaXRpYWxpemUuIEFuZCB0aGF0LCBpbiB0dXJuLCBraWxscyB0aGUgYWJpbGl0eSB0byByZWNlaXZlIGFuZCBwcm9jZXNzIGFueSBXTUkgZXZlbnRzLgoKSG9sZCBvbiwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIHRoaW5rIHN0cmF0ZWdpY2FsbHkgaGVyZS4gSXMgdGhlcmUgYW55IGZ1enppbmcgaW50ZXJmYWNlIGF2YWlsYWJsZSBmb3IgYXRoMTFrPyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUmIzM5O3MgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0FUSDExS19GVVpaYCB0aGF0IEkgY291bGQgZW5hYmxlLiBUaGF0IG1pZ2h0IGdpdmUgbWUgYSB3YXkgaW4uIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGF2ZW51ZSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDA2OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0FUSDExSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gODAyLjExYXggY2hpcHNldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjEzOmNvbmZpZyBBVEgxMUtfQUhCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMTQtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDExayBBSEIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjE1Olx0ZGVwZW5kcyBvbiBBVEgxMUtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xNi1cdGRlcGVuZHMgb24gUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyMDpjb25maWcgQVRIMTFLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMWsgUENJIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyMjpcdGRlcGVuZHMgb24gQVRIMTFLIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMy1cdHNlbGVjdCBNSElfQlVTXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjMwOmNvbmZpZyBBVEgxMUtfREVCVUdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7UUNBIGF0aDExayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMjpcdGRlcGVuZHMgb24gQVRIMTFLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjM4OmNvbmZpZyBBVEgxMUtfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTM5LVx0Ym9vbCBcJiMzNDtRQ0EgYXRoMTFrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQwOlx0ZGVwZW5kcyBvbiBBVEgxMUsgXHUwMDI2XHUwMDI2IERFQlVHX0ZTIFx1MDAyNlx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDEtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ2OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDthdGgxMWsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDg6XHRkZXBlbmRzIG9uIEFUSDExSyBcdTAwMjZcdTAwMjYgRVZFTlRfVFJBQ0lOR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo1Mjpjb25maWcgQVRIMTFLX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTMtXHRib29sIFwmIzM0O1FDQSBhdGgxMWsgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NTQ6XHRkZXBlbmRzIG9uIEFUSDExS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNTUtXHRkZXBlbmRzIG9uIFJFTEFZXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjYxOmNvbmZpZyBBVEgxMUtfQ0ZSXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjItXHRib29sIFwmIzM0O2F0aDExayBjaGFubmVsIGZyZXF1ZW5jeSByZXNwb25zZSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NjM6XHRkZXBlbmRzIG9uIEFUSDExS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjQtXHRkZXBlbmRzIG9uIFJFTEFZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA3MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipGdXp6aW5nIEludGVyZmFjZXM6IEEgUXVpY2sgU2NhbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLi4uICphdGgxMWsqLiBSaWdodCwgbm8gZGVkaWNhdGVkIGZ1enppbmcgaW50ZXJmYWNlIHRoZXJlIHRoYXQgSSYjMzk7bSBhd2FyZSBvZi4gSG1tLCBhIGNvbW1vbiBpc3N1ZSwgcmVhbGx5LiBUaGUgZGV2ZWxvcG1lbnQgZm9jdXMgYWx3YXlzIHNlZW1zIHRvIGJlIG9uIHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UgZmlyc3QsIGFuZCBmdXp6aW5nIG9mdGVuIGdldHMgdGFja2VkIG9uIGxhdGVyLCBvciBpbXBsZW1lbnRlZCBhcyBhIHZlcnkgc3BlY2lmaWMgaW50ZXJuYWwgcHJvY2VzcyByYXRoZXIgdGhhbiBhIHJlYWRpbHkgYXZhaWxhYmxlIGludGVyZmFjZS4KClNvLCAqYXRoMTJrKuKApiBhbnkgY2hhbmdlIHRoZXJlPyBJIGhhdmVuJiMzOTt0IGtlcHQgYXMgY2xvc2Ugb2YgYW4gZXllIG9uIHRoYXQgZHJpdmVyLCBzbyBJIG5lZWQgdG8gY2hlY2suIEhhdmUgdGhleSBidWlsdCBpbiBhIG1vcmUgYWNjZXNzaWJsZSBpbnRlcmZhY2UgZm9yIHRoaXMsIG9yIGFyZSB3ZSBzdGlsbCBzdHVjayB3aXRoIHRoZSBtb3JlIGFkLWhvYyBtZXRob2RzPyBOZWVkIHRvIGNoZWNrIHRoZSBjb2RlYmFzZS4uLiBzZWUgaWYgdGhlcmUgYXJlIGhvb2tzLCBjb21tYW5kLWxpbmUgb3B0aW9ucywgb3IgYW55dGhpbmcgaW4gdGhlIGRvY3VtZW50YXRpb24gdGhhdCB3b3VsZCBzdWdnZXN0IGEgZnV6emluZy1mcmllbmRseSBhcHByb2FjaC4gSXQmIzM5O3MgYSBrZXkgcXVlc3Rpb24gd2hlbiBldmFsdWF0aW5nIHRoZSBzZWN1cml0eSBwb3N0dXJlLCBhbmQgdGhlIGFtb3VudCBvZiBlZmZvcnQgcmVxdWlyZWQgdG8gaWRlbnRpZnkgdnVsbmVyYWJpbGl0aWVzLiBXZSYjMzk7cmUgbG9va2luZyBmb3IgdGhhdCBsb3ctaGFuZ2luZyBmcnVpdCwgdGhlIHBvdGVudGlhbCBmb3IgYXV0b21hdGVkIGRpc2NvdmVyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDY6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QVRIMTJLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI6Y29uZmlnIEFUSDEyS1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBXaS1GaSA3IHN1cHBvcnQgKGF0aDEyaylcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgUkVNT1RFUFJPQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTIwLVx0c2VsZWN0IFFDT01fTURUX0xPQURFUlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNTpjb25maWcgQVRIMTJLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjYtXHRib29sIFwmIzM0O2F0aDEyayBkZWJ1Z2dpbmdcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNzpcdGRlcGVuZHMgb24gQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM1OmNvbmZpZyBBVEgxMktfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mzc6XHRkZXBlbmRzIG9uIEFUSDEySyBcdTAwMjZcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo0NDpjb25maWcgQVRIMTJLX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00NS1cdGJvb2wgXCYjMzQ7YXRoMTJrIHRyYWNpbmcgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ2Olx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IEVWRU5UX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTM6Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1NTpcdGRlcGVuZHMgb24gQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTYtXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMDY6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE1NAoJCQkJCQkJb3V0cHV0OiA5MQoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIHNjYW4gaW1tZWRpYXRlbHkgaGlnaGxpZ2h0cyBhIHBvdGVudGlhbCBpc3N1ZSBmb3IgZnV6emluZy4gVGhlcmUmIzM5O3Mgbm8gZnV6emluZyBpbnRlcmZhY2UgZGVmaW5lZCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBzZXRzIG9mZiBhbGFybSBiZWxscy4gVGhhdCYjMzk7cyBub3QgYSBnb29kIHNpZ24uIERpZ2dpbmcgZGVlcGVyLCBJIHNlZSB0aGlzIGlzIHJlbGF0ZWQgdG8gZHJpdmVycyBmb3IgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgUENJZSBhbmQgQUhCIGludGVyZmFjZXMuIFRoZXNlIGFyZSB0aGluZ3MgdGhhdCBRRU1VLCBhbmQgY2VydGFpbmx5IGNsb3VkIGVudmlyb25tZW50cyBsaWtlIEdDRSwgZG9uJiMzOTt0IGVtdWxhdGUuCgpUaGVuIEkgZG91YmxlIGNoZWNrIHRoZSBpbnN0cnVjdGlvbnMsIHRoZSBvbmVzIHRoYXQgbWF0dGVyIHRoZSBtb3N0LiBBbmQgeWVhaCwgaXQgY2xlYXJseSBzdGF0ZXMgdGhhdCBwYXRjaGVzIHNob3VsZG4mIzM5O3QgYmUgZnV6emVkIGlmIHRoZXkgZGVhbCB3aXRoIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVXMuIFRoZXkgbGlzdCBhIGZldyBleGFtcGxlcywgYW5kIGxvb2tpbmcgYXQgdGhvc2UgZXhhbXBsZXMgcmVpbmZvcmNlcyB0aGF0IHRoZSBwcm9ibGVtIGlzIHRoYXQgc3RhbmRhcmQgUUVNVSBjYW4mIzM5O3QgaGFuZGxlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSByZXF1aXJlbWVudHMuCgpBaC1oYSEgVGhlIHRleHQgbmFpbHMgaXQgZG93bjogYXRoMTFrIGFuZCBhdGgxMmsgYXJlIGV4cGxpY2l0bHkgV2ktRmkgZHJpdmVycywgYnV0IHRoZXkgYXJlIGFsc28gdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIGRyaXZlcnMsIGFuZCBhcyBzdWNoLCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlLiBTbywgYmFzZWQgb24gdGhlIGluc3RydWN0aW9ucywgYW5kIG15IG93biBleHBlcmllbmNlIHdpdGggdmlydHVhbGl6YXRpb24gYW5kIFFFTVUsIGl0JiMzOTtzIGNsZWFyOiB0aGlzIHBhdGNoIGlzICoqbm90Kiogd29ydGggZnV6emluZy4gVGhlIHRhcmdldCBjb2RlIHBhdGhzIGFyZSBpbmFjY2Vzc2libGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGltZSB0byBtb3ZlIG9uIHRvIHNvbWV0aGluZyBtb3JlIGZydWl0ZnVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAwNjowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGF0aDExayBhbmQgYXRoMTJrLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIFdpLUZpIGRyaXZlcnMgZm9yIFF1YWxjb21tIGhhcmR3YXJlLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhdGgxMWsgYW5kIGF0aDEyaywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA2OjAwOjE3LjgzOTMxMzY3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0MzE0MTEwODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGF0aDExayBhbmQgYXRoMTJrLCB3aGljaCBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUvQUhCIFdpLUZpIGRyaXZlcnMgZm9yIFF1YWxjb21tIGhhcmR3YXJlLiBUaGVzZSBkcml2ZXJzIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNjowMDoxNy44MzkzMTg0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4MzM0MDY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjBjY2JhN2EyMmU0NmM5Nzg2MWIxZGNkYzM4N2E1ZGNlOTg3MWU5YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEp1bCAyNSAwNjowMDoxNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuY1xcbmluZGV4IDRjYmQ3MjkzODQ1YTI0Li5kNmZlYWE3MTBmZTI1OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuY1xcbkBAIC0xNTksNiArMTU5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bWlfdGx2X3BvbGljeSB3bWlfdGx2X3BvbGljaWVzW10gPSB7XFxuIFxcdFxcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBhdGgxMWtfd21pX3AycF9ub2FfaW5mbykgfSxcXG4gXFx0W1dNSV9UQUdfUDJQX05PQV9FVkVOVF0gPSB7XFxuIFxcdFxcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcDJwX25vYV9ldmVudCkgfSxcXG4rXFx0W1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7XFxuK1xcdFxcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGRldl9jc2Ffc3dpdGNoX2V2KSB9LFxcbiB9O1xcbiBcXG4gI2RlZmluZSBQUklNQVAoX2h3X21vZGVfKSBcXFxcXFxuQEAgLTI2Miw2ICsyNjQsMTMgQEAgY29uc3Qgdm9pZCAqKmF0aDExa193bWlfdGx2X3BhcnNlX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuIFxcdHJldHVybiB0YjtcXG4gfVxcbiBcXG4rc3RhdGljIHUzMiBhdGgxMWtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCB3bWlfdGx2ICp0bHYgPSAoY29uc3Qgc3RydWN0IHdtaV90bHYgKilkYXRhIC0gMTtcXG4rXFxuK1xcdHJldHVybiBGSUVMRF9HRVQoV01JX1RMVl9MRU4sIHRsdi1cXHUwMDNlaGVhZGVyKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBhdGgxMWtfd21pX2NtZF9zZW5kX25vd2FpdChzdHJ1Y3QgYXRoMTFrX3BkZXZfd21pICp3bWksIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHUzMiBjbWRfaWQpXFxuIHtcXG5AQCAtODM1OSwxNSArODM2OCwyMyBAQCBhdGgxMWtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLFxcbiBcXHRcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCB3bWlfcGRldl9jc2Ffc3dpdGNoX2V2ICpldixcXG4gXFx0XFx0XFx0XFx0XFx0ICBjb25zdCB1MzIgKnZkZXZfaWRzKVxcbiB7XFxuLVxcdGludCBpO1xcbitcXHR1MzIgdmRldl9pZHNfbGVuID0gYXRoMTFrX3dtaV90bHZfZGF0YV9sZW4odmRldl9pZHMpO1xcbitcXHR1MzIgbnVtX3ZkZXZzID0gZXYtXFx1MDAzZW51bV92ZGV2cztcXG4gXFx0c3RydWN0IGF0aDExa192aWYgKmFydmlmO1xcbitcXHRpbnQgaTtcXG4gXFxuIFxcdC8qIEZpbmlzaCBDU0Egb25jZSB0aGUgc3dpdGNoIGNvdW50IGJlY29tZXMgTlVMTCAqL1xcbiBcXHRpZiAoZXYtXFx1MDAzZWN1cnJlbnRfc3dpdGNoX2NvdW50KVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbitcXHRpZiAobnVtX3ZkZXZzIFxcdTAwM2UgdmRldl9pZHNfbGVuIC8gc2l6ZW9mKCp2ZGV2X2lkcykpIHtcXG4rXFx0XFx0YXRoMTFrX3dhcm4oYWIsIFxcXCJjc2Egc3dpdGNoIGNvdW50IG51bV92ZGV2cyAldSBleGNlZWRzIHRsdiBhcnJheSBsZW5ndGggJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICBudW1fdmRldnMsIHZkZXZfaWRzX2xlbik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZXYtXFx1MDAzZW51bV92ZGV2czsgaSsrKSB7XFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fdmRldnM7IGkrKykge1xcbiBcXHRcXHRhcnZpZiA9IGF0aDExa19tYWNfZ2V0X2FydmlmX2J5X3ZkZXZfaWQoYWIsIHZkZXZfaWRzW2ldKTtcXG4gXFxuIFxcdFxcdGlmICghYXJ2aWYpIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcXG5pbmRleCAyYjcwN2ZmYzFhMjBmZi4uYzI4MzNkMWU5NWQzYjQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmNcXG5AQCAtMjA3LDYgKzIwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX3dtaV90bHZfcG9saWN5IGF0aDEya193bWlfdGx2X3BvbGljaWVzW10gPSB7XFxuIFxcdFxcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGVyX2NoYWluX3Jzc2lfc3RhdF9wYXJhbXMpIH0sXFxuIFxcdFtXTUlfVEFHX09CU1NfQ09MT1JfQ09MTElTSU9OX0VWVF0gPSB7XFxuIFxcdFxcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfb2Jzc19jb2xvcl9jb2xsaXNpb25fZXZlbnQpIH0sXFxuK1xcdFtXTUlfVEFHX1BERVZfQ1NBX1NXSVRDSF9DT1VOVF9TVEFUVVNfRVZFTlRdID0ge1xcbitcXHRcXHQubWluX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2X2NzYV9ldmVudCkgfSxcXG4gfTtcXG4gXFxuIF9fbGUzMiBhdGgxMmtfd21pX3Rsdl9oZHIodTMyIGNtZCwgdTMyIGxlbilcXG5AQCAtMzc0LDYgKzM3NiwxMyBAQCBhdGgxMmtfd21pX3Rsdl9wYXJzZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXHRyZXR1cm4gdGI7XFxuIH1cXG4gXFxuK3N0YXRpYyB1MzIgYXRoMTJrX3dtaV90bHZfZGF0YV9sZW4oY29uc3Qgdm9pZCAqZGF0YSlcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqdGx2ID0gKGNvbnN0IHN0cnVjdCB3bWlfdGx2ICopZGF0YSAtIDE7XFxuK1xcbitcXHRyZXR1cm4gbGUzMl9nZXRfYml0cyh0bHYtXFx1MDAzZWhlYWRlciwgV01JX1RMVl9MRU4pO1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGF0aDEya193bWlfY21kX3NlbmRfbm93YWl0KHN0cnVjdCBhdGgxMmtfd21pX3BkZXYgKndtaSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICAgICAgdTMyIGNtZF9pZClcXG4ge1xcbkBAIC05MDc1LDEyICs5MDg0LDE5IEBAIGF0aDEya193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXFxuIFxcdFxcdFxcdFxcdFxcdCAgY29uc3QgdTMyICp2ZGV2X2lkcylcXG4ge1xcbiBcXHR1MzIgY3VycmVudF9zd2l0Y2hfY291bnQgPSBsZTMyX3RvX2NwdShldi1cXHUwMDNlY3VycmVudF9zd2l0Y2hfY291bnQpO1xcbitcXHR1MzIgdmRldl9pZHNfbGVuID0gYXRoMTJrX3dtaV90bHZfZGF0YV9sZW4odmRldl9pZHMpO1xcbiBcXHR1MzIgbnVtX3ZkZXZzID0gbGUzMl90b19jcHUoZXYtXFx1MDAzZW51bV92ZGV2cyk7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKmNvbmY7XFxuIFxcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xcbiBcXHRzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWY7XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0aWYgKG51bV92ZGV2cyBcXHUwMDNlIHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7XFxuK1xcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiY3NhIHN3aXRjaCBjb3VudCBudW1fdmRldnMgJXUgZXhjZWVkcyB0bHYgYXJyYXkgbGVuZ3RoICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgbnVtX3ZkZXZzLCB2ZGV2X2lkc19sZW4pO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG51bV92ZGV2czsgaSsrKSB7XFxuIFxcdFxcdGFydmlmID0gYXRoMTJrX21hY19nZXRfYXJ2aWZfYnlfdmRldl9pZChhYiwgdmRldl9pZHNbaV0pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNjowMDoxOC4yODgzNjM3ODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyODk4MjM1NjExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYXRoMTFrIGFuZCBhdGgxMmssIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gaGFyZHdhcmUuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYwY2NiYTdhMjJlNDZjOTc4NjFiMWRjZGMzODdhNWRjZTk4NzFlOWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAyNSAwNjowMDoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG5pbmRleCA0Y2JkNzI5Mzg0NWEyNC4uZDZmZWFhNzEwZmUyNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jXG5AQCAtMTU5LDYgKzE1OSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd21pX3Rsdl9wb2xpY3kgd21pX3Rsdl9wb2xpY2llc1tdID0ge1xuIFx0XHQubWluX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTFrX3dtaV9wMnBfbm9hX2luZm8pIH0sXG4gXHRbV01JX1RBR19QMlBfTk9BX0VWRU5UXSA9IHtcbiBcdFx0Lm1pbl9sZW4gPSBzaXplb2Yoc3RydWN0IHdtaV9wMnBfbm9hX2V2ZW50KSB9LFxuK1x0W1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7XG4rXHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGRldl9jc2Ffc3dpdGNoX2V2KSB9LFxuIH07XG4gXG4gI2RlZmluZSBQUklNQVAoX2h3X21vZGVfKSBcXFxuQEAgLTI2Miw2ICsyNjQsMTMgQEAgY29uc3Qgdm9pZCAqKmF0aDExa193bWlfdGx2X3BhcnNlX2FsbG9jKHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4gXHRyZXR1cm4gdGI7XG4gfVxuIFxuK3N0YXRpYyB1MzIgYXRoMTFrX3dtaV90bHZfZGF0YV9sZW4oY29uc3Qgdm9pZCAqZGF0YSlcbit7XG4rXHRjb25zdCBzdHJ1Y3Qgd21pX3RsdiAqdGx2ID0gKGNvbnN0IHN0cnVjdCB3bWlfdGx2ICopZGF0YSAtIDE7XG4rXG4rXHRyZXR1cm4gRklFTERfR0VUKFdNSV9UTFZfTEVOLCB0bHYtXHUwMDNlaGVhZGVyKTtcbit9XG4rXG4gc3RhdGljIGludCBhdGgxMWtfd21pX2NtZF9zZW5kX25vd2FpdChzdHJ1Y3QgYXRoMTFrX3BkZXZfd21pICp3bWksIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICAgICB1MzIgY21kX2lkKVxuIHtcbkBAIC04MzU5LDE1ICs4MzY4LDIzIEBAIGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXG4gXHRcdFx0XHRcdCAgY29uc3Qgc3RydWN0IHdtaV9wZGV2X2NzYV9zd2l0Y2hfZXYgKmV2LFxuIFx0XHRcdFx0XHQgIGNvbnN0IHUzMiAqdmRldl9pZHMpXG4ge1xuLVx0aW50IGk7XG4rXHR1MzIgdmRldl9pZHNfbGVuID0gYXRoMTFrX3dtaV90bHZfZGF0YV9sZW4odmRldl9pZHMpO1xuK1x0dTMyIG51bV92ZGV2cyA9IGV2LVx1MDAzZW51bV92ZGV2cztcbiBcdHN0cnVjdCBhdGgxMWtfdmlmICphcnZpZjtcbitcdGludCBpO1xuIFxuIFx0LyogRmluaXNoIENTQSBvbmNlIHRoZSBzd2l0Y2ggY291bnQgYmVjb21lcyBOVUxMICovXG4gXHRpZiAoZXYtXHUwMDNlY3VycmVudF9zd2l0Y2hfY291bnQpXG4gXHRcdHJldHVybjtcbiBcbitcdGlmIChudW1fdmRldnMgXHUwMDNlIHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7XG4rXHRcdGF0aDExa193YXJuKGFiLCBcImNzYSBzd2l0Y2ggY291bnQgbnVtX3ZkZXZzICV1IGV4Y2VlZHMgdGx2IGFycmF5IGxlbmd0aCAldVxcblwiLFxuK1x0XHRcdCAgICBudW1fdmRldnMsIHZkZXZfaWRzX2xlbik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHJjdV9yZWFkX2xvY2soKTtcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGV2LVx1MDAzZW51bV92ZGV2czsgaSsrKSB7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmRldnM7IGkrKykge1xuIFx0XHRhcnZpZiA9IGF0aDExa19tYWNfZ2V0X2FydmlmX2J5X3ZkZXZfaWQoYWIsIHZkZXZfaWRzW2ldKTtcbiBcbiBcdFx0aWYgKCFhcnZpZikge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5pbmRleCAyYjcwN2ZmYzFhMjBmZi4uYzI4MzNkMWU5NWQzYjQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jXG5AQCAtMjA3LDYgKzIwNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX3dtaV90bHZfcG9saWN5IGF0aDEya193bWlfdGx2X3BvbGljaWVzW10gPSB7XG4gXHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfcGVyX2NoYWluX3Jzc2lfc3RhdF9wYXJhbXMpIH0sXG4gXHRbV01JX1RBR19PQlNTX0NPTE9SX0NPTExJU0lPTl9FVlRdID0ge1xuIFx0XHQubWluX2xlbiA9IHNpemVvZihzdHJ1Y3Qgd21pX29ic3NfY29sb3JfY29sbGlzaW9uX2V2ZW50KSB9LFxuK1x0W1dNSV9UQUdfUERFVl9DU0FfU1dJVENIX0NPVU5UX1NUQVRVU19FVkVOVF0gPSB7XG4rXHRcdC5taW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBhdGgxMmtfd21pX3BkZXZfY3NhX2V2ZW50KSB9LFxuIH07XG4gXG4gX19sZTMyIGF0aDEya193bWlfdGx2X2hkcih1MzIgY21kLCB1MzIgbGVuKVxuQEAgLTM3NCw2ICszNzYsMTMgQEAgYXRoMTJrX3dtaV90bHZfcGFyc2Uoc3RydWN0IGF0aDEya19iYXNlICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdHJldHVybiB0YjtcbiB9XG4gXG4rc3RhdGljIHUzMiBhdGgxMmtfd21pX3Rsdl9kYXRhX2xlbihjb25zdCB2b2lkICpkYXRhKVxuK3tcbitcdGNvbnN0IHN0cnVjdCB3bWlfdGx2ICp0bHYgPSAoY29uc3Qgc3RydWN0IHdtaV90bHYgKilkYXRhIC0gMTtcbitcbitcdHJldHVybiBsZTMyX2dldF9iaXRzKHRsdi1cdTAwM2VoZWFkZXIsIFdNSV9UTFZfTEVOKTtcbit9XG4rXG4gc3RhdGljIGludCBhdGgxMmtfd21pX2NtZF9zZW5kX25vd2FpdChzdHJ1Y3QgYXRoMTJrX3dtaV9wZGV2ICp3bWksIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICAgICB1MzIgY21kX2lkKVxuIHtcbkBAIC05MDc1LDEyICs5MDg0LDE5IEBAIGF0aDEya193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsXG4gXHRcdFx0XHRcdCAgY29uc3QgdTMyICp2ZGV2X2lkcylcbiB7XG4gXHR1MzIgY3VycmVudF9zd2l0Y2hfY291bnQgPSBsZTMyX3RvX2NwdShldi1cdTAwM2VjdXJyZW50X3N3aXRjaF9jb3VudCk7XG4rXHR1MzIgdmRldl9pZHNfbGVuID0gYXRoMTJrX3dtaV90bHZfZGF0YV9sZW4odmRldl9pZHMpO1xuIFx0dTMyIG51bV92ZGV2cyA9IGxlMzJfdG9fY3B1KGV2LVx1MDAzZW51bV92ZGV2cyk7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpjb25mO1xuIFx0c3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWY7XG4gXHRzdHJ1Y3QgYXRoMTJrX3ZpZiAqYWh2aWY7XG4gXHRpbnQgaTtcbiBcbitcdGlmIChudW1fdmRldnMgXHUwMDNlIHZkZXZfaWRzX2xlbiAvIHNpemVvZigqdmRldl9pZHMpKSB7XG4rXHRcdGF0aDEya193YXJuKGFiLCBcImNzYSBzd2l0Y2ggY291bnQgbnVtX3ZkZXZzICV1IGV4Y2VlZHMgdGx2IGFycmF5IGxlbmd0aCAldVxcblwiLFxuK1x0XHRcdCAgICBudW1fdmRldnMsIHZkZXZfaWRzX2xlbik7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV92ZGV2czsgaSsrKSB7XG4gXHRcdGFydmlmID0gYXRoMTJrX21hY19nZXRfYXJ2aWZfYnlfdmRldl9pZChhYiwgdmRldl9pZHNbaV0pO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDY6MDA6MTguMjg4MzY1MDg0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg3NDAwNzg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgVGVzdGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBpdCBsb29rcyBsaWtlIGl0IGFkZHMgY3J1Y2lhbCBib3VuZHMgY2hlY2tpbmcgYW5kIFRMViBwb2xpY3kgZW5mb3JjZW1lbnQgaW4gYGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50YCBhbmQgYGF0aDEya193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50YC4gU3BlY2lmaWNhbGx5LCBpdCBhZGRyZXNzZXMgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyByZWxhdGVkIHRvIGBudW1fdmRldnNgIGFuZCBgdmRldl9pZHNfbGVuYCB3aXRoaW4gdGhlc2UgUXVhbGNvbW0gQXRoZXJvcyA4MDIuMTFheC9iZSBkcml2ZXJzLiBUaGUgZHJpdmVycyBhcmUgYGF0aDExa2AgYW5kIGBhdGgxMmtgLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzIHdpdGggd2lyZWxlc3MgZHJpdmVycywgaXMgaG93IGZlYXNpYmxlIGl0IGlzIHRvIGFjdHVhbGx5ICp0ZXN0KiB0aGlzIGVmZmVjdGl2ZWx5LlxuXG5UaGUgb2J2aW91cyBxdWVzdGlvbjogY2FuIEkgcmVhbGlzdGljYWxseSB0ZXN0IHRoaXMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBXaXJlbGVzcyBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSBoYXJkd2FyZS1kZXBlbmRlbnQsIG9mdGVuIHJlcXVpcmluZyBzcGVjaWZpYyBwaHlzaWNhbCBpbnRlcmZhY2VzIGxpa2UgUENJZSBvciBBSEIuIEkgbmVlZCB0byBrbm93IGlmIHRoZXNlIGFyZSB0ZXN0YWJsZS5cblxuSSBxdWlja2x5IHJlbWVtYmVyIHRoYXQgYG1hYzgwMjExX2h3c2ltYCBpcyBhIHRoaW5nIGJ1dCByZWFsaXplIGl0J3MgYSBzZXBhcmF0ZSBkcml2ZXIsIG5vdCBhIHNpbXVsYXRpb24gZm9yIGF0aDExayBvciBhdGgxMmsuIFRoZSBjb3JlIGRyaXZlcnMgYXJlIGRlc2lnbmVkIGZvciAqcmVhbCogaGFyZHdhcmUuIE9rYXksIHNvIGhhcmR3YXJlLWxlc3MgZnV6emluZyBpcyBwcm9iYWJseSBhIG5vLWdvLiBTeXprYWxsZXIgc29tZXRpbWVzIG1hbmFnZXMgdG8gZnV6eiB3aXJlbGVzcyBkcml2ZXJzLCBidXQgdGhhdCdzIHVzdWFsbHkgdGhyb3VnaCBVU0Igb3IgUENJIGVtdWxhdGlvbiBpZiB0aGUgZHJpdmVyIHN1cHBvcnRzIGl0LiBTaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggUENJL0FIQiBkcml2ZXJzLCB3aGljaCBpcyBub3QgcmVhbGx5IHdoYXQgd2UndmUgZ290LiBTeXprYWxsZXIncyBQQ0kgZnV6emluZyBzdXBwb3J0IGlzLCBmcm9tIHdoYXQgSSBrbm93LCBxdWl0ZSBsaW1pdGVkLlxuXG5UaGUgcmVhbCBjaGFsbGVuZ2UgaXMgaGl0dGluZyB0aGUgYGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50YCBmdW5jdGlvbiBpbiB0aGUgZmlyc3QgcGxhY2UsIGFic2VudCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUuIFRoZXNlIGRyaXZlcnMgYXJlIGRlc2lnbmVkIHRvIHJlY2VpdmUgV01JIGV2ZW50cyBmcm9tIHRoZSBmaXJtd2FyZSwgdHlwaWNhbGx5IHRyYW5zbWl0dGVkIG92ZXIgSFRDL0NFIChDb3B5IEVuZ2luZSkuIFdpdGhvdXQgYSBmaXJtd2FyZSB0byBwcm92aWRlIHRoZSBldmVudHMsIGlzIHRoZSBkcml2ZXIgZXZlbiBnb2luZyB0byBiZSB0cmlnZ2VyZWQ/IEdlbmVyYWxseSwgbm8uIFdpdGhvdXQgYSBzcGVjaWZpYyBmdXp6aW5nIGhhcm5lc3Mgb3IsIGluIHRoZSByYXJlIGNhc2UsIFVTQiBkcml2ZXIgY29tcGF0aWJpbGl0eSwgcmVhY2hpbmcgdGhlc2UgZnVuY3Rpb25zIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCBpcyBnb2luZyB0byBiZSBpbXBvc3NpYmxlLlxuXG5TbywgSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJ3MgYW55IHBhdGh3YXkgdG8gaW5qZWN0IFdNSSBldmVudHMuIEknbGwgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlZSBpZiBgYXRoMTFrX3dtaV9wcm9jZXNzX2NzYV9zd2l0Y2hfY291bnRfZXZlbnRgIGlzIGNhbGxlZCBmcm9tICphbnl3aGVyZSogZWxzZSwgcGVyaGFwcyBzb21lIHNvcnQgb2YgdGVzdCBvciBkZWJ1Z2dpbmcgaW50ZXJmYWNlLiBJZiBub3QsIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW5jcmVkaWJseSBkaWZmaWN1bHQgdG8gdmFsaWRhdGUgd2l0aG91dCBwcm9wZXIgaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTYsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNjowMDoyNy4xNjIzNzQ5MDhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3NzkyOTc2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMWtfd21pX3Byb2Nlc3NfY3NhX3N3aXRjaF9jb3VudF9ldmVudFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jPTgzNjY9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjgzNjc6YXRoMTFrX3dtaV9wcm9jZXNzX2NzYV9zd2l0Y2hfY291bnRfZXZlbnQoc3RydWN0IGF0aDExa19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTgzNjgtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgd21pX3BkZXZfY3NhX3N3aXRjaF9ldiAqZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jPTg0MDM9YXRoMTFrX3dtaV9wZGV2X2NzYV9zd2l0Y2hfY291bnRfc3RhdHVzX2V2ZW50KHN0cnVjdCBhdGgxMWtfYmFzZSAqYWIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTg0MzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYzo4NDMyOlxcdGF0aDExa193bWlfcHJvY2Vzc19jc2Ffc3dpdGNoX2NvdW50X2V2ZW50KGFiLCBldiwgdmRldl9pZHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtODQzMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDY6MDA6MjkuMjQwMzA5OTU5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk5OTQzMzk5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMsIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBDYWxsIFNpdGVzIG9mIGBhdGgxMWtfd21pX3BkZXZfY3NhX3N3aXRjaF9jb3VudF9zdGF0dXNfZXZlbnRgKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGBhdGgxMWtfd21pX3BkZXZfY3NhX3N3aXRjaF9jb3VudF9zdGF0dXNfZXZlbnRgIGZ1bmN0aW9uLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBmaWd1cmUgb3V0ICp3aGVyZSogaXQncyBiZWluZyBpbnZva2VkLiBLbm93aW5nIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyBpcyBjcnVjaWFsIGZvciBncmFzcGluZyBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGZpdHMgaW50byB0aGUgbGFyZ2VyIGFyY2hpdGVjdHVyZSBvZiB0aGUgYXRoMTFrIHdpcmVsZXNzIGRyaXZlci4gSSBuZWVkIHRvIHRyYWNlIGl0cyBjYWxsIHNpdGVzLCBhbmQgZnJvbSB0aGVyZSBJIGNhbiBzdGFydCB0byB1bmRlcnN0YW5kIGl0cyBmdW5jdGlvbiBhbmQgcHVycG9zZS4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDA2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDY6MDA6MzIuMjM5NzQ1NzY4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTE2MjM4NjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTFrX3dtaV9wZGV2X2NzYV9zd2l0Y2hfY291bnRfc3RhdHVzX2V2ZW50XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM9ODQwMj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM6ODQwMzphdGgxMWtfd21pX3BkZXZfY3NhX3N3aXRjaF9jb3VudF9zdGF0dXNfZXZlbnQoc3RydWN0IGF0aDExa19iYXNlICphYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jLTg0MDQtXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmM9ODkxNj1zdGF0aWMgdm9pZCBhdGgxMWtfd21pX3Rsdl9vcF9yeChzdHJ1Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYy05MDAwLVxcdGNhc2UgV01JX1BERVZfQ1NBX1NXSVRDSF9DT1VOVF9TVEFUVVNfRVZFTlRJRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3dtaS5jOjkwMDE6XFx0XFx0YXRoMTFrX3dtaV9wZGV2X2NzYV9zd2l0Y2hfY291bnRfc3RhdHVzX2V2ZW50KGFiLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMtOTAwMi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDY6MDA6MzQuMjMxMzc1Mjc1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU0OTYxNzQyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMWtfd21pX3Rsdl9vcF9yeCBIYW5kbGVyKipcblxuT2theSwgc28gYGF0aDExa193bWlfdGx2X29wX3J4YCBpcyB0aGUgcmVjZWl2ZXIgZm9yIFdNSSBtZXNzYWdlcywgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBpbmNvbWluZyBtZXNzYWdlcyBmcm9tIHRoZSBmaXJtd2FyZS4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuIEl0J3MgdGhlIGNvcmUgb2YgaG93IHRoZSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIFBDSSBhbmQgQUhCIGFyY2hpdGVjdHVyZXMgd2hpY2gsIGlmIEkgcmVjYWxsLCBhcmUgc3VwcG9ydGVkIGJ5IGF0aDExay4gR2l2ZW4gdGhhdCBzdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZG8gYSBncmVhdCBqb2Igb2Ygc2ltdWxhdGluZyBBdGhlcm9zIDgwMi4xMWF4IGhhcmR3YXJlLCBpdCBtZWFucyB0aGUgZHJpdmVyIGlzIHByb2JhYmx5IGdvaW5nIHRvIGZhaWwgdGhlIHByb2JlIHN0ZXAuIFRoZSBpbXBsaWNhdGlvbnM/IE5vIHN1Y2Nlc3NmdWwgcHJvYmUgbWVhbnMgdGhlIGVudGlyZSBXTUkgbGF5ZXIgd29uJ3QgaW5pdGlhbGl6ZS4gQW5kIHRoYXQsIGluIHR1cm4sIGtpbGxzIHRoZSBhYmlsaXR5IHRvIHJlY2VpdmUgYW5kIHByb2Nlc3MgYW55IFdNSSBldmVudHMuXG5cbkhvbGQgb24sIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCB0aGluayBzdHJhdGVnaWNhbGx5IGhlcmUuIElzIHRoZXJlIGFueSBmdXp6aW5nIGludGVyZmFjZSBhdmFpbGFibGUgZm9yIGF0aDExaz8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlJ3MgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0FUSDExS19GVVpaYCB0aGF0IEkgY291bGQgZW5hYmxlLiBUaGF0IG1pZ2h0IGdpdmUgbWUgYSB3YXkgaW4uIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGF2ZW51ZSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTYzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA2OjAwOjM4Ljc4MDk5NDYzNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTczNTY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBVEgxMUtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMUtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gODAyLjExYXggY2hpcHNldCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoxMzpjb25maWcgQVRIMTFLX0FIQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMWsgQUhCIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjE1OlxcdGRlcGVuZHMgb24gQVRIMTFLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE2LVxcdGRlcGVuZHMgb24gUkVNT1RFUFJPQ1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzoyMDpjb25maWcgQVRIMTFLX1BDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMWsgUENJIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjIyOlxcdGRlcGVuZHMgb24gQVRIMTFLIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0yMy1cXHRzZWxlY3QgTUhJX0JVU1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMDpjb25maWcgQVRIMTFLX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIlFDQSBhdGgxMWsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzozMjpcXHRkZXBlbmRzIG9uIEFUSDExS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zMy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctMzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjM4OmNvbmZpZyBBVEgxMUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJRQ0EgYXRoMTFrIGRlYnVnZnMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NDA6XFx0ZGVwZW5kcyBvbiBBVEgxMUsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlMgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00MS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjQ2OmNvbmZpZyBBVEgxMUtfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy00Ny1cXHRib29sIFxcXCJhdGgxMWsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo0ODpcXHRkZXBlbmRzIG9uIEFUSDExSyBcXHUwMDI2XFx1MDAyNiBFVkVOVF9UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTQ5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NTI6Y29uZmlnIEFUSDExS19TUEVDVFJBTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01My1cXHRib29sIFxcXCJRQ0EgYXRoMTFrIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWc6NTQ6XFx0ZGVwZW5kcyBvbiBBVEgxMUtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZy01NS1cXHRkZXBlbmRzIG9uIFJFTEFZXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL0tjb25maWctNjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnOjYxOmNvbmZpZyBBVEgxMUtfQ0ZSXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTYyLVxcdGJvb2wgXFxcImF0aDExayBjaGFubmVsIGZyZXF1ZW5jeSByZXNwb25zZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvS2NvbmZpZzo2MzpcXHRkZXBlbmRzIG9uIEFUSDExS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9LY29uZmlnLTY0LVxcdGRlcGVuZHMgb24gUkVMQVlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMDY6MDA6MzguODM2NzM5MDAzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2NDQwNDkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRnV6emluZyBJbnRlcmZhY2VzOiBBIFF1aWNrIFNjYW4qKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gKmF0aDExayouIFJpZ2h0LCBubyBkZWRpY2F0ZWQgZnV6emluZyBpbnRlcmZhY2UgdGhlcmUgdGhhdCBJJ20gYXdhcmUgb2YuIEhtbSwgYSBjb21tb24gaXNzdWUsIHJlYWxseS4gVGhlIGRldmVsb3BtZW50IGZvY3VzIGFsd2F5cyBzZWVtcyB0byBiZSBvbiBzdGFiaWxpdHkgYW5kIHBlcmZvcm1hbmNlIGZpcnN0LCBhbmQgZnV6emluZyBvZnRlbiBnZXRzIHRhY2tlZCBvbiBsYXRlciwgb3IgaW1wbGVtZW50ZWQgYXMgYSB2ZXJ5IHNwZWNpZmljIGludGVybmFsIHByb2Nlc3MgcmF0aGVyIHRoYW4gYSByZWFkaWx5IGF2YWlsYWJsZSBpbnRlcmZhY2UuXG5cblNvLCAqYXRoMTJrKuKApiBhbnkgY2hhbmdlIHRoZXJlPyBJIGhhdmVuJ3Qga2VwdCBhcyBjbG9zZSBvZiBhbiBleWUgb24gdGhhdCBkcml2ZXIsIHNvIEkgbmVlZCB0byBjaGVjay4gSGF2ZSB0aGV5IGJ1aWx0IGluIGEgbW9yZSBhY2Nlc3NpYmxlIGludGVyZmFjZSBmb3IgdGhpcywgb3IgYXJlIHdlIHN0aWxsIHN0dWNrIHdpdGggdGhlIG1vcmUgYWQtaG9jIG1ldGhvZHM/IE5lZWQgdG8gY2hlY2sgdGhlIGNvZGViYXNlLi4uIHNlZSBpZiB0aGVyZSBhcmUgaG9va3MsIGNvbW1hbmQtbGluZSBvcHRpb25zLCBvciBhbnl0aGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiB0aGF0IHdvdWxkIHN1Z2dlc3QgYSBmdXp6aW5nLWZyaWVuZGx5IGFwcHJvYWNoLiBJdCdzIGEga2V5IHF1ZXN0aW9uIHdoZW4gZXZhbHVhdGluZyB0aGUgc2VjdXJpdHkgcG9zdHVyZSwgYW5kIHRoZSBhbW91bnQgb2YgZWZmb3J0IHJlcXVpcmVkIHRvIGlkZW50aWZ5IHZ1bG5lcmFiaWxpdGllcy4gV2UncmUgbG9va2luZyBmb3IgdGhhdCBsb3ctaGFuZ2luZyBmcnVpdCwgdGhlIHBvdGVudGlhbCBmb3IgYXV0b21hdGVkIGRpc2NvdmVyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzA3MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA2OjAwOjQyLjMwMTE0NjA1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczNDIwNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQVRIMTJLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mjpjb25maWcgQVRIMTJLXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlF1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTc6Y29uZmlnIEFUSDEyS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoxOTpcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBSRU1PVEVQUk9DXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTIwLVxcdHNlbGVjdCBRQ09NX01EVF9MT0FERVJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MjU6Y29uZmlnIEFUSDEyS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNzpcXHRkZXBlbmRzIG9uIEFUSDEyS1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjM1OmNvbmZpZyBBVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNzpcXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDQ6Y29uZmlnIEFUSDEyS19UUkFDSU5HXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQ1LVxcdGJvb2wgXFxcImF0aDEyayB0cmFjaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ2OlxcdGRlcGVuZHMgb24gQVRIMTJLIFxcdTAwMjZcXHUwMDI2IEVWRU5UX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTUyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzo1Mzpjb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU0LVxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NTU6XFx0ZGVwZW5kcyBvbiBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTYtXFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDA2OjAwOjQyLjM1ODQ5NzY3MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTEyMTk4NzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIHNjYW4gaW1tZWRpYXRlbHkgaGlnaGxpZ2h0cyBhIHBvdGVudGlhbCBpc3N1ZSBmb3IgZnV6emluZy4gVGhlcmUncyBubyBmdXp6aW5nIGludGVyZmFjZSBkZWZpbmVkIHNwZWNpZmljYWxseSBmb3IgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IHNldHMgb2ZmIGFsYXJtIGJlbGxzLiBUaGF0J3Mgbm90IGEgZ29vZCBzaWduLiBEaWdnaW5nIGRlZXBlciwgSSBzZWUgdGhpcyBpcyByZWxhdGVkIHRvIGRyaXZlcnMgZm9yIGFjdHVhbCBwaHlzaWNhbCBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IFBDSWUgYW5kIEFIQiBpbnRlcmZhY2VzLiBUaGVzZSBhcmUgdGhpbmdzIHRoYXQgUUVNVSwgYW5kIGNlcnRhaW5seSBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIGRvbid0IGVtdWxhdGUuXG5cblRoZW4gSSBkb3VibGUgY2hlY2sgdGhlIGluc3RydWN0aW9ucywgdGhlIG9uZXMgdGhhdCBtYXR0ZXIgdGhlIG1vc3QuIEFuZCB5ZWFoLCBpdCBjbGVhcmx5IHN0YXRlcyB0aGF0IHBhdGNoZXMgc2hvdWxkbid0IGJlIGZ1enplZCBpZiB0aGV5IGRlYWwgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzLiBUaGV5IGxpc3QgYSBmZXcgZXhhbXBsZXMsIGFuZCBsb29raW5nIGF0IHRob3NlIGV4YW1wbGVzIHJlaW5mb3JjZXMgdGhhdCB0aGUgcHJvYmxlbSBpcyB0aGF0IHN0YW5kYXJkIFFFTVUgY2FuJ3QgaGFuZGxlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSByZXF1aXJlbWVudHMuXG5cbkFoLWhhISBUaGUgdGV4dCBuYWlscyBpdCBkb3duOiBhdGgxMWsgYW5kIGF0aDEyayBhcmUgZXhwbGljaXRseSBXaS1GaSBkcml2ZXJzLCBidXQgdGhleSBhcmUgYWxzbyB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgZHJpdmVycywgYW5kIGFzIHN1Y2gsIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUuIFNvLCBiYXNlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zLCBhbmQgbXkgb3duIGV4cGVyaWVuY2Ugd2l0aCB2aXJ0dWFsaXphdGlvbiBhbmQgUUVNVSwgaXQncyBjbGVhcjogdGhpcyBwYXRjaCBpcyAqKm5vdCoqIHdvcnRoIGZ1enppbmcuIFRoZSB0YXJnZXQgY29kZSBwYXRocyBhcmUgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRpbWUgdG8gbW92ZSBvbiB0byBzb21ldGhpbmcgbW9yZSBmcnVpdGZ1bC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE1NCwiT3V0cHV0VG9rZW5zIjo5MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQwNjowMDo0Ny4yNzA2OTg4MTJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhdGgxMWsgYW5kIGF0aDEyaywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llL0FIQiBXaS1GaSBkcml2ZXJzIGZvciBRdWFsY29tbSBoYXJkd2FyZS4gVGhlc2UgZHJpdmVycyByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYXRoMTFrIGFuZCBhdGgxMmssIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZS9BSEIgV2ktRmkgZHJpdmVycyBmb3IgUXVhbGNvbW0gaGFyZHdhcmUuIFRoZXNlIGRyaXZlcnMgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow566zr[1] Phase: Running StartedAt: 2026-07-25 06:00:59 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow566zr[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-25 06:00:59 +0000 UTC FinishedAt: 2026-07-25 06:01:05 +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,}