Name: series-workflowbhjxb Phase: Failed StartedAt: 2026-07-29 00:10:08 +0000 UTC FinishedAt: 2026-07-29 00:16:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhjxb[0] Phase: Succeeded StartedAt: 2026-07-29 00:10:08 +0000 UTC FinishedAt: 2026-07-29 00:16:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhjxb[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 00:10:08 +0000 UTC FinishedAt: 2026-07-29 00:16:33 +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+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxIERTQSBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgc3dpdGNoZXMgY29ubmVjdGVkIHZpYSBNRElPIG9yIE1NSU8gb24gTWVkaWFUZWsgU29Dcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIGFuZCBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2YmFjYmRlMDA0OWI5YWU5YWJhMTNjOGMxMjY5ZWRkODk0MzVjZWE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDA6MTU6MzggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xuaW5kZXggMTFlYTkyNGE5ZjM1Ny4uNzg0ZGQ1OGE3MTU4OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xuQEAgLTU1LDggJiM0Mzs1NSwxNSBAQCBtdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpXG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0bG8gPSBidXMtXHUwMDNlcmVhZChidXMsIHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyLCByKTtcbi1cdGhpID0gYnVzLVx1MDAzZXJlYWQoYnVzLCBwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYWRkciwgMHgxMCk7XG4mIzQzO1x0cmV0ID0gYnVzLVx1MDAzZXJlYWQoYnVzLCBwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYWRkciwgcik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0bG8gPSByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGJ1cy1cdTAwM2VyZWFkKGJ1cywgcHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWFkZHIsIDB4MTApO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdGhpID0gcmV0O1xuIFxuIFx0KnZhbCA9IChoaSBcdTAwM2NcdTAwM2MgMTYpIHwgKGxvIFx1MDAyNiAweGZmZmYpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggNmM4ZWQwMGVlOWU3Ny4uNTUxMzFiZmQxMWY2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMTkxLDEyICYjNDM7MTkxLDYgQEAgbXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbiBcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG4gfVxuIFxuLXN0YXRpYyB1MzJcbi1fbXQ3NTMwX3VubG9ja2VkX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuLXtcbi1cdHJldHVybiBtdDc1MzBfbWlpX3JlYWQocC1cdTAwM2Vwcml2LCBwLVx1MDAzZXJlZyk7XG4tfVxuLVxuIHN0YXRpYyB1MzJcbiBfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuIHtcbkBAIC0yNDgsMTUgJiM0MzsyNDIsMjAgQEAgbXQ3NTMwX2ZkYl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF9mZGJfY21kIGNtZCwgdTMyICpyc3ApXG4ge1xuIFx0dTMyIHZhbDtcbiBcdGludCByZXQ7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcbiBcdC8qIFNldCB0aGUgY29tbWFuZCBvcGVyYXRpbmcgdXBvbiB0aGUgTUFDIGFkZHJlc3MgZW50cmllcyAqL1xuIFx0dmFsID0gQVRDX0JVU1kgfCBBVENfTUFUKDApIHwgY21kO1xuIFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEMsIHZhbCk7XG4gXG4tXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMF9BVEMpO1xuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBBVENfQlVTWSksIDIwLCAyMDAwMCk7XG4mIzQzO1x0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMwX0FUQywgdmFsLFxuJiM0MztcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgQVRDX0JVU1kpLCAyMCwgMjAwMDApO1xuJiM0MztcdGlmICghcmV0KVxuJiM0MztcdFx0cmV0ID0gcmVnbWFwX3JlYWQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMF9BVEMsIFx1MDAyNnZhbCk7XG4mIzQzO1xuJiM0MztcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG4mIzQzO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtyZXNldCB0aW1lb3V0XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0yNjUsNyAmIzQzOzI2NCw2IEBAIG10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKVxuIFx0LyogQWRkaXRpb25hbCBzYW5pdHkgZm9yIHJlYWQgY29tbWFuZCBpZiB0aGUgc3BlY2lmaWVkXG4gXHQgKiBlbnRyeSBpcyBpbnZhbGlkXG4gXHQgKi9cbi1cdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9BVEMpO1xuIFx0aWYgKChjbWQgPT0gTVQ3NTMwX0ZEQl9SRUFEKSBcdTAwMjZcdTAwMjYgKHZhbCBcdTAwMjYgQVRDX0lOVkFMSUQpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbkBAIC01NDksMTYgJiM0Mzs1NDcsMTMgQEAgc3RhdGljIGludFxuIG10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbiBcdFx0XHRpbnQgcmVnbnVtKVxuIHtcbi1cdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuIFx0dTMyIHJlZywgdmFsO1xuIFx0aW50IHJldDtcbiBcbi1cdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXHUwMDI2cCwgcHJpdiwgTVQ3NTMxX1BIWV9JQUMpO1xuLVxuIFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG4gXG4tXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG4tXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4mIzQzO1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuJiM0MztcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7cG9sbCB0aW1lb3V0XFxuXCYjMzQ7KTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNTY4LDggJiM0Mzs1NjMsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XG4gXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG4gXG4tXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG4tXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4mIzQzO1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuJiM0MztcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7cG9sbCB0aW1lb3V0XFxuXCYjMzQ7KTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNTc5LDggJiM0Mzs1NzQsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCk7XG4gXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG4gXG4tXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG4tXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4mIzQzO1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuJiM0MztcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7cG9sbCB0aW1lb3V0XFxuXCYjMzQ7KTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNTk3LDE2ICYjNDM7NTkyLDEzIEBAIHN0YXRpYyBpbnRcbiBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuIFx0XHRcdCBpbnQgcmVnbnVtLCB1MTYgZGF0YSlcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdHUzMiB2YWwsIHJlZztcbiBcdGludCByZXQ7XG4gXG4tXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTtcbi1cbiBcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbiYjNDM7XHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3BvbGwgdGltZW91dFxcblwmIzM0Oyk7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTYxNiw4ICYjNDM7NjA4LDggQEAgbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbiBcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcbiBcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiYjNDM7XHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsXG4mIzQzO1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtwb2xsIHRpbWVvdXRcXG5cJiMzNDspO1xuIFx0XHRnb3RvIG91dDtcbkBAIC02MjcsOCAmIzQzOzYxOSw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCBkYXRhO1xuIFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbiYjNDM7XHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3BvbGwgdGltZW91dFxcblwmIzM0Oyk7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTY0MywxNiAmIzQzOzYzNSwxMyBAQCBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuIHN0YXRpYyBpbnRcbiBtdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuIHtcbi1cdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuIFx0aW50IHJldDtcbiBcdHUzMiB2YWw7XG4gXG4tXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTtcbi1cbiBcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbiYjNDM7XHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3BvbGwgdGltZW91dFxcblwmIzM0Oyk7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTY2Myw4ICYjNDM7NjUyLDggQEAgbXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbiBcbiBcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHZhbCB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiYjNDM7XHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsXG4mIzQzO1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtwb2xsIHRpbWVvdXRcXG5cJiMzNDspO1xuIFx0XHRnb3RvIG91dDtcbkBAIC02ODEsMTYgJiM0Mzs2NzAsMTMgQEAgc3RhdGljIGludFxuIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuIFx0XHRcdCB1MTYgZGF0YSlcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdGludCByZXQ7XG4gXHR1MzIgcmVnO1xuIFxuLVx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcdTAwMjZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7XG4tXG4gXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHJlZyxcbi1cdFx0XHRcdCAhKHJlZyBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiYjNDM7XHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCByZWcsXG4mIzQzO1x0XHRcdFx0ICAgICAgICEocmVnIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtwb2xsIHRpbWVvdXRcXG5cJiMzNDspO1xuIFx0XHRnb3RvIG91dDtcbkBAIC03MDEsOCAmIzQzOzY4Nyw4IEBAIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuIFxuIFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgcmVnLFxuLVx0XHRcdFx0ICEocmVnIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHJlZyxcbiYjNDM7XHRcdFx0XHQgICAgICAgIShyZWcgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3BvbGwgdGltZW91dFxcblwmIzM0Oyk7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTE2MjYsMjIgJiM0MzsxNjEyLDI2IEBAIG10NzUzMF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gc3RhdGljIGludFxuIG10NzUzMF92bGFuX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX3ZsYW5fY21kIGNtZCwgdTE2IHZpZClcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdHUzMiB2YWw7XG4gXHRpbnQgcmV0O1xuIFxuIFx0dmFsID0gVlRDUl9CVVNZIHwgVlRDUl9GVU5DKGNtZCkgfCB2aWQ7XG4gXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1ZUQ1IsIHZhbCk7XG4gXG4tXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMF9WVENSKTtcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgVlRDUl9CVVNZKSwgMjAsIDIwMDAwKTtcbiYjNDM7XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzBfVlRDUiwgdmFsLFxuJiM0MztcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgVlRDUl9CVVNZKSwgMjAsIDIwMDAwKTtcbiYjNDM7XHRpZiAoIXJldClcbiYjNDM7XHRcdHJldCA9IHJlZ21hcF9yZWFkKHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzBfVlRDUiwgXHUwMDI2dmFsKTtcbiYjNDM7XG4mIzQzO1x0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbiYjNDM7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3BvbGwgdGltZW91dFxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4tXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVlRDUik7XG4gXHRpZiAodmFsIFx1MDAyNiBWVENSX0lOVkFMSUQpIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7cmVhZCBWVENSIGludmFsaWRcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRFNBIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBzd2l0Y2hlcyBjb25uZWN0ZWQgdmlhIE1ESU8gb3IgTU1JTyBvbiBNZWRpYVRlayBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZiYWNiZGUwMDQ5YjlhZTlhYmExM2M4YzEyNjllZGQ4OTQzNWNlYTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAwMDoxNTozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMKaW5kZXggMTFlYTkyNGE5ZjM1Ny4uNzg0ZGQ1OGE3MTU4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMKQEAgLTU1LDggJiM0Mzs1NSwxNSBAQCBtdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpCiAJaWYgKHJldCAmbHQ7IDApCiAJCXJldHVybiByZXQ7CiAKLQlsbyA9IGJ1cy0mZ3Q7cmVhZChidXMsIHByaXYtJmd0O21kaW9kZXYtJmd0O2FkZHIsIHIpOwotCWhpID0gYnVzLSZndDtyZWFkKGJ1cywgcHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7YWRkciwgMHgxMCk7CiYjNDM7CXJldCA9IGJ1cy0mZ3Q7cmVhZChidXMsIHByaXYtJmd0O21kaW9kZXYtJmd0O2FkZHIsIHIpOwomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CWxvID0gcmV0OwomIzQzOwomIzQzOwlyZXQgPSBidXMtJmd0O3JlYWQoYnVzLCBwcml2LSZndDttZGlvZGV2LSZndDthZGRyLCAweDEwKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwloaSA9IHJldDsKIAogCSp2YWwgPSAoaGkgJmx0OyZsdDsgMTYpIHwgKGxvICZhbXA7IDB4ZmZmZik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwppbmRleCA2YzhlZDAwZWU5ZTc3Li41NTEzMWJmZDExZjZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCkBAIC0xOTEsMTIgJiM0MzsxOTEsNiBAQCBtdDc1MzBfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKQogCW10NzUzMF9tdXRleF91bmxvY2socHJpdik7CiB9CiAKLXN0YXRpYyB1MzIKLV9tdDc1MzBfdW5sb2NrZWRfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnApCi17Ci0JcmV0dXJuIG10NzUzMF9taWlfcmVhZChwLSZndDtwcml2LCBwLSZndDtyZWcpOwotfQotCiBzdGF0aWMgdTMyCiBfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKQogewpAQCAtMjQ4LDE1ICYjNDM7MjQyLDIwIEBAIG10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKQogewogCXUzMiB2YWw7CiAJaW50IHJldDsKLQlzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDsKIAogCS8qIFNldCB0aGUgY29tbWFuZCBvcGVyYXRpbmcgdXBvbiB0aGUgTUFDIGFkZHJlc3MgZW50cmllcyAqLwogCXZhbCA9IEFUQ19CVVNZIHwgQVRDX01BVCgwKSB8IGNtZDsKIAltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQywgdmFsKTsKIAotCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJmFtcDtwLCBwcml2LCBNVDc1MzBfQVRDKTsKLQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF9yZWFkLCAmYW1wO3AsIHZhbCwKLQkJCQkgISh2YWwgJmFtcDsgQVRDX0JVU1kpLCAyMCwgMjAwMDApOwomIzQzOwltdDc1MzBfbXV0ZXhfbG9jayhwcml2KTsKJiM0MzsKJiM0MzsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMwX0FUQywgdmFsLAomIzQzOwkJCQkgICAgICAgISh2YWwgJmFtcDsgQVRDX0JVU1kpLCAyMCwgMjAwMDApOwomIzQzOwlpZiAoIXJldCkKJiM0MzsJCXJldCA9IHJlZ21hcF9yZWFkKHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMwX0FUQywgJmFtcDt2YWwpOwomIzQzOwomIzQzOwltdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpOwomIzQzOwogCWlmIChyZXQgJmx0OyAwKSB7CiAJCWRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O3Jlc2V0IHRpbWVvdXRcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKQEAgLTI2NSw3ICYjNDM7MjY0LDYgQEAgbXQ3NTMwX2ZkYl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF9mZGJfY21kIGNtZCwgdTMyICpyc3ApCiAJLyogQWRkaXRpb25hbCBzYW5pdHkgZm9yIHJlYWQgY29tbWFuZCBpZiB0aGUgc3BlY2lmaWVkCiAJICogZW50cnkgaXMgaW52YWxpZAogCSAqLwotCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9BVEMpOwogCWlmICgoY21kID09IE1UNzUzMF9GREJfUkVBRCkgJmFtcDsmYW1wOyAodmFsICZhbXA7IEFUQ19JTlZBTElEKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTU0OSwxNiAmIzQzOzU0NywxMyBAQCBzdGF0aWMgaW50CiBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsCiAJCQlpbnQgcmVnbnVtKQogewotCXN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwOwogCXUzMiByZWcsIHZhbDsKIAlpbnQgcmV0OwogCi0JSU5JVF9NVDc1MzBfRFVNTVlfUE9MTCgmYW1wO3AsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTsKLQogCW10NzUzMF9tdXRleF9sb2NrKHByaXYpOwogCi0JcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgJmFtcDtwLCB2YWwsCi0JCQkJICEodmFsICZhbXA7IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7CiYjNDM7CXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LSZndDtyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsCiYjNDM7CQkJCSAgICAgICAhKHZhbCAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwogCWlmIChyZXQgJmx0OyAwKSB7CiAJCWRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O3BvbGwgdGltZW91dFxuJiMzNDspOwogCQlnb3RvIG91dDsKQEAgLTU2OCw4ICYjNDM7NTYzLDggQEAgbXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLAogCSAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTsKIAltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7CiAKLQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAmYW1wO3AsIHZhbCwKLQkJCQkgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKJiM0MzsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCwKJiM0MzsJCQkJICAgICAgICEodmFsICZhbXA7IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7cG9sbCB0aW1lb3V0XG4mIzM0Oyk7CiAJCWdvdG8gb3V0OwpAQCAtNTc5LDggJiM0Mzs1NzQsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsCiAJICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpOwogCW10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTsKIAotCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZhbXA7cCwgdmFsLAotCQkJCSAhKHZhbCAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwomIzQzOwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7cmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLAomIzQzOwkJCQkgICAgICAgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJZ290byBvdXQ7CkBAIC01OTcsMTYgJiM0Mzs1OTIsMTMgQEAgc3RhdGljIGludAogbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCwKIAkJCSBpbnQgcmVnbnVtLCB1MTYgZGF0YSkKIHsKLQlzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDsKIAl1MzIgdmFsLCByZWc7CiAJaW50IHJldDsKIAotCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJmFtcDtwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7Ci0KIAltdDc1MzBfbXV0ZXhfbG9jayhwcml2KTsKIAotCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZhbXA7cCwgdmFsLAotCQkJCSAhKHZhbCAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwomIzQzOwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7cmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLAomIzQzOwkJCQkgICAgICAgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJZ290byBvdXQ7CkBAIC02MTYsOCAmIzQzOzYwOCw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsCiAJICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtOwogCW10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTsKIAotCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZhbXA7cCwgdmFsLAotCQkJCSAhKHZhbCAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwomIzQzOwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7cmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLAomIzQzOwkJCQkgICAgICAgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJZ290byBvdXQ7CkBAIC02MjcsOCAmIzQzOzYxOSw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsCiAJICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgZGF0YTsKIAltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7CiAKLQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAmYW1wO3AsIHZhbCwKLQkJCQkgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKJiM0MzsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCwKJiM0MzsJCQkJICAgICAgICEodmFsICZhbXA7IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7cG9sbCB0aW1lb3V0XG4mIzM0Oyk7CiAJCWdvdG8gb3V0OwpAQCAtNjQzLDE2ICYjNDM7NjM1LDEzIEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsCiBzdGF0aWMgaW50CiBtdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKQogewotCXN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwOwogCWludCByZXQ7CiAJdTMyIHZhbDsKIAotCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJmFtcDtwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7Ci0KIAltdDc1MzBfbXV0ZXhfbG9jayhwcml2KTsKIAotCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZhbXA7cCwgdmFsLAotCQkJCSAhKHZhbCAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwomIzQzOwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7cmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLAomIzQzOwkJCQkgICAgICAgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJZ290byBvdXQ7CkBAIC02NjMsOCAmIzQzOzY1Miw4IEBAIG10NzUzMV9pbmRfYzIyX3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pCiAKIAltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCB2YWwgfCBNVDc1MzFfUEhZX0FDU19TVCk7CiAKLQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAmYW1wO3AsIHZhbCwKLQkJCQkgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKJiM0MzsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCwKJiM0MzsJCQkJICAgICAgICEodmFsICZhbXA7IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7cG9sbCB0aW1lb3V0XG4mIzM0Oyk7CiAJCWdvdG8gb3V0OwpAQCAtNjgxLDE2ICYjNDM7NjcwLDEzIEBAIHN0YXRpYyBpbnQKIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLAogCQkJIHUxNiBkYXRhKQogewotCXN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwOwogCWludCByZXQ7CiAJdTMyIHJlZzsKIAotCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJmFtcDtwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7Ci0KIAltdDc1MzBfbXV0ZXhfbG9jayhwcml2KTsKIAotCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZhbXA7cCwgcmVnLAotCQkJCSAhKHJlZyAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwomIzQzOwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7cmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgcmVnLAomIzQzOwkJCQkgICAgICAgIShyZWcgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJZ290byBvdXQ7CkBAIC03MDEsOCAmIzQzOzY4Nyw4IEBAIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLAogCiAJbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpOwogCi0JcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgJmFtcDtwLCByZWcsCi0JCQkJICEocmVnICZhbXA7IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7CiYjNDM7CXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LSZndDtyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCByZWcsCiYjNDM7CQkJCSAgICAgICAhKHJlZyAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwogCWlmIChyZXQgJmx0OyAwKSB7CiAJCWRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O3BvbGwgdGltZW91dFxuJiMzNDspOwogCQlnb3RvIG91dDsKQEAgLTE2MjYsMjIgJiM0MzsxNjEyLDI2IEBAIG10NzUzMF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiBzdGF0aWMgaW50CiBtdDc1MzBfdmxhbl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF92bGFuX2NtZCBjbWQsIHUxNiB2aWQpCiB7Ci0Jc3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7CiAJdTMyIHZhbDsKIAlpbnQgcmV0OwogCiAJdmFsID0gVlRDUl9CVVNZIHwgVlRDUl9GVU5DKGNtZCkgfCB2aWQ7CiAJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9WVENSLCB2YWwpOwogCi0JSU5JVF9NVDc1MzBfRFVNTVlfUE9MTCgmYW1wO3AsIHByaXYsIE1UNzUzMF9WVENSKTsKLQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF9yZWFkLCAmYW1wO3AsIHZhbCwKLQkJCQkgISh2YWwgJmFtcDsgVlRDUl9CVVNZKSwgMjAsIDIwMDAwKTsKJiM0MzsJbXQ3NTMwX211dGV4X2xvY2socHJpdik7CiYjNDM7CiYjNDM7CXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LSZndDtyZWdtYXAsIE1UNzUzMF9WVENSLCB2YWwsCiYjNDM7CQkJCSAgICAgICAhKHZhbCAmYW1wOyBWVENSX0JVU1kpLCAyMCwgMjAwMDApOwomIzQzOwlpZiAoIXJldCkKJiM0MzsJCXJldCA9IHJlZ21hcF9yZWFkKHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMwX1ZUQ1IsICZhbXA7dmFsKTsKJiM0MzsKJiM0MzsJbXQ3NTMwX211dGV4X3VubG9jayhwcml2KTsKJiM0MzsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVlRDUik7CiAJaWYgKHZhbCAmYW1wOyBWVENSX0lOVkFMSUQpIHsKIAkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7cmVhZCBWVENSIGludmFsaWRcbiYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoIGZvciBWaXJ0dWFsaXphdGlvbiBGZWFzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgTVQ3NTMwIERTQSBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXQ3NTMwLW1kaW8uY2AgYW5kIGBtdDc1MzAuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYmVlZmluZyB1cCB0aGUgcmVnaXN0ZXIgYWNjZXNzLCBzd2FwcGluZyBvdXQgYHJlYWR4X3BvbGxfdGltZW91dGAgZm9yIGByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXRgIGFuZCBnZXR0aW5nIG1vcmUgZXhwbGljaXQgd2l0aCB0aGUgbG9ja2luZy4gUGx1cywgdGhlcmUmIzM5O3Mgc29tZSBlcnJvciBoYW5kbGluZyByZWZpbmVtZW50IGluIGBtdDc1MzBfcmVnbWFwX3JlYWRgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnRlc3QqIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gRFNBIGRyaXZlcnMsIGFzIEkga25vdywgYXJlIHVzdWFsbHkgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGhhcmR3YXJlLCBsaWtlIE1lZGlhVGVrJiMzOTtzIE1UNzUzMCBzd2l0Y2guCgpTbywgdGhlIG5leHQgc3RlcCBmb3IgbWUgaXMgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGNhbiBiZSBlbXVsYXRlZCBvciwgYXQgbGVhc3QsIHRyaWdnZXJlZCBzb21laG93IHdpdGhpbiBhIFFFTVUgc2V0dXAuIFNpbmNlIGl04oCZcyBhIERTQSBkcml2ZXIsIGl0JiMzOTtzIGxpa2VseSB0YWxraW5nIHRvIGFuIE1ESU8gb3IgU1BJIGJ1cyBvbiBzb21lIGVtYmVkZGVkIFNvQy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgIGZpbGUgaXRzZWxmLCBhbmQgSSBuZWVkIHRvIGxvb2sgYXQgaXRzIEtjb25maWcuIEtub3dpbmcgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB3aWxsIGhlbHAgdG8gZ2F1Z2UgaWYgdGhlIGRyaXZlciBjYW4gYmUgYnVpbHQgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc29tZSBsZXZlbCBvZiB2aXJ0dWFsaXphdGlvbiBvciBzaW11bGF0ZWQgaW50ZXJhY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgaWYgYW55IHBhcnRzIG9mIHRoaXMgZHJpdmVyIGNhbiBvcGVyYXRlIHN0YW5kLWFsb25lLCBvciByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlIHNldHVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9NVDc1MzAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTQ6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01NSU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNDQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHByZXNlbnRlZCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipEZXBlbmRlbmNpZXMgb2YgYE5FVF9EU0FfTVQ3NTMwYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoaXMgYE5FVF9EU0FfTVQ3NTMwYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gV2hhdCBkb2VzIHRoaXMgdGhpbmcgYWN0dWFsbHkgKm5lZWQqIHRvIGZ1bmN0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIG90aGVyIGNvbXBvbmVudHMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzdWJzeXN0ZW0uIFRoaXMga2luZCBvZiBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIGNydWNpYWwgZm9yIHByb3BlciBjb25maWd1cmF0aW9uIGFuZCBhdm9pZGluZyBmdXR1cmUgYnVpbGQgaGVhZGFjaGVzLiBLbm93aW5nIGl0cyBkZXBlbmRlbmNpZXMgaW5mb3JtcyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0mIzM5O3MgYXJjaGl0ZWN0dXJlIGFuZCBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUgb3IgY29uZmxpY3QuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfRFNBX01UNzUzMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTI5PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDItXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo0Mzpjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTURJTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUwOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUgZm9yIERTQSBOZXR3b3JraW5nIERyaXZlcnMqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnYCBmaWxlLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgMzEsIHdoaWNoIGlzIHdoZXJlIHRoZSBoZWFydCBvZiBtYW55IG5ldHdvcmtpbmcgZHJpdmVycyByZXNpZGUuIFRoaXMgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSAoRFNBKSBuZXR3b3JraW5nIGRldmljZXMgYXJlIGxpa2VseSBkZWZpbmVkLCBhbmQgSSBzdXNwZWN0IHNvbWUgY3J1Y2lhbCB2YXJpYWJsZXMgYXJlIHRoZXJlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5JiMzOTtyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUgS2NvbmZpZyBzeXN0ZW0uIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgZHJpdmVycyBhdmFpbGFibGUgYW5kIHRoZSBjb25maWd1cmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlbS4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgZmlsZSBvZmZlcnMgY2x1ZXMgdG8gZGV2aWNlIGRlcGVuZGVuY2llcyBhbmQgbGltaXRhdGlvbnMsIG9yIGV2ZW4gb3Bwb3J0dW5pdGllcyBmb3Igb3B0aW1pemF0aW9uLCB0aGF0IGFyZSByZWxhdGVkIHRvIHRoZSBMaW51eCBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzE6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBcbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4gIDMzOlx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfTVRLXG4gIDM0Olx0XHRzZWxlY3QgUkVHTUFQX0lSUVxuICAzNTpcdFx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTURJT1xuICAzNjpcdFx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTU1JT1xuICAzNzpcdFx0aGVscFxuICAzODpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0XG4gIDM5Olx0XHQgIHN3aXRjaCBjaGlwcy4gTXVsdGktY2hpcCBtb2R1bGUgTVQ3NTMwIGluIE1UNzYyMUFULCBNVDc2MjFEQVQsXG4gIDQwOlx0XHQgIE1UNzYyMVNUIGFuZCBNVDc2MjNBSSBTb0NzLCBhbmQgYnVpbHQtaW4gc3dpdGNoIGluIE1UNzk4OCBTb0MgYXJlXG4gIDQxOlx0XHQgIHN1cHBvcnRlZCBhcyB3ZWxsLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXG4gIDQ0Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTURJTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4gIDQ1Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXG4gIDQ2Olx0XHRzZWxlY3QgTUVESUFURUtfR0VfUEhZXG4gIDQ3Olx0XHRzZWxlY3QgUENTX01US19MWU5YSVxuICA0ODpcdFx0aGVscFxuICA0OTpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIHN3aXRjaFxuICA1MDpcdFx0ICBjaGlwcyB3aGljaCBhcmUgY29ubmVjdGVkIHZpYSBNRElPLCBhcyB3ZWxsIGFzIG11bHRpLWNoaXBcbiAgNTE6XHRcdCAgbW9kdWxlIE1UNzUzMCB3aGljaCBjYW4gYmUgZm91bmQgaW4gdGhlIE1UNzYyMUFULCBNVDc2MjFEQVQsXG4gIDUyOlx0XHQgIE1UNzYyMVNUIGFuZCBNVDc2MjNBSSBTb0NzLlxuICA1MzpcdFxuICA1NDpcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXG4gIDU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4gIDU2Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXG4gIDU3Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICA1ODpcdFx0aW1wbHkgTUVESUFURUtfR0VfU09DX1BIWVxuICA1OTpcdFx0aGVscFxuICA2MDpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIGJ1aWx0LWluIEV0aGVybmV0IHN3aXRjaCBmb3VuZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyOTQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBTd2l0Y2ggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgdGFyZ2V0aW5nIE1lZGlhVGVrJiMzOTtzIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBjaGlwcy4gUmlnaHQsIHRoZXNlIGFyZSAqcGh5c2ljYWwqIGhhcmR3YXJlIHN3aXRjaGVzLCBub3Qgc29tZSB2aXJ0dWFsIGNvbnN0cnVjdC4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgdGhlIHF1ZXN0aW9uOiBjYW4gSSBlZmZlY3RpdmVseSBmdXp6IHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxlYW4gdG93YXJkcyBjb25zaWRlcmluZyBNRElPIGRldmljZXMuIE5vdywgdHJhZGl0aW9uYWxseSwgeW91IGNhbiBmdXp6IE1ESU8gZGV2aWNlcywgcHJvdmlkZWQgeW91JiMzOTt2ZSBnb3QgTURJTyBidXMgZW11bGF0aW9uIG9yIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IHRoZXNlIGRldmljZXMuCgpCdXQsIGhhbmcgb24uLi4gZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgZ2VuZXJpYyBmb3IgdGhpcz8gRG9lcyBpdCBzdXBwb3J0IGluc3RhbnRpYXRpbmcgYXJiaXRyYXJ5IE1ESU8gZGV2aWNlcywgcGVyaGFwcyBsZXZlcmFnaW5nIGEgZHVtbXkgTURJTyBidXM/IEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgYSBzcGVjaWZpYyBgc3l6X21kaW9fYnVzYCBjYWxsIG9yIHNpbWlsYXIuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgbXkgZmFjdHMgb24gdGhhdC4gTm8sIEkgZG9uJiMzOTt0IGJlbGlldmUgdGhlcmUgaXMsIGF0IGxlYXN0IG5vdCBpbiBhIHdheSB0aGF0IHByb3ZpZGVzIGZ1bGx5IGdlbmVyaWMgZGV2aWNlIGluamVjdGlvbi4KCkFscmlnaHQsIHNvIHRoZSByZWFsIHF1ZXN0aW9uIGJlY29tZXM6IGhvdyBjYW4gSSAqcmVhY2gqIHRoaXMgY29kZSBhbmQgd2hhdCBhcmUgdGhlIGVudHJ5cG9pbnRzIHRvIGF0dGFjaz8gSXQgYXBwZWFycyB0aGlzIGRyaXZlciByZWdpc3RlcnMgYW4gTURJTyBkcml2ZXIuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTI0Nj1zdGF0aWMgdm9pZCBtdDc1MzBfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1ODpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1OS1cdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjY4Om1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDAzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBEZXZpY2UgSW5zdGFudGlhdGlvbiBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpdCByZWdpc3RlcnMgYW4gYG1kaW9fZHJpdmVyYC4gTXkgZmlyc3QgdGhvdWdodCBpczogY2FuIEkgdHJpZ2dlciB0aGlzIHRoaW5nIGZyb20gdXNlcnNwYWNlPyBDYW4gSSwgZm9yIGV4YW1wbGUsIGRpcmVjdGx5IGluc3RhbnRpYXRlIGFuIE1ESU8gZGV2aWNlPyBUaGUgYW5zd2VyLCBhcyBJIGtub3cgaXQsIGlzIGEgZmlybSBuby4gVGhlc2UgdGhpbmdzIGFyZSBhbG1vc3QgYWx3YXlzIGJyb3VnaHQgdG8gbGlmZSB0aHJvdWdoIERldmljZSBUcmVlIG9yIEFDUEkuCgpCdXQgdGhlbi4uLiBhIGxpdHRsZSBmbGlja2VyIG9mIGEgdGhvdWdodC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBzeXprYWxsZXIuIERvZXMgaXQgaGF2ZSBzb21lIGNsZXZlciB3YXkgdG8gaW5qZWN0IERldmljZSBUcmVlIG5vZGVzIG9uIHRoZSBmbHk/IFF1aWNrbHksIEkgc2hvb3QgdGhhdCBkb3duLiBObywgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgdGhhdCBsZXZlbCBvZiBkeW5hbWlzbS4KCldhaXQuLi4gaGFuZyBvbiBhIG1pbnV0ZS4gV2hhdCBhYm91dCBzeXNmcz8gQ2FuIHVzZXJzcGFjZSBtYXliZSB3cmFuZ2xlIGFuIE1ESU8gZGV2aWNlIGludG8gZXhpc3RlbmNlIHRocm91Z2ggc3lzZnM/IE1heWJlIHRoZSBNRElPIGJ1cyBpdHNlbGYgZXhwb3NlcyBzb21ldGhpbmcgbGlrZSBhIGBuZXdfZGV2aWNlYCBlbnRyeT8gTGV0IG1lIGdvIGFuZCBjaGVjayBpZiB0aGUgTURJTyBidXMgc3VwcG9ydHMgbmV3IGRldmljZSB2aWEgc3lzZnMuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGF2ZW51ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXdfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzUzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1ESU8gQnVzIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCBwaHlzaWNhbCBsYXllciBkZXZpY2VzIG92ZXIgdGhlIE1ESU8gYnVzLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IEkgbmVlZCB0byBzZWUgaG93IHRoZSBidXMgaXMgaW5pdGlhbGl6ZWQgYW5kIGhvdyBpdCBoYW5kbGVzIGNvbW11bmljYXRpb24uIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXMuY2AuIFRoYXQgZmlsZSBzZWVtcyBsaWtlIGEgbG9naWNhbCBzdGFydGluZyBwb2ludCB0byBnZXQgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1cyBtYW5hZ2VtZW50IHJvdXRpbmVzLiBJJiMzOTttIGhvcGluZyB0byBmaW5kIHRoZSBjb3JlIGZ1bmN0aW9ucyBmb3IgYnVzIHByb2JpbmcsIGRldmljZSBlbnVtZXJhdGlvbiwgcmVhZC93cml0ZSBvcGVyYXRpb25zLCBhbmQgcG90ZW50aWFsbHkgaW50ZXJydXB0IGhhbmRsaW5nLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyBoZXJlLCBzbyBzZWVpbmcgdGhlIHNvdXJjZSBjb2RlIHNob3VsZCBjbGFyaWZ5IHRoZSBidXMgbWFuYWdlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXdfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTY5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBEZXZpY2UgRHJpdmVyIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgTURJTyBkZXZpY2Ugc2l0dWF0aW9uLiBJdCYjMzk7cyBiZWNvbWluZyBjbGVhciB0aGF0IE1ESU8gZGV2aWNlcyBhcmVuJiMzOTt0IGRpcmVjdGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgYG10NzUzMF9tZGlvX2RyaXZlcmAmIzM5O3MgcHJvYmUgZnVuY3Rpb24gaXMsIGJ5IGRlZmF1bHQsIGdvaW5nIHRvIGJlIGJ5cGFzc2VkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRha2Ugc29tZXRoaW5nIGxpa2UgUUVNVS4gV2l0aG91dCBhIHNwZWNpZmljIERldmljZSBUcmVlIGVudHJ5IHRvIHRyaWdnZXIgdGhlIGRyaXZlciwgdGhhdCBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUuIElmIHRoZSBwcm9iZSBuZXZlciBleGVjdXRlcywgdGhlIGNvZGUgd2l0aGluIGl0IHJlbWFpbnMgdW5yZWFjaGFibGUsIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSBmcm9tIHRoZSBzdGFuZHBvaW50IG9mIFFFTVUuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgdGhlIGBtdDc1MzBfbW1pb19kcml2ZXJgIHN0aWxsIGV4aXN0cywgYW5kIGl0JiMzOTtzIG5vdCB0aGUgc2FtZSB0aGluZy4gSSBuZWVkIHRvIHBpdm90IGFuZCBjb25zaWRlciB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIHRoZSBNTUlPIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9NzU9c3RhdGljIHZvaWQgbXQ3OTg4X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtODYtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo4NzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDc5ODhfcGxhdGZvcm1fZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtODgtXHQucHJvYmUgID0gbXQ3OTg4X3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTk1LX07XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo5Njptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10Nzk4OF9wbGF0Zm9ybV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtOTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDk5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgU3l6a2FsbGVyJiMzOTtzIFBsYXRmb3JtIERldmljZSBJbnN0YW50aWF0aW9uIENhcGFiaWxpdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBzeXprYWxsZXIgaGFuZGxlcyBwbGF0Zm9ybSBkcml2ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHdoZXRoZXIgcGxhdGZvcm0gZGV2aWNlcyBjYW4gYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnMgb3Igc29tZSBvdGhlciB1c2VyLXNwYWNlIGludGVyZmFjZS4gQnV0LCBob2xkIG9uLCBwbGF0Zm9ybSBkZXZpY2VzIHVzdWFsbHkgY29tZSBmcm9tIERldmljZSBUcmVlIChEVCksIEFDUEksIG9yIGFyZSBoYXJkY29kZWQgd2l0aGluIHRoZSBib2FyZCBmaWxlcywgcmlnaHQ/IE5vdywgSSB3YXMgd29uZGVyaW5nLCBkb2VzIHN5emthbGxlciBoYXZlIGEgd2F5IHRvIGluamVjdCB0aGVzZSBwbGF0Zm9ybSBkZXZpY2VzIGF0IGFsbD8KCkkgcXVpY2tseSB3ZW50IHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdC4gRG9lcyBpdCBoYXZlIGEgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCBjYWxsPyBObywgdGhhdCYjMzk7cyBub3QgcmluZ2luZyBhbnkgYmVsbHMuIElzIHRoZXJlIGEgYHN5el9kZXZsaW5rXy4uLmAgZnVuY3Rpb24gdGhhdCBJJiMzOTttIGZvcmdldHRpbmc/IE5vcGUuIEFjdHVhbGx5LCBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhICpnZW5lcmljKiBtZXRob2QgZm9yIGluc3RhbnRpYXRpbmcgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIGl0JiMzOTtzIGEgc3BlY2lmaWMgcHNldWRvLXN5c2NhbGwgb3IgYSBQQ0kvVVNCIGRldmljZS4gVGhlbiBJIHRob3VnaHQgYWJvdXQgdGhlIHNwZWNpZmljcy4KCkFoLCB5ZXMsIG9mIGNvdXJzZSEgU3l6a2FsbGVyIGhhcyBgc3l6X3VzYl9jb25uZWN0YCBmb3IgVVNCIGRldmljZXMsIGBzeXpfcGNpX2Nvbm5lY3RgIGZvciBQQ0kgZGV2aWNlcyAodXNpbmcgdGhlIHZoY2kvcGNpLXRlc3QgZnJhbWV3b3JrKSwgYW5kIGBzeXpfODAyMTFfaW5qZWN0YCBmb3Igd2lmaSwgYW1vbmcgb3RoZXIgdHlwZXMgb2YgZGV2aWNlcy4gQnV0IGFzIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQsIEkgcmVhbGl6ZWQgdGhhdCB0aGVyZSYjMzk7cyBubyBnZW5lcmljIGluamVjdGlvbiBtZWNoYW5pc20gZm9yIHRoaW5ncyBsaWtlIE1ESU8gb3IgcGxhdGZvcm0gZGV2aWNlcyBpbiBnZW5lcmFsLiBJdCBzZWVtcyBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBpcyBhbnkgcGF0aHdheSB0byByZWFjaCB0aGUgZHJpdmVyJiMzOTtzIGBtdDc1MzBfcHJvYmVgIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xNTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTU1Om10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE3MTpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTI1OD1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1OTpcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjAtXHQucmVtb3ZlID0gbXQ3NTMwX3JlbW92ZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz0zMD1tdDc5ODhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQzOlx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQ0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzQ5Nz1pbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNDk4Om10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0OTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTI4LX1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNTI5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9wcm9iZV9jb21tb24pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM1MzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oPTk0MT1zdGF0aWMgaW5saW5lIHZvaWQgSU5JVF9NVDc1MzBfRFVNTVlfUE9MTChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk0Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaDo5NDg6aW50IG10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaC05NDktdm9pZCBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ0NgoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiAyNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgRHJpdmVyIEFuYWx5c2lzKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGRlYWwuIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBtdDc1MzBfcHJvYmVgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgZmxhZ2dlZCBhcyBhbiBNRElPIGRyaXZlciBwcm9iZS4gVGhlbiwgdGhlcmUmIzM5O3MgYG10Nzk4OF9wcm9iZWAgYXMgYSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUuIEZyb20gbXkgdW5kZXJzdGFuZGluZywgYW5kIGdpdmVuIG15IGV4cGVyaWVuY2UsIG5laXRoZXIgTURJTyBub3IgcGxhdGZvcm0gZGV2aWNlcyBjYW4gYmUgZHluYW1pY2FsbHkgc3B1biB1cCBieSBzeXprYWxsZXIuIFRoZSBvbmx5IGV4Y2VwdGlvbnMgYXJlIHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB2aXJ0dWFsIGRyaXZlcnMsIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBgdmttc2AsIGJ1dCB0aGF0IGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgdGhlIGNhc2UgaGVyZS4KClNvLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGRyaXZlciBpcyBqdXN0IHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgc2V0dXAsIGxpa2UgdGhlIGVudmlyb25tZW50cyB3ZSYjMzk7cmUgdXNlZCB0byBzZWVpbmcgaW4gUUVNVSBvciBHQ0UuIEkgd2FudGVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSwgc28gSSBjaGVja2VkIOKAkyBpcyB0aGVyZSBhbnkgUUVNVSBlbXVsYXRpb24gZm9yIHRoZSBNVDc1MzA/IE5vcGUsIGRvZXNuJiMzOTt0IGxvb2sgbGlrZSBpdC4gUUVNVSBtaWdodCB0b3VjaCBvbiBzb21lIE1lZGlhVGVrIGJvYXJkcywgYnV0IHN5emthbGxlciB1c3VhbGx5IHJ1bnMgb24gdGhlIGdlbmVyaWMgYHEzNWAgb3IgYHZpcnRgIHg4Nl82NCBvciBhcm02NCB2aXJ0IGJvYXJkcy4KClRoZXJlZm9yZSwgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBwcmVzZW50LCBhbmQgaXQmIzM5O3Mgbm90IGJlaW5nIGVtdWxhdGVkIG9yIGluamVjdGFibGUuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgTWVkaWFUZWsgc3dpdGNoLCBzcGVjaWZpY2FsbHkgdGhlIE1UNzUzMC9NVDc1MzEuIFNpbmNlIHRoZXJlJiMzOTtzIG5vIHdheSB0byBnZXQgdGhpcyBoYXJkd2FyZSBpbiwgb3IgZXZlbiBlbXVsYXRlIGl0LCB0aGUgY29kZSBwYXRoIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuCgpTbywgSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByYXRpb25hbGUgaXMgc3RyYWlnaHRmb3J3YXJkOiBpdCYjMzk7cyBhIGRyaXZlciBmb3Igc3BlY2lhbGl6ZWQgaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgYWNjZXNzaWJsZSBpbiB0aGVzZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRFNBIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBzd2l0Y2hlcyBjb25uZWN0ZWQgdmlhIE1ESU8gb3IgTU1JTyBvbiBNZWRpYVRlayBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRFNBIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBzd2l0Y2hlcyBjb25uZWN0ZWQgdmlhIE1ESU8gb3IgTU1JTyBvbiBNZWRpYVRlayBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjM5LjkxMTQwNzYyOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5OTYwNTk2NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBEU0Egc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaGVzIGNvbm5lY3RlZCB2aWEgTURJTyBvciBNTUlPIG9uIE1lZGlhVGVrIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSBhbmQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNTozOS45MTE0MTk3NjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwOTE2NDIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZiYWNiZGUwMDQ5YjlhZTlhYmExM2M4YzEyNjllZGQ4OTQzNWNlYThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDA6MTU6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xcbmluZGV4IDExZWE5MjRhOWYzNTcuLjc4NGRkNThhNzE1ODkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xcbkBAIC01NSw4ICs1NSwxNSBAQCBtdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0bG8gPSBidXMtXFx1MDAzZXJlYWQoYnVzLCBwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VhZGRyLCByKTtcXG4tXFx0aGkgPSBidXMtXFx1MDAzZXJlYWQoYnVzLCBwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VhZGRyLCAweDEwKTtcXG4rXFx0cmV0ID0gYnVzLVxcdTAwM2VyZWFkKGJ1cywgcHJpdi1cXHUwMDNlbWRpb2Rldi1cXHUwMDNlYWRkciwgcik7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRsbyA9IHJldDtcXG4rXFxuK1xcdHJldCA9IGJ1cy1cXHUwMDNlcmVhZChidXMsIHByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWFkZHIsIDB4MTApO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0aGkgPSByZXQ7XFxuIFxcbiBcXHQqdmFsID0gKGhpIFxcdTAwM2NcXHUwMDNjIDE2KSB8IChsbyBcXHUwMDI2IDB4ZmZmZik7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcXG5pbmRleCA2YzhlZDAwZWU5ZTc3Li41NTEzMWJmZDExZjZkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbkBAIC0xOTEsMTIgKzE5MSw2IEBAIG10NzUzMF93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuIFxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuIH1cXG4gXFxuLXN0YXRpYyB1MzJcXG4tX210NzUzMF91bmxvY2tlZF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcXG4te1xcbi1cXHRyZXR1cm4gbXQ3NTMwX21paV9yZWFkKHAtXFx1MDAzZXByaXYsIHAtXFx1MDAzZXJlZyk7XFxuLX1cXG4tXFxuIHN0YXRpYyB1MzJcXG4gX210NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcXG4ge1xcbkBAIC0yNDgsMTUgKzI0MiwyMCBAQCBtdDc1MzBfZmRiX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcClcXG4ge1xcbiBcXHR1MzIgdmFsO1xcbiBcXHRpbnQgcmV0O1xcbi1cXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcXG4gXFxuIFxcdC8qIFNldCB0aGUgY29tbWFuZCBvcGVyYXRpbmcgdXBvbiB0aGUgTUFDIGFkZHJlc3MgZW50cmllcyAqL1xcbiBcXHR2YWwgPSBBVENfQlVTWSB8IEFUQ19NQVQoMCkgfCBjbWQ7XFxuIFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRDLCB2YWwpO1xcbiBcXG4tXFx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcXHUwMDI2cCwgcHJpdiwgTVQ3NTMwX0FUQyk7XFxuLVxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcXG4rXFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuK1xcbitcXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlcmVnbWFwLCBNVDc1MzBfQVRDLCB2YWwsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHZhbCBcXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcXG4rXFx0aWYgKCFyZXQpXFxuK1xcdFxcdHJldCA9IHJlZ21hcF9yZWFkKHByaXYtXFx1MDAzZXJlZ21hcCwgTVQ3NTMwX0FUQywgXFx1MDAyNnZhbCk7XFxuK1xcbitcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbitcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJyZXNldCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtMjY1LDcgKzI2NCw2IEBAIG10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKVxcbiBcXHQvKiBBZGRpdGlvbmFsIHNhbml0eSBmb3IgcmVhZCBjb21tYW5kIGlmIHRoZSBzcGVjaWZpZWRcXG4gXFx0ICogZW50cnkgaXMgaW52YWxpZFxcbiBcXHQgKi9cXG4tXFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX0FUQyk7XFxuIFxcdGlmICgoY21kID09IE1UNzUzMF9GREJfUkVBRCkgXFx1MDAyNlxcdTAwMjYgKHZhbCBcXHUwMDI2IEFUQ19JTlZBTElEKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbkBAIC01NDksMTYgKzU0NywxMyBAQCBzdGF0aWMgaW50XFxuIG10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG4gXFx0XFx0XFx0aW50IHJlZ251bSlcXG4ge1xcbi1cXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcXG4gXFx0dTMyIHJlZywgdmFsO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcXHUwMDI2cCwgcHJpdiwgTVQ3NTMxX1BIWV9JQUMpO1xcbi1cXG4gXFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuIFxcbi1cXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbi1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbitcXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxcbitcXHRcXHRcXHRcXHQgICAgICAgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcInBvbGwgdGltZW91dFxcXFxuXFxcIik7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC01NjgsOCArNTYzLDggQEAgbXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbiBcXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XFxuIFxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG4gXFxuLVxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwicG9sbCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuQEAgLTU3OSw4ICs1NzQsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXFxuIFxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKTtcXG4gXFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbiBcXG4tXFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG4tXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4rXFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXFx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJwb2xsIHRpbWVvdXRcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtNTk3LDE2ICs1OTIsMTMgQEAgc3RhdGljIGludFxcbiBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbiBcXHRcXHRcXHQgaW50IHJlZ251bSwgdTE2IGRhdGEpXFxuIHtcXG4tXFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuIFxcdHUzMiB2YWwsIHJlZztcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXFx1MDAyNnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTtcXG4tXFxuIFxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbiBcXG4tXFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG4tXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4rXFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXFx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJwb2xsIHRpbWVvdXRcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtNjE2LDggKzYwOCw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXFxuIFxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcXG4gXFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbiBcXG4tXFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG4tXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4rXFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXFx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJwb2xsIHRpbWVvdXRcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtNjI3LDggKzYxOSw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXFxuIFxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IGRhdGE7XFxuIFxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG4gXFxuLVxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwicG9sbCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuQEAgLTY0MywxNiArNjM1LDEzIEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXFxuIHN0YXRpYyBpbnRcXG4gbXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG4ge1xcbi1cXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcXG4gXFx0aW50IHJldDtcXG4gXFx0dTMyIHZhbDtcXG4gXFxuLVxcdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXFx1MDAyNnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTtcXG4tXFxuIFxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbiBcXG4tXFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG4tXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4rXFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXFx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJwb2xsIHRpbWVvdXRcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtNjYzLDggKzY1Miw4IEBAIG10NzUzMV9pbmRfYzIyX3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXFxuIFxcbiBcXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCB2YWwgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuIFxcbi1cXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbi1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbitcXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxcbitcXHRcXHRcXHRcXHQgICAgICAgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcInBvbGwgdGltZW91dFxcXFxuXFxcIik7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC02ODEsMTYgKzY3MCwxMyBAQCBzdGF0aWMgaW50XFxuIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxcbiBcXHRcXHRcXHQgdTE2IGRhdGEpXFxuIHtcXG4tXFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuIFxcdGludCByZXQ7XFxuIFxcdHUzMiByZWc7XFxuIFxcbi1cXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFxcdTAwMjZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7XFxuLVxcbiBcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG4gXFxuLVxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCByZWcsXFxuLVxcdFxcdFxcdFxcdCAhKHJlZyBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCByZWcsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHJlZyBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwicG9sbCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuQEAgLTcwMSw4ICs2ODcsOCBAQCBtdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcXG4gXFxuIFxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG4gXFxuLVxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCByZWcsXFxuLVxcdFxcdFxcdFxcdCAhKHJlZyBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCByZWcsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHJlZyBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwicG9sbCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuQEAgLTE2MjYsMjIgKzE2MTIsMjYgQEAgbXQ3NTMwX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4gc3RhdGljIGludFxcbiBtdDc1MzBfdmxhbl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF92bGFuX2NtZCBjbWQsIHUxNiB2aWQpXFxuIHtcXG4tXFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuIFxcdHUzMiB2YWw7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHR2YWwgPSBWVENSX0JVU1kgfCBWVENSX0ZVTkMoY21kKSB8IHZpZDtcXG4gXFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9WVENSLCB2YWwpO1xcbiBcXG4tXFx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcXHUwMDI2cCwgcHJpdiwgTVQ3NTMwX1ZUQ1IpO1xcbi1cXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbi1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBWVENSX0JVU1kpLCAyMCwgMjAwMDApO1xcbitcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG4rXFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMF9WVENSLCB2YWwsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHZhbCBcXHUwMDI2IFZUQ1JfQlVTWSksIDIwLCAyMDAwMCk7XFxuK1xcdGlmICghcmV0KVxcbitcXHRcXHRyZXQgPSByZWdtYXBfcmVhZChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMF9WVENSLCBcXHUwMDI2dmFsKTtcXG4rXFxuK1xcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuK1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcInBvbGwgdGltZW91dFxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuLVxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9WVENSKTtcXG4gXFx0aWYgKHZhbCBcXHUwMDI2IFZUQ1JfSU5WQUxJRCkge1xcbiBcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcInJlYWQgVlRDUiBpbnZhbGlkXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjQwLjQyMTQzMzkxMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM5NDUwNTYzMzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBEU0Egc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaGVzIGNvbm5lY3RlZCB2aWEgTURJTyBvciBNTUlPIG9uIE1lZGlhVGVrIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSBhbmQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2YmFjYmRlMDA0OWI5YWU5YWJhMTNjOGMxMjY5ZWRkODk0MzVjZWE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDA6MTU6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jXG5pbmRleCAxMWVhOTI0YTlmMzU3Li43ODRkZDU4YTcxNTg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jXG5AQCAtNTUsOCArNTUsMTUgQEAgbXQ3NTMwX3JlZ21hcF9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCAqdmFsKVxuIFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdGxvID0gYnVzLVx1MDAzZXJlYWQoYnVzLCBwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYWRkciwgcik7XG4tXHRoaSA9IGJ1cy1cdTAwM2VyZWFkKGJ1cywgcHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWFkZHIsIDB4MTApO1xuK1x0cmV0ID0gYnVzLVx1MDAzZXJlYWQoYnVzLCBwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYWRkciwgcik7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gcmV0O1xuK1x0bG8gPSByZXQ7XG4rXG4rXHRyZXQgPSBidXMtXHUwMDNlcmVhZChidXMsIHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyLCAweDEwKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXHRoaSA9IHJldDtcbiBcbiBcdCp2YWwgPSAoaGkgXHUwMDNjXHUwMDNjIDE2KSB8IChsbyBcdTAwMjYgMHhmZmZmKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbmluZGV4IDZjOGVkMDBlZTllNzcuLjU1MTMxYmZkMTFmNmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuQEAgLTE5MSwxMiArMTkxLDYgQEAgbXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbiBcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG4gfVxuIFxuLXN0YXRpYyB1MzJcbi1fbXQ3NTMwX3VubG9ja2VkX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuLXtcbi1cdHJldHVybiBtdDc1MzBfbWlpX3JlYWQocC1cdTAwM2Vwcml2LCBwLVx1MDAzZXJlZyk7XG4tfVxuLVxuIHN0YXRpYyB1MzJcbiBfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuIHtcbkBAIC0yNDgsMTUgKzI0MiwyMCBAQCBtdDc1MzBfZmRiX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcClcbiB7XG4gXHR1MzIgdmFsO1xuIFx0aW50IHJldDtcbi1cdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuIFxuIFx0LyogU2V0IHRoZSBjb21tYW5kIG9wZXJhdGluZyB1cG9uIHRoZSBNQUMgYWRkcmVzcyBlbnRyaWVzICovXG4gXHR2YWwgPSBBVENfQlVTWSB8IEFUQ19NQVQoMCkgfCBjbWQ7XG4gXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQywgdmFsKTtcbiBcbi1cdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXHUwMDI2cCwgcHJpdiwgTVQ3NTMwX0FUQyk7XG4tXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF9yZWFkLCBcdTAwMjZwLCB2YWwsXG4tXHRcdFx0XHQgISh2YWwgXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcbitcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuK1xuK1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzBfQVRDLCB2YWwsXG4rXHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcbitcdGlmICghcmV0KVxuK1x0XHRyZXQgPSByZWdtYXBfcmVhZChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMwX0FUQywgXHUwMDI2dmFsKTtcbitcbitcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG4rXG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwicmVzZXQgdGltZW91dFxcblwiKTtcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0yNjUsNyArMjY0LDYgQEAgbXQ3NTMwX2ZkYl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF9mZGJfY21kIGNtZCwgdTMyICpyc3ApXG4gXHQvKiBBZGRpdGlvbmFsIHNhbml0eSBmb3IgcmVhZCBjb21tYW5kIGlmIHRoZSBzcGVjaWZpZWRcbiBcdCAqIGVudHJ5IGlzIGludmFsaWRcbiBcdCAqL1xuLVx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX0FUQyk7XG4gXHRpZiAoKGNtZCA9PSBNVDc1MzBfRkRCX1JFQUQpIFx1MDAyNlx1MDAyNiAodmFsIFx1MDAyNiBBVENfSU5WQUxJRCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuQEAgLTU0OSwxNiArNTQ3LDEzIEBAIHN0YXRpYyBpbnRcbiBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHRcdFx0aW50IHJlZ251bSlcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdHUzMiByZWcsIHZhbDtcbiBcdGludCByZXQ7XG4gXG4tXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTtcbi1cbiBcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuK1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuK1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcInBvbGwgdGltZW91dFxcblwiKTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNTY4LDggKzU2Myw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbiBcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcbiBcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbitcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbitcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTU3OSw4ICs1NzQsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCk7XG4gXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG4gXG4tXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG4tXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4rXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsXG4rXHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwicG9sbCB0aW1lb3V0XFxuXCIpO1xuIFx0XHRnb3RvIG91dDtcbkBAIC01OTcsMTYgKzU5MiwxMyBAQCBzdGF0aWMgaW50XG4gbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbiBcdFx0XHQgaW50IHJlZ251bSwgdTE2IGRhdGEpXG4ge1xuLVx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG4gXHR1MzIgdmFsLCByZWc7XG4gXHRpbnQgcmV0O1xuIFxuLVx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcdTAwMjZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7XG4tXG4gXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbitcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbitcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTYxNiw4ICs2MDgsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuIFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xuIFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuK1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuK1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcInBvbGwgdGltZW91dFxcblwiKTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNjI3LDggKzYxOSw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCBkYXRhO1xuIFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuK1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuK1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcInBvbGwgdGltZW91dFxcblwiKTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNjQzLDE2ICs2MzUsMTMgQEAgbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbiBzdGF0aWMgaW50XG4gbXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdGludCByZXQ7XG4gXHR1MzIgdmFsO1xuIFxuLVx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcdTAwMjZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7XG4tXG4gXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbitcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbitcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTY2Myw4ICs2NTIsOCBAQCBtdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuIFxuIFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgdmFsIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuK1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuK1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcInBvbGwgdGltZW91dFxcblwiKTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNjgxLDE2ICs2NzAsMTMgQEAgc3RhdGljIGludFxuIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuIFx0XHRcdCB1MTYgZGF0YSlcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdGludCByZXQ7XG4gXHR1MzIgcmVnO1xuIFxuLVx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcdTAwMjZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7XG4tXG4gXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHJlZyxcbi1cdFx0XHRcdCAhKHJlZyBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbitcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHJlZyxcbitcdFx0XHRcdCAgICAgICAhKHJlZyBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTcwMSw4ICs2ODcsOCBAQCBtdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcbiBcbiBcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHJlZyxcbi1cdFx0XHRcdCAhKHJlZyBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbitcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHJlZyxcbitcdFx0XHRcdCAgICAgICAhKHJlZyBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTE2MjYsMjIgKzE2MTIsMjYgQEAgbXQ3NTMwX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBzdGF0aWMgaW50XG4gbXQ3NTMwX3ZsYW5fY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfdmxhbl9jbWQgY21kLCB1MTYgdmlkKVxuIHtcbi1cdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuIFx0dTMyIHZhbDtcbiBcdGludCByZXQ7XG4gXG4gXHR2YWwgPSBWVENSX0JVU1kgfCBWVENSX0ZVTkMoY21kKSB8IHZpZDtcbiBcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfVlRDUiwgdmFsKTtcbiBcbi1cdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXHUwMDI2cCwgcHJpdiwgTVQ3NTMwX1ZUQ1IpO1xuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBWVENSX0JVU1kpLCAyMCwgMjAwMDApO1xuK1x0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG4rXG4rXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMF9WVENSLCB2YWwsXG4rXHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IFZUQ1JfQlVTWSksIDIwLCAyMDAwMCk7XG4rXHRpZiAoIXJldClcbitcdFx0cmV0ID0gcmVnbWFwX3JlYWQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMF9WVENSLCBcdTAwMjZ2YWwpO1xuK1xuK1x0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbitcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4tXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVlRDUik7XG4gXHRpZiAodmFsIFx1MDAyNiBWVENSX0lOVkFMSUQpIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJyZWFkIFZUQ1IgaW52YWxpZFxcblwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNTo0MC40MjE0MzU1MzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzA4Mjk2MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCBmb3IgVmlydHVhbGl6YXRpb24gRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBNVDc1MzAgRFNBIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBtdDc1MzAtbWRpby5jYCBhbmQgYG10NzUzMC5jYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGJlZWZpbmcgdXAgdGhlIHJlZ2lzdGVyIGFjY2Vzcywgc3dhcHBpbmcgb3V0IGByZWFkeF9wb2xsX3RpbWVvdXRgIGZvciBgcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0YCBhbmQgZ2V0dGluZyBtb3JlIGV4cGxpY2l0IHdpdGggdGhlIGxvY2tpbmcuIFBsdXMsIHRoZXJlJ3Mgc29tZSBlcnJvciBoYW5kbGluZyByZWZpbmVtZW50IGluIGBtdDc1MzBfcmVnbWFwX3JlYWRgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnRlc3QqIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gRFNBIGRyaXZlcnMsIGFzIEkga25vdywgYXJlIHVzdWFsbHkgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGhhcmR3YXJlLCBsaWtlIE1lZGlhVGVrJ3MgTVQ3NTMwIHN3aXRjaC5cblxuU28sIHRoZSBuZXh0IHN0ZXAgZm9yIG1lIGlzIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBjYW4gYmUgZW11bGF0ZWQgb3IsIGF0IGxlYXN0LCB0cmlnZ2VyZWQgc29tZWhvdyB3aXRoaW4gYSBRRU1VIHNldHVwLiBTaW5jZSBpdOKAmXMgYSBEU0EgZHJpdmVyLCBpdCdzIGxpa2VseSB0YWxraW5nIHRvIGFuIE1ESU8gb3IgU1BJIGJ1cyBvbiBzb21lIGVtYmVkZGVkIFNvQy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgIGZpbGUgaXRzZWxmLCBhbmQgSSBuZWVkIHRvIGxvb2sgYXQgaXRzIEtjb25maWcuIEtub3dpbmcgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB3aWxsIGhlbHAgdG8gZ2F1Z2UgaWYgdGhlIGRyaXZlciBjYW4gYmUgYnVpbHQgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc29tZSBsZXZlbCBvZiB2aXJ0dWFsaXphdGlvbiBvciBzaW11bGF0ZWQgaW50ZXJhY3Rpb24uIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIGFuZCBpZiBhbnkgcGFydHMgb2YgdGhpcyBkcml2ZXIgY2FuIG9wZXJhdGUgc3RhbmQtYWxvbmUsIG9yIHJlcXVpcmUgc3BlY2lmaWMgaGFyZHdhcmUgc2V0dXBzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjEyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MTU6NDUuNzI5NzM2OTM4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MzA2Mjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfRFNBX01UNzUzMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NVDc1MzBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo0Mzpjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgTURJTyBpbnRlcmZhY2UgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTQ6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01NSU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01NS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MTU6NDUuNzg4MDUwNjM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0MjgzNzU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBwcmVzZW50ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEZXBlbmRlbmNpZXMgb2YgYE5FVF9EU0FfTVQ3NTMwYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBgTkVUX0RTQV9NVDc1MzBgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXaGF0IGRvZXMgdGhpcyB0aGluZyBhY3R1YWxseSAqbmVlZCogdG8gZnVuY3Rpb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gb3RoZXIgY29tcG9uZW50cyB3aXRoaW4gdGhlIGtlcm5lbCdzIG5ldHdvcmsgc3Vic3lzdGVtLiBUaGlzIGtpbmQgb2YgZGVwZW5kZW5jeSBhbmFseXNpcyBpcyBjcnVjaWFsIGZvciBwcm9wZXIgY29uZmlndXJhdGlvbiBhbmQgYXZvaWRpbmcgZnV0dXJlIGJ1aWxkIGhlYWRhY2hlcy4gS25vd2luZyBpdHMgZGVwZW5kZW5jaWVzIGluZm9ybXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlIGFuZCBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUgb3IgY29uZmxpY3QuIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNTo0OC42MzA4OTExNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzMzNzY5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQV9NVDc1MzBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWc9Mjk9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDItXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjQ4LjY4NDIzNjgzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDIyODk4NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIERpdmUgZm9yIERTQSBOZXR3b3JraW5nIERyaXZlcnMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZHNhL0tjb25maWdgIGZpbGUuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBsaW5lIDMxLCB3aGljaCBpcyB3aGVyZSB0aGUgaGVhcnQgb2YgbWFueSBuZXR3b3JraW5nIGRyaXZlcnMgcmVzaWRlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUgKERTQSkgbmV0d29ya2luZyBkZXZpY2VzIGFyZSBsaWtlbHkgZGVmaW5lZCwgYW5kIEkgc3VzcGVjdCBzb21lIGNydWNpYWwgdmFyaWFibGVzIGFyZSB0aGVyZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSdyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUgS2NvbmZpZyBzeXN0ZW0uIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgZHJpdmVycyBhdmFpbGFibGUgYW5kIHRoZSBjb25maWd1cmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlbS4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgZmlsZSBvZmZlcnMgY2x1ZXMgdG8gZGV2aWNlIGRlcGVuZGVuY2llcyBhbmQgbGltaXRhdGlvbnMsIG9yIGV2ZW4gb3Bwb3J0dW5pdGllcyBmb3Igb3B0aW1pemF0aW9uLCB0aGF0IGFyZSByZWxhdGVkIHRvIHRoZSBMaW51eCBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MDgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNTo1MS43ODY1MzE4OThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMTpcXHRjb25maWcgTkVUX0RTQV9NVDc1MzBcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gIDMzOlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19NVEtcXG4gIDM0OlxcdFxcdHNlbGVjdCBSRUdNQVBfSVJRXFxuICAzNTpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXFxuICAzNjpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXFxuICAzNzpcXHRcXHRoZWxwXFxuICAzODpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXRcXG4gIDM5OlxcdFxcdCAgc3dpdGNoIGNoaXBzLiBNdWx0aS1jaGlwIG1vZHVsZSBNVDc1MzAgaW4gTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDQwOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MsIGFuZCBidWlsdC1pbiBzd2l0Y2ggaW4gTVQ3OTg4IFNvQyBhcmVcXG4gIDQxOlxcdFxcdCAgc3VwcG9ydGVkIGFzIHdlbGwuXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDQ2OlxcdFxcdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcXG4gIDQ3OlxcdFxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgc3dpdGNoXFxuICA1MDpcXHRcXHQgIGNoaXBzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIGFzIHdlbGwgYXMgbXVsdGktY2hpcFxcbiAgNTE6XFx0XFx0ICBtb2R1bGUgTVQ3NTMwIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUgTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDUyOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MuXFxuICA1MzpcXHRcXG4gIDU0OlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuICA1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDU2OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDU3OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICA1ODpcXHRcXHRpbXBseSBNRURJQVRFS19HRV9TT0NfUEhZXFxuICA1OTpcXHRcXHRoZWxwXFxuICA2MDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gRXRoZXJuZXQgc3dpdGNoIGZvdW5kXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjUxLjc4NjYyNzYyOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTg5MTU3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBTd2l0Y2ggRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIHRhcmdldGluZyBNZWRpYVRlaydzIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBjaGlwcy4gUmlnaHQsIHRoZXNlIGFyZSAqcGh5c2ljYWwqIGhhcmR3YXJlIHN3aXRjaGVzLCBub3Qgc29tZSB2aXJ0dWFsIGNvbnN0cnVjdC4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgdGhlIHF1ZXN0aW9uOiBjYW4gSSBlZmZlY3RpdmVseSBmdXp6IHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxlYW4gdG93YXJkcyBjb25zaWRlcmluZyBNRElPIGRldmljZXMuIE5vdywgdHJhZGl0aW9uYWxseSwgeW91IGNhbiBmdXp6IE1ESU8gZGV2aWNlcywgcHJvdmlkZWQgeW91J3ZlIGdvdCBNRElPIGJ1cyBlbXVsYXRpb24gb3IgaWYgc3l6a2FsbGVyIGNhbiBpbmplY3QgdGhlc2UgZGV2aWNlcy5cblxuQnV0LCBoYW5nIG9uLi4uIGRvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGdlbmVyaWMgZm9yIHRoaXM/IERvZXMgaXQgc3VwcG9ydCBpbnN0YW50aWF0aW5nIGFyYml0cmFyeSBNRElPIGRldmljZXMsIHBlcmhhcHMgbGV2ZXJhZ2luZyBhIGR1bW15IE1ESU8gYnVzPyBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBzcGVjaWZpYyBgc3l6X21kaW9fYnVzYCBjYWxsIG9yIHNpbWlsYXIuIEknbGwgbmVlZCB0byBjaGVjayBteSBmYWN0cyBvbiB0aGF0LiBObywgSSBkb24ndCBiZWxpZXZlIHRoZXJlIGlzLCBhdCBsZWFzdCBub3QgaW4gYSB3YXkgdGhhdCBwcm92aWRlcyBmdWxseSBnZW5lcmljIGRldmljZSBpbmplY3Rpb24uXG5cbkFscmlnaHQsIHNvIHRoZSByZWFsIHF1ZXN0aW9uIGJlY29tZXM6IGhvdyBjYW4gSSAqcmVhY2gqIHRoaXMgY29kZSBhbmQgd2hhdCBhcmUgdGhlIGVudHJ5cG9pbnRzIHRvIGF0dGFjaz8gSXQgYXBwZWFycyB0aGlzIGRyaXZlciByZWdpc3RlcnMgYW4gTURJTyBkcml2ZXIuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Mjk0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MTU6NTYuMDQ1NTQ2ODc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTg5NzMwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0yNDY9c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTg6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjU5LVxcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjY4Om1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MTU6NTYuMTAxNDU2MzY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzIyMjU0NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTURJTyBEZXZpY2UgSW5zdGFudGlhdGlvbiBDb251bmRydW0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgaXQgcmVnaXN0ZXJzIGFuIGBtZGlvX2RyaXZlcmAuIE15IGZpcnN0IHRob3VnaHQgaXM6IGNhbiBJIHRyaWdnZXIgdGhpcyB0aGluZyBmcm9tIHVzZXJzcGFjZT8gQ2FuIEksIGZvciBleGFtcGxlLCBkaXJlY3RseSBpbnN0YW50aWF0ZSBhbiBNRElPIGRldmljZT8gVGhlIGFuc3dlciwgYXMgSSBrbm93IGl0LCBpcyBhIGZpcm0gbm8uIFRoZXNlIHRoaW5ncyBhcmUgYWxtb3N0IGFsd2F5cyBicm91Z2h0IHRvIGxpZmUgdGhyb3VnaCBEZXZpY2UgVHJlZSBvciBBQ1BJLlxuXG5CdXQgdGhlbi4uLiBhIGxpdHRsZSBmbGlja2VyIG9mIGEgdGhvdWdodC4gSSdtIHRoaW5raW5nIGFib3V0IHN5emthbGxlci4gRG9lcyBpdCBoYXZlIHNvbWUgY2xldmVyIHdheSB0byBpbmplY3QgRGV2aWNlIFRyZWUgbm9kZXMgb24gdGhlIGZseT8gUXVpY2tseSwgSSBzaG9vdCB0aGF0IGRvd24uIE5vLCBzeXprYWxsZXIgZG9lc24ndCBoYXZlIHRoYXQgbGV2ZWwgb2YgZHluYW1pc20uXG5cbldhaXQuLi4gaGFuZyBvbiBhIG1pbnV0ZS4gV2hhdCBhYm91dCBzeXNmcz8gQ2FuIHVzZXJzcGFjZSBtYXliZSB3cmFuZ2xlIGFuIE1ESU8gZGV2aWNlIGludG8gZXhpc3RlbmNlIHRocm91Z2ggc3lzZnM/IE1heWJlIHRoZSBNRElPIGJ1cyBpdHNlbGYgZXhwb3NlcyBzb21ldGhpbmcgbGlrZSBhIGBuZXdfZGV2aWNlYCBlbnRyeT8gTGV0IG1lIGdvIGFuZCBjaGVjayBpZiB0aGUgTURJTyBidXMgc3VwcG9ydHMgbmV3IGRldmljZSB2aWEgc3lzZnMuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGF2ZW51ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAwMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjU5LjczMzY4NjA5OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwNDkyMDEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjU5Ljc4ODc1ODdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3NTM3ODQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE1ESU8gQnVzIERyaXZlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGludGVyYWN0cyB3aXRoIHBoeXNpY2FsIGxheWVyIGRldmljZXMgb3ZlciB0aGUgTURJTyBidXMuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgSSBuZWVkIHRvIHNlZSBob3cgdGhlIGJ1cyBpcyBpbml0aWFsaXplZCBhbmQgaG93IGl0IGhhbmRsZXMgY29tbXVuaWNhdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgLiBUaGF0IGZpbGUgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgdG8gZ2V0IGFuIG92ZXJ2aWV3IG9mIHRoZSBidXMgbWFuYWdlbWVudCByb3V0aW5lcy4gSSdtIGhvcGluZyB0byBmaW5kIHRoZSBjb3JlIGZ1bmN0aW9ucyBmb3IgYnVzIHByb2JpbmcsIGRldmljZSBlbnVtZXJhdGlvbiwgcmVhZC93cml0ZSBvcGVyYXRpb25zLCBhbmQgcG90ZW50aWFsbHkgaW50ZXJydXB0IGhhbmRsaW5nLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyBoZXJlLCBzbyBzZWVpbmcgdGhlIHNvdXJjZSBjb2RlIHNob3VsZCBjbGFyaWZ5IHRoZSBidXMgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM1MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE2OjAyLjY2NDE0MDg4NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1MzA2MDM4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXdfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNjowMi44NTk0NTk5MDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU4NDgyMDA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNRElPIERldmljZSBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgTURJTyBkZXZpY2Ugc2l0dWF0aW9uLiBJdCdzIGJlY29taW5nIGNsZWFyIHRoYXQgTURJTyBkZXZpY2VzIGFyZW4ndCBkaXJlY3RseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGBtdDc1MzBfbWRpb19kcml2ZXJgJ3MgcHJvYmUgZnVuY3Rpb24gaXMsIGJ5IGRlZmF1bHQsIGdvaW5nIHRvIGJlIGJ5cGFzc2VkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRha2Ugc29tZXRoaW5nIGxpa2UgUUVNVS4gV2l0aG91dCBhIHNwZWNpZmljIERldmljZSBUcmVlIGVudHJ5IHRvIHRyaWdnZXIgdGhlIGRyaXZlciwgdGhhdCBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUuIElmIHRoZSBwcm9iZSBuZXZlciBleGVjdXRlcywgdGhlIGNvZGUgd2l0aGluIGl0IHJlbWFpbnMgdW5yZWFjaGFibGUsIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSBmcm9tIHRoZSBzdGFuZHBvaW50IG9mIFFFTVUuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCB0aGUgYG10NzUzMF9tbWlvX2RyaXZlcmAgc3RpbGwgZXhpc3RzLCBhbmQgaXQncyBub3QgdGhlIHNhbWUgdGhpbmcuIEkgbmVlZCB0byBwaXZvdCBhbmQgY29uc2lkZXIgd2hhdCdzIGhhcHBlbmluZyB3aXRoIHRoZSBNTUlPIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU2OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE2OjA2LjQ0NDI4NDcwM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0NDM5MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTc1PXN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtODYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6ODc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTg4X3BsYXRmb3JtX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy04OC1cXHQucHJvYmUgID0gbXQ3OTg4X3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtOTUtfTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo5Njptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10Nzk4OF9wbGF0Zm9ybV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTk3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNjowNi41MDA3NTk4NTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc2ODI4MjA0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFN5emthbGxlcidzIFBsYXRmb3JtIERldmljZSBJbnN0YW50aWF0aW9uIENhcGFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGhhbmRsZXMgcGxhdGZvcm0gZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB3aGV0aGVyIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHN5c2ZzIG9yIHNvbWUgb3RoZXIgdXNlci1zcGFjZSBpbnRlcmZhY2UuIEJ1dCwgaG9sZCBvbiwgcGxhdGZvcm0gZGV2aWNlcyB1c3VhbGx5IGNvbWUgZnJvbSBEZXZpY2UgVHJlZSAoRFQpLCBBQ1BJLCBvciBhcmUgaGFyZGNvZGVkIHdpdGhpbiB0aGUgYm9hcmQgZmlsZXMsIHJpZ2h0PyBOb3csIEkgd2FzIHdvbmRlcmluZywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhIHdheSB0byBpbmplY3QgdGhlc2UgcGxhdGZvcm0gZGV2aWNlcyBhdCBhbGw/XG5cbkkgcXVpY2tseSB3ZW50IHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdC4gRG9lcyBpdCBoYXZlIGEgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCBjYWxsPyBObywgdGhhdCdzIG5vdCByaW5naW5nIGFueSBiZWxscy4gSXMgdGhlcmUgYSBgc3l6X2RldmxpbmtfLi4uYCBmdW5jdGlvbiB0aGF0IEknbSBmb3JnZXR0aW5nPyBOb3BlLiBBY3R1YWxseSwgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhICpnZW5lcmljKiBtZXRob2QgZm9yIGluc3RhbnRpYXRpbmcgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIGl0J3MgYSBzcGVjaWZpYyBwc2V1ZG8tc3lzY2FsbCBvciBhIFBDSS9VU0IgZGV2aWNlLiBUaGVuIEkgdGhvdWdodCBhYm91dCB0aGUgc3BlY2lmaWNzLlxuXG5BaCwgeWVzLCBvZiBjb3Vyc2UhIFN5emthbGxlciBoYXMgYHN5el91c2JfY29ubmVjdGAgZm9yIFVTQiBkZXZpY2VzLCBgc3l6X3BjaV9jb25uZWN0YCBmb3IgUENJIGRldmljZXMgKHVzaW5nIHRoZSB2aGNpL3BjaS10ZXN0IGZyYW1ld29yayksIGFuZCBgc3l6XzgwMjExX2luamVjdGAgZm9yIHdpZmksIGFtb25nIG90aGVyIHR5cGVzIG9mIGRldmljZXMuIEJ1dCBhcyBJJ20gdGhpbmtpbmcgYWJvdXQgaXQsIEkgcmVhbGl6ZWQgdGhhdCB0aGVyZSdzIG5vIGdlbmVyaWMgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhpbmdzIGxpa2UgTURJTyBvciBwbGF0Zm9ybSBkZXZpY2VzIGluIGdlbmVyYWwuIEl0IHNlZW1zIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgdGhlcmUgaXMgYW55IHBhdGh3YXkgdG8gcmVhY2ggdGhlIGRyaXZlcidzIGBtdDc1MzBfcHJvYmVgIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDk5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE2OjEyLjI2OTA0NDk3N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwODk4NjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzBfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE1ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTU1Om10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3MC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNzE6XFx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTI1OD1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTk6XFx0LnByb2JlICA9IG10NzUzMF9wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjAtXFx0LnJlbW92ZSA9IG10NzUzMF9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz0zMD1tdDc5ODhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQzOlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zNDk3PWludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNDk4Om10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTI4LX1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzUyOTpFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcHJvYmVfY29tbW9uKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzUzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaD05NDE9c3RhdGljIGlubGluZSB2b2lkIElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmg6OTQ4OmludCBtdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk0OS12b2lkIG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE2OjE0LjQ3ODA0Njc0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzkzOTA2MzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIERyaXZlciBBbmFseXNpcyoqXG5cbk9rYXksIGhlcmUncyB0aGUgZGVhbC4gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgbXQ3NTMwX3Byb2JlYCBmdW5jdGlvbiwgYW5kIGl0J3MgZmxhZ2dlZCBhcyBhbiBNRElPIGRyaXZlciBwcm9iZS4gVGhlbiwgdGhlcmUncyBgbXQ3OTg4X3Byb2JlYCBhcyBhIHBsYXRmb3JtIGRyaXZlciBwcm9iZS4gRnJvbSBteSB1bmRlcnN0YW5kaW5nLCBhbmQgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgbmVpdGhlciBNRElPIG5vciBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBkeW5hbWljYWxseSBzcHVuIHVwIGJ5IHN5emthbGxlci4gVGhlIG9ubHkgZXhjZXB0aW9ucyBhcmUgd2hlbiB3ZSdyZSBkZWFsaW5nIHdpdGggdmlydHVhbCBkcml2ZXJzLCBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZrbXNgLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgdGhlIGNhc2UgaGVyZS5cblxuU28sIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgZHJpdmVyIGlzIGp1c3QgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cCwgbGlrZSB0aGUgZW52aXJvbm1lbnRzIHdlJ3JlIHVzZWQgdG8gc2VlaW5nIGluIFFFTVUgb3IgR0NFLiBJIHdhbnRlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIHNvIEkgY2hlY2tlZCDigJMgaXMgdGhlcmUgYW55IFFFTVUgZW11bGF0aW9uIGZvciB0aGUgTVQ3NTMwPyBOb3BlLCBkb2Vzbid0IGxvb2sgbGlrZSBpdC4gUUVNVSBtaWdodCB0b3VjaCBvbiBzb21lIE1lZGlhVGVrIGJvYXJkcywgYnV0IHN5emthbGxlciB1c3VhbGx5IHJ1bnMgb24gdGhlIGdlbmVyaWMgYHEzNWAgb3IgYHZpcnRgIHg4Nl82NCBvciBhcm02NCB2aXJ0IGJvYXJkcy5cblxuVGhlcmVmb3JlLCB0aGUgaGFyZHdhcmUgaXNuJ3QgcHJlc2VudCwgYW5kIGl0J3Mgbm90IGJlaW5nIGVtdWxhdGVkIG9yIGluamVjdGFibGUuIEl0IGxvb2tzIGxpa2UgaXQncyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBNZWRpYVRlayBzd2l0Y2gsIHNwZWNpZmljYWxseSB0aGUgTVQ3NTMwL01UNzUzMS4gU2luY2UgdGhlcmUncyBubyB3YXkgdG8gZ2V0IHRoaXMgaGFyZHdhcmUgaW4sIG9yIGV2ZW4gZW11bGF0ZSBpdCwgdGhlIGNvZGUgcGF0aCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLlxuXG5TbywgSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJhdGlvbmFsZSBpcyBzdHJhaWdodGZvcndhcmQ6IGl0J3MgYSBkcml2ZXIgZm9yIHNwZWNpYWxpemVkIGhhcmR3YXJlIHRoYXQncyBub3QgYWNjZXNzaWJsZSBpbiB0aGVzZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDQ2LCJPdXRwdXRUb2tlbnMiOjEwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNjoxOS44NzE5NTg4NzlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBEU0Egc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaGVzIGNvbm5lY3RlZCB2aWEgTURJTyBvciBNTUlPIG9uIE1lZGlhVGVrIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSBhbmQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBEU0Egc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaGVzIGNvbm5lY3RlZCB2aWEgTURJTyBvciBNTUlPIG9uIE1lZGlhVGVrIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSBhbmQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbhjxb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 00:10:08 +0000 UTC FinishedAt: 2026-07-29 00:16:21 +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+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNZWRpYVRlayBNVDc1MzAvTVQ3NTMxIERTQSBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciBpcyBmb3Igc3BlY2lmaWMgaGFyZHdhcmUgc3dpdGNoZXMgY29ubmVjdGVkIHZpYSBNRElPIG9yIE1NSU8gb24gTWVkaWFUZWsgU29Dcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIGFuZCBjYW5ub3QgYmUgZHluYW1pY2FsbHkgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2YmFjYmRlMDA0OWI5YWU5YWJhMTNjOGMxMjY5ZWRkODk0MzVjZWE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDA6MTU6MzggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xuaW5kZXggMTFlYTkyNGE5ZjM1Ny4uNzg0ZGQ1OGE3MTU4OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xuQEAgLTU1LDggJiM0Mzs1NSwxNSBAQCBtdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpXG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0bG8gPSBidXMtXHUwMDNlcmVhZChidXMsIHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyLCByKTtcbi1cdGhpID0gYnVzLVx1MDAzZXJlYWQoYnVzLCBwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYWRkciwgMHgxMCk7XG4mIzQzO1x0cmV0ID0gYnVzLVx1MDAzZXJlYWQoYnVzLCBwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYWRkciwgcik7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0bG8gPSByZXQ7XG4mIzQzO1xuJiM0MztcdHJldCA9IGJ1cy1cdTAwM2VyZWFkKGJ1cywgcHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWFkZHIsIDB4MTApO1xuJiM0MztcdGlmIChyZXQgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdGhpID0gcmV0O1xuIFxuIFx0KnZhbCA9IChoaSBcdTAwM2NcdTAwM2MgMTYpIHwgKGxvIFx1MDAyNiAweGZmZmYpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuaW5kZXggNmM4ZWQwMGVlOWU3Ny4uNTUxMzFiZmQxMWY2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jXG5AQCAtMTkxLDEyICYjNDM7MTkxLDYgQEAgbXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbiBcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG4gfVxuIFxuLXN0YXRpYyB1MzJcbi1fbXQ3NTMwX3VubG9ja2VkX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuLXtcbi1cdHJldHVybiBtdDc1MzBfbWlpX3JlYWQocC1cdTAwM2Vwcml2LCBwLVx1MDAzZXJlZyk7XG4tfVxuLVxuIHN0YXRpYyB1MzJcbiBfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuIHtcbkBAIC0yNDgsMTUgJiM0MzsyNDIsMjAgQEAgbXQ3NTMwX2ZkYl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF9mZGJfY21kIGNtZCwgdTMyICpyc3ApXG4ge1xuIFx0dTMyIHZhbDtcbiBcdGludCByZXQ7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcbiBcdC8qIFNldCB0aGUgY29tbWFuZCBvcGVyYXRpbmcgdXBvbiB0aGUgTUFDIGFkZHJlc3MgZW50cmllcyAqL1xuIFx0dmFsID0gQVRDX0JVU1kgfCBBVENfTUFUKDApIHwgY21kO1xuIFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9BVEMsIHZhbCk7XG4gXG4tXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMF9BVEMpO1xuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBBVENfQlVTWSksIDIwLCAyMDAwMCk7XG4mIzQzO1x0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG4mIzQzO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMwX0FUQywgdmFsLFxuJiM0MztcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgQVRDX0JVU1kpLCAyMCwgMjAwMDApO1xuJiM0MztcdGlmICghcmV0KVxuJiM0MztcdFx0cmV0ID0gcmVnbWFwX3JlYWQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMF9BVEMsIFx1MDAyNnZhbCk7XG4mIzQzO1xuJiM0MztcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG4mIzQzO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtyZXNldCB0aW1lb3V0XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0yNjUsNyAmIzQzOzI2NCw2IEBAIG10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKVxuIFx0LyogQWRkaXRpb25hbCBzYW5pdHkgZm9yIHJlYWQgY29tbWFuZCBpZiB0aGUgc3BlY2lmaWVkXG4gXHQgKiBlbnRyeSBpcyBpbnZhbGlkXG4gXHQgKi9cbi1cdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9BVEMpO1xuIFx0aWYgKChjbWQgPT0gTVQ3NTMwX0ZEQl9SRUFEKSBcdTAwMjZcdTAwMjYgKHZhbCBcdTAwMjYgQVRDX0lOVkFMSUQpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbkBAIC01NDksMTYgJiM0Mzs1NDcsMTMgQEAgc3RhdGljIGludFxuIG10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbiBcdFx0XHRpbnQgcmVnbnVtKVxuIHtcbi1cdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuIFx0dTMyIHJlZywgdmFsO1xuIFx0aW50IHJldDtcbiBcbi1cdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXHUwMDI2cCwgcHJpdiwgTVQ3NTMxX1BIWV9JQUMpO1xuLVxuIFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG4gXG4tXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG4tXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4mIzQzO1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuJiM0MztcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7cG9sbCB0aW1lb3V0XFxuXCYjMzQ7KTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNTY4LDggJiM0Mzs1NjMsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XG4gXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG4gXG4tXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG4tXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4mIzQzO1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuJiM0MztcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7cG9sbCB0aW1lb3V0XFxuXCYjMzQ7KTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNTc5LDggJiM0Mzs1NzQsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCk7XG4gXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG4gXG4tXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG4tXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4mIzQzO1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuJiM0MztcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7cG9sbCB0aW1lb3V0XFxuXCYjMzQ7KTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNTk3LDE2ICYjNDM7NTkyLDEzIEBAIHN0YXRpYyBpbnRcbiBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuIFx0XHRcdCBpbnQgcmVnbnVtLCB1MTYgZGF0YSlcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdHUzMiB2YWwsIHJlZztcbiBcdGludCByZXQ7XG4gXG4tXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTtcbi1cbiBcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbiYjNDM7XHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3BvbGwgdGltZW91dFxcblwmIzM0Oyk7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTYxNiw4ICYjNDM7NjA4LDggQEAgbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbiBcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcbiBcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiYjNDM7XHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsXG4mIzQzO1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtwb2xsIHRpbWVvdXRcXG5cJiMzNDspO1xuIFx0XHRnb3RvIG91dDtcbkBAIC02MjcsOCAmIzQzOzYxOSw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCBkYXRhO1xuIFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbiYjNDM7XHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3BvbGwgdGltZW91dFxcblwmIzM0Oyk7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTY0MywxNiAmIzQzOzYzNSwxMyBAQCBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuIHN0YXRpYyBpbnRcbiBtdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuIHtcbi1cdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuIFx0aW50IHJldDtcbiBcdHUzMiB2YWw7XG4gXG4tXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTtcbi1cbiBcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbiYjNDM7XHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3BvbGwgdGltZW91dFxcblwmIzM0Oyk7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTY2Myw4ICYjNDM7NjUyLDggQEAgbXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbiBcbiBcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHZhbCB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiYjNDM7XHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsXG4mIzQzO1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtwb2xsIHRpbWVvdXRcXG5cJiMzNDspO1xuIFx0XHRnb3RvIG91dDtcbkBAIC02ODEsMTYgJiM0Mzs2NzAsMTMgQEAgc3RhdGljIGludFxuIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuIFx0XHRcdCB1MTYgZGF0YSlcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdGludCByZXQ7XG4gXHR1MzIgcmVnO1xuIFxuLVx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcdTAwMjZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7XG4tXG4gXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHJlZyxcbi1cdFx0XHRcdCAhKHJlZyBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiYjNDM7XHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCByZWcsXG4mIzQzO1x0XHRcdFx0ICAgICAgICEocmVnIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtwb2xsIHRpbWVvdXRcXG5cJiMzNDspO1xuIFx0XHRnb3RvIG91dDtcbkBAIC03MDEsOCAmIzQzOzY4Nyw4IEBAIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuIFxuIFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgcmVnLFxuLVx0XHRcdFx0ICEocmVnIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHJlZyxcbiYjNDM7XHRcdFx0XHQgICAgICAgIShyZWcgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3BvbGwgdGltZW91dFxcblwmIzM0Oyk7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTE2MjYsMjIgJiM0MzsxNjEyLDI2IEBAIG10NzUzMF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4gc3RhdGljIGludFxuIG10NzUzMF92bGFuX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX3ZsYW5fY21kIGNtZCwgdTE2IHZpZClcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdHUzMiB2YWw7XG4gXHRpbnQgcmV0O1xuIFxuIFx0dmFsID0gVlRDUl9CVVNZIHwgVlRDUl9GVU5DKGNtZCkgfCB2aWQ7XG4gXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX1ZUQ1IsIHZhbCk7XG4gXG4tXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMF9WVENSKTtcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgVlRDUl9CVVNZKSwgMjAsIDIwMDAwKTtcbiYjNDM7XHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzBfVlRDUiwgdmFsLFxuJiM0MztcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgVlRDUl9CVVNZKSwgMjAsIDIwMDAwKTtcbiYjNDM7XHRpZiAoIXJldClcbiYjNDM7XHRcdHJldCA9IHJlZ21hcF9yZWFkKHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzBfVlRDUiwgXHUwMDI2dmFsKTtcbiYjNDM7XG4mIzQzO1x0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbiYjNDM7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O3BvbGwgdGltZW91dFxcblwmIzM0Oyk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4tXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVlRDUik7XG4gXHRpZiAodmFsIFx1MDAyNiBWVENSX0lOVkFMSUQpIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7cmVhZCBWVENSIGludmFsaWRcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRFNBIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBzd2l0Y2hlcyBjb25uZWN0ZWQgdmlhIE1ESU8gb3IgTU1JTyBvbiBNZWRpYVRlayBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDZiYWNiZGUwMDQ5YjlhZTlhYmExM2M4YzEyNjllZGQ4OTQzNWNlYTgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAwMDoxNTozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jIGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMKaW5kZXggMTFlYTkyNGE5ZjM1Ny4uNzg0ZGQ1OGE3MTU4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMKQEAgLTU1LDggJiM0Mzs1NSwxNSBAQCBtdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpCiAJaWYgKHJldCAmbHQ7IDApCiAJCXJldHVybiByZXQ7CiAKLQlsbyA9IGJ1cy0mZ3Q7cmVhZChidXMsIHByaXYtJmd0O21kaW9kZXYtJmd0O2FkZHIsIHIpOwotCWhpID0gYnVzLSZndDtyZWFkKGJ1cywgcHJpdi0mZ3Q7bWRpb2Rldi0mZ3Q7YWRkciwgMHgxMCk7CiYjNDM7CXJldCA9IGJ1cy0mZ3Q7cmVhZChidXMsIHByaXYtJmd0O21kaW9kZXYtJmd0O2FkZHIsIHIpOwomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CWxvID0gcmV0OwomIzQzOwomIzQzOwlyZXQgPSBidXMtJmd0O3JlYWQoYnVzLCBwcml2LSZndDttZGlvZGV2LSZndDthZGRyLCAweDEwKTsKJiM0MzsJaWYgKHJldCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwloaSA9IHJldDsKIAogCSp2YWwgPSAoaGkgJmx0OyZsdDsgMTYpIHwgKGxvICZhbXA7IDB4ZmZmZik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwppbmRleCA2YzhlZDAwZWU5ZTc3Li41NTEzMWJmZDExZjZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL210NzUzMC5jCkBAIC0xOTEsMTIgJiM0MzsxOTEsNiBAQCBtdDc1MzBfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKQogCW10NzUzMF9tdXRleF91bmxvY2socHJpdik7CiB9CiAKLXN0YXRpYyB1MzIKLV9tdDc1MzBfdW5sb2NrZWRfcmVhZChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnApCi17Ci0JcmV0dXJuIG10NzUzMF9taWlfcmVhZChwLSZndDtwcml2LCBwLSZndDtyZWcpOwotfQotCiBzdGF0aWMgdTMyCiBfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKQogewpAQCAtMjQ4LDE1ICYjNDM7MjQyLDIwIEBAIG10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKQogewogCXUzMiB2YWw7CiAJaW50IHJldDsKLQlzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDsKIAogCS8qIFNldCB0aGUgY29tbWFuZCBvcGVyYXRpbmcgdXBvbiB0aGUgTUFDIGFkZHJlc3MgZW50cmllcyAqLwogCXZhbCA9IEFUQ19CVVNZIHwgQVRDX01BVCgwKSB8IGNtZDsKIAltdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQywgdmFsKTsKIAotCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJmFtcDtwLCBwcml2LCBNVDc1MzBfQVRDKTsKLQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF9yZWFkLCAmYW1wO3AsIHZhbCwKLQkJCQkgISh2YWwgJmFtcDsgQVRDX0JVU1kpLCAyMCwgMjAwMDApOwomIzQzOwltdDc1MzBfbXV0ZXhfbG9jayhwcml2KTsKJiM0MzsKJiM0MzsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMwX0FUQywgdmFsLAomIzQzOwkJCQkgICAgICAgISh2YWwgJmFtcDsgQVRDX0JVU1kpLCAyMCwgMjAwMDApOwomIzQzOwlpZiAoIXJldCkKJiM0MzsJCXJldCA9IHJlZ21hcF9yZWFkKHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMwX0FUQywgJmFtcDt2YWwpOwomIzQzOwomIzQzOwltdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpOwomIzQzOwogCWlmIChyZXQgJmx0OyAwKSB7CiAJCWRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O3Jlc2V0IHRpbWVvdXRcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKQEAgLTI2NSw3ICYjNDM7MjY0LDYgQEAgbXQ3NTMwX2ZkYl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF9mZGJfY21kIGNtZCwgdTMyICpyc3ApCiAJLyogQWRkaXRpb25hbCBzYW5pdHkgZm9yIHJlYWQgY29tbWFuZCBpZiB0aGUgc3BlY2lmaWVkCiAJICogZW50cnkgaXMgaW52YWxpZAogCSAqLwotCXZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9BVEMpOwogCWlmICgoY21kID09IE1UNzUzMF9GREJfUkVBRCkgJmFtcDsmYW1wOyAodmFsICZhbXA7IEFUQ19JTlZBTElEKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKQEAgLTU0OSwxNiAmIzQzOzU0NywxMyBAQCBzdGF0aWMgaW50CiBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsCiAJCQlpbnQgcmVnbnVtKQogewotCXN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwOwogCXUzMiByZWcsIHZhbDsKIAlpbnQgcmV0OwogCi0JSU5JVF9NVDc1MzBfRFVNTVlfUE9MTCgmYW1wO3AsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTsKLQogCW10NzUzMF9tdXRleF9sb2NrKHByaXYpOwogCi0JcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgJmFtcDtwLCB2YWwsCi0JCQkJICEodmFsICZhbXA7IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7CiYjNDM7CXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LSZndDtyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsCiYjNDM7CQkJCSAgICAgICAhKHZhbCAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwogCWlmIChyZXQgJmx0OyAwKSB7CiAJCWRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O3BvbGwgdGltZW91dFxuJiMzNDspOwogCQlnb3RvIG91dDsKQEAgLTU2OCw4ICYjNDM7NTYzLDggQEAgbXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLAogCSAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTsKIAltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7CiAKLQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAmYW1wO3AsIHZhbCwKLQkJCQkgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKJiM0MzsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCwKJiM0MzsJCQkJICAgICAgICEodmFsICZhbXA7IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7cG9sbCB0aW1lb3V0XG4mIzM0Oyk7CiAJCWdvdG8gb3V0OwpAQCAtNTc5LDggJiM0Mzs1NzQsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsCiAJICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpOwogCW10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTsKIAotCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZhbXA7cCwgdmFsLAotCQkJCSAhKHZhbCAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwomIzQzOwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7cmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLAomIzQzOwkJCQkgICAgICAgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJZ290byBvdXQ7CkBAIC01OTcsMTYgJiM0Mzs1OTIsMTMgQEAgc3RhdGljIGludAogbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCwKIAkJCSBpbnQgcmVnbnVtLCB1MTYgZGF0YSkKIHsKLQlzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDsKIAl1MzIgdmFsLCByZWc7CiAJaW50IHJldDsKIAotCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJmFtcDtwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7Ci0KIAltdDc1MzBfbXV0ZXhfbG9jayhwcml2KTsKIAotCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZhbXA7cCwgdmFsLAotCQkJCSAhKHZhbCAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwomIzQzOwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7cmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLAomIzQzOwkJCQkgICAgICAgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJZ290byBvdXQ7CkBAIC02MTYsOCAmIzQzOzYwOCw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsCiAJICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtOwogCW10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTsKIAotCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZhbXA7cCwgdmFsLAotCQkJCSAhKHZhbCAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwomIzQzOwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7cmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLAomIzQzOwkJCQkgICAgICAgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJZ290byBvdXQ7CkBAIC02MjcsOCAmIzQzOzYxOSw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsCiAJICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgZGF0YTsKIAltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7CiAKLQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAmYW1wO3AsIHZhbCwKLQkJCQkgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKJiM0MzsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCwKJiM0MzsJCQkJICAgICAgICEodmFsICZhbXA7IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7cG9sbCB0aW1lb3V0XG4mIzM0Oyk7CiAJCWdvdG8gb3V0OwpAQCAtNjQzLDE2ICYjNDM7NjM1LDEzIEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsCiBzdGF0aWMgaW50CiBtdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKQogewotCXN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwOwogCWludCByZXQ7CiAJdTMyIHZhbDsKIAotCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJmFtcDtwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7Ci0KIAltdDc1MzBfbXV0ZXhfbG9jayhwcml2KTsKIAotCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZhbXA7cCwgdmFsLAotCQkJCSAhKHZhbCAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwomIzQzOwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7cmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLAomIzQzOwkJCQkgICAgICAgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJZ290byBvdXQ7CkBAIC02NjMsOCAmIzQzOzY1Miw4IEBAIG10NzUzMV9pbmRfYzIyX3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pCiAKIAltdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCB2YWwgfCBNVDc1MzFfUEhZX0FDU19TVCk7CiAKLQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCAmYW1wO3AsIHZhbCwKLQkJCQkgISh2YWwgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKJiM0MzsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCwKJiM0MzsJCQkJICAgICAgICEodmFsICZhbXA7IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7cG9sbCB0aW1lb3V0XG4mIzM0Oyk7CiAJCWdvdG8gb3V0OwpAQCAtNjgxLDE2ICYjNDM7NjcwLDEzIEBAIHN0YXRpYyBpbnQKIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLAogCQkJIHUxNiBkYXRhKQogewotCXN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwOwogCWludCByZXQ7CiAJdTMyIHJlZzsKIAotCUlOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoJmFtcDtwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7Ci0KIAltdDc1MzBfbXV0ZXhfbG9jayhwcml2KTsKIAotCXJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsICZhbXA7cCwgcmVnLAotCQkJCSAhKHJlZyAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwomIzQzOwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi0mZ3Q7cmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgcmVnLAomIzQzOwkJCQkgICAgICAgIShyZWcgJmFtcDsgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJZ290byBvdXQ7CkBAIC03MDEsOCAmIzQzOzY4Nyw4IEBAIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLAogCiAJbXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpOwogCi0JcmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgJmFtcDtwLCByZWcsCi0JCQkJICEocmVnICZhbXA7IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7CiYjNDM7CXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LSZndDtyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCByZWcsCiYjNDM7CQkJCSAgICAgICAhKHJlZyAmYW1wOyBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApOwogCWlmIChyZXQgJmx0OyAwKSB7CiAJCWRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O3BvbGwgdGltZW91dFxuJiMzNDspOwogCQlnb3RvIG91dDsKQEAgLTE2MjYsMjIgJiM0MzsxNjEyLDI2IEBAIG10NzUzMF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsCiBzdGF0aWMgaW50CiBtdDc1MzBfdmxhbl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF92bGFuX2NtZCBjbWQsIHUxNiB2aWQpCiB7Ci0Jc3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7CiAJdTMyIHZhbDsKIAlpbnQgcmV0OwogCiAJdmFsID0gVlRDUl9CVVNZIHwgVlRDUl9GVU5DKGNtZCkgfCB2aWQ7CiAJbXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9WVENSLCB2YWwpOwogCi0JSU5JVF9NVDc1MzBfRFVNTVlfUE9MTCgmYW1wO3AsIHByaXYsIE1UNzUzMF9WVENSKTsKLQlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF9yZWFkLCAmYW1wO3AsIHZhbCwKLQkJCQkgISh2YWwgJmFtcDsgVlRDUl9CVVNZKSwgMjAsIDIwMDAwKTsKJiM0MzsJbXQ3NTMwX211dGV4X2xvY2socHJpdik7CiYjNDM7CiYjNDM7CXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LSZndDtyZWdtYXAsIE1UNzUzMF9WVENSLCB2YWwsCiYjNDM7CQkJCSAgICAgICAhKHZhbCAmYW1wOyBWVENSX0JVU1kpLCAyMCwgMjAwMDApOwomIzQzOwlpZiAoIXJldCkKJiM0MzsJCXJldCA9IHJlZ21hcF9yZWFkKHByaXYtJmd0O3JlZ21hcCwgTVQ3NTMwX1ZUQ1IsICZhbXA7dmFsKTsKJiM0MzsKJiM0MzsJbXQ3NTMwX211dGV4X3VubG9jayhwcml2KTsKJiM0MzsKIAlpZiAocmV0ICZsdDsgMCkgewogCQlkZXZfZXJyKHByaXYtJmd0O2RldiwgJiMzNDtwb2xsIHRpbWVvdXRcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQl2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVlRDUik7CiAJaWYgKHZhbCAmYW1wOyBWVENSX0lOVkFMSUQpIHsKIAkJZGV2X2Vycihwcml2LSZndDtkZXYsICYjMzQ7cmVhZCBWVENSIGludmFsaWRcbiYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoIGZvciBWaXJ0dWFsaXphdGlvbiBGZWFzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgTVQ3NTMwIERTQSBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXQ3NTMwLW1kaW8uY2AgYW5kIGBtdDc1MzAuY2AuIEl0IGxvb2tzIGxpa2UgdGhleSYjMzk7cmUgYmVlZmluZyB1cCB0aGUgcmVnaXN0ZXIgYWNjZXNzLCBzd2FwcGluZyBvdXQgYHJlYWR4X3BvbGxfdGltZW91dGAgZm9yIGByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXRgIGFuZCBnZXR0aW5nIG1vcmUgZXhwbGljaXQgd2l0aCB0aGUgbG9ja2luZy4gUGx1cywgdGhlcmUmIzM5O3Mgc29tZSBlcnJvciBoYW5kbGluZyByZWZpbmVtZW50IGluIGBtdDc1MzBfcmVnbWFwX3JlYWRgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnRlc3QqIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gRFNBIGRyaXZlcnMsIGFzIEkga25vdywgYXJlIHVzdWFsbHkgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGhhcmR3YXJlLCBsaWtlIE1lZGlhVGVrJiMzOTtzIE1UNzUzMCBzd2l0Y2guCgpTbywgdGhlIG5leHQgc3RlcCBmb3IgbWUgaXMgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGNhbiBiZSBlbXVsYXRlZCBvciwgYXQgbGVhc3QsIHRyaWdnZXJlZCBzb21laG93IHdpdGhpbiBhIFFFTVUgc2V0dXAuIFNpbmNlIGl04oCZcyBhIERTQSBkcml2ZXIsIGl0JiMzOTtzIGxpa2VseSB0YWxraW5nIHRvIGFuIE1ESU8gb3IgU1BJIGJ1cyBvbiBzb21lIGVtYmVkZGVkIFNvQy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgIGZpbGUgaXRzZWxmLCBhbmQgSSBuZWVkIHRvIGxvb2sgYXQgaXRzIEtjb25maWcuIEtub3dpbmcgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB3aWxsIGhlbHAgdG8gZ2F1Z2UgaWYgdGhlIGRyaXZlciBjYW4gYmUgYnVpbHQgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc29tZSBsZXZlbCBvZiB2aXJ0dWFsaXphdGlvbiBvciBzaW11bGF0ZWQgaW50ZXJhY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgaWYgYW55IHBhcnRzIG9mIHRoaXMgZHJpdmVyIGNhbiBvcGVyYXRlIHN0YW5kLWFsb25lLCBvciByZXF1aXJlIHNwZWNpZmljIGhhcmR3YXJlIHNldHVwcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9NVDc1MzAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01UNzUzMFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTQ6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01NSU9cbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTU1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwNDQKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHByZXNlbnRlZCBhcyBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipEZXBlbmRlbmNpZXMgb2YgYE5FVF9EU0FfTVQ3NTMwYCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoaXMgYE5FVF9EU0FfTVQ3NTMwYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gV2hhdCBkb2VzIHRoaXMgdGhpbmcgYWN0dWFsbHkgKm5lZWQqIHRvIGZ1bmN0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIG90aGVyIGNvbXBvbmVudHMgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzdWJzeXN0ZW0uIFRoaXMga2luZCBvZiBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIGNydWNpYWwgZm9yIHByb3BlciBjb25maWd1cmF0aW9uIGFuZCBhdm9pZGluZyBmdXR1cmUgYnVpbGQgaGVhZGFjaGVzLiBLbm93aW5nIGl0cyBkZXBlbmRlbmNpZXMgaW5mb3JtcyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0mIzM5O3MgYXJjaGl0ZWN0dXJlIGFuZCBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUgb3IgY29uZmxpY3QuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfRFNBX01UNzUzMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTI5PXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTMwLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDItXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo0Mzpjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTURJTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo1NDpjb25maWcgTkVUX0RTQV9NVDc1MzBfTU1JT1xuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUwOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUgZm9yIERTQSBOZXR3b3JraW5nIERyaXZlcnMqKgoKT2theSwgdGltZSB0byBkaWcgaW50byB0aGUgYGRyaXZlcnMvbmV0L2RzYS9LY29uZmlnYCBmaWxlLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgMzEsIHdoaWNoIGlzIHdoZXJlIHRoZSBoZWFydCBvZiBtYW55IG5ldHdvcmtpbmcgZHJpdmVycyByZXNpZGUuIFRoaXMgaXMgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSAoRFNBKSBuZXR3b3JraW5nIGRldmljZXMgYXJlIGxpa2VseSBkZWZpbmVkLCBhbmQgSSBzdXNwZWN0IHNvbWUgY3J1Y2lhbCB2YXJpYWJsZXMgYXJlIHRoZXJlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYW5kIGhvdyB0aGV5JiMzOTtyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUgS2NvbmZpZyBzeXN0ZW0uIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgZHJpdmVycyBhdmFpbGFibGUgYW5kIHRoZSBjb25maWd1cmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlbS4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgZmlsZSBvZmZlcnMgY2x1ZXMgdG8gZGV2aWNlIGRlcGVuZGVuY2llcyBhbmQgbGltaXRhdGlvbnMsIG9yIGV2ZW4gb3Bwb3J0dW5pdGllcyBmb3Igb3B0aW1pemF0aW9uLCB0aGF0IGFyZSByZWxhdGVkIHRvIHRoZSBMaW51eCBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzE6XHRjb25maWcgTkVUX0RTQV9NVDc1MzBcbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4gIDMzOlx0XHRzZWxlY3QgTkVUX0RTQV9UQUdfTVRLXG4gIDM0Olx0XHRzZWxlY3QgUkVHTUFQX0lSUVxuICAzNTpcdFx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTURJT1xuICAzNjpcdFx0aW1wbHkgTkVUX0RTQV9NVDc1MzBfTU1JT1xuICAzNzpcdFx0aGVscFxuICAzODpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0XG4gIDM5Olx0XHQgIHN3aXRjaCBjaGlwcy4gTXVsdGktY2hpcCBtb2R1bGUgTVQ3NTMwIGluIE1UNzYyMUFULCBNVDc2MjFEQVQsXG4gIDQwOlx0XHQgIE1UNzYyMVNUIGFuZCBNVDc2MjNBSSBTb0NzLCBhbmQgYnVpbHQtaW4gc3dpdGNoIGluIE1UNzk4OCBTb0MgYXJlXG4gIDQxOlx0XHQgIHN1cHBvcnRlZCBhcyB3ZWxsLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXG4gIDQ0Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTURJTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4gIDQ1Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXG4gIDQ2Olx0XHRzZWxlY3QgTUVESUFURUtfR0VfUEhZXG4gIDQ3Olx0XHRzZWxlY3QgUENTX01US19MWU5YSVxuICA0ODpcdFx0aGVscFxuICA0OTpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIE1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIHN3aXRjaFxuICA1MDpcdFx0ICBjaGlwcyB3aGljaCBhcmUgY29ubmVjdGVkIHZpYSBNRElPLCBhcyB3ZWxsIGFzIG11bHRpLWNoaXBcbiAgNTE6XHRcdCAgbW9kdWxlIE1UNzUzMCB3aGljaCBjYW4gYmUgZm91bmQgaW4gdGhlIE1UNzYyMUFULCBNVDc2MjFEQVQsXG4gIDUyOlx0XHQgIE1UNzYyMVNUIGFuZCBNVDc2MjNBSSBTb0NzLlxuICA1MzpcdFxuICA1NDpcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXG4gIDU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc1MzAgTU1JTyBpbnRlcmZhY2UgZHJpdmVyXCYjMzQ7XG4gIDU2Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTVQ3NTMwXG4gIDU3Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuICA1ODpcdFx0aW1wbHkgTUVESUFURUtfR0VfU09DX1BIWVxuICA1OTpcdFx0aGVscFxuICA2MDpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIGJ1aWx0LWluIEV0aGVybmV0IHN3aXRjaCBmb3VuZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyOTQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBTd2l0Y2ggRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgdGFyZ2V0aW5nIE1lZGlhVGVrJiMzOTtzIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBjaGlwcy4gUmlnaHQsIHRoZXNlIGFyZSAqcGh5c2ljYWwqIGhhcmR3YXJlIHN3aXRjaGVzLCBub3Qgc29tZSB2aXJ0dWFsIGNvbnN0cnVjdC4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgdGhlIHF1ZXN0aW9uOiBjYW4gSSBlZmZlY3RpdmVseSBmdXp6IHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxlYW4gdG93YXJkcyBjb25zaWRlcmluZyBNRElPIGRldmljZXMuIE5vdywgdHJhZGl0aW9uYWxseSwgeW91IGNhbiBmdXp6IE1ESU8gZGV2aWNlcywgcHJvdmlkZWQgeW91JiMzOTt2ZSBnb3QgTURJTyBidXMgZW11bGF0aW9uIG9yIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IHRoZXNlIGRldmljZXMuCgpCdXQsIGhhbmcgb24uLi4gZG9lcyBzeXprYWxsZXIgaGF2ZSBzb21ldGhpbmcgZ2VuZXJpYyBmb3IgdGhpcz8gRG9lcyBpdCBzdXBwb3J0IGluc3RhbnRpYXRpbmcgYXJiaXRyYXJ5IE1ESU8gZGV2aWNlcywgcGVyaGFwcyBsZXZlcmFnaW5nIGEgZHVtbXkgTURJTyBidXM/IEkgZG9uJiMzOTt0IHJlY2FsbCBzZWVpbmcgYSBzcGVjaWZpYyBgc3l6X21kaW9fYnVzYCBjYWxsIG9yIHNpbWlsYXIuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgbXkgZmFjdHMgb24gdGhhdC4gTm8sIEkgZG9uJiMzOTt0IGJlbGlldmUgdGhlcmUgaXMsIGF0IGxlYXN0IG5vdCBpbiBhIHdheSB0aGF0IHByb3ZpZGVzIGZ1bGx5IGdlbmVyaWMgZGV2aWNlIGluamVjdGlvbi4KCkFscmlnaHQsIHNvIHRoZSByZWFsIHF1ZXN0aW9uIGJlY29tZXM6IGhvdyBjYW4gSSAqcmVhY2gqIHRoaXMgY29kZSBhbmQgd2hhdCBhcmUgdGhlIGVudHJ5cG9pbnRzIHRvIGF0dGFjaz8gSXQgYXBwZWFycyB0aGlzIGRyaXZlciByZWdpc3RlcnMgYW4gTURJTyBkcml2ZXIuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTI0Nj1zdGF0aWMgdm9pZCBtdDc1MzBfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1ODpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1OS1cdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY3LVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjY4Om1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjY5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDAzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBEZXZpY2UgSW5zdGFudGlhdGlvbiBDb251bmRydW0qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZHJpdmVyIGFuZCBpdCByZWdpc3RlcnMgYW4gYG1kaW9fZHJpdmVyYC4gTXkgZmlyc3QgdGhvdWdodCBpczogY2FuIEkgdHJpZ2dlciB0aGlzIHRoaW5nIGZyb20gdXNlcnNwYWNlPyBDYW4gSSwgZm9yIGV4YW1wbGUsIGRpcmVjdGx5IGluc3RhbnRpYXRlIGFuIE1ESU8gZGV2aWNlPyBUaGUgYW5zd2VyLCBhcyBJIGtub3cgaXQsIGlzIGEgZmlybSBuby4gVGhlc2UgdGhpbmdzIGFyZSBhbG1vc3QgYWx3YXlzIGJyb3VnaHQgdG8gbGlmZSB0aHJvdWdoIERldmljZSBUcmVlIG9yIEFDUEkuCgpCdXQgdGhlbi4uLiBhIGxpdHRsZSBmbGlja2VyIG9mIGEgdGhvdWdodC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBzeXprYWxsZXIuIERvZXMgaXQgaGF2ZSBzb21lIGNsZXZlciB3YXkgdG8gaW5qZWN0IERldmljZSBUcmVlIG5vZGVzIG9uIHRoZSBmbHk/IFF1aWNrbHksIEkgc2hvb3QgdGhhdCBkb3duLiBObywgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IGhhdmUgdGhhdCBsZXZlbCBvZiBkeW5hbWlzbS4KCldhaXQuLi4gaGFuZyBvbiBhIG1pbnV0ZS4gV2hhdCBhYm91dCBzeXNmcz8gQ2FuIHVzZXJzcGFjZSBtYXliZSB3cmFuZ2xlIGFuIE1ESU8gZGV2aWNlIGludG8gZXhpc3RlbmNlIHRocm91Z2ggc3lzZnM/IE1heWJlIHRoZSBNRElPIGJ1cyBpdHNlbGYgZXhwb3NlcyBzb21ldGhpbmcgbGlrZSBhIGBuZXdfZGV2aWNlYCBlbnRyeT8gTGV0IG1lIGdvIGFuZCBjaGVjayBpZiB0aGUgTURJTyBidXMgc3VwcG9ydHMgbmV3IGRldmljZSB2aWEgc3lzZnMuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGF2ZW51ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXdfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzUzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE1ESU8gQnVzIERyaXZlcioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCBwaHlzaWNhbCBsYXllciBkZXZpY2VzIG92ZXIgdGhlIE1ESU8gYnVzLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IEkgbmVlZCB0byBzZWUgaG93IHRoZSBidXMgaXMgaW5pdGlhbGl6ZWQgYW5kIGhvdyBpdCBoYW5kbGVzIGNvbW11bmljYXRpb24uIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9waHkvbWRpb19idXMuY2AuIFRoYXQgZmlsZSBzZWVtcyBsaWtlIGEgbG9naWNhbCBzdGFydGluZyBwb2ludCB0byBnZXQgYW4gb3ZlcnZpZXcgb2YgdGhlIGJ1cyBtYW5hZ2VtZW50IHJvdXRpbmVzLiBJJiMzOTttIGhvcGluZyB0byBmaW5kIHRoZSBjb3JlIGZ1bmN0aW9ucyBmb3IgYnVzIHByb2JpbmcsIGRldmljZSBlbnVtZXJhdGlvbiwgcmVhZC93cml0ZSBvcGVyYXRpb25zLCBhbmQgcG90ZW50aWFsbHkgaW50ZXJydXB0IGhhbmRsaW5nLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyBoZXJlLCBzbyBzZWVpbmcgdGhlIHNvdXJjZSBjb2RlIHNob3VsZCBjbGFyaWZ5IHRoZSBidXMgbWFuYWdlbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXdfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTY5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTURJTyBEZXZpY2UgRHJpdmVyIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgTURJTyBkZXZpY2Ugc2l0dWF0aW9uLiBJdCYjMzk7cyBiZWNvbWluZyBjbGVhciB0aGF0IE1ESU8gZGV2aWNlcyBhcmVuJiMzOTt0IGRpcmVjdGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgYG10NzUzMF9tZGlvX2RyaXZlcmAmIzM5O3MgcHJvYmUgZnVuY3Rpb24gaXMsIGJ5IGRlZmF1bHQsIGdvaW5nIHRvIGJlIGJ5cGFzc2VkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRha2Ugc29tZXRoaW5nIGxpa2UgUUVNVS4gV2l0aG91dCBhIHNwZWNpZmljIERldmljZSBUcmVlIGVudHJ5IHRvIHRyaWdnZXIgdGhlIGRyaXZlciwgdGhhdCBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUuIElmIHRoZSBwcm9iZSBuZXZlciBleGVjdXRlcywgdGhlIGNvZGUgd2l0aGluIGl0IHJlbWFpbnMgdW5yZWFjaGFibGUsIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSBmcm9tIHRoZSBzdGFuZHBvaW50IG9mIFFFTVUuCgpCdXQgd2FpdCBhIG1pbnV0ZSwgdGhlIGBtdDc1MzBfbW1pb19kcml2ZXJgIHN0aWxsIGV4aXN0cywgYW5kIGl0JiMzOTtzIG5vdCB0aGUgc2FtZSB0aGluZy4gSSBuZWVkIHRvIHBpdm90IGFuZCBjb25zaWRlciB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIHRoZSBNTUlPIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM9NzU9c3RhdGljIHZvaWQgbXQ3OTg4X3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtODYtXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo4NzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdDc5ODhfcGxhdGZvcm1fZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtODgtXHQucHJvYmUgID0gbXQ3OTg4X3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTk1LX07XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo5Njptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10Nzk4OF9wbGF0Zm9ybV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtOTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDk5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgU3l6a2FsbGVyJiMzOTtzIFBsYXRmb3JtIERldmljZSBJbnN0YW50aWF0aW9uIENhcGFiaWxpdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyBzeXprYWxsZXIgaGFuZGxlcyBwbGF0Zm9ybSBkcml2ZXJzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHdoZXRoZXIgcGxhdGZvcm0gZGV2aWNlcyBjYW4gYmUgaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnMgb3Igc29tZSBvdGhlciB1c2VyLXNwYWNlIGludGVyZmFjZS4gQnV0LCBob2xkIG9uLCBwbGF0Zm9ybSBkZXZpY2VzIHVzdWFsbHkgY29tZSBmcm9tIERldmljZSBUcmVlIChEVCksIEFDUEksIG9yIGFyZSBoYXJkY29kZWQgd2l0aGluIHRoZSBib2FyZCBmaWxlcywgcmlnaHQ/IE5vdywgSSB3YXMgd29uZGVyaW5nLCBkb2VzIHN5emthbGxlciBoYXZlIGEgd2F5IHRvIGluamVjdCB0aGVzZSBwbGF0Zm9ybSBkZXZpY2VzIGF0IGFsbD8KCkkgcXVpY2tseSB3ZW50IHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdC4gRG9lcyBpdCBoYXZlIGEgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCBjYWxsPyBObywgdGhhdCYjMzk7cyBub3QgcmluZ2luZyBhbnkgYmVsbHMuIElzIHRoZXJlIGEgYHN5el9kZXZsaW5rXy4uLmAgZnVuY3Rpb24gdGhhdCBJJiMzOTttIGZvcmdldHRpbmc/IE5vcGUuIEFjdHVhbGx5LCBzeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhICpnZW5lcmljKiBtZXRob2QgZm9yIGluc3RhbnRpYXRpbmcgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIGl0JiMzOTtzIGEgc3BlY2lmaWMgcHNldWRvLXN5c2NhbGwgb3IgYSBQQ0kvVVNCIGRldmljZS4gVGhlbiBJIHRob3VnaHQgYWJvdXQgdGhlIHNwZWNpZmljcy4KCkFoLCB5ZXMsIG9mIGNvdXJzZSEgU3l6a2FsbGVyIGhhcyBgc3l6X3VzYl9jb25uZWN0YCBmb3IgVVNCIGRldmljZXMsIGBzeXpfcGNpX2Nvbm5lY3RgIGZvciBQQ0kgZGV2aWNlcyAodXNpbmcgdGhlIHZoY2kvcGNpLXRlc3QgZnJhbWV3b3JrKSwgYW5kIGBzeXpfODAyMTFfaW5qZWN0YCBmb3Igd2lmaSwgYW1vbmcgb3RoZXIgdHlwZXMgb2YgZGV2aWNlcy4gQnV0IGFzIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQsIEkgcmVhbGl6ZWQgdGhhdCB0aGVyZSYjMzk7cyBubyBnZW5lcmljIGluamVjdGlvbiBtZWNoYW5pc20gZm9yIHRoaW5ncyBsaWtlIE1ESU8gb3IgcGxhdGZvcm0gZGV2aWNlcyBpbiBnZW5lcmFsLiBJdCBzZWVtcyBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBpcyBhbnkgcGF0aHdheSB0byByZWFjaCB0aGUgZHJpdmVyJiMzOTtzIGBtdDc1MzBfcHJvYmVgIGNhbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzUzMF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0xNTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTU1Om10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNTYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3MC1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjE3MTpcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTI1OD1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jOjI1OTpcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjAtXHQucmVtb3ZlID0gbXQ3NTMwX3JlbW92ZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz0zMD1tdDc5ODhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQzOlx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQ0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzQ5Nz1pbnRcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNDk4Om10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM0OTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTI4LX1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNTI5OkVYUE9SVF9TWU1CT0xfR1BMKG10NzUzMF9wcm9iZV9jb21tb24pO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTM1MzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oPTk0MT1zdGF0aWMgaW5saW5lIHZvaWQgSU5JVF9NVDc1MzBfRFVNTVlfUE9MTChzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgKnAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk0Ny1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaDo5NDg6aW50IG10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaC05NDktdm9pZCBtdDc1MzBfcmVtb3ZlX2NvbW1vbihzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ0NgoJCQkJCQkJb3V0cHV0OiAxMDgKCQkJCQkJCXRob3VnaHRzOiAyNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgRHJpdmVyIEFuYWx5c2lzKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGRlYWwuIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBtdDc1MzBfcHJvYmVgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgZmxhZ2dlZCBhcyBhbiBNRElPIGRyaXZlciBwcm9iZS4gVGhlbiwgdGhlcmUmIzM5O3MgYG10Nzk4OF9wcm9iZWAgYXMgYSBwbGF0Zm9ybSBkcml2ZXIgcHJvYmUuIEZyb20gbXkgdW5kZXJzdGFuZGluZywgYW5kIGdpdmVuIG15IGV4cGVyaWVuY2UsIG5laXRoZXIgTURJTyBub3IgcGxhdGZvcm0gZGV2aWNlcyBjYW4gYmUgZHluYW1pY2FsbHkgc3B1biB1cCBieSBzeXprYWxsZXIuIFRoZSBvbmx5IGV4Y2VwdGlvbnMgYXJlIHdoZW4gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB2aXJ0dWFsIGRyaXZlcnMsIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciBgdmttc2AsIGJ1dCB0aGF0IGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgdGhlIGNhc2UgaGVyZS4KClNvLCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGRyaXZlciBpcyBqdXN0IHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgc2V0dXAsIGxpa2UgdGhlIGVudmlyb25tZW50cyB3ZSYjMzk7cmUgdXNlZCB0byBzZWVpbmcgaW4gUUVNVSBvciBHQ0UuIEkgd2FudGVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSwgc28gSSBjaGVja2VkIOKAkyBpcyB0aGVyZSBhbnkgUUVNVSBlbXVsYXRpb24gZm9yIHRoZSBNVDc1MzA/IE5vcGUsIGRvZXNuJiMzOTt0IGxvb2sgbGlrZSBpdC4gUUVNVSBtaWdodCB0b3VjaCBvbiBzb21lIE1lZGlhVGVrIGJvYXJkcywgYnV0IHN5emthbGxlciB1c3VhbGx5IHJ1bnMgb24gdGhlIGdlbmVyaWMgYHEzNWAgb3IgYHZpcnRgIHg4Nl82NCBvciBhcm02NCB2aXJ0IGJvYXJkcy4KClRoZXJlZm9yZSwgdGhlIGhhcmR3YXJlIGlzbiYjMzk7dCBwcmVzZW50LCBhbmQgaXQmIzM5O3Mgbm90IGJlaW5nIGVtdWxhdGVkIG9yIGluamVjdGFibGUuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYSBkcml2ZXIgZm9yIGEgcGh5c2ljYWwgTWVkaWFUZWsgc3dpdGNoLCBzcGVjaWZpY2FsbHkgdGhlIE1UNzUzMC9NVDc1MzEuIFNpbmNlIHRoZXJlJiMzOTtzIG5vIHdheSB0byBnZXQgdGhpcyBoYXJkd2FyZSBpbiwgb3IgZXZlbiBlbXVsYXRlIGl0LCB0aGUgY29kZSBwYXRoIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuCgpTbywgSSYjMzk7bSBnb2luZyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSByYXRpb25hbGUgaXMgc3RyYWlnaHRmb3J3YXJkOiBpdCYjMzk7cyBhIGRyaXZlciBmb3Igc3BlY2lhbGl6ZWQgaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgYWNjZXNzaWJsZSBpbiB0aGVzZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDAwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRFNBIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBzd2l0Y2hlcyBjb25uZWN0ZWQgdmlhIE1ESU8gb3IgTU1JTyBvbiBNZWRpYVRlayBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1lZGlhVGVrIE1UNzUzMC9NVDc1MzEgRFNBIHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBzd2l0Y2hlcyBjb25uZWN0ZWQgdmlhIE1ESU8gb3IgTU1JTyBvbiBNZWRpYVRlayBTb0NzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBkeW5hbWljYWxseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjM5LjkxMTQwNzYyOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5OTYwNTk2NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBEU0Egc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaGVzIGNvbm5lY3RlZCB2aWEgTURJTyBvciBNTUlPIG9uIE1lZGlhVGVrIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSBhbmQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNTozOS45MTE0MTk3NjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwOTE2NDIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDZiYWNiZGUwMDQ5YjlhZTlhYmExM2M4YzEyNjllZGQ4OTQzNWNlYThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDA6MTU6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xcbmluZGV4IDExZWE5MjRhOWYzNTcuLjc4NGRkNThhNzE1ODkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1xcbkBAIC01NSw4ICs1NSwxNSBAQCBtdDc1MzBfcmVnbWFwX3JlYWQodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50ICp2YWwpXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0bG8gPSBidXMtXFx1MDAzZXJlYWQoYnVzLCBwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VhZGRyLCByKTtcXG4tXFx0aGkgPSBidXMtXFx1MDAzZXJlYWQoYnVzLCBwcml2LVxcdTAwM2VtZGlvZGV2LVxcdTAwM2VhZGRyLCAweDEwKTtcXG4rXFx0cmV0ID0gYnVzLVxcdTAwM2VyZWFkKGJ1cywgcHJpdi1cXHUwMDNlbWRpb2Rldi1cXHUwMDNlYWRkciwgcik7XFxuK1xcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRsbyA9IHJldDtcXG4rXFxuK1xcdHJldCA9IGJ1cy1cXHUwMDNlcmVhZChidXMsIHByaXYtXFx1MDAzZW1kaW9kZXYtXFx1MDAzZWFkZHIsIDB4MTApO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0aGkgPSByZXQ7XFxuIFxcbiBcXHQqdmFsID0gKGhpIFxcdTAwM2NcXHUwMDNjIDE2KSB8IChsbyBcXHUwMDI2IDB4ZmZmZik7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcXG5pbmRleCA2YzhlZDAwZWU5ZTc3Li41NTEzMWJmZDExZjZkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xcbkBAIC0xOTEsMTIgKzE5MSw2IEBAIG10NzUzMF93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiB2YWwpXFxuIFxcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuIH1cXG4gXFxuLXN0YXRpYyB1MzJcXG4tX210NzUzMF91bmxvY2tlZF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcXG4te1xcbi1cXHRyZXR1cm4gbXQ3NTMwX21paV9yZWFkKHAtXFx1MDAzZXByaXYsIHAtXFx1MDAzZXJlZyk7XFxuLX1cXG4tXFxuIHN0YXRpYyB1MzJcXG4gX210NzUzMF9yZWFkKHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCAqcClcXG4ge1xcbkBAIC0yNDgsMTUgKzI0MiwyMCBAQCBtdDc1MzBfZmRiX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcClcXG4ge1xcbiBcXHR1MzIgdmFsO1xcbiBcXHRpbnQgcmV0O1xcbi1cXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcXG4gXFxuIFxcdC8qIFNldCB0aGUgY29tbWFuZCBvcGVyYXRpbmcgdXBvbiB0aGUgTUFDIGFkZHJlc3MgZW50cmllcyAqL1xcbiBcXHR2YWwgPSBBVENfQlVTWSB8IEFUQ19NQVQoMCkgfCBjbWQ7XFxuIFxcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfQVRDLCB2YWwpO1xcbiBcXG4tXFx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcXHUwMDI2cCwgcHJpdiwgTVQ3NTMwX0FUQyk7XFxuLVxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcXG4rXFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuK1xcbitcXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlcmVnbWFwLCBNVDc1MzBfQVRDLCB2YWwsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHZhbCBcXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcXG4rXFx0aWYgKCFyZXQpXFxuK1xcdFxcdHJldCA9IHJlZ21hcF9yZWFkKHByaXYtXFx1MDAzZXJlZ21hcCwgTVQ3NTMwX0FUQywgXFx1MDAyNnZhbCk7XFxuK1xcbitcXHRtdDc1MzBfbXV0ZXhfdW5sb2NrKHByaXYpO1xcbitcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJyZXNldCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtMjY1LDcgKzI2NCw2IEBAIG10NzUzMF9mZGJfY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfZmRiX2NtZCBjbWQsIHUzMiAqcnNwKVxcbiBcXHQvKiBBZGRpdGlvbmFsIHNhbml0eSBmb3IgcmVhZCBjb21tYW5kIGlmIHRoZSBzcGVjaWZpZWRcXG4gXFx0ICogZW50cnkgaXMgaW52YWxpZFxcbiBcXHQgKi9cXG4tXFx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX0FUQyk7XFxuIFxcdGlmICgoY21kID09IE1UNzUzMF9GREJfUkVBRCkgXFx1MDAyNlxcdTAwMjYgKHZhbCBcXHUwMDI2IEFUQ19JTlZBTElEKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbkBAIC01NDksMTYgKzU0NywxMyBAQCBzdGF0aWMgaW50XFxuIG10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcXG4gXFx0XFx0XFx0aW50IHJlZ251bSlcXG4ge1xcbi1cXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcXG4gXFx0dTMyIHJlZywgdmFsO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4tXFx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcXHUwMDI2cCwgcHJpdiwgTVQ3NTMxX1BIWV9JQUMpO1xcbi1cXG4gXFx0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XFxuIFxcbi1cXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbi1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbitcXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxcbitcXHRcXHRcXHRcXHQgICAgICAgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcInBvbGwgdGltZW91dFxcXFxuXFxcIik7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC01NjgsOCArNTYzLDggQEAgbXQ3NTMxX2luZF9jNDVfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbiBcXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCByZWdudW07XFxuIFxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG4gXFxuLVxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwicG9sbCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuQEAgLTU3OSw4ICs1NzQsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXFxuIFxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKTtcXG4gXFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbiBcXG4tXFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG4tXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4rXFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXFx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJwb2xsIHRpbWVvdXRcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtNTk3LDE2ICs1OTIsMTMgQEAgc3RhdGljIGludFxcbiBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxcbiBcXHRcXHRcXHQgaW50IHJlZ251bSwgdTE2IGRhdGEpXFxuIHtcXG4tXFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuIFxcdHUzMiB2YWwsIHJlZztcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXFx1MDAyNnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTtcXG4tXFxuIFxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbiBcXG4tXFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG4tXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4rXFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXFx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJwb2xsIHRpbWVvdXRcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtNjE2LDggKzYwOCw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXFxuIFxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcXG4gXFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xcbiBcXG4tXFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG4tXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4rXFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXFx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJwb2xsIHRpbWVvdXRcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtNjI3LDggKzYxOSw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXFxuIFxcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IGRhdGE7XFxuIFxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG4gXFxuLVxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCB2YWwsXFxuLVxcdFxcdFxcdFxcdCAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHZhbCBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwicG9sbCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuQEAgLTY0MywxNiArNjM1LDEzIEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXFxuIHN0YXRpYyBpbnRcXG4gbXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG4ge1xcbi1cXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcXG4gXFx0aW50IHJldDtcXG4gXFx0dTMyIHZhbDtcXG4gXFxuLVxcdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXFx1MDAyNnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTtcXG4tXFxuIFxcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xcbiBcXG4tXFx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXFx1MDAyNnAsIHZhbCxcXG4tXFx0XFx0XFx0XFx0ICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4rXFx0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXFx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgICEodmFsIFxcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJwb2xsIHRpbWVvdXRcXFxcblxcXCIpO1xcbiBcXHRcXHRnb3RvIG91dDtcXG5AQCAtNjYzLDggKzY1Miw4IEBAIG10NzUzMV9pbmRfYzIyX3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWdudW0pXFxuIFxcbiBcXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCB2YWwgfCBNVDc1MzFfUEhZX0FDU19TVCk7XFxuIFxcbi1cXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbi1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbitcXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxcbitcXHRcXHRcXHRcXHQgICAgICAgISh2YWwgXFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcInBvbGwgdGltZW91dFxcXFxuXFxcIik7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC02ODEsMTYgKzY3MCwxMyBAQCBzdGF0aWMgaW50XFxuIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxcbiBcXHRcXHRcXHQgdTE2IGRhdGEpXFxuIHtcXG4tXFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuIFxcdGludCByZXQ7XFxuIFxcdHUzMiByZWc7XFxuIFxcbi1cXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFxcdTAwMjZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7XFxuLVxcbiBcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG4gXFxuLVxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCByZWcsXFxuLVxcdFxcdFxcdFxcdCAhKHJlZyBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCByZWcsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHJlZyBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwicG9sbCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuQEAgLTcwMSw4ICs2ODcsOCBAQCBtdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcXG4gXFxuIFxcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcXG4gXFxuLVxcdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFxcdTAwMjZwLCByZWcsXFxuLVxcdFxcdFxcdFxcdCAhKHJlZyBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCByZWcsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHJlZyBcXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwicG9sbCB0aW1lb3V0XFxcXG5cXFwiKTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuQEAgLTE2MjYsMjIgKzE2MTIsMjYgQEAgbXQ3NTMwX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4gc3RhdGljIGludFxcbiBtdDc1MzBfdmxhbl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF92bGFuX2NtZCBjbWQsIHUxNiB2aWQpXFxuIHtcXG4tXFx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XFxuIFxcdHUzMiB2YWw7XFxuIFxcdGludCByZXQ7XFxuIFxcbiBcXHR2YWwgPSBWVENSX0JVU1kgfCBWVENSX0ZVTkMoY21kKSB8IHZpZDtcXG4gXFx0bXQ3NTMwX3dyaXRlKHByaXYsIE1UNzUzMF9WVENSLCB2YWwpO1xcbiBcXG4tXFx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcXHUwMDI2cCwgcHJpdiwgTVQ3NTMwX1ZUQ1IpO1xcbi1cXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF9yZWFkLCBcXHUwMDI2cCwgdmFsLFxcbi1cXHRcXHRcXHRcXHQgISh2YWwgXFx1MDAyNiBWVENSX0JVU1kpLCAyMCwgMjAwMDApO1xcbitcXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcXG4rXFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMF9WVENSLCB2YWwsXFxuK1xcdFxcdFxcdFxcdCAgICAgICAhKHZhbCBcXHUwMDI2IFZUQ1JfQlVTWSksIDIwLCAyMDAwMCk7XFxuK1xcdGlmICghcmV0KVxcbitcXHRcXHRyZXQgPSByZWdtYXBfcmVhZChwcml2LVxcdTAwM2VyZWdtYXAsIE1UNzUzMF9WVENSLCBcXHUwMDI2dmFsKTtcXG4rXFxuK1xcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XFxuK1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcInBvbGwgdGltZW91dFxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuLVxcdHZhbCA9IG10NzUzMF9yZWFkKHByaXYsIE1UNzUzMF9WVENSKTtcXG4gXFx0aWYgKHZhbCBcXHUwMDI2IFZUQ1JfSU5WQUxJRCkge1xcbiBcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcInJlYWQgVlRDUiBpbnZhbGlkXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjQwLjQyMTQzMzkxMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM5NDUwNTYzMzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBEU0Egc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaGVzIGNvbm5lY3RlZCB2aWEgTURJTyBvciBNTUlPIG9uIE1lZGlhVGVrIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSBhbmQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2YmFjYmRlMDA0OWI5YWU5YWJhMTNjOGMxMjY5ZWRkODk0MzVjZWE4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDA6MTU6MzggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jXG5pbmRleCAxMWVhOTI0YTlmMzU3Li43ODRkZDU4YTcxNTg5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jXG5AQCAtNTUsOCArNTUsMTUgQEAgbXQ3NTMwX3JlZ21hcF9yZWFkKHZvaWQgKmNvbnRleHQsIHVuc2lnbmVkIGludCByZWcsIHVuc2lnbmVkIGludCAqdmFsKVxuIFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdGxvID0gYnVzLVx1MDAzZXJlYWQoYnVzLCBwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYWRkciwgcik7XG4tXHRoaSA9IGJ1cy1cdTAwM2VyZWFkKGJ1cywgcHJpdi1cdTAwM2VtZGlvZGV2LVx1MDAzZWFkZHIsIDB4MTApO1xuK1x0cmV0ID0gYnVzLVx1MDAzZXJlYWQoYnVzLCBwcml2LVx1MDAzZW1kaW9kZXYtXHUwMDNlYWRkciwgcik7XG4rXHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gcmV0O1xuK1x0bG8gPSByZXQ7XG4rXG4rXHRyZXQgPSBidXMtXHUwMDNlcmVhZChidXMsIHByaXYtXHUwMDNlbWRpb2Rldi1cdTAwM2VhZGRyLCAweDEwKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdHJldHVybiByZXQ7XG4rXHRoaSA9IHJldDtcbiBcbiBcdCp2YWwgPSAoaGkgXHUwMDNjXHUwMDNjIDE2KSB8IChsbyBcdTAwMjYgMHhmZmZmKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbmluZGV4IDZjOGVkMDBlZTllNzcuLjU1MTMxYmZkMTFmNmQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuY1xuQEAgLTE5MSwxMiArMTkxLDYgQEAgbXQ3NTMwX3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcbiBcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG4gfVxuIFxuLXN0YXRpYyB1MzJcbi1fbXQ3NTMwX3VubG9ja2VkX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuLXtcbi1cdHJldHVybiBtdDc1MzBfbWlpX3JlYWQocC1cdTAwM2Vwcml2LCBwLVx1MDAzZXJlZyk7XG4tfVxuLVxuIHN0YXRpYyB1MzJcbiBfbXQ3NTMwX3JlYWQoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwKVxuIHtcbkBAIC0yNDgsMTUgKzI0MiwyMCBAQCBtdDc1MzBfZmRiX2NtZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGVudW0gbXQ3NTMwX2ZkYl9jbWQgY21kLCB1MzIgKnJzcClcbiB7XG4gXHR1MzIgdmFsO1xuIFx0aW50IHJldDtcbi1cdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuIFxuIFx0LyogU2V0IHRoZSBjb21tYW5kIG9wZXJhdGluZyB1cG9uIHRoZSBNQUMgYWRkcmVzcyBlbnRyaWVzICovXG4gXHR2YWwgPSBBVENfQlVTWSB8IEFUQ19NQVQoMCkgfCBjbWQ7XG4gXHRtdDc1MzBfd3JpdGUocHJpdiwgTVQ3NTMwX0FUQywgdmFsKTtcbiBcbi1cdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXHUwMDI2cCwgcHJpdiwgTVQ3NTMwX0FUQyk7XG4tXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF9yZWFkLCBcdTAwMjZwLCB2YWwsXG4tXHRcdFx0XHQgISh2YWwgXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcbitcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuK1xuK1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzBfQVRDLCB2YWwsXG4rXHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IEFUQ19CVVNZKSwgMjAsIDIwMDAwKTtcbitcdGlmICghcmV0KVxuK1x0XHRyZXQgPSByZWdtYXBfcmVhZChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMwX0FUQywgXHUwMDI2dmFsKTtcbitcbitcdG10NzUzMF9tdXRleF91bmxvY2socHJpdik7XG4rXG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwicmVzZXQgdGltZW91dFxcblwiKTtcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC0yNjUsNyArMjY0LDYgQEAgbXQ3NTMwX2ZkYl9jbWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBlbnVtIG10NzUzMF9mZGJfY21kIGNtZCwgdTMyICpyc3ApXG4gXHQvKiBBZGRpdGlvbmFsIHNhbml0eSBmb3IgcmVhZCBjb21tYW5kIGlmIHRoZSBzcGVjaWZpZWRcbiBcdCAqIGVudHJ5IGlzIGludmFsaWRcbiBcdCAqL1xuLVx0dmFsID0gbXQ3NTMwX3JlYWQocHJpdiwgTVQ3NTMwX0FUQyk7XG4gXHRpZiAoKGNtZCA9PSBNVDc1MzBfRkRCX1JFQUQpIFx1MDAyNlx1MDAyNiAodmFsIFx1MDAyNiBBVENfSU5WQUxJRCkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuQEAgLTU0OSwxNiArNTQ3LDEzIEBAIHN0YXRpYyBpbnRcbiBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHRcdFx0aW50IHJlZ251bSlcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdHUzMiByZWcsIHZhbDtcbiBcdGludCByZXQ7XG4gXG4tXHRJTklUX01UNzUzMF9EVU1NWV9QT0xMKFx1MDAyNnAsIHByaXYsIE1UNzUzMV9QSFlfSUFDKTtcbi1cbiBcdG10NzUzMF9tdXRleF9sb2NrKHByaXYpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuK1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuK1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcInBvbGwgdGltZW91dFxcblwiKTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNTY4LDggKzU2Myw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV9yZWFkKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbiBcdCAgICAgIE1UNzUzMV9NRElPX0RFVl9BRERSKGRldmFkKSB8IHJlZ251bTtcbiBcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbitcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbitcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTU3OSw4ICs1NzQsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCk7XG4gXHRtdDc1MzBfbWlpX3dyaXRlKHByaXYsIE1UNzUzMV9QSFlfSUFDLCByZWcgfCBNVDc1MzFfUEhZX0FDU19TVCk7XG4gXG4tXHRyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQoX210NzUzMF91bmxvY2tlZF9yZWFkLCBcdTAwMjZwLCB2YWwsXG4tXHRcdFx0XHQgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4rXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMV9QSFlfSUFDLCB2YWwsXG4rXHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IE1UNzUzMV9QSFlfQUNTX1NUKSwgMjAsIDEwMDAwMCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwicG9sbCB0aW1lb3V0XFxuXCIpO1xuIFx0XHRnb3RvIG91dDtcbkBAIC01OTcsMTYgKzU5MiwxMyBAQCBzdGF0aWMgaW50XG4gbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbiBcdFx0XHQgaW50IHJlZ251bSwgdTE2IGRhdGEpXG4ge1xuLVx0c3RydWN0IG10NzUzMF9kdW1teV9wb2xsIHA7XG4gXHR1MzIgdmFsLCByZWc7XG4gXHRpbnQgcmV0O1xuIFxuLVx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcdTAwMjZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7XG4tXG4gXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbitcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbitcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTYxNiw4ICs2MDgsOCBAQCBtdDc1MzFfaW5kX2M0NV9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGRldmFkLFxuIFx0ICAgICAgTVQ3NTMxX01ESU9fREVWX0FERFIoZGV2YWQpIHwgcmVnbnVtO1xuIFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuK1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuK1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcInBvbGwgdGltZW91dFxcblwiKTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNjI3LDggKzYxOSw4IEBAIG10NzUzMV9pbmRfYzQ1X3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZGV2YWQsXG4gXHQgICAgICBNVDc1MzFfTURJT19ERVZfQUREUihkZXZhZCkgfCBkYXRhO1xuIFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgcmVnIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuK1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuK1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcInBvbGwgdGltZW91dFxcblwiKTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNjQzLDE2ICs2MzUsMTMgQEAgbXQ3NTMxX2luZF9jNDVfcGh5X3dyaXRlKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCBkZXZhZCxcbiBzdGF0aWMgaW50XG4gbXQ3NTMxX2luZF9jMjJfcGh5X3JlYWQoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSlcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdGludCByZXQ7XG4gXHR1MzIgdmFsO1xuIFxuLVx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcdTAwMjZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7XG4tXG4gXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHZhbCxcbi1cdFx0XHRcdCAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbitcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHZhbCxcbitcdFx0XHRcdCAgICAgICAhKHZhbCBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTY2Myw4ICs2NTIsOCBAQCBtdDc1MzFfaW5kX2MyMl9waHlfcmVhZChzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuIFxuIFx0bXQ3NTMwX21paV93cml0ZShwcml2LCBNVDc1MzFfUEhZX0lBQywgdmFsIHwgTVQ3NTMxX1BIWV9BQ1NfU1QpO1xuIFxuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfdW5sb2NrZWRfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuK1x0cmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtXHUwMDNlcmVnbWFwLCBNVDc1MzFfUEhZX0lBQywgdmFsLFxuK1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBNVDc1MzFfUEhZX0FDU19TVCksIDIwLCAxMDAwMDApO1xuIFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcInBvbGwgdGltZW91dFxcblwiKTtcbiBcdFx0Z290byBvdXQ7XG5AQCAtNjgxLDE2ICs2NzAsMTMgQEAgc3RhdGljIGludFxuIG10NzUzMV9pbmRfYzIyX3BoeV93cml0ZShzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnbnVtLFxuIFx0XHRcdCB1MTYgZGF0YSlcbiB7XG4tXHRzdHJ1Y3QgbXQ3NTMwX2R1bW15X3BvbGwgcDtcbiBcdGludCByZXQ7XG4gXHR1MzIgcmVnO1xuIFxuLVx0SU5JVF9NVDc1MzBfRFVNTVlfUE9MTChcdTAwMjZwLCBwcml2LCBNVDc1MzFfUEhZX0lBQyk7XG4tXG4gXHRtdDc1MzBfbXV0ZXhfbG9jayhwcml2KTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHJlZyxcbi1cdFx0XHRcdCAhKHJlZyBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbitcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHJlZyxcbitcdFx0XHRcdCAgICAgICAhKHJlZyBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTcwMSw4ICs2ODcsOCBAQCBtdDc1MzFfaW5kX2MyMl9waHlfd3JpdGUoc3RydWN0IG10NzUzMF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZ251bSxcbiBcbiBcdG10NzUzMF9taWlfd3JpdGUocHJpdiwgTVQ3NTMxX1BIWV9JQUMsIHJlZyB8IE1UNzUzMV9QSFlfQUNTX1NUKTtcbiBcbi1cdHJldCA9IHJlYWR4X3BvbGxfdGltZW91dChfbXQ3NTMwX3VubG9ja2VkX3JlYWQsIFx1MDAyNnAsIHJlZyxcbi1cdFx0XHRcdCAhKHJlZyBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbitcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZXJlZ21hcCwgTVQ3NTMxX1BIWV9JQUMsIHJlZyxcbitcdFx0XHRcdCAgICAgICAhKHJlZyBcdTAwMjYgTVQ3NTMxX1BIWV9BQ1NfU1QpLCAyMCwgMTAwMDAwKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTE2MjYsMjIgKzE2MTIsMjYgQEAgbXQ3NTMwX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbiBzdGF0aWMgaW50XG4gbXQ3NTMwX3ZsYW5fY21kKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdiwgZW51bSBtdDc1MzBfdmxhbl9jbWQgY21kLCB1MTYgdmlkKVxuIHtcbi1cdHN0cnVjdCBtdDc1MzBfZHVtbXlfcG9sbCBwO1xuIFx0dTMyIHZhbDtcbiBcdGludCByZXQ7XG4gXG4gXHR2YWwgPSBWVENSX0JVU1kgfCBWVENSX0ZVTkMoY21kKSB8IHZpZDtcbiBcdG10NzUzMF93cml0ZShwcml2LCBNVDc1MzBfVlRDUiwgdmFsKTtcbiBcbi1cdElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoXHUwMDI2cCwgcHJpdiwgTVQ3NTMwX1ZUQ1IpO1xuLVx0cmV0ID0gcmVhZHhfcG9sbF90aW1lb3V0KF9tdDc1MzBfcmVhZCwgXHUwMDI2cCwgdmFsLFxuLVx0XHRcdFx0ICEodmFsIFx1MDAyNiBWVENSX0JVU1kpLCAyMCwgMjAwMDApO1xuK1x0bXQ3NTMwX211dGV4X2xvY2socHJpdik7XG4rXG4rXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMF9WVENSLCB2YWwsXG4rXHRcdFx0XHQgICAgICAgISh2YWwgXHUwMDI2IFZUQ1JfQlVTWSksIDIwLCAyMDAwMCk7XG4rXHRpZiAoIXJldClcbitcdFx0cmV0ID0gcmVnbWFwX3JlYWQocHJpdi1cdTAwM2VyZWdtYXAsIE1UNzUzMF9WVENSLCBcdTAwMjZ2YWwpO1xuK1xuK1x0bXQ3NTMwX211dGV4X3VubG9jayhwcml2KTtcbitcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJwb2xsIHRpbWVvdXRcXG5cIik7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG4gXG4tXHR2YWwgPSBtdDc1MzBfcmVhZChwcml2LCBNVDc1MzBfVlRDUik7XG4gXHRpZiAodmFsIFx1MDAyNiBWVENSX0lOVkFMSUQpIHtcbiBcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJyZWFkIFZUQ1IgaW52YWxpZFxcblwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNTo0MC40MjE0MzU1MzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzA4Mjk2MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaCBmb3IgVmlydHVhbGl6YXRpb24gRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBNVDc1MzAgRFNBIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBtdDc1MzAtbWRpby5jYCBhbmQgYG10NzUzMC5jYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIGJlZWZpbmcgdXAgdGhlIHJlZ2lzdGVyIGFjY2Vzcywgc3dhcHBpbmcgb3V0IGByZWFkeF9wb2xsX3RpbWVvdXRgIGZvciBgcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0YCBhbmQgZ2V0dGluZyBtb3JlIGV4cGxpY2l0IHdpdGggdGhlIGxvY2tpbmcuIFBsdXMsIHRoZXJlJ3Mgc29tZSBlcnJvciBoYW5kbGluZyByZWZpbmVtZW50IGluIGBtdDc1MzBfcmVnbWFwX3JlYWRgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gKnRlc3QqIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gRFNBIGRyaXZlcnMsIGFzIEkga25vdywgYXJlIHVzdWFsbHkgdGlnaHRseSBjb3VwbGVkIHdpdGggdGhlIGhhcmR3YXJlLCBsaWtlIE1lZGlhVGVrJ3MgTVQ3NTMwIHN3aXRjaC5cblxuU28sIHRoZSBuZXh0IHN0ZXAgZm9yIG1lIGlzIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBjYW4gYmUgZW11bGF0ZWQgb3IsIGF0IGxlYXN0LCB0cmlnZ2VyZWQgc29tZWhvdyB3aXRoaW4gYSBRRU1VIHNldHVwLiBTaW5jZSBpdOKAmXMgYSBEU0EgZHJpdmVyLCBpdCdzIGxpa2VseSB0YWxraW5nIHRvIGFuIE1ESU8gb3IgU1BJIGJ1cyBvbiBzb21lIGVtYmVkZGVkIFNvQy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmNgIGZpbGUgaXRzZWxmLCBhbmQgSSBuZWVkIHRvIGxvb2sgYXQgaXRzIEtjb25maWcuIEtub3dpbmcgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB3aWxsIGhlbHAgdG8gZ2F1Z2UgaWYgdGhlIGRyaXZlciBjYW4gYmUgYnVpbHQgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc29tZSBsZXZlbCBvZiB2aXJ0dWFsaXphdGlvbiBvciBzaW11bGF0ZWQgaW50ZXJhY3Rpb24uIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIGFuZCBpZiBhbnkgcGFydHMgb2YgdGhpcyBkcml2ZXIgY2FuIG9wZXJhdGUgc3RhbmQtYWxvbmUsIG9yIHJlcXVpcmUgc3BlY2lmaWMgaGFyZHdhcmUgc2V0dXBzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjEyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MTU6NDUuNzI5NzM2OTM4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MzA2Mjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfRFNBX01UNzUzMFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0yOT1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2RzYS9sYW50aXEvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzozMTpjb25maWcgTkVUX0RTQV9NVDc1MzBcXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXQgc3dpdGNoIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzo0Mzpjb25maWcgTkVUX0RTQV9NVDc1MzBfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgTURJTyBpbnRlcmZhY2UgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTMtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NTQ6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01NSU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy01NS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MTU6NDUuNzg4MDUwNjM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0MjgzNzU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB1bmRlcnN0YW5kaW5nLCBwcmVzZW50ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipEZXBlbmRlbmNpZXMgb2YgYE5FVF9EU0FfTVQ3NTMwYCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBgTkVUX0RTQV9NVDc1MzBgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXaGF0IGRvZXMgdGhpcyB0aGluZyBhY3R1YWxseSAqbmVlZCogdG8gZnVuY3Rpb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gb3RoZXIgY29tcG9uZW50cyB3aXRoaW4gdGhlIGtlcm5lbCdzIG5ldHdvcmsgc3Vic3lzdGVtLiBUaGlzIGtpbmQgb2YgZGVwZW5kZW5jeSBhbmFseXNpcyBpcyBjcnVjaWFsIGZvciBwcm9wZXIgY29uZmlndXJhdGlvbiBhbmQgYXZvaWRpbmcgZnV0dXJlIGJ1aWxkIGhlYWRhY2hlcy4gS25vd2luZyBpdHMgZGVwZW5kZW5jaWVzIGluZm9ybXMgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3MgYXJjaGl0ZWN0dXJlIGFuZCBwb3RlbnRpYWwgcG9pbnRzIG9mIGZhaWx1cmUgb3IgY29uZmxpY3QuIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwNDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNTo0OC42MzA4OTExNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzMzNzY5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX0RTQV9NVDc1MzBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWc9Mjk9c291cmNlIFxcXCJkcml2ZXJzL25ldC9kc2EvbGFudGlxL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNDItXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6NDM6Y29uZmlnIE5FVF9EU0FfTVQ3NTMwX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTUzLVxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnOjU0OmNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWctNTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzUzMCBNTUlPIGludGVyZmFjZSBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjQ4LjY4NDIzNjgzM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDIyODk4NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIERpdmUgZm9yIERTQSBOZXR3b3JraW5nIERyaXZlcnMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZHNhL0tjb25maWdgIGZpbGUuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBsaW5lIDMxLCB3aGljaCBpcyB3aGVyZSB0aGUgaGVhcnQgb2YgbWFueSBuZXR3b3JraW5nIGRyaXZlcnMgcmVzaWRlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUgKERTQSkgbmV0d29ya2luZyBkZXZpY2VzIGFyZSBsaWtlbHkgZGVmaW5lZCwgYW5kIEkgc3VzcGVjdCBzb21lIGNydWNpYWwgdmFyaWFibGVzIGFyZSB0aGVyZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFuZCBob3cgdGhleSdyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGUgS2NvbmZpZyBzeXN0ZW0uIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgZHJpdmVycyBhdmFpbGFibGUgYW5kIHRoZSBjb25maWd1cmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlbS4gSG9wZWZ1bGx5LCB0aGlzIEtjb25maWcgZmlsZSBvZmZlcnMgY2x1ZXMgdG8gZGV2aWNlIGRlcGVuZGVuY2llcyBhbmQgbGltaXRhdGlvbnMsIG9yIGV2ZW4gb3Bwb3J0dW5pdGllcyBmb3Igb3B0aW1pemF0aW9uLCB0aGF0IGFyZSByZWxhdGVkIHRvIHRoZSBMaW51eCBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MDgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNTo1MS43ODY1MzE4OThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMTpcXHRjb25maWcgTkVUX0RTQV9NVDc1MzBcXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc1MzAgYW5kIE1UNzUzMSBFdGhlcm5ldCBzd2l0Y2ggc3VwcG9ydFxcXCJcXG4gIDMzOlxcdFxcdHNlbGVjdCBORVRfRFNBX1RBR19NVEtcXG4gIDM0OlxcdFxcdHNlbGVjdCBSRUdNQVBfSVJRXFxuICAzNTpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NRElPXFxuICAzNjpcXHRcXHRpbXBseSBORVRfRFNBX01UNzUzMF9NTUlPXFxuICAzNzpcXHRcXHRoZWxwXFxuICAzODpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgRXRoZXJuZXRcXG4gIDM5OlxcdFxcdCAgc3dpdGNoIGNoaXBzLiBNdWx0aS1jaGlwIG1vZHVsZSBNVDc1MzAgaW4gTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDQwOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MsIGFuZCBidWlsdC1pbiBzd2l0Y2ggaW4gTVQ3OTg4IFNvQyBhcmVcXG4gIDQxOlxcdFxcdCAgc3VwcG9ydGVkIGFzIHdlbGwuXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NRElPXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1ESU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDQ2OlxcdFxcdHNlbGVjdCBNRURJQVRFS19HRV9QSFlcXG4gIDQ3OlxcdFxcdHNlbGVjdCBQQ1NfTVRLX0xZTlhJXFxuICA0ODpcXHRcXHRoZWxwXFxuICA0OTpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTWVkaWFUZWsgTVQ3NTMwIGFuZCBNVDc1MzEgc3dpdGNoXFxuICA1MDpcXHRcXHQgIGNoaXBzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIGFzIHdlbGwgYXMgbXVsdGktY2hpcFxcbiAgNTE6XFx0XFx0ICBtb2R1bGUgTVQ3NTMwIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUgTVQ3NjIxQVQsIE1UNzYyMURBVCxcXG4gIDUyOlxcdFxcdCAgTVQ3NjIxU1QgYW5kIE1UNzYyM0FJIFNvQ3MuXFxuICA1MzpcXHRcXG4gIDU0OlxcdGNvbmZpZyBORVRfRFNBX01UNzUzMF9NTUlPXFxuICA1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3NTMwIE1NSU8gaW50ZXJmYWNlIGRyaXZlclxcXCJcXG4gIDU2OlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NVDc1MzBcXG4gIDU3OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICA1ODpcXHRcXHRpbXBseSBNRURJQVRFS19HRV9TT0NfUEhZXFxuICA1OTpcXHRcXHRoZWxwXFxuICA2MDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gRXRoZXJuZXQgc3dpdGNoIGZvdW5kXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjUxLjc4NjYyNzYyOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTg5MTU3NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTVQ3NTMwL01UNzUzMSBFdGhlcm5ldCBTd2l0Y2ggRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIHRhcmdldGluZyBNZWRpYVRlaydzIE1UNzUzMCBhbmQgTVQ3NTMxIEV0aGVybmV0IHN3aXRjaCBjaGlwcy4gUmlnaHQsIHRoZXNlIGFyZSAqcGh5c2ljYWwqIGhhcmR3YXJlIHN3aXRjaGVzLCBub3Qgc29tZSB2aXJ0dWFsIGNvbnN0cnVjdC4gVGhhdCBpbW1lZGlhdGVseSByYWlzZXMgdGhlIHF1ZXN0aW9uOiBjYW4gSSBlZmZlY3RpdmVseSBmdXp6IHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGxlYW4gdG93YXJkcyBjb25zaWRlcmluZyBNRElPIGRldmljZXMuIE5vdywgdHJhZGl0aW9uYWxseSwgeW91IGNhbiBmdXp6IE1ESU8gZGV2aWNlcywgcHJvdmlkZWQgeW91J3ZlIGdvdCBNRElPIGJ1cyBlbXVsYXRpb24gb3IgaWYgc3l6a2FsbGVyIGNhbiBpbmplY3QgdGhlc2UgZGV2aWNlcy5cblxuQnV0LCBoYW5nIG9uLi4uIGRvZXMgc3l6a2FsbGVyIGhhdmUgc29tZXRoaW5nIGdlbmVyaWMgZm9yIHRoaXM/IERvZXMgaXQgc3VwcG9ydCBpbnN0YW50aWF0aW5nIGFyYml0cmFyeSBNRElPIGRldmljZXMsIHBlcmhhcHMgbGV2ZXJhZ2luZyBhIGR1bW15IE1ESU8gYnVzPyBJIGRvbid0IHJlY2FsbCBzZWVpbmcgYSBzcGVjaWZpYyBgc3l6X21kaW9fYnVzYCBjYWxsIG9yIHNpbWlsYXIuIEknbGwgbmVlZCB0byBjaGVjayBteSBmYWN0cyBvbiB0aGF0LiBObywgSSBkb24ndCBiZWxpZXZlIHRoZXJlIGlzLCBhdCBsZWFzdCBub3QgaW4gYSB3YXkgdGhhdCBwcm92aWRlcyBmdWxseSBnZW5lcmljIGRldmljZSBpbmplY3Rpb24uXG5cbkFscmlnaHQsIHNvIHRoZSByZWFsIHF1ZXN0aW9uIGJlY29tZXM6IGhvdyBjYW4gSSAqcmVhY2gqIHRoaXMgY29kZSBhbmQgd2hhdCBhcmUgdGhlIGVudHJ5cG9pbnRzIHRvIGF0dGFjaz8gSXQgYXBwZWFycyB0aGlzIGRyaXZlciByZWdpc3RlcnMgYW4gTURJTyBkcml2ZXIuIFRoYXQgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4Mjk0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MTU6NTYuMDQ1NTQ2ODc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTg5NzMwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYz0yNDY9c3RhdGljIHZvaWQgbXQ3NTMwX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI1Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTg6c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBtdDc1MzBfbWRpb19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMjU5LVxcdC5wcm9iZSAgPSBtdDc1MzBfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjctXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MjY4Om1kaW9fbW9kdWxlX2RyaXZlcihtdDc1MzBfbWRpb19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTI2OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDA6MTU6NTYuMTAxNDU2MzY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzIyMjU0NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTURJTyBEZXZpY2UgSW5zdGFudGlhdGlvbiBDb251bmRydW0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGRyaXZlciBhbmQgaXQgcmVnaXN0ZXJzIGFuIGBtZGlvX2RyaXZlcmAuIE15IGZpcnN0IHRob3VnaHQgaXM6IGNhbiBJIHRyaWdnZXIgdGhpcyB0aGluZyBmcm9tIHVzZXJzcGFjZT8gQ2FuIEksIGZvciBleGFtcGxlLCBkaXJlY3RseSBpbnN0YW50aWF0ZSBhbiBNRElPIGRldmljZT8gVGhlIGFuc3dlciwgYXMgSSBrbm93IGl0LCBpcyBhIGZpcm0gbm8uIFRoZXNlIHRoaW5ncyBhcmUgYWxtb3N0IGFsd2F5cyBicm91Z2h0IHRvIGxpZmUgdGhyb3VnaCBEZXZpY2UgVHJlZSBvciBBQ1BJLlxuXG5CdXQgdGhlbi4uLiBhIGxpdHRsZSBmbGlja2VyIG9mIGEgdGhvdWdodC4gSSdtIHRoaW5raW5nIGFib3V0IHN5emthbGxlci4gRG9lcyBpdCBoYXZlIHNvbWUgY2xldmVyIHdheSB0byBpbmplY3QgRGV2aWNlIFRyZWUgbm9kZXMgb24gdGhlIGZseT8gUXVpY2tseSwgSSBzaG9vdCB0aGF0IGRvd24uIE5vLCBzeXprYWxsZXIgZG9lc24ndCBoYXZlIHRoYXQgbGV2ZWwgb2YgZHluYW1pc20uXG5cbldhaXQuLi4gaGFuZyBvbiBhIG1pbnV0ZS4gV2hhdCBhYm91dCBzeXNmcz8gQ2FuIHVzZXJzcGFjZSBtYXliZSB3cmFuZ2xlIGFuIE1ESU8gZGV2aWNlIGludG8gZXhpc3RlbmNlIHRocm91Z2ggc3lzZnM/IE1heWJlIHRoZSBNRElPIGJ1cyBpdHNlbGYgZXhwb3NlcyBzb21ldGhpbmcgbGlrZSBhIGBuZXdfZGV2aWNlYCBlbnRyeT8gTGV0IG1lIGdvIGFuZCBjaGVjayBpZiB0aGUgTURJTyBidXMgc3VwcG9ydHMgbmV3IGRldmljZSB2aWEgc3lzZnMuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IGF2ZW51ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAwMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjU5LjczMzY4NjA5OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwNDkyMDEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE1OjU5Ljc4ODc1ODdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3NTM3ODQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE1ESU8gQnVzIERyaXZlcioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGludGVyYWN0cyB3aXRoIHBoeXNpY2FsIGxheWVyIGRldmljZXMgb3ZlciB0aGUgTURJTyBidXMuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgSSBuZWVkIHRvIHNlZSBob3cgdGhlIGJ1cyBpcyBpbml0aWFsaXplZCBhbmQgaG93IGl0IGhhbmRsZXMgY29tbXVuaWNhdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgLiBUaGF0IGZpbGUgc2VlbXMgbGlrZSBhIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgdG8gZ2V0IGFuIG92ZXJ2aWV3IG9mIHRoZSBidXMgbWFuYWdlbWVudCByb3V0aW5lcy4gSSdtIGhvcGluZyB0byBmaW5kIHRoZSBjb3JlIGZ1bmN0aW9ucyBmb3IgYnVzIHByb2JpbmcsIGRldmljZSBlbnVtZXJhdGlvbiwgcmVhZC93cml0ZSBvcGVyYXRpb25zLCBhbmQgcG90ZW50aWFsbHkgaW50ZXJydXB0IGhhbmRsaW5nLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVyYWN0aW9ucyBoZXJlLCBzbyBzZWVpbmcgdGhlIHNvdXJjZSBjb2RlIHNob3VsZCBjbGFyaWZ5IHRoZSBidXMgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTM1MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE2OjAyLjY2NDE0MDg4NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1MzA2MDM4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXdfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNjowMi44NTk0NTk5MDJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU4NDgyMDA2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNRElPIERldmljZSBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgTURJTyBkZXZpY2Ugc2l0dWF0aW9uLiBJdCdzIGJlY29taW5nIGNsZWFyIHRoYXQgTURJTyBkZXZpY2VzIGFyZW4ndCBkaXJlY3RseSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGBtdDc1MzBfbWRpb19kcml2ZXJgJ3MgcHJvYmUgZnVuY3Rpb24gaXMsIGJ5IGRlZmF1bHQsIGdvaW5nIHRvIGJlIGJ5cGFzc2VkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRha2Ugc29tZXRoaW5nIGxpa2UgUUVNVS4gV2l0aG91dCBhIHNwZWNpZmljIERldmljZSBUcmVlIGVudHJ5IHRvIHRyaWdnZXIgdGhlIGRyaXZlciwgdGhhdCBwcm9iZSBmdW5jdGlvbiB3aWxsIG5ldmVyIGV4ZWN1dGUuIElmIHRoZSBwcm9iZSBuZXZlciBleGVjdXRlcywgdGhlIGNvZGUgd2l0aGluIGl0IHJlbWFpbnMgdW5yZWFjaGFibGUsIGVmZmVjdGl2ZWx5IGRlYWQgY29kZSBmcm9tIHRoZSBzdGFuZHBvaW50IG9mIFFFTVUuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCB0aGUgYG10NzUzMF9tbWlvX2RyaXZlcmAgc3RpbGwgZXhpc3RzLCBhbmQgaXQncyBub3QgdGhlIHNhbWUgdGhpbmcuIEkgbmVlZCB0byBwaXZvdCBhbmQgY29uc2lkZXIgd2hhdCdzIGhhcHBlbmluZyB3aXRoIHRoZSBNTUlPIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTU2OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE2OjA2LjQ0NDI4NDcwM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0NDM5MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jPTc1PXN0YXRpYyB2b2lkIG10Nzk4OF9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtODYtXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmM6ODc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXQ3OTg4X3BsYXRmb3JtX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYy04OC1cXHQucHJvYmUgID0gbXQ3OTg4X3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtOTUtfTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYzo5Njptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG10Nzk4OF9wbGF0Zm9ybV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTk3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNjowNi41MDA3NTk4NTRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc2ODI4MjA0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFN5emthbGxlcidzIFBsYXRmb3JtIERldmljZSBJbnN0YW50aWF0aW9uIENhcGFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGhhbmRsZXMgcGxhdGZvcm0gZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB3aGV0aGVyIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHN5c2ZzIG9yIHNvbWUgb3RoZXIgdXNlci1zcGFjZSBpbnRlcmZhY2UuIEJ1dCwgaG9sZCBvbiwgcGxhdGZvcm0gZGV2aWNlcyB1c3VhbGx5IGNvbWUgZnJvbSBEZXZpY2UgVHJlZSAoRFQpLCBBQ1BJLCBvciBhcmUgaGFyZGNvZGVkIHdpdGhpbiB0aGUgYm9hcmQgZmlsZXMsIHJpZ2h0PyBOb3csIEkgd2FzIHdvbmRlcmluZywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhIHdheSB0byBpbmplY3QgdGhlc2UgcGxhdGZvcm0gZGV2aWNlcyBhdCBhbGw/XG5cbkkgcXVpY2tseSB3ZW50IHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdC4gRG9lcyBpdCBoYXZlIGEgYHN5el9wbGF0Zm9ybV9kZXZpY2VfYWRkYCBjYWxsPyBObywgdGhhdCdzIG5vdCByaW5naW5nIGFueSBiZWxscy4gSXMgdGhlcmUgYSBgc3l6X2RldmxpbmtfLi4uYCBmdW5jdGlvbiB0aGF0IEknbSBmb3JnZXR0aW5nPyBOb3BlLiBBY3R1YWxseSwgc3l6a2FsbGVyIGRvZXNuJ3QgaGF2ZSBhICpnZW5lcmljKiBtZXRob2QgZm9yIGluc3RhbnRpYXRpbmcgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIGl0J3MgYSBzcGVjaWZpYyBwc2V1ZG8tc3lzY2FsbCBvciBhIFBDSS9VU0IgZGV2aWNlLiBUaGVuIEkgdGhvdWdodCBhYm91dCB0aGUgc3BlY2lmaWNzLlxuXG5BaCwgeWVzLCBvZiBjb3Vyc2UhIFN5emthbGxlciBoYXMgYHN5el91c2JfY29ubmVjdGAgZm9yIFVTQiBkZXZpY2VzLCBgc3l6X3BjaV9jb25uZWN0YCBmb3IgUENJIGRldmljZXMgKHVzaW5nIHRoZSB2aGNpL3BjaS10ZXN0IGZyYW1ld29yayksIGFuZCBgc3l6XzgwMjExX2luamVjdGAgZm9yIHdpZmksIGFtb25nIG90aGVyIHR5cGVzIG9mIGRldmljZXMuIEJ1dCBhcyBJJ20gdGhpbmtpbmcgYWJvdXQgaXQsIEkgcmVhbGl6ZWQgdGhhdCB0aGVyZSdzIG5vIGdlbmVyaWMgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhpbmdzIGxpa2UgTURJTyBvciBwbGF0Zm9ybSBkZXZpY2VzIGluIGdlbmVyYWwuIEl0IHNlZW1zIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgdGhlcmUgaXMgYW55IHBhdGh3YXkgdG8gcmVhY2ggdGhlIGRyaXZlcidzIGBtdDc1MzBfcHJvYmVgIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDk5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE2OjEyLjI2OTA0NDk3N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwODk4NjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc1MzBfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTE1ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmM6MTU1Om10NzUzMF9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tZGlvLmMtMTU2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jLTE3MC1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoxNzE6XFx0cmV0ID0gbXQ3NTMwX3Byb2JlX2NvbW1vbihwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0xNzItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5jPTI1OD1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIG10NzUzMF9tZGlvX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYzoyNTk6XFx0LnByb2JlICA9IG10NzUzMF9wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1kaW8uYy0yNjAtXFx0LnJlbW92ZSA9IG10NzUzMF9yZW1vdmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYz0zMD1tdDc5ODhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jLTQyLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbW1pby5jOjQzOlxcdHJldCA9IG10NzUzMF9wcm9iZV9jb21tb24ocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC1tbWlvLmMtNDQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zNDk3PWludFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozNDk4Om10NzUzMF9wcm9iZV9jb21tb24oc3RydWN0IG10NzUzMF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNDk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zNTI4LX1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzUyOTpFWFBPUlRfU1lNQk9MX0dQTChtdDc1MzBfcHJvYmVfY29tbW9uKTtcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzUzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuaD05NDE9c3RhdGljIGlubGluZSB2b2lkIElOSVRfTVQ3NTMwX0RVTU1ZX1BPTEwoc3RydWN0IG10NzUzMF9kdW1teV9wb2xsICpwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk0Ny1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmg6OTQ4OmludCBtdDc1MzBfcHJvYmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5oLTk0OS12b2lkIG10NzUzMF9yZW1vdmVfY29tbW9uKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDAwOjE2OjE0LjQ3ODA0Njc0N1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzkzOTA2MzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIERyaXZlciBBbmFseXNpcyoqXG5cbk9rYXksIGhlcmUncyB0aGUgZGVhbC4gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgbXQ3NTMwX3Byb2JlYCBmdW5jdGlvbiwgYW5kIGl0J3MgZmxhZ2dlZCBhcyBhbiBNRElPIGRyaXZlciBwcm9iZS4gVGhlbiwgdGhlcmUncyBgbXQ3OTg4X3Byb2JlYCBhcyBhIHBsYXRmb3JtIGRyaXZlciBwcm9iZS4gRnJvbSBteSB1bmRlcnN0YW5kaW5nLCBhbmQgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgbmVpdGhlciBNRElPIG5vciBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBkeW5hbWljYWxseSBzcHVuIHVwIGJ5IHN5emthbGxlci4gVGhlIG9ubHkgZXhjZXB0aW9ucyBhcmUgd2hlbiB3ZSdyZSBkZWFsaW5nIHdpdGggdmlydHVhbCBkcml2ZXJzLCBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZrbXNgLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgdGhlIGNhc2UgaGVyZS5cblxuU28sIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgZHJpdmVyIGlzIGp1c3QgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBzZXR1cCwgbGlrZSB0aGUgZW52aXJvbm1lbnRzIHdlJ3JlIHVzZWQgdG8gc2VlaW5nIGluIFFFTVUgb3IgR0NFLiBJIHdhbnRlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIHNvIEkgY2hlY2tlZCDigJMgaXMgdGhlcmUgYW55IFFFTVUgZW11bGF0aW9uIGZvciB0aGUgTVQ3NTMwPyBOb3BlLCBkb2Vzbid0IGxvb2sgbGlrZSBpdC4gUUVNVSBtaWdodCB0b3VjaCBvbiBzb21lIE1lZGlhVGVrIGJvYXJkcywgYnV0IHN5emthbGxlciB1c3VhbGx5IHJ1bnMgb24gdGhlIGdlbmVyaWMgYHEzNWAgb3IgYHZpcnRgIHg4Nl82NCBvciBhcm02NCB2aXJ0IGJvYXJkcy5cblxuVGhlcmVmb3JlLCB0aGUgaGFyZHdhcmUgaXNuJ3QgcHJlc2VudCwgYW5kIGl0J3Mgbm90IGJlaW5nIGVtdWxhdGVkIG9yIGluamVjdGFibGUuIEl0IGxvb2tzIGxpa2UgaXQncyBhIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBNZWRpYVRlayBzd2l0Y2gsIHNwZWNpZmljYWxseSB0aGUgTVQ3NTMwL01UNzUzMS4gU2luY2UgdGhlcmUncyBubyB3YXkgdG8gZ2V0IHRoaXMgaGFyZHdhcmUgaW4sIG9yIGV2ZW4gZW11bGF0ZSBpdCwgdGhlIGNvZGUgcGF0aCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLlxuXG5TbywgSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJhdGlvbmFsZSBpcyBzdHJhaWdodGZvcndhcmQ6IGl0J3MgYSBkcml2ZXIgZm9yIHNwZWNpYWxpemVkIGhhcmR3YXJlIHRoYXQncyBub3QgYWNjZXNzaWJsZSBpbiB0aGVzZSBzdGFuZGFyZCBlbnZpcm9ubWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDQ2LCJPdXRwdXRUb2tlbnMiOjEwOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwMDoxNjoxOS44NzE5NTg4NzlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBEU0Egc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaGVzIGNvbm5lY3RlZCB2aWEgTURJTyBvciBNTUlPIG9uIE1lZGlhVGVrIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSBhbmQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTWVkaWFUZWsgTVQ3NTMwL01UNzUzMSBEU0Egc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgZm9yIHNwZWNpZmljIGhhcmR3YXJlIHN3aXRjaGVzIGNvbm5lY3RlZCB2aWEgTURJTyBvciBNTUlPIG9uIE1lZGlhVGVrIFNvQ3MuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSBhbmQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbhjxb[1] Phase: Running StartedAt: 2026-07-29 00:16:33 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbhjxb[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-29 00:16:33 +0000 UTC FinishedAt: 2026-07-29 00:16:38 +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,}