Name: series-workflowgsvsh Phase: Failed StartedAt: 2026-09-08 20:19:39 +0000 UTC FinishedAt: 2026-09-08 20:57:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgsvsh[0] Phase: Succeeded StartedAt: 2026-09-08 20:19:39 +0000 UTC FinishedAt: 2026-09-08 20:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgsvsh[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 20:19:39 +0000 UTC FinishedAt: 2026-09-08 20:57:43 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDIwOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChzcGVjaWZpY2FsbHkgRS1Td2l0Y2ggYnJpZGdlIG9mZmxvYWRpbmcgbG9naWMpLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBoYXJkd2FyZSBvciBTbWFydE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMDo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEwNTBhMzRiYWU0OGFkZDg1ODdmNGEwYzU1ZDczYTUzN2E2MjEyYmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDIwOjU3OjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jXG5pbmRleCBiYWFjMzhiZWNlMTRhLi41NjU5MmUyZTZiOWI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY1xuQEAgLTEwNCw2ICYjNDM7MTA0LDI4IEBAIG1seDVfZXN3X2JyaWRnZV9sb3dlcl9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBtXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiYjNDM7XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2FkcyxcbiYjNDM7XHRcdFx0XHRcdCAgICB1MTYgKnZwb3J0X251bSwgdTE2ICplc3dfb3duZXJfdmhjYV9pZClcbiYjNDM7e1xuJiM0MztcdGlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cdTAwM2Vlc3csIHZwb3J0X251bSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIGVzd19vd25lcl92aGNhX2lkKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cygqdnBvcnRfbnVtLCAqZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuJiM0MztcdFx0XHRcdFx0XHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxuJiM0MztcdFx0XHRcdFx0XHQgIHUxNiAqdnBvcnRfbnVtLCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVx1MDAzZWVzdywgdnBvcnRfbnVtLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICAgZXN3X293bmVyX3ZoY2FfaWQpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbWx4NV9lc3dfYnJpZGdlX3BvcnRfZXhpc3RzKCp2cG9ydF9udW0sICplc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9pc19sb2NhbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcmVwLFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXG4ge1xuQEAgLTIxOCw4ICYjNDM7MjQwLDcgQEAgbWx4NV9lc3dfYnJpZGdlX3BvcnRfb2JqX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVx1MDAzZWVzdywgXHUwMDI2dnBvcnRfbnVtLFxuLVx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXG4mIzQzO1x0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFx1MDAyNnZwb3J0X251bSwgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdHBvcnRfb2JqX2luZm8tXHUwMDNlaGFuZGxlZCA9IHRydWU7XG5AQCAtMjUxLDggJiM0MzsyNzIsNyBAQCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9vYmpfZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X21kYiAqbWRiO1xuIFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XG4gXG4tXHRpZiAoIW1seDVfZXN3X2JyaWRnZV9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KGRldiwgYnJfb2ZmbG9hZHMtXHUwMDNlZXN3LCBcdTAwMjZ2cG9ydF9udW0sXG4tXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmVzd19vd25lcl92aGNhX2lkKSlcbiYjNDM7XHRpZiAoIW1seDVfZXN3X2JyaWRnZV9yZXBfcG9ydF9sb29rdXAoZGV2LCBicl9vZmZsb2FkcywgXHUwMDI2dnBvcnRfbnVtLCBcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0cG9ydF9vYmpfaW5mby1cdTAwM2VoYW5kbGVkID0gdHJ1ZTtcbkBAIC0yODMsOCAmIzQzOzMwMyw4IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9hdHRyX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XG4gXHRpbnQgZXJyID0gMDtcbiBcbi1cdGlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cdTAwM2Vlc3csIFx1MDAyNnZwb3J0X251bSxcbi1cdFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuJiM0MztcdGlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChkZXYsIGJyX29mZmxvYWRzLCBcdTAwMjZ2cG9ydF9udW0sXG4mIzQzO1x0XHRcdFx0XHRcdCAgIFx1MDAyNmVzd19vd25lcl92aGNhX2lkKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHRwb3J0X2F0dHJfaW5mby1cdTAwM2VoYW5kbGVkID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuY1xuaW5kZXggODdiNWZkMzQ5NTk0NS4uYWM5MGNjZGExMjcyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmNcbkBAIC0xNjg2LDYgJiM0MzsxNjg2LDEyIEBAIGludCBtbHg1X2Vzd19icmlkZ2VfdnBvcnRfcGVlcl91bmxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmJyX25ldGRldiwgdTE2IHZwb3J0X251XG4gXHRcdFx0XHRcdCAgICBleHRhY2spO1xuIH1cbiBcbiYjNDM7Ym9vbCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHModTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLFxuJiM0MztcdFx0XHRcdCBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2FkcylcbiYjNDM7e1xuJiM0MztcdHJldHVybiBtbHg1X2Vzd19icmlkZ2VfcG9ydF9sb29rdXAodnBvcnRfbnVtLCBlc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBtbHg1X2Vzd19icmlkZ2VfcG9ydF92bGFuX2FkZCh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsIHUxNiB2aWQsIHUxNiBmbGFncyxcbiBcdFx0XHRcdCAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsXG4gXHRcdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuaFxuaW5kZXggZDZmNTM5MTYxOTkzMC4uYTRlNTljYzIxMDg5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcbkBAIC04MCw2ICYjNDM7ODAsOCBAQCBpbnQgbWx4NV9lc3dfYnJpZGdlX3ZsYW5fcHJvdG9fc2V0KHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgdTE2IHByb1xuIFx0XHRcdFx0ICAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMpO1xuIGludCBtbHg1X2Vzd19icmlkZ2VfbWNhc3Rfc2V0KHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgYm9vbCBlbmFibGUsXG4gXHRcdFx0ICAgICAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMpO1xuJiM0Mztib29sIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cyh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsXG4mIzQzO1x0XHRcdFx0IHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzKTtcbiBpbnQgbWx4NV9lc3dfYnJpZGdlX3BvcnRfdmxhbl9hZGQodTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLCB1MTYgdmlkLCB1MTYgZmxhZ3MsXG4gXHRcdFx0XHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIwOjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMDUwYTM0YmFlNDhhZGQ4NTg3ZjRhMGM1NWQ3M2E1MzdhNjIxMmJkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAyMDo1NzoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jCmluZGV4IGJhYWMzOGJlY2UxNGEuLjU2NTkyZTJlNmI5YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuYwpAQCAtMTA0LDYgJiM0MzsxMDQsMjggQEAgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG0KIAlyZXR1cm4gTlVMTDsKIH0KIAomIzQzO3N0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKJiM0MzsJCQkJCSAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2FkcywKJiM0MzsJCQkJCSAgICB1MTYgKnZwb3J0X251bSwgdTE2ICplc3dfb3duZXJfdmhjYV9pZCkKJiM0Mzt7CiYjNDM7CWlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy0mZ3Q7ZXN3LCB2cG9ydF9udW0sCiYjNDM7CQkJCQkJICAgICAgIGVzd19vd25lcl92aGNhX2lkKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cygqdnBvcnRfbnVtLCAqZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzOwkJCQkJCSAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsCiYjNDM7CQkJCQkJICB1MTYgKnZwb3J0X251bSwgdTE2ICplc3dfb3duZXJfdmhjYV9pZCkKJiM0Mzt7CiYjNDM7CWlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy0mZ3Q7ZXN3LCB2cG9ydF9udW0sCiYjNDM7CQkJCQkJCSAgICAgZXN3X293bmVyX3ZoY2FfaWQpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlyZXR1cm4gbWx4NV9lc3dfYnJpZGdlX3BvcnRfZXhpc3RzKCp2cG9ydF9udW0sICplc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9pc19sb2NhbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcmVwLAogCQkJCSAgICAgc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KQogewpAQCAtMjE4LDggJiM0MzsyNDAsNyBAQCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9vYmpfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJdTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7CiAJaW50IGVycjsKIAotCWlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy0mZ3Q7ZXN3LCAmYW1wO3Zwb3J0X251bSwKLQkJCQkJCSAgICAgICAmYW1wO2Vzd19vd25lcl92aGNhX2lkKSkKJiM0MzsJaWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsICZhbXA7dnBvcnRfbnVtLCAmYW1wO2Vzd19vd25lcl92aGNhX2lkKSkKIAkJcmV0dXJuIDA7CiAKIAlwb3J0X29ial9pbmZvLSZndDtoYW5kbGVkID0gdHJ1ZTsKQEAgLTI1MSw4ICYjNDM7MjcyLDcgQEAgbWx4NV9lc3dfYnJpZGdlX3BvcnRfb2JqX2RlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfbWRiICptZGI7CiAJdTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7CiAKLQlpZiAoIW1seDVfZXN3X2JyaWRnZV9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KGRldiwgYnJfb2ZmbG9hZHMtJmd0O2VzdywgJmFtcDt2cG9ydF9udW0sCi0JCQkJCQkgICAgICAgJmFtcDtlc3dfb3duZXJfdmhjYV9pZCkpCiYjNDM7CWlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF9wb3J0X2xvb2t1cChkZXYsIGJyX29mZmxvYWRzLCAmYW1wO3Zwb3J0X251bSwgJmFtcDtlc3dfb3duZXJfdmhjYV9pZCkpCiAJCXJldHVybiAwOwogCiAJcG9ydF9vYmpfaW5mby0mZ3Q7aGFuZGxlZCA9IHRydWU7CkBAIC0yODMsOCAmIzQzOzMwMyw4IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9hdHRyX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXUxNiB2cG9ydF9udW0sIGVzd19vd25lcl92aGNhX2lkOwogCWludCBlcnIgPSAwOwogCi0JaWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLSZndDtlc3csICZhbXA7dnBvcnRfbnVtLAotCQkJCQkJCSAgICAgJmFtcDtlc3dfb3duZXJfdmhjYV9pZCkpCiYjNDM7CWlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChkZXYsIGJyX29mZmxvYWRzLCAmYW1wO3Zwb3J0X251bSwKJiM0MzsJCQkJCQkgICAmYW1wO2Vzd19vd25lcl92aGNhX2lkKSkKIAkJcmV0dXJuIDA7CiAKIAlwb3J0X2F0dHJfaW5mby0mZ3Q7aGFuZGxlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuYwppbmRleCA4N2I1ZmQzNDk1OTQ1Li5hYzkwY2NkYTEyNzIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmMKQEAgLTE2ODYsNiAmIzQzOzE2ODYsMTIgQEAgaW50IG1seDVfZXN3X2JyaWRnZV92cG9ydF9wZWVyX3VubGluayhzdHJ1Y3QgbmV0X2RldmljZSAqYnJfbmV0ZGV2LCB1MTYgdnBvcnRfbnUKIAkJCQkJICAgIGV4dGFjayk7CiB9CiAKJiM0Mztib29sIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cyh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsCiYjNDM7CQkJCSBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2FkcykKJiM0Mzt7CiYjNDM7CXJldHVybiBtbHg1X2Vzd19icmlkZ2VfcG9ydF9sb29rdXAodnBvcnRfbnVtLCBlc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpOwomIzQzO30KJiM0MzsKIGludCBtbHg1X2Vzd19icmlkZ2VfcG9ydF92bGFuX2FkZCh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsIHUxNiB2aWQsIHUxNiBmbGFncywKIAkJCQkgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLAogCQkJCSAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmgKaW5kZXggZDZmNTM5MTYxOTkzMC4uYTRlNTljYzIxMDg5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5oCkBAIC04MCw2ICYjNDM7ODAsOCBAQCBpbnQgbWx4NV9lc3dfYnJpZGdlX3ZsYW5fcHJvdG9fc2V0KHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgdTE2IHBybwogCQkJCSAgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzKTsKIGludCBtbHg1X2Vzd19icmlkZ2VfbWNhc3Rfc2V0KHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgYm9vbCBlbmFibGUsCiAJCQkgICAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2Fkcyk7CiYjNDM7Ym9vbCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHModTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLAomIzQzOwkJCQkgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMpOwogaW50IG1seDVfZXN3X2JyaWRnZV9wb3J0X3ZsYW5fYWRkKHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgdTE2IHZpZCwgdTE2IGZsYWdzLAogCQkJCSAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsCiAJCQkJICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njc2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgZGVjaWRlIGlmIGZ1enppbmcgaXMgYSB2aWFibGUgYXBwcm9hY2guIE15IGluaXRpYWwgc2NhbiBwb2ludHMgbWUgdG8gY2hhbmdlcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jYCwgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5oYC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBNZWxsYW5veCBtbHg1IGRyaXZlciBjb2RlLCB3aGljaCBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIENvbm5lY3RYLTQsIENvbm5lY3RYLTUsIENvbm5lY3RYLTYsIGFuZCByZWxhdGVkIGhhcmR3YXJlIE5JQ3MsIFNtYXJ0TklDcywgb3IgRS1Td2l0Y2ggb2ZmbG9hZCBmdW5jdGlvbmFsaXR5LgoKTm93LCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRvIHJlZmVyZW5jZSB0aGUgcnVsZXMsIHNwZWNpZmljYWxseSBTZWN0aW9uIDIsIHJlZ2FyZGluZyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZmFsbHMgaW50byB0aGUgY2F0ZWdvcnkgb2YgJiMzNDtWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VJiMzNDsuCgpNZWxsYW5veCYjMzk7cyBtbHg1IGRyaXZlciwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDVgLCBkZWZpbml0ZWx5IHJlcXVpcmVzIGFjdHVhbCBtbHg1IGhhcmR3YXJlIHRvIGluaXRpYWxpemUgYW5kIHByb2JlIHRoZSBkZXZpY2UuIFRoaW5rIHNwZWNpZmljIFBDSSBJRHMgbGlrZSAxNWIzOi4uLi4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgcmVwcmVzZW50b3IgbmV0ZGV2IGNyZWF0aW9uLCBlLXN3aXRjaCwgYW5kIGJyaWRnZSBvZmZsb2FkczsgYWxsIHZlcnkgaGFyZHdhcmUtZGVwZW5kZW50LiBBcyBmYXIgYXMgSSBrbm93LCB0aGVyZSBpc24mIzM5O3QgYSByZWFkaWx5IGF2YWlsYWJsZSBzb2Z0d2FyZSBtb2NrIG9yIHZpcnR1YWwgZGV2aWNlIGZvciBtbHg1IHdpdGhpbiBRRU1VIG9yIHN5emthbGxlciwgd2hpY2ggaXMgdXN1YWxseSBhIGRlYWwtYnJlYWtlciBmb3IgdGhlc2UgZnV6emluZyBlZmZvcnRzLgoKVG8gY29uZmlybSB0aGlzLCBJJiMzOTtsbCBxdWlja2x5IGdyZXAgdGhlIGNvZGViYXNlIHRvIHNlYXJjaCBmb3IgYW55IHNpZ25zIG9mIHZpcnR1YWwgb3IgbW9jayBtbHg1IHN1cHBvcnQuIFRoYXQgc2hvdWxkIGNvbmZpcm0gaWYgaXQmIzM5O3Mgc3RyaWN0bHkgdGllZCB0byBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX01MWDVfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSAmIzQzOz0gLUkkKHNyYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX01MWDVfQ09SRSkgJiM0Mzs9IG1seDVfY29yZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTE0PW1seDVfY29yZS15IDo9XHRtYWluLm8gY21kLm8gZGVidWdmcy5vIGZ3Lm8gZXEubyB1YXIubyBwYWdlYWxsb2MubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNS0jXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MjY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTikgJiM0Mzs9IGVuL3JxdC5vIGVuL3Rpci5vIGVuL3Jzcy5vIGVuL3J4X3Jlcy5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjctXHRcdGVuL2NoYW5uZWxzLm8gZW5fbWFpbi5vIGVuX2NvbW1vbi5vIGVuX2ZzLm8gZW5fZXRodG9vbC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTM5PW1seDVfY29yZS0kKENPTkZJR19NTFg1X0VOX1JYTkZDKSAgICAmIzQzOz0gZW5fZnNfZXRodG9vbC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDA6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTl9EQ0IpICYjNDM7PSBlbl9kY2JubC5vIGVuL3BvcnRfYnVmZmVyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00MS1tbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICYjNDM7PSBlbi9odl92aGNhX3N0YXRzLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9OTM9bWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSAmIzQzOz0gbGliL2h2Lm8gbGliL2h2X3ZoY2Eub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS05Ny0jXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9JUE9JQikgJiM0Mzs9IGlwb2liL2lwb2liLm8gaXBvaWIvZXRodG9vbC5vIGlwb2liL2lwb2liX3ZsYW4ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYz01Nz1ib29sIG1seDVfZXRoX3N1cHBvcnRlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTU4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYzo1OTpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUxYNV9DT1JFX0VOKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYy02MC1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTExOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTEyLVx0c3RydWN0IG1seDVlX2RjYnhfZHAgICAgICAgZGNieF9kcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTctXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuaWNfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1ODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1OS1cdHN0cnVjdCBtbHg1ZV9kY2J4ICAgICAgICAgIGRjYng7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmgtNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oOjc6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC04LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM9MTMyPXZvaWQgbWx4NWVfc2VscV9jYW5jZWwoc3RydWN0IG1seDVlX3NlbHEgKnNlbHEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjE0MDojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTQxLXN0YXRpYyBpbnQgbWx4NWVfZ2V0X2RzY3BfdXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xNTQ9c3RhdGljIGludCBtbHg1ZV9nZXRfdXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjE1NjojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTU3LVx0aWYgKFJFQURfT05DRShwcml2LVx1MDAzZWRjYnhfZHAudHJ1c3Rfc3RhdGUpID09IE1MWDVfUVBUU19UUlVTVF9EU0NQKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jPTI0ODQ9aW50IG1seDVlX3BvbGxfcnhfY3Eoc3RydWN0IG1seDVlX2NxICpjcSwgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM6MjUxNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMtMjUxOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYz0yNjQxPWNvbnN0IHN0cnVjdCBtbHg1ZV9yeF9oYW5kbGVycyBtbHg1aV9yeF9oYW5kbGVycyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNjQ0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYzoyNjQ1OiNlbmRpZiAvKiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNjQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jPTEwMDc9c3RhdGljIGludCBtbHg1ZV9oYWlycGluX2dldF9wcmlvKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jLTEwMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYzoxMDE1OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNi1cdGlmIChwcml2LVx1MDAzZWRjYnhfZHAudHJ1c3Rfc3RhdGUgIT0gTUxYNV9RUFRTX1RSVVNUX1BDUCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jPTg3Mj12b2lkIG1seDVlX2ZyZWVfdHhxc3FfZGVzY3Moc3RydWN0IG1seDVlX3R4cXNxICpzcSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYy05MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYzo5MTg6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfSVBPSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxOS1zdGF0aWMgaW5saW5lIHZvaWRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0zNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oOjM2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0zNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaD0xMzA9dm9pZCBtbHg1aV9wYXJlbnRfcHV0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmgtMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmg6MTMyOiNlbmRpZiAvKiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzMtI2VuZGlmIC8qIF9fTUxYNUVfSVBPQl9IX18gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg9MjQ9dm9pZCBtbHg1X3NkX3B1dF9hZGV2KHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphY3R1YWxfYWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6Mjc6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yOC1ib29sIG1seDVfc2RfaXNfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0zNz12b2lkIG1seDVfc2RfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0zOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDozOTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTQwLXN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqbWx4NV9zZF9nZXRfZGV2Y29tKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD0zOTY9dm9pZCBtbHg1X2Z3X3ZlcnNpb25fcXVlcnkoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICpydW5uaW5nX3Zlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMzk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oOjM5OTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQwMC1pbnQgbWx4NWVfaW5pdCh2b2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDAwCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBtbHg1IEJyaWRnZSBDb2RlKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJyaWRnZSBjb2RlIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXIuIExvb2tzIGxpa2UgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSwgc28gbGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gRnJvbSB0aGUgZmlsZSBsaXN0LCBpdCBzZWVtcyB0aGUgY29yZSBmb2N1cyBpcyBvbiB0aGUgYGJyaWRnZS5jYCBmaWxlcywgc3BlY2lmaWNhbGx5IGluIGJvdGggdGhlIGBlbi9yZXBgIChFdGhlcm5ldC9SZXByZXNlbnRvcikgYW5kIGBlc3dgIChFbWJlZGRlZCBTd2l0Y2gpIHN1YmRpcmVjdG9yaWVzLCBhbmQgYWxzbyB0aGUgaGVhZGVyIGZpbGUgYGJyaWRnZS5oYC4gTXkgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIG9uIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jYCB0byBzZWUgaG93IGl0JiMzOTtzIGJlZW4gdXBkYXRlZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBhbmQgdGhlIGNvbnRleHQgb2YgdGhlIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDA6XHRcdFx0aWYgKHJlcClcbiAxMDE6XHRcdFx0XHRyZXR1cm4gcmVwO1xuIDEwMjpcdFx0fVxuIDEwMzpcdFxuIDEwNDpcdFx0cmV0dXJuIE5VTEw7XG4gMTA1Olx0fVxuIDEwNjpcdFxuIDEwNzpcdHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAxMDg6XHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxuIDEwOTpcdFx0XHRcdFx0XHQgICAgdTE2ICp2cG9ydF9udW0sIHUxNiAqZXN3X293bmVyX3ZoY2FfaWQpXG4gMTEwOlx0e1xuIDExMTpcdFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVx1MDAzZWVzdywgdnBvcnRfbnVtLFxuIDExMjpcdFx0XHRcdFx0XHRcdCAgICAgICBlc3dfb3duZXJfdmhjYV9pZCkpXG4gMTEzOlx0XHRcdHJldHVybiBmYWxzZTtcbiAxMTQ6XHRcbiAxMTU6XHRcdHJldHVybiBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHMoKnZwb3J0X251bSwgKmVzd19vd25lcl92aGNhX2lkLCBicl9vZmZsb2Fkcyk7XG4gMTE2Olx0fVxuIDExNzpcdFxuIDExODpcdHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9sb3dlcl9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAxMTk6XHRcdFx0XHRcdFx0XHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxuIDEyMDpcdFx0XHRcdFx0XHRcdCAgdTE2ICp2cG9ydF9udW0sIHUxNiAqZXN3X293bmVyX3ZoY2FfaWQpXG4gMTIxOlx0e1xuIDEyMjpcdFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVx1MDAzZWVzdywgdnBvcnRfbnVtLFxuIDEyMzpcdFx0XHRcdFx0XHRcdFx0ICAgICBlc3dfb3duZXJfdmhjYV9pZCkpXG4gMTI0Olx0XHRcdHJldHVybiBmYWxzZTtcbiAxMjU6XHRcbiAxMjY6XHRcdHJldHVybiBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHMoKnZwb3J0X251bSwgKmVzd19vd25lcl92aGNhX2lkLCBicl9vZmZsb2Fkcyk7XG4gMTI3Olx0fVxuIDEyODpcdFxuIDEyOTpcdHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9pc19sb2NhbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcmVwLFxuIDEzMDpcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXG4gMTMxOlx0e1xuIDEzMjpcdFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG4gMTMzOlx0XHRzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdjtcbiAxMzQ6XHRcbiAxMzU6XHRcdGlmICghbWx4NV9lc3dfYnJpZGdlX2Rldl9zYW1lX2VzdyhyZXAsIGVzdykpXG4gMTM2Olx0XHRcdHJldHVybiBmYWxzZTtcbiAxMzc6XHRcbiAxMzg6XHRcdHByaXYgPSBuZXRkZXZfcHJpdihyZXApO1xuIDEzOTpcdFx0bWRldiA9IHByaXYtXHUwMDNlbWRldjtcbiAxNDA6XHRcdGlmIChuZXRpZl9pc19sYWdfbWFzdGVyKGRldikpXG4gMTQxOlx0XHRcdHJldHVybiBtbHg1X2xhZ19pc19tYXN0ZXIobWRldik7XG4gMTQyOlx0XHRyZXR1cm4gdHJ1ZTtcbiAxNDM6XHR9XG4gMTQ0Olx0XG4gMTQ1Olx0c3RhdGljIGludCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9jaGFuZ2V1cHBlcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB2b2lkICpwdHIpXG4gMTQ2Olx0e1xuIDE0NzpcdFx0c3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMgPSBjb250YWluZXJfb2YobmIsXG4gMTQ4Olx0XHRcdFx0XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzLFxuIDE0OTpcdFx0XHRcdFx0XHRcdFx0XHQgICAgbmV0ZGV2X25iKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjYwCgkJCQkJCQlvdXRwdXQ6IDkyCgkJCQkJCQl0aG91Z2h0czogMzczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1lbGxhbm94IEUtU3dpdGNoIEJyaWRnZSBPZmZsb2FkaW5nIENvZGUmIzM5O3MgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBkZWFsIHdpdGggdGhpcyBgbWx4NWAgZHJpdmVyIGNvZGUgZm9yIEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nLiBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuY2Agc3BlY2lmaWNhbGx5LiBCYXNlZCBvbiB0aGUgZ3VpZGVsaW5lcywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3Mgd29ydGggZnV6emluZy4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gdGhlICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgY2F0ZWdvcnksIGFuZCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBkb2VzLgoKVGhpcyBpcyBNZWxsYW5veCBjb2RlLCBzcGVjaWZpY2FsbHkgZm9yIHRoZWlyIENvbm5lY3RYIG5ldHdvcmsgYWRhcHRlcnMsIFNtYXJ0TklDcywgb3IgQmx1ZUZpZWxkIGRldmljZXMuIFRoaXMga2luZCBvZiBjb2RlIG5lZWRzIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50IHRvIHByb2JlIHRoZSBkZXZpY2UsIGluaXRpYWxpemUgdGhlIGUtc3dpdGNoIGFuZCByZXByZXNlbnRvciBkZXZpY2VzLCBhbmQgYWN0dWFsbHksIHlvdSBrbm93LCAqd29yayouIFRoZSBndWlkZWxpbmVzIHNwZWNpZmljYWxseSBtZW50aW9uIHRoaXMgdHlwZSBvZiBzaXR1YXRpb246IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzLgoKU2luY2Ugc3RhbmRhcmQgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgZW52aXJvbm1lbnRzLCB3aGljaCBzeXprYWxsZXIgdXNlcywgZG9uJiMzOTt0IGVtdWxhdGUgdGhlc2UgTWVsbGFub3ggZGV2aWNlcywgdGhpcyBjb2RlIGlzLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCB1bnJlYWNoYWJsZSBpbiB0aGUgdXN1YWwgZnV6emluZyBzZXR1cC4gU28sIGl0JiMzOTtzIHByZXR0eSBvYnZpb3VzOiBgV29ydGhGdXp6aW5nYCBpcyBnb2luZyB0byBiZSBgZmFsc2VgLgoKTm93LCBiZWZvcmUgSSBjYWxsIGBzZXQtcmVzdWx0c2AsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBoaXR0aW5nIGFsbCB0aGUgY3JpdGVyaWEuIGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAsIGNoZWNrLiBUaGUgcmVhc29uaW5nPyBXZWxsLCBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciBmb3IgdGhlIGBtbHg1YCBkcml2ZXIsIHJlcXVpcmluZyBzcGVjaWZpYyBNZWxsYW5veCBoYXJkd2FyZSB0aGF0JiMzOTtzICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhhdCYjMzk7cyBhIGNvbmNpc2UgZXhwbGFuYXRpb24sIHNvIHRoYXQmIzM5O3MgZ29vZC4gYEZvY3VzU3ltYm9sc2A/IEVtcHR5LiBgRW5hYmxlQ29uZmlnc2A/IEVtcHR5LiBQZXJmZWN0LgoKQWxyaWdodCwgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjA6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIwOjU3OjE3Ljc0MzU5NjkzOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTgwODU1NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChzcGVjaWZpY2FsbHkgRS1Td2l0Y2ggYnJpZGdlIG9mZmxvYWRpbmcgbG9naWMpLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBoYXJkd2FyZSBvciBTbWFydE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjA6NTc6MTcuNzQzNjAyMjc5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDg1NDQ5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMDUwYTM0YmFlNDhhZGQ4NTg3ZjRhMGM1NWQ3M2E1MzdhNjIxMmJkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDggMjA6NTc6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNcXG5pbmRleCBiYWFjMzhiZWNlMTRhLi41NjU5MmUyZTZiOWI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jXFxuQEAgLTEwNCw2ICsxMDQsMjggQEAgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG1cXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgdTE2ICp2cG9ydF9udW0sIHUxNiAqZXN3X293bmVyX3ZoY2FfaWQpXFxuK3tcXG4rXFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVxcdTAwM2Vlc3csIHZwb3J0X251bSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGVzd19vd25lcl92aGNhX2lkKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0cmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cygqdnBvcnRfbnVtLCAqZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTtcXG4rfVxcbitcXG4rc3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIHUxNiAqdnBvcnRfbnVtLCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxcbit7XFxuK1xcdGlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cXHUwMDNlZXN3LCB2cG9ydF9udW0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZXN3X293bmVyX3ZoY2FfaWQpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRyZXR1cm4gbWx4NV9lc3dfYnJpZGdlX3BvcnRfZXhpc3RzKCp2cG9ydF9udW0sICplc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpO1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBtbHg1X2Vzd19icmlkZ2VfaXNfbG9jYWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKnJlcCxcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXFxuIHtcXG5AQCAtMjE4LDggKzI0MCw3IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9hZGQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoIW1seDVfZXN3X2JyaWRnZV9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KGRldiwgYnJfb2ZmbG9hZHMtXFx1MDAzZWVzdywgXFx1MDAyNnZwb3J0X251bSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXFxuK1xcdGlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF9wb3J0X2xvb2t1cChkZXYsIGJyX29mZmxvYWRzLCBcXHUwMDI2dnBvcnRfbnVtLCBcXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdHBvcnRfb2JqX2luZm8tXFx1MDAzZWhhbmRsZWQgPSB0cnVlO1xcbkBAIC0yNTEsOCArMjcyLDcgQEAgbWx4NV9lc3dfYnJpZGdlX3BvcnRfb2JqX2RlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X21kYiAqbWRiO1xcbiBcXHR1MTYgdnBvcnRfbnVtLCBlc3dfb3duZXJfdmhjYV9pZDtcXG4gXFxuLVxcdGlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cXHUwMDNlZXN3LCBcXHUwMDI2dnBvcnRfbnVtLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmVzd19vd25lcl92aGNhX2lkKSlcXG4rXFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFxcdTAwMjZ2cG9ydF9udW0sIFxcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0cG9ydF9vYmpfaW5mby1cXHUwMDNlaGFuZGxlZCA9IHRydWU7XFxuQEAgLTI4Myw4ICszMDMsOCBAQCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9vYmpfYXR0cl9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XFxuIFxcdGludCBlcnIgPSAwO1xcbiBcXG4tXFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVxcdTAwM2Vlc3csIFxcdTAwMjZ2cG9ydF9udW0sXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmVzd19vd25lcl92aGNhX2lkKSlcXG4rXFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFxcdTAwMjZ2cG9ydF9udW0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0cG9ydF9hdHRyX2luZm8tXFx1MDAzZWhhbmRsZWQgPSB0cnVlO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuY1xcbmluZGV4IDg3YjVmZDM0OTU5NDUuLmFjOTBjY2RhMTI3MjIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmNcXG5AQCAtMTY4Niw2ICsxNjg2LDEyIEBAIGludCBtbHg1X2Vzd19icmlkZ2VfdnBvcnRfcGVlcl91bmxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmJyX25ldGRldiwgdTE2IHZwb3J0X251XFxuIFxcdFxcdFxcdFxcdFxcdCAgICBleHRhY2spO1xcbiB9XFxuIFxcbitib29sIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cyh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2FkcylcXG4re1xcbitcXHRyZXR1cm4gbWx4NV9lc3dfYnJpZGdlX3BvcnRfbG9va3VwKHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTtcXG4rfVxcbitcXG4gaW50IG1seDVfZXN3X2JyaWRnZV9wb3J0X3ZsYW5fYWRkKHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgdTE2IHZpZCwgdTE2IGZsYWdzLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcXG5pbmRleCBkNmY1MzkxNjE5OTMwLi5hNGU1OWNjMjEwODk0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5oXFxuQEAgLTgwLDYgKzgwLDggQEAgaW50IG1seDVfZXN3X2JyaWRnZV92bGFuX3Byb3RvX3NldCh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsIHUxNiBwcm9cXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMpO1xcbiBpbnQgbWx4NV9lc3dfYnJpZGdlX21jYXN0X3NldCh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsIGJvb2wgZW5hYmxlLFxcbiBcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2Fkcyk7XFxuK2Jvb2wgbWx4NV9lc3dfYnJpZGdlX3BvcnRfZXhpc3RzKHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCxcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzKTtcXG4gaW50IG1seDVfZXN3X2JyaWRnZV9wb3J0X3ZsYW5fYWRkKHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgdTE2IHZpZCwgdTE2IGZsYWdzLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIwOjU3OjE4LjI1Mjk1MjExMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTQ0NzE0ODc2NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTA1MGEzNGJhZTQ4YWRkODU4N2Y0YTBjNTVkNzNhNTM3YTYyMTJiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMjA6NTc6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY1xuaW5kZXggYmFhYzM4YmVjZTE0YS4uNTY1OTJlMmU2YjliOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNcbkBAIC0xMDQsNiArMTA0LDI4IEBAIG1seDVfZXN3X2JyaWRnZV9sb3dlcl9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBtXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdFx0XHQgICAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsXG4rXHRcdFx0XHRcdCAgICB1MTYgKnZwb3J0X251bSwgdTE2ICplc3dfb3duZXJfdmhjYV9pZClcbit7XG4rXHRpZiAoIW1seDVfZXN3X2JyaWRnZV9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KGRldiwgYnJfb2ZmbG9hZHMtXHUwMDNlZXN3LCB2cG9ydF9udW0sXG4rXHRcdFx0XHRcdFx0ICAgICAgIGVzd19vd25lcl92aGNhX2lkKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cygqdnBvcnRfbnVtLCAqZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTtcbit9XG4rXG4rc3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdFx0XHRcdCAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsXG4rXHRcdFx0XHRcdFx0ICB1MTYgKnZwb3J0X251bSwgdTE2ICplc3dfb3duZXJfdmhjYV9pZClcbit7XG4rXHRpZiAoIW1seDVfZXN3X2JyaWRnZV9sb3dlcl9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KGRldiwgYnJfb2ZmbG9hZHMtXHUwMDNlZXN3LCB2cG9ydF9udW0sXG4rXHRcdFx0XHRcdFx0XHQgICAgIGVzd19vd25lcl92aGNhX2lkKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cygqdnBvcnRfbnVtLCAqZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTtcbit9XG4rXG4gc3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX2lzX2xvY2FsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpyZXAsXG4gXHRcdFx0XHQgICAgIHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdylcbiB7XG5AQCAtMjE4LDggKzI0MCw3IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9hZGQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHUxNiB2cG9ydF9udW0sIGVzd19vd25lcl92aGNhX2lkO1xuIFx0aW50IGVycjtcbiBcbi1cdGlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cdTAwM2Vlc3csIFx1MDAyNnZwb3J0X251bSxcbi1cdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuK1x0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFx1MDAyNnZwb3J0X251bSwgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdHBvcnRfb2JqX2luZm8tXHUwMDNlaGFuZGxlZCA9IHRydWU7XG5AQCAtMjUxLDggKzI3Miw3IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9kZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfbWRiICptZGI7XG4gXHR1MTYgdnBvcnRfbnVtLCBlc3dfb3duZXJfdmhjYV9pZDtcbiBcbi1cdGlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cdTAwM2Vlc3csIFx1MDAyNnZwb3J0X251bSxcbi1cdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuK1x0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFx1MDAyNnZwb3J0X251bSwgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdHBvcnRfb2JqX2luZm8tXHUwMDNlaGFuZGxlZCA9IHRydWU7XG5AQCAtMjgzLDggKzMwMyw4IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9hdHRyX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XG4gXHRpbnQgZXJyID0gMDtcbiBcbi1cdGlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cdTAwM2Vlc3csIFx1MDAyNnZwb3J0X251bSxcbi1cdFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuK1x0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFx1MDAyNnZwb3J0X251bSxcbitcdFx0XHRcdFx0XHQgICBcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0cG9ydF9hdHRyX2luZm8tXHUwMDNlaGFuZGxlZCA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmNcbmluZGV4IDg3YjVmZDM0OTU5NDUuLmFjOTBjY2RhMTI3MjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jXG5AQCAtMTY4Niw2ICsxNjg2LDEyIEBAIGludCBtbHg1X2Vzd19icmlkZ2VfdnBvcnRfcGVlcl91bmxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmJyX25ldGRldiwgdTE2IHZwb3J0X251XG4gXHRcdFx0XHRcdCAgICBleHRhY2spO1xuIH1cbiBcbitib29sIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cyh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsXG4rXHRcdFx0XHQgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMpXG4re1xuK1x0cmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2xvb2t1cCh2cG9ydF9udW0sIGVzd19vd25lcl92aGNhX2lkLCBicl9vZmZsb2Fkcyk7XG4rfVxuK1xuIGludCBtbHg1X2Vzd19icmlkZ2VfcG9ydF92bGFuX2FkZCh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsIHUxNiB2aWQsIHUxNiBmbGFncyxcbiBcdFx0XHRcdCAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsXG4gXHRcdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuaFxuaW5kZXggZDZmNTM5MTYxOTkzMC4uYTRlNTljYzIxMDg5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcbkBAIC04MCw2ICs4MCw4IEBAIGludCBtbHg1X2Vzd19icmlkZ2Vfdmxhbl9wcm90b19zZXQodTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLCB1MTYgcHJvXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2Fkcyk7XG4gaW50IG1seDVfZXN3X2JyaWRnZV9tY2FzdF9zZXQodTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLCBib29sIGVuYWJsZSxcbiBcdFx0XHQgICAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2Fkcyk7XG4rYm9vbCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHModTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLFxuK1x0XHRcdFx0IHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzKTtcbiBpbnQgbWx4NV9lc3dfYnJpZGdlX3BvcnRfdmxhbl9hZGQodTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLCB1MTYgdmlkLCB1MTYgZmxhZ3MsXG4gXHRcdFx0XHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjA6NTc6MTguMjUyOTUzNTYxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzcwNTM1MTMxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBkZWNpZGUgaWYgZnV6emluZyBpcyBhIHZpYWJsZSBhcHByb2FjaC4gTXkgaW5pdGlhbCBzY2FuIHBvaW50cyBtZSB0byBjaGFuZ2VzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIE1lbGxhbm94IG1seDUgZHJpdmVyIGNvZGUsIHdoaWNoIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBDb25uZWN0WC00LCBDb25uZWN0WC01LCBDb25uZWN0WC02LCBhbmQgcmVsYXRlZCBoYXJkd2FyZSBOSUNzLCBTbWFydE5JQ3MsIG9yIEUtU3dpdGNoIG9mZmxvYWQgZnVuY3Rpb25hbGl0eS5cblxuTm93LCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRvIHJlZmVyZW5jZSB0aGUgcnVsZXMsIHNwZWNpZmljYWxseSBTZWN0aW9uIDIsIHJlZ2FyZGluZyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZmFsbHMgaW50byB0aGUgY2F0ZWdvcnkgb2YgXCJWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VXCIuXG5cbk1lbGxhbm94J3MgbWx4NSBkcml2ZXIsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1YCwgZGVmaW5pdGVseSByZXF1aXJlcyBhY3R1YWwgbWx4NSBoYXJkd2FyZSB0byBpbml0aWFsaXplIGFuZCBwcm9iZSB0aGUgZGV2aWNlLiBUaGluayBzcGVjaWZpYyBQQ0kgSURzIGxpa2UgMTViMzouLi4uIFdlJ3JlIHRhbGtpbmcgYWJvdXQgcmVwcmVzZW50b3IgbmV0ZGV2IGNyZWF0aW9uLCBlLXN3aXRjaCwgYW5kIGJyaWRnZSBvZmZsb2FkczsgYWxsIHZlcnkgaGFyZHdhcmUtZGVwZW5kZW50LiBBcyBmYXIgYXMgSSBrbm93LCB0aGVyZSBpc24ndCBhIHJlYWRpbHkgYXZhaWxhYmxlIHNvZnR3YXJlIG1vY2sgb3IgdmlydHVhbCBkZXZpY2UgZm9yIG1seDUgd2l0aGluIFFFTVUgb3Igc3l6a2FsbGVyLCB3aGljaCBpcyB1c3VhbGx5IGEgZGVhbC1icmVha2VyIGZvciB0aGVzZSBmdXp6aW5nIGVmZm9ydHMuXG5cblRvIGNvbmZpcm0gdGhpcywgSSdsbCBxdWlja2x5IGdyZXAgdGhlIGNvZGViYXNlIHRvIHNlYXJjaCBmb3IgYW55IHNpZ25zIG9mIHZpcnR1YWwgb3IgbW9jayBtbHg1IHN1cHBvcnQuIFRoYXQgc2hvdWxkIGNvbmZpcm0gaWYgaXQncyBzdHJpY3RseSB0aWVkIHRvIHBoeXNpY2FsIFBDSSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIwOjU3OjI1Ljk1ODMwNzkyN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjE3MDIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUxYNV9DT1JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19NTFg1X0NPUkUpICs9IG1seDVfY29yZS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTE0PW1seDVfY29yZS15IDo9XFx0bWFpbi5vIGNtZC5vIGRlYnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI1LSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MjY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTikgKz0gZW4vcnF0Lm8gZW4vdGlyLm8gZW4vcnNzLm8gZW4vcnhfcmVzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNy1cXHRcXHRlbi9jaGFubmVscy5vIGVuX21haW4ubyBlbl9jb21tb24ubyBlbl9mcy5vIGVuX2V0aHRvb2wubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Mzk9bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fUlhORkMpICAgICs9IGVuX2ZzX2V0aHRvb2wub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo0MDptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOX0RDQikgKz0gZW5fZGNibmwubyBlbi9wb3J0X2J1ZmZlci5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQxLW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgKz0gZW4vaHZfdmhjYV9zdGF0cy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9OTM9bWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSArPSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTctI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5ODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0lQT0lCKSArPSBpcG9pYi9pcG9pYi5vIGlwb2liL2V0aHRvb2wubyBpcG9pYi9pcG9pYl92bGFuLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmM9NTc9Ym9vbCBtbHg1X2V0aF9zdXBwb3J0ZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYzo1OTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01MWDVfQ09SRV9FTikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTYwLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTExOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTkxMi1cXHRzdHJ1Y3QgbWx4NWVfZGNieF9kcCAgICAgICBkY2J4X2RwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU3LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1ODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTktXFx0c3RydWN0IG1seDVlX2RjYnggICAgICAgICAgZGNieDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmg6NzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC04LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xMzI9dm9pZCBtbHg1ZV9zZWxxX2NhbmNlbChzdHJ1Y3QgbWx4NWVfc2VscSAqc2VscSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTQwOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTQxLXN0YXRpYyBpbnQgbWx4NWVfZ2V0X2RzY3BfdXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTE1ND1zdGF0aWMgaW50IG1seDVlX2dldF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE1NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYzoxNTY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTctXFx0aWYgKFJFQURfT05DRShwcml2LVxcdTAwM2VkY2J4X2RwLnRydXN0X3N0YXRlKSA9PSBNTFg1X1FQVFNfVFJVU1RfRFNDUClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jPTI0ODQ9aW50IG1seDVlX3BvbGxfcnhfY3Eoc3RydWN0IG1seDVlX2NxICpjcSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM6MjUxNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYz0yNjQxPWNvbnN0IHN0cnVjdCBtbHg1ZV9yeF9oYW5kbGVycyBtbHg1aV9yeF9oYW5kbGVycyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYzoyNjQ1OiNlbmRpZiAvKiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMtMjY0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jPTEwMDc9c3RhdGljIGludCBtbHg1ZV9oYWlycGluX2dldF9wcmlvKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYzoxMDE1OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jLTEwMTYtXFx0aWYgKHByaXYtXFx1MDAzZWRjYnhfZHAudHJ1c3Rfc3RhdGUgIT0gTUxYNV9RUFRTX1RSVVNUX1BDUCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmM9ODcyPXZvaWQgbWx4NWVfZnJlZV90eHFzcV9kZXNjcyhzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmMtOTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jOjkxODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxOS1zdGF0aWMgaW5saW5lIHZvaWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oOjM2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmgtMzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaD0xMzA9dm9pZCBtbHg1aV9wYXJlbnRfcHV0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaDoxMzI6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzMtI2VuZGlmIC8qIF9fTUxYNUVfSVBPQl9IX18gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0yND12b2lkIG1seDVfc2RfcHV0X2FkZXYoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFjdHVhbF9hZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDoyNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yOC1ib29sIG1seDVfc2RfaXNfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oPTM3PXZvaWQgbWx4NV9zZF9jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0zOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6Mzk6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtNDAtc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICptbHg1X3NkX2dldF9kZXZjb20oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9Mzk2PXZvaWQgbWx4NV9md192ZXJzaW9uX3F1ZXJ5KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqcnVubmluZ192ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMzk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDozOTk6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDAwLWludCBtbHg1ZV9pbml0KHZvaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMDo1NzoyNi4wMjA0ODM2MTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTMzMzU1ODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBtbHg1IEJyaWRnZSBDb2RlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnJpZGdlIGNvZGUgd2l0aGluIHRoZSBtbHg1IGRyaXZlci4gTG9va3MgbGlrZSBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlLCBzbyBsZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMuIEZyb20gdGhlIGZpbGUgbGlzdCwgaXQgc2VlbXMgdGhlIGNvcmUgZm9jdXMgaXMgb24gdGhlIGBicmlkZ2UuY2AgZmlsZXMsIHNwZWNpZmljYWxseSBpbiBib3RoIHRoZSBgZW4vcmVwYCAoRXRoZXJuZXQvUmVwcmVzZW50b3IpIGFuZCBgZXN3YCAoRW1iZWRkZWQgU3dpdGNoKSBzdWJkaXJlY3RvcmllcywgYW5kIGFsc28gdGhlIGhlYWRlciBmaWxlIGBicmlkZ2UuaGAuIE15IGluaXRpYWwgZm9jdXMgd2lsbCBiZSBvbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY2AgdG8gc2VlIGhvdyBpdCdzIGJlZW4gdXBkYXRlZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBhbmQgdGhlIGNvbnRleHQgb2YgdGhlIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MDAsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjA6NTc6MjcuOTUzODQ2MTI3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAwOlxcdFxcdFxcdGlmIChyZXApXFxuIDEwMTpcXHRcXHRcXHRcXHRyZXR1cm4gcmVwO1xcbiAxMDI6XFx0XFx0fVxcbiAxMDM6XFx0XFxuIDEwNDpcXHRcXHRyZXR1cm4gTlVMTDtcXG4gMTA1OlxcdH1cXG4gMTA2OlxcdFxcbiAxMDc6XFx0c3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiAxMDg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxcbiAxMDk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHUxNiAqdnBvcnRfbnVtLCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxcbiAxMTA6XFx0e1xcbiAxMTE6XFx0XFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVxcdTAwM2Vlc3csIHZwb3J0X251bSxcXG4gMTEyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBlc3dfb3duZXJfdmhjYV9pZCkpXFxuIDExMzpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDExNDpcXHRcXG4gMTE1OlxcdFxcdHJldHVybiBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHMoKnZwb3J0X251bSwgKmVzd19vd25lcl92aGNhX2lkLCBicl9vZmZsb2Fkcyk7XFxuIDExNjpcXHR9XFxuIDExNzpcXHRcXG4gMTE4OlxcdHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9sb3dlcl9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gMTE5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsXFxuIDEyMDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHUxNiAqdnBvcnRfbnVtLCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxcbiAxMjE6XFx0e1xcbiAxMjI6XFx0XFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVxcdTAwM2Vlc3csIHZwb3J0X251bSxcXG4gMTIzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZXN3X293bmVyX3ZoY2FfaWQpKVxcbiAxMjQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAxMjU6XFx0XFxuIDEyNjpcXHRcXHRyZXR1cm4gbWx4NV9lc3dfYnJpZGdlX3BvcnRfZXhpc3RzKCp2cG9ydF9udW0sICplc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpO1xcbiAxMjc6XFx0fVxcbiAxMjg6XFx0XFxuIDEyOTpcXHRzdGF0aWMgYm9vbCBtbHg1X2Vzd19icmlkZ2VfaXNfbG9jYWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKnJlcCxcXG4gMTMwOlxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxcbiAxMzE6XFx0e1xcbiAxMzI6XFx0XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuIDEzMzpcXHRcXHRzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdjtcXG4gMTM0OlxcdFxcbiAxMzU6XFx0XFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfZGV2X3NhbWVfZXN3KHJlcCwgZXN3KSlcXG4gMTM2OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gMTM3OlxcdFxcbiAxMzg6XFx0XFx0cHJpdiA9IG5ldGRldl9wcml2KHJlcCk7XFxuIDEzOTpcXHRcXHRtZGV2ID0gcHJpdi1cXHUwMDNlbWRldjtcXG4gMTQwOlxcdFxcdGlmIChuZXRpZl9pc19sYWdfbWFzdGVyKGRldikpXFxuIDE0MTpcXHRcXHRcXHRyZXR1cm4gbWx4NV9sYWdfaXNfbWFzdGVyKG1kZXYpO1xcbiAxNDI6XFx0XFx0cmV0dXJuIHRydWU7XFxuIDE0MzpcXHR9XFxuIDE0NDpcXHRcXG4gMTQ1OlxcdHN0YXRpYyBpbnQgbWx4NV9lc3dfYnJpZGdlX3BvcnRfY2hhbmdldXBwZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdm9pZCAqcHRyKVxcbiAxNDY6XFx0e1xcbiAxNDc6XFx0XFx0c3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMgPSBjb250YWluZXJfb2YobmIsXFxuIDE0ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyxcXG4gMTQ5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBuZXRkZXZfbmIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMDo1NzoyNy45NTQwNDIwNTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NzcwMzcwMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1lbGxhbm94IEUtU3dpdGNoIEJyaWRnZSBPZmZsb2FkaW5nIENvZGUncyBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgaGVyZSdzIHRoZSBkZWFsIHdpdGggdGhpcyBgbWx4NWAgZHJpdmVyIGNvZGUgZm9yIEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nLiBJJ20gbG9va2luZyBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jYCBzcGVjaWZpY2FsbHkuIEJhc2VkIG9uIHRoZSBndWlkZWxpbmVzLCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGNhdGVnb3J5LCBhbmQgaXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgaXQgZG9lcy5cblxuVGhpcyBpcyBNZWxsYW5veCBjb2RlLCBzcGVjaWZpY2FsbHkgZm9yIHRoZWlyIENvbm5lY3RYIG5ldHdvcmsgYWRhcHRlcnMsIFNtYXJ0TklDcywgb3IgQmx1ZUZpZWxkIGRldmljZXMuIFRoaXMga2luZCBvZiBjb2RlIG5lZWRzIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50IHRvIHByb2JlIHRoZSBkZXZpY2UsIGluaXRpYWxpemUgdGhlIGUtc3dpdGNoIGFuZCByZXByZXNlbnRvciBkZXZpY2VzLCBhbmQgYWN0dWFsbHksIHlvdSBrbm93LCAqd29yayouIFRoZSBndWlkZWxpbmVzIHNwZWNpZmljYWxseSBtZW50aW9uIHRoaXMgdHlwZSBvZiBzaXR1YXRpb246IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzLlxuXG5TaW5jZSBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBlbnZpcm9ubWVudHMsIHdoaWNoIHN5emthbGxlciB1c2VzLCBkb24ndCBlbXVsYXRlIHRoZXNlIE1lbGxhbm94IGRldmljZXMsIHRoaXMgY29kZSBpcywgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3NlcywgdW5yZWFjaGFibGUgaW4gdGhlIHVzdWFsIGZ1enppbmcgc2V0dXAuIFNvLCBpdCdzIHByZXR0eSBvYnZpb3VzOiBgV29ydGhGdXp6aW5nYCBpcyBnb2luZyB0byBiZSBgZmFsc2VgLlxuXG5Ob3csIGJlZm9yZSBJIGNhbGwgYHNldC1yZXN1bHRzYCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gaGl0dGluZyBhbGwgdGhlIGNyaXRlcmlhLiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLCBjaGVjay4gVGhlIHJlYXNvbmluZz8gV2VsbCwgaXQncyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciBmb3IgdGhlIGBtbHg1YCBkcml2ZXIsIHJlcXVpcmluZyBzcGVjaWZpYyBNZWxsYW5veCBoYXJkd2FyZSB0aGF0J3MgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGF0J3MgYSBjb25jaXNlIGV4cGxhbmF0aW9uLCBzbyB0aGF0J3MgZ29vZC4gYEZvY3VzU3ltYm9sc2A/IEVtcHR5LiBgRW5hYmxlQ29uZmlnc2A/IEVtcHR5LiBQZXJmZWN0LlxuXG5BbHJpZ2h0LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NjAsIk91dHB1dFRva2VucyI6OTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMDo1NzozMi43MjQ0MTU0NjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIwOjU3OjMyLjcyNDQ0MTM2N1oiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgsvsh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 20:19:39 +0000 UTC FinishedAt: 2026-09-08 20:57: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+CgkJCTx0ZD4yMDI2LzA5LzA4IDIwOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChzcGVjaWZpY2FsbHkgRS1Td2l0Y2ggYnJpZGdlIG9mZmxvYWRpbmcgbG9naWMpLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBoYXJkd2FyZSBvciBTbWFydE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMDo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEwNTBhMzRiYWU0OGFkZDg1ODdmNGEwYzU1ZDczYTUzN2E2MjEyYmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDIwOjU3OjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jXG5pbmRleCBiYWFjMzhiZWNlMTRhLi41NjU5MmUyZTZiOWI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY1xuQEAgLTEwNCw2ICYjNDM7MTA0LDI4IEBAIG1seDVfZXN3X2JyaWRnZV9sb3dlcl9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBtXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiYjNDM7XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2FkcyxcbiYjNDM7XHRcdFx0XHRcdCAgICB1MTYgKnZwb3J0X251bSwgdTE2ICplc3dfb3duZXJfdmhjYV9pZClcbiYjNDM7e1xuJiM0MztcdGlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cdTAwM2Vlc3csIHZwb3J0X251bSxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAgIGVzd19vd25lcl92aGNhX2lkKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cygqdnBvcnRfbnVtLCAqZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuJiM0MztcdFx0XHRcdFx0XHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxuJiM0MztcdFx0XHRcdFx0XHQgIHUxNiAqdnBvcnRfbnVtLCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVx1MDAzZWVzdywgdnBvcnRfbnVtLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICAgZXN3X293bmVyX3ZoY2FfaWQpKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbWx4NV9lc3dfYnJpZGdlX3BvcnRfZXhpc3RzKCp2cG9ydF9udW0sICplc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9pc19sb2NhbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcmVwLFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXG4ge1xuQEAgLTIxOCw4ICYjNDM7MjQwLDcgQEAgbWx4NV9lc3dfYnJpZGdlX3BvcnRfb2JqX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVx1MDAzZWVzdywgXHUwMDI2dnBvcnRfbnVtLFxuLVx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXG4mIzQzO1x0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFx1MDAyNnZwb3J0X251bSwgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdHBvcnRfb2JqX2luZm8tXHUwMDNlaGFuZGxlZCA9IHRydWU7XG5AQCAtMjUxLDggJiM0MzsyNzIsNyBAQCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9vYmpfZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X21kYiAqbWRiO1xuIFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XG4gXG4tXHRpZiAoIW1seDVfZXN3X2JyaWRnZV9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KGRldiwgYnJfb2ZmbG9hZHMtXHUwMDNlZXN3LCBcdTAwMjZ2cG9ydF9udW0sXG4tXHRcdFx0XHRcdFx0ICAgICAgIFx1MDAyNmVzd19vd25lcl92aGNhX2lkKSlcbiYjNDM7XHRpZiAoIW1seDVfZXN3X2JyaWRnZV9yZXBfcG9ydF9sb29rdXAoZGV2LCBicl9vZmZsb2FkcywgXHUwMDI2dnBvcnRfbnVtLCBcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0cG9ydF9vYmpfaW5mby1cdTAwM2VoYW5kbGVkID0gdHJ1ZTtcbkBAIC0yODMsOCAmIzQzOzMwMyw4IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9hdHRyX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XG4gXHRpbnQgZXJyID0gMDtcbiBcbi1cdGlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cdTAwM2Vlc3csIFx1MDAyNnZwb3J0X251bSxcbi1cdFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuJiM0MztcdGlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChkZXYsIGJyX29mZmxvYWRzLCBcdTAwMjZ2cG9ydF9udW0sXG4mIzQzO1x0XHRcdFx0XHRcdCAgIFx1MDAyNmVzd19vd25lcl92aGNhX2lkKSlcbiBcdFx0cmV0dXJuIDA7XG4gXG4gXHRwb3J0X2F0dHJfaW5mby1cdTAwM2VoYW5kbGVkID0gdHJ1ZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuY1xuaW5kZXggODdiNWZkMzQ5NTk0NS4uYWM5MGNjZGExMjcyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmNcbkBAIC0xNjg2LDYgJiM0MzsxNjg2LDEyIEBAIGludCBtbHg1X2Vzd19icmlkZ2VfdnBvcnRfcGVlcl91bmxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmJyX25ldGRldiwgdTE2IHZwb3J0X251XG4gXHRcdFx0XHRcdCAgICBleHRhY2spO1xuIH1cbiBcbiYjNDM7Ym9vbCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHModTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLFxuJiM0MztcdFx0XHRcdCBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2FkcylcbiYjNDM7e1xuJiM0MztcdHJldHVybiBtbHg1X2Vzd19icmlkZ2VfcG9ydF9sb29rdXAodnBvcnRfbnVtLCBlc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBtbHg1X2Vzd19icmlkZ2VfcG9ydF92bGFuX2FkZCh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsIHUxNiB2aWQsIHUxNiBmbGFncyxcbiBcdFx0XHRcdCAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsXG4gXHRcdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuaFxuaW5kZXggZDZmNTM5MTYxOTkzMC4uYTRlNTljYzIxMDg5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcbkBAIC04MCw2ICYjNDM7ODAsOCBAQCBpbnQgbWx4NV9lc3dfYnJpZGdlX3ZsYW5fcHJvdG9fc2V0KHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgdTE2IHByb1xuIFx0XHRcdFx0ICAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMpO1xuIGludCBtbHg1X2Vzd19icmlkZ2VfbWNhc3Rfc2V0KHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgYm9vbCBlbmFibGUsXG4gXHRcdFx0ICAgICAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMpO1xuJiM0Mztib29sIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cyh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsXG4mIzQzO1x0XHRcdFx0IHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzKTtcbiBpbnQgbWx4NV9lc3dfYnJpZGdlX3BvcnRfdmxhbl9hZGQodTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLCB1MTYgdmlkLCB1MTYgZmxhZ3MsXG4gXHRcdFx0XHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDIwOjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMDUwYTM0YmFlNDhhZGQ4NTg3ZjRhMGM1NWQ3M2E1MzdhNjIxMmJkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAyMDo1NzoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jCmluZGV4IGJhYWMzOGJlY2UxNGEuLjU2NTkyZTJlNmI5YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuYwpAQCAtMTA0LDYgJiM0MzsxMDQsMjggQEAgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG0KIAlyZXR1cm4gTlVMTDsKIH0KIAomIzQzO3N0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKJiM0MzsJCQkJCSAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2FkcywKJiM0MzsJCQkJCSAgICB1MTYgKnZwb3J0X251bSwgdTE2ICplc3dfb3duZXJfdmhjYV9pZCkKJiM0Mzt7CiYjNDM7CWlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy0mZ3Q7ZXN3LCB2cG9ydF9udW0sCiYjNDM7CQkJCQkJICAgICAgIGVzd19vd25lcl92aGNhX2lkKSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cygqdnBvcnRfbnVtLCAqZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAomIzQzOwkJCQkJCSAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsCiYjNDM7CQkJCQkJICB1MTYgKnZwb3J0X251bSwgdTE2ICplc3dfb3duZXJfdmhjYV9pZCkKJiM0Mzt7CiYjNDM7CWlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy0mZ3Q7ZXN3LCB2cG9ydF9udW0sCiYjNDM7CQkJCQkJCSAgICAgZXN3X293bmVyX3ZoY2FfaWQpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlyZXR1cm4gbWx4NV9lc3dfYnJpZGdlX3BvcnRfZXhpc3RzKCp2cG9ydF9udW0sICplc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9pc19sb2NhbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcmVwLAogCQkJCSAgICAgc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KQogewpAQCAtMjE4LDggJiM0MzsyNDAsNyBAQCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9vYmpfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJdTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7CiAJaW50IGVycjsKIAotCWlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy0mZ3Q7ZXN3LCAmYW1wO3Zwb3J0X251bSwKLQkJCQkJCSAgICAgICAmYW1wO2Vzd19vd25lcl92aGNhX2lkKSkKJiM0MzsJaWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsICZhbXA7dnBvcnRfbnVtLCAmYW1wO2Vzd19vd25lcl92aGNhX2lkKSkKIAkJcmV0dXJuIDA7CiAKIAlwb3J0X29ial9pbmZvLSZndDtoYW5kbGVkID0gdHJ1ZTsKQEAgLTI1MSw4ICYjNDM7MjcyLDcgQEAgbWx4NV9lc3dfYnJpZGdlX3BvcnRfb2JqX2RlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfbWRiICptZGI7CiAJdTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7CiAKLQlpZiAoIW1seDVfZXN3X2JyaWRnZV9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KGRldiwgYnJfb2ZmbG9hZHMtJmd0O2VzdywgJmFtcDt2cG9ydF9udW0sCi0JCQkJCQkgICAgICAgJmFtcDtlc3dfb3duZXJfdmhjYV9pZCkpCiYjNDM7CWlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF9wb3J0X2xvb2t1cChkZXYsIGJyX29mZmxvYWRzLCAmYW1wO3Zwb3J0X251bSwgJmFtcDtlc3dfb3duZXJfdmhjYV9pZCkpCiAJCXJldHVybiAwOwogCiAJcG9ydF9vYmpfaW5mby0mZ3Q7aGFuZGxlZCA9IHRydWU7CkBAIC0yODMsOCAmIzQzOzMwMyw4IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9hdHRyX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXUxNiB2cG9ydF9udW0sIGVzd19vd25lcl92aGNhX2lkOwogCWludCBlcnIgPSAwOwogCi0JaWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLSZndDtlc3csICZhbXA7dnBvcnRfbnVtLAotCQkJCQkJCSAgICAgJmFtcDtlc3dfb3duZXJfdmhjYV9pZCkpCiYjNDM7CWlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChkZXYsIGJyX29mZmxvYWRzLCAmYW1wO3Zwb3J0X251bSwKJiM0MzsJCQkJCQkgICAmYW1wO2Vzd19vd25lcl92aGNhX2lkKSkKIAkJcmV0dXJuIDA7CiAKIAlwb3J0X2F0dHJfaW5mby0mZ3Q7aGFuZGxlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuYwppbmRleCA4N2I1ZmQzNDk1OTQ1Li5hYzkwY2NkYTEyNzIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmMKQEAgLTE2ODYsNiAmIzQzOzE2ODYsMTIgQEAgaW50IG1seDVfZXN3X2JyaWRnZV92cG9ydF9wZWVyX3VubGluayhzdHJ1Y3QgbmV0X2RldmljZSAqYnJfbmV0ZGV2LCB1MTYgdnBvcnRfbnUKIAkJCQkJICAgIGV4dGFjayk7CiB9CiAKJiM0Mztib29sIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cyh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsCiYjNDM7CQkJCSBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2FkcykKJiM0Mzt7CiYjNDM7CXJldHVybiBtbHg1X2Vzd19icmlkZ2VfcG9ydF9sb29rdXAodnBvcnRfbnVtLCBlc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpOwomIzQzO30KJiM0MzsKIGludCBtbHg1X2Vzd19icmlkZ2VfcG9ydF92bGFuX2FkZCh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsIHUxNiB2aWQsIHUxNiBmbGFncywKIAkJCQkgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLAogCQkJCSAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmgKaW5kZXggZDZmNTM5MTYxOTkzMC4uYTRlNTljYzIxMDg5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5oCkBAIC04MCw2ICYjNDM7ODAsOCBAQCBpbnQgbWx4NV9lc3dfYnJpZGdlX3ZsYW5fcHJvdG9fc2V0KHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgdTE2IHBybwogCQkJCSAgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzKTsKIGludCBtbHg1X2Vzd19icmlkZ2VfbWNhc3Rfc2V0KHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgYm9vbCBlbmFibGUsCiAJCQkgICAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2Fkcyk7CiYjNDM7Ym9vbCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHModTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLAomIzQzOwkJCQkgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMpOwogaW50IG1seDVfZXN3X2JyaWRnZV9wb3J0X3ZsYW5fYWRkKHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgdTE2IHZpZCwgdTE2IGZsYWdzLAogCQkJCSAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsCiAJCQkJICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Njc2CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgZGVjaWRlIGlmIGZ1enppbmcgaXMgYSB2aWFibGUgYXBwcm9hY2guIE15IGluaXRpYWwgc2NhbiBwb2ludHMgbWUgdG8gY2hhbmdlcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jYCwgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5oYC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBNZWxsYW5veCBtbHg1IGRyaXZlciBjb2RlLCB3aGljaCBtZWFucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIENvbm5lY3RYLTQsIENvbm5lY3RYLTUsIENvbm5lY3RYLTYsIGFuZCByZWxhdGVkIGhhcmR3YXJlIE5JQ3MsIFNtYXJ0TklDcywgb3IgRS1Td2l0Y2ggb2ZmbG9hZCBmdW5jdGlvbmFsaXR5LgoKTm93LCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRvIHJlZmVyZW5jZSB0aGUgcnVsZXMsIHNwZWNpZmljYWxseSBTZWN0aW9uIDIsIHJlZ2FyZGluZyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZmFsbHMgaW50byB0aGUgY2F0ZWdvcnkgb2YgJiMzNDtWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VJiMzNDsuCgpNZWxsYW5veCYjMzk7cyBtbHg1IGRyaXZlciwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDVgLCBkZWZpbml0ZWx5IHJlcXVpcmVzIGFjdHVhbCBtbHg1IGhhcmR3YXJlIHRvIGluaXRpYWxpemUgYW5kIHByb2JlIHRoZSBkZXZpY2UuIFRoaW5rIHNwZWNpZmljIFBDSSBJRHMgbGlrZSAxNWIzOi4uLi4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgcmVwcmVzZW50b3IgbmV0ZGV2IGNyZWF0aW9uLCBlLXN3aXRjaCwgYW5kIGJyaWRnZSBvZmZsb2FkczsgYWxsIHZlcnkgaGFyZHdhcmUtZGVwZW5kZW50LiBBcyBmYXIgYXMgSSBrbm93LCB0aGVyZSBpc24mIzM5O3QgYSByZWFkaWx5IGF2YWlsYWJsZSBzb2Z0d2FyZSBtb2NrIG9yIHZpcnR1YWwgZGV2aWNlIGZvciBtbHg1IHdpdGhpbiBRRU1VIG9yIHN5emthbGxlciwgd2hpY2ggaXMgdXN1YWxseSBhIGRlYWwtYnJlYWtlciBmb3IgdGhlc2UgZnV6emluZyBlZmZvcnRzLgoKVG8gY29uZmlybSB0aGlzLCBJJiMzOTtsbCBxdWlja2x5IGdyZXAgdGhlIGNvZGViYXNlIHRvIHNlYXJjaCBmb3IgYW55IHNpZ25zIG9mIHZpcnR1YWwgb3IgbW9jayBtbHg1IHN1cHBvcnQuIFRoYXQgc2hvdWxkIGNvbmZpcm0gaWYgaXQmIzM5O3Mgc3RyaWN0bHkgdGllZCB0byBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX01MWDVfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSAmIzQzOz0gLUkkKHNyYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX01MWDVfQ09SRSkgJiM0Mzs9IG1seDVfY29yZS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTE0PW1seDVfY29yZS15IDo9XHRtYWluLm8gY21kLm8gZGVidWdmcy5vIGZ3Lm8gZXEubyB1YXIubyBwYWdlYWxsb2MubyBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNS0jXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MjY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTikgJiM0Mzs9IGVuL3JxdC5vIGVuL3Rpci5vIGVuL3Jzcy5vIGVuL3J4X3Jlcy5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjctXHRcdGVuL2NoYW5uZWxzLm8gZW5fbWFpbi5vIGVuX2NvbW1vbi5vIGVuX2ZzLm8gZW5fZXRodG9vbC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTM5PW1seDVfY29yZS0kKENPTkZJR19NTFg1X0VOX1JYTkZDKSAgICAmIzQzOz0gZW5fZnNfZXRodG9vbC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDA6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTl9EQ0IpICYjNDM7PSBlbl9kY2JubC5vIGVuL3BvcnRfYnVmZmVyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00MS1tbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICYjNDM7PSBlbi9odl92aGNhX3N0YXRzLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9OTM9bWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSAmIzQzOz0gbGliL2h2Lm8gbGliL2h2X3ZoY2Eub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS05Ny0jXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9JUE9JQikgJiM0Mzs9IGlwb2liL2lwb2liLm8gaXBvaWIvZXRodG9vbC5vIGlwb2liL2lwb2liX3ZsYW4ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYz01Nz1ib29sIG1seDVfZXRoX3N1cHBvcnRlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTU4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYzo1OTpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUxYNV9DT1JFX0VOKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYy02MC1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTExOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTEyLVx0c3RydWN0IG1seDVlX2RjYnhfZHAgICAgICAgZGNieF9kcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTctXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuaWNfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1ODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1OS1cdHN0cnVjdCBtbHg1ZV9kY2J4ICAgICAgICAgIGRjYng7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmgtNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oOjc6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC04LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM9MTMyPXZvaWQgbWx4NWVfc2VscV9jYW5jZWwoc3RydWN0IG1seDVlX3NlbHEgKnNlbHEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjE0MDojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTQxLXN0YXRpYyBpbnQgbWx4NWVfZ2V0X2RzY3BfdXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xNTQ9c3RhdGljIGludCBtbHg1ZV9nZXRfdXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjE1NjojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTU3LVx0aWYgKFJFQURfT05DRShwcml2LVx1MDAzZWRjYnhfZHAudHJ1c3Rfc3RhdGUpID09IE1MWDVfUVBUU19UUlVTVF9EU0NQKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jPTI0ODQ9aW50IG1seDVlX3BvbGxfcnhfY3Eoc3RydWN0IG1seDVlX2NxICpjcSwgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM6MjUxNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMtMjUxOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYz0yNjQxPWNvbnN0IHN0cnVjdCBtbHg1ZV9yeF9oYW5kbGVycyBtbHg1aV9yeF9oYW5kbGVycyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNjQ0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYzoyNjQ1OiNlbmRpZiAvKiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNjQ2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jPTEwMDc9c3RhdGljIGludCBtbHg1ZV9oYWlycGluX2dldF9wcmlvKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jLTEwMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYzoxMDE1OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNi1cdGlmIChwcml2LVx1MDAzZWRjYnhfZHAudHJ1c3Rfc3RhdGUgIT0gTUxYNV9RUFRTX1RSVVNUX1BDUCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jPTg3Mj12b2lkIG1seDVlX2ZyZWVfdHhxc3FfZGVzY3Moc3RydWN0IG1seDVlX3R4cXNxICpzcSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYy05MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYzo5MTg6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfSVBPSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxOS1zdGF0aWMgaW5saW5lIHZvaWRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0zNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oOjM2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0zNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaD0xMzA9dm9pZCBtbHg1aV9wYXJlbnRfcHV0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmgtMTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmg6MTMyOiNlbmRpZiAvKiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzMtI2VuZGlmIC8qIF9fTUxYNUVfSVBPQl9IX18gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg9MjQ9dm9pZCBtbHg1X3NkX3B1dF9hZGV2KHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphY3R1YWxfYWRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6Mjc6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yOC1ib29sIG1seDVfc2RfaXNfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0zNz12b2lkIG1seDVfc2RfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0zOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDozOTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTQwLXN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqbWx4NV9zZF9nZXRfZGV2Y29tKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaD0zOTY9dm9pZCBtbHg1X2Z3X3ZlcnNpb25fcXVlcnkoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldiwgdTMyICpydW5uaW5nX3Zlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMzk4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oOjM5OTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQwMC1pbnQgbWx4NWVfaW5pdCh2b2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDAwCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBtbHg1IEJyaWRnZSBDb2RlKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGJyaWRnZSBjb2RlIHdpdGhpbiB0aGUgbWx4NSBkcml2ZXIuIExvb2tzIGxpa2UgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSwgc28gbGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucy4gRnJvbSB0aGUgZmlsZSBsaXN0LCBpdCBzZWVtcyB0aGUgY29yZSBmb2N1cyBpcyBvbiB0aGUgYGJyaWRnZS5jYCBmaWxlcywgc3BlY2lmaWNhbGx5IGluIGJvdGggdGhlIGBlbi9yZXBgIChFdGhlcm5ldC9SZXByZXNlbnRvcikgYW5kIGBlc3dgIChFbWJlZGRlZCBTd2l0Y2gpIHN1YmRpcmVjdG9yaWVzLCBhbmQgYWxzbyB0aGUgaGVhZGVyIGZpbGUgYGJyaWRnZS5oYC4gTXkgaW5pdGlhbCBmb2N1cyB3aWxsIGJlIG9uIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jYCB0byBzZWUgaG93IGl0JiMzOTtzIGJlZW4gdXBkYXRlZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBhbmQgdGhlIGNvbnRleHQgb2YgdGhlIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMDA6XHRcdFx0aWYgKHJlcClcbiAxMDE6XHRcdFx0XHRyZXR1cm4gcmVwO1xuIDEwMjpcdFx0fVxuIDEwMzpcdFxuIDEwNDpcdFx0cmV0dXJuIE5VTEw7XG4gMTA1Olx0fVxuIDEwNjpcdFxuIDEwNzpcdHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAxMDg6XHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxuIDEwOTpcdFx0XHRcdFx0XHQgICAgdTE2ICp2cG9ydF9udW0sIHUxNiAqZXN3X293bmVyX3ZoY2FfaWQpXG4gMTEwOlx0e1xuIDExMTpcdFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVx1MDAzZWVzdywgdnBvcnRfbnVtLFxuIDExMjpcdFx0XHRcdFx0XHRcdCAgICAgICBlc3dfb3duZXJfdmhjYV9pZCkpXG4gMTEzOlx0XHRcdHJldHVybiBmYWxzZTtcbiAxMTQ6XHRcbiAxMTU6XHRcdHJldHVybiBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHMoKnZwb3J0X251bSwgKmVzd19vd25lcl92aGNhX2lkLCBicl9vZmZsb2Fkcyk7XG4gMTE2Olx0fVxuIDExNzpcdFxuIDExODpcdHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9sb3dlcl9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiAxMTk6XHRcdFx0XHRcdFx0XHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxuIDEyMDpcdFx0XHRcdFx0XHRcdCAgdTE2ICp2cG9ydF9udW0sIHUxNiAqZXN3X293bmVyX3ZoY2FfaWQpXG4gMTIxOlx0e1xuIDEyMjpcdFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVx1MDAzZWVzdywgdnBvcnRfbnVtLFxuIDEyMzpcdFx0XHRcdFx0XHRcdFx0ICAgICBlc3dfb3duZXJfdmhjYV9pZCkpXG4gMTI0Olx0XHRcdHJldHVybiBmYWxzZTtcbiAxMjU6XHRcbiAxMjY6XHRcdHJldHVybiBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHMoKnZwb3J0X251bSwgKmVzd19vd25lcl92aGNhX2lkLCBicl9vZmZsb2Fkcyk7XG4gMTI3Olx0fVxuIDEyODpcdFxuIDEyOTpcdHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9pc19sb2NhbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqcmVwLFxuIDEzMDpcdFx0XHRcdFx0ICAgICBzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXG4gMTMxOlx0e1xuIDEzMjpcdFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XG4gMTMzOlx0XHRzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdjtcbiAxMzQ6XHRcbiAxMzU6XHRcdGlmICghbWx4NV9lc3dfYnJpZGdlX2Rldl9zYW1lX2VzdyhyZXAsIGVzdykpXG4gMTM2Olx0XHRcdHJldHVybiBmYWxzZTtcbiAxMzc6XHRcbiAxMzg6XHRcdHByaXYgPSBuZXRkZXZfcHJpdihyZXApO1xuIDEzOTpcdFx0bWRldiA9IHByaXYtXHUwMDNlbWRldjtcbiAxNDA6XHRcdGlmIChuZXRpZl9pc19sYWdfbWFzdGVyKGRldikpXG4gMTQxOlx0XHRcdHJldHVybiBtbHg1X2xhZ19pc19tYXN0ZXIobWRldik7XG4gMTQyOlx0XHRyZXR1cm4gdHJ1ZTtcbiAxNDM6XHR9XG4gMTQ0Olx0XG4gMTQ1Olx0c3RhdGljIGludCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9jaGFuZ2V1cHBlcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB2b2lkICpwdHIpXG4gMTQ2Olx0e1xuIDE0NzpcdFx0c3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMgPSBjb250YWluZXJfb2YobmIsXG4gMTQ4Olx0XHRcdFx0XHRcdFx0XHRcdCAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzLFxuIDE0OTpcdFx0XHRcdFx0XHRcdFx0XHQgICAgbmV0ZGV2X25iKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjYwCgkJCQkJCQlvdXRwdXQ6IDkyCgkJCQkJCQl0aG91Z2h0czogMzczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1lbGxhbm94IEUtU3dpdGNoIEJyaWRnZSBPZmZsb2FkaW5nIENvZGUmIzM5O3MgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBkZWFsIHdpdGggdGhpcyBgbWx4NWAgZHJpdmVyIGNvZGUgZm9yIEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nLiBJJiMzOTttIGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuY2Agc3BlY2lmaWNhbGx5LiBCYXNlZCBvbiB0aGUgZ3VpZGVsaW5lcywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3Mgd29ydGggZnV6emluZy4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gdGhlICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgY2F0ZWdvcnksIGFuZCBpdCBzZWVtcyBwcmV0dHkgY2xlYXIgdGhhdCBpdCBkb2VzLgoKVGhpcyBpcyBNZWxsYW5veCBjb2RlLCBzcGVjaWZpY2FsbHkgZm9yIHRoZWlyIENvbm5lY3RYIG5ldHdvcmsgYWRhcHRlcnMsIFNtYXJ0TklDcywgb3IgQmx1ZUZpZWxkIGRldmljZXMuIFRoaXMga2luZCBvZiBjb2RlIG5lZWRzIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50IHRvIHByb2JlIHRoZSBkZXZpY2UsIGluaXRpYWxpemUgdGhlIGUtc3dpdGNoIGFuZCByZXByZXNlbnRvciBkZXZpY2VzLCBhbmQgYWN0dWFsbHksIHlvdSBrbm93LCAqd29yayouIFRoZSBndWlkZWxpbmVzIHNwZWNpZmljYWxseSBtZW50aW9uIHRoaXMgdHlwZSBvZiBzaXR1YXRpb246IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzLgoKU2luY2Ugc3RhbmRhcmQgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgZW52aXJvbm1lbnRzLCB3aGljaCBzeXprYWxsZXIgdXNlcywgZG9uJiMzOTt0IGVtdWxhdGUgdGhlc2UgTWVsbGFub3ggZGV2aWNlcywgdGhpcyBjb2RlIGlzLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCB1bnJlYWNoYWJsZSBpbiB0aGUgdXN1YWwgZnV6emluZyBzZXR1cC4gU28sIGl0JiMzOTtzIHByZXR0eSBvYnZpb3VzOiBgV29ydGhGdXp6aW5nYCBpcyBnb2luZyB0byBiZSBgZmFsc2VgLgoKTm93LCBiZWZvcmUgSSBjYWxsIGBzZXQtcmVzdWx0c2AsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBoaXR0aW5nIGFsbCB0aGUgY3JpdGVyaWEuIGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAsIGNoZWNrLiBUaGUgcmVhc29uaW5nPyBXZWxsLCBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciBmb3IgdGhlIGBtbHg1YCBkcml2ZXIsIHJlcXVpcmluZyBzcGVjaWZpYyBNZWxsYW5veCBoYXJkd2FyZSB0aGF0JiMzOTtzICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhhdCYjMzk7cyBhIGNvbmNpc2UgZXhwbGFuYXRpb24sIHNvIHRoYXQmIzM5O3MgZ29vZC4gYEZvY3VzU3ltYm9sc2A/IEVtcHR5LiBgRW5hYmxlQ29uZmlnc2A/IEVtcHR5LiBQZXJmZWN0LgoKQWxyaWdodCwgbGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAyMDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMjA6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIwOjU3OjE3Ljc0MzU5NjkzOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTgwODU1NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgY2hhbmdlcyBtb2RpZnkgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyIChzcGVjaWZpY2FsbHkgRS1Td2l0Y2ggYnJpZGdlIG9mZmxvYWRpbmcgbG9naWMpLCB3aGljaCByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBoYXJkd2FyZSBvciBTbWFydE5JQ3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjA6NTc6MTcuNzQzNjAyMjc5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDg1NDQ5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMDUwYTM0YmFlNDhhZGQ4NTg3ZjRhMGM1NWQ3M2E1MzdhNjIxMmJkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDggMjA6NTc6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNcXG5pbmRleCBiYWFjMzhiZWNlMTRhLi41NjU5MmUyZTZiOWI4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jXFxuQEAgLTEwNCw2ICsxMDQsMjggQEAgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG1cXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgdTE2ICp2cG9ydF9udW0sIHUxNiAqZXN3X293bmVyX3ZoY2FfaWQpXFxuK3tcXG4rXFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVxcdTAwM2Vlc3csIHZwb3J0X251bSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIGVzd19vd25lcl92aGNhX2lkKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0cmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cygqdnBvcnRfbnVtLCAqZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTtcXG4rfVxcbitcXG4rc3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIHUxNiAqdnBvcnRfbnVtLCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxcbit7XFxuK1xcdGlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cXHUwMDNlZXN3LCB2cG9ydF9udW0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZXN3X293bmVyX3ZoY2FfaWQpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRyZXR1cm4gbWx4NV9lc3dfYnJpZGdlX3BvcnRfZXhpc3RzKCp2cG9ydF9udW0sICplc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpO1xcbit9XFxuK1xcbiBzdGF0aWMgYm9vbCBtbHg1X2Vzd19icmlkZ2VfaXNfbG9jYWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKnJlcCxcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3cpXFxuIHtcXG5AQCAtMjE4LDggKzI0MCw3IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9hZGQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAoIW1seDVfZXN3X2JyaWRnZV9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KGRldiwgYnJfb2ZmbG9hZHMtXFx1MDAzZWVzdywgXFx1MDAyNnZwb3J0X251bSxcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXFxuK1xcdGlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF9wb3J0X2xvb2t1cChkZXYsIGJyX29mZmxvYWRzLCBcXHUwMDI2dnBvcnRfbnVtLCBcXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuIFxcdHBvcnRfb2JqX2luZm8tXFx1MDAzZWhhbmRsZWQgPSB0cnVlO1xcbkBAIC0yNTEsOCArMjcyLDcgQEAgbWx4NV9lc3dfYnJpZGdlX3BvcnRfb2JqX2RlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X21kYiAqbWRiO1xcbiBcXHR1MTYgdnBvcnRfbnVtLCBlc3dfb3duZXJfdmhjYV9pZDtcXG4gXFxuLVxcdGlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cXHUwMDNlZXN3LCBcXHUwMDI2dnBvcnRfbnVtLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmVzd19vd25lcl92aGNhX2lkKSlcXG4rXFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFxcdTAwMjZ2cG9ydF9udW0sIFxcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0cG9ydF9vYmpfaW5mby1cXHUwMDNlaGFuZGxlZCA9IHRydWU7XFxuQEAgLTI4Myw4ICszMDMsOCBAQCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9vYmpfYXR0cl9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XFxuIFxcdGludCBlcnIgPSAwO1xcbiBcXG4tXFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVxcdTAwM2Vlc3csIFxcdTAwMjZ2cG9ydF9udW0sXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmVzd19vd25lcl92aGNhX2lkKSlcXG4rXFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFxcdTAwMjZ2cG9ydF9udW0sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4gXFx0cG9ydF9hdHRyX2luZm8tXFx1MDAzZWhhbmRsZWQgPSB0cnVlO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuY1xcbmluZGV4IDg3YjVmZDM0OTU5NDUuLmFjOTBjY2RhMTI3MjIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmNcXG5AQCAtMTY4Niw2ICsxNjg2LDEyIEBAIGludCBtbHg1X2Vzd19icmlkZ2VfdnBvcnRfcGVlcl91bmxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmJyX25ldGRldiwgdTE2IHZwb3J0X251XFxuIFxcdFxcdFxcdFxcdFxcdCAgICBleHRhY2spO1xcbiB9XFxuIFxcbitib29sIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cyh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsXFxuK1xcdFxcdFxcdFxcdCBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2FkcylcXG4re1xcbitcXHRyZXR1cm4gbWx4NV9lc3dfYnJpZGdlX3BvcnRfbG9va3VwKHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTtcXG4rfVxcbitcXG4gaW50IG1seDVfZXN3X2JyaWRnZV9wb3J0X3ZsYW5fYWRkKHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgdTE2IHZpZCwgdTE2IGZsYWdzLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcXG5pbmRleCBkNmY1MzkxNjE5OTMwLi5hNGU1OWNjMjEwODk0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5oXFxuQEAgLTgwLDYgKzgwLDggQEAgaW50IG1seDVfZXN3X2JyaWRnZV92bGFuX3Byb3RvX3NldCh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsIHUxNiBwcm9cXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMpO1xcbiBpbnQgbWx4NV9lc3dfYnJpZGdlX21jYXN0X3NldCh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsIGJvb2wgZW5hYmxlLFxcbiBcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2Fkcyk7XFxuK2Jvb2wgbWx4NV9lc3dfYnJpZGdlX3BvcnRfZXhpc3RzKHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCxcXG4rXFx0XFx0XFx0XFx0IHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzKTtcXG4gaW50IG1seDVfZXN3X2JyaWRnZV9wb3J0X3ZsYW5fYWRkKHUxNiB2cG9ydF9udW0sIHUxNiBlc3dfb3duZXJfdmhjYV9pZCwgdTE2IHZpZCwgdTE2IGZsYWdzLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIwOjU3OjE4LjI1Mjk1MjExMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTQ0NzE0ODc2NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTA1MGEzNGJhZTQ4YWRkODU4N2Y0YTBjNTVkNzNhNTM3YTYyMTJiZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMjA6NTc6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY1xuaW5kZXggYmFhYzM4YmVjZTE0YS4uNTY1OTJlMmU2YjliOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNcbkBAIC0xMDQsNiArMTA0LDI4IEBAIG1seDVfZXN3X2JyaWRnZV9sb3dlcl9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBtXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4rc3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdFx0XHQgICAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsXG4rXHRcdFx0XHRcdCAgICB1MTYgKnZwb3J0X251bSwgdTE2ICplc3dfb3duZXJfdmhjYV9pZClcbit7XG4rXHRpZiAoIW1seDVfZXN3X2JyaWRnZV9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KGRldiwgYnJfb2ZmbG9hZHMtXHUwMDNlZXN3LCB2cG9ydF9udW0sXG4rXHRcdFx0XHRcdFx0ICAgICAgIGVzd19vd25lcl92aGNhX2lkKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cygqdnBvcnRfbnVtLCAqZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTtcbit9XG4rXG4rc3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuK1x0XHRcdFx0XHRcdCAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsXG4rXHRcdFx0XHRcdFx0ICB1MTYgKnZwb3J0X251bSwgdTE2ICplc3dfb3duZXJfdmhjYV9pZClcbit7XG4rXHRpZiAoIW1seDVfZXN3X2JyaWRnZV9sb3dlcl9yZXBfdnBvcnRfbnVtX3ZoY2FfaWRfZ2V0KGRldiwgYnJfb2ZmbG9hZHMtXHUwMDNlZXN3LCB2cG9ydF9udW0sXG4rXHRcdFx0XHRcdFx0XHQgICAgIGVzd19vd25lcl92aGNhX2lkKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0cmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cygqdnBvcnRfbnVtLCAqZXN3X293bmVyX3ZoY2FfaWQsIGJyX29mZmxvYWRzKTtcbit9XG4rXG4gc3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX2lzX2xvY2FsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICpyZXAsXG4gXHRcdFx0XHQgICAgIHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdylcbiB7XG5AQCAtMjE4LDggKzI0MCw3IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9hZGQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHUxNiB2cG9ydF9udW0sIGVzd19vd25lcl92aGNhX2lkO1xuIFx0aW50IGVycjtcbiBcbi1cdGlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cdTAwM2Vlc3csIFx1MDAyNnZwb3J0X251bSxcbi1cdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuK1x0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFx1MDAyNnZwb3J0X251bSwgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdHBvcnRfb2JqX2luZm8tXHUwMDNlaGFuZGxlZCA9IHRydWU7XG5AQCAtMjUxLDggKzI3Miw3IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9kZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfbWRiICptZGI7XG4gXHR1MTYgdnBvcnRfbnVtLCBlc3dfb3duZXJfdmhjYV9pZDtcbiBcbi1cdGlmICghbWx4NV9lc3dfYnJpZGdlX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cdTAwM2Vlc3csIFx1MDAyNnZwb3J0X251bSxcbi1cdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuK1x0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFx1MDAyNnZwb3J0X251bSwgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiBcdHBvcnRfb2JqX2luZm8tXHUwMDNlaGFuZGxlZCA9IHRydWU7XG5AQCAtMjgzLDggKzMwMyw4IEBAIG1seDVfZXN3X2JyaWRnZV9wb3J0X29ial9hdHRyX3NldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0dTE2IHZwb3J0X251bSwgZXN3X293bmVyX3ZoY2FfaWQ7XG4gXHRpbnQgZXJyID0gMDtcbiBcbi1cdGlmICghbWx4NV9lc3dfYnJpZGdlX2xvd2VyX3JlcF92cG9ydF9udW1fdmhjYV9pZF9nZXQoZGV2LCBicl9vZmZsb2Fkcy1cdTAwM2Vlc3csIFx1MDAyNnZwb3J0X251bSxcbi1cdFx0XHRcdFx0XHRcdCAgICAgXHUwMDI2ZXN3X293bmVyX3ZoY2FfaWQpKVxuK1x0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3BvcnRfbG9va3VwKGRldiwgYnJfb2ZmbG9hZHMsIFx1MDAyNnZwb3J0X251bSxcbitcdFx0XHRcdFx0XHQgICBcdTAwMjZlc3dfb3duZXJfdmhjYV9pZCkpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0cG9ydF9hdHRyX2luZm8tXHUwMDNlaGFuZGxlZCA9IHRydWU7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmNcbmluZGV4IDg3YjVmZDM0OTU5NDUuLmFjOTBjY2RhMTI3MjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jXG5AQCAtMTY4Niw2ICsxNjg2LDEyIEBAIGludCBtbHg1X2Vzd19icmlkZ2VfdnBvcnRfcGVlcl91bmxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmJyX25ldGRldiwgdTE2IHZwb3J0X251XG4gXHRcdFx0XHRcdCAgICBleHRhY2spO1xuIH1cbiBcbitib29sIG1seDVfZXN3X2JyaWRnZV9wb3J0X2V4aXN0cyh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsXG4rXHRcdFx0XHQgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMpXG4re1xuK1x0cmV0dXJuIG1seDVfZXN3X2JyaWRnZV9wb3J0X2xvb2t1cCh2cG9ydF9udW0sIGVzd19vd25lcl92aGNhX2lkLCBicl9vZmZsb2Fkcyk7XG4rfVxuK1xuIGludCBtbHg1X2Vzd19icmlkZ2VfcG9ydF92bGFuX2FkZCh1MTYgdnBvcnRfbnVtLCB1MTYgZXN3X293bmVyX3ZoY2FfaWQsIHUxNiB2aWQsIHUxNiBmbGFncyxcbiBcdFx0XHRcdCAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsXG4gXHRcdFx0XHQgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzdy9icmlkZ2UuaFxuaW5kZXggZDZmNTM5MTYxOTkzMC4uYTRlNTljYzIxMDg5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhcbkBAIC04MCw2ICs4MCw4IEBAIGludCBtbHg1X2Vzd19icmlkZ2Vfdmxhbl9wcm90b19zZXQodTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLCB1MTYgcHJvXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2Fkcyk7XG4gaW50IG1seDVfZXN3X2JyaWRnZV9tY2FzdF9zZXQodTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLCBib29sIGVuYWJsZSxcbiBcdFx0XHQgICAgICBzdHJ1Y3QgbWx4NV9lc3dfYnJpZGdlX29mZmxvYWRzICpicl9vZmZsb2Fkcyk7XG4rYm9vbCBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHModTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLFxuK1x0XHRcdFx0IHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzKTtcbiBpbnQgbWx4NV9lc3dfYnJpZGdlX3BvcnRfdmxhbl9hZGQodTE2IHZwb3J0X251bSwgdTE2IGVzd19vd25lcl92aGNhX2lkLCB1MTYgdmlkLCB1MTYgZmxhZ3MsXG4gXHRcdFx0XHQgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjA6NTc6MTguMjUyOTUzNTYxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzcwNTM1MTMxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoIGFuZCBkZWNpZGUgaWYgZnV6emluZyBpcyBhIHZpYWJsZSBhcHByb2FjaC4gTXkgaW5pdGlhbCBzY2FuIHBvaW50cyBtZSB0byBjaGFuZ2VzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcmVwL2JyaWRnZS5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lc3cvYnJpZGdlLmhgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIE1lbGxhbm94IG1seDUgZHJpdmVyIGNvZGUsIHdoaWNoIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCBDb25uZWN0WC00LCBDb25uZWN0WC01LCBDb25uZWN0WC02LCBhbmQgcmVsYXRlZCBoYXJkd2FyZSBOSUNzLCBTbWFydE5JQ3MsIG9yIEUtU3dpdGNoIG9mZmxvYWQgZnVuY3Rpb25hbGl0eS5cblxuTm93LCBteSBleHBlcmllbmNlIHRlbGxzIG1lIHRvIHJlZmVyZW5jZSB0aGUgcnVsZXMsIHNwZWNpZmljYWxseSBTZWN0aW9uIDIsIHJlZ2FyZGluZyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIFdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgZmFsbHMgaW50byB0aGUgY2F0ZWdvcnkgb2YgXCJWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLiByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VXCIuXG5cbk1lbGxhbm94J3MgbWx4NSBkcml2ZXIsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1YCwgZGVmaW5pdGVseSByZXF1aXJlcyBhY3R1YWwgbWx4NSBoYXJkd2FyZSB0byBpbml0aWFsaXplIGFuZCBwcm9iZSB0aGUgZGV2aWNlLiBUaGluayBzcGVjaWZpYyBQQ0kgSURzIGxpa2UgMTViMzouLi4uIFdlJ3JlIHRhbGtpbmcgYWJvdXQgcmVwcmVzZW50b3IgbmV0ZGV2IGNyZWF0aW9uLCBlLXN3aXRjaCwgYW5kIGJyaWRnZSBvZmZsb2FkczsgYWxsIHZlcnkgaGFyZHdhcmUtZGVwZW5kZW50LiBBcyBmYXIgYXMgSSBrbm93LCB0aGVyZSBpc24ndCBhIHJlYWRpbHkgYXZhaWxhYmxlIHNvZnR3YXJlIG1vY2sgb3IgdmlydHVhbCBkZXZpY2UgZm9yIG1seDUgd2l0aGluIFFFTVUgb3Igc3l6a2FsbGVyLCB3aGljaCBpcyB1c3VhbGx5IGEgZGVhbC1icmVha2VyIGZvciB0aGVzZSBmdXp6aW5nIGVmZm9ydHMuXG5cblRvIGNvbmZpcm0gdGhpcywgSSdsbCBxdWlja2x5IGdyZXAgdGhlIGNvZGViYXNlIHRvIHNlYXJjaCBmb3IgYW55IHNpZ25zIG9mIHZpcnR1YWwgb3IgbW9jayBtbHg1IHN1cHBvcnQuIFRoYXQgc2hvdWxkIGNvbmZpcm0gaWYgaXQncyBzdHJpY3RseSB0aWVkIHRvIHBoeXNpY2FsIFBDSSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIwOjU3OjI1Ljk1ODMwNzkyN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjE3MDIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUxYNV9DT1JFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTc9c3ViZGlyLWNjZmxhZ3MteSArPSAtSSQoc3JjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19NTFg1X0NPUkUpICs9IG1seDVfY29yZS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTE0PW1seDVfY29yZS15IDo9XFx0bWFpbi5vIGNtZC5vIGRlYnVnZnMubyBmdy5vIGVxLm8gdWFyLm8gcGFnZWFsbG9jLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI1LSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6MjY6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTikgKz0gZW4vcnF0Lm8gZW4vdGlyLm8gZW4vcnNzLm8gZW4vcnhfcmVzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNy1cXHRcXHRlbi9jaGFubmVscy5vIGVuX21haW4ubyBlbl9jb21tb24ubyBlbl9mcy5vIGVuX2V0aHRvb2wubyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Mzk9bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fUlhORkMpICAgICs9IGVuX2ZzX2V0aHRvb2wub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo0MDptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOX0RDQikgKz0gZW5fZGNibmwubyBlbi9wb3J0X2J1ZmZlci5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQxLW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgKz0gZW4vaHZfdmhjYV9zdGF0cy5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9OTM9bWx4NV9jb3JlLSQoQ09ORklHX1BDSV9IWVBFUlZfSU5URVJGQUNFKSArPSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTctI1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5ODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0lQT0lCKSArPSBpcG9pYi9pcG9pYi5vIGlwb2liL2V0aHRvb2wubyBpcG9pYi9pcG9pYl92bGFuLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmM9NTc9Ym9vbCBtbHg1X2V0aF9zdXBwb3J0ZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYzo1OTpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01MWDVfQ09SRV9FTikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTYwLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oPTkwNT1zdHJ1Y3QgbWx4NWVfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTExOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTkxMi1cXHRzdHJ1Y3QgbWx4NWVfZGNieF9kcCAgICAgICBkY2J4X2RwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU3LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1ODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTktXFx0c3RydWN0IG1seDVlX2RjYnggICAgICAgICAgZGNieDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmg6NzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC04LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xMzI9dm9pZCBtbHg1ZV9zZWxxX2NhbmNlbChzdHJ1Y3QgbWx4NWVfc2VscSAqc2VscSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTM5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTQwOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTQxLXN0YXRpYyBpbnQgbWx4NWVfZ2V0X2RzY3BfdXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTE1ND1zdGF0aWMgaW50IG1seDVlX2dldF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE1NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYzoxNTY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTctXFx0aWYgKFJFQURfT05DRShwcml2LVxcdTAwM2VkY2J4X2RwLnRydXN0X3N0YXRlKSA9PSBNTFg1X1FQVFNfVFJVU1RfRFNDUClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jPTI0ODQ9aW50IG1seDVlX3BvbGxfcnhfY3Eoc3RydWN0IG1seDVlX2NxICpjcSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM6MjUxNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYz0yNjQxPWNvbnN0IHN0cnVjdCBtbHg1ZV9yeF9oYW5kbGVycyBtbHg1aV9yeF9oYW5kbGVycyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYzoyNjQ1OiNlbmRpZiAvKiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMtMjY0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jPTEwMDc9c3RhdGljIGludCBtbHg1ZV9oYWlycGluX2dldF9wcmlvKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYzoxMDE1OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jLTEwMTYtXFx0aWYgKHByaXYtXFx1MDAzZWRjYnhfZHAudHJ1c3Rfc3RhdGUgIT0gTUxYNV9RUFRTX1RSVVNUX1BDUCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmM9ODcyPXZvaWQgbWx4NWVfZnJlZV90eHFzcV9kZXNjcyhzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmMtOTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jOjkxODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxOS1zdGF0aWMgaW5saW5lIHZvaWRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oOjM2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmgtMzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaD0xMzA9dm9pZCBtbHg1aV9wYXJlbnRfcHV0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTEzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaDoxMzI6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzMtI2VuZGlmIC8qIF9fTUxYNUVfSVBPQl9IX18gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0yND12b2lkIG1seDVfc2RfcHV0X2FkZXYoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFjdHVhbF9hZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDoyNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yOC1ib29sIG1seDVfc2RfaXNfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oPTM3PXZvaWQgbWx4NV9zZF9jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0zOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6Mzk6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtNDAtc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICptbHg1X3NkX2dldF9kZXZjb20oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg9Mzk2PXZvaWQgbWx4NV9md192ZXJzaW9uX3F1ZXJ5KHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYsIHUzMiAqcnVubmluZ192ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtMzk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaDozOTk6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDAwLWludCBtbHg1ZV9pbml0KHZvaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMDo1NzoyNi4wMjA0ODM2MTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTMzMzU1ODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRpdmluZyBpbnRvIHRoZSBtbHg1IEJyaWRnZSBDb2RlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYnJpZGdlIGNvZGUgd2l0aGluIHRoZSBtbHg1IGRyaXZlci4gTG9va3MgbGlrZSBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlLCBzbyBsZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMuIEZyb20gdGhlIGZpbGUgbGlzdCwgaXQgc2VlbXMgdGhlIGNvcmUgZm9jdXMgaXMgb24gdGhlIGBicmlkZ2UuY2AgZmlsZXMsIHNwZWNpZmljYWxseSBpbiBib3RoIHRoZSBgZW4vcmVwYCAoRXRoZXJuZXQvUmVwcmVzZW50b3IpIGFuZCBgZXN3YCAoRW1iZWRkZWQgU3dpdGNoKSBzdWJkaXJlY3RvcmllcywgYW5kIGFsc28gdGhlIGhlYWRlciBmaWxlIGBicmlkZ2UuaGAuIE15IGluaXRpYWwgZm9jdXMgd2lsbCBiZSBvbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY2AgdG8gc2VlIGhvdyBpdCdzIGJlZW4gdXBkYXRlZC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlcyBhbmQgdGhlIGNvbnRleHQgb2YgdGhlIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0MDAsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMjA6NTc6MjcuOTUzODQ2MTI3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9yZXAvYnJpZGdlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAwOlxcdFxcdFxcdGlmIChyZXApXFxuIDEwMTpcXHRcXHRcXHRcXHRyZXR1cm4gcmVwO1xcbiAxMDI6XFx0XFx0fVxcbiAxMDM6XFx0XFxuIDEwNDpcXHRcXHRyZXR1cm4gTlVMTDtcXG4gMTA1OlxcdH1cXG4gMTA2OlxcdFxcbiAxMDc6XFx0c3RhdGljIGJvb2wgbWx4NV9lc3dfYnJpZGdlX3JlcF9wb3J0X2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiAxMDg6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBtbHg1X2Vzd19icmlkZ2Vfb2ZmbG9hZHMgKmJyX29mZmxvYWRzLFxcbiAxMDk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIHUxNiAqdnBvcnRfbnVtLCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxcbiAxMTA6XFx0e1xcbiAxMTE6XFx0XFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVxcdTAwM2Vlc3csIHZwb3J0X251bSxcXG4gMTEyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBlc3dfb3duZXJfdmhjYV9pZCkpXFxuIDExMzpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIDExNDpcXHRcXG4gMTE1OlxcdFxcdHJldHVybiBtbHg1X2Vzd19icmlkZ2VfcG9ydF9leGlzdHMoKnZwb3J0X251bSwgKmVzd19vd25lcl92aGNhX2lkLCBicl9vZmZsb2Fkcyk7XFxuIDExNjpcXHR9XFxuIDExNzpcXHRcXG4gMTE4OlxcdHN0YXRpYyBib29sIG1seDVfZXN3X2JyaWRnZV9sb3dlcl9yZXBfcG9ydF9sb29rdXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gMTE5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMsXFxuIDEyMDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIHUxNiAqdnBvcnRfbnVtLCB1MTYgKmVzd19vd25lcl92aGNhX2lkKVxcbiAxMjE6XFx0e1xcbiAxMjI6XFx0XFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfbG93ZXJfcmVwX3Zwb3J0X251bV92aGNhX2lkX2dldChkZXYsIGJyX29mZmxvYWRzLVxcdTAwM2Vlc3csIHZwb3J0X251bSxcXG4gMTIzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZXN3X293bmVyX3ZoY2FfaWQpKVxcbiAxMjQ6XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbiAxMjU6XFx0XFxuIDEyNjpcXHRcXHRyZXR1cm4gbWx4NV9lc3dfYnJpZGdlX3BvcnRfZXhpc3RzKCp2cG9ydF9udW0sICplc3dfb3duZXJfdmhjYV9pZCwgYnJfb2ZmbG9hZHMpO1xcbiAxMjc6XFx0fVxcbiAxMjg6XFx0XFxuIDEyOTpcXHRzdGF0aWMgYm9vbCBtbHg1X2Vzd19icmlkZ2VfaXNfbG9jYWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldF9kZXZpY2UgKnJlcCxcXG4gMTMwOlxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3KVxcbiAxMzE6XFx0e1xcbiAxMzI6XFx0XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXY7XFxuIDEzMzpcXHRcXHRzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdjtcXG4gMTM0OlxcdFxcbiAxMzU6XFx0XFx0aWYgKCFtbHg1X2Vzd19icmlkZ2VfZGV2X3NhbWVfZXN3KHJlcCwgZXN3KSlcXG4gMTM2OlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4gMTM3OlxcdFxcbiAxMzg6XFx0XFx0cHJpdiA9IG5ldGRldl9wcml2KHJlcCk7XFxuIDEzOTpcXHRcXHRtZGV2ID0gcHJpdi1cXHUwMDNlbWRldjtcXG4gMTQwOlxcdFxcdGlmIChuZXRpZl9pc19sYWdfbWFzdGVyKGRldikpXFxuIDE0MTpcXHRcXHRcXHRyZXR1cm4gbWx4NV9sYWdfaXNfbWFzdGVyKG1kZXYpO1xcbiAxNDI6XFx0XFx0cmV0dXJuIHRydWU7XFxuIDE0MzpcXHR9XFxuIDE0NDpcXHRcXG4gMTQ1OlxcdHN0YXRpYyBpbnQgbWx4NV9lc3dfYnJpZGdlX3BvcnRfY2hhbmdldXBwZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdm9pZCAqcHRyKVxcbiAxNDY6XFx0e1xcbiAxNDc6XFx0XFx0c3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyAqYnJfb2ZmbG9hZHMgPSBjb250YWluZXJfb2YobmIsXFxuIDE0ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IG1seDVfZXN3X2JyaWRnZV9vZmZsb2FkcyxcXG4gMTQ5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBuZXRkZXZfbmIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMDo1NzoyNy45NTQwNDIwNTdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NzcwMzcwMjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1lbGxhbm94IEUtU3dpdGNoIEJyaWRnZSBPZmZsb2FkaW5nIENvZGUncyBGdXp6aW5nIFN1aXRhYmlsaXR5KipcblxuT2theSwgaGVyZSdzIHRoZSBkZWFsIHdpdGggdGhpcyBgbWx4NWAgZHJpdmVyIGNvZGUgZm9yIEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nLiBJJ20gbG9va2luZyBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3JlcC9icmlkZ2UuY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3L2JyaWRnZS5jYCBzcGVjaWZpY2FsbHkuIEJhc2VkIG9uIHRoZSBndWlkZWxpbmVzLCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGNhdGVnb3J5LCBhbmQgaXQgc2VlbXMgcHJldHR5IGNsZWFyIHRoYXQgaXQgZG9lcy5cblxuVGhpcyBpcyBNZWxsYW5veCBjb2RlLCBzcGVjaWZpY2FsbHkgZm9yIHRoZWlyIENvbm5lY3RYIG5ldHdvcmsgYWRhcHRlcnMsIFNtYXJ0TklDcywgb3IgQmx1ZUZpZWxkIGRldmljZXMuIFRoaXMga2luZCBvZiBjb2RlIG5lZWRzIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSBwcmVzZW50IHRvIHByb2JlIHRoZSBkZXZpY2UsIGluaXRpYWxpemUgdGhlIGUtc3dpdGNoIGFuZCByZXByZXNlbnRvciBkZXZpY2VzLCBhbmQgYWN0dWFsbHksIHlvdSBrbm93LCAqd29yayouIFRoZSBndWlkZWxpbmVzIHNwZWNpZmljYWxseSBtZW50aW9uIHRoaXMgdHlwZSBvZiBzaXR1YXRpb246IHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDcyBvciBQQ0llIGNhcmRzLlxuXG5TaW5jZSBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBlbnZpcm9ubWVudHMsIHdoaWNoIHN5emthbGxlciB1c2VzLCBkb24ndCBlbXVsYXRlIHRoZXNlIE1lbGxhbm94IGRldmljZXMsIHRoaXMgY29kZSBpcywgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3NlcywgdW5yZWFjaGFibGUgaW4gdGhlIHVzdWFsIGZ1enppbmcgc2V0dXAuIFNvLCBpdCdzIHByZXR0eSBvYnZpb3VzOiBgV29ydGhGdXp6aW5nYCBpcyBnb2luZyB0byBiZSBgZmFsc2VgLlxuXG5Ob3csIGJlZm9yZSBJIGNhbGwgYHNldC1yZXN1bHRzYCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gaGl0dGluZyBhbGwgdGhlIGNyaXRlcmlhLiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLCBjaGVjay4gVGhlIHJlYXNvbmluZz8gV2VsbCwgaXQncyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciBmb3IgdGhlIGBtbHg1YCBkcml2ZXIsIHJlcXVpcmluZyBzcGVjaWZpYyBNZWxsYW5veCBoYXJkd2FyZSB0aGF0J3MgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGF0J3MgYSBjb25jaXNlIGV4cGxhbmF0aW9uLCBzbyB0aGF0J3MgZ29vZC4gYEZvY3VzU3ltYm9sc2A/IEVtcHR5LiBgRW5hYmxlQ29uZmlnc2A/IEVtcHR5LiBQZXJmZWN0LlxuXG5BbHJpZ2h0LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NjAsIk91dHB1dFRva2VucyI6OTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQyMDo1NzozMi43MjQ0MTU0NjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIGNoYW5nZXMgbW9kaWZ5IHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciAoc3BlY2lmaWNhbGx5IEUtU3dpdGNoIGJyaWRnZSBvZmZsb2FkaW5nIGxvZ2ljKSwgd2hpY2ggcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUgb3IgU21hcnROSUNzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDIwOjU3OjMyLjcyNDQ0MTM2N1oiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgsvsh[1] Phase: Running StartedAt: 2026-09-08 20:57:43 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgsvsh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-08 20:57:43 +0000 UTC FinishedAt: 2026-09-08 20:57:48 +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,}