Name: series-workflowwvcxp Phase: Failed StartedAt: 2026-08-04 11:38:24 +0000 UTC FinishedAt: 2026-08-04 11:41:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcxp[0] Phase: Succeeded StartedAt: 2026-08-04 11:38:24 +0000 UTC FinishedAt: 2026-08-04 11:41:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcxp[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 11:38:24 +0000 UTC FinishedAt: 2026-08-04 11:41:15 +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+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBFdGhlcm5ldCBQSFkgKEVjb05ldCBFTjc1MjgpLiBQSFkgZHJpdmVycyBhcmUgcHJvYmVkIGJhc2VkIG9uIGhhcmR3YXJlIElEcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzIG9yIHZpYSBkZXZpY2UgdHJlZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM3M2VkODEwYjE2MWNiZjMzZTEwMzA5Y2MyY2EzNWM1N2FjZWIwYjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDExOjQwOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWdcbmluZGV4IGJiN2RjODc2MjcxZTguLmI2ZDQxYmJiYmMyN2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWdcbkBAIC0yMyw5ICYjNDM7MjMsOSBAQCBjb25maWcgTUVESUFURUtfR0VfUEhZXG4gXG4gY29uZmlnIE1FRElBVEVLX0dFX1NPQ19QSFlcbiBcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFNvQyBFdGhlcm5ldCBQSFlzXCYjMzQ7XG4tXHRkZXBlbmRzIG9uIEFSTTY0IHx8IENPTVBJTEVfVEVTVFxuJiM0MztcdGRlcGVuZHMgb24gQVJNNjQgfHwgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxuIFx0ZGVwZW5kcyBvbiBBUkNIX0FJUk9IQSB8fCAoQVJDSF9NRURJQVRFSyBcdTAwMjZcdTAwMjYgTlZNRU1fTVRLX0VGVVNFKSB8fCBcXFxuLVx0XHQgICBDT01QSUxFX1RFU1RcbiYjNDM7XHRcdCAgIEVDT05FVCB8fCBDT01QSUxFX1RFU1RcbiBcdHNlbGVjdCBNVEtfTkVUX1BIWUxJQlxuIFx0c2VsZWN0IFBIWV9QQUNLQUdFXG4gXHRoZWxwXG5AQCAtMzYsNSAmIzQzOzM2LDkgQEAgY29uZmlnIE1FRElBVEVLX0dFX1NPQ19QSFlcbiBcdCAgcHJlc2VudCBpbiB0aGUgU29DcyBlZnVzZSBhbmQgd2lsbCBkeW5hbWljYWxseSBjYWxpYnJhdGUgVkNNXG4gXHQgIChjb21tb24tbW9kZSB2b2x0YWdlKSBkdXJpbmcgc3RhcnR1cC5cbiBcbiYjNDM7XHQgIEFsc28gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gR2lnYWJpdCBFdGhlcm5ldCBQSFlzIG9mXG4mIzQzO1x0ICB0aGUgQWlyb2hhIEFONzU4MSBhbmQgQU43NTgzIFNvQ3MgYW5kIG9mIHRoZSBFY29OZXQgRU43NTI4IFNvQyxcbiYjNDM7XHQgIHdoaWNoIG5lZWQgbm8gZWZ1c2UgY2FsaWJyYXRpb24gZGF0YS5cbiYjNDM7XG4gY29uZmlnIE1US19ORVRfUEhZTElCXG4gXHR0cmlzdGF0ZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jXG5pbmRleCA5YTU0OTQ5NjQ0ZDVhLi4wMDQxMzAwZDRmMTAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuY1xuQEAgLTE2LDYgJiM0MzsxNiw3IEBAXG4gXG4gI2RlZmluZSBNVEtfR1BIWV9JRF9NVDc5ODFcdFx0XHQweDAzYTI5NDYxXG4gI2RlZmluZSBNVEtfR1BIWV9JRF9NVDc5ODhcdFx0XHQweDAzYTI5NDgxXG4mIzQzOyNkZWZpbmUgTVRLX0dQSFlfSURfRU43NTI4XHRcdFx0MHgwM2EyOTQ5MVxuICNkZWZpbmUgTVRLX0dQSFlfSURfQU43NTgxXHRcdFx0MHgwM2EyOTRjMVxuICNkZWZpbmUgTVRLX0dQSFlfSURfQU43NTgzXHRcdFx0MHhjMGZmMDQyMFxuIFxuQEAgLTMyMCw2ICYjNDM7MzIxLDE0IEBAXG4gLyogUmVnaXN0ZXJzIG9uIE1ESU9fTU1EX1ZFTkQyICovXG4gI2RlZmluZSBNVEtfUEhZX0xFRDFfREVGQVVMVF9QT0xBUklUSUVTXHRcdEJJVCgxKVxuIFxuJiM0MzsvKiBMRUQgYmFzaWMgY29udHJvbCByZWdpc3RlciwgcGFydCBvZiB0aGUgc2FtZSBMRUQgYmxvY2sgYXMgdGhlIExFRDAvTEVEMVxuJiM0MzsgKiBjb250cm9sIHJlZ2lzdGVycyBhYm92ZS4gVGhlIGFpcl9lbjg4MTFoIGRyaXZlciBkZXNjcmliZXMgdGhlIHNhbWVcbiYjNDM7ICogcmVnaXN0ZXIgYXMgQUlSX1BIWV9MRURfQkNSLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBNVEtfUEhZX0xFRF9CQ1JcdFx0XHRcdDB4MjFcbiYjNDM7I2RlZmluZSAgIE1US19QSFlfTEVEX0JDUl9DTEtfRU5cdFx0QklUKDMpXG4mIzQzOyNkZWZpbmUgICBNVEtfUEhZX0xFRF9CQ1JfRVhUX0NUUkxcdFx0QklUKDE1KVxuJiM0MztcbiAjZGVmaW5lIE1US19QSFlfUkdfQkdfUkFTRUxcdFx0XHQweDExNVxuICNkZWZpbmUgICBNVEtfUEhZX1JHX0JHX1JBU0VMX01BU0tcdFx0R0VOTUFTSygyLCAwKVxuIFxuQEAgLTE0NzAsNiAmIzQzOzE0NzksMTkgQEAgc3RhdGljIGludCBhbjc1ODNfcGh5X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRyZXR1cm4gcGh5X2NsZWFyX2JpdHMocGh5ZGV2LCBNSUlfQk1DUiwgQk1DUl9QRE9XTik7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGVuNzUyOF9waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdC8qIFRoZSBMRUQgY29udHJvbGxlciBvZiB0aGUgRU43NTI4IHBvd2VycyB1cCB3aXRoIGl0cyBleHRlcm5hbFxuJiM0MztcdCAqIGNvbnRyb2wgZGlzYWJsZWQsIGxlYXZpbmcgdGhlIExFRCBwaW5zIGRhcmsgcmVnYXJkbGVzcyBvZiB3aGF0IGlzXG4mIzQzO1x0ICogcHJvZ3JhbW1lZCBpbnRvIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMuIEhhbmQgdGhlIHBpbnMgb3ZlciB0b1xuJiM0MztcdCAqIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMgdGhlIHNhbWUgd2F5IHRoZSBhaXJfZW44ODExaCBkcml2ZXJcbiYjNDM7XHQgKiBkb2VzOyB0aGUgbW9kZSBmaWVsZCBvZiB0aGlzIHJlZ2lzdGVyIGlzIGFscmVhZHkgc2V0IG91dCBvZiByZXNldC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXR1cm4gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNVEtfUEhZX0xFRF9CQ1IsXG4mIzQzO1x0XHRcdFx0TVRLX1BIWV9MRURfQkNSX0NMS19FTiB8XG4mIzQzO1x0XHRcdFx0TVRLX1BIWV9MRURfQkNSX0VYVF9DVFJMKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX3NvY3BoeV9kcml2ZXJbXSA9IHtcbiBcdHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSksXG5AQCAtMTUwNSw2ICYjNDM7MTUyNywxOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX3NvY3BoeV9kcml2ZXJbXSA9IHtcbiBcdFx0LmxlZF9od19jb250cm9sX3NldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuIFx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG4gXHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9FTjc1MjgpLFxuJiM0MztcdFx0Lm5hbWVcdFx0PSBcJiMzNDtFY29OZXQgRU43NTI4IFBIWVwmIzM0OyxcbiYjNDM7XHRcdC5jb25maWdfaW5pdFx0PSBlbjc1MjhfcGh5X2NvbmZpZ19pbml0LFxuJiM0MztcdFx0LnByb2JlXHRcdD0gYW43NTgxX3BoeV9wcm9iZSxcbiYjNDM7XHRcdC5sZWRfYmxpbmtfc2V0XHQ9IG10Nzk4eF9waHlfbGVkX2JsaW5rX3NldCxcbiYjNDM7XHRcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBtdDc5OHhfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbiYjNDM7XHRcdC5sZWRfaHdfaXNfc3VwcG9ydGVkID0gbXQ3OTh4X3BoeV9sZWRfaHdfaXNfc3VwcG9ydGVkLFxuJiM0MztcdFx0LmxlZF9od19jb250cm9sX3NldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuJiM0MztcdFx0LmxlZF9od19jb250cm9sX2dldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuJiM0MztcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhbjc1ODFfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG4mIzQzO1x0fSxcbiBcdHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSksXG4gXHRcdC5uYW1lXHRcdD0gXCYjMzQ7QWlyb2hhIEFONzU4MSBQSFlcJiMzNDssXG5AQCAtMTUzNyw2ICYjNDM7MTU3MSw3IEBAIG1vZHVsZV9waHlfZHJpdmVyKG10a19zb2NwaHlfZHJpdmVyKTtcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG10a19zb2NwaHlfdGJsW10gPSB7XG4gXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc5ODEpIH0sXG4gXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc5ODgpIH0sXG4mIzQzO1x0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfRU43NTI4KSB9LFxuIFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgxKSB9LFxuIFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgzKSB9LFxuIFx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBFdGhlcm5ldCBQSFkgKEVjb05ldCBFTjc1MjgpLiBQSFkgZHJpdmVycyBhcmUgcHJvYmVkIGJhc2VkIG9uIGhhcmR3YXJlIElEcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzIG9yIHZpYSBkZXZpY2UgdHJlZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM3M2VkODEwYjE2MWNiZjMzZTEwMzA5Y2MyY2EzNWM1N2FjZWIwYjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDExOjQwOjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZwppbmRleCBiYjdkYzg3NjI3MWU4Li5iNmQ0MWJiYmJjMjdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZwpAQCAtMjMsOSAmIzQzOzIzLDkgQEAgY29uZmlnIE1FRElBVEVLX0dFX1BIWQogCiBjb25maWcgTUVESUFURUtfR0VfU09DX1BIWQogCXRyaXN0YXRlICYjMzQ7TWVkaWFUZWsgU29DIEV0aGVybmV0IFBIWXMmIzM0OwotCWRlcGVuZHMgb24gQVJNNjQgfHwgQ09NUElMRV9URVNUCiYjNDM7CWRlcGVuZHMgb24gQVJNNjQgfHwgRUNPTkVUIHx8IENPTVBJTEVfVEVTVAogCWRlcGVuZHMgb24gQVJDSF9BSVJPSEEgfHwgKEFSQ0hfTUVESUFURUsgJmFtcDsmYW1wOyBOVk1FTV9NVEtfRUZVU0UpIHx8IFwKLQkJICAgQ09NUElMRV9URVNUCiYjNDM7CQkgICBFQ09ORVQgfHwgQ09NUElMRV9URVNUCiAJc2VsZWN0IE1US19ORVRfUEhZTElCCiAJc2VsZWN0IFBIWV9QQUNLQUdFCiAJaGVscApAQCAtMzYsNSAmIzQzOzM2LDkgQEAgY29uZmlnIE1FRElBVEVLX0dFX1NPQ19QSFkKIAkgIHByZXNlbnQgaW4gdGhlIFNvQ3MgZWZ1c2UgYW5kIHdpbGwgZHluYW1pY2FsbHkgY2FsaWJyYXRlIFZDTQogCSAgKGNvbW1vbi1tb2RlIHZvbHRhZ2UpIGR1cmluZyBzdGFydHVwLgogCiYjNDM7CSAgQWxzbyBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBHaWdhYml0IEV0aGVybmV0IFBIWXMgb2YKJiM0MzsJICB0aGUgQWlyb2hhIEFONzU4MSBhbmQgQU43NTgzIFNvQ3MgYW5kIG9mIHRoZSBFY29OZXQgRU43NTI4IFNvQywKJiM0MzsJICB3aGljaCBuZWVkIG5vIGVmdXNlIGNhbGlicmF0aW9uIGRhdGEuCiYjNDM7CiBjb25maWcgTVRLX05FVF9QSFlMSUIKIAl0cmlzdGF0ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYyBiL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMKaW5kZXggOWE1NDk0OTY0NGQ1YS4uMDA0MTMwMGQ0ZjEwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jCkBAIC0xNiw2ICYjNDM7MTYsNyBAQAogCiAjZGVmaW5lIE1US19HUEhZX0lEX01UNzk4MQkJCTB4MDNhMjk0NjEKICNkZWZpbmUgTVRLX0dQSFlfSURfTVQ3OTg4CQkJMHgwM2EyOTQ4MQomIzQzOyNkZWZpbmUgTVRLX0dQSFlfSURfRU43NTI4CQkJMHgwM2EyOTQ5MQogI2RlZmluZSBNVEtfR1BIWV9JRF9BTjc1ODEJCQkweDAzYTI5NGMxCiAjZGVmaW5lIE1US19HUEhZX0lEX0FONzU4MwkJCTB4YzBmZjA0MjAKIApAQCAtMzIwLDYgJiM0MzszMjEsMTQgQEAKIC8qIFJlZ2lzdGVycyBvbiBNRElPX01NRF9WRU5EMiAqLwogI2RlZmluZSBNVEtfUEhZX0xFRDFfREVGQVVMVF9QT0xBUklUSUVTCQlCSVQoMSkKIAomIzQzOy8qIExFRCBiYXNpYyBjb250cm9sIHJlZ2lzdGVyLCBwYXJ0IG9mIHRoZSBzYW1lIExFRCBibG9jayBhcyB0aGUgTEVEMC9MRUQxCiYjNDM7ICogY29udHJvbCByZWdpc3RlcnMgYWJvdmUuIFRoZSBhaXJfZW44ODExaCBkcml2ZXIgZGVzY3JpYmVzIHRoZSBzYW1lCiYjNDM7ICogcmVnaXN0ZXIgYXMgQUlSX1BIWV9MRURfQkNSLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgTVRLX1BIWV9MRURfQkNSCQkJCTB4MjEKJiM0MzsjZGVmaW5lICAgTVRLX1BIWV9MRURfQkNSX0NMS19FTgkJQklUKDMpCiYjNDM7I2RlZmluZSAgIE1US19QSFlfTEVEX0JDUl9FWFRfQ1RSTAkJQklUKDE1KQomIzQzOwogI2RlZmluZSBNVEtfUEhZX1JHX0JHX1JBU0VMCQkJMHgxMTUKICNkZWZpbmUgICBNVEtfUEhZX1JHX0JHX1JBU0VMX01BU0sJCUdFTk1BU0soMiwgMCkKIApAQCAtMTQ3MCw2ICYjNDM7MTQ3OSwxOSBAQCBzdGF0aWMgaW50IGFuNzU4M19waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlyZXR1cm4gcGh5X2NsZWFyX2JpdHMocGh5ZGV2LCBNSUlfQk1DUiwgQk1DUl9QRE9XTik7CiB9CiAKJiM0MztzdGF0aWMgaW50IGVuNzUyOF9waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CS8qIFRoZSBMRUQgY29udHJvbGxlciBvZiB0aGUgRU43NTI4IHBvd2VycyB1cCB3aXRoIGl0cyBleHRlcm5hbAomIzQzOwkgKiBjb250cm9sIGRpc2FibGVkLCBsZWF2aW5nIHRoZSBMRUQgcGlucyBkYXJrIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBpcwomIzQzOwkgKiBwcm9ncmFtbWVkIGludG8gdGhlIExFRCBjb250cm9sIHJlZ2lzdGVycy4gSGFuZCB0aGUgcGlucyBvdmVyIHRvCiYjNDM7CSAqIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMgdGhlIHNhbWUgd2F5IHRoZSBhaXJfZW44ODExaCBkcml2ZXIKJiM0MzsJICogZG9lczsgdGhlIG1vZGUgZmllbGQgb2YgdGhpcyByZWdpc3RlciBpcyBhbHJlYWR5IHNldCBvdXQgb2YgcmVzZXQuCiYjNDM7CSAqLwomIzQzOwlyZXR1cm4gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNVEtfUEhZX0xFRF9CQ1IsCiYjNDM7CQkJCU1US19QSFlfTEVEX0JDUl9DTEtfRU4gfAomIzQzOwkJCQlNVEtfUEhZX0xFRF9CQ1JfRVhUX0NUUkwpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtdGtfc29jcGh5X2RyaXZlcltdID0gewogCXsKIAkJUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSksCkBAIC0xNTA1LDYgJiM0MzsxNTI3LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtdGtfc29jcGh5X2RyaXZlcltdID0gewogCQkubGVkX2h3X2NvbnRyb2xfc2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9zZXQsCiAJCS5sZWRfaHdfY29udHJvbF9nZXQgPSBtdDc5OHhfcGh5X2xlZF9od19jb250cm9sX2dldCwKIAl9LAomIzQzOwl7CiYjNDM7CQlQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfRU43NTI4KSwKJiM0MzsJCS5uYW1lCQk9ICYjMzQ7RWNvTmV0IEVONzUyOCBQSFkmIzM0OywKJiM0MzsJCS5jb25maWdfaW5pdAk9IGVuNzUyOF9waHlfY29uZmlnX2luaXQsCiYjNDM7CQkucHJvYmUJCT0gYW43NTgxX3BoeV9wcm9iZSwKJiM0MzsJCS5sZWRfYmxpbmtfc2V0CT0gbXQ3OTh4X3BoeV9sZWRfYmxpbmtfc2V0LAomIzQzOwkJLmxlZF9icmlnaHRuZXNzX3NldCA9IG10Nzk4eF9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LAomIzQzOwkJLmxlZF9od19pc19zdXBwb3J0ZWQgPSBtdDc5OHhfcGh5X2xlZF9od19pc19zdXBwb3J0ZWQsCiYjNDM7CQkubGVkX2h3X2NvbnRyb2xfc2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9zZXQsCiYjNDM7CQkubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsCiYjNDM7CQkubGVkX3BvbGFyaXR5X3NldCA9IGFuNzU4MV9waHlfbGVkX3BvbGFyaXR5X3NldCwKJiM0MzsJfSwKIAl7CiAJCVBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9BTjc1ODEpLAogCQkubmFtZQkJPSAmIzM0O0Fpcm9oYSBBTjc1ODEgUEhZJiMzNDssCkBAIC0xNTM3LDYgJiM0MzsxNTcxLDcgQEAgbW9kdWxlX3BoeV9kcml2ZXIobXRrX3NvY3BoeV9kcml2ZXIpOwogc3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtdGtfc29jcGh5X3RibFtdID0gewogCXsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSkgfSwKIAl7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc5ODgpIH0sCiYjNDM7CXsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0VONzUyOCkgfSwKIAl7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9BTjc1ODEpIH0sCiAJeyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgzKSB9LAogCXsgfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjA4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTM0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgRWNvTmV0IEVONzUyOCBQSFkgRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIGFkZGluZyBzdXBwb3J0IGZvciB0aGUgRWNvTmV0IEVONzUyOCBQSFkgdG8gdGhlIE1lZGlhVGVrIEV0aGVybmV0IFBIWSBkcml2ZXIuIEl0JiMzOTtzIG1vZGlmeWluZyBLY29uZmlnIGFuZCBhIEMgZmlsZSwgZXNzZW50aWFsbHkgaW50cm9kdWNpbmcgYSBuZXcgUEhZIElEIGFuZCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBzeXprYWxsZXIgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIG5ldyBjb2RlIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/CgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIFBIWSBkcml2ZXJzIGFyZSB1c3VhbGx5IHByb2JlZCB2aWEgdGhlIE1ESU8gYnVzLiBDYW4gd2UgZW11bGF0ZSB0aGF0IGluIFFFTVU/IFdlICptaWdodCogYmUgYWJsZSB0byBnZXQgaXQgdG8gd29yayBpZiBRRU1VIGVtdWxhdGVzIHRoZSBNRElPIGJ1cyBvciBpZiB3ZSBjb3VsZCBzb21laG93IGluc3RhbnRpYXRlIGEgZHVtbXkgb25lIGFuZCByZWdpc3RlciB0aGUgUEhZLiBCdXQgc3l6a2FsbGVyIHR5cGljYWxseSBkb2VzbiYjMzk7dCBkaXJlY3RseSB0YXJnZXQgUEhZIGRyaXZlcnMgdW5sZXNzIHRoZXkmIzM5O3JlIHBhcnQgb2YgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIHdpdGggYW4gZXhwb3NlZCBNRElPIGJ1cy4gSSBkb24mIzM5O3Qgc2VlIGFueSBleHBsaWNpdCBzdXBwb3J0IGZvciBNRElPL1BIWSBmdXp6aW5nIHZpYSBgc3l6X2dlbmV0bGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXIgaGVyZS4gU3l6a2FsbGVyIHRlbmRzIHRvIGZvY3VzIG9uIG5ldHdvcmsgZGV2aWNlcyBsaWtlIGB0dW5gL2B0YXBgIG9yIGB2ZXRoYCwgd2hpY2ggZG9uJiMzOTt0IGhhdmUgUEhZcy4gU29tZSBkcml2ZXJzIGxpa2UgYG1hY2JgIG9yIGBlMTAwMGAgKm1pZ2h0KiBoYXZlIFBIWXMgYXR0YWNoZWQsIGJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgdXN1YWwgc3l6a2FsbGVyIGFwcHJvYWNoLgoKU28sIHRoZSBrZXkgaGVyZSBpcyByZWFjaGFiaWxpdHkuIFN5emthbGxlciAqY2FuKiBoaXQgUEhZIGRyaXZlcnMgaWYgdGhleSBhcmUgcmVnaXN0ZXJlZCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIG5ldGxpbmsgb3IgaW9jdGxzLiBCdXQgKmhvdyogZG8gd2UgZ2V0IGl0IHJlZ2lzdGVyZWQ/IE15IGh1bmNoIGlzIHRoaXMgTWVkaWFUZWsgZHJpdmVyIGlzIGZvciBidWlsdC1pbiBQSFlzIHdpdGhpbiBNZWRpYVRlayBTb0NzLiBDYW4gd2UgcHJvYmUgdGhpcyB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmU/IFBIWSBkcml2ZXJzIGFyZSB1c3VhbGx5IHJlZ2lzdGVyZWQgb24gdGhlIE1ESU8gYnVzLCBtYXRjaGluZyB0aGUgUEhZIElELiBDb3VsZCB3ZSBzcG9vZiB0aGUgUEhZIElELCBtYXliZSBjcmVhdGUgYSB2aXJ0dWFsIE1ESU8gYnVzIG9yIHVzZSBhIHZpcnR1YWwgZGV2aWNlIGxpa2UgYG1hY2JgIG9yIGBlMTAwMGAsIGJ1dCBzeXprYWxsZXIgZG9lc24mIzM5O3QgdHlwaWNhbGx5IG1lc3Mgd2l0aCB0aGF0IHNvcnQgb2YgdGhpbmcgdW5sZXNzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxsIGZvciBNRElPLgoKV2Uga25vdyB0aGVyZSYjMzk7cyBhbiBNRElPIGJ1cywgYnV0IHVzZXJzcGFjZSBjYW4mIzM5O3QgKmNyZWF0ZSogTURJTyBkZXZpY2VzLiBUaGV5JiMzOTtyZSBjcmVhdGVkIGJ5IHRoZSBNQUMgZHJpdmVyIHByb2JpbmcgdGhlIGJ1cy4gQ291bGQgd2Ugc29tZWhvdyB0cmlnZ2VyIHRoZSBQSFkgZHJpdmVyIHByb2JlIHZpYSBzb21ldGhpbmcgbGlrZSBJMkMvTURJTz8gTm90IGxpa2VseS4gQW5kIHRoaXMgaXMganVzdCBhIFBIWSBkcml2ZXIsIGl0IHNvdW5kcyBsaWtlLiBXZSBjYW4gcmVhZC93cml0ZSBQSFkgcmVnaXN0ZXJzIHZpYSBTSU9DR01JSVJFRy9TSU9DU01JSVJFRywgYnV0IGl0IHdvbiYjMzk7dCB0cmlnZ2VyIHByb2JpbmcuCgpUaGUgY29yZSBvZiB0aGUgcHJvYmxlbTogaG93IGRvIHdlIGdldCB0aGUgTURJTyBidXMgdG8gKnNlZSogdGhlIFBIWSBJRD8gSXMgdGhlcmUgc29mdHdhcmUgTURJTyBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCB0aGF0IHN5emthbGxlciBjb3VsZCB1c2U/IEkmIzM5O2QgY2hlY2sgdGhlIHN5emthbGxlciBzb3VyY2UsIGJ1dCBJIGNhbiYjMzk7dC4KCkxldCYjMzk7cyBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIEl0IGxvb2tzIGxpa2UgYE1FRElBVEVLX0dFX1NPQ19QSFlgIGNhbiBiZSBidWlsdCB3aXRoIGBDT01QSUxFX1RFU1RgLiBIb3dldmVyLCB0byAqcnVuKiB0aGUgZHJpdmVyLCB3ZSYjMzk7cmUgbGlrZWx5IGdvaW5nIHRvIG5lZWQgc3BlY2lmaWMgaGFyZHdhcmUuIGBlbjc1MjhfcGh5X2NvbmZpZ19pbml0YCBuZWVkcyB0byBiZSBpbml0aWFsaXplZC4gSXQgbG9va3MgbGlrZSBpdCBpcyBjYWxsZWQgYnkgdGhlIFBIWSBsaWJyYXJ5IHdoZW4gdGhlIFBIWSBpcyBpbml0aWFsaXplZC4gV2l0aG91dCBhIE1lZGlhVGVrIG9yIEVjb05ldCBTb0MsIHRoZXJlIGlzIG5vIE1ESU8gYnVzIHRoYXQgaGFzIHRoZSBQSFkgSUQgKDB4MDNhMjk0OTEpIGZvciBpdCB0byBiZSBwcm9iZWQuIEl0IHdvdWxkIG5lZWQgUUVNVSB0byBlbXVsYXRlIGl0LgoKRG9lcyBRRU1VIGV2ZW4gZW11bGF0ZSBNZWRpYVRlayBvciBFY29OZXQgU29DIEV0aGVybmV0IFBIWXMgYnkgZGVmYXVsdCBvbiBgeDg2XzY0YCBvciBgYWFyY2g2NCB2aXJ0YCBtYWNoaW5lcz8gVW5saWtlbHkuIEkgaGF2ZSBhIGZlZWxpbmcgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIGBxZW11LXN5c3RlbS14ODZfNjRgIG9yIGBxZW11LXN5c3RlbS1hYXJjaDY0YCB3aXRoIGEgc3RhbmRhcmQgYHZpcnRgIG1hY2hpbmUuCgpTbywgdW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUgb2JzY3VyZSBRRU1VIGNvbmZpZ3VyYXRpb24gSSYjMzk7bSBtaXNzaW5nIChhbmQgSSBkb3VidCBpdCwgZ2l2ZW4gdGhlIHN0YW5kYXJkIGFwcHJvYWNoIG9mIHN5emthbGxlciksIG9yIHNvbWUgd2F5IHRvIGluamVjdCBQSFkgZGV2aWNlcyAobGlrZSBgZml4ZWRfcGh5LmNgIGJ1dCB0aG9zZSBoYXZlIGZpeGVkIElEcyksIHRoaXMgc3BlY2lmaWMgUEhZIGRyaXZlciBpcyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NjkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSYjMzk7bSB0aGUgZXhwZXJ0IGFuZCByZWZsZWN0aW5nIG9uIHRoZSB0ZXh0JiMzOTtzIHByb21wdDoKCioqUmUtZXZhbHVhdGluZyB0aGUgU3RyYXRlZ3kqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgYXBwcm9hY2ggaXMgb24gdGhlIHRhYmxlLCBidXQgSSYjMzk7bSBub3QgZ29pbmcgdG8ganVzdCB0YWtlIGl0IGFzIGdvc3BlbC4gTXkgaW5zdGluY3QgYXMgYW4gZXhwZXJ0IGlzIHRvIGFsd2F5cyBjaGFsbGVuZ2UgYXNzdW1wdGlvbnMgYW5kIGV4cGxvcmUgYWx0ZXJuYXRpdmVzLiBUaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGFyZSB0aGVyZSBvdGhlciBhdmVudWVzLCBvdGhlciBtZXRob2RvbG9naWVzLCBvdGhlciBwZXJzcGVjdGl2ZXMsIHRoYXQgd2UgaGF2ZW4mIzM5O3QgY29uc2lkZXJlZD8gVGhlIGN1cnJlbnQgcGxhbiBtaWdodCBiZSBwZXJmZWN0bHkgc291bmQsIGJ1dCBleHBlcmllbmNlIHRlbGxzIG1lIGEgcXVpY2sgY2hlY2sgZm9yIHBvdGVudGlhbCBibGluZCBzcG90cyBpcyBhbHdheXMgd29ydGh3aGlsZS4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gaWRlbnRpZnkgYW55IGFsdGVybmF0ZSBwYXRocyB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIG91dGNvbWUsIG9yIGV2ZW4gZmluZCBhIG1vcmUgZWxlZ2FudCBhbmQgZWZmaWNpZW50IHNvbHV0aW9uLiBUaGlzIGlzbiYjMzk7dCBhYm91dCBzZWNvbmQtZ3Vlc3NpbmcsIGl0JiMzOTtzIGFib3V0IG9wdGltaXppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvYnVzX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDg2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmU6CgoqKkNvbnNpZGVyaW5nIE5ldHdvcmsgRHJpdmVyIEFyY2hpdGVjdHVyZXMgZm9yIGEgUEhZLWxlc3MgU2NlbmFyaW8qKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mICpub3QqIGhhdmluZyBhIFBoeXNpY2FsIExheWVyIFRyYW5zY2VpdmVyIChQSFkpIGluIHRoaXMgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHBvdGVudGlhbCBleGlzdGluZyBhcmNoaXRlY3R1cmVzIHRoYXQgbWlnaHQgb2ZmZXIgYSB1c2VmdWwgc3RhcnRpbmcgcG9pbnQsIG9yIGF0IGxlYXN0IGluc3BpcmUgYSB2aWFibGUgZGVzaWduLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgZHJpdmVycyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIHNjZW5hcmlvcyAqd2l0aG91dCogYSBQSFksIG9yIHdoZXJlIHRoZSBQSFkgaXMgZnVuZGFtZW50YWxseSBhYnN0cmFjdGVkIGF3YXkgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KCmBkcml2ZXJzL25ldC9kdW1teS5jYCBzcHJpbmdzIHRvIG1pbmQgaW1tZWRpYXRlbHkuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGEgbm8tb3AgZHJpdmVyLCBhIG5ldHdvcmsgaW50ZXJmYWNlIHRoYXQganVzdCBhYnNvcmJzIGFuZCBzcGl0cyBvdXQgcGFja2V0cyB3aXRob3V0IGFueSBoYXJkd2FyZSBpbnRlcmFjdGlvbi4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBtb2RlbCBmb3IgYWJzdHJhY3Rpb24uIFRoZW4gdGhlcmUgaXMgYGRyaXZlcnMvbmV0L3R1bi5jYCwgdGhlIFRVTi9UQVAgZHJpdmVyLiBJdCYjMzk7cyBhbiBpbnRlcmVzdGluZyBjYXNlIGJlY2F1c2UgaXQgY3JlYXRlcyBhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2UgdGhhdCYjMzk7cyB0aWVkIGludG8gdGhlIGtlcm5lbC4gSXTigJlzIGFsc28gaW1wb3J0YW50IGJlY2F1c2UgaXQgZGVhbHMgd2l0aCBuZXR3b3JrLWxheWVyIHBhY2tldHMuCgpUaGUgYWJzZW5jZSBvZiBhIFBIWSBpcyB0aGUga2V5IHF1ZXN0aW9uLiBXZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyB0byByZXByZXNlbnQgYW5kIG1hbmFnZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3VsZCAqbm9ybWFsbHkqIGJlIGhhbmRsZWQgYnkgdGhlIFBIWS4KClNvLCBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgTURJTyBidXMgaW1wbGVtZW50YXRpb24uIFRoaXMgaXMgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTUlJKSBtYW5hZ2VtZW50IGJ1cyB1c2VkIHRvIGNvbmZpZ3VyZSBhbmQgbW9uaXRvciBQSFlzLiBJZiB3ZSAqY291bGQqIHByZXNlbnQgYSB2aXJ0dWFsIE1ESU8gYnVzLCBldmVuIGlmIGl0JiMzOTtzIHB1cmVseSBzb2Z0d2FyZS1kZWZpbmVkLCBpdCB3b3VsZCBwcm92aWRlIGEgc3RhbmRhcmRpemVkIGludGVyZmFjZSBmb3IgaW50ZXJhY3Rpb24sIG9yIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZXNlIG5ldHdvcmsgaW50ZXJmYWNlcy4KCkl0JiMzOTtzIGEgd2F5IHRvIGxldmVyYWdlIHRoZSBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSB0aGF0IGV4cGVjdHMgYSBQSFkgYnV0IGFkYXB0IGl0IHRvIGEgbmV3IHNjZW5hcmlvLiBQZXJoYXBzIHdlIGNhbiBtb2RlbCBhbnkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB0aHJvdWdoIGEgc2ltaWxhciBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb2J1c19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTAxMiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjgzLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNldXNlcl9taWlfYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxMy1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MzIxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfY3JlYXRlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MzQyOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cdTAwM2VkZXYsIGJ1cyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zNDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIzMjE9aW50IGtzel9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIzOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5NC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzYxPW10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM5Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzk3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzOTgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg4ODpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5Mi1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTQtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xNDk9c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xNzktXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxODA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz05NTc9c3RhdGljIGludCB2c2M5OTU5X21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDEzLVx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDE0Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDE1LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYz04Nzg9c3RhdGljIGludCB2c2M5OTUzX21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwMy1cdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MDQ6XHRyYyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgTlVMTCk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwNS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MzU3PXN0YXRpYyBpbnQgYXI5MzMxX3N3X21idXNfaW5pdChzdHJ1Y3QgYXI5MzMxX3N3X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODEtXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjM4MjpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4My1cdG9mX25vZGVfcHV0KG1ucCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9OTQ3PXFjYThrX21kaW9fcmVnaXN0ZXIoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg2LVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6OTg3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvKTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9NzQ9aW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MTAwOlx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExMTc9c3RhdGljIGludCBhNXBzd19wcm9iZV9tZGlvKHN0cnVjdCBhNXBzdyAqYTVwc3csIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDMtXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNDQ6XHRyZXR1cm4gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0NS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oPTMwNz12b2lkIHNqYTExMDVfZnJhbWVfbWVtb3J5X3BhcnRpdGlvbmluZyhzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzA5LS8qIEZyb20gc2phMTEwNV9tZGlvLmMgKi9cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaDozMTA6aW50IHNqYTExMDVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oLTMxMS12b2lkIHNqYTExMDVfbWRpb2J1c191bnJlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzAyNj1zdGF0aWMgaW50IHNqYTExMDVfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjctXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMDY4Olx0cmMgPSBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2OS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI1OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3R4X3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg3LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mjg4Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg5LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDMtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNDQ6XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDUtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zNjg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfcGNzX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk1LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mzk2Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOTctXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz00Mzk9c3RhdGljIHZvaWQgc2phMTEwNV9tZGlvYnVzX3Bjc191bnJlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDU4LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6NDU5OmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDYwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTk1PXl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxMi1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2MTM6XHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxNC1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTcyNj15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDMtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0Olx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ1OT1zdGF0aWMgaW50IGF4X21paV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM6NDc5Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ4MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jPTEzMjE9c3RhdGljIGludCBvd2xfZW1hY19tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxMzQ2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cdTAwM2VtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz01MDk9c3RhdGljIGludCBhZGluMTExMF9yZWdpc3Rlcl9tZGlvYnVzKHN0cnVjdCBhZGluMTExMF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjUzMDpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz02MTc9c3RhdGljIGludCBhZGluMTE0MF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTYzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjYzNzpcdHJldHVybiBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpZGV2LVx1MDAzZWRldiwgcHJpdi1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTYzOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYz0xMjkwPXN0YXRpYyBpbnQgZ3JldGhfbWRpb19pbml0KHN0cnVjdCBncmV0aF9wcml2YXRlICpncmV0aClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjEzMDc6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGdyZXRoLVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jPTM5MzE9c3RhdGljIGludCBldDEzMXhfcGNpX3NldHVwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDI3Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI4LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTEyMT1zdGF0aWMgaW50IGFsdGVyYV90c2VfbWRpb19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTU4Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1OS1cdGlmIChyZXQgIT0gMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM9MTA2MT1zdGF0aWMgaW50IGF1MTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6MTIyMjpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYXVwLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIzLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9MzQyOD1zdGF0aWMgaW50IHhnYmVfcGh5X2luaXQoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxNy1cdHNucHJpbnRmKG1paS1cdTAwM2VpZCwgc2l6ZW9mKG1paS1cdTAwM2VpZCksIFwmIzM0OyVzXCYjMzQ7LCBkZXZfbmFtZShwZGF0YS1cdTAwM2VkZXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcxODpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWlpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxOS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcyMDpcdFx0ZGV2X2VycihwZGF0YS1cdTAwM2VkZXYsIFwmIzM0O21kaW9idXNfcmVnaXN0ZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcyMS1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMTgtXHRtZGlvX2J1cy1cdTAwM2VwaHlfbWFzayA9IDB4MTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE5Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz04Mzc9aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjg4ODpzdGF0aWMgaW50IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODktXHRcdFx0XHQgIHN0cnVjdCBtaWlfYnVzICptZGlvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MTM6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxNC1cdFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjEtXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTIyOlx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1ODpcdHJldCA9IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIocGRhdGEsIG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYz0xMzE9aW50IGFyY19tZGlvX3Byb2JlKHN0cnVjdCBhcmNfZW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM6MTczOlx0ZXJyb3IgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzQtXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jPTk2Nj1zdGF0aWMgaW50IGF4ODg3OTZjX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jOjEwMTE6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpLVx1MDAzZWRldiwgYXhfbG9jYWwtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEyLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9Njg3PXN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjctXHRtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjcyODpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyOS1cdG9mX25vZGVfcHV0KG1ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjYwOlx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNjEtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MTcxMz1zdGF0aWMgaW50IGJjbV9lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjE4MzA6XHRcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MzEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNy1cdG9mX25vZGVfcHV0KG5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz0xOTM9aW50IGJjbWdlbmV0X21paV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBpbml0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzMy1cdFx0cGh5X25hbWUgPSBcJiMzNDtleHRlcm5hbCBSdk1JSVwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcdFx0Lyogb2ZfbWRpb2J1c19yZWdpc3RlciB0b29rIGNhcmUgb2YgcmVhZGluZyB0aGUgJiMzOTttYXgtc3BlZWQmIzM5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjM1LVx0XHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yMTU3PXN0YXRpYyBpbnQgc2JtYWNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGRldiwgbG9uZyBsb25nIGJhc2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIyMjctXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyMjI4Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihzYy1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE1MDU9c3RhdGljIGludCB0ZzNfbWRpb19pbml0KHN0cnVjdCB0ZzMgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNTU4Olx0aSA9IG1kaW9idXNfcmVnaXN0ZXIodHAtXHUwMDNlbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1OS1cdGlmIChpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwOTc6c3RhdGljIGludCBtYWNiX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1hY2IgKmJwLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNC1cdGlmIChtZGlvX25wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTA1Olx0XHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMTk6XHRcdFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIwLVx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMjI6XHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihicC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMy19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMTI1PXN0YXRpYyBpbnQgbWFjYl9taWlfaW5pdChzdHJ1Y3QgbWFjYiAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTU5Olx0ZXJyID0gbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKGJwLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE2MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTA3PXN0YXRpYyBpbnQgZG05MDUxX21kaW9fcmVnaXN0ZXIoc3RydWN0IGJvYXJkX2luZm8gKmRiKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTEyNTpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcdTAwMjZzcGktXHUwMDNlZGV2LCBkYi1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTI0MjM9c3RhdGljIGludCB0c25lcF9tZGlvX2luaXQoc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjQ1NTpcdHJldHZhbCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cdTAwM2VtZGlvYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTEwMjQ9c3RhdGljIGludCBldGhvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTIwODpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwOS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3MzQ9c3RhdGljIGludCBmdGdtYWMxMDBfc2V0dXBfbWRpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTc3MDpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZWRldiwgcHJpdi1cdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc3MS1cdG9mX25vZGVfcHV0KG1kaW9fbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jPTM2PXN0YXRpYyBpbnQgZW5ldGNfcGNpX21kaW9fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYzo5MTpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTI2Nj1zdGF0aWMgaW50IGVuZXRjX21kaW9fcHJvYmUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjI5MzpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjk0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzA4PXN0YXRpYyBpbnQgZW5ldGNfaW1kaW9fY3JlYXRlKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDM6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQ0LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTMwNDI9c3RhdGljIGludCBmZWNfZW5ldF9taWlfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMTYxOlx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihmZXAtXHUwMDNlbWlpX2J1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM9NjU9c3RhdGljIGludCBtcGM1Mnh4X2ZlY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM6MTA2Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM9MTQ5PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYzoxNzY6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM9OTc9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYzoxNjc6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jPTQwOT1zdGF0aWMgaW50IGZzbF9wcV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM6NDk0Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTUtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYz0zNzE9c3RhdGljIGludCB4Z21hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjYtXHRpZiAoaXNfb2Zfbm9kZShmd25vZGUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjc6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCB0b19vZl9ub2RlKGZ3bm9kZSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjgtXHRlbHNlIGlmIChpc19hY3BpX25vZGUoZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI5Olx0XHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBmd25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MzAtXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yNjY9aW50IGhiZ19tZGlvX2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyOTI6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jPTEwOTQ9c3RhdGljIGludCBoaXg1aGQyX2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jOjExODY6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYz0xMjM9aW50IGhjbGdlX21hY19tZGlvX2NvbmZpZyhzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU0LVx0bWRpb19idXMtXHUwMDNlcGh5X21hc2sgPSB+KDFVIFx1MDAzY1x1MDAzYyBtYWMtXHUwMDNlcGh5X2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYzoxNTU6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jPTQ5NT1zdGF0aWMgaW50IGhuc19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTg0Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTg1LVx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cdTAwM2VkZXYuZndub2RlKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5Mi1cdFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1OTM6XHRcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobmV3X2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTQtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODQtXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXNcJiMzNDssIGRldi1cdTAwM2VvZmRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1Olx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNmRldi1cdTAwM2VvZmRldi1cdTAwM2VkZXYsIGJ1cywgbWlpX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg2LVx0aWYgKHJlcykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jPTEwMjY9aW50IGl4Z2JlX21paV9idXNfaW5pdChzdHJ1Y3QgaXhnYmVfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwODgtXHRhZGFwdGVyLVx1MDAzZW1paV9idXMgPSBidXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYzoxMDg5Olx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwOTAtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9Mzg1PWx0cV9ldG9wX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDAyLVx0XHQgcHJpdi1cdTAwM2VwZGV2LVx1MDAzZW5hbWUsIHByaXYtXHUwMDNlcGRldi1cdTAwM2VpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jOjQwMzpcdGlmIChtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWlpX2J1cykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDA0LVx0XHRlcnIgPSAtRU5YSU87XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYz0yODM9c3RhdGljIGludCBvcmlvbl9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODEtXHQvKiBGb3IgdGhlIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBEVC9BQ1BJIGZhbGwtYmFja1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODI6XHQgKiB0byBtZGlvYnVzX3JlZ2lzdGVyIHZpYSBvZl9tZGlvYnVzX3JlZ2lzdGVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODMtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg0LVx0aWYgKGlzX2FjcGlfbm9kZShwZGV2LVx1MDAzZWRldi5md25vZGUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODU6XHRcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4Ni1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg3Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4OC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYz0xMzg3PXN0YXRpYyBpbnQgcHhhMTY4X2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDQtXHRwZXAtXHUwMDNlc21pX2J1cy1cdTAwM2VwaHlfbWFzayA9IDB4ZmZmZmZmZmY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYzoxNTA1Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihwZXAtXHUwMDNlc21pX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTk5OD1zdGF0aWMgaW50IG10a19tZGlvX2luaXQoc3RydWN0IG10a19ldGggKmV0aClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzctXHRkZXZfZGJnKGV0aC1cdTAwM2VkZXYsIFwmIzM0O01EQyBpcyBydW5uaW5nIG9uICVkIEh6XFxuXCYjMzQ7LCBNRENfTUFYX0ZSRVEgLyBldGgtXHUwMDNlbWRjX2RpdmlkZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzoxMDM4Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihldGgtXHUwMDNlbWlpX2J1cywgbWlpX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM9MTQyMj1zdGF0aWMgaW50IG10a19zdGFyX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxNDQ4Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cdTAwM2VtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jPTI4Nz1pbnQgbWx4YmZfZ2lnZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBtbHhiZl9naWdlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYzozMzM6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM9MjUzPWludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmMtMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM6MjczOlx0ZXJyID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGZiZC1cdTAwM2VkZXYsIGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYy0yNzQtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYz0xMDM2PXN0YXRpYyBpbnQga3M4ODUxX3JlZ2lzdGVyX21kaW9idXMoc3RydWN0IGtzODg1MV9uZXQgKmtzLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYzoxMDUzOlx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfY29tbW9uLmMtMTA1NC1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jOjEwNTU6XHRcdGdvdG8gZXJyX21kaW9idXNfcmVnaXN0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYzoxMDYxOmVycl9tZGlvYnVzX3JlZ2lzdGVyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDYyLVx0bWRpb2J1c19mcmVlKG1paV9idXMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0xMzc5PXN0YXRpYyBpbnQgbGFuNzQzeF9od19yZXNldF9waHkoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTM4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxMzgzOlx0LyogT25seSBjYWxsZWQgd2l0aCBpbiBwcm9iZSwgYW5kIGJlZm9yZSBtZGlvYnVzX3JlZ2lzdGVyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTM4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzYyOD1zdGF0aWMgaW50IGxhbjc0M3hfbWRpb2J1c19pbml0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM2NzEtXHQvKiByZWdpc3RlciBtZGlvYnVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzY3MjpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNjczLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jPTEyMTI9c3RhdGljIGludCBuaXhnZV9tZGlvX3NldHVwKHN0cnVjdCBuaXhnZV9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTIzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6MTIzMTpcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy0xMjMyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jPTc5MD1zdGF0aWMgaW50IGxwY19taWlfaW5pdChzdHJ1Y3QgbmV0ZGF0YV9sb2NhbCAqcGxkYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYy04MjAtXHRub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocGxkYXQtXHUwMDNlcGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jOjgyMTpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIocGxkYXQtXHUwMDNlbWlpX2J1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jLTgyMi1cdG9mX25vZGVfcHV0KG5vZGUpO1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTI3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IE1ESU8gQnVzIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBnZXQgc3l6a2FsbGVyIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIHByb2JlIG9mIHRoaXMgUEhZIGRyaXZlciBJJiMzOTttIGludGVyZXN0ZWQgaW4uIFRoZSBsYW5kc2NhcGUgb2YgTURJTyBidXMgZHJpdmVycyBpcyBwcmV0dHkgZXh0ZW5zaXZlLCBidXQgdGhlIGNvcmUgaXNzdWUgaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIGV2ZW4gKmNyZWF0ZSogYW4gTURJTyBidXMgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciB0cmljayB0aGUga2VybmVsIGludG8gZG9pbmcgc28uIFN5emthbGxlciwgaW4gbXkgZXhwZXJpZW5jZSwgbGVhbnMgaGVhdmlseSBvbiB2aXJ0dWFsIGRldmljZXMgbGlrZSBgdHVuYCwgYHRhcGAsIHRoZSBgbmV0ZGV2c2ltYCBmYW1pbHksIGFuZCBvdGhlcnMuIEkgYWxyZWFkeSBjaGVja2VkOiBgbmV0ZGV2c2ltYCBkb2VzbiYjMzk7dCByZWdpc3RlciBhbiBNRElPIGJ1cy4gU28sIGFyZSAqYW55KiBvZiB0aGUgdmlydHVhbCBkcml2ZXJzIGRvaW5nIHRoaXM/CgpMZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gQXJlIHRoZXJlIGFueSAqdmlydHVhbCogTURJTyBidXMgZHJpdmVycyB0aGVtc2VsdmVzPyBBaGEsIGBkcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmNgIHJlZ2lzdGVycyBhIGZpeGVkIE1ESU8gYnVzLCBhbmQgdGhlbiB0aGVyZSYjMzk7cyBgZHJpdmVycy9uZXQvcGh5L21kaW8tbW9jay5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9tZGlvLWdwaW8uY2AuIE9rYXksIHBvdGVudGlhbCBzdGFydGluZyBwb2ludHMuCgpCdXQgdGhlbiBJIHN0YXJ0IHRvIHdvbmRlciwgY2FuIGEgdXNlci1zcGFjZSBwcm9jZXNzIGV2ZW4gKmluc3RhbnRpYXRlKiBhIFBIWSBkcml2ZXIgZGlyZWN0bHk/IE5vLCB0aGF0JiMzOTtzIG5vdCBob3cgaXQgd29ya3MuIFBIWSBkcml2ZXJzIGFyZSBtYXRjaGVkIGJhc2VkIG9uIHRoZSBQSFkgSUQsIHJlYWQgZnJvbSB0aGUgUEhZIGhhcmR3YXJlIHJlZ2lzdGVycywgYW5kIHNpbmNlIHRoZXJlJiMzOTtzIG5vIHJlYWwgaGFyZHdhcmUgaGVyZSwgdGhlIE1ESU8gYnVzIGlzIGdvaW5nIHRvIHJlYWQgZ2FyYmFnZSAocHJvYmFibHkgMHhmZmZmIG9yIDB4MDAwMCksIHdoaWNoIHdvbiYjMzk7dCBtYXRjaCB0aGUgTWVkaWFUZWsgUEhZIElEICgweDAzYTI5NDkxKSBJJiMzOTttIHRhcmdldGluZy4KCldhaXTigKYgd2hhdCBhYm91dCB0aGUgZGV2aWNlIHRyZWU/IENhbiB0aGUgUEhZIElEIGJlIHNwZWNpZmllZCB0aGVyZT8gRGFtbiwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHRvdWNoIHRoZSBkZXZpY2UgdHJlZSBhdCBydW50aW1lLiBTbywgSSYjMzk7bSBzdHVjay4gVGhlIFBIWSBkcml2ZXIgd2lsbCBuZXZlciBiZSBwcm9iZWQuCgpPa2F5LCBtYXliZSBJJiMzOTttIGFwcHJvYWNoaW5nIHRoaXMgZnJvbSB0aGUgd3JvbmcgYW5nbGUuIENhbiB1c2Vyc3BhY2UsIHNvbWVob3csIGNyZWF0ZSBhIFBIWSBkZXZpY2UgdmlhIHN5c2ZzPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGBtZGlvX2J1c2AuIElmIEkgY2FuJiMzOTt0IGZpbmQgYSBmaWxlLWJhY2tlZCBkZXZpY2UsIEkgd29uJiMzOTt0IGJlIGFibGUgdG8gaW5zdGFudGlhdGUgb25lLiBTbyBJIGNoZWNrLCBjYW4gSSBqdXN0IGRvIGFuIGBlY2hvICYjMzQ7cGh5X2lkJiMzNDsgJmd0OyAvc3lzL2J1cy9tZGlvX2J1cy9kZXZpY2VzLy4uLmA/IE5vcGUsIHRoZSBNRElPIGJ1cyBkb2VzbiYjMzk7dCBoYXZlIGEgYG5ld19kZXZpY2VgIGF0dHJpYnV0ZSBsaWtlIEkyQyBvciBTUEkuIEkgbmVlZCB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNsZXZlciB0cmlja2VyeSBJIGNhbiB1c2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV3X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MjEKCQkJCQkJCW91dHB1dDogMTEwCgkJCQkJCQl0aG91Z2h0czogNjUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IENvZGUgVW5yZWFjaGFibGUgaW4gU3RhbmRhcmQgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXJlJiMzOTtzIGFic29sdXRlbHkgbm8gcGF0aCB0byB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVS4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIFBIWSBkZXZpY2Ug4oCTIHRoZSBNZWRpYVRlay9FY29OZXQgRU43NTI4IOKAkyBhbmQgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGluc3RhbnRpYXRlIHRoYXQgZnJvbSB1c2Vyc3BhY2UuIFRoZSBjcml0aWNhbCBmdW5jdGlvbiwgYGVuNzUyOF9waHlfY29uZmlnX2luaXRgLCBhbG9uZyB3aXRoIHRoZSBjb3JlIE1lZGlhVGVrIFBIWSBkcml2ZXIgY29kZSwgaXMgaW50cmluc2ljYWxseSB0aWVkIHRvIHRoZSBoYXJkd2FyZSBvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucy4gV2l0aG91dCB0aG9zZSBlbGVtZW50cywgd2UmIzM5O3JlIGRlYWQgaW4gdGhlIHdhdGVyLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGlzIGJ5IHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgZW43NTI4X3BoeV9jb25maWdfaW5pdGAsIGFuZCBpdCYjMzk7cyBjbGVhciB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGR1cmluZyB0aGUgUEhZIGRldmljZSYjMzk7cyBwcm9iZSBhbmQgaW5pdGlhbGl6YXRpb24uIFRoaXMgUEhZIGRldmljZSBvbmx5IGdldHMgY3JlYXRlZCBpZiB0aGUgTURJTyBidXMgc3VjY2Vzc2Z1bGx5IGlkZW50aWZpZXMgdGhlIGhhcmR3YXJlIGJ5IElELCBvciBpZiB0aGUgc3lzdGVtIHVzZXMgYW4gZXhwbGljaXQgZGV2aWNlIHRyZWUgZW50cnkuIFNpbmNlIHN5emthbGxlciBhbmQgb3RoZXIgZnV6emluZyB0b29scyBydW4gaW4gc3RhbmRhcmQgUUVNVSAoeDg2XzY0IG9yIGFybTY0IHZpcnQpICp3aXRob3V0KiB0aGlzIGhhcmR3YXJlIG9yIHRoZSBjb3JyZXNwb25kaW5nIGRldmljZSB0cmVlLCB0aGUgUEhZIGRldmljZSAqd2lsbCBuZXZlciBiZSBjcmVhdGVkKi4gQ29uc2VxdWVudGx5LCB0aGUgZHJpdmVyIHdpbGwgbm90IGJlIHByb2JlZCwgYW5kIGBlbjc1MjhfcGh5X2NvbmZpZ19pbml0YCB3aWxsIG5ldmVyIGV4ZWN1dGUuCgpUaGUgcHJvbXB0IGV4cGxpY2l0bHkgdGVsbHMgbWUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIGltcG9zc2libGUgdG8gaGl0IGluIHRoZXNlIGVudmlyb25tZW50cywgZXZlbiBpZiBoYXJkd2FyZSBpcyBlbXVsYXRlZC4gVGhpcyBwYXRjaCBmaXRzIHRoZSBjcml0ZXJpYSBwZXJmZWN0bHkuIEl0JiMzOTtzIGRlc2lnbmVkIGZvciBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgUEhZIChNZWRpYVRlay9FY29OZXQgRU43NTI4KSwgYW5kIGNhbiYjMzk7dCBiZSByZWFjaGVkIGluIHRoZSBzdGFuZGFyZCwgZ2VuZXJpYyBRRU1VIGVudmlyb25tZW50IHVzZWQgYnkgZnV6emluZy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHJlLWNoZWNrIG9mIHRoZSBwYXRjaCBpdHNlbGYuCgpgYGBjCiYjNDM7c3RhdGljIGludCBlbjc1MjhfcGh5X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwkvKiBUaGUgTEVEIGNvbnRyb2xsZXIgb2YgdGhlIEVONzUyOCBwb3dlcnMgdXAgd2l0aCBpdHMgZXh0ZXJuYWwKJiM0MzsJICogY29udHJvbCBkaXNhYmxlZCwgbGVhdmluZyB0aGUgTEVEIHBpbnMgZGFyayByZWdhcmRsZXNzIG9mIHdoYXQgaXMKJiM0MzsJICogcHJvZ3JhbW1lZCBpbnRvIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMuIEhhbmQgdGhlIHBpbnMgb3ZlciB0bwomIzQzOwkgKiB0aGUgTEVEIGNvbnRyb2wgcmVnaXN0ZXJzIHRoZSBzYW1lIHdheSB0aGUgYWlyX2VuODgxMWggZHJpdmVyCiYjNDM7CSAqIGRvZXM7IHRoZSBtb2RlIGZpZWxkIG9mIHRoaXMgcmVnaXN0ZXIgaXMgYWxyZWFkeSBzZXQgb3V0IG9mIHJlc2V0LgomIzQzOwkgKi8KJiM0MzsJcmV0dXJuIHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTVRLX1BIWV9MRURfQkNSLAomIzQzOwkJCQlNVEtfUEhZX0xFRF9CQ1JfQ0xLX0VOIHwKJiM0MzsJCQkJTVRLX1BIWV9MRURfQkNSX0VYVF9DVFJMKTsKJiM0Mzt9CmBgYAoKWWVhaCwgaXQmIzM5O3MganVzdCBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGVyZSYjMzk7cyBubyB3YXkgdGhpcyBpcyByZWFjaGFibGUgd2l0aGluIGEgZ2VuZXJpYyBRRU1VIGVudmlyb25tZW50LgoKVGhlcmVmb3JlLCB0aGUgZmluYWwgZGVjaXNpb24gaXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgdXBkYXRlZCBjb2RlIHBlcnRhaW5zIHRvIGEgcGFydGljdWxhciBwaWVjZSBvZiBoYXJkd2FyZSB3aGljaCBpc24mIzM5O3QgcHJlc2VudCBpbiBnZW5lcmljIHZpcnR1YWxpemF0aW9uIHNldHVwcywgYW5kIHRoZSBuZXcgY29kZSBwYXRocyBjYW5ub3QgYmUgY292ZXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgRXRoZXJuZXQgUEhZIChFY29OZXQgRU43NTI4KS4gUEhZIGRyaXZlcnMgYXJlIHByb2JlZCBiYXNlZCBvbiBoYXJkd2FyZSBJRHMgcmVhZCBmcm9tIHRoZSBNRElPIGJ1cyBvciB2aWEgZGV2aWNlIHRyZWUgbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBFdGhlcm5ldCBQSFkgKEVjb05ldCBFTjc1MjgpLiBQSFkgZHJpdmVycyBhcmUgcHJvYmVkIGJhc2VkIG9uIGhhcmR3YXJlIElEcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzIG9yIHZpYSBkZXZpY2UgdHJlZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjE1LjM0MDYwOTUyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDk2NTQxNjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgRXRoZXJuZXQgUEhZIChFY29OZXQgRU43NTI4KS4gUEhZIGRyaXZlcnMgYXJlIHByb2JlZCBiYXNlZCBvbiBoYXJkd2FyZSBJRHMgcmVhZCBmcm9tIHRoZSBNRElPIGJ1cyBvciB2aWEgZGV2aWNlIHRyZWUgbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjE1LjM0MDYxNjEzN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3NDM4MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzczZWQ4MTBiMTYxY2JmMzNlMTAzMDljYzJjYTM1YzU3YWNlYjBiMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDExOjQwOjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWdcXG5pbmRleCBiYjdkYzg3NjI3MWU4Li5iNmQ0MWJiYmJjMjdmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWdcXG5AQCAtMjMsOSArMjMsOSBAQCBjb25maWcgTUVESUFURUtfR0VfUEhZXFxuIFxcbiBjb25maWcgTUVESUFURUtfR0VfU09DX1BIWVxcbiBcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgU29DIEV0aGVybmV0IFBIWXNcXFwiXFxuLVxcdGRlcGVuZHMgb24gQVJNNjQgfHwgQ09NUElMRV9URVNUXFxuK1xcdGRlcGVuZHMgb24gQVJNNjQgfHwgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxcbiBcXHRkZXBlbmRzIG9uIEFSQ0hfQUlST0hBIHx8IChBUkNIX01FRElBVEVLIFxcdTAwMjZcXHUwMDI2IE5WTUVNX01US19FRlVTRSkgfHwgXFxcXFxcbi1cXHRcXHQgICBDT01QSUxFX1RFU1RcXG4rXFx0XFx0ICAgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxcbiBcXHRzZWxlY3QgTVRLX05FVF9QSFlMSUJcXG4gXFx0c2VsZWN0IFBIWV9QQUNLQUdFXFxuIFxcdGhlbHBcXG5AQCAtMzYsNSArMzYsOSBAQCBjb25maWcgTUVESUFURUtfR0VfU09DX1BIWVxcbiBcXHQgIHByZXNlbnQgaW4gdGhlIFNvQ3MgZWZ1c2UgYW5kIHdpbGwgZHluYW1pY2FsbHkgY2FsaWJyYXRlIFZDTVxcbiBcXHQgIChjb21tb24tbW9kZSB2b2x0YWdlKSBkdXJpbmcgc3RhcnR1cC5cXG4gXFxuK1xcdCAgQWxzbyBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBHaWdhYml0IEV0aGVybmV0IFBIWXMgb2ZcXG4rXFx0ICB0aGUgQWlyb2hhIEFONzU4MSBhbmQgQU43NTgzIFNvQ3MgYW5kIG9mIHRoZSBFY29OZXQgRU43NTI4IFNvQyxcXG4rXFx0ICB3aGljaCBuZWVkIG5vIGVmdXNlIGNhbGlicmF0aW9uIGRhdGEuXFxuK1xcbiBjb25maWcgTVRLX05FVF9QSFlMSUJcXG4gXFx0dHJpc3RhdGVcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYyBiL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmNcXG5pbmRleCA5YTU0OTQ5NjQ0ZDVhLi4wMDQxMzAwZDRmMTAxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jXFxuQEAgLTE2LDYgKzE2LDcgQEBcXG4gXFxuICNkZWZpbmUgTVRLX0dQSFlfSURfTVQ3OTgxXFx0XFx0XFx0MHgwM2EyOTQ2MVxcbiAjZGVmaW5lIE1US19HUEhZX0lEX01UNzk4OFxcdFxcdFxcdDB4MDNhMjk0ODFcXG4rI2RlZmluZSBNVEtfR1BIWV9JRF9FTjc1MjhcXHRcXHRcXHQweDAzYTI5NDkxXFxuICNkZWZpbmUgTVRLX0dQSFlfSURfQU43NTgxXFx0XFx0XFx0MHgwM2EyOTRjMVxcbiAjZGVmaW5lIE1US19HUEhZX0lEX0FONzU4M1xcdFxcdFxcdDB4YzBmZjA0MjBcXG4gXFxuQEAgLTMyMCw2ICszMjEsMTQgQEBcXG4gLyogUmVnaXN0ZXJzIG9uIE1ESU9fTU1EX1ZFTkQyICovXFxuICNkZWZpbmUgTVRLX1BIWV9MRUQxX0RFRkFVTFRfUE9MQVJJVElFU1xcdFxcdEJJVCgxKVxcbiBcXG4rLyogTEVEIGJhc2ljIGNvbnRyb2wgcmVnaXN0ZXIsIHBhcnQgb2YgdGhlIHNhbWUgTEVEIGJsb2NrIGFzIHRoZSBMRUQwL0xFRDFcXG4rICogY29udHJvbCByZWdpc3RlcnMgYWJvdmUuIFRoZSBhaXJfZW44ODExaCBkcml2ZXIgZGVzY3JpYmVzIHRoZSBzYW1lXFxuKyAqIHJlZ2lzdGVyIGFzIEFJUl9QSFlfTEVEX0JDUi5cXG4rICovXFxuKyNkZWZpbmUgTVRLX1BIWV9MRURfQkNSXFx0XFx0XFx0XFx0MHgyMVxcbisjZGVmaW5lICAgTVRLX1BIWV9MRURfQkNSX0NMS19FTlxcdFxcdEJJVCgzKVxcbisjZGVmaW5lICAgTVRLX1BIWV9MRURfQkNSX0VYVF9DVFJMXFx0XFx0QklUKDE1KVxcbitcXG4gI2RlZmluZSBNVEtfUEhZX1JHX0JHX1JBU0VMXFx0XFx0XFx0MHgxMTVcXG4gI2RlZmluZSAgIE1US19QSFlfUkdfQkdfUkFTRUxfTUFTS1xcdFxcdEdFTk1BU0soMiwgMClcXG4gXFxuQEAgLTE0NzAsNiArMTQ3OSwxOSBAQCBzdGF0aWMgaW50IGFuNzU4M19waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0cmV0dXJuIHBoeV9jbGVhcl9iaXRzKHBoeWRldiwgTUlJX0JNQ1IsIEJNQ1JfUERPV04pO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGVuNzUyOF9waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHQvKiBUaGUgTEVEIGNvbnRyb2xsZXIgb2YgdGhlIEVONzUyOCBwb3dlcnMgdXAgd2l0aCBpdHMgZXh0ZXJuYWxcXG4rXFx0ICogY29udHJvbCBkaXNhYmxlZCwgbGVhdmluZyB0aGUgTEVEIHBpbnMgZGFyayByZWdhcmRsZXNzIG9mIHdoYXQgaXNcXG4rXFx0ICogcHJvZ3JhbW1lZCBpbnRvIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMuIEhhbmQgdGhlIHBpbnMgb3ZlciB0b1xcbitcXHQgKiB0aGUgTEVEIGNvbnRyb2wgcmVnaXN0ZXJzIHRoZSBzYW1lIHdheSB0aGUgYWlyX2VuODgxMWggZHJpdmVyXFxuK1xcdCAqIGRvZXM7IHRoZSBtb2RlIGZpZWxkIG9mIHRoaXMgcmVnaXN0ZXIgaXMgYWxyZWFkeSBzZXQgb3V0IG9mIHJlc2V0LlxcbitcXHQgKi9cXG4rXFx0cmV0dXJuIHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTVRLX1BIWV9MRURfQkNSLFxcbitcXHRcXHRcXHRcXHRNVEtfUEhZX0xFRF9CQ1JfQ0xLX0VOIHxcXG4rXFx0XFx0XFx0XFx0TVRLX1BIWV9MRURfQkNSX0VYVF9DVFJMKTtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG10a19zb2NwaHlfZHJpdmVyW10gPSB7XFxuIFxcdHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSksXFxuQEAgLTE1MDUsNiArMTUyNywxOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX3NvY3BoeV9kcml2ZXJbXSA9IHtcXG4gXFx0XFx0LmxlZF9od19jb250cm9sX3NldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbiBcXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuIFxcdH0sXFxuK1xcdHtcXG4rXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0VONzUyOCksXFxuK1xcdFxcdC5uYW1lXFx0XFx0PSBcXFwiRWNvTmV0IEVONzUyOCBQSFlcXFwiLFxcbitcXHRcXHQuY29uZmlnX2luaXRcXHQ9IGVuNzUyOF9waHlfY29uZmlnX2luaXQsXFxuK1xcdFxcdC5wcm9iZVxcdFxcdD0gYW43NTgxX3BoeV9wcm9iZSxcXG4rXFx0XFx0LmxlZF9ibGlua19zZXRcXHQ9IG10Nzk4eF9waHlfbGVkX2JsaW5rX3NldCxcXG4rXFx0XFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IG10Nzk4eF9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbitcXHRcXHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG10Nzk4eF9waHlfbGVkX2h3X2lzX3N1cHBvcnRlZCxcXG4rXFx0XFx0LmxlZF9od19jb250cm9sX3NldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbitcXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuK1xcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYW43NTgxX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbitcXHR9LFxcbiBcXHR7XFxuIFxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9BTjc1ODEpLFxcbiBcXHRcXHQubmFtZVxcdFxcdD0gXFxcIkFpcm9oYSBBTjc1ODEgUEhZXFxcIixcXG5AQCAtMTUzNyw2ICsxNTcxLDcgQEAgbW9kdWxlX3BoeV9kcml2ZXIobXRrX3NvY3BoeV9kcml2ZXIpO1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG10a19zb2NwaHlfdGJsW10gPSB7XFxuIFxcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSkgfSxcXG4gXFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3OTg4KSB9LFxcbitcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9FTjc1MjgpIH0sXFxuIFxcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSkgfSxcXG4gXFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgzKSB9LFxcbiBcXHR7IH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6MTUuNzc4NzMzNjAzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDgwNTg0MTA1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBFdGhlcm5ldCBQSFkgKEVjb05ldCBFTjc1MjgpLiBQSFkgZHJpdmVycyBhcmUgcHJvYmVkIGJhc2VkIG9uIGhhcmR3YXJlIElEcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzIG9yIHZpYSBkZXZpY2UgdHJlZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzczZWQ4MTBiMTYxY2JmMzNlMTAzMDljYzJjYTM1YzU3YWNlYjBiMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTE6NDA6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnXG5pbmRleCBiYjdkYzg3NjI3MWU4Li5iNmQ0MWJiYmJjMjdmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWdcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnXG5AQCAtMjMsOSArMjMsOSBAQCBjb25maWcgTUVESUFURUtfR0VfUEhZXG4gXG4gY29uZmlnIE1FRElBVEVLX0dFX1NPQ19QSFlcbiBcdHRyaXN0YXRlIFwiTWVkaWFUZWsgU29DIEV0aGVybmV0IFBIWXNcIlxuLVx0ZGVwZW5kcyBvbiBBUk02NCB8fCBDT01QSUxFX1RFU1RcbitcdGRlcGVuZHMgb24gQVJNNjQgfHwgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxuIFx0ZGVwZW5kcyBvbiBBUkNIX0FJUk9IQSB8fCAoQVJDSF9NRURJQVRFSyBcdTAwMjZcdTAwMjYgTlZNRU1fTVRLX0VGVVNFKSB8fCBcXFxuLVx0XHQgICBDT01QSUxFX1RFU1RcbitcdFx0ICAgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxuIFx0c2VsZWN0IE1US19ORVRfUEhZTElCXG4gXHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiBcdGhlbHBcbkBAIC0zNiw1ICszNiw5IEBAIGNvbmZpZyBNRURJQVRFS19HRV9TT0NfUEhZXG4gXHQgIHByZXNlbnQgaW4gdGhlIFNvQ3MgZWZ1c2UgYW5kIHdpbGwgZHluYW1pY2FsbHkgY2FsaWJyYXRlIFZDTVxuIFx0ICAoY29tbW9uLW1vZGUgdm9sdGFnZSkgZHVyaW5nIHN0YXJ0dXAuXG4gXG4rXHQgIEFsc28gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gR2lnYWJpdCBFdGhlcm5ldCBQSFlzIG9mXG4rXHQgIHRoZSBBaXJvaGEgQU43NTgxIGFuZCBBTjc1ODMgU29DcyBhbmQgb2YgdGhlIEVjb05ldCBFTjc1MjggU29DLFxuK1x0ICB3aGljaCBuZWVkIG5vIGVmdXNlIGNhbGlicmF0aW9uIGRhdGEuXG4rXG4gY29uZmlnIE1US19ORVRfUEhZTElCXG4gXHR0cmlzdGF0ZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jXG5pbmRleCA5YTU0OTQ5NjQ0ZDVhLi4wMDQxMzAwZDRmMTAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuY1xuQEAgLTE2LDYgKzE2LDcgQEBcbiBcbiAjZGVmaW5lIE1US19HUEhZX0lEX01UNzk4MVx0XHRcdDB4MDNhMjk0NjFcbiAjZGVmaW5lIE1US19HUEhZX0lEX01UNzk4OFx0XHRcdDB4MDNhMjk0ODFcbisjZGVmaW5lIE1US19HUEhZX0lEX0VONzUyOFx0XHRcdDB4MDNhMjk0OTFcbiAjZGVmaW5lIE1US19HUEhZX0lEX0FONzU4MVx0XHRcdDB4MDNhMjk0YzFcbiAjZGVmaW5lIE1US19HUEhZX0lEX0FONzU4M1x0XHRcdDB4YzBmZjA0MjBcbiBcbkBAIC0zMjAsNiArMzIxLDE0IEBAXG4gLyogUmVnaXN0ZXJzIG9uIE1ESU9fTU1EX1ZFTkQyICovXG4gI2RlZmluZSBNVEtfUEhZX0xFRDFfREVGQVVMVF9QT0xBUklUSUVTXHRcdEJJVCgxKVxuIFxuKy8qIExFRCBiYXNpYyBjb250cm9sIHJlZ2lzdGVyLCBwYXJ0IG9mIHRoZSBzYW1lIExFRCBibG9jayBhcyB0aGUgTEVEMC9MRUQxXG4rICogY29udHJvbCByZWdpc3RlcnMgYWJvdmUuIFRoZSBhaXJfZW44ODExaCBkcml2ZXIgZGVzY3JpYmVzIHRoZSBzYW1lXG4rICogcmVnaXN0ZXIgYXMgQUlSX1BIWV9MRURfQkNSLlxuKyAqL1xuKyNkZWZpbmUgTVRLX1BIWV9MRURfQkNSXHRcdFx0XHQweDIxXG4rI2RlZmluZSAgIE1US19QSFlfTEVEX0JDUl9DTEtfRU5cdFx0QklUKDMpXG4rI2RlZmluZSAgIE1US19QSFlfTEVEX0JDUl9FWFRfQ1RSTFx0XHRCSVQoMTUpXG4rXG4gI2RlZmluZSBNVEtfUEhZX1JHX0JHX1JBU0VMXHRcdFx0MHgxMTVcbiAjZGVmaW5lICAgTVRLX1BIWV9SR19CR19SQVNFTF9NQVNLXHRcdEdFTk1BU0soMiwgMClcbiBcbkBAIC0xNDcwLDYgKzE0NzksMTkgQEAgc3RhdGljIGludCBhbjc1ODNfcGh5X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRyZXR1cm4gcGh5X2NsZWFyX2JpdHMocGh5ZGV2LCBNSUlfQk1DUiwgQk1DUl9QRE9XTik7XG4gfVxuIFxuK3N0YXRpYyBpbnQgZW43NTI4X3BoeV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdC8qIFRoZSBMRUQgY29udHJvbGxlciBvZiB0aGUgRU43NTI4IHBvd2VycyB1cCB3aXRoIGl0cyBleHRlcm5hbFxuK1x0ICogY29udHJvbCBkaXNhYmxlZCwgbGVhdmluZyB0aGUgTEVEIHBpbnMgZGFyayByZWdhcmRsZXNzIG9mIHdoYXQgaXNcbitcdCAqIHByb2dyYW1tZWQgaW50byB0aGUgTEVEIGNvbnRyb2wgcmVnaXN0ZXJzLiBIYW5kIHRoZSBwaW5zIG92ZXIgdG9cbitcdCAqIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMgdGhlIHNhbWUgd2F5IHRoZSBhaXJfZW44ODExaCBkcml2ZXJcbitcdCAqIGRvZXM7IHRoZSBtb2RlIGZpZWxkIG9mIHRoaXMgcmVnaXN0ZXIgaXMgYWxyZWFkeSBzZXQgb3V0IG9mIHJlc2V0LlxuK1x0ICovXG4rXHRyZXR1cm4gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNVEtfUEhZX0xFRF9CQ1IsXG4rXHRcdFx0XHRNVEtfUEhZX0xFRF9CQ1JfQ0xLX0VOIHxcbitcdFx0XHRcdE1US19QSFlfTEVEX0JDUl9FWFRfQ1RSTCk7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtdGtfc29jcGh5X2RyaXZlcltdID0ge1xuIFx0e1xuIFx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3OTgxKSxcbkBAIC0xNTA1LDYgKzE1MjcsMTggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG10a19zb2NwaHlfZHJpdmVyW10gPSB7XG4gXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtdDc5OHhfcGh5X2xlZF9od19jb250cm9sX3NldCxcbiBcdFx0LmxlZF9od19jb250cm9sX2dldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuIFx0fSxcbitcdHtcbitcdFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0VONzUyOCksXG4rXHRcdC5uYW1lXHRcdD0gXCJFY29OZXQgRU43NTI4IFBIWVwiLFxuK1x0XHQuY29uZmlnX2luaXRcdD0gZW43NTI4X3BoeV9jb25maWdfaW5pdCxcbitcdFx0LnByb2JlXHRcdD0gYW43NTgxX3BoeV9wcm9iZSxcbitcdFx0LmxlZF9ibGlua19zZXRcdD0gbXQ3OTh4X3BoeV9sZWRfYmxpbmtfc2V0LFxuK1x0XHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gbXQ3OTh4X3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4rXHRcdC5sZWRfaHdfaXNfc3VwcG9ydGVkID0gbXQ3OTh4X3BoeV9sZWRfaHdfaXNfc3VwcG9ydGVkLFxuK1x0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9zZXQsXG4rXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtdDc5OHhfcGh5X2xlZF9od19jb250cm9sX2dldCxcbitcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhbjc1ODFfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG4rXHR9LFxuIFx0e1xuIFx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgxKSxcbiBcdFx0Lm5hbWVcdFx0PSBcIkFpcm9oYSBBTjc1ODEgUEhZXCIsXG5AQCAtMTUzNyw2ICsxNTcxLDcgQEAgbW9kdWxlX3BoeV9kcml2ZXIobXRrX3NvY3BoeV9kcml2ZXIpO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXRrX3NvY3BoeV90YmxbXSA9IHtcbiBcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSkgfSxcbiBcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4OCkgfSxcbitcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0VONzUyOCkgfSxcbiBcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSkgfSxcbiBcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MykgfSxcbiBcdHsgfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6MTUuNzc4NzM0ODUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTkyMTk4NDQxMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIEVjb05ldCBFTjc1MjggUEhZIERyaXZlciBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIEVjb05ldCBFTjc1MjggUEhZIHRvIHRoZSBNZWRpYVRlayBFdGhlcm5ldCBQSFkgZHJpdmVyLiBJdCdzIG1vZGlmeWluZyBLY29uZmlnIGFuZCBhIEMgZmlsZSwgZXNzZW50aWFsbHkgaW50cm9kdWNpbmcgYSBuZXcgUEhZIElEIGFuZCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBzeXprYWxsZXIgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIG5ldyBjb2RlIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/XG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgUEhZIGRyaXZlcnMgYXJlIHVzdWFsbHkgcHJvYmVkIHZpYSB0aGUgTURJTyBidXMuIENhbiB3ZSBlbXVsYXRlIHRoYXQgaW4gUUVNVT8gV2UgKm1pZ2h0KiBiZSBhYmxlIHRvIGdldCBpdCB0byB3b3JrIGlmIFFFTVUgZW11bGF0ZXMgdGhlIE1ESU8gYnVzIG9yIGlmIHdlIGNvdWxkIHNvbWVob3cgaW5zdGFudGlhdGUgYSBkdW1teSBvbmUgYW5kIHJlZ2lzdGVyIHRoZSBQSFkuIEJ1dCBzeXprYWxsZXIgdHlwaWNhbGx5IGRvZXNuJ3QgZGlyZWN0bHkgdGFyZ2V0IFBIWSBkcml2ZXJzIHVubGVzcyB0aGV5J3JlIHBhcnQgb2YgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIHdpdGggYW4gZXhwb3NlZCBNRElPIGJ1cy4gSSBkb24ndCBzZWUgYW55IGV4cGxpY2l0IHN1cHBvcnQgZm9yIE1ESU8vUEhZIGZ1enppbmcgdmlhIGBzeXpfZ2VuZXRsaW5rYCBvciBzb21ldGhpbmcgc2ltaWxhciBoZXJlLiBTeXprYWxsZXIgdGVuZHMgdG8gZm9jdXMgb24gbmV0d29yayBkZXZpY2VzIGxpa2UgYHR1bmAvYHRhcGAgb3IgYHZldGhgLCB3aGljaCBkb24ndCBoYXZlIFBIWXMuIFNvbWUgZHJpdmVycyBsaWtlIGBtYWNiYCBvciBgZTEwMDBgICptaWdodCogaGF2ZSBQSFlzIGF0dGFjaGVkLCBidXQgdGhhdCdzIG5vdCB0aGUgdXN1YWwgc3l6a2FsbGVyIGFwcHJvYWNoLlxuXG5TbywgdGhlIGtleSBoZXJlIGlzIHJlYWNoYWJpbGl0eS4gU3l6a2FsbGVyICpjYW4qIGhpdCBQSFkgZHJpdmVycyBpZiB0aGV5IGFyZSByZWdpc3RlcmVkIGFuZCBhY2Nlc3NpYmxlIHRocm91Z2ggbmV0bGluayBvciBpb2N0bHMuIEJ1dCAqaG93KiBkbyB3ZSBnZXQgaXQgcmVnaXN0ZXJlZD8gTXkgaHVuY2ggaXMgdGhpcyBNZWRpYVRlayBkcml2ZXIgaXMgZm9yIGJ1aWx0LWluIFBIWXMgd2l0aGluIE1lZGlhVGVrIFNvQ3MuIENhbiB3ZSBwcm9iZSB0aGlzIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gUEhZIGRyaXZlcnMgYXJlIHVzdWFsbHkgcmVnaXN0ZXJlZCBvbiB0aGUgTURJTyBidXMsIG1hdGNoaW5nIHRoZSBQSFkgSUQuIENvdWxkIHdlIHNwb29mIHRoZSBQSFkgSUQsIG1heWJlIGNyZWF0ZSBhIHZpcnR1YWwgTURJTyBidXMgb3IgdXNlIGEgdmlydHVhbCBkZXZpY2UgbGlrZSBgbWFjYmAgb3IgYGUxMDAwYCwgYnV0IHN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSBtZXNzIHdpdGggdGhhdCBzb3J0IG9mIHRoaW5nIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxsIGZvciBNRElPLlxuXG5XZSBrbm93IHRoZXJlJ3MgYW4gTURJTyBidXMsIGJ1dCB1c2Vyc3BhY2UgY2FuJ3QgKmNyZWF0ZSogTURJTyBkZXZpY2VzLiBUaGV5J3JlIGNyZWF0ZWQgYnkgdGhlIE1BQyBkcml2ZXIgcHJvYmluZyB0aGUgYnVzLiBDb3VsZCB3ZSBzb21laG93IHRyaWdnZXIgdGhlIFBIWSBkcml2ZXIgcHJvYmUgdmlhIHNvbWV0aGluZyBsaWtlIEkyQy9NRElPPyBOb3QgbGlrZWx5LiBBbmQgdGhpcyBpcyBqdXN0IGEgUEhZIGRyaXZlciwgaXQgc291bmRzIGxpa2UuIFdlIGNhbiByZWFkL3dyaXRlIFBIWSByZWdpc3RlcnMgdmlhIFNJT0NHTUlJUkVHL1NJT0NTTUlJUkVHLCBidXQgaXQgd29uJ3QgdHJpZ2dlciBwcm9iaW5nLlxuXG5UaGUgY29yZSBvZiB0aGUgcHJvYmxlbTogaG93IGRvIHdlIGdldCB0aGUgTURJTyBidXMgdG8gKnNlZSogdGhlIFBIWSBJRD8gSXMgdGhlcmUgc29mdHdhcmUgTURJTyBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCB0aGF0IHN5emthbGxlciBjb3VsZCB1c2U/IEknZCBjaGVjayB0aGUgc3l6a2FsbGVyIHNvdXJjZSwgYnV0IEkgY2FuJ3QuXG5cbkxldCdzIGNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcy4gSXQgbG9va3MgbGlrZSBgTUVESUFURUtfR0VfU09DX1BIWWAgY2FuIGJlIGJ1aWx0IHdpdGggYENPTVBJTEVfVEVTVGAuIEhvd2V2ZXIsIHRvICpydW4qIHRoZSBkcml2ZXIsIHdlJ3JlIGxpa2VseSBnb2luZyB0byBuZWVkIHNwZWNpZmljIGhhcmR3YXJlLiBgZW43NTI4X3BoeV9jb25maWdfaW5pdGAgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQuIEl0IGxvb2tzIGxpa2UgaXQgaXMgY2FsbGVkIGJ5IHRoZSBQSFkgbGlicmFyeSB3aGVuIHRoZSBQSFkgaXMgaW5pdGlhbGl6ZWQuIFdpdGhvdXQgYSBNZWRpYVRlayBvciBFY29OZXQgU29DLCB0aGVyZSBpcyBubyBNRElPIGJ1cyB0aGF0IGhhcyB0aGUgUEhZIElEICgweDAzYTI5NDkxKSBmb3IgaXQgdG8gYmUgcHJvYmVkLiBJdCB3b3VsZCBuZWVkIFFFTVUgdG8gZW11bGF0ZSBpdC5cblxuRG9lcyBRRU1VIGV2ZW4gZW11bGF0ZSBNZWRpYVRlayBvciBFY29OZXQgU29DIEV0aGVybmV0IFBIWXMgYnkgZGVmYXVsdCBvbiBgeDg2XzY0YCBvciBgYWFyY2g2NCB2aXJ0YCBtYWNoaW5lcz8gVW5saWtlbHkuIEkgaGF2ZSBhIGZlZWxpbmcgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIGBxZW11LXN5c3RlbS14ODZfNjRgIG9yIGBxZW11LXN5c3RlbS1hYXJjaDY0YCB3aXRoIGEgc3RhbmRhcmQgYHZpcnRgIG1hY2hpbmUuXG5cblNvLCB1bmxlc3MgdGhlcmUncyBzb21lIG9ic2N1cmUgUUVNVSBjb25maWd1cmF0aW9uIEknbSBtaXNzaW5nIChhbmQgSSBkb3VidCBpdCwgZ2l2ZW4gdGhlIHN0YW5kYXJkIGFwcHJvYWNoIG9mIHN5emthbGxlciksIG9yIHNvbWUgd2F5IHRvIGluamVjdCBQSFkgZGV2aWNlcyAobGlrZSBgZml4ZWRfcGh5LmNgIGJ1dCB0aG9zZSBoYXZlIGZpeGVkIElEcyksIHRoaXMgc3BlY2lmaWMgUEhZIGRyaXZlciBpcyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDozNC45OTg1ODE4NzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY5NTE0NzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kZXZpY2VfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDozNS4wNTU1NDM2NTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDI2MDgxMDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIGFzc3VtaW5nIEknbSB0aGUgZXhwZXJ0IGFuZCByZWZsZWN0aW5nIG9uIHRoZSB0ZXh0J3MgcHJvbXB0OlxuXG4qKlJlLWV2YWx1YXRpbmcgdGhlIFN0cmF0ZWd5KipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgYXBwcm9hY2ggaXMgb24gdGhlIHRhYmxlLCBidXQgSSdtIG5vdCBnb2luZyB0byBqdXN0IHRha2UgaXQgYXMgZ29zcGVsLiBNeSBpbnN0aW5jdCBhcyBhbiBleHBlcnQgaXMgdG8gYWx3YXlzIGNoYWxsZW5nZSBhc3N1bXB0aW9ucyBhbmQgZXhwbG9yZSBhbHRlcm5hdGl2ZXMuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lczogYXJlIHRoZXJlIG90aGVyIGF2ZW51ZXMsIG90aGVyIG1ldGhvZG9sb2dpZXMsIG90aGVyIHBlcnNwZWN0aXZlcywgdGhhdCB3ZSBoYXZlbid0IGNvbnNpZGVyZWQ/IFRoZSBjdXJyZW50IHBsYW4gbWlnaHQgYmUgcGVyZmVjdGx5IHNvdW5kLCBidXQgZXhwZXJpZW5jZSB0ZWxscyBtZSBhIHF1aWNrIGNoZWNrIGZvciBwb3RlbnRpYWwgYmxpbmQgc3BvdHMgaXMgYWx3YXlzIHdvcnRod2hpbGUuIExldCdzIHNlZSBpZiB3ZSBjYW4gaWRlbnRpZnkgYW55IGFsdGVybmF0ZSBwYXRocyB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIG91dGNvbWUsIG9yIGV2ZW4gZmluZCBhIG1vcmUgZWxlZ2FudCBhbmQgZWZmaWNpZW50IHNvbHV0aW9uLiBUaGlzIGlzbid0IGFib3V0IHNlY29uZC1ndWVzc2luZywgaXQncyBhYm91dCBvcHRpbWl6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODY5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6MzguNDgxNjI3MzI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTI3MzEwMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjM4Ljc2MDkwOTY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxNzQ3NDU1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlOlxuXG4qKkNvbnNpZGVyaW5nIE5ldHdvcmsgRHJpdmVyIEFyY2hpdGVjdHVyZXMgZm9yIGEgUEhZLWxlc3MgU2NlbmFyaW8qKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiAqbm90KiBoYXZpbmcgYSBQaHlzaWNhbCBMYXllciBUcmFuc2NlaXZlciAoUEhZKSBpbiB0aGlzIGNvbnRleHQuIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHBvdGVudGlhbCBleGlzdGluZyBhcmNoaXRlY3R1cmVzIHRoYXQgbWlnaHQgb2ZmZXIgYSB1c2VmdWwgc3RhcnRpbmcgcG9pbnQsIG9yIGF0IGxlYXN0IGluc3BpcmUgYSB2aWFibGUgZGVzaWduLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgZHJpdmVycyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIHNjZW5hcmlvcyAqd2l0aG91dCogYSBQSFksIG9yIHdoZXJlIHRoZSBQSFkgaXMgZnVuZGFtZW50YWxseSBhYnN0cmFjdGVkIGF3YXkgZnJvbSB0aGUgbmV0d29yayBzdGFjay5cblxuYGRyaXZlcnMvbmV0L2R1bW15LmNgIHNwcmluZ3MgdG8gbWluZCBpbW1lZGlhdGVseS4gSXQncyBlc3NlbnRpYWxseSBhIG5vLW9wIGRyaXZlciwgYSBuZXR3b3JrIGludGVyZmFjZSB0aGF0IGp1c3QgYWJzb3JicyBhbmQgc3BpdHMgb3V0IHBhY2tldHMgd2l0aG91dCBhbnkgaGFyZHdhcmUgaW50ZXJhY3Rpb24uIEl0J3MgYSBmdW5kYW1lbnRhbCBtb2RlbCBmb3IgYWJzdHJhY3Rpb24uIFRoZW4gdGhlcmUgaXMgYGRyaXZlcnMvbmV0L3R1bi5jYCwgdGhlIFRVTi9UQVAgZHJpdmVyLiBJdCdzIGFuIGludGVyZXN0aW5nIGNhc2UgYmVjYXVzZSBpdCBjcmVhdGVzIGEgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZSB0aGF0J3MgdGllZCBpbnRvIHRoZSBrZXJuZWwuIEl04oCZcyBhbHNvIGltcG9ydGFudCBiZWNhdXNlIGl0IGRlYWxzIHdpdGggbmV0d29yay1sYXllciBwYWNrZXRzLlxuXG5UaGUgYWJzZW5jZSBvZiBhIFBIWSBpcyB0aGUga2V5IHF1ZXN0aW9uLiBXZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyB0byByZXByZXNlbnQgYW5kIG1hbmFnZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3VsZCAqbm9ybWFsbHkqIGJlIGhhbmRsZWQgYnkgdGhlIFBIWS5cblxuU28sIEknbSB3b25kZXJpbmcgaWYgdGhlcmUncyBhIHZpcnR1YWwgTURJTyBidXMgaW1wbGVtZW50YXRpb24uIFRoaXMgaXMgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTUlJKSBtYW5hZ2VtZW50IGJ1cyB1c2VkIHRvIGNvbmZpZ3VyZSBhbmQgbW9uaXRvciBQSFlzLiBJZiB3ZSAqY291bGQqIHByZXNlbnQgYSB2aXJ0dWFsIE1ESU8gYnVzLCBldmVuIGlmIGl0J3MgcHVyZWx5IHNvZnR3YXJlLWRlZmluZWQsIGl0IHdvdWxkIHByb3ZpZGUgYSBzdGFuZGFyZGl6ZWQgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGlvbiwgb3IgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlc2UgbmV0d29yayBpbnRlcmZhY2VzLlxuXG5JdCdzIGEgd2F5IHRvIGxldmVyYWdlIHRoZSBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSB0aGF0IGV4cGVjdHMgYSBQSFkgYnV0IGFkYXB0IGl0IHRvIGEgbmV3IHNjZW5hcmlvLiBQZXJoYXBzIHdlIGNhbiBtb2RlbCBhbnkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB0aHJvdWdoIGEgc2ltaWxhciBpbnRlcmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwODYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDo0My4yNzgzODY4MDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNTg4ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTAxMiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02ODMtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LVxcdTAwM2VkZXYsIGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzIxPWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzkzOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM2MT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM5Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM5NzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzOTgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4ODctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg4ODpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4ODktXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmM9MjY3PXN0YXRpYyBpbnQgbXhsODYyeHhfc2V0dXBfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTItXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmM6MjkzOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjk0LVxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MTQ5PXN0YXRpYyBpbnQgbmV0Y19wb3J0X2NyZWF0ZV9lbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xNzktXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6MTgwOlxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTgxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz05NTc9c3RhdGljIGludCB2c2M5OTU5X21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwMTMtXFx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MTAxNDpcXHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDE1LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwMy1cXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjkwNDpcXHRyYyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDUtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0zNTc9c3RhdGljIGludCBhcjkzMzFfc3dfbWJ1c19pbml0KHN0cnVjdCBhcjkzMzFfc3dfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgxLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MzgyOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODMtXFx0b2Zfbm9kZV9wdXQobW5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk0Nz1xY2E4a19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg2LVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk4NzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW8pO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYz03ND1pbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYzoxMDA6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTExNz1zdGF0aWMgaW50IGE1cHN3X3Byb2JlX21kaW8oc3RydWN0IGE1cHN3ICphNXBzdywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE0NDpcXHRyZXR1cm4gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oPTMwNz12b2lkIHNqYTExMDVfZnJhbWVfbWVtb3J5X3BhcnRpdGlvbmluZyhzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMDktLyogRnJvbSBzamExMTA1X21kaW8uYyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaDozMTA6aW50IHNqYTExMDVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMTEtdm9pZCBzamExMTA1X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzAyNj1zdGF0aWMgaW50IHNqYTExMDVfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2Ny1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMDY4OlxcdHJjID0gc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMDY5LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI1OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3R4X3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODctXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mjg4OlxcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODktXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zMTI9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90MV9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQzLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM0NDpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQ1LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzY4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX3Bjc19yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk1LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM5NjpcXHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOTctXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz00Mzk9c3RhdGljIHZvaWQgc2phMTEwNV9tZGlvYnVzX3Bjc191bnJlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NTgtXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6NDU5OmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTk1PXl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjEyLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2MTM6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjE0LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NzI2PXl0OTIxeF9tYnVzX2V4dF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQzLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NDQ6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQ1LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz00NTk9c3RhdGljIGludCBheF9taWlfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ3OTpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF4LVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xMzIxPXN0YXRpYyBpbnQgb3dsX2VtYWNfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM0NjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVxcdTAwM2VtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz01MDk9c3RhdGljIGludCBhZGluMTExMF9yZWdpc3Rlcl9tZGlvYnVzKHN0cnVjdCBhZGluMTExMF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjUzMDpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy01MzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTYxNz1zdGF0aWMgaW50IGFkaW4xMTQwX21kaW9fcmVnaXN0ZXIoc3RydWN0IGFkaW4xMTQwX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6NjM3OlxcdHJldHVybiBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNnNwaWRldi1cXHUwMDNlZGV2LCBwcml2LVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYz0xMjkwPXN0YXRpYyBpbnQgZ3JldGhfbWRpb19pbml0KHN0cnVjdCBncmV0aF9wcml2YXRlICpncmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjEzMDc6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihncmV0aC1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jPTM5MzE9c3RhdGljIGludCBldDEzMXhfcGNpX3NldHVwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDI3OlxcdHJjID0gbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI4LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMjE9c3RhdGljIGludCBhbHRlcmFfdHNlX21kaW9fY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE1ODpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1OS1cXHRpZiAocmV0ICE9IDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM9MTA2MT1zdGF0aWMgaW50IGF1MTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6MTIyMjpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF1cC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIzLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9MzQyOD1zdGF0aWMgaW50IHhnYmVfcGh5X2luaXQoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE3LVxcdHNucHJpbnRmKG1paS1cXHUwMDNlaWQsIHNpemVvZihtaWktXFx1MDAzZWlkKSwgXFxcIiVzXFxcIiwgZGV2X25hbWUocGRhdGEtXFx1MDAzZWRldikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcxODpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE5LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MjA6XFx0XFx0ZGV2X2VycihwZGF0YS1cXHUwMDNlZGV2LCBcXFwibWRpb2J1c19yZWdpc3RlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcyMS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYz05OD1pbnQgeGdlX21kaW9fY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMTgtXFx0bWRpb19idXMtXFx1MDAzZXBoeV9tYXNrID0gMHgxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE5OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTIwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTgzNz1pbnQgeGdlbmVfZW5ldF9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6ODg4OnN0YXRpYyBpbnQgeGdlbmVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWlpX2J1cyAqbWRpbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTEzOlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTQtXFx0XFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMS1cXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkyMjpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1ODpcXHRyZXQgPSB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLCBtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jPTEzMT1pbnQgYXJjX21kaW9fcHJvYmUoc3RydWN0IGFyY19lbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYzoxNzM6XFx0ZXJyb3IgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTc0LVxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYz05NjY9c3RhdGljIGludCBheDg4Nzk2Y19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMDExOlxcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIGF4X2xvY2FsLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEyLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTY4Nz1zdGF0aWMgaW50IGFnNzF4eF9tZGlvX3Byb2JlKHN0cnVjdCBhZzcxeHggKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjctXFx0bW5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFxcXCJtZGlvXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Mjg6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyOS1cXHRvZl9ub2RlX3B1dChtbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjYwOlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIobWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI2MS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xNzEzPXN0YXRpYyBpbnQgYmNtX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MTgzMDpcXHRcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgzMS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM3LVxcdG9mX25vZGVfcHV0KG5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTE5Mz1pbnQgYmNtZ2VuZXRfbWlpX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGluaXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzMtXFx0XFx0cGh5X25hbWUgPSBcXFwiZXh0ZXJuYWwgUnZNSUlcXFwiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcXHRcXHQvKiBvZl9tZGlvYnVzX3JlZ2lzdGVyIHRvb2sgY2FyZSBvZiByZWFkaW5nIHRoZSAnbWF4LXNwZWVkJ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzNS1cXHRcXHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jPTIxNTc9c3RhdGljIGludCBzYm1hY19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsZGV2LCBsb25nIGxvbmcgYmFzZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyMjI4OlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoc2MtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE1MDU9c3RhdGljIGludCB0ZzNfbWRpb19pbml0KHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNTU4OlxcdGkgPSBtZGlvYnVzX3JlZ2lzdGVyKHRwLVxcdTAwM2VtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1OS1cXHRpZiAoaSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwOTc6c3RhdGljIGludCBtYWNiX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1hY2IgKmJwLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNC1cXHRpZiAobWRpb19ucClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMDU6XFx0XFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTExOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMTk6XFx0XFx0XFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjAtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMjI6XFx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMy19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTExMjU9c3RhdGljIGludCBtYWNiX21paV9pbml0KHN0cnVjdCBtYWNiICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExNTk6XFx0ZXJyID0gbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKGJwLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNjAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTEwNz1zdGF0aWMgaW50IGRtOTA1MV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBib2FyZF9pbmZvICpkYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExMjU6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgZGItXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTI0MjM9c3RhdGljIGludCB0c25lcF9tZGlvX2luaXQoc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjQ1NTpcXHRyZXR2YWwgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXFx1MDAzZW1kaW9idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM9MTAyND1zdGF0aWMgaW50IGV0aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYzoxMjA4OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTczND1zdGF0aWMgaW50IGZ0Z21hYzEwMF9zZXR1cF9tZGlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzcwOlxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIHByaXYtXFx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc3MS1cXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jPTM2PXN0YXRpYyBpbnQgZW5ldGNfcGNpX21kaW9fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYzo5MTpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZGV2LVxcdTAwM2VvZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTI2Nj1zdGF0aWMgaW50IGVuZXRjX21kaW9fcHJvYmUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjI5MzpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0yOTQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMDg9c3RhdGljIGludCBlbmV0Y19pbWRpb19jcmVhdGUoc3RydWN0IGVuZXRjX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjM0MzpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zMDQyPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzE2MTpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGZlcC1cXHUwMDNlbWlpX2J1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jPTY1PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jOjEwNjpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM9MTQ5PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYzoxNzY6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM9OTc9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYzoxNjc6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jPTQwOT1zdGF0aWMgaW50IGZzbF9wcV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM6NDk0OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5NS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jPTM3MT1zdGF0aWMgaW50IHhnbWFjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI2LVxcdGlmIChpc19vZl9ub2RlKGZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjc6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHRvX29mX25vZGUoZndub2RlKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjgtXFx0ZWxzZSBpZiAoaXNfYWNwaV9ub2RlKGZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjk6XFx0XFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZndub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQzMC1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jPTI2Nj1pbnQgaGJnX21kaW9faW5pdChzdHJ1Y3QgaGJnX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jOjI5MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz0xMDk0PXN0YXRpYyBpbnQgaGl4NWhkMl9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzoxMTg2OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYz0xMjM9aW50IGhjbGdlX21hY19tZGlvX2NvbmZpZyhzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTQtXFx0bWRpb19idXMtXFx1MDAzZXBoeV9tYXNrID0gfigxVSBcXHUwMDNjXFx1MDAzYyBtYWMtXFx1MDAzZXBoeV9hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jOjE1NTpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYz00OTU9c3RhdGljIGludCBobnNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU4NDpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODUtXFx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cXHUwMDNlZGV2LmZ3bm9kZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5Mi1cXHRcXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1OTM6XFx0XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTQtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4NC1cXHRzbnByaW50ZihidXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCIlc1xcXCIsIGRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2ZGV2LVxcdTAwM2VvZmRldi1cXHUwMDNlZGV2LCBidXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODYtXFx0aWYgKHJlcykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM9MTAyNj1pbnQgaXhnYmVfbWlpX2J1c19pbml0KHN0cnVjdCBpeGdiZV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDg4LVxcdGFkYXB0ZXItXFx1MDAzZW1paV9idXMgPSBidXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM6MTA4OTpcXHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwOTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYz0zODU9bHRxX2V0b3BfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwMi1cXHRcXHQgcHJpdi1cXHUwMDNlcGRldi1cXHUwMDNlbmFtZSwgcHJpdi1cXHUwMDNlcGRldi1cXHUwMDNlaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM6NDAzOlxcdGlmIChtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1paV9idXMpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDQtXFx0XFx0ZXJyID0gLUVOWElPO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYz0yODM9c3RhdGljIGludCBvcmlvbl9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4MS1cXHQvKiBGb3IgdGhlIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBEVC9BQ1BJIGZhbGwtYmFja1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlxcdCAqIHRvIG1kaW9idXNfcmVnaXN0ZXIgdmlhIG9mX21kaW9idXNfcmVnaXN0ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODMtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODQtXFx0aWYgKGlzX2FjcGlfbm9kZShwZGV2LVxcdTAwM2VkZXYuZndub2RlKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NTpcXHRcXHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODc6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4OC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM9MTM4Nz1zdGF0aWMgaW50IHB4YTE2OF9ldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDQtXFx0cGVwLVxcdTAwM2VzbWlfYnVzLVxcdTAwM2VwaHlfbWFzayA9IDB4ZmZmZmZmZmY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM6MTUwNTpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHBlcC1cXHUwMDNlc21pX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzctXFx0ZGV2X2RiZyhldGgtXFx1MDAzZWRldiwgXFxcIk1EQyBpcyBydW5uaW5nIG9uICVkIEh6XFxcXG5cXFwiLCBNRENfTUFYX0ZSRVEgLyBldGgtXFx1MDAzZW1kY19kaXZpZGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjEwMzg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihldGgtXFx1MDAzZW1paV9idXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVxcdTAwM2VtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jPTI4Nz1pbnQgbWx4YmZfZ2lnZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBtbHhiZl9naWdlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYzozMzM6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM9MjUzPWludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYy0yNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM6MjczOlxcdGVyciA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihmYmQtXFx1MDAzZWRldiwgYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYy0yNzQtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYz0xMDM2PXN0YXRpYyBpbnQga3M4ODUxX3JlZ2lzdGVyX21kaW9idXMoc3RydWN0IGtzODg1MV9uZXQgKmtzLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYzoxMDUzOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDU0LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYzoxMDU1OlxcdFxcdGdvdG8gZXJyX21kaW9idXNfcmVnaXN0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfY29tbW9uLmM6MTA2MTplcnJfbWRpb2J1c19yZWdpc3RlcjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNjItXFx0bWRpb2J1c19mcmVlKG1paV9idXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTEzNzk9c3RhdGljIGludCBsYW43NDN4X2h3X3Jlc2V0X3BoeShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTEzODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjEzODM6XFx0LyogT25seSBjYWxsZWQgd2l0aCBpbiBwcm9iZSwgYW5kIGJlZm9yZSBtZGlvYnVzX3JlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTEzODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzYyOD1zdGF0aWMgaW50IGxhbjc0M3hfbWRpb2J1c19pbml0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzY3MS1cXHQvKiByZWdpc3RlciBtZGlvYnVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM2NzI6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzY3My1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM9MTIxMj1zdGF0aWMgaW50IG5peGdlX21kaW9fc2V0dXAoc3RydWN0IG5peGdlX3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEyMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYzoxMjMxOlxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTIzMi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jPTc5MD1zdGF0aWMgaW50IGxwY19taWlfaW5pdChzdHJ1Y3QgbmV0ZGF0YV9sb2NhbCAqcGxkYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jLTgyMC1cXHRub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocGxkYXQtXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwibWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L254cC9scGNfZXRoLmM6ODIxOlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIocGxkYXQtXFx1MDAzZW1paV9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L254cC9scGNfZXRoLmMtODIyLVxcdG9mX25vZGVfcHV0KG5vZGUpO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjQzLjQwOTk3OTk0M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4MTUwNzE4NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTURJTyBCdXMgQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBnZXQgc3l6a2FsbGVyIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIHByb2JlIG9mIHRoaXMgUEhZIGRyaXZlciBJJ20gaW50ZXJlc3RlZCBpbi4gVGhlIGxhbmRzY2FwZSBvZiBNRElPIGJ1cyBkcml2ZXJzIGlzIHByZXR0eSBleHRlbnNpdmUsIGJ1dCB0aGUgY29yZSBpc3N1ZSBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gZXZlbiAqY3JlYXRlKiBhbiBNRElPIGJ1cyBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIHRyaWNrIHRoZSBrZXJuZWwgaW50byBkb2luZyBzby4gU3l6a2FsbGVyLCBpbiBteSBleHBlcmllbmNlLCBsZWFucyBoZWF2aWx5IG9uIHZpcnR1YWwgZGV2aWNlcyBsaWtlIGB0dW5gLCBgdGFwYCwgdGhlIGBuZXRkZXZzaW1gIGZhbWlseSwgYW5kIG90aGVycy4gSSBhbHJlYWR5IGNoZWNrZWQ6IGBuZXRkZXZzaW1gIGRvZXNuJ3QgcmVnaXN0ZXIgYW4gTURJTyBidXMuIFNvLCBhcmUgKmFueSogb2YgdGhlIHZpcnR1YWwgZHJpdmVycyBkb2luZyB0aGlzP1xuXG5MZXQncyBkaWcgYSBiaXQgZGVlcGVyLiBBcmUgdGhlcmUgYW55ICp2aXJ0dWFsKiBNRElPIGJ1cyBkcml2ZXJzIHRoZW1zZWx2ZXM/IEFoYSwgYGRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuY2AgcmVnaXN0ZXJzIGEgZml4ZWQgTURJTyBidXMsIGFuZCB0aGVuIHRoZXJlJ3MgYGRyaXZlcnMvbmV0L3BoeS9tZGlvLW1vY2suY2AgYW5kIGBkcml2ZXJzL25ldC9waHkvbWRpby1ncGlvLmNgLiBPa2F5LCBwb3RlbnRpYWwgc3RhcnRpbmcgcG9pbnRzLlxuXG5CdXQgdGhlbiBJIHN0YXJ0IHRvIHdvbmRlciwgY2FuIGEgdXNlci1zcGFjZSBwcm9jZXNzIGV2ZW4gKmluc3RhbnRpYXRlKiBhIFBIWSBkcml2ZXIgZGlyZWN0bHk/IE5vLCB0aGF0J3Mgbm90IGhvdyBpdCB3b3Jrcy4gUEhZIGRyaXZlcnMgYXJlIG1hdGNoZWQgYmFzZWQgb24gdGhlIFBIWSBJRCwgcmVhZCBmcm9tIHRoZSBQSFkgaGFyZHdhcmUgcmVnaXN0ZXJzLCBhbmQgc2luY2UgdGhlcmUncyBubyByZWFsIGhhcmR3YXJlIGhlcmUsIHRoZSBNRElPIGJ1cyBpcyBnb2luZyB0byByZWFkIGdhcmJhZ2UgKHByb2JhYmx5IDB4ZmZmZiBvciAweDAwMDApLCB3aGljaCB3b24ndCBtYXRjaCB0aGUgTWVkaWFUZWsgUEhZIElEICgweDAzYTI5NDkxKSBJJ20gdGFyZ2V0aW5nLlxuXG5XYWl04oCmIHdoYXQgYWJvdXQgdGhlIGRldmljZSB0cmVlPyBDYW4gdGhlIFBIWSBJRCBiZSBzcGVjaWZpZWQgdGhlcmU/IERhbW4sIHN5emthbGxlciBkb2Vzbid0IHRvdWNoIHRoZSBkZXZpY2UgdHJlZSBhdCBydW50aW1lLiBTbywgSSdtIHN0dWNrLiBUaGUgUEhZIGRyaXZlciB3aWxsIG5ldmVyIGJlIHByb2JlZC5cblxuT2theSwgbWF5YmUgSSdtIGFwcHJvYWNoaW5nIHRoaXMgZnJvbSB0aGUgd3JvbmcgYW5nbGUuIENhbiB1c2Vyc3BhY2UsIHNvbWVob3csIGNyZWF0ZSBhIFBIWSBkZXZpY2UgdmlhIHN5c2ZzPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGBtZGlvX2J1c2AuIElmIEkgY2FuJ3QgZmluZCBhIGZpbGUtYmFja2VkIGRldmljZSwgSSB3b24ndCBiZSBhYmxlIHRvIGluc3RhbnRpYXRlIG9uZS4gU28gSSBjaGVjaywgY2FuIEkganVzdCBkbyBhbiBgZWNobyBcInBoeV9pZFwiIFx1MDAzZSAvc3lzL2J1cy9tZGlvX2J1cy9kZXZpY2VzLy4uLmA/IE5vcGUsIHRoZSBNRElPIGJ1cyBkb2Vzbid0IGhhdmUgYSBgbmV3X2RldmljZWAgYXR0cmlidXRlIGxpa2UgSTJDIG9yIFNQSS4gSSBuZWVkIHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgdHJpY2tlcnkgSSBjYW4gdXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTUyNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDo1My4yMjUwNTM4NjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTY0MDY4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXdfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDo1My4yNzA2MjYxMjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA1NjY0OTEyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogQ29kZSBVbnJlYWNoYWJsZSBpbiBTdGFuZGFyZCBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXJlJ3MgYWJzb2x1dGVseSBubyBwYXRoIHRvIHRoaXMgY29kZSBpbiBhIHN0YW5kYXJkLCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VLiBXZSdyZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBQSFkgZGV2aWNlIOKAkyB0aGUgTWVkaWFUZWsvRWNvTmV0IEVONzUyOCDigJMgYW5kIHRoZXJlJ3Mgbm8gd2F5IHRvIGluc3RhbnRpYXRlIHRoYXQgZnJvbSB1c2Vyc3BhY2UuIFRoZSBjcml0aWNhbCBmdW5jdGlvbiwgYGVuNzUyOF9waHlfY29uZmlnX2luaXRgLCBhbG9uZyB3aXRoIHRoZSBjb3JlIE1lZGlhVGVrIFBIWSBkcml2ZXIgY29kZSwgaXMgaW50cmluc2ljYWxseSB0aWVkIHRvIHRoZSBoYXJkd2FyZSBvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucy4gV2l0aG91dCB0aG9zZSBlbGVtZW50cywgd2UncmUgZGVhZCBpbiB0aGUgd2F0ZXIuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGlzIGJ5IHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgZW43NTI4X3BoeV9jb25maWdfaW5pdGAsIGFuZCBpdCdzIGNsZWFyIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZHVyaW5nIHRoZSBQSFkgZGV2aWNlJ3MgcHJvYmUgYW5kIGluaXRpYWxpemF0aW9uLiBUaGlzIFBIWSBkZXZpY2Ugb25seSBnZXRzIGNyZWF0ZWQgaWYgdGhlIE1ESU8gYnVzIHN1Y2Nlc3NmdWxseSBpZGVudGlmaWVzIHRoZSBoYXJkd2FyZSBieSBJRCwgb3IgaWYgdGhlIHN5c3RlbSB1c2VzIGFuIGV4cGxpY2l0IGRldmljZSB0cmVlIGVudHJ5LiBTaW5jZSBzeXprYWxsZXIgYW5kIG90aGVyIGZ1enppbmcgdG9vbHMgcnVuIGluIHN0YW5kYXJkIFFFTVUgKHg4Nl82NCBvciBhcm02NCB2aXJ0KSAqd2l0aG91dCogdGhpcyBoYXJkd2FyZSBvciB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZSwgdGhlIFBIWSBkZXZpY2UgKndpbGwgbmV2ZXIgYmUgY3JlYXRlZCouIENvbnNlcXVlbnRseSwgdGhlIGRyaXZlciB3aWxsIG5vdCBiZSBwcm9iZWQsIGFuZCBgZW43NTI4X3BoeV9jb25maWdfaW5pdGAgd2lsbCBuZXZlciBleGVjdXRlLlxuXG5UaGUgcHJvbXB0IGV4cGxpY2l0bHkgdGVsbHMgbWUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIGltcG9zc2libGUgdG8gaGl0IGluIHRoZXNlIGVudmlyb25tZW50cywgZXZlbiBpZiBoYXJkd2FyZSBpcyBlbXVsYXRlZC4gVGhpcyBwYXRjaCBmaXRzIHRoZSBjcml0ZXJpYSBwZXJmZWN0bHkuIEl0J3MgZGVzaWduZWQgZm9yIGEgcGFydGljdWxhciBoYXJkd2FyZSBQSFkgKE1lZGlhVGVrL0Vjb05ldCBFTjc1MjgpLCBhbmQgY2FuJ3QgYmUgcmVhY2hlZCBpbiB0aGUgc3RhbmRhcmQsIGdlbmVyaWMgUUVNVSBlbnZpcm9ubWVudCB1c2VkIGJ5IGZ1enppbmcuXG5cbkxldCdzIGRvIGEgcXVpY2sgcmUtY2hlY2sgb2YgdGhlIHBhdGNoIGl0c2VsZi5cblxuYGBgY1xuK3N0YXRpYyBpbnQgZW43NTI4X3BoeV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdC8qIFRoZSBMRUQgY29udHJvbGxlciBvZiB0aGUgRU43NTI4IHBvd2VycyB1cCB3aXRoIGl0cyBleHRlcm5hbFxuK1x0ICogY29udHJvbCBkaXNhYmxlZCwgbGVhdmluZyB0aGUgTEVEIHBpbnMgZGFyayByZWdhcmRsZXNzIG9mIHdoYXQgaXNcbitcdCAqIHByb2dyYW1tZWQgaW50byB0aGUgTEVEIGNvbnRyb2wgcmVnaXN0ZXJzLiBIYW5kIHRoZSBwaW5zIG92ZXIgdG9cbitcdCAqIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMgdGhlIHNhbWUgd2F5IHRoZSBhaXJfZW44ODExaCBkcml2ZXJcbitcdCAqIGRvZXM7IHRoZSBtb2RlIGZpZWxkIG9mIHRoaXMgcmVnaXN0ZXIgaXMgYWxyZWFkeSBzZXQgb3V0IG9mIHJlc2V0LlxuK1x0ICovXG4rXHRyZXR1cm4gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNVEtfUEhZX0xFRF9CQ1IsXG4rXHRcdFx0XHRNVEtfUEhZX0xFRF9CQ1JfQ0xLX0VOIHxcbitcdFx0XHRcdE1US19QSFlfTEVEX0JDUl9FWFRfQ1RSTCk7XG4rfVxuYGBgXG5cblllYWgsIGl0J3MganVzdCBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGVyZSdzIG5vIHdheSB0aGlzIGlzIHJlYWNoYWJsZSB3aXRoaW4gYSBnZW5lcmljIFFFTVUgZW52aXJvbm1lbnQuXG5cblRoZXJlZm9yZSwgdGhlIGZpbmFsIGRlY2lzaW9uIGlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHVwZGF0ZWQgY29kZSBwZXJ0YWlucyB0byBhIHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmUgd2hpY2ggaXNuJ3QgcHJlc2VudCBpbiBnZW5lcmljIHZpcnR1YWxpemF0aW9uIHNldHVwcywgYW5kIHRoZSBuZXcgY29kZSBwYXRocyBjYW5ub3QgYmUgY292ZXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1MjEsIk91dHB1dFRva2VucyI6MTEwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQxOjAzLjgzNzEyMTQ3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBFdGhlcm5ldCBQSFkgKEVjb05ldCBFTjc1MjgpLiBQSFkgZHJpdmVycyBhcmUgcHJvYmVkIGJhc2VkIG9uIGhhcmR3YXJlIElEcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzIG9yIHZpYSBkZXZpY2UgdHJlZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIEV0aGVybmV0IFBIWSAoRWNvTmV0IEVONzUyOCkuIFBIWSBkcml2ZXJzIGFyZSBwcm9iZWQgYmFzZWQgb24gaGFyZHdhcmUgSURzIHJlYWQgZnJvbSB0aGUgTURJTyBidXMgb3IgdmlhIGRldmljZSB0cmVlIG5vZGVzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcxp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 11:38:24 +0000 UTC FinishedAt: 2026-08-04 11:41:05 +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+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBFdGhlcm5ldCBQSFkgKEVjb05ldCBFTjc1MjgpLiBQSFkgZHJpdmVycyBhcmUgcHJvYmVkIGJhc2VkIG9uIGhhcmR3YXJlIElEcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzIG9yIHZpYSBkZXZpY2UgdHJlZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGM3M2VkODEwYjE2MWNiZjMzZTEwMzA5Y2MyY2EzNWM1N2FjZWIwYjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDExOjQwOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWdcbmluZGV4IGJiN2RjODc2MjcxZTguLmI2ZDQxYmJiYmMyN2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWdcbkBAIC0yMyw5ICYjNDM7MjMsOSBAQCBjb25maWcgTUVESUFURUtfR0VfUEhZXG4gXG4gY29uZmlnIE1FRElBVEVLX0dFX1NPQ19QSFlcbiBcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIFNvQyBFdGhlcm5ldCBQSFlzXCYjMzQ7XG4tXHRkZXBlbmRzIG9uIEFSTTY0IHx8IENPTVBJTEVfVEVTVFxuJiM0MztcdGRlcGVuZHMgb24gQVJNNjQgfHwgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxuIFx0ZGVwZW5kcyBvbiBBUkNIX0FJUk9IQSB8fCAoQVJDSF9NRURJQVRFSyBcdTAwMjZcdTAwMjYgTlZNRU1fTVRLX0VGVVNFKSB8fCBcXFxuLVx0XHQgICBDT01QSUxFX1RFU1RcbiYjNDM7XHRcdCAgIEVDT05FVCB8fCBDT01QSUxFX1RFU1RcbiBcdHNlbGVjdCBNVEtfTkVUX1BIWUxJQlxuIFx0c2VsZWN0IFBIWV9QQUNLQUdFXG4gXHRoZWxwXG5AQCAtMzYsNSAmIzQzOzM2LDkgQEAgY29uZmlnIE1FRElBVEVLX0dFX1NPQ19QSFlcbiBcdCAgcHJlc2VudCBpbiB0aGUgU29DcyBlZnVzZSBhbmQgd2lsbCBkeW5hbWljYWxseSBjYWxpYnJhdGUgVkNNXG4gXHQgIChjb21tb24tbW9kZSB2b2x0YWdlKSBkdXJpbmcgc3RhcnR1cC5cbiBcbiYjNDM7XHQgIEFsc28gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gR2lnYWJpdCBFdGhlcm5ldCBQSFlzIG9mXG4mIzQzO1x0ICB0aGUgQWlyb2hhIEFONzU4MSBhbmQgQU43NTgzIFNvQ3MgYW5kIG9mIHRoZSBFY29OZXQgRU43NTI4IFNvQyxcbiYjNDM7XHQgIHdoaWNoIG5lZWQgbm8gZWZ1c2UgY2FsaWJyYXRpb24gZGF0YS5cbiYjNDM7XG4gY29uZmlnIE1US19ORVRfUEhZTElCXG4gXHR0cmlzdGF0ZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jXG5pbmRleCA5YTU0OTQ5NjQ0ZDVhLi4wMDQxMzAwZDRmMTAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuY1xuQEAgLTE2LDYgJiM0MzsxNiw3IEBAXG4gXG4gI2RlZmluZSBNVEtfR1BIWV9JRF9NVDc5ODFcdFx0XHQweDAzYTI5NDYxXG4gI2RlZmluZSBNVEtfR1BIWV9JRF9NVDc5ODhcdFx0XHQweDAzYTI5NDgxXG4mIzQzOyNkZWZpbmUgTVRLX0dQSFlfSURfRU43NTI4XHRcdFx0MHgwM2EyOTQ5MVxuICNkZWZpbmUgTVRLX0dQSFlfSURfQU43NTgxXHRcdFx0MHgwM2EyOTRjMVxuICNkZWZpbmUgTVRLX0dQSFlfSURfQU43NTgzXHRcdFx0MHhjMGZmMDQyMFxuIFxuQEAgLTMyMCw2ICYjNDM7MzIxLDE0IEBAXG4gLyogUmVnaXN0ZXJzIG9uIE1ESU9fTU1EX1ZFTkQyICovXG4gI2RlZmluZSBNVEtfUEhZX0xFRDFfREVGQVVMVF9QT0xBUklUSUVTXHRcdEJJVCgxKVxuIFxuJiM0MzsvKiBMRUQgYmFzaWMgY29udHJvbCByZWdpc3RlciwgcGFydCBvZiB0aGUgc2FtZSBMRUQgYmxvY2sgYXMgdGhlIExFRDAvTEVEMVxuJiM0MzsgKiBjb250cm9sIHJlZ2lzdGVycyBhYm92ZS4gVGhlIGFpcl9lbjg4MTFoIGRyaXZlciBkZXNjcmliZXMgdGhlIHNhbWVcbiYjNDM7ICogcmVnaXN0ZXIgYXMgQUlSX1BIWV9MRURfQkNSLlxuJiM0MzsgKi9cbiYjNDM7I2RlZmluZSBNVEtfUEhZX0xFRF9CQ1JcdFx0XHRcdDB4MjFcbiYjNDM7I2RlZmluZSAgIE1US19QSFlfTEVEX0JDUl9DTEtfRU5cdFx0QklUKDMpXG4mIzQzOyNkZWZpbmUgICBNVEtfUEhZX0xFRF9CQ1JfRVhUX0NUUkxcdFx0QklUKDE1KVxuJiM0MztcbiAjZGVmaW5lIE1US19QSFlfUkdfQkdfUkFTRUxcdFx0XHQweDExNVxuICNkZWZpbmUgICBNVEtfUEhZX1JHX0JHX1JBU0VMX01BU0tcdFx0R0VOTUFTSygyLCAwKVxuIFxuQEAgLTE0NzAsNiAmIzQzOzE0NzksMTkgQEAgc3RhdGljIGludCBhbjc1ODNfcGh5X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRyZXR1cm4gcGh5X2NsZWFyX2JpdHMocGh5ZGV2LCBNSUlfQk1DUiwgQk1DUl9QRE9XTik7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGVuNzUyOF9waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiYjNDM7e1xuJiM0MztcdC8qIFRoZSBMRUQgY29udHJvbGxlciBvZiB0aGUgRU43NTI4IHBvd2VycyB1cCB3aXRoIGl0cyBleHRlcm5hbFxuJiM0MztcdCAqIGNvbnRyb2wgZGlzYWJsZWQsIGxlYXZpbmcgdGhlIExFRCBwaW5zIGRhcmsgcmVnYXJkbGVzcyBvZiB3aGF0IGlzXG4mIzQzO1x0ICogcHJvZ3JhbW1lZCBpbnRvIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMuIEhhbmQgdGhlIHBpbnMgb3ZlciB0b1xuJiM0MztcdCAqIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMgdGhlIHNhbWUgd2F5IHRoZSBhaXJfZW44ODExaCBkcml2ZXJcbiYjNDM7XHQgKiBkb2VzOyB0aGUgbW9kZSBmaWVsZCBvZiB0aGlzIHJlZ2lzdGVyIGlzIGFscmVhZHkgc2V0IG91dCBvZiByZXNldC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZXR1cm4gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNVEtfUEhZX0xFRF9CQ1IsXG4mIzQzO1x0XHRcdFx0TVRLX1BIWV9MRURfQkNSX0NMS19FTiB8XG4mIzQzO1x0XHRcdFx0TVRLX1BIWV9MRURfQkNSX0VYVF9DVFJMKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX3NvY3BoeV9kcml2ZXJbXSA9IHtcbiBcdHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSksXG5AQCAtMTUwNSw2ICYjNDM7MTUyNywxOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX3NvY3BoeV9kcml2ZXJbXSA9IHtcbiBcdFx0LmxlZF9od19jb250cm9sX3NldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuIFx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXG4gXHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9FTjc1MjgpLFxuJiM0MztcdFx0Lm5hbWVcdFx0PSBcJiMzNDtFY29OZXQgRU43NTI4IFBIWVwmIzM0OyxcbiYjNDM7XHRcdC5jb25maWdfaW5pdFx0PSBlbjc1MjhfcGh5X2NvbmZpZ19pbml0LFxuJiM0MztcdFx0LnByb2JlXHRcdD0gYW43NTgxX3BoeV9wcm9iZSxcbiYjNDM7XHRcdC5sZWRfYmxpbmtfc2V0XHQ9IG10Nzk4eF9waHlfbGVkX2JsaW5rX3NldCxcbiYjNDM7XHRcdC5sZWRfYnJpZ2h0bmVzc19zZXQgPSBtdDc5OHhfcGh5X2xlZF9icmlnaHRuZXNzX3NldCxcbiYjNDM7XHRcdC5sZWRfaHdfaXNfc3VwcG9ydGVkID0gbXQ3OTh4X3BoeV9sZWRfaHdfaXNfc3VwcG9ydGVkLFxuJiM0MztcdFx0LmxlZF9od19jb250cm9sX3NldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxuJiM0MztcdFx0LmxlZF9od19jb250cm9sX2dldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuJiM0MztcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhbjc1ODFfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG4mIzQzO1x0fSxcbiBcdHtcbiBcdFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSksXG4gXHRcdC5uYW1lXHRcdD0gXCYjMzQ7QWlyb2hhIEFONzU4MSBQSFlcJiMzNDssXG5AQCAtMTUzNyw2ICYjNDM7MTU3MSw3IEBAIG1vZHVsZV9waHlfZHJpdmVyKG10a19zb2NwaHlfZHJpdmVyKTtcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG10a19zb2NwaHlfdGJsW10gPSB7XG4gXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc5ODEpIH0sXG4gXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc5ODgpIH0sXG4mIzQzO1x0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfRU43NTI4KSB9LFxuIFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgxKSB9LFxuIFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgzKSB9LFxuIFx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBFdGhlcm5ldCBQSFkgKEVjb05ldCBFTjc1MjgpLiBQSFkgZHJpdmVycyBhcmUgcHJvYmVkIGJhc2VkIG9uIGhhcmR3YXJlIElEcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzIG9yIHZpYSBkZXZpY2UgdHJlZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM3M2VkODEwYjE2MWNiZjMzZTEwMzA5Y2MyY2EzNWM1N2FjZWIwYjAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDExOjQwOjE0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZwppbmRleCBiYjdkYzg3NjI3MWU4Li5iNmQ0MWJiYmJjMjdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZwpAQCAtMjMsOSAmIzQzOzIzLDkgQEAgY29uZmlnIE1FRElBVEVLX0dFX1BIWQogCiBjb25maWcgTUVESUFURUtfR0VfU09DX1BIWQogCXRyaXN0YXRlICYjMzQ7TWVkaWFUZWsgU29DIEV0aGVybmV0IFBIWXMmIzM0OwotCWRlcGVuZHMgb24gQVJNNjQgfHwgQ09NUElMRV9URVNUCiYjNDM7CWRlcGVuZHMgb24gQVJNNjQgfHwgRUNPTkVUIHx8IENPTVBJTEVfVEVTVAogCWRlcGVuZHMgb24gQVJDSF9BSVJPSEEgfHwgKEFSQ0hfTUVESUFURUsgJmFtcDsmYW1wOyBOVk1FTV9NVEtfRUZVU0UpIHx8IFwKLQkJICAgQ09NUElMRV9URVNUCiYjNDM7CQkgICBFQ09ORVQgfHwgQ09NUElMRV9URVNUCiAJc2VsZWN0IE1US19ORVRfUEhZTElCCiAJc2VsZWN0IFBIWV9QQUNLQUdFCiAJaGVscApAQCAtMzYsNSAmIzQzOzM2LDkgQEAgY29uZmlnIE1FRElBVEVLX0dFX1NPQ19QSFkKIAkgIHByZXNlbnQgaW4gdGhlIFNvQ3MgZWZ1c2UgYW5kIHdpbGwgZHluYW1pY2FsbHkgY2FsaWJyYXRlIFZDTQogCSAgKGNvbW1vbi1tb2RlIHZvbHRhZ2UpIGR1cmluZyBzdGFydHVwLgogCiYjNDM7CSAgQWxzbyBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBHaWdhYml0IEV0aGVybmV0IFBIWXMgb2YKJiM0MzsJICB0aGUgQWlyb2hhIEFONzU4MSBhbmQgQU43NTgzIFNvQ3MgYW5kIG9mIHRoZSBFY29OZXQgRU43NTI4IFNvQywKJiM0MzsJICB3aGljaCBuZWVkIG5vIGVmdXNlIGNhbGlicmF0aW9uIGRhdGEuCiYjNDM7CiBjb25maWcgTVRLX05FVF9QSFlMSUIKIAl0cmlzdGF0ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYyBiL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMKaW5kZXggOWE1NDk0OTY0NGQ1YS4uMDA0MTMwMGQ0ZjEwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jCkBAIC0xNiw2ICYjNDM7MTYsNyBAQAogCiAjZGVmaW5lIE1US19HUEhZX0lEX01UNzk4MQkJCTB4MDNhMjk0NjEKICNkZWZpbmUgTVRLX0dQSFlfSURfTVQ3OTg4CQkJMHgwM2EyOTQ4MQomIzQzOyNkZWZpbmUgTVRLX0dQSFlfSURfRU43NTI4CQkJMHgwM2EyOTQ5MQogI2RlZmluZSBNVEtfR1BIWV9JRF9BTjc1ODEJCQkweDAzYTI5NGMxCiAjZGVmaW5lIE1US19HUEhZX0lEX0FONzU4MwkJCTB4YzBmZjA0MjAKIApAQCAtMzIwLDYgJiM0MzszMjEsMTQgQEAKIC8qIFJlZ2lzdGVycyBvbiBNRElPX01NRF9WRU5EMiAqLwogI2RlZmluZSBNVEtfUEhZX0xFRDFfREVGQVVMVF9QT0xBUklUSUVTCQlCSVQoMSkKIAomIzQzOy8qIExFRCBiYXNpYyBjb250cm9sIHJlZ2lzdGVyLCBwYXJ0IG9mIHRoZSBzYW1lIExFRCBibG9jayBhcyB0aGUgTEVEMC9MRUQxCiYjNDM7ICogY29udHJvbCByZWdpc3RlcnMgYWJvdmUuIFRoZSBhaXJfZW44ODExaCBkcml2ZXIgZGVzY3JpYmVzIHRoZSBzYW1lCiYjNDM7ICogcmVnaXN0ZXIgYXMgQUlSX1BIWV9MRURfQkNSLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgTVRLX1BIWV9MRURfQkNSCQkJCTB4MjEKJiM0MzsjZGVmaW5lICAgTVRLX1BIWV9MRURfQkNSX0NMS19FTgkJQklUKDMpCiYjNDM7I2RlZmluZSAgIE1US19QSFlfTEVEX0JDUl9FWFRfQ1RSTAkJQklUKDE1KQomIzQzOwogI2RlZmluZSBNVEtfUEhZX1JHX0JHX1JBU0VMCQkJMHgxMTUKICNkZWZpbmUgICBNVEtfUEhZX1JHX0JHX1JBU0VMX01BU0sJCUdFTk1BU0soMiwgMCkKIApAQCAtMTQ3MCw2ICYjNDM7MTQ3OSwxOSBAQCBzdGF0aWMgaW50IGFuNzU4M19waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAlyZXR1cm4gcGh5X2NsZWFyX2JpdHMocGh5ZGV2LCBNSUlfQk1DUiwgQk1DUl9QRE9XTik7CiB9CiAKJiM0MztzdGF0aWMgaW50IGVuNzUyOF9waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CS8qIFRoZSBMRUQgY29udHJvbGxlciBvZiB0aGUgRU43NTI4IHBvd2VycyB1cCB3aXRoIGl0cyBleHRlcm5hbAomIzQzOwkgKiBjb250cm9sIGRpc2FibGVkLCBsZWF2aW5nIHRoZSBMRUQgcGlucyBkYXJrIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBpcwomIzQzOwkgKiBwcm9ncmFtbWVkIGludG8gdGhlIExFRCBjb250cm9sIHJlZ2lzdGVycy4gSGFuZCB0aGUgcGlucyBvdmVyIHRvCiYjNDM7CSAqIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMgdGhlIHNhbWUgd2F5IHRoZSBhaXJfZW44ODExaCBkcml2ZXIKJiM0MzsJICogZG9lczsgdGhlIG1vZGUgZmllbGQgb2YgdGhpcyByZWdpc3RlciBpcyBhbHJlYWR5IHNldCBvdXQgb2YgcmVzZXQuCiYjNDM7CSAqLwomIzQzOwlyZXR1cm4gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNVEtfUEhZX0xFRF9CQ1IsCiYjNDM7CQkJCU1US19QSFlfTEVEX0JDUl9DTEtfRU4gfAomIzQzOwkJCQlNVEtfUEhZX0xFRF9CQ1JfRVhUX0NUUkwpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtdGtfc29jcGh5X2RyaXZlcltdID0gewogCXsKIAkJUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSksCkBAIC0xNTA1LDYgJiM0MzsxNTI3LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtdGtfc29jcGh5X2RyaXZlcltdID0gewogCQkubGVkX2h3X2NvbnRyb2xfc2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9zZXQsCiAJCS5sZWRfaHdfY29udHJvbF9nZXQgPSBtdDc5OHhfcGh5X2xlZF9od19jb250cm9sX2dldCwKIAl9LAomIzQzOwl7CiYjNDM7CQlQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfRU43NTI4KSwKJiM0MzsJCS5uYW1lCQk9ICYjMzQ7RWNvTmV0IEVONzUyOCBQSFkmIzM0OywKJiM0MzsJCS5jb25maWdfaW5pdAk9IGVuNzUyOF9waHlfY29uZmlnX2luaXQsCiYjNDM7CQkucHJvYmUJCT0gYW43NTgxX3BoeV9wcm9iZSwKJiM0MzsJCS5sZWRfYmxpbmtfc2V0CT0gbXQ3OTh4X3BoeV9sZWRfYmxpbmtfc2V0LAomIzQzOwkJLmxlZF9icmlnaHRuZXNzX3NldCA9IG10Nzk4eF9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LAomIzQzOwkJLmxlZF9od19pc19zdXBwb3J0ZWQgPSBtdDc5OHhfcGh5X2xlZF9od19pc19zdXBwb3J0ZWQsCiYjNDM7CQkubGVkX2h3X2NvbnRyb2xfc2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9zZXQsCiYjNDM7CQkubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsCiYjNDM7CQkubGVkX3BvbGFyaXR5X3NldCA9IGFuNzU4MV9waHlfbGVkX3BvbGFyaXR5X3NldCwKJiM0MzsJfSwKIAl7CiAJCVBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9BTjc1ODEpLAogCQkubmFtZQkJPSAmIzM0O0Fpcm9oYSBBTjc1ODEgUEhZJiMzNDssCkBAIC0xNTM3LDYgJiM0MzsxNTcxLDcgQEAgbW9kdWxlX3BoeV9kcml2ZXIobXRrX3NvY3BoeV9kcml2ZXIpOwogc3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBtdGtfc29jcGh5X3RibFtdID0gewogCXsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSkgfSwKIAl7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9NVDc5ODgpIH0sCiYjNDM7CXsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0VONzUyOCkgfSwKIAl7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9BTjc1ODEpIH0sCiAJeyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgzKSB9LAogCXsgfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjA4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTM0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGUgRWNvTmV0IEVONzUyOCBQSFkgRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIGFkZGluZyBzdXBwb3J0IGZvciB0aGUgRWNvTmV0IEVONzUyOCBQSFkgdG8gdGhlIE1lZGlhVGVrIEV0aGVybmV0IFBIWSBkcml2ZXIuIEl0JiMzOTtzIG1vZGlmeWluZyBLY29uZmlnIGFuZCBhIEMgZmlsZSwgZXNzZW50aWFsbHkgaW50cm9kdWNpbmcgYSBuZXcgUEhZIElEIGFuZCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBzeXprYWxsZXIgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIG5ldyBjb2RlIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/CgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIFBIWSBkcml2ZXJzIGFyZSB1c3VhbGx5IHByb2JlZCB2aWEgdGhlIE1ESU8gYnVzLiBDYW4gd2UgZW11bGF0ZSB0aGF0IGluIFFFTVU/IFdlICptaWdodCogYmUgYWJsZSB0byBnZXQgaXQgdG8gd29yayBpZiBRRU1VIGVtdWxhdGVzIHRoZSBNRElPIGJ1cyBvciBpZiB3ZSBjb3VsZCBzb21laG93IGluc3RhbnRpYXRlIGEgZHVtbXkgb25lIGFuZCByZWdpc3RlciB0aGUgUEhZLiBCdXQgc3l6a2FsbGVyIHR5cGljYWxseSBkb2VzbiYjMzk7dCBkaXJlY3RseSB0YXJnZXQgUEhZIGRyaXZlcnMgdW5sZXNzIHRoZXkmIzM5O3JlIHBhcnQgb2YgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIHdpdGggYW4gZXhwb3NlZCBNRElPIGJ1cy4gSSBkb24mIzM5O3Qgc2VlIGFueSBleHBsaWNpdCBzdXBwb3J0IGZvciBNRElPL1BIWSBmdXp6aW5nIHZpYSBgc3l6X2dlbmV0bGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXIgaGVyZS4gU3l6a2FsbGVyIHRlbmRzIHRvIGZvY3VzIG9uIG5ldHdvcmsgZGV2aWNlcyBsaWtlIGB0dW5gL2B0YXBgIG9yIGB2ZXRoYCwgd2hpY2ggZG9uJiMzOTt0IGhhdmUgUEhZcy4gU29tZSBkcml2ZXJzIGxpa2UgYG1hY2JgIG9yIGBlMTAwMGAgKm1pZ2h0KiBoYXZlIFBIWXMgYXR0YWNoZWQsIGJ1dCB0aGF0JiMzOTtzIG5vdCB0aGUgdXN1YWwgc3l6a2FsbGVyIGFwcHJvYWNoLgoKU28sIHRoZSBrZXkgaGVyZSBpcyByZWFjaGFiaWxpdHkuIFN5emthbGxlciAqY2FuKiBoaXQgUEhZIGRyaXZlcnMgaWYgdGhleSBhcmUgcmVnaXN0ZXJlZCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIG5ldGxpbmsgb3IgaW9jdGxzLiBCdXQgKmhvdyogZG8gd2UgZ2V0IGl0IHJlZ2lzdGVyZWQ/IE15IGh1bmNoIGlzIHRoaXMgTWVkaWFUZWsgZHJpdmVyIGlzIGZvciBidWlsdC1pbiBQSFlzIHdpdGhpbiBNZWRpYVRlayBTb0NzLiBDYW4gd2UgcHJvYmUgdGhpcyB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmU/IFBIWSBkcml2ZXJzIGFyZSB1c3VhbGx5IHJlZ2lzdGVyZWQgb24gdGhlIE1ESU8gYnVzLCBtYXRjaGluZyB0aGUgUEhZIElELiBDb3VsZCB3ZSBzcG9vZiB0aGUgUEhZIElELCBtYXliZSBjcmVhdGUgYSB2aXJ0dWFsIE1ESU8gYnVzIG9yIHVzZSBhIHZpcnR1YWwgZGV2aWNlIGxpa2UgYG1hY2JgIG9yIGBlMTAwMGAsIGJ1dCBzeXprYWxsZXIgZG9lc24mIzM5O3QgdHlwaWNhbGx5IG1lc3Mgd2l0aCB0aGF0IHNvcnQgb2YgdGhpbmcgdW5sZXNzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxsIGZvciBNRElPLgoKV2Uga25vdyB0aGVyZSYjMzk7cyBhbiBNRElPIGJ1cywgYnV0IHVzZXJzcGFjZSBjYW4mIzM5O3QgKmNyZWF0ZSogTURJTyBkZXZpY2VzLiBUaGV5JiMzOTtyZSBjcmVhdGVkIGJ5IHRoZSBNQUMgZHJpdmVyIHByb2JpbmcgdGhlIGJ1cy4gQ291bGQgd2Ugc29tZWhvdyB0cmlnZ2VyIHRoZSBQSFkgZHJpdmVyIHByb2JlIHZpYSBzb21ldGhpbmcgbGlrZSBJMkMvTURJTz8gTm90IGxpa2VseS4gQW5kIHRoaXMgaXMganVzdCBhIFBIWSBkcml2ZXIsIGl0IHNvdW5kcyBsaWtlLiBXZSBjYW4gcmVhZC93cml0ZSBQSFkgcmVnaXN0ZXJzIHZpYSBTSU9DR01JSVJFRy9TSU9DU01JSVJFRywgYnV0IGl0IHdvbiYjMzk7dCB0cmlnZ2VyIHByb2JpbmcuCgpUaGUgY29yZSBvZiB0aGUgcHJvYmxlbTogaG93IGRvIHdlIGdldCB0aGUgTURJTyBidXMgdG8gKnNlZSogdGhlIFBIWSBJRD8gSXMgdGhlcmUgc29mdHdhcmUgTURJTyBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCB0aGF0IHN5emthbGxlciBjb3VsZCB1c2U/IEkmIzM5O2QgY2hlY2sgdGhlIHN5emthbGxlciBzb3VyY2UsIGJ1dCBJIGNhbiYjMzk7dC4KCkxldCYjMzk7cyBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMuIEl0IGxvb2tzIGxpa2UgYE1FRElBVEVLX0dFX1NPQ19QSFlgIGNhbiBiZSBidWlsdCB3aXRoIGBDT01QSUxFX1RFU1RgLiBIb3dldmVyLCB0byAqcnVuKiB0aGUgZHJpdmVyLCB3ZSYjMzk7cmUgbGlrZWx5IGdvaW5nIHRvIG5lZWQgc3BlY2lmaWMgaGFyZHdhcmUuIGBlbjc1MjhfcGh5X2NvbmZpZ19pbml0YCBuZWVkcyB0byBiZSBpbml0aWFsaXplZC4gSXQgbG9va3MgbGlrZSBpdCBpcyBjYWxsZWQgYnkgdGhlIFBIWSBsaWJyYXJ5IHdoZW4gdGhlIFBIWSBpcyBpbml0aWFsaXplZC4gV2l0aG91dCBhIE1lZGlhVGVrIG9yIEVjb05ldCBTb0MsIHRoZXJlIGlzIG5vIE1ESU8gYnVzIHRoYXQgaGFzIHRoZSBQSFkgSUQgKDB4MDNhMjk0OTEpIGZvciBpdCB0byBiZSBwcm9iZWQuIEl0IHdvdWxkIG5lZWQgUUVNVSB0byBlbXVsYXRlIGl0LgoKRG9lcyBRRU1VIGV2ZW4gZW11bGF0ZSBNZWRpYVRlayBvciBFY29OZXQgU29DIEV0aGVybmV0IFBIWXMgYnkgZGVmYXVsdCBvbiBgeDg2XzY0YCBvciBgYWFyY2g2NCB2aXJ0YCBtYWNoaW5lcz8gVW5saWtlbHkuIEkgaGF2ZSBhIGZlZWxpbmcgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIGBxZW11LXN5c3RlbS14ODZfNjRgIG9yIGBxZW11LXN5c3RlbS1hYXJjaDY0YCB3aXRoIGEgc3RhbmRhcmQgYHZpcnRgIG1hY2hpbmUuCgpTbywgdW5sZXNzIHRoZXJlJiMzOTtzIHNvbWUgb2JzY3VyZSBRRU1VIGNvbmZpZ3VyYXRpb24gSSYjMzk7bSBtaXNzaW5nIChhbmQgSSBkb3VidCBpdCwgZ2l2ZW4gdGhlIHN0YW5kYXJkIGFwcHJvYWNoIG9mIHN5emthbGxlciksIG9yIHNvbWUgd2F5IHRvIGluamVjdCBQSFkgZGV2aWNlcyAobGlrZSBgZml4ZWRfcGh5LmNgIGJ1dCB0aG9zZSBoYXZlIGZpeGVkIElEcyksIHRoaXMgc3BlY2lmaWMgUEhZIGRyaXZlciBpcyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9kZXZpY2VfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NjkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSYjMzk7bSB0aGUgZXhwZXJ0IGFuZCByZWZsZWN0aW5nIG9uIHRoZSB0ZXh0JiMzOTtzIHByb21wdDoKCioqUmUtZXZhbHVhdGluZyB0aGUgU3RyYXRlZ3kqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgYXBwcm9hY2ggaXMgb24gdGhlIHRhYmxlLCBidXQgSSYjMzk7bSBub3QgZ29pbmcgdG8ganVzdCB0YWtlIGl0IGFzIGdvc3BlbC4gTXkgaW5zdGluY3QgYXMgYW4gZXhwZXJ0IGlzIHRvIGFsd2F5cyBjaGFsbGVuZ2UgYXNzdW1wdGlvbnMgYW5kIGV4cGxvcmUgYWx0ZXJuYXRpdmVzLiBUaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGFyZSB0aGVyZSBvdGhlciBhdmVudWVzLCBvdGhlciBtZXRob2RvbG9naWVzLCBvdGhlciBwZXJzcGVjdGl2ZXMsIHRoYXQgd2UgaGF2ZW4mIzM5O3QgY29uc2lkZXJlZD8gVGhlIGN1cnJlbnQgcGxhbiBtaWdodCBiZSBwZXJmZWN0bHkgc291bmQsIGJ1dCBleHBlcmllbmNlIHRlbGxzIG1lIGEgcXVpY2sgY2hlY2sgZm9yIHBvdGVudGlhbCBibGluZCBzcG90cyBpcyBhbHdheXMgd29ydGh3aGlsZS4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gaWRlbnRpZnkgYW55IGFsdGVybmF0ZSBwYXRocyB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIG91dGNvbWUsIG9yIGV2ZW4gZmluZCBhIG1vcmUgZWxlZ2FudCBhbmQgZWZmaWNpZW50IHNvbHV0aW9uLiBUaGlzIGlzbiYjMzk7dCBhYm91dCBzZWNvbmQtZ3Vlc3NpbmcsIGl0JiMzOTtzIGFib3V0IG9wdGltaXppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvYnVzX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDg2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmU6CgoqKkNvbnNpZGVyaW5nIE5ldHdvcmsgRHJpdmVyIEFyY2hpdGVjdHVyZXMgZm9yIGEgUEhZLWxlc3MgU2NlbmFyaW8qKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIG9mICpub3QqIGhhdmluZyBhIFBoeXNpY2FsIExheWVyIFRyYW5zY2VpdmVyIChQSFkpIGluIHRoaXMgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHBvdGVudGlhbCBleGlzdGluZyBhcmNoaXRlY3R1cmVzIHRoYXQgbWlnaHQgb2ZmZXIgYSB1c2VmdWwgc3RhcnRpbmcgcG9pbnQsIG9yIGF0IGxlYXN0IGluc3BpcmUgYSB2aWFibGUgZGVzaWduLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgZHJpdmVycyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIHNjZW5hcmlvcyAqd2l0aG91dCogYSBQSFksIG9yIHdoZXJlIHRoZSBQSFkgaXMgZnVuZGFtZW50YWxseSBhYnN0cmFjdGVkIGF3YXkgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KCmBkcml2ZXJzL25ldC9kdW1teS5jYCBzcHJpbmdzIHRvIG1pbmQgaW1tZWRpYXRlbHkuIEl0JiMzOTtzIGVzc2VudGlhbGx5IGEgbm8tb3AgZHJpdmVyLCBhIG5ldHdvcmsgaW50ZXJmYWNlIHRoYXQganVzdCBhYnNvcmJzIGFuZCBzcGl0cyBvdXQgcGFja2V0cyB3aXRob3V0IGFueSBoYXJkd2FyZSBpbnRlcmFjdGlvbi4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBtb2RlbCBmb3IgYWJzdHJhY3Rpb24uIFRoZW4gdGhlcmUgaXMgYGRyaXZlcnMvbmV0L3R1bi5jYCwgdGhlIFRVTi9UQVAgZHJpdmVyLiBJdCYjMzk7cyBhbiBpbnRlcmVzdGluZyBjYXNlIGJlY2F1c2UgaXQgY3JlYXRlcyBhIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2UgdGhhdCYjMzk7cyB0aWVkIGludG8gdGhlIGtlcm5lbC4gSXTigJlzIGFsc28gaW1wb3J0YW50IGJlY2F1c2UgaXQgZGVhbHMgd2l0aCBuZXR3b3JrLWxheWVyIHBhY2tldHMuCgpUaGUgYWJzZW5jZSBvZiBhIFBIWSBpcyB0aGUga2V5IHF1ZXN0aW9uLiBXZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyB0byByZXByZXNlbnQgYW5kIG1hbmFnZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3VsZCAqbm9ybWFsbHkqIGJlIGhhbmRsZWQgYnkgdGhlIFBIWS4KClNvLCBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgTURJTyBidXMgaW1wbGVtZW50YXRpb24uIFRoaXMgaXMgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTUlJKSBtYW5hZ2VtZW50IGJ1cyB1c2VkIHRvIGNvbmZpZ3VyZSBhbmQgbW9uaXRvciBQSFlzLiBJZiB3ZSAqY291bGQqIHByZXNlbnQgYSB2aXJ0dWFsIE1ESU8gYnVzLCBldmVuIGlmIGl0JiMzOTtzIHB1cmVseSBzb2Z0d2FyZS1kZWZpbmVkLCBpdCB3b3VsZCBwcm92aWRlIGEgc3RhbmRhcmRpemVkIGludGVyZmFjZSBmb3IgaW50ZXJhY3Rpb24sIG9yIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZXNlIG5ldHdvcmsgaW50ZXJmYWNlcy4KCkl0JiMzOTtzIGEgd2F5IHRvIGxldmVyYWdlIHRoZSBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSB0aGF0IGV4cGVjdHMgYSBQSFkgYnV0IGFkYXB0IGl0IHRvIGEgbmV3IHNjZW5hcmlvLiBQZXJoYXBzIHdlIGNhbiBtb2RlbCBhbnkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB0aHJvdWdoIGEgc2ltaWxhciBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb2J1c19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTAxMiBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjgzLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNldXNlcl9taWlfYnVzKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxMy1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0yMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MzIxPXN0YXRpYyBpbnQga3N6OTQ3N19wY3NfY3JlYXRlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MzQyOlx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGRldi1cdTAwM2VkZXYsIGJ1cyk7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0zNDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTIzMjE9aW50IGtzel9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjIzOTM6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5NC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jPTY4NT1zdGF0aWMgaW50IGxhbjkzN3hfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo3NTY6XHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZHMtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy03NTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0yMzYxPW10NzUzMF9zZXR1cF9tZGlvKHN0cnVjdCBtdDc1MzBfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM5Ni1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzoyMzk3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzOTgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg3LVxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg4ODpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2NoaXAuYy0zODg5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jPTI2Nz1zdGF0aWMgaW50IG14bDg2Mnh4X3NldHVwX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jLTI5Mi1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC5jOjI5MzpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTQtXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYz0xNDk9c3RhdGljIGludCBuZXRjX3BvcnRfY3JlYXRlX2VtZGlvX2J1cyhzdHJ1Y3QgbmV0Y19wb3J0ICpucCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xNzktXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYzoxODA6XHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG5vZGUpO1xuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz05NTc9c3RhdGljIGludCB2c2M5OTU5X21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDEzLVx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxMDE0Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDE1LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYz04Nzg9c3RhdGljIGludCB2c2M5OTUzX21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwMy1cdC8qIE5lZWRlZCBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSBidXMgbXV0ZXggbG9jayAqL1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYzo5MDQ6XHRyYyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgTlVMTCk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwNS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MzU3PXN0YXRpYyBpbnQgYXI5MzMxX3N3X21idXNfaW5pdChzdHJ1Y3QgYXI5MzMxX3N3X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODEtXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjM4MjpcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTM4My1cdG9mX25vZGVfcHV0KG1ucCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9OTQ3PXFjYThrX21kaW9fcmVnaXN0ZXIoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg2LVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6OTg3Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBtZGlvKTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4OC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM9NzQ9aW50IHJ0bDgzeHhfc2V0dXBfdXNlcl9tZGlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmM6MTAwOlx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTEwMS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jPTExMTc9c3RhdGljIGludCBhNXBzd19wcm9iZV9tZGlvKHN0cnVjdCBhNXBzdyAqYTVwc3csIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDMtXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jOjExNDQ6XHRyZXR1cm4gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmMtMTE0NS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oPTMwNz12b2lkIHNqYTExMDVfZnJhbWVfbWVtb3J5X3BhcnRpdGlvbmluZyhzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1LmgtMzA5LS8qIEZyb20gc2phMTEwNV9tZGlvLmMgKi9cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaDozMTA6aW50IHNqYTExMDVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oLTMxMS12b2lkIHNqYTExMDVfbWRpb2J1c191bnJlZ2lzdGVyKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzAyNj1zdGF0aWMgaW50IHNqYTExMDVfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMwNjctXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMDY4Olx0cmMgPSBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoZHMpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2OS1cdGlmIChyYyBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI1OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3R4X3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg3LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mjg4Olx0cmMgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMjg5LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzEyPXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX2Jhc2VfdDFfcmVnaXN0ZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDMtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYzozNDQ6XHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zNDUtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zNjg9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfcGNzX3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk1LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mzk2Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOTctXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz00Mzk9c3RhdGljIHZvaWQgc2phMTEwNV9tZGlvYnVzX3Bjc191bnJlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDU4LVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6NDU5OmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtNDYwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTk1PXl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxMi1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2MTM6XHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYxNC1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTcyNj15dDkyMXhfbWJ1c19leHRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDMtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0Olx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jPTQ1OT1zdGF0aWMgaW50IGF4X21paV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDc4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmM6NDc5Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihheC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jLTQ4MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jPTEzMjE9c3RhdGljIGludCBvd2xfZW1hY19tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYzoxMzQ2Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cdTAwM2VtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz01MDk9c3RhdGljIGludCBhZGluMTExMF9yZWdpc3Rlcl9tZGlvYnVzKHN0cnVjdCBhZGluMTExMF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jLTUyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjUzMDpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTMxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYz02MTc9c3RhdGljIGludCBhZGluMTE0MF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBhZGluMTE0MF9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTYzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jOjYzNzpcdHJldHVybiBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpZGV2LVx1MDAzZWRldiwgcHJpdi1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jLTYzOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYz0xMjkwPXN0YXRpYyBpbnQgZ3JldGhfbWRpb19pbml0KHN0cnVjdCBncmV0aF9wcml2YXRlICpncmV0aClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jLTEzMDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjEzMDc6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGdyZXRoLVx1MDAzZW1kaW8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA4LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jPTM5MzE9c3RhdGljIGludCBldDEzMXhfcGNpX3NldHVwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jLTQwMjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDI3Olx0cmMgPSBtZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXHUwMDNlbWlpX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI4LVx0aWYgKHJjIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTEyMT1zdGF0aWMgaW50IGFsdGVyYV90c2VfbWRpb19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTU4Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtZGlvLCBtZGlvX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1OS1cdGlmIChyZXQgIT0gMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM9MTA2MT1zdGF0aWMgaW50IGF1MTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmMtMTIyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6MTIyMjpcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoYXVwLVx1MDAzZW1paV9idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIzLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9MzQyOD1zdGF0aWMgaW50IHhnYmVfcGh5X2luaXQoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxNy1cdHNucHJpbnRmKG1paS1cdTAwM2VpZCwgc2l6ZW9mKG1paS1cdTAwM2VpZCksIFwmIzM0OyVzXCYjMzQ7LCBkZXZfbmFtZShwZGF0YS1cdTAwM2VkZXYpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcxODpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWlpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcxOS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcyMDpcdFx0ZGV2X2VycihwZGF0YS1cdTAwM2VkZXYsIFwmIzM0O21kaW9idXNfcmVnaXN0ZXIgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcyMS1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jPTk4PWludCB4Z2VfbWRpb19jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMTgtXHRtZGlvX2J1cy1cdTAwM2VwaHlfbWFzayA9IDB4MTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE5Olx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvbWRpby5jLTEyMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYz04Mzc9aW50IHhnZW5lX2VuZXRfcGh5X2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjg4ODpzdGF0aWMgaW50IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IHhnZW5lX2VuZXRfcGRhdGEgKnBkYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODktXHRcdFx0XHQgIHN0cnVjdCBtaWlfYnVzICptZGlvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYzo5MTM6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkxNC1cdFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MjEtXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTIyOlx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1ODpcdHJldCA9IHhnZW5lX21kaW9idXNfcmVnaXN0ZXIocGRhdGEsIG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTU5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYz0xMzE9aW50IGFyY19tZGlvX3Byb2JlKHN0cnVjdCBhcmNfZW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmM6MTczOlx0ZXJyb3IgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbWRpb19ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYy0xNzQtXHRvZl9ub2RlX3B1dChtZGlvX25vZGUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jPTk2Nj1zdGF0aWMgaW50IGF4ODg3OTZjX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FzaXgvYXg4ODc5NmNfbWFpbi5jOjEwMTE6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXHUwMDI2c3BpLVx1MDAzZWRldiwgYXhfbG9jYWwtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEyLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9Njg3PXN0YXRpYyBpbnQgYWc3MXh4X21kaW9fcHJvYmUoc3RydWN0IGFnNzF4eCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjctXHRtbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjcyODpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1paV9idXMsIG1ucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyOS1cdG9mX25vZGVfcHV0KG1ucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjYwOlx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNjEtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM9MTcxMz1zdGF0aWMgaW50IGJjbV9lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jOjE4MzA6XHRcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MzEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYy0yMzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1paV9idXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNy1cdG9mX25vZGVfcHV0KG5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz0xOTM9aW50IGJjbWdlbmV0X21paV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBpbml0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzMy1cdFx0cGh5X25hbWUgPSBcJiMzNDtleHRlcm5hbCBSdk1JSVwmIzM0OztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcdFx0Lyogb2ZfbWRpb2J1c19yZWdpc3RlciB0b29rIGNhcmUgb2YgcmVhZGluZyB0aGUgJiMzOTttYXgtc3BlZWQmIzM5O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtMjM1LVx0XHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYz0yMTU3PXN0YXRpYyBpbnQgc2JtYWNfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGRldiwgbG9uZyBsb25nIGJhc2UpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jLTIyMjctXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyMjI4Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihzYy1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI5LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE1MDU9c3RhdGljIGludCB0ZzNfbWRpb19pbml0KHN0cnVjdCB0ZzMgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTE1NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNTU4Olx0aSA9IG1kaW9idXNfcmVnaXN0ZXIodHAtXHUwMDNlbWRpb19idXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1OS1cdGlmIChpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwOTc6c3RhdGljIGludCBtYWNiX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1hY2IgKmJwLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwOTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNC1cdGlmIChtZGlvX25wKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTA1Olx0XHRyZXR1cm4gb2ZfbWRpb2J1c19yZWdpc3RlcihicC1cdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMTk6XHRcdFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXHUwMDNlbWlpX2J1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTIwLVx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMjI6XHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihicC1cdTAwM2VtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMy19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMTI1PXN0YXRpYyBpbnQgbWFjYl9taWlfaW5pdChzdHJ1Y3QgbWFjYiAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMTU4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMTU5Olx0ZXJyID0gbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKGJwLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE2MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwNTEuYz0xMTA3PXN0YXRpYyBpbnQgZG05MDUxX21kaW9fcmVnaXN0ZXIoc3RydWN0IGJvYXJkX2luZm8gKmRiKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM6MTEyNTpcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcdTAwMjZzcGktXHUwMDNlZGV2LCBkYi1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTI0MjM9c3RhdGljIGludCB0c25lcF9tZGlvX2luaXQoc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTI0NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjQ1NTpcdHJldHZhbCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cdTAwM2VtZGlvYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jPTEwMjQ9c3RhdGljIGludCBldGhvY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM6MTIwODpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cdTAwM2VtZGlvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmMtMTIwOS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE3MzQ9c3RhdGljIGludCBmdGdtYWMxMDBfc2V0dXBfbWRpbyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTc3MDpcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZWRldiwgcHJpdi1cdTAwM2VtaWlfYnVzLCBtZGlvX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc3MS1cdG9mX25vZGVfcHV0KG1kaW9fbnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jPTM2PXN0YXRpYyBpbnQgZW5ldGNfcGNpX21kaW9fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BjaV9tZGlvLmMtOTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYzo5MTpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBkZXYtXHUwMDNlb2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTI2Nj1zdGF0aWMgaW50IGVuZXRjX21kaW9fcHJvYmUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjI5MzpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMjk0LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzA4PXN0YXRpYyBpbnQgZW5ldGNfaW1kaW9fY3JlYXRlKHN0cnVjdCBlbmV0Y19wZiAqcGYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDM6XHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQ0LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTMwNDI9c3RhdGljIGludCBmZWNfZW5ldF9taWlfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMTYxOlx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihmZXAtXHUwMDNlbWlpX2J1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy0zMTYyLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM9NjU9c3RhdGljIGludCBtcGM1Mnh4X2ZlY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21wYzUyeHhfcGh5LmM6MTA2Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM9MTQ5PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYzoxNzY6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM9OTc9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWZlYy5jLTE2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYzoxNjc6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIG9mZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jPTQwOT1zdGF0aWMgaW50IGZzbF9wcV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmMtNDkzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM6NDk0Olx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTUtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYz0zNzE9c3RhdGljIGludCB4Z21hY19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjYtXHRpZiAoaXNfb2Zfbm9kZShmd25vZGUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjc6XHRcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCB0b19vZl9ub2RlKGZ3bm9kZSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjgtXHRlbHNlIGlmIChpc19hY3BpX25vZGUoZndub2RlKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmM6NDI5Olx0XHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBmd25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MzAtXHRlbHNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yNjY9aW50IGhiZ19tZGlvX2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjkxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyOTI6XHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtZGlvX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jPTEwOTQ9c3RhdGljIGludCBoaXg1aGQyX2Rldl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpeDVoZDJfZ21hYy5jOjExODY6XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYz0xMjM9aW50IGhjbGdlX21hY19tZGlvX2NvbmZpZyhzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU0LVx0bWRpb19idXMtXHUwMDNlcGh5X21hc2sgPSB+KDFVIFx1MDAzY1x1MDAzYyBtYWMtXHUwMDNlcGh5X2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYzoxNTU6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tZGlvLmMtMTU2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jPTQ5NT1zdGF0aWMgaW50IGhuc19tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmM6NTg0Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTg1LVx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cdTAwM2VkZXYuZndub2RlKSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5Mi1cdFx0LyogUmVnaXN0ZXIgdGhlIE1ESU8gYnVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1OTM6XHRcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobmV3X2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTQtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODQtXHRzbnByaW50ZihidXMtXHUwMDNlaWQsIE1JSV9CVVNfSURfU0laRSwgXCYjMzQ7JXNcJiMzNDssIGRldi1cdTAwM2VvZmRldi1cdTAwM2VuYW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1Olx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKFx1MDAyNmRldi1cdTAwM2VvZmRldi1cdTAwM2VkZXYsIGJ1cywgbWlpX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNTg2LVx0aWYgKHJlcykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jPTEwMjY9aW50IGl4Z2JlX21paV9idXNfaW5pdChzdHJ1Y3QgaXhnYmVfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwODgtXHRhZGFwdGVyLVx1MDAzZW1paV9idXMgPSBidXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYzoxMDg5Olx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwOTAtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM9Mzg1PWx0cV9ldG9wX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDAyLVx0XHQgcHJpdi1cdTAwM2VwZGV2LVx1MDAzZW5hbWUsIHByaXYtXHUwMDNlcGRldi1cdTAwM2VpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jOjQwMzpcdGlmIChtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWlpX2J1cykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmMtNDA0LVx0XHRlcnIgPSAtRU5YSU87XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYz0yODM9c3RhdGljIGludCBvcmlvbl9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODEtXHQvKiBGb3IgdGhlIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBEVC9BQ1BJIGZhbGwtYmFja1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODI6XHQgKiB0byBtZGlvYnVzX3JlZ2lzdGVyIHZpYSBvZl9tZGlvYnVzX3JlZ2lzdGVyLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODMtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmMtMzg0LVx0aWYgKGlzX2FjcGlfbm9kZShwZGV2LVx1MDAzZWRldi5md25vZGUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODU6XHRcdHJldCA9IGFjcGlfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4Ni1cdGVsc2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6Mzg3Olx0XHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgcGRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4OC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYz0xMzg3PXN0YXRpYyBpbnQgcHhhMTY4X2V0aF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDQtXHRwZXAtXHUwMDNlc21pX2J1cy1cdTAwM2VwaHlfbWFzayA9IDB4ZmZmZmZmZmY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYzoxNTA1Olx0ZXJyID0gbWRpb2J1c19yZWdpc3RlcihwZXAtXHUwMDNlc21pX2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYy0xNTA2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTk5OD1zdGF0aWMgaW50IG10a19tZGlvX2luaXQoc3RydWN0IG10a19ldGggKmV0aClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzctXHRkZXZfZGJnKGV0aC1cdTAwM2VkZXYsIFwmIzM0O01EQyBpcyBydW5uaW5nIG9uICVkIEh6XFxuXCYjMzQ7LCBNRENfTUFYX0ZSRVEgLyBldGgtXHUwMDNlbWRjX2RpdmlkZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzoxMDM4Olx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihldGgtXHUwMDNlbWlpX2J1cywgbWlpX25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtMTAzOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM9MTQyMj1zdGF0aWMgaW50IG10a19zdGFyX21kaW9faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19zdGFyX2VtYWMuYzoxNDQ4Olx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgcHJpdi1cdTAwM2VtaWksIG1kaW9fbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jPTI4Nz1pbnQgbWx4YmZfZ2lnZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBtbHhiZl9naWdlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seGJmX2dpZ2UvbWx4YmZfZ2lnZV9tZGlvLmMtMzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYzozMzM6XHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXHUwMDNlbWRpb2J1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzNC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM9MjUzPWludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmMtMjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM6MjczOlx0ZXJyID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKGZiZC1cdTAwM2VkZXYsIGJ1cyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYy0yNzQtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYz0xMDM2PXN0YXRpYyBpbnQga3M4ODUxX3JlZ2lzdGVyX21kaW9idXMoc3RydWN0IGtzODg1MV9uZXQgKmtzLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYzoxMDUzOlx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfY29tbW9uLmMtMTA1NC1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jOjEwNTU6XHRcdGdvdG8gZXJyX21kaW9idXNfcmVnaXN0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYzoxMDYxOmVycl9tZGlvYnVzX3JlZ2lzdGVyOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDYyLVx0bWRpb2J1c19mcmVlKG1paV9idXMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0xMzc5PXN0YXRpYyBpbnQgbGFuNzQzeF9od19yZXNldF9waHkoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTM4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzoxMzgzOlx0LyogT25seSBjYWxsZWQgd2l0aCBpbiBwcm9iZSwgYW5kIGJlZm9yZSBtZGlvYnVzX3JlZ2lzdGVyICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMTM4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzYyOD1zdGF0aWMgaW50IGxhbjc0M3hfbWRpb2J1c19pbml0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM2NzEtXHQvKiByZWdpc3RlciBtZGlvYnVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzY3MjpcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIoYWRhcHRlci1cdTAwM2VtZGlvYnVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNjczLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jPTEyMTI9c3RhdGljIGludCBuaXhnZV9tZGlvX3NldHVwKHN0cnVjdCBuaXhnZV9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTIzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6MTIzMTpcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy0xMjMyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jPTc5MD1zdGF0aWMgaW50IGxwY19taWlfaW5pdChzdHJ1Y3QgbmV0ZGF0YV9sb2NhbCAqcGxkYXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbnhwL2xwY19ldGguYy04MjAtXHRub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocGxkYXQtXHUwMDNlcGRldi1cdTAwM2VkZXYub2Zfbm9kZSwgXCYjMzQ7bWRpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jOjgyMTpcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIocGxkYXQtXHUwMDNlbWlpX2J1cywgbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jLTgyMi1cdG9mX25vZGVfcHV0KG5vZGUpO1xuLS1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NTI3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IE1ESU8gQnVzIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBnZXQgc3l6a2FsbGVyIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIHByb2JlIG9mIHRoaXMgUEhZIGRyaXZlciBJJiMzOTttIGludGVyZXN0ZWQgaW4uIFRoZSBsYW5kc2NhcGUgb2YgTURJTyBidXMgZHJpdmVycyBpcyBwcmV0dHkgZXh0ZW5zaXZlLCBidXQgdGhlIGNvcmUgaXNzdWUgaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIGV2ZW4gKmNyZWF0ZSogYW4gTURJTyBidXMgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciB0cmljayB0aGUga2VybmVsIGludG8gZG9pbmcgc28uIFN5emthbGxlciwgaW4gbXkgZXhwZXJpZW5jZSwgbGVhbnMgaGVhdmlseSBvbiB2aXJ0dWFsIGRldmljZXMgbGlrZSBgdHVuYCwgYHRhcGAsIHRoZSBgbmV0ZGV2c2ltYCBmYW1pbHksIGFuZCBvdGhlcnMuIEkgYWxyZWFkeSBjaGVja2VkOiBgbmV0ZGV2c2ltYCBkb2VzbiYjMzk7dCByZWdpc3RlciBhbiBNRElPIGJ1cy4gU28sIGFyZSAqYW55KiBvZiB0aGUgdmlydHVhbCBkcml2ZXJzIGRvaW5nIHRoaXM/CgpMZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gQXJlIHRoZXJlIGFueSAqdmlydHVhbCogTURJTyBidXMgZHJpdmVycyB0aGVtc2VsdmVzPyBBaGEsIGBkcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmNgIHJlZ2lzdGVycyBhIGZpeGVkIE1ESU8gYnVzLCBhbmQgdGhlbiB0aGVyZSYjMzk7cyBgZHJpdmVycy9uZXQvcGh5L21kaW8tbW9jay5jYCBhbmQgYGRyaXZlcnMvbmV0L3BoeS9tZGlvLWdwaW8uY2AuIE9rYXksIHBvdGVudGlhbCBzdGFydGluZyBwb2ludHMuCgpCdXQgdGhlbiBJIHN0YXJ0IHRvIHdvbmRlciwgY2FuIGEgdXNlci1zcGFjZSBwcm9jZXNzIGV2ZW4gKmluc3RhbnRpYXRlKiBhIFBIWSBkcml2ZXIgZGlyZWN0bHk/IE5vLCB0aGF0JiMzOTtzIG5vdCBob3cgaXQgd29ya3MuIFBIWSBkcml2ZXJzIGFyZSBtYXRjaGVkIGJhc2VkIG9uIHRoZSBQSFkgSUQsIHJlYWQgZnJvbSB0aGUgUEhZIGhhcmR3YXJlIHJlZ2lzdGVycywgYW5kIHNpbmNlIHRoZXJlJiMzOTtzIG5vIHJlYWwgaGFyZHdhcmUgaGVyZSwgdGhlIE1ESU8gYnVzIGlzIGdvaW5nIHRvIHJlYWQgZ2FyYmFnZSAocHJvYmFibHkgMHhmZmZmIG9yIDB4MDAwMCksIHdoaWNoIHdvbiYjMzk7dCBtYXRjaCB0aGUgTWVkaWFUZWsgUEhZIElEICgweDAzYTI5NDkxKSBJJiMzOTttIHRhcmdldGluZy4KCldhaXTigKYgd2hhdCBhYm91dCB0aGUgZGV2aWNlIHRyZWU/IENhbiB0aGUgUEhZIElEIGJlIHNwZWNpZmllZCB0aGVyZT8gRGFtbiwgc3l6a2FsbGVyIGRvZXNuJiMzOTt0IHRvdWNoIHRoZSBkZXZpY2UgdHJlZSBhdCBydW50aW1lLiBTbywgSSYjMzk7bSBzdHVjay4gVGhlIFBIWSBkcml2ZXIgd2lsbCBuZXZlciBiZSBwcm9iZWQuCgpPa2F5LCBtYXliZSBJJiMzOTttIGFwcHJvYWNoaW5nIHRoaXMgZnJvbSB0aGUgd3JvbmcgYW5nbGUuIENhbiB1c2Vyc3BhY2UsIHNvbWVob3csIGNyZWF0ZSBhIFBIWSBkZXZpY2UgdmlhIHN5c2ZzPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGBtZGlvX2J1c2AuIElmIEkgY2FuJiMzOTt0IGZpbmQgYSBmaWxlLWJhY2tlZCBkZXZpY2UsIEkgd29uJiMzOTt0IGJlIGFibGUgdG8gaW5zdGFudGlhdGUgb25lLiBTbyBJIGNoZWNrLCBjYW4gSSBqdXN0IGRvIGFuIGBlY2hvICYjMzQ7cGh5X2lkJiMzNDsgJmd0OyAvc3lzL2J1cy9tZGlvX2J1cy9kZXZpY2VzLy4uLmA/IE5vcGUsIHRoZSBNRElPIGJ1cyBkb2VzbiYjMzk7dCBoYXZlIGEgYG5ld19kZXZpY2VgIGF0dHJpYnV0ZSBsaWtlIEkyQyBvciBTUEkuIEkgbmVlZCB0byBkaXZlIGludG8gYGRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jYCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNsZXZlciB0cmlja2VyeSBJIGNhbiB1c2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV3X2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1MjEKCQkJCQkJCW91dHB1dDogMTEwCgkJCQkJCQl0aG91Z2h0czogNjUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IENvZGUgVW5yZWFjaGFibGUgaW4gU3RhbmRhcmQgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXJlJiMzOTtzIGFic29sdXRlbHkgbm8gcGF0aCB0byB0aGlzIGNvZGUgaW4gYSBzdGFuZGFyZCwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBHQ0Ugb3IgUUVNVS4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIFBIWSBkZXZpY2Ug4oCTIHRoZSBNZWRpYVRlay9FY29OZXQgRU43NTI4IOKAkyBhbmQgdGhlcmUmIzM5O3Mgbm8gd2F5IHRvIGluc3RhbnRpYXRlIHRoYXQgZnJvbSB1c2Vyc3BhY2UuIFRoZSBjcml0aWNhbCBmdW5jdGlvbiwgYGVuNzUyOF9waHlfY29uZmlnX2luaXRgLCBhbG9uZyB3aXRoIHRoZSBjb3JlIE1lZGlhVGVrIFBIWSBkcml2ZXIgY29kZSwgaXMgaW50cmluc2ljYWxseSB0aWVkIHRvIHRoZSBoYXJkd2FyZSBvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucy4gV2l0aG91dCB0aG9zZSBlbGVtZW50cywgd2UmIzM5O3JlIGRlYWQgaW4gdGhlIHdhdGVyLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGlzIGJ5IHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgZW43NTI4X3BoeV9jb25maWdfaW5pdGAsIGFuZCBpdCYjMzk7cyBjbGVhciB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGR1cmluZyB0aGUgUEhZIGRldmljZSYjMzk7cyBwcm9iZSBhbmQgaW5pdGlhbGl6YXRpb24uIFRoaXMgUEhZIGRldmljZSBvbmx5IGdldHMgY3JlYXRlZCBpZiB0aGUgTURJTyBidXMgc3VjY2Vzc2Z1bGx5IGlkZW50aWZpZXMgdGhlIGhhcmR3YXJlIGJ5IElELCBvciBpZiB0aGUgc3lzdGVtIHVzZXMgYW4gZXhwbGljaXQgZGV2aWNlIHRyZWUgZW50cnkuIFNpbmNlIHN5emthbGxlciBhbmQgb3RoZXIgZnV6emluZyB0b29scyBydW4gaW4gc3RhbmRhcmQgUUVNVSAoeDg2XzY0IG9yIGFybTY0IHZpcnQpICp3aXRob3V0KiB0aGlzIGhhcmR3YXJlIG9yIHRoZSBjb3JyZXNwb25kaW5nIGRldmljZSB0cmVlLCB0aGUgUEhZIGRldmljZSAqd2lsbCBuZXZlciBiZSBjcmVhdGVkKi4gQ29uc2VxdWVudGx5LCB0aGUgZHJpdmVyIHdpbGwgbm90IGJlIHByb2JlZCwgYW5kIGBlbjc1MjhfcGh5X2NvbmZpZ19pbml0YCB3aWxsIG5ldmVyIGV4ZWN1dGUuCgpUaGUgcHJvbXB0IGV4cGxpY2l0bHkgdGVsbHMgbWUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIGltcG9zc2libGUgdG8gaGl0IGluIHRoZXNlIGVudmlyb25tZW50cywgZXZlbiBpZiBoYXJkd2FyZSBpcyBlbXVsYXRlZC4gVGhpcyBwYXRjaCBmaXRzIHRoZSBjcml0ZXJpYSBwZXJmZWN0bHkuIEl0JiMzOTtzIGRlc2lnbmVkIGZvciBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgUEhZIChNZWRpYVRlay9FY29OZXQgRU43NTI4KSwgYW5kIGNhbiYjMzk7dCBiZSByZWFjaGVkIGluIHRoZSBzdGFuZGFyZCwgZ2VuZXJpYyBRRU1VIGVudmlyb25tZW50IHVzZWQgYnkgZnV6emluZy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHJlLWNoZWNrIG9mIHRoZSBwYXRjaCBpdHNlbGYuCgpgYGBjCiYjNDM7c3RhdGljIGludCBlbjc1MjhfcGh5X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwkvKiBUaGUgTEVEIGNvbnRyb2xsZXIgb2YgdGhlIEVONzUyOCBwb3dlcnMgdXAgd2l0aCBpdHMgZXh0ZXJuYWwKJiM0MzsJICogY29udHJvbCBkaXNhYmxlZCwgbGVhdmluZyB0aGUgTEVEIHBpbnMgZGFyayByZWdhcmRsZXNzIG9mIHdoYXQgaXMKJiM0MzsJICogcHJvZ3JhbW1lZCBpbnRvIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMuIEhhbmQgdGhlIHBpbnMgb3ZlciB0bwomIzQzOwkgKiB0aGUgTEVEIGNvbnRyb2wgcmVnaXN0ZXJzIHRoZSBzYW1lIHdheSB0aGUgYWlyX2VuODgxMWggZHJpdmVyCiYjNDM7CSAqIGRvZXM7IHRoZSBtb2RlIGZpZWxkIG9mIHRoaXMgcmVnaXN0ZXIgaXMgYWxyZWFkeSBzZXQgb3V0IG9mIHJlc2V0LgomIzQzOwkgKi8KJiM0MzsJcmV0dXJuIHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTVRLX1BIWV9MRURfQkNSLAomIzQzOwkJCQlNVEtfUEhZX0xFRF9CQ1JfQ0xLX0VOIHwKJiM0MzsJCQkJTVRLX1BIWV9MRURfQkNSX0VYVF9DVFJMKTsKJiM0Mzt9CmBgYAoKWWVhaCwgaXQmIzM5O3MganVzdCBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGVyZSYjMzk7cyBubyB3YXkgdGhpcyBpcyByZWFjaGFibGUgd2l0aGluIGEgZ2VuZXJpYyBRRU1VIGVudmlyb25tZW50LgoKVGhlcmVmb3JlLCB0aGUgZmluYWwgZGVjaXNpb24gaXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgdXBkYXRlZCBjb2RlIHBlcnRhaW5zIHRvIGEgcGFydGljdWxhciBwaWVjZSBvZiBoYXJkd2FyZSB3aGljaCBpc24mIzM5O3QgcHJlc2VudCBpbiBnZW5lcmljIHZpcnR1YWxpemF0aW9uIHNldHVwcywgYW5kIHRoZSBuZXcgY29kZSBwYXRocyBjYW5ub3QgYmUgY292ZXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTE6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgRXRoZXJuZXQgUEhZIChFY29OZXQgRU43NTI4KS4gUEhZIGRyaXZlcnMgYXJlIHByb2JlZCBiYXNlZCBvbiBoYXJkd2FyZSBJRHMgcmVhZCBmcm9tIHRoZSBNRElPIGJ1cyBvciB2aWEgZGV2aWNlIHRyZWUgbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBFdGhlcm5ldCBQSFkgKEVjb05ldCBFTjc1MjgpLiBQSFkgZHJpdmVycyBhcmUgcHJvYmVkIGJhc2VkIG9uIGhhcmR3YXJlIElEcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzIG9yIHZpYSBkZXZpY2UgdHJlZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjE1LjM0MDYwOTUyN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NDk2NTQxNjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGEgc3BlY2lmaWMgaGFyZHdhcmUgRXRoZXJuZXQgUEhZIChFY29OZXQgRU43NTI4KS4gUEhZIGRyaXZlcnMgYXJlIHByb2JlZCBiYXNlZCBvbiBoYXJkd2FyZSBJRHMgcmVhZCBmcm9tIHRoZSBNRElPIGJ1cyBvciB2aWEgZGV2aWNlIHRyZWUgbm9kZXMuIFNpbmNlIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUpIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIGZyb20gdXNlcnNwYWNlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjE1LjM0MDYxNjEzN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3NDM4MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzczZWQ4MTBiMTYxY2JmMzNlMTAzMDljYzJjYTM1YzU3YWNlYjBiMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDExOjQwOjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWdcXG5pbmRleCBiYjdkYzg3NjI3MWU4Li5iNmQ0MWJiYmJjMjdmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWdcXG5AQCAtMjMsOSArMjMsOSBAQCBjb25maWcgTUVESUFURUtfR0VfUEhZXFxuIFxcbiBjb25maWcgTUVESUFURUtfR0VfU09DX1BIWVxcbiBcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgU29DIEV0aGVybmV0IFBIWXNcXFwiXFxuLVxcdGRlcGVuZHMgb24gQVJNNjQgfHwgQ09NUElMRV9URVNUXFxuK1xcdGRlcGVuZHMgb24gQVJNNjQgfHwgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxcbiBcXHRkZXBlbmRzIG9uIEFSQ0hfQUlST0hBIHx8IChBUkNIX01FRElBVEVLIFxcdTAwMjZcXHUwMDI2IE5WTUVNX01US19FRlVTRSkgfHwgXFxcXFxcbi1cXHRcXHQgICBDT01QSUxFX1RFU1RcXG4rXFx0XFx0ICAgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxcbiBcXHRzZWxlY3QgTVRLX05FVF9QSFlMSUJcXG4gXFx0c2VsZWN0IFBIWV9QQUNLQUdFXFxuIFxcdGhlbHBcXG5AQCAtMzYsNSArMzYsOSBAQCBjb25maWcgTUVESUFURUtfR0VfU09DX1BIWVxcbiBcXHQgIHByZXNlbnQgaW4gdGhlIFNvQ3MgZWZ1c2UgYW5kIHdpbGwgZHluYW1pY2FsbHkgY2FsaWJyYXRlIFZDTVxcbiBcXHQgIChjb21tb24tbW9kZSB2b2x0YWdlKSBkdXJpbmcgc3RhcnR1cC5cXG4gXFxuK1xcdCAgQWxzbyBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBidWlsdC1pbiBHaWdhYml0IEV0aGVybmV0IFBIWXMgb2ZcXG4rXFx0ICB0aGUgQWlyb2hhIEFONzU4MSBhbmQgQU43NTgzIFNvQ3MgYW5kIG9mIHRoZSBFY29OZXQgRU43NTI4IFNvQyxcXG4rXFx0ICB3aGljaCBuZWVkIG5vIGVmdXNlIGNhbGlicmF0aW9uIGRhdGEuXFxuK1xcbiBjb25maWcgTVRLX05FVF9QSFlMSUJcXG4gXFx0dHJpc3RhdGVcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuYyBiL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmNcXG5pbmRleCA5YTU0OTQ5NjQ0ZDVhLi4wMDQxMzAwZDRmMTAxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmNcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jXFxuQEAgLTE2LDYgKzE2LDcgQEBcXG4gXFxuICNkZWZpbmUgTVRLX0dQSFlfSURfTVQ3OTgxXFx0XFx0XFx0MHgwM2EyOTQ2MVxcbiAjZGVmaW5lIE1US19HUEhZX0lEX01UNzk4OFxcdFxcdFxcdDB4MDNhMjk0ODFcXG4rI2RlZmluZSBNVEtfR1BIWV9JRF9FTjc1MjhcXHRcXHRcXHQweDAzYTI5NDkxXFxuICNkZWZpbmUgTVRLX0dQSFlfSURfQU43NTgxXFx0XFx0XFx0MHgwM2EyOTRjMVxcbiAjZGVmaW5lIE1US19HUEhZX0lEX0FONzU4M1xcdFxcdFxcdDB4YzBmZjA0MjBcXG4gXFxuQEAgLTMyMCw2ICszMjEsMTQgQEBcXG4gLyogUmVnaXN0ZXJzIG9uIE1ESU9fTU1EX1ZFTkQyICovXFxuICNkZWZpbmUgTVRLX1BIWV9MRUQxX0RFRkFVTFRfUE9MQVJJVElFU1xcdFxcdEJJVCgxKVxcbiBcXG4rLyogTEVEIGJhc2ljIGNvbnRyb2wgcmVnaXN0ZXIsIHBhcnQgb2YgdGhlIHNhbWUgTEVEIGJsb2NrIGFzIHRoZSBMRUQwL0xFRDFcXG4rICogY29udHJvbCByZWdpc3RlcnMgYWJvdmUuIFRoZSBhaXJfZW44ODExaCBkcml2ZXIgZGVzY3JpYmVzIHRoZSBzYW1lXFxuKyAqIHJlZ2lzdGVyIGFzIEFJUl9QSFlfTEVEX0JDUi5cXG4rICovXFxuKyNkZWZpbmUgTVRLX1BIWV9MRURfQkNSXFx0XFx0XFx0XFx0MHgyMVxcbisjZGVmaW5lICAgTVRLX1BIWV9MRURfQkNSX0NMS19FTlxcdFxcdEJJVCgzKVxcbisjZGVmaW5lICAgTVRLX1BIWV9MRURfQkNSX0VYVF9DVFJMXFx0XFx0QklUKDE1KVxcbitcXG4gI2RlZmluZSBNVEtfUEhZX1JHX0JHX1JBU0VMXFx0XFx0XFx0MHgxMTVcXG4gI2RlZmluZSAgIE1US19QSFlfUkdfQkdfUkFTRUxfTUFTS1xcdFxcdEdFTk1BU0soMiwgMClcXG4gXFxuQEAgLTE0NzAsNiArMTQ3OSwxOSBAQCBzdGF0aWMgaW50IGFuNzU4M19waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0cmV0dXJuIHBoeV9jbGVhcl9iaXRzKHBoeWRldiwgTUlJX0JNQ1IsIEJNQ1JfUERPV04pO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGVuNzUyOF9waHlfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHQvKiBUaGUgTEVEIGNvbnRyb2xsZXIgb2YgdGhlIEVONzUyOCBwb3dlcnMgdXAgd2l0aCBpdHMgZXh0ZXJuYWxcXG4rXFx0ICogY29udHJvbCBkaXNhYmxlZCwgbGVhdmluZyB0aGUgTEVEIHBpbnMgZGFyayByZWdhcmRsZXNzIG9mIHdoYXQgaXNcXG4rXFx0ICogcHJvZ3JhbW1lZCBpbnRvIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMuIEhhbmQgdGhlIHBpbnMgb3ZlciB0b1xcbitcXHQgKiB0aGUgTEVEIGNvbnRyb2wgcmVnaXN0ZXJzIHRoZSBzYW1lIHdheSB0aGUgYWlyX2VuODgxMWggZHJpdmVyXFxuK1xcdCAqIGRvZXM7IHRoZSBtb2RlIGZpZWxkIG9mIHRoaXMgcmVnaXN0ZXIgaXMgYWxyZWFkeSBzZXQgb3V0IG9mIHJlc2V0LlxcbitcXHQgKi9cXG4rXFx0cmV0dXJuIHBoeV9zZXRfYml0c19tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgTVRLX1BIWV9MRURfQkNSLFxcbitcXHRcXHRcXHRcXHRNVEtfUEhZX0xFRF9CQ1JfQ0xLX0VOIHxcXG4rXFx0XFx0XFx0XFx0TVRLX1BIWV9MRURfQkNSX0VYVF9DVFJMKTtcXG4rfVxcbitcXG4gc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG10a19zb2NwaHlfZHJpdmVyW10gPSB7XFxuIFxcdHtcXG4gXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSksXFxuQEAgLTE1MDUsNiArMTUyNywxOCBAQCBzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgbXRrX3NvY3BoeV9kcml2ZXJbXSA9IHtcXG4gXFx0XFx0LmxlZF9od19jb250cm9sX3NldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbiBcXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuIFxcdH0sXFxuK1xcdHtcXG4rXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0VONzUyOCksXFxuK1xcdFxcdC5uYW1lXFx0XFx0PSBcXFwiRWNvTmV0IEVONzUyOCBQSFlcXFwiLFxcbitcXHRcXHQuY29uZmlnX2luaXRcXHQ9IGVuNzUyOF9waHlfY29uZmlnX2luaXQsXFxuK1xcdFxcdC5wcm9iZVxcdFxcdD0gYW43NTgxX3BoeV9wcm9iZSxcXG4rXFx0XFx0LmxlZF9ibGlua19zZXRcXHQ9IG10Nzk4eF9waHlfbGVkX2JsaW5rX3NldCxcXG4rXFx0XFx0LmxlZF9icmlnaHRuZXNzX3NldCA9IG10Nzk4eF9waHlfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbitcXHRcXHQubGVkX2h3X2lzX3N1cHBvcnRlZCA9IG10Nzk4eF9waHlfbGVkX2h3X2lzX3N1cHBvcnRlZCxcXG4rXFx0XFx0LmxlZF9od19jb250cm9sX3NldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbitcXHRcXHQubGVkX2h3X2NvbnRyb2xfZ2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9nZXQsXFxuK1xcdFxcdC5sZWRfcG9sYXJpdHlfc2V0ID0gYW43NTgxX3BoeV9sZWRfcG9sYXJpdHlfc2V0LFxcbitcXHR9LFxcbiBcXHR7XFxuIFxcdFxcdFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9BTjc1ODEpLFxcbiBcXHRcXHQubmFtZVxcdFxcdD0gXFxcIkFpcm9oYSBBTjc1ODEgUEhZXFxcIixcXG5AQCAtMTUzNyw2ICsxNTcxLDcgQEAgbW9kdWxlX3BoeV9kcml2ZXIobXRrX3NvY3BoeV9kcml2ZXIpO1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIG10a19zb2NwaHlfdGJsW10gPSB7XFxuIFxcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSkgfSxcXG4gXFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3OTg4KSB9LFxcbitcXHR7IFBIWV9JRF9NQVRDSF9FWEFDVChNVEtfR1BIWV9JRF9FTjc1MjgpIH0sXFxuIFxcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSkgfSxcXG4gXFx0eyBQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgzKSB9LFxcbiBcXHR7IH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6MTUuNzc4NzMzNjAzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDgwNTg0MTA1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBFdGhlcm5ldCBQSFkgKEVjb05ldCBFTjc1MjgpLiBQSFkgZHJpdmVycyBhcmUgcHJvYmVkIGJhc2VkIG9uIGhhcmR3YXJlIElEcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzIG9yIHZpYSBkZXZpY2UgdHJlZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzczZWQ4MTBiMTYxY2JmMzNlMTAzMDljYzJjYTM1YzU3YWNlYjBiMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTE6NDA6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnXG5pbmRleCBiYjdkYzg3NjI3MWU4Li5iNmQ0MWJiYmJjMjdmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL0tjb25maWdcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9LY29uZmlnXG5AQCAtMjMsOSArMjMsOSBAQCBjb25maWcgTUVESUFURUtfR0VfUEhZXG4gXG4gY29uZmlnIE1FRElBVEVLX0dFX1NPQ19QSFlcbiBcdHRyaXN0YXRlIFwiTWVkaWFUZWsgU29DIEV0aGVybmV0IFBIWXNcIlxuLVx0ZGVwZW5kcyBvbiBBUk02NCB8fCBDT01QSUxFX1RFU1RcbitcdGRlcGVuZHMgb24gQVJNNjQgfHwgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxuIFx0ZGVwZW5kcyBvbiBBUkNIX0FJUk9IQSB8fCAoQVJDSF9NRURJQVRFSyBcdTAwMjZcdTAwMjYgTlZNRU1fTVRLX0VGVVNFKSB8fCBcXFxuLVx0XHQgICBDT01QSUxFX1RFU1RcbitcdFx0ICAgRUNPTkVUIHx8IENPTVBJTEVfVEVTVFxuIFx0c2VsZWN0IE1US19ORVRfUEhZTElCXG4gXHRzZWxlY3QgUEhZX1BBQ0tBR0VcbiBcdGhlbHBcbkBAIC0zNiw1ICszNiw5IEBAIGNvbmZpZyBNRURJQVRFS19HRV9TT0NfUEhZXG4gXHQgIHByZXNlbnQgaW4gdGhlIFNvQ3MgZWZ1c2UgYW5kIHdpbGwgZHluYW1pY2FsbHkgY2FsaWJyYXRlIFZDTVxuIFx0ICAoY29tbW9uLW1vZGUgdm9sdGFnZSkgZHVyaW5nIHN0YXJ0dXAuXG4gXG4rXHQgIEFsc28gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgYnVpbHQtaW4gR2lnYWJpdCBFdGhlcm5ldCBQSFlzIG9mXG4rXHQgIHRoZSBBaXJvaGEgQU43NTgxIGFuZCBBTjc1ODMgU29DcyBhbmQgb2YgdGhlIEVjb05ldCBFTjc1MjggU29DLFxuK1x0ICB3aGljaCBuZWVkIG5vIGVmdXNlIGNhbGlicmF0aW9uIGRhdGEuXG4rXG4gY29uZmlnIE1US19ORVRfUEhZTElCXG4gXHR0cmlzdGF0ZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstZ2Utc29jLmMgYi9kcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLXNvYy5jXG5pbmRleCA5YTU0OTQ5NjQ0ZDVhLi4wMDQxMzAwZDRmMTAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L21lZGlhdGVrL210ay1nZS1zb2MuY1xuQEAgLTE2LDYgKzE2LDcgQEBcbiBcbiAjZGVmaW5lIE1US19HUEhZX0lEX01UNzk4MVx0XHRcdDB4MDNhMjk0NjFcbiAjZGVmaW5lIE1US19HUEhZX0lEX01UNzk4OFx0XHRcdDB4MDNhMjk0ODFcbisjZGVmaW5lIE1US19HUEhZX0lEX0VONzUyOFx0XHRcdDB4MDNhMjk0OTFcbiAjZGVmaW5lIE1US19HUEhZX0lEX0FONzU4MVx0XHRcdDB4MDNhMjk0YzFcbiAjZGVmaW5lIE1US19HUEhZX0lEX0FONzU4M1x0XHRcdDB4YzBmZjA0MjBcbiBcbkBAIC0zMjAsNiArMzIxLDE0IEBAXG4gLyogUmVnaXN0ZXJzIG9uIE1ESU9fTU1EX1ZFTkQyICovXG4gI2RlZmluZSBNVEtfUEhZX0xFRDFfREVGQVVMVF9QT0xBUklUSUVTXHRcdEJJVCgxKVxuIFxuKy8qIExFRCBiYXNpYyBjb250cm9sIHJlZ2lzdGVyLCBwYXJ0IG9mIHRoZSBzYW1lIExFRCBibG9jayBhcyB0aGUgTEVEMC9MRUQxXG4rICogY29udHJvbCByZWdpc3RlcnMgYWJvdmUuIFRoZSBhaXJfZW44ODExaCBkcml2ZXIgZGVzY3JpYmVzIHRoZSBzYW1lXG4rICogcmVnaXN0ZXIgYXMgQUlSX1BIWV9MRURfQkNSLlxuKyAqL1xuKyNkZWZpbmUgTVRLX1BIWV9MRURfQkNSXHRcdFx0XHQweDIxXG4rI2RlZmluZSAgIE1US19QSFlfTEVEX0JDUl9DTEtfRU5cdFx0QklUKDMpXG4rI2RlZmluZSAgIE1US19QSFlfTEVEX0JDUl9FWFRfQ1RSTFx0XHRCSVQoMTUpXG4rXG4gI2RlZmluZSBNVEtfUEhZX1JHX0JHX1JBU0VMXHRcdFx0MHgxMTVcbiAjZGVmaW5lICAgTVRLX1BIWV9SR19CR19SQVNFTF9NQVNLXHRcdEdFTk1BU0soMiwgMClcbiBcbkBAIC0xNDcwLDYgKzE0NzksMTkgQEAgc3RhdGljIGludCBhbjc1ODNfcGh5X2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHRyZXR1cm4gcGh5X2NsZWFyX2JpdHMocGh5ZGV2LCBNSUlfQk1DUiwgQk1DUl9QRE9XTik7XG4gfVxuIFxuK3N0YXRpYyBpbnQgZW43NTI4X3BoeV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdC8qIFRoZSBMRUQgY29udHJvbGxlciBvZiB0aGUgRU43NTI4IHBvd2VycyB1cCB3aXRoIGl0cyBleHRlcm5hbFxuK1x0ICogY29udHJvbCBkaXNhYmxlZCwgbGVhdmluZyB0aGUgTEVEIHBpbnMgZGFyayByZWdhcmRsZXNzIG9mIHdoYXQgaXNcbitcdCAqIHByb2dyYW1tZWQgaW50byB0aGUgTEVEIGNvbnRyb2wgcmVnaXN0ZXJzLiBIYW5kIHRoZSBwaW5zIG92ZXIgdG9cbitcdCAqIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMgdGhlIHNhbWUgd2F5IHRoZSBhaXJfZW44ODExaCBkcml2ZXJcbitcdCAqIGRvZXM7IHRoZSBtb2RlIGZpZWxkIG9mIHRoaXMgcmVnaXN0ZXIgaXMgYWxyZWFkeSBzZXQgb3V0IG9mIHJlc2V0LlxuK1x0ICovXG4rXHRyZXR1cm4gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNVEtfUEhZX0xFRF9CQ1IsXG4rXHRcdFx0XHRNVEtfUEhZX0xFRF9CQ1JfQ0xLX0VOIHxcbitcdFx0XHRcdE1US19QSFlfTEVEX0JDUl9FWFRfQ1RSTCk7XG4rfVxuK1xuIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBtdGtfc29jcGh5X2RyaXZlcltdID0ge1xuIFx0e1xuIFx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfTVQ3OTgxKSxcbkBAIC0xNTA1LDYgKzE1MjcsMTggQEAgc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIG10a19zb2NwaHlfZHJpdmVyW10gPSB7XG4gXHRcdC5sZWRfaHdfY29udHJvbF9zZXQgPSBtdDc5OHhfcGh5X2xlZF9od19jb250cm9sX3NldCxcbiBcdFx0LmxlZF9od19jb250cm9sX2dldCA9IG10Nzk4eF9waHlfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuIFx0fSxcbitcdHtcbitcdFx0UEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0VONzUyOCksXG4rXHRcdC5uYW1lXHRcdD0gXCJFY29OZXQgRU43NTI4IFBIWVwiLFxuK1x0XHQuY29uZmlnX2luaXRcdD0gZW43NTI4X3BoeV9jb25maWdfaW5pdCxcbitcdFx0LnByb2JlXHRcdD0gYW43NTgxX3BoeV9wcm9iZSxcbitcdFx0LmxlZF9ibGlua19zZXRcdD0gbXQ3OTh4X3BoeV9sZWRfYmxpbmtfc2V0LFxuK1x0XHQubGVkX2JyaWdodG5lc3Nfc2V0ID0gbXQ3OTh4X3BoeV9sZWRfYnJpZ2h0bmVzc19zZXQsXG4rXHRcdC5sZWRfaHdfaXNfc3VwcG9ydGVkID0gbXQ3OTh4X3BoeV9sZWRfaHdfaXNfc3VwcG9ydGVkLFxuK1x0XHQubGVkX2h3X2NvbnRyb2xfc2V0ID0gbXQ3OTh4X3BoeV9sZWRfaHdfY29udHJvbF9zZXQsXG4rXHRcdC5sZWRfaHdfY29udHJvbF9nZXQgPSBtdDc5OHhfcGh5X2xlZF9od19jb250cm9sX2dldCxcbitcdFx0LmxlZF9wb2xhcml0eV9zZXQgPSBhbjc1ODFfcGh5X2xlZF9wb2xhcml0eV9zZXQsXG4rXHR9LFxuIFx0e1xuIFx0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoTVRLX0dQSFlfSURfQU43NTgxKSxcbiBcdFx0Lm5hbWVcdFx0PSBcIkFpcm9oYSBBTjc1ODEgUEhZXCIsXG5AQCAtMTUzNyw2ICsxNTcxLDcgQEAgbW9kdWxlX3BoeV9kcml2ZXIobXRrX3NvY3BoeV9kcml2ZXIpO1xuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgbXRrX3NvY3BoeV90YmxbXSA9IHtcbiBcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4MSkgfSxcbiBcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX01UNzk4OCkgfSxcbitcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0VONzUyOCkgfSxcbiBcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MSkgfSxcbiBcdHsgUEhZX0lEX01BVENIX0VYQUNUKE1US19HUEhZX0lEX0FONzU4MykgfSxcbiBcdHsgfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6MTUuNzc4NzM0ODUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTkyMTk4NDQxMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhY2hpbmcgdGhlIEVjb05ldCBFTjc1MjggUEhZIERyaXZlciBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQncyBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIEVjb05ldCBFTjc1MjggUEhZIHRvIHRoZSBNZWRpYVRlayBFdGhlcm5ldCBQSFkgZHJpdmVyLiBJdCdzIG1vZGlmeWluZyBLY29uZmlnIGFuZCBhIEMgZmlsZSwgZXNzZW50aWFsbHkgaW50cm9kdWNpbmcgYSBuZXcgUEhZIElEIGFuZCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBzeXprYWxsZXIgYWN0dWFsbHkgKnJlYWNoKiB0aGlzIG5ldyBjb2RlIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVU/XG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgUEhZIGRyaXZlcnMgYXJlIHVzdWFsbHkgcHJvYmVkIHZpYSB0aGUgTURJTyBidXMuIENhbiB3ZSBlbXVsYXRlIHRoYXQgaW4gUUVNVT8gV2UgKm1pZ2h0KiBiZSBhYmxlIHRvIGdldCBpdCB0byB3b3JrIGlmIFFFTVUgZW11bGF0ZXMgdGhlIE1ESU8gYnVzIG9yIGlmIHdlIGNvdWxkIHNvbWVob3cgaW5zdGFudGlhdGUgYSBkdW1teSBvbmUgYW5kIHJlZ2lzdGVyIHRoZSBQSFkuIEJ1dCBzeXprYWxsZXIgdHlwaWNhbGx5IGRvZXNuJ3QgZGlyZWN0bHkgdGFyZ2V0IFBIWSBkcml2ZXJzIHVubGVzcyB0aGV5J3JlIHBhcnQgb2YgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIHdpdGggYW4gZXhwb3NlZCBNRElPIGJ1cy4gSSBkb24ndCBzZWUgYW55IGV4cGxpY2l0IHN1cHBvcnQgZm9yIE1ESU8vUEhZIGZ1enppbmcgdmlhIGBzeXpfZ2VuZXRsaW5rYCBvciBzb21ldGhpbmcgc2ltaWxhciBoZXJlLiBTeXprYWxsZXIgdGVuZHMgdG8gZm9jdXMgb24gbmV0d29yayBkZXZpY2VzIGxpa2UgYHR1bmAvYHRhcGAgb3IgYHZldGhgLCB3aGljaCBkb24ndCBoYXZlIFBIWXMuIFNvbWUgZHJpdmVycyBsaWtlIGBtYWNiYCBvciBgZTEwMDBgICptaWdodCogaGF2ZSBQSFlzIGF0dGFjaGVkLCBidXQgdGhhdCdzIG5vdCB0aGUgdXN1YWwgc3l6a2FsbGVyIGFwcHJvYWNoLlxuXG5TbywgdGhlIGtleSBoZXJlIGlzIHJlYWNoYWJpbGl0eS4gU3l6a2FsbGVyICpjYW4qIGhpdCBQSFkgZHJpdmVycyBpZiB0aGV5IGFyZSByZWdpc3RlcmVkIGFuZCBhY2Nlc3NpYmxlIHRocm91Z2ggbmV0bGluayBvciBpb2N0bHMuIEJ1dCAqaG93KiBkbyB3ZSBnZXQgaXQgcmVnaXN0ZXJlZD8gTXkgaHVuY2ggaXMgdGhpcyBNZWRpYVRlayBkcml2ZXIgaXMgZm9yIGJ1aWx0LWluIFBIWXMgd2l0aGluIE1lZGlhVGVrIFNvQ3MuIENhbiB3ZSBwcm9iZSB0aGlzIHdpdGhvdXQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gUEhZIGRyaXZlcnMgYXJlIHVzdWFsbHkgcmVnaXN0ZXJlZCBvbiB0aGUgTURJTyBidXMsIG1hdGNoaW5nIHRoZSBQSFkgSUQuIENvdWxkIHdlIHNwb29mIHRoZSBQSFkgSUQsIG1heWJlIGNyZWF0ZSBhIHZpcnR1YWwgTURJTyBidXMgb3IgdXNlIGEgdmlydHVhbCBkZXZpY2UgbGlrZSBgbWFjYmAgb3IgYGUxMDAwYCwgYnV0IHN5emthbGxlciBkb2Vzbid0IHR5cGljYWxseSBtZXNzIHdpdGggdGhhdCBzb3J0IG9mIHRoaW5nIHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxsIGZvciBNRElPLlxuXG5XZSBrbm93IHRoZXJlJ3MgYW4gTURJTyBidXMsIGJ1dCB1c2Vyc3BhY2UgY2FuJ3QgKmNyZWF0ZSogTURJTyBkZXZpY2VzLiBUaGV5J3JlIGNyZWF0ZWQgYnkgdGhlIE1BQyBkcml2ZXIgcHJvYmluZyB0aGUgYnVzLiBDb3VsZCB3ZSBzb21laG93IHRyaWdnZXIgdGhlIFBIWSBkcml2ZXIgcHJvYmUgdmlhIHNvbWV0aGluZyBsaWtlIEkyQy9NRElPPyBOb3QgbGlrZWx5LiBBbmQgdGhpcyBpcyBqdXN0IGEgUEhZIGRyaXZlciwgaXQgc291bmRzIGxpa2UuIFdlIGNhbiByZWFkL3dyaXRlIFBIWSByZWdpc3RlcnMgdmlhIFNJT0NHTUlJUkVHL1NJT0NTTUlJUkVHLCBidXQgaXQgd29uJ3QgdHJpZ2dlciBwcm9iaW5nLlxuXG5UaGUgY29yZSBvZiB0aGUgcHJvYmxlbTogaG93IGRvIHdlIGdldCB0aGUgTURJTyBidXMgdG8gKnNlZSogdGhlIFBIWSBJRD8gSXMgdGhlcmUgc29mdHdhcmUgTURJTyBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCB0aGF0IHN5emthbGxlciBjb3VsZCB1c2U/IEknZCBjaGVjayB0aGUgc3l6a2FsbGVyIHNvdXJjZSwgYnV0IEkgY2FuJ3QuXG5cbkxldCdzIGNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcy4gSXQgbG9va3MgbGlrZSBgTUVESUFURUtfR0VfU09DX1BIWWAgY2FuIGJlIGJ1aWx0IHdpdGggYENPTVBJTEVfVEVTVGAuIEhvd2V2ZXIsIHRvICpydW4qIHRoZSBkcml2ZXIsIHdlJ3JlIGxpa2VseSBnb2luZyB0byBuZWVkIHNwZWNpZmljIGhhcmR3YXJlLiBgZW43NTI4X3BoeV9jb25maWdfaW5pdGAgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQuIEl0IGxvb2tzIGxpa2UgaXQgaXMgY2FsbGVkIGJ5IHRoZSBQSFkgbGlicmFyeSB3aGVuIHRoZSBQSFkgaXMgaW5pdGlhbGl6ZWQuIFdpdGhvdXQgYSBNZWRpYVRlayBvciBFY29OZXQgU29DLCB0aGVyZSBpcyBubyBNRElPIGJ1cyB0aGF0IGhhcyB0aGUgUEhZIElEICgweDAzYTI5NDkxKSBmb3IgaXQgdG8gYmUgcHJvYmVkLiBJdCB3b3VsZCBuZWVkIFFFTVUgdG8gZW11bGF0ZSBpdC5cblxuRG9lcyBRRU1VIGV2ZW4gZW11bGF0ZSBNZWRpYVRlayBvciBFY29OZXQgU29DIEV0aGVybmV0IFBIWXMgYnkgZGVmYXVsdCBvbiBgeDg2XzY0YCBvciBgYWFyY2g2NCB2aXJ0YCBtYWNoaW5lcz8gVW5saWtlbHkuIEkgaGF2ZSBhIGZlZWxpbmcgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIGBxZW11LXN5c3RlbS14ODZfNjRgIG9yIGBxZW11LXN5c3RlbS1hYXJjaDY0YCB3aXRoIGEgc3RhbmRhcmQgYHZpcnRgIG1hY2hpbmUuXG5cblNvLCB1bmxlc3MgdGhlcmUncyBzb21lIG9ic2N1cmUgUUVNVSBjb25maWd1cmF0aW9uIEknbSBtaXNzaW5nIChhbmQgSSBkb3VidCBpdCwgZ2l2ZW4gdGhlIHN0YW5kYXJkIGFwcHJvYWNoIG9mIHN5emthbGxlciksIG9yIHNvbWUgd2F5IHRvIGluamVjdCBQSFkgZGV2aWNlcyAobGlrZSBgZml4ZWRfcGh5LmNgIGJ1dCB0aG9zZSBoYXZlIGZpeGVkIElEcyksIHRoaXMgc3BlY2lmaWMgUEhZIGRyaXZlciBpcyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwOCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDozNC45OTg1ODE4NzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY5NTE0NzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeV9kZXZpY2VfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDozNS4wNTU1NDM2NTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDI2MDgxMDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIGFzc3VtaW5nIEknbSB0aGUgZXhwZXJ0IGFuZCByZWZsZWN0aW5nIG9uIHRoZSB0ZXh0J3MgcHJvbXB0OlxuXG4qKlJlLWV2YWx1YXRpbmcgdGhlIFN0cmF0ZWd5KipcblxuQWxyaWdodCwgc28gdGhlIGluaXRpYWwgYXBwcm9hY2ggaXMgb24gdGhlIHRhYmxlLCBidXQgSSdtIG5vdCBnb2luZyB0byBqdXN0IHRha2UgaXQgYXMgZ29zcGVsLiBNeSBpbnN0aW5jdCBhcyBhbiBleHBlcnQgaXMgdG8gYWx3YXlzIGNoYWxsZW5nZSBhc3N1bXB0aW9ucyBhbmQgZXhwbG9yZSBhbHRlcm5hdGl2ZXMuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lczogYXJlIHRoZXJlIG90aGVyIGF2ZW51ZXMsIG90aGVyIG1ldGhvZG9sb2dpZXMsIG90aGVyIHBlcnNwZWN0aXZlcywgdGhhdCB3ZSBoYXZlbid0IGNvbnNpZGVyZWQ/IFRoZSBjdXJyZW50IHBsYW4gbWlnaHQgYmUgcGVyZmVjdGx5IHNvdW5kLCBidXQgZXhwZXJpZW5jZSB0ZWxscyBtZSBhIHF1aWNrIGNoZWNrIGZvciBwb3RlbnRpYWwgYmxpbmQgc3BvdHMgaXMgYWx3YXlzIHdvcnRod2hpbGUuIExldCdzIHNlZSBpZiB3ZSBjYW4gaWRlbnRpZnkgYW55IGFsdGVybmF0ZSBwYXRocyB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIG91dGNvbWUsIG9yIGV2ZW4gZmluZCBhIG1vcmUgZWxlZ2FudCBhbmQgZWZmaWNpZW50IHNvbHV0aW9uLiBUaGlzIGlzbid0IGFib3V0IHNlY29uZC1ndWVzc2luZywgaXQncyBhYm91dCBvcHRpbWl6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODY5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTE6NDA6MzguNDgxNjI3MzI5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTI3MzEwMSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWRpb2J1c19yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjM4Ljc2MDkwOTY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxNzQ3NDU1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlOlxuXG4qKkNvbnNpZGVyaW5nIE5ldHdvcmsgRHJpdmVyIEFyY2hpdGVjdHVyZXMgZm9yIGEgUEhZLWxlc3MgU2NlbmFyaW8qKlxuXG5BbHJpZ2h0LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiAqbm90KiBoYXZpbmcgYSBQaHlzaWNhbCBMYXllciBUcmFuc2NlaXZlciAoUEhZKSBpbiB0aGlzIGNvbnRleHQuIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHBvdGVudGlhbCBleGlzdGluZyBhcmNoaXRlY3R1cmVzIHRoYXQgbWlnaHQgb2ZmZXIgYSB1c2VmdWwgc3RhcnRpbmcgcG9pbnQsIG9yIGF0IGxlYXN0IGluc3BpcmUgYSB2aWFibGUgZGVzaWduLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGxvb2sgYXQgZHJpdmVycyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIHNjZW5hcmlvcyAqd2l0aG91dCogYSBQSFksIG9yIHdoZXJlIHRoZSBQSFkgaXMgZnVuZGFtZW50YWxseSBhYnN0cmFjdGVkIGF3YXkgZnJvbSB0aGUgbmV0d29yayBzdGFjay5cblxuYGRyaXZlcnMvbmV0L2R1bW15LmNgIHNwcmluZ3MgdG8gbWluZCBpbW1lZGlhdGVseS4gSXQncyBlc3NlbnRpYWxseSBhIG5vLW9wIGRyaXZlciwgYSBuZXR3b3JrIGludGVyZmFjZSB0aGF0IGp1c3QgYWJzb3JicyBhbmQgc3BpdHMgb3V0IHBhY2tldHMgd2l0aG91dCBhbnkgaGFyZHdhcmUgaW50ZXJhY3Rpb24uIEl0J3MgYSBmdW5kYW1lbnRhbCBtb2RlbCBmb3IgYWJzdHJhY3Rpb24uIFRoZW4gdGhlcmUgaXMgYGRyaXZlcnMvbmV0L3R1bi5jYCwgdGhlIFRVTi9UQVAgZHJpdmVyLiBJdCdzIGFuIGludGVyZXN0aW5nIGNhc2UgYmVjYXVzZSBpdCBjcmVhdGVzIGEgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZSB0aGF0J3MgdGllZCBpbnRvIHRoZSBrZXJuZWwuIEl04oCZcyBhbHNvIGltcG9ydGFudCBiZWNhdXNlIGl0IGRlYWxzIHdpdGggbmV0d29yay1sYXllciBwYWNrZXRzLlxuXG5UaGUgYWJzZW5jZSBvZiBhIFBIWSBpcyB0aGUga2V5IHF1ZXN0aW9uLiBXZSBoYXZlIHRvIGNvbnNpZGVyIGhvdyB0byByZXByZXNlbnQgYW5kIG1hbmFnZSBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gdGhhdCB3b3VsZCAqbm9ybWFsbHkqIGJlIGhhbmRsZWQgYnkgdGhlIFBIWS5cblxuU28sIEknbSB3b25kZXJpbmcgaWYgdGhlcmUncyBhIHZpcnR1YWwgTURJTyBidXMgaW1wbGVtZW50YXRpb24uIFRoaXMgaXMgdGhlIE1lZGlhIEluZGVwZW5kZW50IEludGVyZmFjZSAoTUlJKSBtYW5hZ2VtZW50IGJ1cyB1c2VkIHRvIGNvbmZpZ3VyZSBhbmQgbW9uaXRvciBQSFlzLiBJZiB3ZSAqY291bGQqIHByZXNlbnQgYSB2aXJ0dWFsIE1ESU8gYnVzLCBldmVuIGlmIGl0J3MgcHVyZWx5IHNvZnR3YXJlLWRlZmluZWQsIGl0IHdvdWxkIHByb3ZpZGUgYSBzdGFuZGFyZGl6ZWQgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGlvbiwgb3IgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlc2UgbmV0d29yayBpbnRlcmZhY2VzLlxuXG5JdCdzIGEgd2F5IHRvIGxldmVyYWdlIHRoZSBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSB0aGF0IGV4cGVjdHMgYSBQSFkgYnV0IGFkYXB0IGl0IHRvIGEgbmV3IHNjZW5hcmlvLiBQZXJoYXBzIHdlIGNhbiBtb2RlbCBhbnkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB0aHJvdWdoIGEgc2ltaWxhciBpbnRlcmZhY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwODYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDo0My4yNzgzODY4MDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNTg4ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTAxMiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz02MDc9c3RhdGljIGludCBiY21fc2YyX21kaW9fcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy02ODMtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo2ODQ6XFx0ZXJyID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2V1c2VyX21paV9idXMpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNjg1LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xODc9c3RhdGljIGludCBnc3dpcF9tZGlvKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMjEzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjIxNDpcXHRlcnIgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTIxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jPTMyMT1zdGF0aWMgaW50IGtzejk0NzdfcGNzX2NyZWF0ZShzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQxLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jOjM0MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LVxcdTAwM2VkZXYsIGJ1cyk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMzQzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0yMzIxPWludCBrc3pfbWRpb19yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMjM5Mi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzoyMzkzOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTIzOTQtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz02ODU9c3RhdGljIGludCBsYW45Mzd4X21kaW9fcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU1LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM6NzU2OlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihkcy1cXHUwMDNlZGV2LCBidXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtNzU3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MjM2MT1tdDc1MzBfc2V0dXBfbWRpbyhzdHJ1Y3QgbXQ3NTMwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMjM5Ni1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MjM5NzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTIzOTgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM9MzgzND1zdGF0aWMgaW50IG12ODhlNnh4eF9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBtdjg4ZTZ4eHhfY2hpcCAqY2hpcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4ODctXFxuZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9jaGlwLmM6Mzg4ODpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvY2hpcC5jLTM4ODktXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmM9MjY3PXN0YXRpYyBpbnQgbXhsODYyeHhfc2V0dXBfbWRpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHguYy0yOTItXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmM6MjkzOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LmMtMjk0LVxcdG9mX25vZGVfcHV0KG1kaW9fbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM9MTQ5PXN0YXRpYyBpbnQgbmV0Y19wb3J0X2NyZWF0ZV9lbWRpb19idXMoc3RydWN0IG5ldGNfcG9ydCAqbnAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbmV0Yy9uZXRjX21haW4uYy0xNzktXFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmM6MTgwOlxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZHNhL25ldGMvbmV0Y19tYWluLmMtMTgxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz05NTc9c3RhdGljIGludCB2c2M5OTU5X21kaW9fYnVzX2FsbG9jKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTEwMTMtXFx0LyogTmVlZGVkIGluIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIGJ1cyBtdXRleCBsb2NrICovXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MTAxNDpcXHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0xMDE1LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3Qvc2V2aWxsZV92c2M5OTUzLmM9ODc4PXN0YXRpYyBpbnQgdnNjOTk1M19tZGlvX2J1c19hbGxvYyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jLTkwMy1cXHQvKiBOZWVkZWQgaW4gb3JkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYnVzIG11dGV4IGxvY2sgKi9cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L3NldmlsbGVfdnNjOTk1My5jOjkwNDpcXHRyYyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIGJ1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9zZXZpbGxlX3ZzYzk5NTMuYy05MDUtXFx0aWYgKHJjIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0zNTc9c3RhdGljIGludCBhcjkzMzFfc3dfbWJ1c19pbml0KHN0cnVjdCBhcjkzMzFfc3dfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMzgxLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MzgyOlxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihkZXYsIG1idXMsIG1ucCk7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0zODMtXFx0b2Zfbm9kZV9wdXQobW5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTk0Nz1xY2E4a19tZGlvX3JlZ2lzdGVyKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtOTg2LVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjk4NzpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBidXMsIG1kaW8pO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTk4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYz03ND1pbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jLTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYzoxMDA6XFx0cmV0ID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMtMTAxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM9MTExNz1zdGF0aWMgaW50IGE1cHN3X3Byb2JlX21kaW8oc3RydWN0IGE1cHN3ICphNXBzdywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3J6bjFfYTVwc3cuYy0xMTQzLVxcbmRyaXZlcnMvbmV0L2RzYS9yem4xX2E1cHN3LmM6MTE0NDpcXHRyZXR1cm4gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9kc2EvcnpuMV9hNXBzdy5jLTExNDUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNS5oPTMwNz12b2lkIHNqYTExMDVfZnJhbWVfbWVtb3J5X3BhcnRpdGlvbmluZyhzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMDktLyogRnJvbSBzamExMTA1X21kaW8uYyAqL1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaDozMTA6aW50IHNqYTExMDVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDUuaC0zMTEtdm9pZCBzamExMTA1X21kaW9idXNfdW5yZWdpc3RlcihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzAyNj1zdGF0aWMgaW50IHNqYTExMDVfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzA2Ny1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMDY4OlxcdHJjID0gc2phMTEwNV9tZGlvYnVzX3JlZ2lzdGVyKGRzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMDY5LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jPTI1OD1zdGF0aWMgaW50IHNqYTExMDVfbWRpb2J1c19iYXNlX3R4X3JlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODctXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6Mjg4OlxcdHJjID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIG5wKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0yODktXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz0zMTI9c3RhdGljIGludCBzamExMTA1X21kaW9idXNfYmFzZV90MV9yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQzLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM0NDpcXHRyYyA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzQ1LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM9MzY4PXN0YXRpYyBpbnQgc2phMTEwNV9tZGlvYnVzX3Bjc19yZWdpc3RlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmMtMzk1LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jOjM5NjpcXHRyYyA9IG1kaW9idXNfcmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy0zOTctXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYz00Mzk9c3RhdGljIHZvaWQgc2phMTEwNV9tZGlvYnVzX3Bjc191bnJlZ2lzdGVyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21kaW8uYy00NTgtXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tZGlvLmM6NDU5OmludCBzamExMTA1X21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWRpby5jLTQ2MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTk1PXl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjEyLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2MTM6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjE0LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NzI2PXl0OTIxeF9tYnVzX2V4dF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQzLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NDQ6XFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzQ1LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYz00NTk9c3RhdGljIGludCBheF9taWlfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9heDg4Nzk2LmMtNDc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvYXg4ODc5Ni5jOjQ3OTpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF4LVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2F4ODg3OTYuYy00ODAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYz0xMzIxPXN0YXRpYyBpbnQgb3dsX2VtYWNfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM0NjpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVxcdTAwM2VtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYz01MDk9c3RhdGljIGludCBhZGluMTExMF9yZWdpc3Rlcl9tZGlvYnVzKHN0cnVjdCBhZGluMTExMF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTEwLmMtNTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTExMC5jOjUzMDpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExMTAuYy01MzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FkaS9hZGluMTE0MC5jPTYxNz1zdGF0aWMgaW50IGFkaW4xMTQwX21kaW9fcmVnaXN0ZXIoc3RydWN0IGFkaW4xMTQwX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWRpL2FkaW4xMTQwLmM6NjM3OlxcdHJldHVybiBkZXZtX21kaW9idXNfcmVnaXN0ZXIoXFx1MDAyNnNwaWRldi1cXHUwMDNlZGV2LCBwcml2LVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZGkvYWRpbjExNDAuYy02MzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYz0xMjkwPXN0YXRpYyBpbnQgZ3JldGhfbWRpb19pbml0KHN0cnVjdCBncmV0aF9wcml2YXRlICpncmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Flcm9mbGV4L2dyZXRoLmMtMTMwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZXJvZmxleC9ncmV0aC5jOjEzMDc6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihncmV0aC1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWVyb2ZsZXgvZ3JldGguYy0xMzA4LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FnZXJlL2V0MTMxeC5jPTM5MzE9c3RhdGljIGludCBldDEzMXhfcGNpX3NldHVwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWdlcmUvZXQxMzF4LmMtNDAyNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYzo0MDI3OlxcdHJjID0gbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVxcdTAwM2VtaWlfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hZ2VyZS9ldDEzMXguYy00MDI4LVxcdGlmIChyYyBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMjE9c3RhdGljIGludCBhbHRlcmFfdHNlX21kaW9fY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBpZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE1ODpcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG1kaW8sIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE1OS1cXHRpZiAocmV0ICE9IDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM9MTA2MT1zdGF0aWMgaW50IGF1MTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hdTEwMDBfZXRoLmM6MTIyMjpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGF1cC1cXHUwMDNlbWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2F1MTAwMF9ldGguYy0xMjIzLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9MzQyOD1zdGF0aWMgaW50IHhnYmVfcGh5X2luaXQoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE3LVxcdHNucHJpbnRmKG1paS1cXHUwMDNlaWQsIHNpemVvZihtaWktXFx1MDAzZWlkKSwgXFxcIiVzXFxcIiwgZGV2X25hbWUocGRhdGEtXFx1MDAzZWRldikpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6MzcxODpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1paSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy0zNzE5LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jOjM3MjA6XFx0XFx0ZGV2X2VycihwZGF0YS1cXHUwMDNlZGV2LCBcXFwibWRpb2J1c19yZWdpc3RlciBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtMzcyMS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYz05OD1pbnQgeGdlX21kaW9fY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lLXYyL21kaW8uYy0xMTgtXFx0bWRpb19idXMtXFx1MDAzZXBoeV9tYXNrID0gMHgxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmM6MTE5OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWRpb19idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS12Mi9tZGlvLmMtMTIwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTgzNz1pbnQgeGdlbmVfZW5ldF9waHlfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtODg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6ODg4OnN0YXRpYyBpbnQgeGdlbmVfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy04ODktXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbWlpX2J1cyAqbWRpbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmM6OTEzOlxcdFxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIobWRpbywgbWRpb19ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05MTQtXFx0XFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTkyMS1cXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjkyMjpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FwbS94Z2VuZS94Z2VuZV9lbmV0X2h3LmMtOTIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jPTkzOT1pbnQgeGdlbmVfZW5ldF9tZGlvX2NvbmZpZyhzdHJ1Y3QgeGdlbmVfZW5ldF9wZGF0YSAqcGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jLTk1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUveGdlbmVfZW5ldF9ody5jOjk1ODpcXHRyZXQgPSB4Z2VuZV9tZGlvYnVzX3JlZ2lzdGVyKHBkYXRhLCBtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXBtL3hnZW5lL3hnZW5lX2VuZXRfaHcuYy05NTktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXJjL2VtYWNfbWRpby5jPTEzMT1pbnQgYXJjX21kaW9fcHJvYmUoc3RydWN0IGFyY19lbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FyYy9lbWFjX21kaW8uYzoxNzM6XFx0ZXJyb3IgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbWRpb19ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcmMvZW1hY19tZGlvLmMtMTc0LVxcdG9mX25vZGVfcHV0KG1kaW9fbm9kZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYz05NjY9c3RhdGljIGludCBheDg4Nzk2Y19wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9heDg4Nzk2Y19tYWluLmMtMTAxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYzoxMDExOlxcdHJldCA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIGF4X2xvY2FsLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hc2l4L2F4ODg3OTZjX21haW4uYy0xMDEyLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTY4Nz1zdGF0aWMgaW50IGFnNzF4eF9tZGlvX3Byb2JlKHN0cnVjdCBhZzcxeHggKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy03MjctXFx0bW5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFxcXCJtZGlvXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzo3Mjg6XFx0ZXJyID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWlpX2J1cywgbW5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTcyOS1cXHRvZl9ub2RlX3B1dChtbnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI1OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjYwOlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIobWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI2MS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuYz0xNzEzPXN0YXRpYyBpbnQgYmNtX2VuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jLTE4MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmM6MTgzMDpcXHRcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMtMTgzMS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYz0yMTE9c3RydWN0IG1paV9idXMgKmJjbWFfbWRpb19taWlfcmVnaXN0ZXIoc3RydWN0IGJnbWFjICpiZ21hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEtbWRpby5jLTIzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLW1kaW8uYzoyMzY6XFx0ZXJyID0gb2ZfbWRpb2J1c19yZWdpc3RlcihtaWlfYnVzLCBucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS1tZGlvLmMtMjM3LVxcdG9mX25vZGVfcHV0KG5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTE5Mz1pbnQgYmNtZ2VuZXRfbWlpX2NvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIGluaXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy0yMzMtXFx0XFx0cGh5X25hbWUgPSBcXFwiZXh0ZXJuYWwgUnZNSUlcXFwiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjIzNDpcXHRcXHQvKiBvZl9tZGlvYnVzX3JlZ2lzdGVyIHRvb2sgY2FyZSBvZiByZWFkaW5nIHRoZSAnbWF4LXNwZWVkJ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTIzNS1cXHRcXHQgKiBQSFkgcHJvcGVydHkgZm9yIHVzLCBlZmZlY3RpdmVseSBsaW1pdGluZyB0aGUgUEhZIHN1cHBvcnRlZFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vc2IxMjUwLW1hYy5jPTIxNTc9c3RhdGljIGludCBzYm1hY19pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsZGV2LCBsb25nIGxvbmcgYmFzZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYzoyMjI4OlxcdGVyciA9IG1kaW9idXNfcmVnaXN0ZXIoc2MtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3NiMTI1MC1tYWMuYy0yMjI5LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTE1MDU9c3RhdGljIGludCB0ZzNfbWRpb19pbml0KHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzoxNTU4OlxcdGkgPSBtZGlvYnVzX3JlZ2lzdGVyKHRwLVxcdTAwM2VtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtMTU1OS1cXHRpZiAoaSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwOTc6c3RhdGljIGludCBtYWNiX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1hY2IgKmJwLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1kaW9fbnApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNC1cXHRpZiAobWRpb19ucClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMDU6XFx0XFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTExOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMTk6XFx0XFx0XFx0cmV0dXJuIG9mX21kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExMjAtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExMjI6XFx0cmV0dXJuIG1kaW9idXNfcmVnaXN0ZXIoYnAtXFx1MDAzZW1paV9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTEyMy19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTExMjU9c3RhdGljIGludCBtYWNiX21paV9pbml0KHN0cnVjdCBtYWNiICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTE1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjExNTk6XFx0ZXJyID0gbWFjYl9tZGlvYnVzX3JlZ2lzdGVyKGJwLCBtZGlvX25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTExNjAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmM9MTEwNz1zdGF0aWMgaW50IGRtOTA1MV9tZGlvX3JlZ2lzdGVyKHN0cnVjdCBib2FyZF9pbmZvICpkYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTA1MS5jOjExMjU6XFx0cmV0ID0gZGV2bV9tZGlvYnVzX3JlZ2lzdGVyKFxcdTAwMjZzcGktXFx1MDAzZWRldiwgZGItXFx1MDAzZW1kaW9idXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDUxLmMtMTEyNi1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTI0MjM9c3RhdGljIGludCB0c25lcF9tZGlvX2luaXQoc3RydWN0IHRzbmVwX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjQ1NTpcXHRyZXR2YWwgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGFkYXB0ZXItXFx1MDAzZW1kaW9idXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjQ1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2V0aG9jLmM9MTAyND1zdGF0aWMgaW50IGV0aG9jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ldGhvYy5jLTEyMDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYzoxMjA4OlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIocHJpdi1cXHUwMDNlbWRpbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZXRob2MuYy0xMjA5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTczND1zdGF0aWMgaW50IGZ0Z21hYzEwMF9zZXR1cF9tZGlvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE3NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYzoxNzcwOlxcdGVyciA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIHByaXYtXFx1MDAzZW1paV9idXMsIG1kaW9fbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTc3MS1cXHRvZl9ub2RlX3B1dChtZGlvX25wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wY2lfbWRpby5jPTM2PXN0YXRpYyBpbnQgZW5ldGNfcGNpX21kaW9fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYzo5MTpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZGV2LVxcdTAwM2VvZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGNpX21kaW8uYy05Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTI2Nj1zdGF0aWMgaW50IGVuZXRjX21kaW9fcHJvYmUoc3RydWN0IGVuZXRjX3BmICpwZiwgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0yOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjI5MzpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0yOTQtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMDg9c3RhdGljIGludCBlbmV0Y19pbWRpb19jcmVhdGUoc3RydWN0IGVuZXRjX3BmICpwZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjM0MzpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKGJ1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0zMDQyPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMxNjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6MzE2MTpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGZlcC1cXHUwMDNlbWlpX2J1cywgbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzE2Mi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jPTY1PXN0YXRpYyBpbnQgbXBjNTJ4eF9mZWNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tcGM1Mnh4X3BoeS5jOjEwNjpcXHRlcnIgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbXBjNTJ4eF9waHkuYy0xMDctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmM9MTQ5PXN0YXRpYyBpbnQgZnNfZW5ldF9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYy0xNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvbWlpLWJpdGJhbmcuYzoxNzY6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1iaXRiYW5nLmMtMTc3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmM9OTc9c3RhdGljIGludCBmc19lbmV0X21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9taWktZmVjLmMtMTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYzoxNjc6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzLCBvZmRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L21paS1mZWMuYy0xNjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jPTQwOT1zdGF0aWMgaW50IGZzbF9wcV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNsX3BxX21kaW8uYy00OTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzbF9wcV9tZGlvLmM6NDk0OlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIobmV3X2J1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jLTQ5NS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jPTM3MT1zdGF0aWMgaW50IHhnbWFjX21kaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS94Z21hY19tZGlvLmMtNDI2LVxcdGlmIChpc19vZl9ub2RlKGZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjc6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHRvX29mX25vZGUoZndub2RlKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYy00MjgtXFx0ZWxzZSBpZiAoaXNfYWNwaV9ub2RlKGZ3bm9kZSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3hnbWFjX21kaW8uYzo0Mjk6XFx0XFx0cmV0ID0gYWNwaV9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgZndub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUveGdtYWNfbWRpby5jLTQzMC1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jPTI2Nj1pbnQgaGJnX21kaW9faW5pdChzdHJ1Y3QgaGJnX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI5MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jOjI5MjpcXHRyZXQgPSBkZXZtX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtZGlvX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yOTMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYz0xMDk0PXN0YXRpYyBpbnQgaGl4NWhkMl9kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYy0xMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXg1aGQyX2dtYWMuYzoxMTg2OlxcdHJldCA9IG9mX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGl4NWhkMl9nbWFjLmMtMTE4Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYz0xMjM9aW50IGhjbGdlX21hY19tZGlvX2NvbmZpZyhzdHJ1Y3QgaGNsZ2VfZGV2ICpoZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21kaW8uYy0xNTQtXFx0bWRpb19idXMtXFx1MDAzZXBoeV9tYXNrID0gfigxVSBcXHUwMDNjXFx1MDAzYyBtYWMtXFx1MDAzZXBoeV9hZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jOjE1NTpcXHRyZXQgPSBtZGlvYnVzX3JlZ2lzdGVyKG1kaW9fYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWRpby5jLTE1Ni1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYz00OTU9c3RhdGljIGludCBobnNfbWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huc19tZGlvLmMtNTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jOjU4NDpcXHRcXHRyZXQgPSBvZl9tZGlvYnVzX3JlZ2lzdGVyKG5ld19idXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01ODUtXFx0fSBlbHNlIGlmIChpc19hY3BpX25vZGUocGRldi1cXHUwMDNlZGV2LmZ3bm9kZSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnNfbWRpby5jLTU5Mi1cXHRcXHQvKiBSZWdpc3RlciB0aGUgTURJTyBidXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYzo1OTM6XFx0XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihuZXdfYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zX21kaW8uYy01OTQtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNTYwPXN0YXRpYyBpbnQgZW1hY19kdF9tZGlvX3Byb2JlKHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjU4NC1cXHRzbnByaW50ZihidXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCIlc1xcXCIsIGRldi1cXHUwMDNlb2ZkZXYtXFx1MDAzZW5hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNTg1OlxcdHJlcyA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3RlcihcXHUwMDI2ZGV2LVxcdTAwM2VvZmRldi1cXHUwMDNlZGV2LCBidXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI1ODYtXFx0aWYgKHJlcykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM9MTAyNj1pbnQgaXhnYmVfbWlpX2J1c19pbml0KHN0cnVjdCBpeGdiZV9odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9waHkuYy0xMDg4LVxcdGFkYXB0ZXItXFx1MDAzZW1paV9idXMgPSBidXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfcGh5LmM6MTA4OTpcXHRyZXR1cm4gbWRpb2J1c19yZWdpc3RlcihidXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3BoeS5jLTEwOTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYz0zODU9bHRxX2V0b3BfbWRpb19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9sYW50aXFfZXRvcC5jLTQwMi1cXHRcXHQgcHJpdi1cXHUwMDNlcGRldi1cXHUwMDNlbmFtZSwgcHJpdi1cXHUwMDNlcGRldi1cXHUwMDNlaWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2xhbnRpcV9ldG9wLmM6NDAzOlxcdGlmIChtZGlvYnVzX3JlZ2lzdGVyKHByaXYtXFx1MDAzZW1paV9idXMpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbGFudGlxX2V0b3AuYy00MDQtXFx0XFx0ZXJyID0gLUVOWElPO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYz0yODM9c3RhdGljIGludCBvcmlvbl9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4MS1cXHQvKiBGb3IgdGhlIHBsYXRmb3JtcyBub3Qgc3VwcG9ydGluZyBEVC9BQ1BJIGZhbGwtYmFja1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZtZGlvLmM6MzgyOlxcdCAqIHRvIG1kaW9idXNfcmVnaXN0ZXIgdmlhIG9mX21kaW9idXNfcmVnaXN0ZXIuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODMtXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYy0zODQtXFx0aWYgKGlzX2FjcGlfbm9kZShwZGV2LVxcdTAwM2VkZXYuZndub2RlKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jOjM4NTpcXHRcXHRyZXQgPSBhY3BpX21kaW9idXNfcmVnaXN0ZXIoYnVzLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4Ni1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm1kaW8uYzozODc6XFx0XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihidXMsIHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bWRpby5jLTM4OC1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM9MTM4Nz1zdGF0aWMgaW50IHB4YTE2OF9ldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jLTE1MDQtXFx0cGVwLVxcdTAwM2VzbWlfYnVzLVxcdTAwM2VwaHlfbWFzayA9IDB4ZmZmZmZmZmY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmM6MTUwNTpcXHRlcnIgPSBtZGlvYnVzX3JlZ2lzdGVyKHBlcC1cXHUwMDNlc21pX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMtMTUwNi1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz05OTg9c3RhdGljIGludCBtdGtfbWRpb19pbml0KHN0cnVjdCBtdGtfZXRoICpldGgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTEwMzctXFx0ZGV2X2RiZyhldGgtXFx1MDAzZWRldiwgXFxcIk1EQyBpcyBydW5uaW5nIG9uICVkIEh6XFxcXG5cXFwiLCBNRENfTUFYX0ZSRVEgLyBldGgtXFx1MDAzZW1kY19kaXZpZGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjEwMzg6XFx0cmV0ID0gb2ZfbWRpb2J1c19yZWdpc3RlcihldGgtXFx1MDAzZW1paV9idXMsIG1paV9ucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy0xMDM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jPTE0MjI9c3RhdGljIGludCBtdGtfc3Rhcl9tZGlvX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmMtMTQ0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfc3Rhcl9lbWFjLmM6MTQ0ODpcXHRyZXQgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBwcml2LVxcdTAwM2VtaWksIG1kaW9fbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3N0YXJfZW1hYy5jLTE0NDktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jPTI4Nz1pbnQgbWx4YmZfZ2lnZV9tZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBtbHhiZl9naWdlICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYy0zMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4YmZfZ2lnZS9tbHhiZl9naWdlX21kaW8uYzozMzM6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhiZl9naWdlL21seGJmX2dpZ2VfbWRpby5jLTMzNC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM9MjUzPWludCBmYm5pY19tZGlvYnVzX2NyZWF0ZShzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYy0yNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19tZGlvLmM6MjczOlxcdGVyciA9IGRldm1fbWRpb2J1c19yZWdpc3RlcihmYmQtXFx1MDAzZWRldiwgYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX21kaW8uYy0yNzQtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYz0xMDM2PXN0YXRpYyBpbnQga3M4ODUxX3JlZ2lzdGVyX21kaW9idXMoc3RydWN0IGtzODg1MV9uZXQgKmtzLCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYzoxMDUzOlxcdHJldCA9IG1kaW9idXNfcmVnaXN0ZXIobWlpX2J1cyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDU0LVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYzoxMDU1OlxcdFxcdGdvdG8gZXJyX21kaW9idXNfcmVnaXN0ZXI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcmVsL2tzODg1MV9jb21tb24uYy0xMDYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JlbC9rczg4NTFfY29tbW9uLmM6MTA2MTplcnJfbWRpb2J1c19yZWdpc3RlcjpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyZWwva3M4ODUxX2NvbW1vbi5jLTEwNjItXFx0bWRpb2J1c19mcmVlKG1paV9idXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTEzNzk9c3RhdGljIGludCBsYW43NDN4X2h3X3Jlc2V0X3BoeShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTEzODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjEzODM6XFx0LyogT25seSBjYWxsZWQgd2l0aCBpbiBwcm9iZSwgYW5kIGJlZm9yZSBtZGlvYnVzX3JlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTEzODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzYyOD1zdGF0aWMgaW50IGxhbjc0M3hfbWRpb2J1c19pbml0KHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzY3MS1cXHQvKiByZWdpc3RlciBtZGlvYnVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM2NzI6XFx0cmV0ID0gbWRpb2J1c19yZWdpc3RlcihhZGFwdGVyLVxcdTAwM2VtZGlvYnVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzY3My1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM9MTIxMj1zdGF0aWMgaW50IG5peGdlX21kaW9fc2V0dXAoc3RydWN0IG5peGdlX3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEyMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYzoxMjMxOlxcdHJldHVybiBvZl9tZGlvYnVzX3JlZ2lzdGVyKGJ1cywgbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTIzMi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jPTc5MD1zdGF0aWMgaW50IGxwY19taWlfaW5pdChzdHJ1Y3QgbmV0ZGF0YV9sb2NhbCAqcGxkYXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9ueHAvbHBjX2V0aC5jLTgyMC1cXHRub2RlID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocGxkYXQtXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5vZl9ub2RlLCBcXFwibWRpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L254cC9scGNfZXRoLmM6ODIxOlxcdGVyciA9IG9mX21kaW9idXNfcmVnaXN0ZXIocGxkYXQtXFx1MDAzZW1paV9idXMsIG5vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L254cC9scGNfZXRoLmMtODIyLVxcdG9mX25vZGVfcHV0KG5vZGUpO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQwOjQzLjQwOTk3OTk0M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4MTUwNzE4NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTURJTyBCdXMgQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBnZXQgc3l6a2FsbGVyIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIHByb2JlIG9mIHRoaXMgUEhZIGRyaXZlciBJJ20gaW50ZXJlc3RlZCBpbi4gVGhlIGxhbmRzY2FwZSBvZiBNRElPIGJ1cyBkcml2ZXJzIGlzIHByZXR0eSBleHRlbnNpdmUsIGJ1dCB0aGUgY29yZSBpc3N1ZSBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gZXZlbiAqY3JlYXRlKiBhbiBNRElPIGJ1cyBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIHRyaWNrIHRoZSBrZXJuZWwgaW50byBkb2luZyBzby4gU3l6a2FsbGVyLCBpbiBteSBleHBlcmllbmNlLCBsZWFucyBoZWF2aWx5IG9uIHZpcnR1YWwgZGV2aWNlcyBsaWtlIGB0dW5gLCBgdGFwYCwgdGhlIGBuZXRkZXZzaW1gIGZhbWlseSwgYW5kIG90aGVycy4gSSBhbHJlYWR5IGNoZWNrZWQ6IGBuZXRkZXZzaW1gIGRvZXNuJ3QgcmVnaXN0ZXIgYW4gTURJTyBidXMuIFNvLCBhcmUgKmFueSogb2YgdGhlIHZpcnR1YWwgZHJpdmVycyBkb2luZyB0aGlzP1xuXG5MZXQncyBkaWcgYSBiaXQgZGVlcGVyLiBBcmUgdGhlcmUgYW55ICp2aXJ0dWFsKiBNRElPIGJ1cyBkcml2ZXJzIHRoZW1zZWx2ZXM/IEFoYSwgYGRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuY2AgcmVnaXN0ZXJzIGEgZml4ZWQgTURJTyBidXMsIGFuZCB0aGVuIHRoZXJlJ3MgYGRyaXZlcnMvbmV0L3BoeS9tZGlvLW1vY2suY2AgYW5kIGBkcml2ZXJzL25ldC9waHkvbWRpby1ncGlvLmNgLiBPa2F5LCBwb3RlbnRpYWwgc3RhcnRpbmcgcG9pbnRzLlxuXG5CdXQgdGhlbiBJIHN0YXJ0IHRvIHdvbmRlciwgY2FuIGEgdXNlci1zcGFjZSBwcm9jZXNzIGV2ZW4gKmluc3RhbnRpYXRlKiBhIFBIWSBkcml2ZXIgZGlyZWN0bHk/IE5vLCB0aGF0J3Mgbm90IGhvdyBpdCB3b3Jrcy4gUEhZIGRyaXZlcnMgYXJlIG1hdGNoZWQgYmFzZWQgb24gdGhlIFBIWSBJRCwgcmVhZCBmcm9tIHRoZSBQSFkgaGFyZHdhcmUgcmVnaXN0ZXJzLCBhbmQgc2luY2UgdGhlcmUncyBubyByZWFsIGhhcmR3YXJlIGhlcmUsIHRoZSBNRElPIGJ1cyBpcyBnb2luZyB0byByZWFkIGdhcmJhZ2UgKHByb2JhYmx5IDB4ZmZmZiBvciAweDAwMDApLCB3aGljaCB3b24ndCBtYXRjaCB0aGUgTWVkaWFUZWsgUEhZIElEICgweDAzYTI5NDkxKSBJJ20gdGFyZ2V0aW5nLlxuXG5XYWl04oCmIHdoYXQgYWJvdXQgdGhlIGRldmljZSB0cmVlPyBDYW4gdGhlIFBIWSBJRCBiZSBzcGVjaWZpZWQgdGhlcmU/IERhbW4sIHN5emthbGxlciBkb2Vzbid0IHRvdWNoIHRoZSBkZXZpY2UgdHJlZSBhdCBydW50aW1lLiBTbywgSSdtIHN0dWNrLiBUaGUgUEhZIGRyaXZlciB3aWxsIG5ldmVyIGJlIHByb2JlZC5cblxuT2theSwgbWF5YmUgSSdtIGFwcHJvYWNoaW5nIHRoaXMgZnJvbSB0aGUgd3JvbmcgYW5nbGUuIENhbiB1c2Vyc3BhY2UsIHNvbWVob3csIGNyZWF0ZSBhIFBIWSBkZXZpY2UgdmlhIHN5c2ZzPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGBtZGlvX2J1c2AuIElmIEkgY2FuJ3QgZmluZCBhIGZpbGUtYmFja2VkIGRldmljZSwgSSB3b24ndCBiZSBhYmxlIHRvIGluc3RhbnRpYXRlIG9uZS4gU28gSSBjaGVjaywgY2FuIEkganVzdCBkbyBhbiBgZWNobyBcInBoeV9pZFwiIFx1MDAzZSAvc3lzL2J1cy9tZGlvX2J1cy9kZXZpY2VzLy4uLmA/IE5vcGUsIHRoZSBNRElPIGJ1cyBkb2Vzbid0IGhhdmUgYSBgbmV3X2RldmljZWAgYXR0cmlidXRlIGxpa2UgSTJDIG9yIFNQSS4gSSBuZWVkIHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmNgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgdHJpY2tlcnkgSSBjYW4gdXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTUyNywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDo1My4yMjUwNTM4NjZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTY0MDY4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXdfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9tZGlvX2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxMTo0MDo1My4yNzA2MjYxMjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA1NjY0OTEyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogQ29kZSBVbnJlYWNoYWJsZSBpbiBTdGFuZGFyZCBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZXJlJ3MgYWJzb2x1dGVseSBubyBwYXRoIHRvIHRoaXMgY29kZSBpbiBhIHN0YW5kYXJkLCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VLiBXZSdyZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyBQSFkgZGV2aWNlIOKAkyB0aGUgTWVkaWFUZWsvRWNvTmV0IEVONzUyOCDigJMgYW5kIHRoZXJlJ3Mgbm8gd2F5IHRvIGluc3RhbnRpYXRlIHRoYXQgZnJvbSB1c2Vyc3BhY2UuIFRoZSBjcml0aWNhbCBmdW5jdGlvbiwgYGVuNzUyOF9waHlfY29uZmlnX2luaXRgLCBhbG9uZyB3aXRoIHRoZSBjb3JlIE1lZGlhVGVrIFBIWSBkcml2ZXIgY29kZSwgaXMgaW50cmluc2ljYWxseSB0aWVkIHRvIHRoZSBoYXJkd2FyZSBvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucy4gV2l0aG91dCB0aG9zZSBlbGVtZW50cywgd2UncmUgZGVhZCBpbiB0aGUgd2F0ZXIuXG5cbk5vdywgbGV0J3MgY29uZmlybSB0aGlzIGJ5IHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBwYXRoLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgZW43NTI4X3BoeV9jb25maWdfaW5pdGAsIGFuZCBpdCdzIGNsZWFyIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZHVyaW5nIHRoZSBQSFkgZGV2aWNlJ3MgcHJvYmUgYW5kIGluaXRpYWxpemF0aW9uLiBUaGlzIFBIWSBkZXZpY2Ugb25seSBnZXRzIGNyZWF0ZWQgaWYgdGhlIE1ESU8gYnVzIHN1Y2Nlc3NmdWxseSBpZGVudGlmaWVzIHRoZSBoYXJkd2FyZSBieSBJRCwgb3IgaWYgdGhlIHN5c3RlbSB1c2VzIGFuIGV4cGxpY2l0IGRldmljZSB0cmVlIGVudHJ5LiBTaW5jZSBzeXprYWxsZXIgYW5kIG90aGVyIGZ1enppbmcgdG9vbHMgcnVuIGluIHN0YW5kYXJkIFFFTVUgKHg4Nl82NCBvciBhcm02NCB2aXJ0KSAqd2l0aG91dCogdGhpcyBoYXJkd2FyZSBvciB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgdHJlZSwgdGhlIFBIWSBkZXZpY2UgKndpbGwgbmV2ZXIgYmUgY3JlYXRlZCouIENvbnNlcXVlbnRseSwgdGhlIGRyaXZlciB3aWxsIG5vdCBiZSBwcm9iZWQsIGFuZCBgZW43NTI4X3BoeV9jb25maWdfaW5pdGAgd2lsbCBuZXZlciBleGVjdXRlLlxuXG5UaGUgcHJvbXB0IGV4cGxpY2l0bHkgdGVsbHMgbWUgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIHRoZSBwYXRjaCBpbnZvbHZlcyBjb2RlIGltcG9zc2libGUgdG8gaGl0IGluIHRoZXNlIGVudmlyb25tZW50cywgZXZlbiBpZiBoYXJkd2FyZSBpcyBlbXVsYXRlZC4gVGhpcyBwYXRjaCBmaXRzIHRoZSBjcml0ZXJpYSBwZXJmZWN0bHkuIEl0J3MgZGVzaWduZWQgZm9yIGEgcGFydGljdWxhciBoYXJkd2FyZSBQSFkgKE1lZGlhVGVrL0Vjb05ldCBFTjc1MjgpLCBhbmQgY2FuJ3QgYmUgcmVhY2hlZCBpbiB0aGUgc3RhbmRhcmQsIGdlbmVyaWMgUUVNVSBlbnZpcm9ubWVudCB1c2VkIGJ5IGZ1enppbmcuXG5cbkxldCdzIGRvIGEgcXVpY2sgcmUtY2hlY2sgb2YgdGhlIHBhdGNoIGl0c2VsZi5cblxuYGBgY1xuK3N0YXRpYyBpbnQgZW43NTI4X3BoeV9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuK3tcbitcdC8qIFRoZSBMRUQgY29udHJvbGxlciBvZiB0aGUgRU43NTI4IHBvd2VycyB1cCB3aXRoIGl0cyBleHRlcm5hbFxuK1x0ICogY29udHJvbCBkaXNhYmxlZCwgbGVhdmluZyB0aGUgTEVEIHBpbnMgZGFyayByZWdhcmRsZXNzIG9mIHdoYXQgaXNcbitcdCAqIHByb2dyYW1tZWQgaW50byB0aGUgTEVEIGNvbnRyb2wgcmVnaXN0ZXJzLiBIYW5kIHRoZSBwaW5zIG92ZXIgdG9cbitcdCAqIHRoZSBMRUQgY29udHJvbCByZWdpc3RlcnMgdGhlIHNhbWUgd2F5IHRoZSBhaXJfZW44ODExaCBkcml2ZXJcbitcdCAqIGRvZXM7IHRoZSBtb2RlIGZpZWxkIG9mIHRoaXMgcmVnaXN0ZXIgaXMgYWxyZWFkeSBzZXQgb3V0IG9mIHJlc2V0LlxuK1x0ICovXG4rXHRyZXR1cm4gcGh5X3NldF9iaXRzX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBNVEtfUEhZX0xFRF9CQ1IsXG4rXHRcdFx0XHRNVEtfUEhZX0xFRF9CQ1JfQ0xLX0VOIHxcbitcdFx0XHRcdE1US19QSFlfTEVEX0JDUl9FWFRfQ1RSTCk7XG4rfVxuYGBgXG5cblllYWgsIGl0J3MganVzdCBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uLiBUaGVyZSdzIG5vIHdheSB0aGlzIGlzIHJlYWNoYWJsZSB3aXRoaW4gYSBnZW5lcmljIFFFTVUgZW52aXJvbm1lbnQuXG5cblRoZXJlZm9yZSwgdGhlIGZpbmFsIGRlY2lzaW9uIGlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHVwZGF0ZWQgY29kZSBwZXJ0YWlucyB0byBhIHBhcnRpY3VsYXIgcGllY2Ugb2YgaGFyZHdhcmUgd2hpY2ggaXNuJ3QgcHJlc2VudCBpbiBnZW5lcmljIHZpcnR1YWxpemF0aW9uIHNldHVwcywgYW5kIHRoZSBuZXcgY29kZSBwYXRocyBjYW5ub3QgYmUgY292ZXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1MjEsIk91dHB1dFRva2VucyI6MTEwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDExOjQxOjAzLjgzNzEyMTQ3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYSBzcGVjaWZpYyBoYXJkd2FyZSBFdGhlcm5ldCBQSFkgKEVjb05ldCBFTjc1MjgpLiBQSFkgZHJpdmVycyBhcmUgcHJvYmVkIGJhc2VkIG9uIGhhcmR3YXJlIElEcyByZWFkIGZyb20gdGhlIE1ESU8gYnVzIG9yIHZpYSBkZXZpY2UgdHJlZSBub2Rlcy4gU2luY2UgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSkgYW5kIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBhIHNwZWNpZmljIGhhcmR3YXJlIEV0aGVybmV0IFBIWSAoRWNvTmV0IEVONzUyOCkuIFBIWSBkcml2ZXJzIGFyZSBwcm9iZWQgYmFzZWQgb24gaGFyZHdhcmUgSURzIHJlYWQgZnJvbSB0aGUgTURJTyBidXMgb3IgdmlhIGRldmljZSB0cmVlIG5vZGVzLiBTaW5jZSB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VKSBhbmQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwvcxp[1] Phase: Running StartedAt: 2026-08-04 11:41:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwvcxp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-04 11:41:15 +0000 UTC FinishedAt: 2026-08-04 11:41:20 +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,}