Name: series-workflowjhvx6 Phase: Failed StartedAt: 2026-08-03 10:47:45 +0000 UTC FinishedAt: 2026-08-03 11:35:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhvx6[0] Phase: Succeeded StartedAt: 2026-08-03 10:47:45 +0000 UTC FinishedAt: 2026-08-03 11:35:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhvx6[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 10:47:45 +0000 UTC FinishedAt: 2026-08-03 11:35:22 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBQSFkgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgb24gYW4gTURJTyBidXMgKG9yIHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zIGFuZCBoYXJkd2FyZSBlbXVsYXRpb24gbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgUUVNVSkgdG8gYmUgcHJvYmVkIGFuZCBleGVjdXRlZC4gRnVydGhlcm1vcmUsIHRoZSBkcml2ZXIgb25seSBjb250YWlucyB0cml2aWFsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyAocmVnaXN0ZXIgcmVhZHMvd3JpdGVzKSBhbmQgZG9lcyBub3QgZXhwb3NlIGFueSBjb21wbGV4IHNvZnR3YXJlIGludGVyZmFjZXMsIG1ha2luZyBpdCB1bnN1aXRhYmxlIGFuZCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMTozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZhNGM1NGI5OGU4NmY5YWFmOTU0OWRiODA0MTI1NTZmNWZhZjE2NTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDExOjMzOjIwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mYjc4ZmE0ZjU4Y2EzXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxuQEAgLTAsMCAmIzQzOzEsNjIgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sI1xuJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbiYjNDM7XG4mIzQzO3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2Rlc2NyaXB0aW9uOiB8XG4mIzQzOyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXG4mIzQzOyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxuJiM0MzsgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy5cbiYjNDM7XG4mIzQzOyAgU3BlY2lmaWNhdGlvbnM6XG4mIzQzOyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuJiM0MzsgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxuJiM0MzsgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4mIzQzOyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XG4mIzQzOyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcbiYjNDM7XG4mIzQzO2FsbE9mOlxuJiM0MzsgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXG4mIzQzO1xuJiM0Mztwcm9wZXJ0aWVzOlxuJiM0MzsgIGNvbXBhdGlibGU6XG4mIzQzOyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0MzsgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4mIzQzO1xuJiM0MztleGFtcGxlczpcbiYjNDM7ICAtIHxcbiYjNDM7ICAgIG1kaW8ge1xuJiM0MzsgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIGV0aGVybmV0LXBoeUAxIHtcbiYjNDM7ICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2V0aGVybmV0LXBoeS1pZDAwMDguMDExYlwmIzM0OztcbiYjNDM7ICAgICAgICAgICAgcmVnID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MyMTAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIxMDBcdTAwM2U7XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXG5pbmRleCAzOTYwNDRmMzY4ZTdjLi5jM2RiODU3Yjk4MzcyIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnlhbWxcbkBAIC00MDMsNiAmIzQzOzQwMyw4IEBAIHBhdHRlcm5Qcm9wZXJ0aWVzOlxuICAgICBkZXNjcmlwdGlvbjogQ1ouTklDLCB6LnMucC5vLlxuICAgXCYjMzQ7XmRhbGxhcywuKlwmIzM0OzpcbiAgICAgZGVzY3JpcHRpb246IE1heGltIEludGVncmF0ZWQgUHJvZHVjdHMgKGZvcm1lcmx5IERhbGxhcyBTZW1pY29uZHVjdG9yKVxuJiM0MzsgIFwmIzM0O15kYXB1LC4qXCYjMzQ7OlxuJiM0MzsgICAgZGVzY3JpcHRpb246IEd1YW5nZG9uZyBEYXB1IFRlbGVjb20gQ28uLCBMdGQuXG4gICBcJiMzNDteZGF0YWltYWdlLC4qXCYjMzQ7OlxuICAgICBkZXNjcmlwdGlvbjogRGF0YUltYWdlLCBJbmMuXG4gICBcJiMzNDteZGF2aWNvbSwuKlwmIzM0OzpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG5pbmRleCAwOTlmMjVkY2VhYmJjLi4zOTViY2QzNWJmZmE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG5AQCAtMjMyLDYgJiM0MzsyMzIsMTUgQEAgY29uZmlnIENPUlRJTkFfUEhZXG4gXHRoZWxwXG4gXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQ1M0MzQwIHBoeS5cbiBcbiYjNDM7Y29uZmlnIERBUDgyMTFSX1BIWVxuJiM0MztcdHRyaXN0YXRlIFwmIzM0O0RBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWVwmIzM0O1xuJiM0MztcdGRlcGVuZHMgb24gT0ZcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBTdXBwb3J0IGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxuJiM0MztcdCAgVGhpcyBQSFkgaXMgZGVzaWduZWQgZm9yIGVudGVycHJpc2UgYW5kIGluZHVzdHJpYWwgbmV0d29ya2luZ1xuJiM0MztcdCAgYXBwbGljYXRpb25zLCBzdXBwb3J0aW5nIDEwLzEwMC8xMDAwIE1icHMgb3BlcmF0aW9uLiBTdXBwb3J0c1xuJiM0MztcdCAgUkdNSUkgaW50ZXJmYWNlIHdpdGggY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cy5cbiYjNDM7XG4gY29uZmlnIERBVklDT01fUEhZXG4gXHR0cmlzdGF0ZSBcJiMzNDtEYXZpY29tIFBIWXNcJiMzNDtcbiBcdGhlbHBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbmluZGV4IGRlNjYwYWU5NDk0NTMuLmM3MmY3NzMwZTI1ZGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuQEAgLTUyLDYgJiM0Mzs1Miw3IEBAIG9iai0kKENPTkZJR19CQ01fTkVUX1BIWVBUUClcdCYjNDM7PSBiY20tcGh5LXB0cC5vXG4gb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcdCYjNDM7PSBicm9hZGNvbS5vXG4gb2JqLSQoQ09ORklHX0NJQ0FEQV9QSFkpXHQmIzQzOz0gY2ljYWRhLm9cbiBvYmotJChDT05GSUdfQ09SVElOQV9QSFkpXHQmIzQzOz0gY29ydGluYS5vXG4mIzQzO29iai0kKENPTkZJR19EQVA4MjExUl9QSFkpXHQmIzQzOz0gZGFwODIxMXIub1xuIG9iai0kKENPTkZJR19EQVZJQ09NX1BIWSlcdCYjNDM7PSBkYXZpY29tLm9cbiBvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQmIzQzOz0gZHA4MzY0MC5vXG4gb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVx0JiM0Mzs9IGRwODM4MjIub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mMDEwY2UwYzNiZDEzXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xuQEAgLTAsMCAmIzQzOzEsMjA2IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8qXG4mIzQzOyAqIERyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cbiYjNDM7ICpcbiYjNDM7ICogU3BlY2lmaWNhdGlvbnM6XG4mIzQzOyAqICAgLSBJRUVFIDgwMi4zIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuJiM0MzsgKiAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldFxuJiM0MzsgKiAgIC0gSUVFRSAxNTg4IFN5bmNFIHN1cHBvcnRcbiYjNDM7ICogICAtIFJHTUlJXG4mIzQzOyAqXG4mIzQzOyAqIEF1dGhvcjogQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21paS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9JRFx0XHRcdDB4MDAwODAxMUJcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSURfTUFTS1x0XHQweEZGRkZGRkZGXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX0VYVF9BRERcdFx0MHgxRVxuJiM0MzsjZGVmaW5lIERBUDgyMTFSX0VYVF9EQVRBXHRcdDB4MUZcbiYjNDM7XG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX0NPTlx0XHQweEEwMDFcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfU1dfUlNUXHRcdEJJVCgxNSlcbiYjNDM7XG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09OXHRcdDB4QTAwM1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLXHRHRU5NQVNLKDMsIDApXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0tcdEdFTk1BU0soMTMsIDEwKVxuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTS1x0KERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spXG4mIzQzO1xuJiM0MzsvKiBJbml0aWFsIFJHTUlJIFJYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAwICogMTUwcHMgPT0gMC4wMG5zICovXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMXHQwXG4mIzQzOy8qIEluaXRpYWwgUkdNSUkgVFggZGVsYXkgcGVyIGhhcmR3YXJlIHNwZWNpZmljYXRpb246IDEgKiAxNTBwcyA9PSAwLjE1bnMqL1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTFx0MVxuJiM0MzsvKiBEZWZhdWx0IFJHTUlJIGRlbGF5OiAxMyAqIDE1MCA9PSAxLjk1bnMgKi9cbiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUxcdDB4RFxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IGludCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheVtdID0gezAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgMTk1MCwgMjEwMCwgMjI1MH07XG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX0RFTEFZX1NJWkVcdEFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpXG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXJcbiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbiYjNDM7ICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzc1xuJiM0MzsgKlxuJiM0MzsgKiBSZWFkcyBhIFBIWSBleHRlbmRlZCByZWdpc3RlciB1c2luZyB0aGUgaW5kaXJlY3QgYWNjZXNzIG1ldGhvZC5cbiYjNDM7ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogUmVnaXN0ZXIgdmFsdWUgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbiYjNDM7XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBfX3BoeV9yZWFkKHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEpO1xuJiM0MztvdXQ6XG4mIzQzO1x0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0c1xuJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuJiM0MzsgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXG4mIzQzOyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyXG4mIzQzOyAqIEBzZXQ6IEJpdCBtYXNrIG9mIGJpdHMgdG8gc2V0XG4mIzQzOyAqXG4mIzQzOyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxuJiM0MzsgKiBOZXcgdmFsdWUgPSAob2xkIHZhbHVlIFx1MDAyNiB+bWFzaykgfCBzZXQuXG4mIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9tb2RpZnlfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcsIHUxNiBtYXNrLCB1MTYgc2V0KVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbiYjNDM7XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBfX3BoeV9tb2RpZnkocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSwgbWFzaywgc2V0KTtcbiYjNDM7b3V0OlxuJiM0MztcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGFwODIxMXJfY29uZmlnX2luaXQoKSAtIEluaXRpYWxpemUgUEhZXG4mIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4mIzQzOyAqXG4mIzQzOyAqIENvbmZpZ3VyZXMgdGhlIFBIWSBkdXJpbmcgaW5pdGlhbGl6YXRpb246XG4mIzQzOyAqIC0gUkdNSUkgZGVsYXlzIGJhc2VkIG9uIGludGVyZmFjZSBtb2RlXG4mIzQzOyAqIC0gU29mdHdhcmUgcmVzZXQgdG8gYXBwbHkgc2V0dGluZ3MgKGxvdyBhY3RpdmUsIHNlbGYgY2xlYXIpXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHR1MTYgc2V0ID0gMDtcbiYjNDM7XHRpbnQgcmV0LCB2YWw7XG4mIzQzO1x0czMyIHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMO1xuJiM0MztcdHMzMiB0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFwaHlfaW50ZXJmYWNlX2lzX3JnbWlpKHBoeWRldikpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQpXG4mIzQzO1x0XHRyeF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICBEQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQpXG4mIzQzO1x0XHR0eF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICBEQVA4MjExUl9ERUxBWV9TSVpFLCBmYWxzZSk7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAocGh5ZGV2LVx1MDAzZWludGVyZmFjZSkge1xuJiM0MztcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuJiM0MztcdFx0aWYgKHJ4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRyeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfUlhfREVMX1ZBTDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4mIzQzO1x0XHRcdHR4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVElBTF9UWF9ERUxfVkFMO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbiYjNDM7XHRcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcbiYjNDM7XHRcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4mIzQzO1x0XHRmYWxsdGhyb3VnaDtcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxuJiM0MztcdFx0aWYgKHR4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuJiM0MztcdFx0XHR0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7VW5zdXBwb3J0ZWQgaW50ZXJmYWNlOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCByeF9pbnRlcm5hbF9kZWxheSk7XG4mIzQzO1x0c2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0ssIHR4X2ludGVybmFsX2RlbGF5KTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04sIERBUDgyMTFSX1BIWV9TV19SU1QsIDApO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBXYWl0IGZvciByZXNldCBzZWxmLWNsZWFyIChmcm9tIGxvdyBhY3RpdmUgdG8gaGlnaCkgKi9cbiYjNDM7XHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLFxuJiM0MztcdFx0XHRcdCh2YWwgXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxuJiM0MztcdFx0XHRcdDIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdGlmICh2YWwgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gdmFsO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUkdNSUlfQ09OLCBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSywgc2V0KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbiYjNDM7XHR7XG4mIzQzO1x0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSxcbiYjNDM7XHRcdC5uYW1lXHRcdD0gXCYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldFwmIzM0OyxcbiYjNDM7XHRcdC5zb2Z0X3Jlc2V0XHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxuJiM0MztcdFx0LmNvbmZpZ19pbml0XHQ9IGRhcDgyMTFyX2NvbmZpZ19pbml0LFxuJiM0MztcdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9yZWFkX3N0YXR1cyxcbiYjNDM7XHRcdC5zZXRfbG9vcGJhY2tcdD0gZ2VucGh5X2xvb3BiYWNrLFxuJiM0MztcdFx0LmNvbmZpZ19hbmVnXHQ9IGdlbnBoeV9jb25maWdfYW5lZyxcbiYjNDM7XHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuJiM0MztcdFx0LnJlc3VtZVx0XHQ9IGdlbnBoeV9yZXN1bWUsXG4mIzQzO1x0fSxcbiYjNDM7fTtcbiYjNDM7bW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKTtcbiYjNDM7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0IFBIWSBkcml2ZXJcJiMzNDspO1xuJiM0MztNT0RVTEVfQVVUSE9SKFwmIzM0O0FydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZGFwODIxMXJfdGJbXSA9IHtcbiYjNDM7XHR7IERBUDgyMTFSX1BIWV9JRCwgREFQODIxMVJfUEhZX0lEX01BU0sgfSxcbiYjNDM7XHR7IC8qIHNlbnRpbmVsICovIH1cbiYjNDM7fTtcbiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkYXA4MjExcl90Yik7XG4mIzQzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKS4gUEhZIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0byBiZSBwcmVzZW50IG9uIGFuIE1ESU8gYnVzIChvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIFFFTVUpIHRvIGJlIHByb2JlZCBhbmQgZXhlY3V0ZWQuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgKHJlZ2lzdGVyIHJlYWRzL3dyaXRlcykgYW5kIGRvZXMgbm90IGV4cG9zZSBhbnkgY29tcGxleCBzb2Z0d2FyZSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmYTRjNTRiOThlODZmOWFhZjk1NDlkYjgwNDEyNTU2ZjVmYWYxNjUzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAxMTozMzoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZmI3OGZhNGY1OGNhMwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sCkBAIC0wLDAgJiM0MzsxLDYyIEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkKJiM0MzsKJiM0MzttYWludGFpbmVyczoKJiM0MzsgIC0gQXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OwomIzQzOwomIzQzO2Rlc2NyaXB0aW9uOiB8CiYjNDM7ICBUaGUgREFQODIxMVIoSSkgaXMgYSBHaWdhYml0IEV0aGVybmV0IFBIWSB3aXRoIFJHTUlJIGludGVyZmFjZSwKJiM0MzsgIHN1cHBvcnRpbmcgSUVFRSA4MDIuM2F6IEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQsIElFRUUgMTU4OCBTeW5jRSwKJiM0MzsgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy4KJiM0MzsKJiM0MzsgIFNwZWNpZmljYXRpb25zOgomIzQzOyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVAomIzQzOyAgICAtIFJHTUlJIHdpdGggY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cyAoMTUwIHBzIHN0ZXBzLCAwLTIyNTAgcHMpCiYjNDM7ICAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldAomIzQzOyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0CiYjNDM7ICAgIC0gSW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvciBhbmQgY2hlY2tlciBmb3IgbGluayBkaWFnbm9zdGljcwomIzQzOwomIzQzO2FsbE9mOgomIzQzOyAgLSAkcmVmOiBldGhlcm5ldC1waHkueWFtbCMKJiM0MzsKJiM0Mztwcm9wZXJ0aWVzOgomIzQzOyAgY29tcGF0aWJsZToKJiM0MzsgICAgY29uc3Q6IGV0aGVybmV0LXBoeS1pZDAwMDguMDExYgomIzQzOwomIzQzOyAgcmVnOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzOyAgcngtaW50ZXJuYWwtZGVsYXktcHM6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLgomIzQzOyAgICBtdWx0aXBsZU9mOiAxNTAKJiM0MzsgICAgbWF4aW11bTogMjI1MAomIzQzOyAgICBkZWZhdWx0OiAxOTUwCiYjNDM7CiYjNDM7ICB0eC1pbnRlcm5hbC1kZWxheS1wczoKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgUkdNSUkgVFggY2xvY2sgZGVsYXkgaW4gcGljb3NlY29uZHMgKDAgdG8gbWF4aW11bSkuCiYjNDM7ICAgIG11bHRpcGxlT2Y6IDE1MAomIzQzOyAgICBtYXhpbXVtOiAyMjUwCiYjNDM7ICAgIGRlZmF1bHQ6IDE5NTAKJiM0MzsKJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgbWRpbyB7CiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgZXRoZXJuZXQtcGh5QDEgewomIzQzOyAgICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O2V0aGVybmV0LXBoeS1pZDAwMDguMDExYiYjMzQ7OwomIzQzOyAgICAgICAgICAgIHJlZyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMTAwJmd0OzsKJiM0MzsgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMTAwJmd0OzsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnlhbWwKaW5kZXggMzk2MDQ0ZjM2OGU3Yy4uYzNkYjg1N2I5ODM3MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMueWFtbApAQCAtNDAzLDYgJiM0Mzs0MDMsOCBAQCBwYXR0ZXJuUHJvcGVydGllczoKICAgICBkZXNjcmlwdGlvbjogQ1ouTklDLCB6LnMucC5vLgogICAmIzM0O15kYWxsYXMsLiomIzM0OzoKICAgICBkZXNjcmlwdGlvbjogTWF4aW0gSW50ZWdyYXRlZCBQcm9kdWN0cyAoZm9ybWVybHkgRGFsbGFzIFNlbWljb25kdWN0b3IpCiYjNDM7ICAmIzM0O15kYXB1LC4qJiMzNDs6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOiBHdWFuZ2RvbmcgRGFwdSBUZWxlY29tIENvLiwgTHRkLgogICAmIzM0O15kYXRhaW1hZ2UsLiomIzM0OzoKICAgICBkZXNjcmlwdGlvbjogRGF0YUltYWdlLCBJbmMuCiAgICYjMzQ7XmRhdmljb20sLiomIzM0OzoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKaW5kZXggMDk5ZjI1ZGNlYWJiYy4uMzk1YmNkMzViZmZhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKQEAgLTIzMiw2ICYjNDM7MjMyLDE1IEBAIGNvbmZpZyBDT1JUSU5BX1BIWQogCWhlbHAKIAkgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQ1M0MzQwIHBoeS4KIAomIzQzO2NvbmZpZyBEQVA4MjExUl9QSFkKJiM0MzsJdHJpc3RhdGUgJiMzNDtEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkmIzM0OwomIzQzOwlkZXBlbmRzIG9uIE9GCiYjNDM7CWhlbHAKJiM0MzsJICBTdXBwb3J0IGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLgomIzQzOwkgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmcKJiM0MzsJICBhcHBsaWNhdGlvbnMsIHN1cHBvcnRpbmcgMTAvMTAwLzEwMDAgTWJwcyBvcGVyYXRpb24uIFN1cHBvcnRzCiYjNDM7CSAgUkdNSUkgaW50ZXJmYWNlIHdpdGggY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cy4KJiM0MzsKIGNvbmZpZyBEQVZJQ09NX1BIWQogCXRyaXN0YXRlICYjMzQ7RGF2aWNvbSBQSFlzJiMzNDsKIAloZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUKaW5kZXggZGU2NjBhZTk0OTQ1My4uYzcyZjc3MzBlMjVkYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZQpAQCAtNTIsNiAmIzQzOzUyLDcgQEAgb2JqLSQoQ09ORklHX0JDTV9ORVRfUEhZUFRQKQkmIzQzOz0gYmNtLXBoeS1wdHAubwogb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSkJJiM0Mzs9IGJyb2FkY29tLm8KIG9iai0kKENPTkZJR19DSUNBREFfUEhZKQkmIzQzOz0gY2ljYWRhLm8KIG9iai0kKENPTkZJR19DT1JUSU5BX1BIWSkJJiM0Mzs9IGNvcnRpbmEubwomIzQzO29iai0kKENPTkZJR19EQVA4MjExUl9QSFkpCSYjNDM7PSBkYXA4MjExci5vCiBvYmotJChDT05GSUdfREFWSUNPTV9QSFkpCSYjNDM7PSBkYXZpY29tLm8KIG9iai0kKENPTkZJR19EUDgzNjQwX1BIWSkJJiM0Mzs9IGRwODM2NDAubwogb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKQkmIzQzOz0gZHA4MzgyMi5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmYwMTBjZTBjM2JkMTMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYwpAQCAtMCwwICYjNDM7MSwyMDYgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOy8qCiYjNDM7ICogRHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLgomIzQzOyAqCiYjNDM7ICogU3BlY2lmaWNhdGlvbnM6CiYjNDM7ICogICAtIElFRUUgODAyLjMgMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UCiYjNDM7ICogICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQKJiM0MzsgKiAgIC0gSUVFRSAxNTg4IFN5bmNFIHN1cHBvcnQKJiM0MzsgKiAgIC0gUkdNSUkKJiM0MzsgKgomIzQzOyAqIEF1dGhvcjogQXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OwomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9lcnJuby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ldGh0b29sLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pb3BvbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbWlpLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9uZXRkZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGh5LmgmZ3Q7CiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSUQJCQkweDAwMDgwMTFCCiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSURfTUFTSwkJMHhGRkZGRkZGRgomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfRVhUX0FERAkJMHgxRQomIzQzOyNkZWZpbmUgREFQODIxMVJfRVhUX0RBVEEJCTB4MUYKJiM0MzsKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9DT04JCTB4QTAwMQomIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVAkJQklUKDE1KQomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09OCQkweEEwMDMKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLCUdFTk1BU0soMywgMCkKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLCUdFTk1BU0soMTMsIDEwKQomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0sJKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spCiYjNDM7CiYjNDM7LyogSW5pdGlhbCBSR01JSSBSWCBkZWxheSBwZXIgaGFyZHdhcmUgc3BlY2lmaWNhdGlvbjogMCAqIDE1MHBzID09IDAuMDBucyAqLwomIzQzOyNkZWZpbmUgREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMCTAKJiM0MzsvKiBJbml0aWFsIFJHTUlJIFRYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAxICogMTUwcHMgPT0gMC4xNW5zKi8KJiM0MzsjZGVmaW5lIERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTAkxCiYjNDM7LyogRGVmYXVsdCBSR01JSSBkZWxheTogMTMgKiAxNTAgPT0gMS45NW5zICovCiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUwJMHhECiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IGludCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheVtdID0gezAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsCiYjNDM7CQkJCQkgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLAomIzQzOwkJCQkJICAgICAgMTk1MCwgMjEwMCwgMjI1MH07CiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFCUFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXIKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZQomIzQzOyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3MKJiM0MzsgKgomIzQzOyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLgomIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKQomIzQzO3sKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTsKJiM0MzsJcmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpOwomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlyZXQgPSBfX3BoeV9yZWFkKHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEpOwomIzQzO291dDoKJiM0MzsJcGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0cwomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlCiYjNDM7ICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzcwomIzQzOyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyCiYjNDM7ICogQHNldDogQml0IG1hc2sgb2YgYml0cyB0byBzZXQKJiM0MzsgKgomIzQzOyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLgomIzQzOyAqIE5ldyB2YWx1ZSA9IChvbGQgdmFsdWUgJmFtcDsgfm1hc2spIHwgc2V0LgomIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUKJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CXJldCA9IF9fcGh5X21vZGlmeShwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBLCBtYXNrLCBzZXQpOwomIzQzO291dDoKJiM0MzsJcGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFkKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZQomIzQzOyAqCiYjNDM7ICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjoKJiM0MzsgKiAtIFJHTUlJIGRlbGF5cyBiYXNlZCBvbiBpbnRlcmZhY2UgbW9kZQomIzQzOyAqIC0gU29mdHdhcmUgcmVzZXQgdG8gYXBwbHkgc2V0dGluZ3MgKGxvdyBhY3RpdmUsIHNlbGYgY2xlYXIpCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZQomIzQzOyAqLwomIzQzO3N0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXUxNiBzZXQgPSAwOwomIzQzOwlpbnQgcmV0LCB2YWw7CiYjNDM7CXMzMiByeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfUlhfREVMX1ZBTDsKJiM0MzsJczMyIHR4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVElBTF9UWF9ERUxfVkFMOwomIzQzOwomIzQzOwlpZiAoIXBoeV9pbnRlcmZhY2VfaXNfcmdtaWkocGh5ZGV2KSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlpZiAocGh5ZGV2LSZndDtpbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQpCiYjNDM7CQlyeF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSwKJiM0MzsJCQkJCQkJICAgREFQODIxMVJfREVMQVlfU0laRSwgdHJ1ZSk7CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O2ludGVyZmFjZSAhPSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRCkKJiM0MzsJCXR4X2ludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LAomIzQzOwkJCQkJCQkgICBEQVA4MjExUl9ERUxBWV9TSVpFLCBmYWxzZSk7CiYjNDM7CiYjNDM7CXN3aXRjaCAocGh5ZGV2LSZndDtpbnRlcmZhY2UpIHsKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CiYjNDM7CQlpZiAocnhfaW50ZXJuYWxfZGVsYXkgJmx0OyAwKQomIzQzOwkJCXJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMOwomIzQzOwomIzQzOwkJaWYgKHR4X2ludGVybmFsX2RlbGF5ICZsdDsgMCkKJiM0MzsJCQl0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOgomIzQzOwkJaWYgKHJ4X2ludGVybmFsX2RlbGF5ICZsdDsgMCkKJiM0MzsJCQlyeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDoKJiM0MzsJCWlmIChyeF9pbnRlcm5hbF9kZWxheSAmbHQ7IDApCiYjNDM7CQkJcnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7CiYjNDM7CQlmYWxsdGhyb3VnaDsKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDoKJiM0MzsJCWlmICh0eF9pbnRlcm5hbF9kZWxheSAmbHQ7IDApCiYjNDM7CQkJdHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O1Vuc3VwcG9ydGVkIGludGVyZmFjZTogJWRcbiYjMzQ7LAomIzQzOwkJCSAgIHBoeWRldi0mZ3Q7aW50ZXJmYWNlKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCByeF9pbnRlcm5hbF9kZWxheSk7CiYjNDM7CXNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCB0eF9pbnRlcm5hbF9kZWxheSk7CiYjNDM7CiYjNDM7CXJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CS8qIFdhaXQgZm9yIHJlc2V0IHNlbGYtY2xlYXIgKGZyb20gbG93IGFjdGl2ZSB0byBoaWdoKSAqLwomIzQzOwlyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLAomIzQzOwkJCQkodmFsICZhbXA7IERBUDgyMTFSX1BIWV9TV19SU1QpLAomIzQzOwkJCQkyMCwgMjAwLCBmYWxzZSwgcGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CWlmICh2YWwgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHZhbDsKJiM0MzsKJiM0MzsJcmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRhcDgyMTFyX2RyaXZlcltdID0gewomIzQzOwl7CiYjNDM7CQlQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSwKJiM0MzsJCS5uYW1lCQk9ICYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCYjMzQ7LAomIzQzOwkJLnNvZnRfcmVzZXQJPSBnZW5waHlfc29mdF9yZXNldCwKJiM0MzsJCS5jb25maWdfaW5pdAk9IGRhcDgyMTFyX2NvbmZpZ19pbml0LAomIzQzOwkJLnJlYWRfc3RhdHVzCT0gZ2VucGh5X3JlYWRfc3RhdHVzLAomIzQzOwkJLnNldF9sb29wYmFjawk9IGdlbnBoeV9sb29wYmFjaywKJiM0MzsJCS5jb25maWdfYW5lZwk9IGdlbnBoeV9jb25maWdfYW5lZywKJiM0MzsJCS5zdXNwZW5kCT0gZ2VucGh5X3N1c3BlbmQsCiYjNDM7CQkucmVzdW1lCQk9IGdlbnBoeV9yZXN1bWUsCiYjNDM7CX0sCiYjNDM7fTsKJiM0Mzttb2R1bGVfcGh5X2RyaXZlcihkYXA4MjExcl9kcml2ZXIpOwomIzQzOwomIzQzO01PRFVMRV9ERVNDUklQVElPTigmIzM0O0RBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGRyaXZlciYjMzQ7KTsKJiM0MztNT0RVTEVfQVVUSE9SKCYjMzQ7QXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRhcDgyMTFyX3RiW10gPSB7CiYjNDM7CXsgREFQODIxMVJfUEhZX0lELCBEQVA4MjExUl9QSFlfSURfTUFTSyB9LAomIzQzOwl7IC8qIHNlbnRpbmVsICovIH0KJiM0Mzt9OwomIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpOwomIzQzOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTYzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBEQVA4MjExUiBQSFkgRHJpdmVyKioKCk9rYXksIHNvIHdlIGhhdmUgYSBuZXcgUEhZIGRyaXZlciBoZXJlIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgcGF0Y2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgTWFrZWZpbGUsIGFuZCB0aGUgZHJpdmVyIGl0c2VsZiAoYGRhcDgyMTFyLmNgKS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBzdGFuZGFyZCBQSFkgaW5pdGlhbGl6YXRpb24sIHJlYWQvbW9kaWZ5IGZ1bmN0aW9ucyBhbmQgdXRpbGl6ZXMgc29tZSBnZW5lcmljIFBIWSBmdW5jdGlvbnMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBhY3R1YWxseSByZWFjaCB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFBIWSBkcml2ZXJzLCBhcyB3ZSBrbm93LCBhcmUgcHJvYmVkIHZpYSB0aGUgTURJTyBidXMuIFFFTVUgKm1pZ2h0KiBoYXZlIE1ESU8gYnVzZXMgb24gc29tZSBuZXR3b3JrIGRldmljZXMsIGFsbG93aW5nIFBIWSBwcm9iaW5nIGJhc2VkIG9uIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zIG9yIGRyaXZlciBpbnN0YW50aWF0aW9uLiBIb3dldmVyLCBzcGVjaWZpYyBQSFkgZHJpdmVycyB1c3VhbGx5IHByb2JlIG9ubHkgaWYgdGhlIGhhcmR3YXJlIHJlcG9ydHMgdGhlaXIgc3BlY2lmaWMgSUQgKGluIHRoaXMgY2FzZSBgMHgwMDA4MDExQmApIG9yIGlmIHRoZSBkZXZpY2UgdHJlZSBleHBsaWNpdGx5IGxpc3RzIGEgY29tcGF0aWJsZSBzdHJpbmcuCgpDYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gVGhhdCYjMzk7cyB0aGUga2V5IHF1ZXN0aW9uLiBDYW4gaXQgaW5zdGFudGlhdGUgdGhlIGRyaXZlcj8gU3l6a2FsbGVyIGhhcyBzb21lIG5ldHdvcmsgY2FwYWJpbGl0aWVzIHdpdGggYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYW5kIHN1Y2gsIGJ1dCBmb3IgUEhZcyBpdCBoaW5nZXMgb24gdGhlIE1ESU8gYnVzLiBDYW4gdXNlcnNwYWNlIHNvbWVob3cgKmRpcmVjdGx5KiBpbnN0YW50aWF0ZSBhIFBIWSBkcml2ZXIgdGhyb3VnaCBzeXNmcyBvciBuZXRsaW5rPyBObywgbm9ybWFsbHkgUEhZcyBhcmUgcHJvYmVkIHZpYSBNRElPIHNjYW5uaW5nLgoKU28sIGZvciBzeXprYWxsZXIgdG8gcmVhY2ggdGhpcywgd2UmIzM5O2QgbmVlZCBhbiBlbXVsYXRlZCBNRElPIGJ1cywgb3IgcGVyaGFwcyBhIHZpcnR1YWwgZHJpdmVyLiBEb2VzIHN5emthbGxlciBoYXZlIHRoaXM/IEkga25vdyBpdCBjYW4gaW5qZWN0IE1ESU8gZnJhbWVzIGluIHRoZSByaWdodCBjaXJjdW1zdGFuY2VzLiBJdCBkb2VzbiYjMzk7dCBzZWVtIHRvLCBidXQgbWF5YmUgdGhyb3VnaCB0aGUgcmlnaHQgbWVjaGFuaXNtcy4gSSYjMzk7bSB0aGlua2luZyBvZiBzb21ldGhpbmcgbGlrZSBgbWFjc2VjYCBvciBgZHVtbXlgIGJ1dCB0aG9zZSBkb24mIzM5O3QgaGF2ZSBNRElPLgoKTGV0JiMzOTtzIHRoaW5rIGFib3V0IHRoZSBkcml2ZXIgaXRzZWxmLiBgZGFwODIxMXJfY29uZmlnX2luaXRgIGlzIGNhbGxlZCB3aGVuIHRoZSBQSFkgaXMgaW5pdGlhbGl6ZWQuIEl0JiMzOTtzIHRoZSBlbnRyeSBwb2ludC4gSXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBQSFkgZHJpdmVycyBhcmUgb2Z0ZW4gdmVyeSBoYXJkd2FyZS1zcGVjaWZpYywgd2hpY2ggbWFrZXMgcmVhY2hpbmcgdGhlbSBkaWZmaWN1bHQgd2l0aG91dCBlbXVsYXRpbmcgdGhlIGV4YWN0IGhhcmR3YXJlLgoKTGV0JiMzOTtzIHRoaW5rIGFib3V0IHRoZSBpbnN0cnVjdGlvbnMgZm9yIGRldGVybWluaW5nIGlmIGEgcGF0Y2ggaXMgd29ydGggZnV6emluZy4gVGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHRoYXQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyBpcyBub3Qgd29ydGggZnV6emluZyBpZiB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBzZWVtcyBzaW1pbGFyOiBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyLiBJdCByZXF1aXJlcyBhbiBNRElPIGJ1cyBhbmQgdGhlIHNwZWNpZmljIFBIWSBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgYSBtYXRjaGluZyBkZXZpY2UgdHJlZSBub2RlLiBDYW4gd2UgcmVhY2ggaXQgaW4gc3RhbmRhcmQgUUVNVT8gUHJvYmFibHkgbm90LiBRRU1VIGVtdWxhdGVzIGdlbmVyaWMgUEhZcywgYnV0IG5vdCB0aGlzIHNwZWNpZmljIG9uZSwgREFQODIxMVIuIEFsc28sIHRoZSBkcml2ZXIgaXMgdmVyeSBzaW1wbGU7IG1vc3RseSByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzLgoKSSYjMzk7bSB0aGlua2luZywgaXMgdGhlcmUgKmFueSogd2F5IHRvIHRyaWdnZXIgdGhpcz8gQW5kLCBpZiB3ZSBjYW4mIzM5O3QgZWFzaWx5IHJlYWNoIGl0LCB3ZSBzaG91bGQgbWFyayBpdCBhcyBub3Qgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiBzeXprYWxsZXIgaGFzIHNvbWUgYWR2YW5jZWQgTURJTyBpbmplY3Rpb24gdHJpY2tzLiBJJiMzOTtsbCBzZWFyY2ggc3l6a2FsbGVyIGZvciBgbWRpb2AuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIGF2b2lkIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFBIWSBkcml2ZXJzIGFyZSBnZW5lcmFsbHkgaW4gdGhhdCBjYXRlZ29yeSwgdW5sZXNzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgZW11bGF0aW9uIG9yIGEgdXNlcnNwYWNlLWNvbnRyb2xsYWJsZSBzb2Z0d2FyZSBNRElPIGJ1cy4gSXMgdGhlcmUgYSBzb2Z0d2FyZSBNRElPIGJ1cz8gSSYjMzk7bGwgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkgZm9yIHNvbWV0aGluZyBsaWtlIGBtZGlvLW1vY2t1cGAgb3IgYG1kaW8tZ3Bpb2AgdGhhdCBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UuIEV2ZW4gaWYgb25lIGV4aXN0cywgdGhlIGRyaXZlciBpdHNlbGYgaXMgZXh0cmVtZWx5IHNpbXBsZS4KCk9rYXksIEkmIzM5O20gZ29pbmcgdG8gbWFyayB0aGlzIGFzIFdvcnRoRnV6emluZz1mYWxzZS4gSXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciB0aGF0IHJlcXVpcmVzIGVpdGhlciBwaHlzaWNhbCBoYXJkd2FyZSAob3Igc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbikgb3IgYSB2ZXJ5IHNwZWNpZmljIFFFTVUgZW11bGF0aW9uLiBTdGFuZGFyZCBRRU1VLCBJJiMzOTttIHByZXR0eSBzdXJlLCB3b24mIzM5O3QgY3V0IGl0LiBJIG5lZWQgdG8gZ28gb3ZlciB0aGUgdmlydHVhbCBNRElPIGRyaXZlcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLiptb2NrdXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNTEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFVzZXJzcGFjZSBNRElPIERyaXZlciBJbnRlcmFjdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGEgbWVjaGFuaXNtIGluIHRoZSBjdXJyZW50IGtlcm5lbCB0aGF0IGFsbG93cyBmb3IgdXNlci1zcGFjZSBpbnN0YW50aWF0aW9uIG9mIGFuIGBtZGlvYCBkcml2ZXIuIE15IGltbWVkaWF0ZSBmb2N1cyB3aWxsIGJlIG9uIHRoZSB0eXBpY2FsIGRyaXZlciBsb2NhdGlvbnMsIHNvIEkmIzM5O2xsIGJlIHNlYXJjaGluZyB0aHJvdWdoIGBkcml2ZXJzL25ldC9waHkvYCBhbmQgYGRyaXZlcnMvbmV0L21kaW8vYC4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IHN1Z2dlc3RzIGEgbWVhbnMgZm9yIHVzZXItc3BhY2UgcHJvZ3JhbXMgdG8gaW50ZXJmYWNlIHdpdGggb3IgZXZlbiBkaXJlY3RseSBtYW5hZ2UgYW4gTURJTyBQSFkuIEVzc2VudGlhbGx5LCBpcyB0aGVyZSBhIHVzZXItc3BhY2UgQVBJIGJ1aWx0IG9uIHRvcCBvZiB0aGUgTURJTyBidXMgY29kZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGtlcm5lbCBwcm92aWRlcyBhIGZyYW1ld29yayBmb3IgdXNlcmxhbmQgdG8gcmVnaXN0ZXIgYW5kIGNvbnRyb2wgaXRzIG93biBNRElPIGRyaXZlcnMgYW5kIG1hbmFnZSBNRElPIGRldmljZXMgZGlyZWN0bHksIHJhdGhlciB0aGFuIHNvbGVseSB0aHJvdWdoIHRoZSBzdGFuZGFyZCBuZXR3b3JrIGludGVyZmFjZSBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWNwaV9tZGlvLmMmIzM0OywKICAgICYjMzQ7Zndub2RlX21kaW8uYyYjMzQ7LAogICAgJiMzNDttZGlvLWFpcm9oYS5jJiMzNDssCiAgICAmIzM0O21kaW8tYXNwZWVkLmMmIzM0OywKICAgICYjMzQ7bWRpby1iY20taXByb2MuYyYjMzQ7LAogICAgJiMzNDttZGlvLWJjbS11bmltYWMuYyYjMzQ7LAogICAgJiMzNDttZGlvLWJpdGJhbmcuYyYjMzQ7LAogICAgJiMzNDttZGlvLWNhdml1bS5jJiMzNDssCiAgICAmIzM0O21kaW8tY2F2aXVtLmgmIzM0OywKICAgICYjMzQ7bWRpby1ncGlvLmMmIzM0OywKICAgICYjMzQ7bWRpby1oaXNpLWZlbWFjLmMmIzM0OywKICAgICYjMzQ7bWRpby1pMmMuYyYjMzQ7LAogICAgJiMzNDttZGlvLWlwcTQwMTkuYyYjMzQ7LAogICAgJiMzNDttZGlvLWlwcTgwNjQuYyYjMzQ7LAogICAgJiMzNDttZGlvLW1veGFydC5jJiMzNDssCiAgICAmIzM0O21kaW8tbXNjYy1taWltLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtYmNtLWlwcm9jLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtYmNtNjM2OC5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LWdwaW8uYyYjMzQ7LAogICAgJiMzNDttZGlvLW11eC1tZXNvbi1nMTJhLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtbWVzb24tZ3hsLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtbW1pb3JlZy5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LW11bHRpcGxleGVyLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXguYyYjMzQ7LAogICAgJiMzNDttZGlvLW12dXNiLmMmIzM0OywKICAgICYjMzQ7bWRpby1vY3Rlb24uYyYjMzQ7LAogICAgJiMzNDttZGlvLXBpYzY0aHBzYy5jJiMzNDssCiAgICAmIzM0O21kaW8tcmVhbHRlay1ydGw5MzAwLmMmIzM0OywKICAgICYjMzQ7bWRpby1yZWdtYXAuYyYjMzQ7LAogICAgJiMzNDttZGlvLXN1bjRpLmMmIzM0OywKICAgICYjMzQ7bWRpby10aHVuZGVyLmMmIzM0OywKICAgICYjMzQ7bWRpby14Z2VuZS5jJiMzNDssCiAgICAmIzM0O29mX21kaW8uYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgxNQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipQb3RlbnRpYWwgZm9yIFN5emthbGxlciBJbnRlZ3JhdGlvbjogVVNCLWJhc2VkIE1ESU8gQWRhcHRlcioqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBNRElPIGRyaXZlcnMgaGVyZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHNlZWluZyByZWZlcmVuY2VzIHRvIGBtZGlvLWdwaW8uY2AsIGBtZGlvLWkyYy5jYCwgYW5kIHRoZW4gdGhpcyBpbnRlcmVzdGluZyBvbmU6IGBtZGlvLW12dXNiLmNgLiAgQSBVU0IgdG8gTURJTyBhZGFwdGVyLi4uIHRoYXQmIzM5O3MgdGhlIE1hcnZlbGwgVVNCIE1ESU8gQWRhcHRlciwgaWYgSSByZWNhbGwgY29ycmVjdGx5LiBOb3cgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBTeXprYWxsZXIuIElmIHdlIGNvdWxkIGVtdWxhdGUgdGhpcyBVU0IgZ2FkZ2V0LCB0aGF0IG9wZW5zIHVwIGEgd2hvbGUgbmV3IGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nLiBUaGlzIGNvdWxkIGJlIGEgc2lnbmlmaWNhbnQgZGlzY292ZXJ5LiBUaGUgaW1wbGljYXRpb25zIGFyZSBwb3RlbnRpYWxseSBodWdlIGZvciB0ZXN0aW5nIHRoaXMga2luZCBvZiBoYXJkd2FyZS4gU28sIHdoZXJlIHRvIHN0YXJ0PyBMZXQmIzM5O3MgZGl2ZSBpbnRvIGBtZGlvLW12dXNiLmNgIGFuZCBzZWUgd2hhdCBtYWtlcyBpdCB0aWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01hcnZlbGwgVVNCIE1ESU8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmM9MTExPU1PRFVMRV9BVVRIT1IoXCYjMzQ7VG9iaWFzIFdhbGRla3JhbnogXHUwMDNjdG9iaWFzQHdhbGRla3JhbnouY29tXHUwMDNlXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jOjExMjpNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TWFydmVsbCBVU0IgTURJTyBBZGFwdGVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jLTExMy1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMDUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW11bGF0aW5nIHRoZSBNYXJ2ZWxsIFVTQiBNRElPIEFkYXB0ZXIgaW4gU3l6a2FsbGVyOiBBIEZlYXNpYmlsaXR5IEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHN5emthbGxlciBjb3VsZCBwb3NzaWJseSBlbXVsYXRlIHRoaXMgTWFydmVsbCBVU0IgTURJTyBhZGFwdGVyLiBJZiB3ZSBjb3VsZCBnZXQgaXQgdG8gcmVnaXN0ZXIgYW4gTURJTyBidXMsIHRoYXQgd291bGQgYmUgYSBodWdlIHN0ZXAuIEJ1dCB0aGVuIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBob3cgZG9lcyBpdCBpbnN0YW50aWF0ZSB0aGUgc3BlY2lmaWMgUEhZPyBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIFBIWSBpcyB0eXBpY2FsbHkgZGlzY292ZXJlZCB0aHJvdWdoIHByb2JpbmcgdGhlIE1ESU8gYnVzLiBJZiB0aGUgZW11bGF0ZWQgVVNCIGRldmljZSAqY291bGQqIHNvbWVob3cgcmVzcG9uZCB0byBNRElPIHJlYWRzIG9uIHRob3NlIGNydWNpYWwgUEhZIElEIHJlZ2lzdGVycyAocmVnaXN0ZXJzIDIgYW5kIDMsIHRvIGJlIHByZWNpc2UpLCBhbmQgcmV0dXJuZWQgYDB4MDAwODAxMUJgLCB0aGUga2VybmVsIHdvdWxkIGhhcHBpbHkgbG9hZCBhbmQgYmluZCB0aGUgYGRhcDgyMTFyYCBkcml2ZXIuIEJpbmdvIQoKQnV0IHRoYXQgYnJpbmdzIHVwIHRoZSBiaWcgcXVlc3Rpb246IGRvZXMgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6ZXIgZXZlbiBrbm93IGhvdyB0byByZXNwb25kIHRvIE1ESU8gcmVhZCByZXF1ZXN0cyB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgTWFydmVsbCBVU0IgcHJvdG9jb2w/IFRoYXQmIzM5O3MgdGhlIGNydXggb2YgaXQsIHJpZ2h0PyBJJiMzOTttIGFzc3VtaW5nIHRoZSBNYXJ2ZWxsIFVTQiBNRElPIGFkYXB0ZXIgcHJvdG9jb2wgaXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQuIFN5emthbGxlciYjMzk7cyBVU0IgZnV6emVyIGdlbmVyYXRlcyByZXNwb25zZXMgcmFuZG9tbHksIGluIGdlbmVyYWwuIFNvIHRoZXJlJiMzOTtzIGFsd2F5cyBhIHRoZW9yZXRpY2FsIHBvc3NpYmlsaXR5IG9mIGl0IGFjY2lkZW50YWxseSByZXR1cm5pbmcgdGhlICpjb3JyZWN0KiBQSFkgSUQsIGJ1dCB0aGUgcHJvYmFiaWxpdHkgb2YgaXQgcmFuZG9tbHkgaGl0dGluZyAqZXhhY3RseSogYDB4MDAwODAxMUJgIGluIHRoZSAqcmlnaHQqIHJlZ2lzdGVycyBpcyB2YW5pc2hpbmdseSBzbWFsbC4gV2UmIzM5O2QgZXNzZW50aWFsbHkgYmUgdGFsa2luZyBhYm91dCB3aW5uaW5nIHRoZSBsb3R0ZXJ5LiBVbmxlc3MsIG9mIGNvdXJzZSwgdGhlcmUgYXJlIGV4aXN0aW5nIHN5emxhbmcgZGVzY3JpcHRpb25zIHNwZWNpZmljYWxseSBmb3IgdGhpcyBwcm90b2NvbCwgd2hpY2ggd291bGQgbWFrZSB0aGUgY2hhbmNlIG9mIGdlbmVyYXRpbmcgdGhhdCBtYWdpYyBudW1iZXIgbXVjaCBoaWdoZXIuCgpSaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucywgb3IgYW55IGluZm9ybWF0aW9uIGF0IGFsbCwgdGhhdCBkZWFsIHdpdGggYG1kaW9gIG9yIGBtdnVzYmAuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcCBpbiBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg0NQoJCQkJCQkJb3V0cHV0OiAxMzIKCQkJCQkJCXRob3VnaHRzOiA4ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIERBUDgyMTFSIFBIWSBEcml2ZXIqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZ3JlcHBlcmAgaXMgb2ZmLWxpbWl0cyBmb3IgYHN5cy9gIGZpbGVzLCBzcGVjaWZpY2FsbHkgdGhlIHN5emthbGxlciBsYW5ndWFnZSBkZXNjcmlwdGlvbnMuIEkgbmVlZCB0byB1c2UgYHJlYWQtc3l6LXNwZWNgIG9yIGBzeXotZ3JlcHBlcmAgZm9yIHRob3NlLCBidXQgbmVpdGhlciBvZiB0aG9zZSB0b29scyBpcyBpbiBteSBjdXJyZW50IGFyc2VuYWwuIFNvLCBjaGVja2luZyBzeXpsYW5nIGRlc2NyaXB0aW9ucyBpcyBvdXQuCgpFdmVuIGlmIEkgKmNvdWxkKiBnZXQgYXQgdGhlIHN5emxhbmcsIHRoaXMgZHJpdmVyIGl0c2VsZiBsb29rcyBpbmNyZWRpYmx5IHNpbXBsZS4gSSBzZWUgdGhlIGNvZGUsIGFuZCBpdCYjMzk7cyBqdXN0IGEgc2VxdWVuY2Ugb2YgTURJTyByZWFkcyBhbmQgd3JpdGVzLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBpbml0aWFsaXppbmcgYSBwaWVjZSBvZiBoYXJkd2FyZS4gTm8gY29tcGxleCBsb2dpYywgbm8gTmV0bGluayBpbnRlcmZhY2VzLCBubyBzeXNmcyBhdHRyaWJ1dGVzLCBub3RoaW5nIHRoYXQgd291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIEZ1enppbmcgdGhpcyB0aGluZyB3b3VsZCBiYXNpY2FsbHkgYm9pbCBkb3duIHRvIHJhbmRvbWx5IHJldHVybmluZyB2YWx1ZXMgZnJvbSB0aGUgYGRhcDgyMTFyX3JlYWRfZXh0YCBmdW5jdGlvbi4gSXMgdGhhdCByZWFsbHkgd29ydGggdGhlIGVmZm9ydD8KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhLiBNeSBpbnRlcm5hbCBydWxlIHNheXMsICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi50aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LiBUaGlzIERBUDgyMTFSIGRyaXZlciBpcyBhIHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkuIEl0ICpyZXF1aXJlcyogdGhlIHBoeXNpY2FsIERBUDgyMTFSIGhhcmR3YXJlLiBUaGVvcmV0aWNhbGx5LCBJIGNvdWxkICptYXliZSogcmVhY2ggaXQgd2l0aCBhIFVTQi1NRElPIGFkYXB0ZXIgYW5kIHJhbmRvbSBVU0IgcmVzcG9uc2VzLCBidXQgdGhhdCYjMzk7cyBhIGxvbmcgc2hvdCBhbmQgbm90IHRoZSBpbnRlbmRlZCBzZXR1cC4gSXQmIzM5O3MgaW1wcmFjdGljYWwgYW5kIG5vdCB3aGF0IHRoaXMgZnV6emVyIGlzIGRlc2lnbmVkIGZvci4gUGx1cywgaXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLCB3aGljaCBpcyBhbm90aGVyIG1hcmsgYWdhaW5zdCBpdC4KCk9rYXksIGxldCYjMzk7cyBjb25zaWRlciBvdGhlciBhdmVudWVzIHRvIHJlYWNoIGl0LiBEZXZpY2UgdHJlZT8gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IHR5cGljYWxseSBpbmplY3QgYXJiaXRyYXJ5IGRldmljZSB0cmVlcyBhdCBydW50aW1lIChiYXJyaW5nIG92ZXJsYXlzLCBidXQgdGhhdCYjMzk7cyByZXN0cmljdGVkKS4gTm9wZS4gVGhhdCYjMzk7cyBub3QgYSBwYXRoLgoKU28sIGhlcmUmIzM5O3MgbXkgY29uY2x1c2lvbjogVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEl0cyBsb2dpYyBpcyBleHRyZW1lbHkgdHJpdmlhbOKAlGp1c3QgYSByZWdpc3RlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGhlcmVmb3JlLCBpdCYjMzk7cyBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bSBnb2luZyB0byBkb2N1bWVudCB0aGUgcmVhc29uaW5nIGNvbmNpc2VseSBhcyBmb2xsb3dzOiAmIzM0O1RoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKS4gUEhZIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0byBiZSBwcmVzZW50IG9uIGFuIE1ESU8gYnVzIChvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIFFFTVUpIHRvIGJlIHByb2JlZCBhbmQgZXhlY3V0ZWQuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgKHJlZ2lzdGVyIHJlYWRzL3dyaXRlcykgYW5kIGRvZXMgbm90IGV4cG9zZSBhbnkgY29tcGxleCBzb2Z0d2FyZSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OwoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIG90aGVyIG1vZGlmaWVkIGZpbGVzIHRvIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2Ugc25lYWt5IGlzIGdvaW5nIG9uLiBJJiMzOTtsbCBsb29rIGF0IGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbGAsIGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnlhbWxgLCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLCBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCwgYW5kIGBkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY2AuIE9rYXksIGl0JiMzOTtzIGFsbCBkaXJlY3RseSByZWxhdGVkIHRvIHRoaXMgb25lIFBIWSBkcml2ZXIuCgpBbHJpZ2h0LCBJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdmVuZG9yLXNwZWNpZmljIEV0aGVybmV0IFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkuIFBIWSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gYmUgcHJlc2VudCBvbiBhbiBNRElPIGJ1cyAob3Igc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMgYW5kIGhhcmR3YXJlIGVtdWxhdGlvbiBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCBRRU1VKSB0byBiZSBwcm9iZWQgYW5kIGV4ZWN1dGVkLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIChyZWdpc3RlciByZWFkcy93cml0ZXMpIGFuZCBkb2VzIG5vdCBleHBvc2UgYW55IGNvbXBsZXggc29mdHdhcmUgaW50ZXJmYWNlcywgbWFraW5nIGl0IHVuc3VpdGFibGUgYW5kIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKS4gUEhZIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0byBiZSBwcmVzZW50IG9uIGFuIE1ESU8gYnVzIChvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIFFFTVUpIHRvIGJlIHByb2JlZCBhbmQgZXhlY3V0ZWQuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgKHJlZ2lzdGVyIHJlYWRzL3dyaXRlcykgYW5kIGRvZXMgbm90IGV4cG9zZSBhbnkgY29tcGxleCBzb2Z0d2FyZSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMTozMzoyMi41MTIxMTU1MzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg1NjM3NjQzODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBQSFkgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgb24gYW4gTURJTyBidXMgKG9yIHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zIGFuZCBoYXJkd2FyZSBlbXVsYXRpb24gbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgUUVNVSkgdG8gYmUgcHJvYmVkIGFuZCBleGVjdXRlZC4gRnVydGhlcm1vcmUsIHRoZSBkcml2ZXIgb25seSBjb250YWlucyB0cml2aWFsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyAocmVnaXN0ZXIgcmVhZHMvd3JpdGVzKSBhbmQgZG9lcyBub3QgZXhwb3NlIGFueSBjb21wbGV4IHNvZnR3YXJlIGludGVyZmFjZXMsIG1ha2luZyBpdCB1bnN1aXRhYmxlIGFuZCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzM6MjIuNTEyMTIyNTkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI2NTExOTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmE0YzU0Yjk4ZTg2ZjlhYWY5NTQ5ZGI4MDQxMjU1NmY1ZmFmMTY1M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDExOjMzOjIwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmZiNzhmYTRmNThjYTNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxcXG5AQCAtMCwwICsxLDYyIEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxcbislWUFNTCAxLjJcXG4rLS0tXFxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2RhcHUsZGFwODIxMXIueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZXFxuK1xcbittYWludGFpbmVyczpcXG4rICAtIEFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXG4rXFxuK2Rlc2NyaXB0aW9uOiB8XFxuKyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXFxuKyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxcbisgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy5cXG4rXFxuKyAgU3BlY2lmaWNhdGlvbnM6XFxuKyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxcbisgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxcbisgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XFxuKyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XFxuKyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcXG4rXFxuK2FsbE9mOlxcbisgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXFxuK1xcbitwcm9wZXJ0aWVzOlxcbisgIGNvbXBhdGlibGU6XFxuKyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXFxuK1xcbisgIHJlZzpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbisgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxcbisgICAgbXVsdGlwbGVPZjogMTUwXFxuKyAgICBtYXhpbXVtOiAyMjUwXFxuKyAgICBkZWZhdWx0OiAxOTUwXFxuK1xcbisgIHR4LWludGVybmFsLWRlbGF5LXBzOlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxcbisgICAgbXVsdGlwbGVPZjogMTUwXFxuKyAgICBtYXhpbXVtOiAyMjUwXFxuKyAgICBkZWZhdWx0OiAxOTUwXFxuK1xcbit1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXFxuK1xcbitleGFtcGxlczpcXG4rICAtIHxcXG4rICAgIG1kaW8ge1xcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXG4rICAgICAgICBldGhlcm5ldC1waHlAMSB7XFxuKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwiZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXFxcIjtcXG4rICAgICAgICAgICAgcmVnID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9IFxcdTAwM2MyMTAwXFx1MDAzZTtcXG4rICAgICAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHMgPSBcXHUwMDNjMjEwMFxcdTAwM2U7XFxuKyAgICAgICAgfTtcXG4rICAgIH07XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMueWFtbFxcbmluZGV4IDM5NjA0NGYzNjhlN2MuLmMzZGI4NTdiOTgzNzIgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXFxuQEAgLTQwMyw2ICs0MDMsOCBAQCBwYXR0ZXJuUHJvcGVydGllczpcXG4gICAgIGRlc2NyaXB0aW9uOiBDWi5OSUMsIHoucy5wLm8uXFxuICAgXFxcIl5kYWxsYXMsLipcXFwiOlxcbiAgICAgZGVzY3JpcHRpb246IE1heGltIEludGVncmF0ZWQgUHJvZHVjdHMgKGZvcm1lcmx5IERhbGxhcyBTZW1pY29uZHVjdG9yKVxcbisgIFxcXCJeZGFwdSwuKlxcXCI6XFxuKyAgICBkZXNjcmlwdGlvbjogR3Vhbmdkb25nIERhcHUgVGVsZWNvbSBDby4sIEx0ZC5cXG4gICBcXFwiXmRhdGFpbWFnZSwuKlxcXCI6XFxuICAgICBkZXNjcmlwdGlvbjogRGF0YUltYWdlLCBJbmMuXFxuICAgXFxcIl5kYXZpY29tLC4qXFxcIjpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xcbmluZGV4IDA5OWYyNWRjZWFiYmMuLjM5NWJjZDM1YmZmYTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xcbkBAIC0yMzIsNiArMjMyLDE1IEBAIGNvbmZpZyBDT1JUSU5BX1BIWVxcbiBcXHRoZWxwXFxuIFxcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBDUzQzNDAgcGh5LlxcbiBcXG4rY29uZmlnIERBUDgyMTFSX1BIWVxcbitcXHR0cmlzdGF0ZSBcXFwiREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZXFxcIlxcbitcXHRkZXBlbmRzIG9uIE9GXFxuK1xcdGhlbHBcXG4rXFx0ICBTdXBwb3J0IGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxcbitcXHQgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmdcXG4rXFx0ICBhcHBsaWNhdGlvbnMsIHN1cHBvcnRpbmcgMTAvMTAwLzEwMDAgTWJwcyBvcGVyYXRpb24uIFN1cHBvcnRzXFxuK1xcdCAgUkdNSUkgaW50ZXJmYWNlIHdpdGggY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cy5cXG4rXFxuIGNvbmZpZyBEQVZJQ09NX1BIWVxcbiBcXHR0cmlzdGF0ZSBcXFwiRGF2aWNvbSBQSFlzXFxcIlxcbiBcXHRoZWxwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxcbmluZGV4IGRlNjYwYWU5NDk0NTMuLmM3MmY3NzMwZTI1ZGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuQEAgLTUyLDYgKzUyLDcgQEAgb2JqLSQoQ09ORklHX0JDTV9ORVRfUEhZUFRQKVxcdCs9IGJjbS1waHktcHRwLm9cXG4gb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcXHQrPSBicm9hZGNvbS5vXFxuIG9iai0kKENPTkZJR19DSUNBREFfUEhZKVxcdCs9IGNpY2FkYS5vXFxuIG9iai0kKENPTkZJR19DT1JUSU5BX1BIWSlcXHQrPSBjb3J0aW5hLm9cXG4rb2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSlcXHQrPSBkYXA4MjExci5vXFxuIG9iai0kKENPTkZJR19EQVZJQ09NX1BIWSlcXHQrPSBkYXZpY29tLm9cXG4gb2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKVxcdCs9IGRwODM2NDAub1xcbiBvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXFx0Kz0gZHA4MzgyMi5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmYwMTBjZTBjM2JkMTNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcXG5AQCAtMCwwICsxLDIwNiBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKlxcbisgKiBEcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXFxuKyAqXFxuKyAqIFNwZWNpZmljYXRpb25zOlxcbisgKiAgIC0gSUVFRSA4MDIuMyAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcXG4rICogICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXRcXG4rICogICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XFxuKyAqICAgLSBSR01JSVxcbisgKlxcbisgKiBBdXRob3I6IEFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXG4rICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0ZmllbGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGh0b29sLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbWlpLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGRldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuK1xcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9JRFxcdFxcdFxcdDB4MDAwODAxMUJcXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfSURfTUFTS1xcdFxcdDB4RkZGRkZGRkZcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfRVhUX0FERFxcdFxcdDB4MUVcXG4rI2RlZmluZSBEQVA4MjExUl9FWFRfREFUQVxcdFxcdDB4MUZcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfUEhZX0NPTlxcdFxcdDB4QTAwMVxcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9TV19SU1RcXHRcXHRCSVQoMTUpXFxuK1xcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTlxcdFxcdDB4QTAwM1xcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLXFx0R0VOTUFTSygzLCAwKVxcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLXFx0R0VOTUFTSygxMywgMTApXFxuK1xcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLXFx0KERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spXFxuK1xcbisvKiBJbml0aWFsIFJHTUlJIFJYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAwICogMTUwcHMgPT0gMC4wMG5zICovXFxuKyNkZWZpbmUgREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMXFx0MFxcbisvKiBJbml0aWFsIFJHTUlJIFRYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAxICogMTUwcHMgPT0gMC4xNW5zKi9cXG4rI2RlZmluZSBEQVA4MjExUl9JTklUSUFMX1RYX0RFTF9WQUxcXHQxXFxuKy8qIERlZmF1bHQgUkdNSUkgZGVsYXk6IDEzICogMTUwID09IDEuOTVucyAqL1xcbisjZGVmaW5lIERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTFxcdDB4RFxcbitcXG4rc3RhdGljIGNvbnN0IGludCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheVtdID0gezAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIDEwNTAsIDEyMDAsIDEzNTAsIDE1MDAsIDE2NTAsIDE4MDAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIDE5NTAsIDIxMDAsIDIyNTB9O1xcbitcXG4rI2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFXFx0QVJSQVlfU0laRShkYXA4MjExcl9pbnRlcm5hbF9kZWxheSlcXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9yZWFkX2V4dCgpIC0gUmVhZCBleHRlbmRlZCByZWdpc3RlclxcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXFxuKyAqXFxuKyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxcbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cXG4rICpcXG4rICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXFxuKyAqL1xcbitzdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0cmV0ID0gX19waHlfcmVhZChwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBKTtcXG4rb3V0OlxcbitcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0c1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXFxuKyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyXFxuKyAqIEBzZXQ6IEJpdCBtYXNrIG9mIGJpdHMgdG8gc2V0XFxuKyAqXFxuKyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxcbisgKiBOZXcgdmFsdWUgPSAob2xkIHZhbHVlIFxcdTAwMjYgfm1hc2spIHwgc2V0LlxcbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcXG4rICovXFxuK3N0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcXG4re1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG4rXFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRyZXQgPSBfX3BoeV9tb2RpZnkocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSwgbWFzaywgc2V0KTtcXG4rb3V0OlxcbitcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFlcXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcXG4rICpcXG4rICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjpcXG4rICogLSBSR01JSSBkZWxheXMgYmFzZWQgb24gaW50ZXJmYWNlIG1vZGVcXG4rICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcilcXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcXG4rICovXFxuK3N0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHR1MTYgc2V0ID0gMDtcXG4rXFx0aW50IHJldCwgdmFsO1xcbitcXHRzMzIgcnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9JTklUSUFMX1JYX0RFTF9WQUw7XFxuK1xcdHMzMiB0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTDtcXG4rXFxuK1xcdGlmICghcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdGlmIChwaHlkZXYtXFx1MDAzZWludGVyZmFjZSAhPSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRClcXG4rXFx0XFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIERBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpO1xcbitcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEKVxcbitcXHRcXHR0eF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgREFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xcbitcXG4rXFx0c3dpdGNoIChwaHlkZXYtXFx1MDAzZWludGVyZmFjZSkge1xcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG4rXFx0XFx0aWYgKHJ4X2ludGVybmFsX2RlbGF5IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9JTklUSUFMX1JYX0RFTF9WQUw7XFxuK1xcbitcXHRcXHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHR0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XFxuK1xcdFxcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XFxuK1xcdFxcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcXG4rXFx0XFx0aWYgKHR4X2ludGVybmFsX2RlbGF5IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0dHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIlVuc3VwcG9ydGVkIGludGVyZmFjZTogJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCByeF9pbnRlcm5hbF9kZWxheSk7XFxuK1xcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCB0eF9pbnRlcm5hbF9kZWxheSk7XFxuK1xcbitcXHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUEhZX0NPTiwgREFQODIxMVJfUEhZX1NXX1JTVCwgMCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHQvKiBXYWl0IGZvciByZXNldCBzZWxmLWNsZWFyIChmcm9tIGxvdyBhY3RpdmUgdG8gaGlnaCkgKi9cXG4rXFx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoZGFwODIxMXJfcmVhZF9leHQsIHZhbCxcXG4rXFx0XFx0XFx0XFx0KHZhbCBcXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxcbitcXHRcXHRcXHRcXHQyMCwgMjAwLCBmYWxzZSwgcGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0aWYgKHZhbCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiB2YWw7XFxuK1xcbitcXHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUkdNSUlfQ09OLCBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSywgc2V0KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZGFwODIxMXJfZHJpdmVyW10gPSB7XFxuK1xcdHtcXG4rXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKERBUDgyMTFSX1BIWV9JRCksXFxuK1xcdFxcdC5uYW1lXFx0XFx0PSBcXFwiREFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuK1xcdFxcdC5zb2Z0X3Jlc2V0XFx0PSBnZW5waHlfc29mdF9yZXNldCxcXG4rXFx0XFx0LmNvbmZpZ19pbml0XFx0PSBkYXA4MjExcl9jb25maWdfaW5pdCxcXG4rXFx0XFx0LnJlYWRfc3RhdHVzXFx0PSBnZW5waHlfcmVhZF9zdGF0dXMsXFxuK1xcdFxcdC5zZXRfbG9vcGJhY2tcXHQ9IGdlbnBoeV9sb29wYmFjayxcXG4rXFx0XFx0LmNvbmZpZ19hbmVnXFx0PSBnZW5waHlfY29uZmlnX2FuZWcsXFxuK1xcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4rXFx0XFx0LnJlc3VtZVxcdFxcdD0gZ2VucGh5X3Jlc3VtZSxcXG4rXFx0fSxcXG4rfTtcXG4rbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiREFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCBQSFkgZHJpdmVyXFxcIik7XFxuK01PRFVMRV9BVVRIT1IoXFxcIkFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXFwiKTtcXG4rTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkYXA4MjExcl90YltdID0ge1xcbitcXHR7IERBUDgyMTFSX1BIWV9JRCwgREFQODIxMVJfUEhZX0lEX01BU0sgfSxcXG4rXFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuK307XFxuK01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpO1xcbitcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzM6MjMuODM5NjY2MDk1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA3MjM2MjA2NDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKS4gUEhZIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0byBiZSBwcmVzZW50IG9uIGFuIE1ESU8gYnVzIChvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIFFFTVUpIHRvIGJlIHByb2JlZCBhbmQgZXhlY3V0ZWQuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgKHJlZ2lzdGVyIHJlYWRzL3dyaXRlcykgYW5kIGRvZXMgbm90IGV4cG9zZSBhbnkgY29tcGxleCBzb2Z0d2FyZSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZhNGM1NGI5OGU4NmY5YWFmOTU0OWRiODA0MTI1NTZmNWZhZjE2NTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDExOjMzOjIwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmZiNzhmYTRmNThjYTNcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXG5AQCAtMCwwICsxLDYyIEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4rJVlBTUwgMS4yXG4rLS0tXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcbitcbittYWludGFpbmVyczpcbisgIC0gQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbitcbitkZXNjcmlwdGlvbjogfFxuKyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXG4rICBzdXBwb3J0aW5nIElFRUUgODAyLjNheiBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0LCBJRUVFIDE1ODggU3luY0UsXG4rICBhbmQgYW4gaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvciBmb3IgZGlhZ25vc3RpY3MuXG4rXG4rICBTcGVjaWZpY2F0aW9uczpcbisgICAgLSAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcbisgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxuKyAgICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXRcbisgICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxuKyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcbitcbithbGxPZjpcbisgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXG4rXG4rcHJvcGVydGllczpcbisgIGNvbXBhdGlibGU6XG4rICAgIGNvbnN0OiBldGhlcm5ldC1waHktaWQwMDA4LjAxMWJcbitcbisgIHJlZzpcbisgICAgbWF4SXRlbXM6IDFcbitcbisgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICBkZXNjcmlwdGlvbjpcbisgICAgICBSR01JSSBSWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS5cbisgICAgbXVsdGlwbGVPZjogMTUwXG4rICAgIG1heGltdW06IDIyNTBcbisgICAgZGVmYXVsdDogMTk1MFxuK1xuKyAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuKyAgICBtdWx0aXBsZU9mOiAxNTBcbisgICAgbWF4aW11bTogMjI1MFxuKyAgICBkZWZhdWx0OiAxOTUwXG4rXG4rdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuK1xuK2V4YW1wbGVzOlxuKyAgLSB8XG4rICAgIG1kaW8ge1xuKyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1xuKyAgICAgICAgZXRoZXJuZXQtcGh5QDEge1xuKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcImV0aGVybmV0LXBoeS1pZDAwMDguMDExYlwiO1xuKyAgICAgICAgICAgIHJlZyA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MyMTAwXHUwMDNlO1xuKyAgICAgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMjEwMFx1MDAzZTtcbisgICAgICAgIH07XG4rICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXG5pbmRleCAzOTYwNDRmMzY4ZTdjLi5jM2RiODU3Yjk4MzcyIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnlhbWxcbkBAIC00MDMsNiArNDAzLDggQEAgcGF0dGVyblByb3BlcnRpZXM6XG4gICAgIGRlc2NyaXB0aW9uOiBDWi5OSUMsIHoucy5wLm8uXG4gICBcIl5kYWxsYXMsLipcIjpcbiAgICAgZGVzY3JpcHRpb246IE1heGltIEludGVncmF0ZWQgUHJvZHVjdHMgKGZvcm1lcmx5IERhbGxhcyBTZW1pY29uZHVjdG9yKVxuKyAgXCJeZGFwdSwuKlwiOlxuKyAgICBkZXNjcmlwdGlvbjogR3Vhbmdkb25nIERhcHUgVGVsZWNvbSBDby4sIEx0ZC5cbiAgIFwiXmRhdGFpbWFnZSwuKlwiOlxuICAgICBkZXNjcmlwdGlvbjogRGF0YUltYWdlLCBJbmMuXG4gICBcIl5kYXZpY29tLC4qXCI6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuaW5kZXggMDk5ZjI1ZGNlYWJiYy4uMzk1YmNkMzViZmZhOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG4rKysgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuQEAgLTIzMiw2ICsyMzIsMTUgQEAgY29uZmlnIENPUlRJTkFfUEhZXG4gXHRoZWxwXG4gXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQ1M0MzQwIHBoeS5cbiBcbitjb25maWcgREFQODIxMVJfUEhZXG4rXHR0cmlzdGF0ZSBcIkRBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWVwiXG4rXHRkZXBlbmRzIG9uIE9GXG4rXHRoZWxwXG4rXHQgIFN1cHBvcnQgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXG4rXHQgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmdcbitcdCAgYXBwbGljYXRpb25zLCBzdXBwb3J0aW5nIDEwLzEwMC8xMDAwIE1icHMgb3BlcmF0aW9uLiBTdXBwb3J0c1xuK1x0ICBSR01JSSBpbnRlcmZhY2Ugd2l0aCBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzLlxuK1xuIGNvbmZpZyBEQVZJQ09NX1BIWVxuIFx0dHJpc3RhdGUgXCJEYXZpY29tIFBIWXNcIlxuIFx0aGVscFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuaW5kZXggZGU2NjBhZTk0OTQ1My4uYzcyZjc3MzBlMjVkYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuKysrIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5AQCAtNTIsNiArNTIsNyBAQCBvYmotJChDT05GSUdfQkNNX05FVF9QSFlQVFApXHQrPSBiY20tcGh5LXB0cC5vXG4gb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcdCs9IGJyb2FkY29tLm9cbiBvYmotJChDT05GSUdfQ0lDQURBX1BIWSlcdCs9IGNpY2FkYS5vXG4gb2JqLSQoQ09ORklHX0NPUlRJTkFfUEhZKVx0Kz0gY29ydGluYS5vXG4rb2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSlcdCs9IGRhcDgyMTFyLm9cbiBvYmotJChDT05GSUdfREFWSUNPTV9QSFkpXHQrPSBkYXZpY29tLm9cbiBvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQrPSBkcDgzNjQwLm9cbiBvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXHQrPSBkcDgzODIyLm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZjAxMGNlMGMzYmQxM1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcbkBAIC0wLDAgKzEsMjA2IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKlxuKyAqIERyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cbisgKlxuKyAqIFNwZWNpZmljYXRpb25zOlxuKyAqICAgLSBJRUVFIDgwMi4zIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuKyAqICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4rICogICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XG4rICogICAtIFJHTUlJXG4rICpcbisgKiBBdXRob3I6IEFydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXG4rICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbWlpLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbitcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9JRFx0XHRcdDB4MDAwODAxMUJcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9JRF9NQVNLXHRcdDB4RkZGRkZGRkZcbitcbisjZGVmaW5lIERBUDgyMTFSX0VYVF9BRERcdFx0MHgxRVxuKyNkZWZpbmUgREFQODIxMVJfRVhUX0RBVEFcdFx0MHgxRlxuK1xuKyNkZWZpbmUgREFQODIxMVJfUEhZX0NPTlx0XHQweEEwMDFcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9TV19SU1RcdFx0QklUKDE1KVxuK1xuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09OXHRcdDB4QTAwM1xuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0tcdEdFTk1BU0soMywgMClcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLXHRHRU5NQVNLKDEzLCAxMClcbitcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLXHQoREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0sgfCBEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSylcbitcbisvKiBJbml0aWFsIFJHTUlJIFJYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAwICogMTUwcHMgPT0gMC4wMG5zICovXG4rI2RlZmluZSBEQVA4MjExUl9JTklUSUFMX1JYX0RFTF9WQUxcdDBcbisvKiBJbml0aWFsIFJHTUlJIFRYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAxICogMTUwcHMgPT0gMC4xNW5zKi9cbisjZGVmaW5lIERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTFx0MVxuKy8qIERlZmF1bHQgUkdNSUkgZGVsYXk6IDEzICogMTUwID09IDEuOTVucyAqL1xuKyNkZWZpbmUgREFQODIxMVJfREVGQVVMVF9ERUxfU0VMXHQweERcbitcbitzdGF0aWMgY29uc3QgaW50IGRhcDgyMTFyX2ludGVybmFsX2RlbGF5W10gPSB7MCwgMTUwLCAzMDAsIDQ1MCwgNjAwLCA3NTAsIDkwMCxcbitcdFx0XHRcdFx0ICAgICAgMTA1MCwgMTIwMCwgMTM1MCwgMTUwMCwgMTY1MCwgMTgwMCxcbitcdFx0XHRcdFx0ICAgICAgMTk1MCwgMjEwMCwgMjI1MH07XG4rXG4rI2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFXHRBUlJBWV9TSVpFKGRhcDgyMTFyX2ludGVybmFsX2RlbGF5KVxuK1xuKy8qKlxuKyAqIGRhcDgyMTFyX3JlYWRfZXh0KCkgLSBSZWFkIGV4dGVuZGVkIHJlZ2lzdGVyXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXG4rICpcbisgKiBSZWFkcyBhIFBIWSBleHRlbmRlZCByZWdpc3RlciB1c2luZyB0aGUgaW5kaXJlY3QgYWNjZXNzIG1ldGhvZC5cbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cbisgKlxuKyAqIFJldHVybjogUmVnaXN0ZXIgdmFsdWUgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxuKyAqL1xuK3N0YXRpYyBpbnQgZGFwODIxMXJfcmVhZF9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZylcbit7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbitcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0cmV0ID0gX19waHlfcmVhZChwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBKTtcbitvdXQ6XG4rXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbisvKipcbisgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0c1xuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4rICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzc1xuKyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyXG4rICogQHNldDogQml0IG1hc2sgb2YgYml0cyB0byBzZXRcbisgKlxuKyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxuKyAqIE5ldyB2YWx1ZSA9IChvbGQgdmFsdWUgXHUwMDI2IH5tYXNrKSB8IHNldC5cbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4rICovXG4rc3RhdGljIGludCBkYXA4MjExcl9tb2RpZnlfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcsIHUxNiBtYXNrLCB1MTYgc2V0KVxuK3tcbitcdGludCByZXQ7XG4rXG4rXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuK1x0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRyZXQgPSBfX3BoeV9tb2RpZnkocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSwgbWFzaywgc2V0KTtcbitvdXQ6XG4rXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbisvKipcbisgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFlcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuKyAqXG4rICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjpcbisgKiAtIFJHTUlJIGRlbGF5cyBiYXNlZCBvbiBpbnRlcmZhY2UgbW9kZVxuKyAqIC0gU29mdHdhcmUgcmVzZXQgdG8gYXBwbHkgc2V0dGluZ3MgKGxvdyBhY3RpdmUsIHNlbGYgY2xlYXIpXG4rICpcbisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxuKyAqL1xuK3N0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHR1MTYgc2V0ID0gMDtcbitcdGludCByZXQsIHZhbDtcbitcdHMzMiByeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfUlhfREVMX1ZBTDtcbitcdHMzMiB0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTDtcbitcbitcdGlmICghcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJmYWNlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEKVxuK1x0XHRyeF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbitcdFx0XHRcdFx0XHRcdCAgIERBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpO1xuK1xuK1x0aWYgKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQpXG4rXHRcdHR4X2ludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxuK1x0XHRcdFx0XHRcdFx0ICAgREFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xuK1xuK1x0c3dpdGNoIChwaHlkZXYtXHUwMDNlaW50ZXJmYWNlKSB7XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbitcdFx0aWYgKHJ4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuK1x0XHRcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMO1xuK1xuK1x0XHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9JTklUSUFMX1RYX0RFTF9WQUw7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbitcdFx0aWYgKHJ4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuK1x0XHRcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuK1x0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOlxuK1x0XHRpZiAocnhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4rXHRcdGZhbGx0aHJvdWdoO1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcbitcdFx0aWYgKHR4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuK1x0XHRcdHR4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcIlVuc3VwcG9ydGVkIGludGVyZmFjZTogJWRcXG5cIixcbitcdFx0XHQgICBwaHlkZXYtXHUwMDNlaW50ZXJmYWNlKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRzZXQgfD0gRklFTERfUFJFUChEQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSywgcnhfaW50ZXJuYWxfZGVsYXkpO1xuK1x0c2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0ssIHR4X2ludGVybmFsX2RlbGF5KTtcbitcbitcdHJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHQvKiBXYWl0IGZvciByZXNldCBzZWxmLWNsZWFyIChmcm9tIGxvdyBhY3RpdmUgdG8gaGlnaCkgKi9cbitcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGRhcDgyMTFyX3JlYWRfZXh0LCB2YWwsXG4rXHRcdFx0XHQodmFsIFx1MDAyNiBEQVA4MjExUl9QSFlfU1dfUlNUKSxcbitcdFx0XHRcdDIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcdGlmICh2YWwgXHUwMDNjIDApXG4rXHRcdHJldHVybiB2YWw7XG4rXG4rXHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUkdNSUlfQ09OLCBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSywgc2V0KTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRhcDgyMTFyX2RyaXZlcltdID0ge1xuK1x0e1xuK1x0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSxcbitcdFx0Lm5hbWVcdFx0PSBcIkRBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXRcIixcbitcdFx0LnNvZnRfcmVzZXRcdD0gZ2VucGh5X3NvZnRfcmVzZXQsXG4rXHRcdC5jb25maWdfaW5pdFx0PSBkYXA4MjExcl9jb25maWdfaW5pdCxcbitcdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9yZWFkX3N0YXR1cyxcbitcdFx0LnNldF9sb29wYmFja1x0PSBnZW5waHlfbG9vcGJhY2ssXG4rXHRcdC5jb25maWdfYW5lZ1x0PSBnZW5waHlfY29uZmlnX2FuZWcsXG4rXHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuK1x0XHQucmVzdW1lXHRcdD0gZ2VucGh5X3Jlc3VtZSxcbitcdH0sXG4rfTtcbittb2R1bGVfcGh5X2RyaXZlcihkYXA4MjExcl9kcml2ZXIpO1xuK1xuK01PRFVMRV9ERVNDUklQVElPTihcIkRBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGRyaXZlclwiKTtcbitNT0RVTEVfQVVUSE9SKFwiQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcIik7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkYXA4MjExcl90YltdID0ge1xuK1x0eyBEQVA4MjExUl9QSFlfSUQsIERBUDgyMTFSX1BIWV9JRF9NQVNLIH0sXG4rXHR7IC8qIHNlbnRpbmVsICovIH1cbit9O1xuK01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpO1xuK1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzM6MjMuODM5NjY4NjI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU3Nzk3NjYyMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgREFQODIxMVIgUEhZIERyaXZlcioqXG5cbk9rYXksIHNvIHdlIGhhdmUgYSBuZXcgUEhZIGRyaXZlciBoZXJlIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgcGF0Y2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgTWFrZWZpbGUsIGFuZCB0aGUgZHJpdmVyIGl0c2VsZiAoYGRhcDgyMTFyLmNgKS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBzdGFuZGFyZCBQSFkgaW5pdGlhbGl6YXRpb24sIHJlYWQvbW9kaWZ5IGZ1bmN0aW9ucyBhbmQgdXRpbGl6ZXMgc29tZSBnZW5lcmljIFBIWSBmdW5jdGlvbnMuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGFjdHVhbGx5IHJlYWNoIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gUEhZIGRyaXZlcnMsIGFzIHdlIGtub3csIGFyZSBwcm9iZWQgdmlhIHRoZSBNRElPIGJ1cy4gUUVNVSAqbWlnaHQqIGhhdmUgTURJTyBidXNlcyBvbiBzb21lIG5ldHdvcmsgZGV2aWNlcywgYWxsb3dpbmcgUEhZIHByb2JpbmcgYmFzZWQgb24gZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMgb3IgZHJpdmVyIGluc3RhbnRpYXRpb24uIEhvd2V2ZXIsIHNwZWNpZmljIFBIWSBkcml2ZXJzIHVzdWFsbHkgcHJvYmUgb25seSBpZiB0aGUgaGFyZHdhcmUgcmVwb3J0cyB0aGVpciBzcGVjaWZpYyBJRCAoaW4gdGhpcyBjYXNlIGAweDAwMDgwMTFCYCkgb3IgaWYgdGhlIGRldmljZSB0cmVlIGV4cGxpY2l0bHkgbGlzdHMgYSBjb21wYXRpYmxlIHN0cmluZy5cblxuQ2FuIHN5emthbGxlciBmdXp6IHRoaXM/IFRoYXQncyB0aGUga2V5IHF1ZXN0aW9uLiBDYW4gaXQgaW5zdGFudGlhdGUgdGhlIGRyaXZlcj8gU3l6a2FsbGVyIGhhcyBzb21lIG5ldHdvcmsgY2FwYWJpbGl0aWVzIHdpdGggYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYW5kIHN1Y2gsIGJ1dCBmb3IgUEhZcyBpdCBoaW5nZXMgb24gdGhlIE1ESU8gYnVzLiBDYW4gdXNlcnNwYWNlIHNvbWVob3cgKmRpcmVjdGx5KiBpbnN0YW50aWF0ZSBhIFBIWSBkcml2ZXIgdGhyb3VnaCBzeXNmcyBvciBuZXRsaW5rPyBObywgbm9ybWFsbHkgUEhZcyBhcmUgcHJvYmVkIHZpYSBNRElPIHNjYW5uaW5nLlxuXG5TbywgZm9yIHN5emthbGxlciB0byByZWFjaCB0aGlzLCB3ZSdkIG5lZWQgYW4gZW11bGF0ZWQgTURJTyBidXMsIG9yIHBlcmhhcHMgYSB2aXJ0dWFsIGRyaXZlci4gRG9lcyBzeXprYWxsZXIgaGF2ZSB0aGlzPyBJIGtub3cgaXQgY2FuIGluamVjdCBNRElPIGZyYW1lcyBpbiB0aGUgcmlnaHQgY2lyY3Vtc3RhbmNlcy4gSXQgZG9lc24ndCBzZWVtIHRvLCBidXQgbWF5YmUgdGhyb3VnaCB0aGUgcmlnaHQgbWVjaGFuaXNtcy4gSSdtIHRoaW5raW5nIG9mIHNvbWV0aGluZyBsaWtlIGBtYWNzZWNgIG9yIGBkdW1teWAgYnV0IHRob3NlIGRvbid0IGhhdmUgTURJTy5cblxuTGV0J3MgdGhpbmsgYWJvdXQgdGhlIGRyaXZlciBpdHNlbGYuIGBkYXA4MjExcl9jb25maWdfaW5pdGAgaXMgY2FsbGVkIHdoZW4gdGhlIFBIWSBpcyBpbml0aWFsaXplZC4gSXQncyB0aGUgZW50cnkgcG9pbnQuIElzIHRoaXMgd29ydGggZnV6emluZz8gUEhZIGRyaXZlcnMgYXJlIG9mdGVuIHZlcnkgaGFyZHdhcmUtc3BlY2lmaWMsIHdoaWNoIG1ha2VzIHJlYWNoaW5nIHRoZW0gZGlmZmljdWx0IHdpdGhvdXQgZW11bGF0aW5nIHRoZSBleGFjdCBoYXJkd2FyZS5cblxuTGV0J3MgdGhpbmsgYWJvdXQgdGhlIGluc3RydWN0aW9ucyBmb3IgZGV0ZXJtaW5pbmcgaWYgYSBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gdGhhdCBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIGlzIG5vdCB3b3J0aCBmdXp6aW5nIGlmIHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGlzIHNlZW1zIHNpbWlsYXI6IGl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZIGRyaXZlci4gSXQgcmVxdWlyZXMgYW4gTURJTyBidXMgYW5kIHRoZSBzcGVjaWZpYyBQSFkgaGFyZHdhcmUsIG9yIGF0IGxlYXN0IGEgbWF0Y2hpbmcgZGV2aWNlIHRyZWUgbm9kZS4gQ2FuIHdlIHJlYWNoIGl0IGluIHN0YW5kYXJkIFFFTVU/IFByb2JhYmx5IG5vdC4gUUVNVSBlbXVsYXRlcyBnZW5lcmljIFBIWXMsIGJ1dCBub3QgdGhpcyBzcGVjaWZpYyBvbmUsIERBUDgyMTFSLiBBbHNvLCB0aGUgZHJpdmVyIGlzIHZlcnkgc2ltcGxlOyBtb3N0bHkgcmVnaXN0ZXIgcmVhZHMgYW5kIHdyaXRlcy5cblxuSSdtIHRoaW5raW5nLCBpcyB0aGVyZSAqYW55KiB3YXkgdG8gdHJpZ2dlciB0aGlzPyBBbmQsIGlmIHdlIGNhbid0IGVhc2lseSByZWFjaCBpdCwgd2Ugc2hvdWxkIG1hcmsgaXQgYXMgbm90IHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyBzb21lIGFkdmFuY2VkIE1ESU8gaW5qZWN0aW9uIHRyaWNrcy4gSSdsbCBzZWFyY2ggc3l6a2FsbGVyIGZvciBgbWRpb2AuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gUEhZIGRyaXZlcnMgYXJlIGdlbmVyYWxseSBpbiB0aGF0IGNhdGVnb3J5LCB1bmxlc3MgdGhlcmUncyBhIHNwZWNpZmljIGVtdWxhdGlvbiBvciBhIHVzZXJzcGFjZS1jb250cm9sbGFibGUgc29mdHdhcmUgTURJTyBidXMuIElzIHRoZXJlIGEgc29mdHdhcmUgTURJTyBidXM/IEknbGwgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkgZm9yIHNvbWV0aGluZyBsaWtlIGBtZGlvLW1vY2t1cGAgb3IgYG1kaW8tZ3Bpb2AgdGhhdCBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UuIEV2ZW4gaWYgb25lIGV4aXN0cywgdGhlIGRyaXZlciBpdHNlbGYgaXMgZXh0cmVtZWx5IHNpbXBsZS5cblxuT2theSwgSSdtIGdvaW5nIHRvIG1hcmsgdGhpcyBhcyBXb3J0aEZ1enppbmc9ZmFsc2UuIEl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciB0aGF0IHJlcXVpcmVzIGVpdGhlciBwaHlzaWNhbCBoYXJkd2FyZSAob3Igc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbikgb3IgYSB2ZXJ5IHNwZWNpZmljIFFFTVUgZW11bGF0aW9uLiBTdGFuZGFyZCBRRU1VLCBJJ20gcHJldHR5IHN1cmUsIHdvbid0IGN1dCBpdC4gSSBuZWVkIHRvIGdvIG92ZXIgdGhlIHZpcnR1YWwgTURJTyBkcml2ZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTYzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjMzOjM5LjYxOTQzNzQ3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzIxMjE2Njc4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLiptb2NrdXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjMzOjQyLjM0MDY2NTMwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDM0Njg0OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgVXNlcnNwYWNlIE1ESU8gRHJpdmVyIEludGVyYWN0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgbWVjaGFuaXNtIGluIHRoZSBjdXJyZW50IGtlcm5lbCB0aGF0IGFsbG93cyBmb3IgdXNlci1zcGFjZSBpbnN0YW50aWF0aW9uIG9mIGFuIGBtZGlvYCBkcml2ZXIuIE15IGltbWVkaWF0ZSBmb2N1cyB3aWxsIGJlIG9uIHRoZSB0eXBpY2FsIGRyaXZlciBsb2NhdGlvbnMsIHNvIEknbGwgYmUgc2VhcmNoaW5nIHRocm91Z2ggYGRyaXZlcnMvbmV0L3BoeS9gIGFuZCBgZHJpdmVycy9uZXQvbWRpby9gLiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBzdWdnZXN0cyBhIG1lYW5zIGZvciB1c2VyLXNwYWNlIHByb2dyYW1zIHRvIGludGVyZmFjZSB3aXRoIG9yIGV2ZW4gZGlyZWN0bHkgbWFuYWdlIGFuIE1ESU8gUEhZLiBFc3NlbnRpYWxseSwgaXMgdGhlcmUgYSB1c2VyLXNwYWNlIEFQSSBidWlsdCBvbiB0b3Agb2YgdGhlIE1ESU8gYnVzIGNvZGU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBrZXJuZWwgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHVzZXJsYW5kIHRvIHJlZ2lzdGVyIGFuZCBjb250cm9sIGl0cyBvd24gTURJTyBkcml2ZXJzIGFuZCBtYW5hZ2UgTURJTyBkZXZpY2VzIGRpcmVjdGx5LCByYXRoZXIgdGhhbiBzb2xlbHkgdGhyb3VnaCB0aGUgc3RhbmRhcmQgbmV0d29yayBpbnRlcmZhY2Ugc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNTEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMTozMzo0Ni40NDQxMzY3MzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L21kaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYWNwaV9tZGlvLmNcIixcbiAgICBcImZ3bm9kZV9tZGlvLmNcIixcbiAgICBcIm1kaW8tYWlyb2hhLmNcIixcbiAgICBcIm1kaW8tYXNwZWVkLmNcIixcbiAgICBcIm1kaW8tYmNtLWlwcm9jLmNcIixcbiAgICBcIm1kaW8tYmNtLXVuaW1hYy5jXCIsXG4gICAgXCJtZGlvLWJpdGJhbmcuY1wiLFxuICAgIFwibWRpby1jYXZpdW0uY1wiLFxuICAgIFwibWRpby1jYXZpdW0uaFwiLFxuICAgIFwibWRpby1ncGlvLmNcIixcbiAgICBcIm1kaW8taGlzaS1mZW1hYy5jXCIsXG4gICAgXCJtZGlvLWkyYy5jXCIsXG4gICAgXCJtZGlvLWlwcTQwMTkuY1wiLFxuICAgIFwibWRpby1pcHE4MDY0LmNcIixcbiAgICBcIm1kaW8tbW94YXJ0LmNcIixcbiAgICBcIm1kaW8tbXNjYy1taWltLmNcIixcbiAgICBcIm1kaW8tbXV4LWJjbS1pcHJvYy5jXCIsXG4gICAgXCJtZGlvLW11eC1iY202MzY4LmNcIixcbiAgICBcIm1kaW8tbXV4LWdwaW8uY1wiLFxuICAgIFwibWRpby1tdXgtbWVzb24tZzEyYS5jXCIsXG4gICAgXCJtZGlvLW11eC1tZXNvbi1neGwuY1wiLFxuICAgIFwibWRpby1tdXgtbW1pb3JlZy5jXCIsXG4gICAgXCJtZGlvLW11eC1tdWx0aXBsZXhlci5jXCIsXG4gICAgXCJtZGlvLW11eC5jXCIsXG4gICAgXCJtZGlvLW12dXNiLmNcIixcbiAgICBcIm1kaW8tb2N0ZW9uLmNcIixcbiAgICBcIm1kaW8tcGljNjRocHNjLmNcIixcbiAgICBcIm1kaW8tcmVhbHRlay1ydGw5MzAwLmNcIixcbiAgICBcIm1kaW8tcmVnbWFwLmNcIixcbiAgICBcIm1kaW8tc3VuNGkuY1wiLFxuICAgIFwibWRpby10aHVuZGVyLmNcIixcbiAgICBcIm1kaW8teGdlbmUuY1wiLFxuICAgIFwib2ZfbWRpby5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjMzOjQ2LjQ0NDI4MDYyMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMDUyNjEzNzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqUG90ZW50aWFsIGZvciBTeXprYWxsZXIgSW50ZWdyYXRpb246IFVTQi1iYXNlZCBNRElPIEFkYXB0ZXIqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IE1ESU8gZHJpdmVycyBoZXJlLiBTcGVjaWZpY2FsbHksIEknbSBzZWVpbmcgcmVmZXJlbmNlcyB0byBgbWRpby1ncGlvLmNgLCBgbWRpby1pMmMuY2AsIGFuZCB0aGVuIHRoaXMgaW50ZXJlc3Rpbmcgb25lOiBgbWRpby1tdnVzYi5jYC4gIEEgVVNCIHRvIE1ESU8gYWRhcHRlci4uLiB0aGF0J3MgdGhlIE1hcnZlbGwgVVNCIE1ESU8gQWRhcHRlciwgaWYgSSByZWNhbGwgY29ycmVjdGx5LiBOb3cgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBTeXprYWxsZXIuIElmIHdlIGNvdWxkIGVtdWxhdGUgdGhpcyBVU0IgZ2FkZ2V0LCB0aGF0IG9wZW5zIHVwIGEgd2hvbGUgbmV3IGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nLiBUaGlzIGNvdWxkIGJlIGEgc2lnbmlmaWNhbnQgZGlzY292ZXJ5LiBUaGUgaW1wbGljYXRpb25zIGFyZSBwb3RlbnRpYWxseSBodWdlIGZvciB0ZXN0aW5nIHRoaXMga2luZCBvZiBoYXJkd2FyZS4gU28sIHdoZXJlIHRvIHN0YXJ0PyBMZXQncyBkaXZlIGludG8gYG1kaW8tbXZ1c2IuY2AgYW5kIHNlZSB3aGF0IG1ha2VzIGl0IHRpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MTUsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzQ6NDkuNDk2ODk2NTA1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MjI0Nzk0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTWFydmVsbCBVU0IgTURJT1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYz0xMTE9TU9EVUxFX0FVVEhPUihcXFwiVG9iaWFzIFdhbGRla3JhbnogXFx1MDAzY3RvYmlhc0B3YWxkZWtyYW56LmNvbVxcdTAwM2VcXFwiKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYzoxMTI6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJNYXJ2ZWxsIFVTQiBNRElPIEFkYXB0ZXJcXFwiKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYy0xMTMtTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMTozNDo1My4xMTkzNzk5ODNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTY5OTUyNzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkVtdWxhdGluZyB0aGUgTWFydmVsbCBVU0IgTURJTyBBZGFwdGVyIGluIFN5emthbGxlcjogQSBGZWFzaWJpbGl0eSBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGNvdWxkIHBvc3NpYmx5IGVtdWxhdGUgdGhpcyBNYXJ2ZWxsIFVTQiBNRElPIGFkYXB0ZXIuIElmIHdlIGNvdWxkIGdldCBpdCB0byByZWdpc3RlciBhbiBNRElPIGJ1cywgdGhhdCB3b3VsZCBiZSBhIGh1Z2Ugc3RlcC4gQnV0IHRoZW4gdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGhvdyBkb2VzIGl0IGluc3RhbnRpYXRlIHRoZSBzcGVjaWZpYyBQSFk/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgUEhZIGlzIHR5cGljYWxseSBkaXNjb3ZlcmVkIHRocm91Z2ggcHJvYmluZyB0aGUgTURJTyBidXMuIElmIHRoZSBlbXVsYXRlZCBVU0IgZGV2aWNlICpjb3VsZCogc29tZWhvdyByZXNwb25kIHRvIE1ESU8gcmVhZHMgb24gdGhvc2UgY3J1Y2lhbCBQSFkgSUQgcmVnaXN0ZXJzIChyZWdpc3RlcnMgMiBhbmQgMywgdG8gYmUgcHJlY2lzZSksIGFuZCByZXR1cm5lZCBgMHgwMDA4MDExQmAsIHRoZSBrZXJuZWwgd291bGQgaGFwcGlseSBsb2FkIGFuZCBiaW5kIHRoZSBgZGFwODIxMXJgIGRyaXZlci4gQmluZ28hXG5cbkJ1dCB0aGF0IGJyaW5ncyB1cCB0aGUgYmlnIHF1ZXN0aW9uOiBkb2VzIHN5emthbGxlcidzIFVTQiBmdXp6ZXIgZXZlbiBrbm93IGhvdyB0byByZXNwb25kIHRvIE1ESU8gcmVhZCByZXF1ZXN0cyB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgTWFydmVsbCBVU0IgcHJvdG9jb2w/IFRoYXQncyB0aGUgY3J1eCBvZiBpdCwgcmlnaHQ/IEknbSBhc3N1bWluZyB0aGUgTWFydmVsbCBVU0IgTURJTyBhZGFwdGVyIHByb3RvY29sIGlzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkLiBTeXprYWxsZXIncyBVU0IgZnV6emVyIGdlbmVyYXRlcyByZXNwb25zZXMgcmFuZG9tbHksIGluIGdlbmVyYWwuIFNvIHRoZXJlJ3MgYWx3YXlzIGEgdGhlb3JldGljYWwgcG9zc2liaWxpdHkgb2YgaXQgYWNjaWRlbnRhbGx5IHJldHVybmluZyB0aGUgKmNvcnJlY3QqIFBIWSBJRCwgYnV0IHRoZSBwcm9iYWJpbGl0eSBvZiBpdCByYW5kb21seSBoaXR0aW5nICpleGFjdGx5KiBgMHgwMDA4MDExQmAgaW4gdGhlICpyaWdodCogcmVnaXN0ZXJzIGlzIHZhbmlzaGluZ2x5IHNtYWxsLiBXZSdkIGVzc2VudGlhbGx5IGJlIHRhbGtpbmcgYWJvdXQgd2lubmluZyB0aGUgbG90dGVyeS4gVW5sZXNzLCBvZiBjb3Vyc2UsIHRoZXJlIGFyZSBleGlzdGluZyBzeXpsYW5nIGRlc2NyaXB0aW9ucyBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgcHJvdG9jb2wsIHdoaWNoIHdvdWxkIG1ha2UgdGhlIGNoYW5jZSBvZiBnZW5lcmF0aW5nIHRoYXQgbWFnaWMgbnVtYmVyIG11Y2ggaGlnaGVyLlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucywgb3IgYW55IGluZm9ybWF0aW9uIGF0IGFsbCwgdGhhdCBkZWFsIHdpdGggYG1kaW9gIG9yIGBtdnVzYmAuIFRoYXQncyB0aGUgbmV4dCBzdGVwIGluIG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzQ6NTkuMDg5MzM1NjIxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ0MzY2NjEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzQ6NTkuMTkzNzc5MDQxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExODgyMDQ3ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIHRoZSBEQVA4MjExUiBQSFkgRHJpdmVyKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZ3JlcHBlcmAgaXMgb2ZmLWxpbWl0cyBmb3IgYHN5cy9gIGZpbGVzLCBzcGVjaWZpY2FsbHkgdGhlIHN5emthbGxlciBsYW5ndWFnZSBkZXNjcmlwdGlvbnMuIEkgbmVlZCB0byB1c2UgYHJlYWQtc3l6LXNwZWNgIG9yIGBzeXotZ3JlcHBlcmAgZm9yIHRob3NlLCBidXQgbmVpdGhlciBvZiB0aG9zZSB0b29scyBpcyBpbiBteSBjdXJyZW50IGFyc2VuYWwuIFNvLCBjaGVja2luZyBzeXpsYW5nIGRlc2NyaXB0aW9ucyBpcyBvdXQuXG5cbkV2ZW4gaWYgSSAqY291bGQqIGdldCBhdCB0aGUgc3l6bGFuZywgdGhpcyBkcml2ZXIgaXRzZWxmIGxvb2tzIGluY3JlZGlibHkgc2ltcGxlLiBJIHNlZSB0aGUgY29kZSwgYW5kIGl0J3MganVzdCBhIHNlcXVlbmNlIG9mIE1ESU8gcmVhZHMgYW5kIHdyaXRlcy4gSXQncyBlc3NlbnRpYWxseSBpbml0aWFsaXppbmcgYSBwaWVjZSBvZiBoYXJkd2FyZS4gTm8gY29tcGxleCBsb2dpYywgbm8gTmV0bGluayBpbnRlcmZhY2VzLCBubyBzeXNmcyBhdHRyaWJ1dGVzLCBub3RoaW5nIHRoYXQgd291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIEZ1enppbmcgdGhpcyB0aGluZyB3b3VsZCBiYXNpY2FsbHkgYm9pbCBkb3duIHRvIHJhbmRvbWx5IHJldHVybmluZyB2YWx1ZXMgZnJvbSB0aGUgYGRhcDgyMTFyX3JlYWRfZXh0YCBmdW5jdGlvbi4gSXMgdGhhdCByZWFsbHkgd29ydGggdGhlIGVmZm9ydD9cblxuTm93LCBsZXQncyB0aGluayBhYm91dCB0aGUgXCJXb3J0aEZ1enppbmdcIiBjcml0ZXJpYS4gTXkgaW50ZXJuYWwgcnVsZSBzYXlzLCBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi5Db2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4udGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gVGhpcyBEQVA4MjExUiBkcml2ZXIgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZLiBJdCAqcmVxdWlyZXMqIHRoZSBwaHlzaWNhbCBEQVA4MjExUiBoYXJkd2FyZS4gVGhlb3JldGljYWxseSwgSSBjb3VsZCAqbWF5YmUqIHJlYWNoIGl0IHdpdGggYSBVU0ItTURJTyBhZGFwdGVyIGFuZCByYW5kb20gVVNCIHJlc3BvbnNlcywgYnV0IHRoYXQncyBhIGxvbmcgc2hvdCBhbmQgbm90IHRoZSBpbnRlbmRlZCBzZXR1cC4gSXQncyBpbXByYWN0aWNhbCBhbmQgbm90IHdoYXQgdGhpcyBmdXp6ZXIgaXMgZGVzaWduZWQgZm9yLiBQbHVzLCBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciwgd2hpY2ggaXMgYW5vdGhlciBtYXJrIGFnYWluc3QgaXQuXG5cbk9rYXksIGxldCdzIGNvbnNpZGVyIG90aGVyIGF2ZW51ZXMgdG8gcmVhY2ggaXQuIERldmljZSB0cmVlPyBTeXprYWxsZXIgZG9lc24ndCB0eXBpY2FsbHkgaW5qZWN0IGFyYml0cmFyeSBkZXZpY2UgdHJlZXMgYXQgcnVudGltZSAoYmFycmluZyBvdmVybGF5cywgYnV0IHRoYXQncyByZXN0cmljdGVkKS4gTm9wZS4gVGhhdCdzIG5vdCBhIHBhdGguXG5cblNvLCBoZXJlJ3MgbXkgY29uY2x1c2lvbjogVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEl0cyBsb2dpYyBpcyBleHRyZW1lbHkgdHJpdmlhbOKAlGp1c3QgYSByZWdpc3RlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGhlcmVmb3JlLCBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLiBJJ20gZ29pbmcgdG8gZG9jdW1lbnQgdGhlIHJlYXNvbmluZyBjb25jaXNlbHkgYXMgZm9sbG93czogXCJUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdmVuZG9yLXNwZWNpZmljIEV0aGVybmV0IFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkuIFBIWSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gYmUgcHJlc2VudCBvbiBhbiBNRElPIGJ1cyAob3Igc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMgYW5kIGhhcmR3YXJlIGVtdWxhdGlvbiBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCBRRU1VKSB0byBiZSBwcm9iZWQgYW5kIGV4ZWN1dGVkLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIChyZWdpc3RlciByZWFkcy93cml0ZXMpIGFuZCBkb2VzIG5vdCBleHBvc2UgYW55IGNvbXBsZXggc29mdHdhcmUgaW50ZXJmYWNlcywgbWFraW5nIGl0IHVuc3VpdGFibGUgYW5kIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCJcblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbGwgcXVpY2tseSBjaGVjayB0aGUgb3RoZXIgbW9kaWZpZWQgZmlsZXMgdG8gbWFrZSBzdXJlIG5vdGhpbmcgZWxzZSBzbmVha3kgaXMgZ29pbmcgb24uIEknbGwgbG9vayBhdCBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxgLCBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sYCwgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCwgYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAsIGFuZCBgZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNgLiBPa2F5LCBpdCdzIGFsbCBkaXJlY3RseSByZWxhdGVkIHRvIHRoaXMgb25lIFBIWSBkcml2ZXIuXG5cbkFscmlnaHQsIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODQ1LCJPdXRwdXRUb2tlbnMiOjEzMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMTozNToxMS4wNzU4MzE2N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBQSFkgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgb24gYW4gTURJTyBidXMgKG9yIHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zIGFuZCBoYXJkd2FyZSBlbXVsYXRpb24gbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgUUVNVSkgdG8gYmUgcHJvYmVkIGFuZCBleGVjdXRlZC4gRnVydGhlcm1vcmUsIHRoZSBkcml2ZXIgb25seSBjb250YWlucyB0cml2aWFsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyAocmVnaXN0ZXIgcmVhZHMvd3JpdGVzKSBhbmQgZG9lcyBub3QgZXhwb3NlIGFueSBjb21wbGV4IHNvZnR3YXJlIGludGVyZmFjZXMsIG1ha2luZyBpdCB1bnN1aXRhYmxlIGFuZCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdmVuZG9yLXNwZWNpZmljIEV0aGVybmV0IFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkuIFBIWSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gYmUgcHJlc2VudCBvbiBhbiBNRElPIGJ1cyAob3Igc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMgYW5kIGhhcmR3YXJlIGVtdWxhdGlvbiBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCBRRU1VKSB0byBiZSBwcm9iZWQgYW5kIGV4ZWN1dGVkLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIChyZWdpc3RlciByZWFkcy93cml0ZXMpIGFuZCBkb2VzIG5vdCBleHBvc2UgYW55IGNvbXBsZXggc29mdHdhcmUgaW50ZXJmYWNlcywgbWFraW5nIGl0IHVuc3VpdGFibGUgYW5kIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjhvx6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 10:47:45 +0000 UTC FinishedAt: 2026-08-03 11:35:12 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBQSFkgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgb24gYW4gTURJTyBidXMgKG9yIHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zIGFuZCBoYXJkd2FyZSBlbXVsYXRpb24gbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgUUVNVSkgdG8gYmUgcHJvYmVkIGFuZCBleGVjdXRlZC4gRnVydGhlcm1vcmUsIHRoZSBkcml2ZXIgb25seSBjb250YWlucyB0cml2aWFsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyAocmVnaXN0ZXIgcmVhZHMvd3JpdGVzKSBhbmQgZG9lcyBub3QgZXhwb3NlIGFueSBjb21wbGV4IHNvZnR3YXJlIGludGVyZmFjZXMsIG1ha2luZyBpdCB1bnN1aXRhYmxlIGFuZCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMTozMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZhNGM1NGI5OGU4NmY5YWFmOTU0OWRiODA0MTI1NTZmNWZhZjE2NTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDExOjMzOjIwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mYjc4ZmE0ZjU4Y2EzXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxuQEAgLTAsMCAmIzQzOzEsNjIgQEBcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4mIzQzOyVZQU1MIDEuMlxuJiM0MzstLS1cbiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sI1xuJiM0Mzskc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbiYjNDM7XG4mIzQzO3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcbiYjNDM7XG4mIzQzO21haW50YWluZXJzOlxuJiM0MzsgIC0gQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2Rlc2NyaXB0aW9uOiB8XG4mIzQzOyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXG4mIzQzOyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxuJiM0MzsgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy5cbiYjNDM7XG4mIzQzOyAgU3BlY2lmaWNhdGlvbnM6XG4mIzQzOyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuJiM0MzsgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxuJiM0MzsgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4mIzQzOyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XG4mIzQzOyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcbiYjNDM7XG4mIzQzO2FsbE9mOlxuJiM0MzsgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXG4mIzQzO1xuJiM0Mztwcm9wZXJ0aWVzOlxuJiM0MzsgIGNvbXBhdGlibGU6XG4mIzQzOyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXG4mIzQzO1xuJiM0MzsgIHJlZzpcbiYjNDM7ICAgIG1heEl0ZW1zOiAxXG4mIzQzO1xuJiM0MzsgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0MzsgIHR4LWludGVybmFsLWRlbGF5LXBzOlxuJiM0MzsgICAgZGVzY3JpcHRpb246XG4mIzQzOyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuJiM0MzsgICAgbXVsdGlwbGVPZjogMTUwXG4mIzQzOyAgICBtYXhpbXVtOiAyMjUwXG4mIzQzOyAgICBkZWZhdWx0OiAxOTUwXG4mIzQzO1xuJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXG4mIzQzO1xuJiM0MztleGFtcGxlczpcbiYjNDM7ICAtIHxcbiYjNDM7ICAgIG1kaW8ge1xuJiM0MzsgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4mIzQzO1xuJiM0MzsgICAgICAgIGV0aGVybmV0LXBoeUAxIHtcbiYjNDM7ICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2V0aGVybmV0LXBoeS1pZDAwMDguMDExYlwmIzM0OztcbiYjNDM7ICAgICAgICAgICAgcmVnID0gXHUwMDNjMVx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MyMTAwXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9IFx1MDAzYzIxMDBcdTAwM2U7XG4mIzQzOyAgICAgICAgfTtcbiYjNDM7ICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXG5pbmRleCAzOTYwNDRmMzY4ZTdjLi5jM2RiODU3Yjk4MzcyIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnlhbWxcbkBAIC00MDMsNiAmIzQzOzQwMyw4IEBAIHBhdHRlcm5Qcm9wZXJ0aWVzOlxuICAgICBkZXNjcmlwdGlvbjogQ1ouTklDLCB6LnMucC5vLlxuICAgXCYjMzQ7XmRhbGxhcywuKlwmIzM0OzpcbiAgICAgZGVzY3JpcHRpb246IE1heGltIEludGVncmF0ZWQgUHJvZHVjdHMgKGZvcm1lcmx5IERhbGxhcyBTZW1pY29uZHVjdG9yKVxuJiM0MzsgIFwmIzM0O15kYXB1LC4qXCYjMzQ7OlxuJiM0MzsgICAgZGVzY3JpcHRpb246IEd1YW5nZG9uZyBEYXB1IFRlbGVjb20gQ28uLCBMdGQuXG4gICBcJiMzNDteZGF0YWltYWdlLC4qXCYjMzQ7OlxuICAgICBkZXNjcmlwdGlvbjogRGF0YUltYWdlLCBJbmMuXG4gICBcJiMzNDteZGF2aWNvbSwuKlwmIzM0OzpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG5pbmRleCAwOTlmMjVkY2VhYmJjLi4zOTViY2QzNWJmZmE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG5AQCAtMjMyLDYgJiM0MzsyMzIsMTUgQEAgY29uZmlnIENPUlRJTkFfUEhZXG4gXHRoZWxwXG4gXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQ1M0MzQwIHBoeS5cbiBcbiYjNDM7Y29uZmlnIERBUDgyMTFSX1BIWVxuJiM0MztcdHRyaXN0YXRlIFwmIzM0O0RBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWVwmIzM0O1xuJiM0MztcdGRlcGVuZHMgb24gT0ZcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBTdXBwb3J0IGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxuJiM0MztcdCAgVGhpcyBQSFkgaXMgZGVzaWduZWQgZm9yIGVudGVycHJpc2UgYW5kIGluZHVzdHJpYWwgbmV0d29ya2luZ1xuJiM0MztcdCAgYXBwbGljYXRpb25zLCBzdXBwb3J0aW5nIDEwLzEwMC8xMDAwIE1icHMgb3BlcmF0aW9uLiBTdXBwb3J0c1xuJiM0MztcdCAgUkdNSUkgaW50ZXJmYWNlIHdpdGggY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cy5cbiYjNDM7XG4gY29uZmlnIERBVklDT01fUEhZXG4gXHR0cmlzdGF0ZSBcJiMzNDtEYXZpY29tIFBIWXNcJiMzNDtcbiBcdGhlbHBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbmluZGV4IGRlNjYwYWU5NDk0NTMuLmM3MmY3NzMwZTI1ZGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuQEAgLTUyLDYgJiM0Mzs1Miw3IEBAIG9iai0kKENPTkZJR19CQ01fTkVUX1BIWVBUUClcdCYjNDM7PSBiY20tcGh5LXB0cC5vXG4gb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcdCYjNDM7PSBicm9hZGNvbS5vXG4gb2JqLSQoQ09ORklHX0NJQ0FEQV9QSFkpXHQmIzQzOz0gY2ljYWRhLm9cbiBvYmotJChDT05GSUdfQ09SVElOQV9QSFkpXHQmIzQzOz0gY29ydGluYS5vXG4mIzQzO29iai0kKENPTkZJR19EQVA4MjExUl9QSFkpXHQmIzQzOz0gZGFwODIxMXIub1xuIG9iai0kKENPTkZJR19EQVZJQ09NX1BIWSlcdCYjNDM7PSBkYXZpY29tLm9cbiBvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQmIzQzOz0gZHA4MzY0MC5vXG4gb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKVx0JiM0Mzs9IGRwODM4MjIub1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mMDEwY2UwYzNiZDEzXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY1xuQEAgLTAsMCAmIzQzOzEsMjA2IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOy8qXG4mIzQzOyAqIERyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cbiYjNDM7ICpcbiYjNDM7ICogU3BlY2lmaWNhdGlvbnM6XG4mIzQzOyAqICAgLSBJRUVFIDgwMi4zIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuJiM0MzsgKiAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldFxuJiM0MzsgKiAgIC0gSUVFRSAxNTg4IFN5bmNFIHN1cHBvcnRcbiYjNDM7ICogICAtIFJHTUlJXG4mIzQzOyAqXG4mIzQzOyAqIEF1dGhvcjogQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRmaWVsZC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZXRodG9vbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21paS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS5oXHUwMDNlXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9JRFx0XHRcdDB4MDAwODAxMUJcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSURfTUFTS1x0XHQweEZGRkZGRkZGXG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX0VYVF9BRERcdFx0MHgxRVxuJiM0MzsjZGVmaW5lIERBUDgyMTFSX0VYVF9EQVRBXHRcdDB4MUZcbiYjNDM7XG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX0NPTlx0XHQweEEwMDFcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfU1dfUlNUXHRcdEJJVCgxNSlcbiYjNDM7XG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09OXHRcdDB4QTAwM1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLXHRHRU5NQVNLKDMsIDApXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0tcdEdFTk1BU0soMTMsIDEwKVxuJiM0MztcbiYjNDM7I2RlZmluZSBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTS1x0KERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spXG4mIzQzO1xuJiM0MzsvKiBJbml0aWFsIFJHTUlJIFJYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAwICogMTUwcHMgPT0gMC4wMG5zICovXG4mIzQzOyNkZWZpbmUgREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMXHQwXG4mIzQzOy8qIEluaXRpYWwgUkdNSUkgVFggZGVsYXkgcGVyIGhhcmR3YXJlIHNwZWNpZmljYXRpb246IDEgKiAxNTBwcyA9PSAwLjE1bnMqL1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTFx0MVxuJiM0MzsvKiBEZWZhdWx0IFJHTUlJIGRlbGF5OiAxMyAqIDE1MCA9PSAxLjk1bnMgKi9cbiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUxcdDB4RFxuJiM0MztcbiYjNDM7c3RhdGljIGNvbnN0IGludCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheVtdID0gezAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgMTk1MCwgMjEwMCwgMjI1MH07XG4mIzQzO1xuJiM0MzsjZGVmaW5lIERBUDgyMTFSX0RFTEFZX1NJWkVcdEFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpXG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXJcbiYjNDM7ICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbiYjNDM7ICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzc1xuJiM0MzsgKlxuJiM0MzsgKiBSZWFkcyBhIFBIWSBleHRlbmRlZCByZWdpc3RlciB1c2luZyB0aGUgaW5kaXJlY3QgYWNjZXNzIG1ldGhvZC5cbiYjNDM7ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIE1ESU8gYnVzIGxvY2suXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogUmVnaXN0ZXIgdmFsdWUgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbiYjNDM7XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBfX3BoeV9yZWFkKHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEpO1xuJiM0MztvdXQ6XG4mIzQzO1x0cGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuJiM0MztcdHJldHVybiByZXQ7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0c1xuJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuJiM0MzsgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXG4mIzQzOyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyXG4mIzQzOyAqIEBzZXQ6IEJpdCBtYXNrIG9mIGJpdHMgdG8gc2V0XG4mIzQzOyAqXG4mIzQzOyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxuJiM0MzsgKiBOZXcgdmFsdWUgPSAob2xkIHZhbHVlIFx1MDAyNiB+bWFzaykgfCBzZXQuXG4mIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9tb2RpZnlfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcsIHUxNiBtYXNrLCB1MTYgc2V0KVxuJiM0Mzt7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbiYjNDM7XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7XG4mIzQzO1x0aWYgKHJldCBcdTAwM2MgMClcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiYjNDM7XHRyZXQgPSBfX3BoeV9tb2RpZnkocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSwgbWFzaywgc2V0KTtcbiYjNDM7b3V0OlxuJiM0MztcdHBoeV91bmxvY2tfbWRpb19idXMocGh5ZGV2KTtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGFwODIxMXJfY29uZmlnX2luaXQoKSAtIEluaXRpYWxpemUgUEhZXG4mIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4mIzQzOyAqXG4mIzQzOyAqIENvbmZpZ3VyZXMgdGhlIFBIWSBkdXJpbmcgaW5pdGlhbGl6YXRpb246XG4mIzQzOyAqIC0gUkdNSUkgZGVsYXlzIGJhc2VkIG9uIGludGVyZmFjZSBtb2RlXG4mIzQzOyAqIC0gU29mdHdhcmUgcmVzZXQgdG8gYXBwbHkgc2V0dGluZ3MgKGxvdyBhY3RpdmUsIHNlbGYgY2xlYXIpXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHR1MTYgc2V0ID0gMDtcbiYjNDM7XHRpbnQgcmV0LCB2YWw7XG4mIzQzO1x0czMyIHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMO1xuJiM0MztcdHMzMiB0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFwaHlfaW50ZXJmYWNlX2lzX3JnbWlpKHBoeWRldikpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQpXG4mIzQzO1x0XHRyeF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICBEQVA4MjExUl9ERUxBWV9TSVpFLCB0cnVlKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQpXG4mIzQzO1x0XHR0eF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICBEQVA4MjExUl9ERUxBWV9TSVpFLCBmYWxzZSk7XG4mIzQzO1xuJiM0MztcdHN3aXRjaCAocGh5ZGV2LVx1MDAzZWludGVyZmFjZSkge1xuJiM0MztcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuJiM0MztcdFx0aWYgKHJ4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuJiM0MztcdFx0XHRyeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfUlhfREVMX1ZBTDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4mIzQzO1x0XHRcdHR4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVElBTF9UWF9ERUxfVkFMO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbiYjNDM7XHRcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4mIzQzO1x0XHRicmVhaztcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcbiYjNDM7XHRcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcdTAwM2MgMClcbiYjNDM7XHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4mIzQzO1x0XHRmYWxsdGhyb3VnaDtcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOlxuJiM0MztcdFx0aWYgKHR4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuJiM0MztcdFx0XHR0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7VW5zdXBwb3J0ZWQgaW50ZXJmYWNlOiAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgcGh5ZGV2LVx1MDAzZWludGVyZmFjZSk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCByeF9pbnRlcm5hbF9kZWxheSk7XG4mIzQzO1x0c2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0ssIHR4X2ludGVybmFsX2RlbGF5KTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04sIERBUDgyMTFSX1BIWV9TV19SU1QsIDApO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcbiYjNDM7XHQvKiBXYWl0IGZvciByZXNldCBzZWxmLWNsZWFyIChmcm9tIGxvdyBhY3RpdmUgdG8gaGlnaCkgKi9cbiYjNDM7XHRyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLFxuJiM0MztcdFx0XHRcdCh2YWwgXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxuJiM0MztcdFx0XHRcdDIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pO1xuJiM0MztcdGlmIChyZXQpXG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdGlmICh2YWwgXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gdmFsO1xuJiM0MztcbiYjNDM7XHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUkdNSUlfQ09OLCBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSywgc2V0KTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkYXA4MjExcl9kcml2ZXJbXSA9IHtcbiYjNDM7XHR7XG4mIzQzO1x0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSxcbiYjNDM7XHRcdC5uYW1lXHRcdD0gXCYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldFwmIzM0OyxcbiYjNDM7XHRcdC5zb2Z0X3Jlc2V0XHQ9IGdlbnBoeV9zb2Z0X3Jlc2V0LFxuJiM0MztcdFx0LmNvbmZpZ19pbml0XHQ9IGRhcDgyMTFyX2NvbmZpZ19pbml0LFxuJiM0MztcdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9yZWFkX3N0YXR1cyxcbiYjNDM7XHRcdC5zZXRfbG9vcGJhY2tcdD0gZ2VucGh5X2xvb3BiYWNrLFxuJiM0MztcdFx0LmNvbmZpZ19hbmVnXHQ9IGdlbnBoeV9jb25maWdfYW5lZyxcbiYjNDM7XHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuJiM0MztcdFx0LnJlc3VtZVx0XHQ9IGdlbnBoeV9yZXN1bWUsXG4mIzQzO1x0fSxcbiYjNDM7fTtcbiYjNDM7bW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKTtcbiYjNDM7XG4mIzQzO01PRFVMRV9ERVNDUklQVElPTihcJiMzNDtEQVA4MjExUiBHaWdhYml0IEV0aGVybmV0IFBIWSBkcml2ZXJcJiMzNDspO1xuJiM0MztNT0RVTEVfQVVUSE9SKFwmIzM0O0FydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXCYjMzQ7KTtcbiYjNDM7TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO3N0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb19kZXZpY2VfaWQgX19tYXliZV91bnVzZWQgZGFwODIxMXJfdGJbXSA9IHtcbiYjNDM7XHR7IERBUDgyMTFSX1BIWV9JRCwgREFQODIxMVJfUEhZX0lEX01BU0sgfSxcbiYjNDM7XHR7IC8qIHNlbnRpbmVsICovIH1cbiYjNDM7fTtcbiYjNDM7TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBkYXA4MjExcl90Yik7XG4mIzQzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKS4gUEhZIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0byBiZSBwcmVzZW50IG9uIGFuIE1ESU8gYnVzIChvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIFFFTVUpIHRvIGJlIHByb2JlZCBhbmQgZXhlY3V0ZWQuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgKHJlZ2lzdGVyIHJlYWRzL3dyaXRlcykgYW5kIGRvZXMgbm90IGV4cG9zZSBhbnkgY29tcGxleCBzb2Z0d2FyZSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmYTRjNTRiOThlODZmOWFhZjk1NDlkYjgwNDEyNTU2ZjVmYWYxNjUzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAxMTozMzoyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZmI3OGZhNGY1OGNhMwotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sCkBAIC0wLDAgJiM0MzsxLDYyIEBACiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpCiYjNDM7JVlBTUwgMS4yCiYjNDM7LS0tCiYjNDM7JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sIwomIzQzOyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sIwomIzQzOwomIzQzO3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkKJiM0MzsKJiM0MzttYWludGFpbmVyczoKJiM0MzsgIC0gQXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OwomIzQzOwomIzQzO2Rlc2NyaXB0aW9uOiB8CiYjNDM7ICBUaGUgREFQODIxMVIoSSkgaXMgYSBHaWdhYml0IEV0aGVybmV0IFBIWSB3aXRoIFJHTUlJIGludGVyZmFjZSwKJiM0MzsgIHN1cHBvcnRpbmcgSUVFRSA4MDIuM2F6IEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQsIElFRUUgMTU4OCBTeW5jRSwKJiM0MzsgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy4KJiM0MzsKJiM0MzsgIFNwZWNpZmljYXRpb25zOgomIzQzOyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVAomIzQzOyAgICAtIFJHTUlJIHdpdGggY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cyAoMTUwIHBzIHN0ZXBzLCAwLTIyNTAgcHMpCiYjNDM7ICAgIC0gSUVFRSA4MDIuM2F6LTIwMTAgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldAomIzQzOyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0CiYjNDM7ICAgIC0gSW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvciBhbmQgY2hlY2tlciBmb3IgbGluayBkaWFnbm9zdGljcwomIzQzOwomIzQzO2FsbE9mOgomIzQzOyAgLSAkcmVmOiBldGhlcm5ldC1waHkueWFtbCMKJiM0MzsKJiM0Mztwcm9wZXJ0aWVzOgomIzQzOyAgY29tcGF0aWJsZToKJiM0MzsgICAgY29uc3Q6IGV0aGVybmV0LXBoeS1pZDAwMDguMDExYgomIzQzOwomIzQzOyAgcmVnOgomIzQzOyAgICBtYXhJdGVtczogMQomIzQzOwomIzQzOyAgcngtaW50ZXJuYWwtZGVsYXktcHM6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLgomIzQzOyAgICBtdWx0aXBsZU9mOiAxNTAKJiM0MzsgICAgbWF4aW11bTogMjI1MAomIzQzOyAgICBkZWZhdWx0OiAxOTUwCiYjNDM7CiYjNDM7ICB0eC1pbnRlcm5hbC1kZWxheS1wczoKJiM0MzsgICAgZGVzY3JpcHRpb246CiYjNDM7ICAgICAgUkdNSUkgVFggY2xvY2sgZGVsYXkgaW4gcGljb3NlY29uZHMgKDAgdG8gbWF4aW11bSkuCiYjNDM7ICAgIG11bHRpcGxlT2Y6IDE1MAomIzQzOyAgICBtYXhpbXVtOiAyMjUwCiYjNDM7ICAgIGRlZmF1bHQ6IDE5NTAKJiM0MzsKJiM0Mzt1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlCiYjNDM7CiYjNDM7ZXhhbXBsZXM6CiYjNDM7ICAtIHwKJiM0MzsgICAgbWRpbyB7CiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICNzaXplLWNlbGxzID0gJmx0OzAmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgZXRoZXJuZXQtcGh5QDEgewomIzQzOyAgICAgICAgICAgIGNvbXBhdGlibGUgPSAmIzM0O2V0aGVybmV0LXBoeS1pZDAwMDguMDExYiYjMzQ7OwomIzQzOyAgICAgICAgICAgIHJlZyA9ICZsdDsxJmd0OzsKJiM0MzsgICAgICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMTAwJmd0OzsKJiM0MzsgICAgICAgICAgICB0eC1pbnRlcm5hbC1kZWxheS1wcyA9ICZsdDsyMTAwJmd0OzsKJiM0MzsgICAgICAgIH07CiYjNDM7ICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnlhbWwKaW5kZXggMzk2MDQ0ZjM2OGU3Yy4uYzNkYjg1N2I5ODM3MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMueWFtbApAQCAtNDAzLDYgJiM0Mzs0MDMsOCBAQCBwYXR0ZXJuUHJvcGVydGllczoKICAgICBkZXNjcmlwdGlvbjogQ1ouTklDLCB6LnMucC5vLgogICAmIzM0O15kYWxsYXMsLiomIzM0OzoKICAgICBkZXNjcmlwdGlvbjogTWF4aW0gSW50ZWdyYXRlZCBQcm9kdWN0cyAoZm9ybWVybHkgRGFsbGFzIFNlbWljb25kdWN0b3IpCiYjNDM7ICAmIzM0O15kYXB1LC4qJiMzNDs6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOiBHdWFuZ2RvbmcgRGFwdSBUZWxlY29tIENvLiwgTHRkLgogICAmIzM0O15kYXRhaW1hZ2UsLiomIzM0OzoKICAgICBkZXNjcmlwdGlvbjogRGF0YUltYWdlLCBJbmMuCiAgICYjMzQ7XmRhdmljb20sLiomIzM0OzoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnIGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKaW5kZXggMDk5ZjI1ZGNlYWJiYy4uMzk1YmNkMzViZmZhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L0tjb25maWcKQEAgLTIzMiw2ICYjNDM7MjMyLDE1IEBAIGNvbmZpZyBDT1JUSU5BX1BIWQogCWhlbHAKIAkgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQ1M0MzQwIHBoeS4KIAomIzQzO2NvbmZpZyBEQVA4MjExUl9QSFkKJiM0MzsJdHJpc3RhdGUgJiMzNDtEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkmIzM0OwomIzQzOwlkZXBlbmRzIG9uIE9GCiYjNDM7CWhlbHAKJiM0MzsJICBTdXBwb3J0IGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLgomIzQzOwkgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmcKJiM0MzsJICBhcHBsaWNhdGlvbnMsIHN1cHBvcnRpbmcgMTAvMTAwLzEwMDAgTWJwcyBvcGVyYXRpb24uIFN1cHBvcnRzCiYjNDM7CSAgUkdNSUkgaW50ZXJmYWNlIHdpdGggY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cy4KJiM0MzsKIGNvbmZpZyBEQVZJQ09NX1BIWQogCXRyaXN0YXRlICYjMzQ7RGF2aWNvbSBQSFlzJiMzNDsKIAloZWxwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUKaW5kZXggZGU2NjBhZTk0OTQ1My4uYzcyZjc3MzBlMjVkYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZQpAQCAtNTIsNiAmIzQzOzUyLDcgQEAgb2JqLSQoQ09ORklHX0JDTV9ORVRfUEhZUFRQKQkmIzQzOz0gYmNtLXBoeS1wdHAubwogb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSkJJiM0Mzs9IGJyb2FkY29tLm8KIG9iai0kKENPTkZJR19DSUNBREFfUEhZKQkmIzQzOz0gY2ljYWRhLm8KIG9iai0kKENPTkZJR19DT1JUSU5BX1BIWSkJJiM0Mzs9IGNvcnRpbmEubwomIzQzO29iai0kKENPTkZJR19EQVA4MjExUl9QSFkpCSYjNDM7PSBkYXA4MjExci5vCiBvYmotJChDT05GSUdfREFWSUNPTV9QSFkpCSYjNDM7PSBkYXZpY29tLm8KIG9iai0kKENPTkZJR19EUDgzNjQwX1BIWSkJJiM0Mzs9IGRwODM2NDAubwogb2JqLSQoQ09ORklHX0RQODM4MjJfUEhZKQkmIzQzOz0gZHA4MzgyMi5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmYwMTBjZTBjM2JkMTMKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYwpAQCAtMCwwICYjNDM7MSwyMDYgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOy8qCiYjNDM7ICogRHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLgomIzQzOyAqCiYjNDM7ICogU3BlY2lmaWNhdGlvbnM6CiYjNDM7ICogICAtIElFRUUgODAyLjMgMTBCQVNFLVRlLCAxMDBCQVNFLVRYLCAxMDAwQkFTRS1UCiYjNDM7ICogICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQKJiM0MzsgKiAgIC0gSUVFRSAxNTg4IFN5bmNFIHN1cHBvcnQKJiM0MzsgKiAgIC0gUkdNSUkKJiM0MzsgKgomIzQzOyAqIEF1dGhvcjogQXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OwomIzQzOyAqLwomIzQzOwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9iaXRmaWVsZC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9lcnJuby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ldGh0b29sLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2tlcm5lbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9pb3BvbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbWlpLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9uZXRkZXZpY2UuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcGh5LmgmZ3Q7CiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSUQJCQkweDAwMDgwMTFCCiYjNDM7I2RlZmluZSBEQVA4MjExUl9QSFlfSURfTUFTSwkJMHhGRkZGRkZGRgomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfRVhUX0FERAkJMHgxRQomIzQzOyNkZWZpbmUgREFQODIxMVJfRVhUX0RBVEEJCTB4MUYKJiM0MzsKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1BIWV9DT04JCTB4QTAwMQomIzQzOyNkZWZpbmUgREFQODIxMVJfUEhZX1NXX1JTVAkJQklUKDE1KQomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09OCQkweEEwMDMKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLCUdFTk1BU0soMywgMCkKJiM0MzsjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLCUdFTk1BU0soMTMsIDEwKQomIzQzOwomIzQzOyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0sJKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spCiYjNDM7CiYjNDM7LyogSW5pdGlhbCBSR01JSSBSWCBkZWxheSBwZXIgaGFyZHdhcmUgc3BlY2lmaWNhdGlvbjogMCAqIDE1MHBzID09IDAuMDBucyAqLwomIzQzOyNkZWZpbmUgREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMCTAKJiM0MzsvKiBJbml0aWFsIFJHTUlJIFRYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAxICogMTUwcHMgPT0gMC4xNW5zKi8KJiM0MzsjZGVmaW5lIERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTAkxCiYjNDM7LyogRGVmYXVsdCBSR01JSSBkZWxheTogMTMgKiAxNTAgPT0gMS45NW5zICovCiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUwJMHhECiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IGludCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheVtdID0gezAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsCiYjNDM7CQkJCQkgICAgICAxMDUwLCAxMjAwLCAxMzUwLCAxNTAwLCAxNjUwLCAxODAwLAomIzQzOwkJCQkJICAgICAgMTk1MCwgMjEwMCwgMjI1MH07CiYjNDM7CiYjNDM7I2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFCUFSUkFZX1NJWkUoZGFwODIxMXJfaW50ZXJuYWxfZGVsYXkpCiYjNDM7CiYjNDM7LyoqCiYjNDM7ICogZGFwODIxMXJfcmVhZF9leHQoKSAtIFJlYWQgZXh0ZW5kZWQgcmVnaXN0ZXIKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZQomIzQzOyAqIEByZWc6IEV4dGVuZGVkIHJlZ2lzdGVyIGFkZHJlc3MKJiM0MzsgKgomIzQzOyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLgomIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlCiYjNDM7ICovCiYjNDM7c3RhdGljIGludCBkYXA4MjExcl9yZWFkX2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnKQomIzQzO3sKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJcGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTsKJiM0MzsJcmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpOwomIzQzOwlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwomIzQzOwlyZXQgPSBfX3BoeV9yZWFkKHBoeWRldiwgREFQODIxMVJfRVhUX0RBVEEpOwomIzQzO291dDoKJiM0MzsJcGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0cwomIzQzOyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlCiYjNDM7ICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzcwomIzQzOyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyCiYjNDM7ICogQHNldDogQml0IG1hc2sgb2YgYml0cyB0byBzZXQKJiM0MzsgKgomIzQzOyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLgomIzQzOyAqIE5ldyB2YWx1ZSA9IChvbGQgdmFsdWUgJmFtcDsgfm1hc2spIHwgc2V0LgomIzQzOyAqIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBNRElPIGJ1cyBsb2NrLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUKJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IGRhcDgyMTFyX21vZGlmeV9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZywgdTE2IG1hc2ssIHUxNiBzZXQpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIERBUDgyMTFSX0VYVF9BREQsIHJlZyk7CiYjNDM7CWlmIChyZXQgJmx0OyAwKQomIzQzOwkJZ290byBvdXQ7CiYjNDM7CiYjNDM7CXJldCA9IF9fcGh5X21vZGlmeShwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBLCBtYXNrLCBzZXQpOwomIzQzO291dDoKJiM0MzsJcGh5X3VubG9ja19tZGlvX2J1cyhwaHlkZXYpOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFkKJiM0MzsgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZQomIzQzOyAqCiYjNDM7ICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjoKJiM0MzsgKiAtIFJHTUlJIGRlbGF5cyBiYXNlZCBvbiBpbnRlcmZhY2UgbW9kZQomIzQzOyAqIC0gU29mdHdhcmUgcmVzZXQgdG8gYXBwbHkgc2V0dGluZ3MgKGxvdyBhY3RpdmUsIHNlbGYgY2xlYXIpCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZQomIzQzOyAqLwomIzQzO3N0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKJiM0Mzt7CiYjNDM7CXUxNiBzZXQgPSAwOwomIzQzOwlpbnQgcmV0LCB2YWw7CiYjNDM7CXMzMiByeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfUlhfREVMX1ZBTDsKJiM0MzsJczMyIHR4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVElBTF9UWF9ERUxfVkFMOwomIzQzOwomIzQzOwlpZiAoIXBoeV9pbnRlcmZhY2VfaXNfcmdtaWkocGh5ZGV2KSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwlpZiAocGh5ZGV2LSZndDtpbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1RYSUQpCiYjNDM7CQlyeF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSwKJiM0MzsJCQkJCQkJICAgREFQODIxMVJfREVMQVlfU0laRSwgdHJ1ZSk7CiYjNDM7CiYjNDM7CWlmIChwaHlkZXYtJmd0O2ludGVyZmFjZSAhPSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRCkKJiM0MzsJCXR4X2ludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LAomIzQzOwkJCQkJCQkgICBEQVA4MjExUl9ERUxBWV9TSVpFLCBmYWxzZSk7CiYjNDM7CiYjNDM7CXN3aXRjaCAocGh5ZGV2LSZndDtpbnRlcmZhY2UpIHsKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CiYjNDM7CQlpZiAocnhfaW50ZXJuYWxfZGVsYXkgJmx0OyAwKQomIzQzOwkJCXJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMOwomIzQzOwomIzQzOwkJaWYgKHR4X2ludGVybmFsX2RlbGF5ICZsdDsgMCkKJiM0MzsJCQl0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOgomIzQzOwkJaWYgKHJ4X2ludGVybmFsX2RlbGF5ICZsdDsgMCkKJiM0MzsJCQlyeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTDsKJiM0MzsJCWJyZWFrOwomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDoKJiM0MzsJCWlmIChyeF9pbnRlcm5hbF9kZWxheSAmbHQ7IDApCiYjNDM7CQkJcnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7CiYjNDM7CQlmYWxsdGhyb3VnaDsKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDoKJiM0MzsJCWlmICh0eF9pbnRlcm5hbF9kZWxheSAmbHQ7IDApCiYjNDM7CQkJdHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7CiYjNDM7CQlicmVhazsKJiM0MzsJZGVmYXVsdDoKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O1Vuc3VwcG9ydGVkIGludGVyZmFjZTogJWRcbiYjMzQ7LAomIzQzOwkJCSAgIHBoeWRldi0mZ3Q7aW50ZXJmYWNlKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CXNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCByeF9pbnRlcm5hbF9kZWxheSk7CiYjNDM7CXNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCB0eF9pbnRlcm5hbF9kZWxheSk7CiYjNDM7CiYjNDM7CXJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CiYjNDM7CS8qIFdhaXQgZm9yIHJlc2V0IHNlbGYtY2xlYXIgKGZyb20gbG93IGFjdGl2ZSB0byBoaWdoKSAqLwomIzQzOwlyZXQgPSByZWFkX3BvbGxfdGltZW91dChkYXA4MjExcl9yZWFkX2V4dCwgdmFsLAomIzQzOwkJCQkodmFsICZhbXA7IERBUDgyMTFSX1BIWV9TV19SU1QpLAomIzQzOwkJCQkyMCwgMjAwLCBmYWxzZSwgcGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CWlmICh2YWwgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHZhbDsKJiM0MzsKJiM0MzsJcmV0ID0gZGFwODIxMXJfbW9kaWZ5X2V4dChwaHlkZXYsIERBUDgyMTFSX1JHTUlJX0NPTiwgREFQODIxMVJfUkdNSUlfQ09ORklHX01BU0ssIHNldCk7CiYjNDM7CWlmIChyZXQpCiYjNDM7CQlyZXR1cm4gcmV0OwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRhcDgyMTFyX2RyaXZlcltdID0gewomIzQzOwl7CiYjNDM7CQlQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSwKJiM0MzsJCS5uYW1lCQk9ICYjMzQ7REFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCYjMzQ7LAomIzQzOwkJLnNvZnRfcmVzZXQJPSBnZW5waHlfc29mdF9yZXNldCwKJiM0MzsJCS5jb25maWdfaW5pdAk9IGRhcDgyMTFyX2NvbmZpZ19pbml0LAomIzQzOwkJLnJlYWRfc3RhdHVzCT0gZ2VucGh5X3JlYWRfc3RhdHVzLAomIzQzOwkJLnNldF9sb29wYmFjawk9IGdlbnBoeV9sb29wYmFjaywKJiM0MzsJCS5jb25maWdfYW5lZwk9IGdlbnBoeV9jb25maWdfYW5lZywKJiM0MzsJCS5zdXNwZW5kCT0gZ2VucGh5X3N1c3BlbmQsCiYjNDM7CQkucmVzdW1lCQk9IGdlbnBoeV9yZXN1bWUsCiYjNDM7CX0sCiYjNDM7fTsKJiM0Mzttb2R1bGVfcGh5X2RyaXZlcihkYXA4MjExcl9kcml2ZXIpOwomIzQzOwomIzQzO01PRFVMRV9ERVNDUklQVElPTigmIzM0O0RBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGRyaXZlciYjMzQ7KTsKJiM0MztNT0RVTEVfQVVUSE9SKCYjMzQ7QXJ0ZW0gU2hpbWtvICZsdDthLnNoaW1rby5kZXZAZ21haWwuY29tJmd0OyYjMzQ7KTsKJiM0MztNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKJiM0MzsKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGRhcDgyMTFyX3RiW10gPSB7CiYjNDM7CXsgREFQODIxMVJfUEhZX0lELCBEQVA4MjExUl9QSFlfSURfTUFTSyB9LAomIzQzOwl7IC8qIHNlbnRpbmVsICovIH0KJiM0Mzt9OwomIzQzO01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpOwomIzQzOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTYzCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enphYmlsaXR5IG9mIHRoZSBEQVA4MjExUiBQSFkgRHJpdmVyKioKCk9rYXksIHNvIHdlIGhhdmUgYSBuZXcgUEhZIGRyaXZlciBoZXJlIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgcGF0Y2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgTWFrZWZpbGUsIGFuZCB0aGUgZHJpdmVyIGl0c2VsZiAoYGRhcDgyMTFyLmNgKS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBzdGFuZGFyZCBQSFkgaW5pdGlhbGl6YXRpb24sIHJlYWQvbW9kaWZ5IGZ1bmN0aW9ucyBhbmQgdXRpbGl6ZXMgc29tZSBnZW5lcmljIFBIWSBmdW5jdGlvbnMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBhY3R1YWxseSByZWFjaCB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFBIWSBkcml2ZXJzLCBhcyB3ZSBrbm93LCBhcmUgcHJvYmVkIHZpYSB0aGUgTURJTyBidXMuIFFFTVUgKm1pZ2h0KiBoYXZlIE1ESU8gYnVzZXMgb24gc29tZSBuZXR3b3JrIGRldmljZXMsIGFsbG93aW5nIFBIWSBwcm9iaW5nIGJhc2VkIG9uIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zIG9yIGRyaXZlciBpbnN0YW50aWF0aW9uLiBIb3dldmVyLCBzcGVjaWZpYyBQSFkgZHJpdmVycyB1c3VhbGx5IHByb2JlIG9ubHkgaWYgdGhlIGhhcmR3YXJlIHJlcG9ydHMgdGhlaXIgc3BlY2lmaWMgSUQgKGluIHRoaXMgY2FzZSBgMHgwMDA4MDExQmApIG9yIGlmIHRoZSBkZXZpY2UgdHJlZSBleHBsaWNpdGx5IGxpc3RzIGEgY29tcGF0aWJsZSBzdHJpbmcuCgpDYW4gc3l6a2FsbGVyIGZ1enogdGhpcz8gVGhhdCYjMzk7cyB0aGUga2V5IHF1ZXN0aW9uLiBDYW4gaXQgaW5zdGFudGlhdGUgdGhlIGRyaXZlcj8gU3l6a2FsbGVyIGhhcyBzb21lIG5ldHdvcmsgY2FwYWJpbGl0aWVzIHdpdGggYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYW5kIHN1Y2gsIGJ1dCBmb3IgUEhZcyBpdCBoaW5nZXMgb24gdGhlIE1ESU8gYnVzLiBDYW4gdXNlcnNwYWNlIHNvbWVob3cgKmRpcmVjdGx5KiBpbnN0YW50aWF0ZSBhIFBIWSBkcml2ZXIgdGhyb3VnaCBzeXNmcyBvciBuZXRsaW5rPyBObywgbm9ybWFsbHkgUEhZcyBhcmUgcHJvYmVkIHZpYSBNRElPIHNjYW5uaW5nLgoKU28sIGZvciBzeXprYWxsZXIgdG8gcmVhY2ggdGhpcywgd2UmIzM5O2QgbmVlZCBhbiBlbXVsYXRlZCBNRElPIGJ1cywgb3IgcGVyaGFwcyBhIHZpcnR1YWwgZHJpdmVyLiBEb2VzIHN5emthbGxlciBoYXZlIHRoaXM/IEkga25vdyBpdCBjYW4gaW5qZWN0IE1ESU8gZnJhbWVzIGluIHRoZSByaWdodCBjaXJjdW1zdGFuY2VzLiBJdCBkb2VzbiYjMzk7dCBzZWVtIHRvLCBidXQgbWF5YmUgdGhyb3VnaCB0aGUgcmlnaHQgbWVjaGFuaXNtcy4gSSYjMzk7bSB0aGlua2luZyBvZiBzb21ldGhpbmcgbGlrZSBgbWFjc2VjYCBvciBgZHVtbXlgIGJ1dCB0aG9zZSBkb24mIzM5O3QgaGF2ZSBNRElPLgoKTGV0JiMzOTtzIHRoaW5rIGFib3V0IHRoZSBkcml2ZXIgaXRzZWxmLiBgZGFwODIxMXJfY29uZmlnX2luaXRgIGlzIGNhbGxlZCB3aGVuIHRoZSBQSFkgaXMgaW5pdGlhbGl6ZWQuIEl0JiMzOTtzIHRoZSBlbnRyeSBwb2ludC4gSXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBQSFkgZHJpdmVycyBhcmUgb2Z0ZW4gdmVyeSBoYXJkd2FyZS1zcGVjaWZpYywgd2hpY2ggbWFrZXMgcmVhY2hpbmcgdGhlbSBkaWZmaWN1bHQgd2l0aG91dCBlbXVsYXRpbmcgdGhlIGV4YWN0IGhhcmR3YXJlLgoKTGV0JiMzOTtzIHRoaW5rIGFib3V0IHRoZSBpbnN0cnVjdGlvbnMgZm9yIGRldGVybWluaW5nIGlmIGEgcGF0Y2ggaXMgd29ydGggZnV6emluZy4gVGhlIGluc3RydWN0aW9ucyBtZW50aW9uIHRoYXQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyBpcyBub3Qgd29ydGggZnV6emluZyBpZiB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBzZWVtcyBzaW1pbGFyOiBpdCYjMzk7cyBhIHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyLiBJdCByZXF1aXJlcyBhbiBNRElPIGJ1cyBhbmQgdGhlIHNwZWNpZmljIFBIWSBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgYSBtYXRjaGluZyBkZXZpY2UgdHJlZSBub2RlLiBDYW4gd2UgcmVhY2ggaXQgaW4gc3RhbmRhcmQgUUVNVT8gUHJvYmFibHkgbm90LiBRRU1VIGVtdWxhdGVzIGdlbmVyaWMgUEhZcywgYnV0IG5vdCB0aGlzIHNwZWNpZmljIG9uZSwgREFQODIxMVIuIEFsc28sIHRoZSBkcml2ZXIgaXMgdmVyeSBzaW1wbGU7IG1vc3RseSByZWdpc3RlciByZWFkcyBhbmQgd3JpdGVzLgoKSSYjMzk7bSB0aGlua2luZywgaXMgdGhlcmUgKmFueSogd2F5IHRvIHRyaWdnZXIgdGhpcz8gQW5kLCBpZiB3ZSBjYW4mIzM5O3QgZWFzaWx5IHJlYWNoIGl0LCB3ZSBzaG91bGQgbWFyayBpdCBhcyBub3Qgd29ydGggZnV6emluZy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiBzeXprYWxsZXIgaGFzIHNvbWUgYWR2YW5jZWQgTURJTyBpbmplY3Rpb24gdHJpY2tzLiBJJiMzOTtsbCBzZWFyY2ggc3l6a2FsbGVyIGZvciBgbWRpb2AuCgpUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBzYXlzIHRvIGF2b2lkIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFBIWSBkcml2ZXJzIGFyZSBnZW5lcmFsbHkgaW4gdGhhdCBjYXRlZ29yeSwgdW5sZXNzIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgZW11bGF0aW9uIG9yIGEgdXNlcnNwYWNlLWNvbnRyb2xsYWJsZSBzb2Z0d2FyZSBNRElPIGJ1cy4gSXMgdGhlcmUgYSBzb2Z0d2FyZSBNRElPIGJ1cz8gSSYjMzk7bGwgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkgZm9yIHNvbWV0aGluZyBsaWtlIGBtZGlvLW1vY2t1cGAgb3IgYG1kaW8tZ3Bpb2AgdGhhdCBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UuIEV2ZW4gaWYgb25lIGV4aXN0cywgdGhlIGRyaXZlciBpdHNlbGYgaXMgZXh0cmVtZWx5IHNpbXBsZS4KCk9rYXksIEkmIzM5O20gZ29pbmcgdG8gbWFyayB0aGlzIGFzIFdvcnRoRnV6emluZz1mYWxzZS4gSXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciB0aGF0IHJlcXVpcmVzIGVpdGhlciBwaHlzaWNhbCBoYXJkd2FyZSAob3Igc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbikgb3IgYSB2ZXJ5IHNwZWNpZmljIFFFTVUgZW11bGF0aW9uLiBTdGFuZGFyZCBRRU1VLCBJJiMzOTttIHByZXR0eSBzdXJlLCB3b24mIzM5O3QgY3V0IGl0LiBJIG5lZWQgdG8gZ28gb3ZlciB0aGUgdmlydHVhbCBNRElPIGRyaXZlcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZGlvLiptb2NrdXAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNTEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIFVzZXJzcGFjZSBNRElPIERyaXZlciBJbnRlcmFjdGlvbioqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGEgbWVjaGFuaXNtIGluIHRoZSBjdXJyZW50IGtlcm5lbCB0aGF0IGFsbG93cyBmb3IgdXNlci1zcGFjZSBpbnN0YW50aWF0aW9uIG9mIGFuIGBtZGlvYCBkcml2ZXIuIE15IGltbWVkaWF0ZSBmb2N1cyB3aWxsIGJlIG9uIHRoZSB0eXBpY2FsIGRyaXZlciBsb2NhdGlvbnMsIHNvIEkmIzM5O2xsIGJlIHNlYXJjaGluZyB0aHJvdWdoIGBkcml2ZXJzL25ldC9waHkvYCBhbmQgYGRyaXZlcnMvbmV0L21kaW8vYC4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IHN1Z2dlc3RzIGEgbWVhbnMgZm9yIHVzZXItc3BhY2UgcHJvZ3JhbXMgdG8gaW50ZXJmYWNlIHdpdGggb3IgZXZlbiBkaXJlY3RseSBtYW5hZ2UgYW4gTURJTyBQSFkuIEVzc2VudGlhbGx5LCBpcyB0aGVyZSBhIHVzZXItc3BhY2UgQVBJIGJ1aWx0IG9uIHRvcCBvZiB0aGUgTURJTyBidXMgY29kZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlIGtlcm5lbCBwcm92aWRlcyBhIGZyYW1ld29yayBmb3IgdXNlcmxhbmQgdG8gcmVnaXN0ZXIgYW5kIGNvbnRyb2wgaXRzIG93biBNRElPIGRyaXZlcnMgYW5kIG1hbmFnZSBNRElPIGRldmljZXMgZGlyZWN0bHksIHJhdGhlciB0aGFuIHNvbGVseSB0aHJvdWdoIHRoZSBzdGFuZGFyZCBuZXR3b3JrIGludGVyZmFjZSBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IFsKICAgICYjMzQ7YWNwaV9tZGlvLmMmIzM0OywKICAgICYjMzQ7Zndub2RlX21kaW8uYyYjMzQ7LAogICAgJiMzNDttZGlvLWFpcm9oYS5jJiMzNDssCiAgICAmIzM0O21kaW8tYXNwZWVkLmMmIzM0OywKICAgICYjMzQ7bWRpby1iY20taXByb2MuYyYjMzQ7LAogICAgJiMzNDttZGlvLWJjbS11bmltYWMuYyYjMzQ7LAogICAgJiMzNDttZGlvLWJpdGJhbmcuYyYjMzQ7LAogICAgJiMzNDttZGlvLWNhdml1bS5jJiMzNDssCiAgICAmIzM0O21kaW8tY2F2aXVtLmgmIzM0OywKICAgICYjMzQ7bWRpby1ncGlvLmMmIzM0OywKICAgICYjMzQ7bWRpby1oaXNpLWZlbWFjLmMmIzM0OywKICAgICYjMzQ7bWRpby1pMmMuYyYjMzQ7LAogICAgJiMzNDttZGlvLWlwcTQwMTkuYyYjMzQ7LAogICAgJiMzNDttZGlvLWlwcTgwNjQuYyYjMzQ7LAogICAgJiMzNDttZGlvLW1veGFydC5jJiMzNDssCiAgICAmIzM0O21kaW8tbXNjYy1taWltLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtYmNtLWlwcm9jLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtYmNtNjM2OC5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LWdwaW8uYyYjMzQ7LAogICAgJiMzNDttZGlvLW11eC1tZXNvbi1nMTJhLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtbWVzb24tZ3hsLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXgtbW1pb3JlZy5jJiMzNDssCiAgICAmIzM0O21kaW8tbXV4LW11bHRpcGxleGVyLmMmIzM0OywKICAgICYjMzQ7bWRpby1tdXguYyYjMzQ7LAogICAgJiMzNDttZGlvLW12dXNiLmMmIzM0OywKICAgICYjMzQ7bWRpby1vY3Rlb24uYyYjMzQ7LAogICAgJiMzNDttZGlvLXBpYzY0aHBzYy5jJiMzNDssCiAgICAmIzM0O21kaW8tcmVhbHRlay1ydGw5MzAwLmMmIzM0OywKICAgICYjMzQ7bWRpby1yZWdtYXAuYyYjMzQ7LAogICAgJiMzNDttZGlvLXN1bjRpLmMmIzM0OywKICAgICYjMzQ7bWRpby10aHVuZGVyLmMmIzM0OywKICAgICYjMzQ7bWRpby14Z2VuZS5jJiMzNDssCiAgICAmIzM0O29mX21kaW8uYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgxNQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipQb3RlbnRpYWwgZm9yIFN5emthbGxlciBJbnRlZ3JhdGlvbjogVVNCLWJhc2VkIE1ESU8gQWRhcHRlcioqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBNRElPIGRyaXZlcnMgaGVyZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHNlZWluZyByZWZlcmVuY2VzIHRvIGBtZGlvLWdwaW8uY2AsIGBtZGlvLWkyYy5jYCwgYW5kIHRoZW4gdGhpcyBpbnRlcmVzdGluZyBvbmU6IGBtZGlvLW12dXNiLmNgLiAgQSBVU0IgdG8gTURJTyBhZGFwdGVyLi4uIHRoYXQmIzM5O3MgdGhlIE1hcnZlbGwgVVNCIE1ESU8gQWRhcHRlciwgaWYgSSByZWNhbGwgY29ycmVjdGx5LiBOb3cgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBTeXprYWxsZXIuIElmIHdlIGNvdWxkIGVtdWxhdGUgdGhpcyBVU0IgZ2FkZ2V0LCB0aGF0IG9wZW5zIHVwIGEgd2hvbGUgbmV3IGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nLiBUaGlzIGNvdWxkIGJlIGEgc2lnbmlmaWNhbnQgZGlzY292ZXJ5LiBUaGUgaW1wbGljYXRpb25zIGFyZSBwb3RlbnRpYWxseSBodWdlIGZvciB0ZXN0aW5nIHRoaXMga2luZCBvZiBoYXJkd2FyZS4gU28sIHdoZXJlIHRvIHN0YXJ0PyBMZXQmIzM5O3MgZGl2ZSBpbnRvIGBtZGlvLW12dXNiLmNgIGFuZCBzZWUgd2hhdCBtYWtlcyBpdCB0aWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01hcnZlbGwgVVNCIE1ESU8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9tZGlvLW12dXNiLmM9MTExPU1PRFVMRV9BVVRIT1IoXCYjMzQ7VG9iaWFzIFdhbGRla3JhbnogXHUwMDNjdG9iaWFzQHdhbGRla3JhbnouY29tXHUwMDNlXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jOjExMjpNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7TWFydmVsbCBVU0IgTURJTyBBZGFwdGVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1tdnVzYi5jLTExMy1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyMDUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRW11bGF0aW5nIHRoZSBNYXJ2ZWxsIFVTQiBNRElPIEFkYXB0ZXIgaW4gU3l6a2FsbGVyOiBBIEZlYXNpYmlsaXR5IEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHN5emthbGxlciBjb3VsZCBwb3NzaWJseSBlbXVsYXRlIHRoaXMgTWFydmVsbCBVU0IgTURJTyBhZGFwdGVyLiBJZiB3ZSBjb3VsZCBnZXQgaXQgdG8gcmVnaXN0ZXIgYW4gTURJTyBidXMsIHRoYXQgd291bGQgYmUgYSBodWdlIHN0ZXAuIEJ1dCB0aGVuIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCBob3cgZG9lcyBpdCBpbnN0YW50aWF0ZSB0aGUgc3BlY2lmaWMgUEhZPyBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIFBIWSBpcyB0eXBpY2FsbHkgZGlzY292ZXJlZCB0aHJvdWdoIHByb2JpbmcgdGhlIE1ESU8gYnVzLiBJZiB0aGUgZW11bGF0ZWQgVVNCIGRldmljZSAqY291bGQqIHNvbWVob3cgcmVzcG9uZCB0byBNRElPIHJlYWRzIG9uIHRob3NlIGNydWNpYWwgUEhZIElEIHJlZ2lzdGVycyAocmVnaXN0ZXJzIDIgYW5kIDMsIHRvIGJlIHByZWNpc2UpLCBhbmQgcmV0dXJuZWQgYDB4MDAwODAxMUJgLCB0aGUga2VybmVsIHdvdWxkIGhhcHBpbHkgbG9hZCBhbmQgYmluZCB0aGUgYGRhcDgyMTFyYCBkcml2ZXIuIEJpbmdvIQoKQnV0IHRoYXQgYnJpbmdzIHVwIHRoZSBiaWcgcXVlc3Rpb246IGRvZXMgc3l6a2FsbGVyJiMzOTtzIFVTQiBmdXp6ZXIgZXZlbiBrbm93IGhvdyB0byByZXNwb25kIHRvIE1ESU8gcmVhZCByZXF1ZXN0cyB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgTWFydmVsbCBVU0IgcHJvdG9jb2w/IFRoYXQmIzM5O3MgdGhlIGNydXggb2YgaXQsIHJpZ2h0PyBJJiMzOTttIGFzc3VtaW5nIHRoZSBNYXJ2ZWxsIFVTQiBNRElPIGFkYXB0ZXIgcHJvdG9jb2wgaXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQuIFN5emthbGxlciYjMzk7cyBVU0IgZnV6emVyIGdlbmVyYXRlcyByZXNwb25zZXMgcmFuZG9tbHksIGluIGdlbmVyYWwuIFNvIHRoZXJlJiMzOTtzIGFsd2F5cyBhIHRoZW9yZXRpY2FsIHBvc3NpYmlsaXR5IG9mIGl0IGFjY2lkZW50YWxseSByZXR1cm5pbmcgdGhlICpjb3JyZWN0KiBQSFkgSUQsIGJ1dCB0aGUgcHJvYmFiaWxpdHkgb2YgaXQgcmFuZG9tbHkgaGl0dGluZyAqZXhhY3RseSogYDB4MDAwODAxMUJgIGluIHRoZSAqcmlnaHQqIHJlZ2lzdGVycyBpcyB2YW5pc2hpbmdseSBzbWFsbC4gV2UmIzM5O2QgZXNzZW50aWFsbHkgYmUgdGFsa2luZyBhYm91dCB3aW5uaW5nIHRoZSBsb3R0ZXJ5LiBVbmxlc3MsIG9mIGNvdXJzZSwgdGhlcmUgYXJlIGV4aXN0aW5nIHN5emxhbmcgZGVzY3JpcHRpb25zIHNwZWNpZmljYWxseSBmb3IgdGhpcyBwcm90b2NvbCwgd2hpY2ggd291bGQgbWFrZSB0aGUgY2hhbmNlIG9mIGdlbmVyYXRpbmcgdGhhdCBtYWdpYyBudW1iZXIgbXVjaCBoaWdoZXIuCgpSaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucywgb3IgYW55IGluZm9ybWF0aW9uIGF0IGFsbCwgdGhhdCBkZWFsIHdpdGggYG1kaW9gIG9yIGBtdnVzYmAuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcCBpbiBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTE6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTg0NQoJCQkJCQkJb3V0cHV0OiAxMzIKCQkJCQkJCXRob3VnaHRzOiA4ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIERBUDgyMTFSIFBIWSBEcml2ZXIqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZ3JlcHBlcmAgaXMgb2ZmLWxpbWl0cyBmb3IgYHN5cy9gIGZpbGVzLCBzcGVjaWZpY2FsbHkgdGhlIHN5emthbGxlciBsYW5ndWFnZSBkZXNjcmlwdGlvbnMuIEkgbmVlZCB0byB1c2UgYHJlYWQtc3l6LXNwZWNgIG9yIGBzeXotZ3JlcHBlcmAgZm9yIHRob3NlLCBidXQgbmVpdGhlciBvZiB0aG9zZSB0b29scyBpcyBpbiBteSBjdXJyZW50IGFyc2VuYWwuIFNvLCBjaGVja2luZyBzeXpsYW5nIGRlc2NyaXB0aW9ucyBpcyBvdXQuCgpFdmVuIGlmIEkgKmNvdWxkKiBnZXQgYXQgdGhlIHN5emxhbmcsIHRoaXMgZHJpdmVyIGl0c2VsZiBsb29rcyBpbmNyZWRpYmx5IHNpbXBsZS4gSSBzZWUgdGhlIGNvZGUsIGFuZCBpdCYjMzk7cyBqdXN0IGEgc2VxdWVuY2Ugb2YgTURJTyByZWFkcyBhbmQgd3JpdGVzLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBpbml0aWFsaXppbmcgYSBwaWVjZSBvZiBoYXJkd2FyZS4gTm8gY29tcGxleCBsb2dpYywgbm8gTmV0bGluayBpbnRlcmZhY2VzLCBubyBzeXNmcyBhdHRyaWJ1dGVzLCBub3RoaW5nIHRoYXQgd291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIEZ1enppbmcgdGhpcyB0aGluZyB3b3VsZCBiYXNpY2FsbHkgYm9pbCBkb3duIHRvIHJhbmRvbWx5IHJldHVybmluZyB2YWx1ZXMgZnJvbSB0aGUgYGRhcDgyMTFyX3JlYWRfZXh0YCBmdW5jdGlvbi4gSXMgdGhhdCByZWFsbHkgd29ydGggdGhlIGVmZm9ydD8KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhLiBNeSBpbnRlcm5hbCBydWxlIHNheXMsICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi50aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSYjMzQ7LiBUaGlzIERBUDgyMTFSIGRyaXZlciBpcyBhIHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkuIEl0ICpyZXF1aXJlcyogdGhlIHBoeXNpY2FsIERBUDgyMTFSIGhhcmR3YXJlLiBUaGVvcmV0aWNhbGx5LCBJIGNvdWxkICptYXliZSogcmVhY2ggaXQgd2l0aCBhIFVTQi1NRElPIGFkYXB0ZXIgYW5kIHJhbmRvbSBVU0IgcmVzcG9uc2VzLCBidXQgdGhhdCYjMzk7cyBhIGxvbmcgc2hvdCBhbmQgbm90IHRoZSBpbnRlbmRlZCBzZXR1cC4gSXQmIzM5O3MgaW1wcmFjdGljYWwgYW5kIG5vdCB3aGF0IHRoaXMgZnV6emVyIGlzIGRlc2lnbmVkIGZvci4gUGx1cywgaXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgZHJpdmVyLCB3aGljaCBpcyBhbm90aGVyIG1hcmsgYWdhaW5zdCBpdC4KCk9rYXksIGxldCYjMzk7cyBjb25zaWRlciBvdGhlciBhdmVudWVzIHRvIHJlYWNoIGl0LiBEZXZpY2UgdHJlZT8gU3l6a2FsbGVyIGRvZXNuJiMzOTt0IHR5cGljYWxseSBpbmplY3QgYXJiaXRyYXJ5IGRldmljZSB0cmVlcyBhdCBydW50aW1lIChiYXJyaW5nIG92ZXJsYXlzLCBidXQgdGhhdCYjMzk7cyByZXN0cmljdGVkKS4gTm9wZS4gVGhhdCYjMzk7cyBub3QgYSBwYXRoLgoKU28sIGhlcmUmIzM5O3MgbXkgY29uY2x1c2lvbjogVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEl0cyBsb2dpYyBpcyBleHRyZW1lbHkgdHJpdmlhbOKAlGp1c3QgYSByZWdpc3RlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGhlcmVmb3JlLCBpdCYjMzk7cyBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bSBnb2luZyB0byBkb2N1bWVudCB0aGUgcmVhc29uaW5nIGNvbmNpc2VseSBhcyBmb2xsb3dzOiAmIzM0O1RoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKS4gUEhZIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0byBiZSBwcmVzZW50IG9uIGFuIE1ESU8gYnVzIChvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIFFFTVUpIHRvIGJlIHByb2JlZCBhbmQgZXhlY3V0ZWQuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgKHJlZ2lzdGVyIHJlYWRzL3dyaXRlcykgYW5kIGRvZXMgbm90IGV4cG9zZSBhbnkgY29tcGxleCBzb2Z0d2FyZSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OwoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIG90aGVyIG1vZGlmaWVkIGZpbGVzIHRvIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2Ugc25lYWt5IGlzIGdvaW5nIG9uLiBJJiMzOTtsbCBsb29rIGF0IGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbGAsIGBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnlhbWxgLCBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLCBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCwgYW5kIGBkcml2ZXJzL25ldC9waHkvZGFwODIxMXIuY2AuIE9rYXksIGl0JiMzOTtzIGFsbCBkaXJlY3RseSByZWxhdGVkIHRvIHRoaXMgb25lIFBIWSBkcml2ZXIuCgpBbHJpZ2h0LCBJJiMzOTttIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDExOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdmVuZG9yLXNwZWNpZmljIEV0aGVybmV0IFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkuIFBIWSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gYmUgcHJlc2VudCBvbiBhbiBNRElPIGJ1cyAob3Igc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMgYW5kIGhhcmR3YXJlIGVtdWxhdGlvbiBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCBRRU1VKSB0byBiZSBwcm9iZWQgYW5kIGV4ZWN1dGVkLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIChyZWdpc3RlciByZWFkcy93cml0ZXMpIGFuZCBkb2VzIG5vdCBleHBvc2UgYW55IGNvbXBsZXggc29mdHdhcmUgaW50ZXJmYWNlcywgbWFraW5nIGl0IHVuc3VpdGFibGUgYW5kIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKS4gUEhZIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0byBiZSBwcmVzZW50IG9uIGFuIE1ESU8gYnVzIChvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIFFFTVUpIHRvIGJlIHByb2JlZCBhbmQgZXhlY3V0ZWQuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgKHJlZ2lzdGVyIHJlYWRzL3dyaXRlcykgYW5kIGRvZXMgbm90IGV4cG9zZSBhbnkgY29tcGxleCBzb2Z0d2FyZSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMTozMzoyMi41MTIxMTU1MzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg1NjM3NjQzODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBQSFkgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgb24gYW4gTURJTyBidXMgKG9yIHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zIGFuZCBoYXJkd2FyZSBlbXVsYXRpb24gbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgUUVNVSkgdG8gYmUgcHJvYmVkIGFuZCBleGVjdXRlZC4gRnVydGhlcm1vcmUsIHRoZSBkcml2ZXIgb25seSBjb250YWlucyB0cml2aWFsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyAocmVnaXN0ZXIgcmVhZHMvd3JpdGVzKSBhbmQgZG9lcyBub3QgZXhwb3NlIGFueSBjb21wbGV4IHNvZnR3YXJlIGludGVyZmFjZXMsIG1ha2luZyBpdCB1bnN1aXRhYmxlIGFuZCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzM6MjIuNTEyMTIyNTkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzI2NTExOTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmE0YzU0Yjk4ZTg2ZjlhYWY5NTQ5ZGI4MDQxMjU1NmY1ZmFmMTY1M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDExOjMzOjIwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmZiNzhmYTRmNThjYTNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxcXG5AQCAtMCwwICsxLDYyIEBAXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4wLW9ubHkgT1IgQlNELTItQ2xhdXNlKVxcbislWUFNTCAxLjJcXG4rLS0tXFxuKyRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2RhcHUsZGFwODIxMXIueWFtbCNcXG4rJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuK1xcbit0aXRsZTogREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZXFxuK1xcbittYWludGFpbmVyczpcXG4rICAtIEFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXG4rXFxuK2Rlc2NyaXB0aW9uOiB8XFxuKyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXFxuKyAgc3VwcG9ydGluZyBJRUVFIDgwMi4zYXogRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldCwgSUVFRSAxNTg4IFN5bmNFLFxcbisgIGFuZCBhbiBpbnRlcm5hbCBwYWNrZXQgZ2VuZXJhdG9yIGZvciBkaWFnbm9zdGljcy5cXG4rXFxuKyAgU3BlY2lmaWNhdGlvbnM6XFxuKyAgICAtIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxcbisgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxcbisgICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XFxuKyAgICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XFxuKyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcXG4rXFxuK2FsbE9mOlxcbisgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXFxuK1xcbitwcm9wZXJ0aWVzOlxcbisgIGNvbXBhdGlibGU6XFxuKyAgICBjb25zdDogZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXFxuK1xcbisgIHJlZzpcXG4rICAgIG1heEl0ZW1zOiAxXFxuK1xcbisgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFJHTUlJIFJYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxcbisgICAgbXVsdGlwbGVPZjogMTUwXFxuKyAgICBtYXhpbXVtOiAyMjUwXFxuKyAgICBkZWZhdWx0OiAxOTUwXFxuK1xcbisgIHR4LWludGVybmFsLWRlbGF5LXBzOlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxcbisgICAgbXVsdGlwbGVPZjogMTUwXFxuKyAgICBtYXhpbXVtOiAyMjUwXFxuKyAgICBkZWZhdWx0OiAxOTUwXFxuK1xcbit1bmV2YWx1YXRlZFByb3BlcnRpZXM6IGZhbHNlXFxuK1xcbitleGFtcGxlczpcXG4rICAtIHxcXG4rICAgIG1kaW8ge1xcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXG4rICAgICAgICBldGhlcm5ldC1waHlAMSB7XFxuKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwiZXRoZXJuZXQtcGh5LWlkMDAwOC4wMTFiXFxcIjtcXG4rICAgICAgICAgICAgcmVnID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICAgICByeC1pbnRlcm5hbC1kZWxheS1wcyA9IFxcdTAwM2MyMTAwXFx1MDAzZTtcXG4rICAgICAgICAgICAgdHgtaW50ZXJuYWwtZGVsYXktcHMgPSBcXHUwMDNjMjEwMFxcdTAwM2U7XFxuKyAgICAgICAgfTtcXG4rICAgIH07XFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMueWFtbCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMueWFtbFxcbmluZGV4IDM5NjA0NGYzNjhlN2MuLmMzZGI4NTdiOTgzNzIgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXFxuKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXFxuQEAgLTQwMyw2ICs0MDMsOCBAQCBwYXR0ZXJuUHJvcGVydGllczpcXG4gICAgIGRlc2NyaXB0aW9uOiBDWi5OSUMsIHoucy5wLm8uXFxuICAgXFxcIl5kYWxsYXMsLipcXFwiOlxcbiAgICAgZGVzY3JpcHRpb246IE1heGltIEludGVncmF0ZWQgUHJvZHVjdHMgKGZvcm1lcmx5IERhbGxhcyBTZW1pY29uZHVjdG9yKVxcbisgIFxcXCJeZGFwdSwuKlxcXCI6XFxuKyAgICBkZXNjcmlwdGlvbjogR3Vhbmdkb25nIERhcHUgVGVsZWNvbSBDby4sIEx0ZC5cXG4gICBcXFwiXmRhdGFpbWFnZSwuKlxcXCI6XFxuICAgICBkZXNjcmlwdGlvbjogRGF0YUltYWdlLCBJbmMuXFxuICAgXFxcIl5kYXZpY29tLC4qXFxcIjpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xcbmluZGV4IDA5OWYyNWRjZWFiYmMuLjM5NWJjZDM1YmZmYTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWdcXG4rKysgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xcbkBAIC0yMzIsNiArMjMyLDE1IEBAIGNvbmZpZyBDT1JUSU5BX1BIWVxcbiBcXHRoZWxwXFxuIFxcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBDUzQzNDAgcGh5LlxcbiBcXG4rY29uZmlnIERBUDgyMTFSX1BIWVxcbitcXHR0cmlzdGF0ZSBcXFwiREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZXFxcIlxcbitcXHRkZXBlbmRzIG9uIE9GXFxuK1xcdGhlbHBcXG4rXFx0ICBTdXBwb3J0IGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLlxcbitcXHQgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmdcXG4rXFx0ICBhcHBsaWNhdGlvbnMsIHN1cHBvcnRpbmcgMTAvMTAwLzEwMDAgTWJwcyBvcGVyYXRpb24uIFN1cHBvcnRzXFxuK1xcdCAgUkdNSUkgaW50ZXJmYWNlIHdpdGggY29uZmlndXJhYmxlIFRYL1JYIGNsb2NrIGRlbGF5cy5cXG4rXFxuIGNvbmZpZyBEQVZJQ09NX1BIWVxcbiBcXHR0cmlzdGF0ZSBcXFwiRGF2aWNvbSBQSFlzXFxcIlxcbiBcXHRoZWxwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxcbmluZGV4IGRlNjYwYWU5NDk0NTMuLmM3MmY3NzMwZTI1ZGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXFxuQEAgLTUyLDYgKzUyLDcgQEAgb2JqLSQoQ09ORklHX0JDTV9ORVRfUEhZUFRQKVxcdCs9IGJjbS1waHktcHRwLm9cXG4gb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcXHQrPSBicm9hZGNvbS5vXFxuIG9iai0kKENPTkZJR19DSUNBREFfUEhZKVxcdCs9IGNpY2FkYS5vXFxuIG9iai0kKENPTkZJR19DT1JUSU5BX1BIWSlcXHQrPSBjb3J0aW5hLm9cXG4rb2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSlcXHQrPSBkYXA4MjExci5vXFxuIG9iai0kKENPTkZJR19EQVZJQ09NX1BIWSlcXHQrPSBkYXZpY29tLm9cXG4gb2JqLSQoQ09ORklHX0RQODM2NDBfUEhZKVxcdCs9IGRwODM2NDAub1xcbiBvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXFx0Kz0gZHA4MzgyMi5vXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmYwMTBjZTBjM2JkMTNcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcXG5AQCAtMCwwICsxLDIwNiBAQFxcbisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisvKlxcbisgKiBEcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXFxuKyAqXFxuKyAqIFNwZWNpZmljYXRpb25zOlxcbisgKiAgIC0gSUVFRSA4MDIuMyAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcXG4rICogICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXRcXG4rICogICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XFxuKyAqICAgLSBSR01JSVxcbisgKlxcbisgKiBBdXRob3I6IEFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXG4rICovXFxuK1xcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvYml0ZmllbGQuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGh0b29sLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvcG9sbC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbWlpLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldGRldmljZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuK1xcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9JRFxcdFxcdFxcdDB4MDAwODAxMUJcXG4rI2RlZmluZSBEQVA4MjExUl9QSFlfSURfTUFTS1xcdFxcdDB4RkZGRkZGRkZcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfRVhUX0FERFxcdFxcdDB4MUVcXG4rI2RlZmluZSBEQVA4MjExUl9FWFRfREFUQVxcdFxcdDB4MUZcXG4rXFxuKyNkZWZpbmUgREFQODIxMVJfUEhZX0NPTlxcdFxcdDB4QTAwMVxcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9TV19SU1RcXHRcXHRCSVQoMTUpXFxuK1xcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTlxcdFxcdDB4QTAwM1xcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLXFx0R0VOTUFTSygzLCAwKVxcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLXFx0R0VOTUFTSygxMywgMTApXFxuK1xcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLXFx0KERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLIHwgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0spXFxuK1xcbisvKiBJbml0aWFsIFJHTUlJIFJYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAwICogMTUwcHMgPT0gMC4wMG5zICovXFxuKyNkZWZpbmUgREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMXFx0MFxcbisvKiBJbml0aWFsIFJHTUlJIFRYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAxICogMTUwcHMgPT0gMC4xNW5zKi9cXG4rI2RlZmluZSBEQVA4MjExUl9JTklUSUFMX1RYX0RFTF9WQUxcXHQxXFxuKy8qIERlZmF1bHQgUkdNSUkgZGVsYXk6IDEzICogMTUwID09IDEuOTVucyAqL1xcbisjZGVmaW5lIERBUDgyMTFSX0RFRkFVTFRfREVMX1NFTFxcdDB4RFxcbitcXG4rc3RhdGljIGNvbnN0IGludCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheVtdID0gezAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIDEwNTAsIDEyMDAsIDEzNTAsIDE1MDAsIDE2NTAsIDE4MDAsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgIDE5NTAsIDIxMDAsIDIyNTB9O1xcbitcXG4rI2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFXFx0QVJSQVlfU0laRShkYXA4MjExcl9pbnRlcm5hbF9kZWxheSlcXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9yZWFkX2V4dCgpIC0gUmVhZCBleHRlbmRlZCByZWdpc3RlclxcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXFxuKyAqXFxuKyAqIFJlYWRzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxcbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cXG4rICpcXG4rICogUmV0dXJuOiBSZWdpc3RlciB2YWx1ZSBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXFxuKyAqL1xcbitzdGF0aWMgaW50IGRhcDgyMTFyX3JlYWRfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFxuK1xcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcXG4rXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4rXFx0cmV0ID0gX19waHlfcmVhZChwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBKTtcXG4rb3V0OlxcbitcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0c1xcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXFxuKyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyXFxuKyAqIEBzZXQ6IEJpdCBtYXNrIG9mIGJpdHMgdG8gc2V0XFxuKyAqXFxuKyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxcbisgKiBOZXcgdmFsdWUgPSAob2xkIHZhbHVlIFxcdTAwMjYgfm1hc2spIHwgc2V0LlxcbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcXG4rICovXFxuK3N0YXRpYyBpbnQgZGFwODIxMXJfbW9kaWZ5X2V4dChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgcmVnLCB1MTYgbWFzaywgdTE2IHNldClcXG4re1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcXG4rXFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xcbitcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcbitcXHRyZXQgPSBfX3BoeV9tb2RpZnkocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSwgbWFzaywgc2V0KTtcXG4rb3V0OlxcbitcXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XFxuK1xcdHJldHVybiByZXQ7XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFlcXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcXG4rICpcXG4rICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjpcXG4rICogLSBSR01JSSBkZWxheXMgYmFzZWQgb24gaW50ZXJmYWNlIG1vZGVcXG4rICogLSBTb2Z0d2FyZSByZXNldCB0byBhcHBseSBzZXR0aW5ncyAobG93IGFjdGl2ZSwgc2VsZiBjbGVhcilcXG4rICpcXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVcXG4rICovXFxuK3N0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHR1MTYgc2V0ID0gMDtcXG4rXFx0aW50IHJldCwgdmFsO1xcbitcXHRzMzIgcnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9JTklUSUFMX1JYX0RFTF9WQUw7XFxuK1xcdHMzMiB0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTDtcXG4rXFxuK1xcdGlmICghcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdGlmIChwaHlkZXYtXFx1MDAzZWludGVyZmFjZSAhPSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRClcXG4rXFx0XFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBwaHlfZ2V0X2ludGVybmFsX2RlbGF5KHBoeWRldiwgZGFwODIxMXJfaW50ZXJuYWxfZGVsYXksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIERBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpO1xcbitcXG4rXFx0aWYgKHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEKVxcbitcXHRcXHR0eF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgREFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xcbitcXG4rXFx0c3dpdGNoIChwaHlkZXYtXFx1MDAzZWludGVyZmFjZSkge1xcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG4rXFx0XFx0aWYgKHJ4X2ludGVybmFsX2RlbGF5IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9JTklUSUFMX1JYX0RFTF9WQUw7XFxuK1xcbitcXHRcXHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXFx1MDAzYyAwKVxcbitcXHRcXHRcXHR0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTDtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQ6XFxuK1xcdFxcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXHRcXHRicmVhaztcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XFxuK1xcdFxcdGlmIChyeF9pbnRlcm5hbF9kZWxheSBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcXG4rXFx0XFx0aWYgKHR4X2ludGVybmFsX2RlbGF5IFxcdTAwM2MgMClcXG4rXFx0XFx0XFx0dHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIlVuc3VwcG9ydGVkIGludGVyZmFjZTogJWRcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuK1xcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLLCByeF9pbnRlcm5hbF9kZWxheSk7XFxuK1xcdHNldCB8PSBGSUVMRF9QUkVQKERBUDgyMTFSX1JHTUlJX1RYX0RFTF9NQVNLLCB0eF9pbnRlcm5hbF9kZWxheSk7XFxuK1xcbitcXHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUEhZX0NPTiwgREFQODIxMVJfUEhZX1NXX1JTVCwgMCk7XFxuK1xcdGlmIChyZXQpXFxuK1xcdFxcdHJldHVybiByZXQ7XFxuK1xcbitcXHQvKiBXYWl0IGZvciByZXNldCBzZWxmLWNsZWFyIChmcm9tIGxvdyBhY3RpdmUgdG8gaGlnaCkgKi9cXG4rXFx0cmV0ID0gcmVhZF9wb2xsX3RpbWVvdXQoZGFwODIxMXJfcmVhZF9leHQsIHZhbCxcXG4rXFx0XFx0XFx0XFx0KHZhbCBcXHUwMDI2IERBUDgyMTFSX1BIWV9TV19SU1QpLFxcbitcXHRcXHRcXHRcXHQyMCwgMjAwLCBmYWxzZSwgcGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OKTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFx0aWYgKHZhbCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiB2YWw7XFxuK1xcbitcXHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUkdNSUlfQ09OLCBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSywgc2V0KTtcXG4rXFx0aWYgKHJldClcXG4rXFx0XFx0cmV0dXJuIHJldDtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZGFwODIxMXJfZHJpdmVyW10gPSB7XFxuK1xcdHtcXG4rXFx0XFx0UEhZX0lEX01BVENIX0VYQUNUKERBUDgyMTFSX1BIWV9JRCksXFxuK1xcdFxcdC5uYW1lXFx0XFx0PSBcXFwiREFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldFxcXCIsXFxuK1xcdFxcdC5zb2Z0X3Jlc2V0XFx0PSBnZW5waHlfc29mdF9yZXNldCxcXG4rXFx0XFx0LmNvbmZpZ19pbml0XFx0PSBkYXA4MjExcl9jb25maWdfaW5pdCxcXG4rXFx0XFx0LnJlYWRfc3RhdHVzXFx0PSBnZW5waHlfcmVhZF9zdGF0dXMsXFxuK1xcdFxcdC5zZXRfbG9vcGJhY2tcXHQ9IGdlbnBoeV9sb29wYmFjayxcXG4rXFx0XFx0LmNvbmZpZ19hbmVnXFx0PSBnZW5waHlfY29uZmlnX2FuZWcsXFxuK1xcdFxcdC5zdXNwZW5kXFx0PSBnZW5waHlfc3VzcGVuZCxcXG4rXFx0XFx0LnJlc3VtZVxcdFxcdD0gZ2VucGh5X3Jlc3VtZSxcXG4rXFx0fSxcXG4rfTtcXG4rbW9kdWxlX3BoeV9kcml2ZXIoZGFwODIxMXJfZHJpdmVyKTtcXG4rXFxuK01PRFVMRV9ERVNDUklQVElPTihcXFwiREFQODIxMVIgR2lnYWJpdCBFdGhlcm5ldCBQSFkgZHJpdmVyXFxcIik7XFxuK01PRFVMRV9BVVRIT1IoXFxcIkFydGVtIFNoaW1rbyBcXHUwMDNjYS5zaGlta28uZGV2QGdtYWlsLmNvbVxcdTAwM2VcXFwiKTtcXG4rTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkYXA4MjExcl90YltdID0ge1xcbitcXHR7IERBUDgyMTFSX1BIWV9JRCwgREFQODIxMVJfUEhZX0lEX01BU0sgfSxcXG4rXFx0eyAvKiBzZW50aW5lbCAqLyB9XFxuK307XFxuK01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpO1xcbitcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzM6MjMuODM5NjY2MDk1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA3MjM2MjA2NDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZIGRyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKS4gUEhZIGRyaXZlcnMgcmVxdWlyZSBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSB0byBiZSBwcmVzZW50IG9uIGFuIE1ESU8gYnVzIChvciBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucyBhbmQgaGFyZHdhcmUgZW11bGF0aW9uIG5vdCBwcmVzZW50IGluIHN0YW5kYXJkIFFFTVUpIHRvIGJlIHByb2JlZCBhbmQgZXhlY3V0ZWQuIEZ1cnRoZXJtb3JlLCB0aGUgZHJpdmVyIG9ubHkgY29udGFpbnMgdHJpdmlhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMgKHJlZ2lzdGVyIHJlYWRzL3dyaXRlcykgYW5kIGRvZXMgbm90IGV4cG9zZSBhbnkgY29tcGxleCBzb2Z0d2FyZSBpbnRlcmZhY2VzLCBtYWtpbmcgaXQgdW5zdWl0YWJsZSBhbmQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZhNGM1NGI5OGU4NmY5YWFmOTU0OWRiODA0MTI1NTZmNWZhZjE2NTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDExOjMzOjIwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhcHUsZGFwODIxMXIueWFtbFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmZiNzhmYTRmNThjYTNcbi0tLSAvZGV2L251bGxcbisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGFwdSxkYXA4MjExci55YW1sXG5AQCAtMCwwICsxLDYyIEBAXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogKEdQTC0yLjAtb25seSBPUiBCU0QtMi1DbGF1c2UpXG4rJVlBTUwgMS4yXG4rLS0tXG4rJGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvZGFwdSxkYXA4MjExci55YW1sI1xuKyRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuK1xuK3RpdGxlOiBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFlcbitcbittYWludGFpbmVyczpcbisgIC0gQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcbitcbitkZXNjcmlwdGlvbjogfFxuKyAgVGhlIERBUDgyMTFSKEkpIGlzIGEgR2lnYWJpdCBFdGhlcm5ldCBQSFkgd2l0aCBSR01JSSBpbnRlcmZhY2UsXG4rICBzdXBwb3J0aW5nIElFRUUgODAyLjNheiBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0LCBJRUVFIDE1ODggU3luY0UsXG4rICBhbmQgYW4gaW50ZXJuYWwgcGFja2V0IGdlbmVyYXRvciBmb3IgZGlhZ25vc3RpY3MuXG4rXG4rICBTcGVjaWZpY2F0aW9uczpcbisgICAgLSAxMEJBU0UtVGUsIDEwMEJBU0UtVFgsIDEwMDBCQVNFLVRcbisgICAgLSBSR01JSSB3aXRoIGNvbmZpZ3VyYWJsZSBUWC9SWCBjbG9jayBkZWxheXMgKDE1MCBwcyBzdGVwcywgMC0yMjUwIHBzKVxuKyAgICAtIElFRUUgODAyLjNhei0yMDEwIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXRcbisgICAgLSBJRUVFIDE1ODggU3luY0Ugc3VwcG9ydFxuKyAgICAtIEludGVybmFsIHBhY2tldCBnZW5lcmF0b3IgYW5kIGNoZWNrZXIgZm9yIGxpbmsgZGlhZ25vc3RpY3NcbitcbithbGxPZjpcbisgIC0gJHJlZjogZXRoZXJuZXQtcGh5LnlhbWwjXG4rXG4rcHJvcGVydGllczpcbisgIGNvbXBhdGlibGU6XG4rICAgIGNvbnN0OiBldGhlcm5ldC1waHktaWQwMDA4LjAxMWJcbitcbisgIHJlZzpcbisgICAgbWF4SXRlbXM6IDFcbitcbisgIHJ4LWludGVybmFsLWRlbGF5LXBzOlxuKyAgICBkZXNjcmlwdGlvbjpcbisgICAgICBSR01JSSBSWCBjbG9jayBkZWxheSBpbiBwaWNvc2Vjb25kcyAoMCB0byBtYXhpbXVtKS5cbisgICAgbXVsdGlwbGVPZjogMTUwXG4rICAgIG1heGltdW06IDIyNTBcbisgICAgZGVmYXVsdDogMTk1MFxuK1xuKyAgdHgtaW50ZXJuYWwtZGVsYXktcHM6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIFJHTUlJIFRYIGNsb2NrIGRlbGF5IGluIHBpY29zZWNvbmRzICgwIHRvIG1heGltdW0pLlxuKyAgICBtdWx0aXBsZU9mOiAxNTBcbisgICAgbWF4aW11bTogMjI1MFxuKyAgICBkZWZhdWx0OiAxOTUwXG4rXG4rdW5ldmFsdWF0ZWRQcm9wZXJ0aWVzOiBmYWxzZVxuK1xuK2V4YW1wbGVzOlxuKyAgLSB8XG4rICAgIG1kaW8ge1xuKyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSBcdTAwM2MxXHUwMDNlO1xuKyAgICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuK1xuKyAgICAgICAgZXRoZXJuZXQtcGh5QDEge1xuKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcImV0aGVybmV0LXBoeS1pZDAwMDguMDExYlwiO1xuKyAgICAgICAgICAgIHJlZyA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICAgICAgcngtaW50ZXJuYWwtZGVsYXktcHMgPSBcdTAwM2MyMTAwXHUwMDNlO1xuKyAgICAgICAgICAgIHR4LWludGVybmFsLWRlbGF5LXBzID0gXHUwMDNjMjEwMFx1MDAzZTtcbisgICAgICAgIH07XG4rICAgIH07XG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXG5pbmRleCAzOTYwNDRmMzY4ZTdjLi5jM2RiODU3Yjk4MzcyIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmVuZG9yLXByZWZpeGVzLnlhbWxcbkBAIC00MDMsNiArNDAzLDggQEAgcGF0dGVyblByb3BlcnRpZXM6XG4gICAgIGRlc2NyaXB0aW9uOiBDWi5OSUMsIHoucy5wLm8uXG4gICBcIl5kYWxsYXMsLipcIjpcbiAgICAgZGVzY3JpcHRpb246IE1heGltIEludGVncmF0ZWQgUHJvZHVjdHMgKGZvcm1lcmx5IERhbGxhcyBTZW1pY29uZHVjdG9yKVxuKyAgXCJeZGFwdSwuKlwiOlxuKyAgICBkZXNjcmlwdGlvbjogR3Vhbmdkb25nIERhcHUgVGVsZWNvbSBDby4sIEx0ZC5cbiAgIFwiXmRhdGFpbWFnZSwuKlwiOlxuICAgICBkZXNjcmlwdGlvbjogRGF0YUltYWdlLCBJbmMuXG4gICBcIl5kYXZpY29tLC4qXCI6XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L0tjb25maWcgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuaW5kZXggMDk5ZjI1ZGNlYWJiYy4uMzk1YmNkMzViZmZhOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXG4rKysgYi9kcml2ZXJzL25ldC9waHkvS2NvbmZpZ1xuQEAgLTIzMiw2ICsyMzIsMTUgQEAgY29uZmlnIENPUlRJTkFfUEhZXG4gXHRoZWxwXG4gXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQ1M0MzQwIHBoeS5cbiBcbitjb25maWcgREFQODIxMVJfUEhZXG4rXHR0cmlzdGF0ZSBcIkRBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWVwiXG4rXHRkZXBlbmRzIG9uIE9GXG4rXHRoZWxwXG4rXHQgIFN1cHBvcnQgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkgR2lnYWJpdCBFdGhlcm5ldCBQSFkuXG4rXHQgIFRoaXMgUEhZIGlzIGRlc2lnbmVkIGZvciBlbnRlcnByaXNlIGFuZCBpbmR1c3RyaWFsIG5ldHdvcmtpbmdcbitcdCAgYXBwbGljYXRpb25zLCBzdXBwb3J0aW5nIDEwLzEwMC8xMDAwIE1icHMgb3BlcmF0aW9uLiBTdXBwb3J0c1xuK1x0ICBSR01JSSBpbnRlcmZhY2Ugd2l0aCBjb25maWd1cmFibGUgVFgvUlggY2xvY2sgZGVsYXlzLlxuK1xuIGNvbmZpZyBEQVZJQ09NX1BIWVxuIFx0dHJpc3RhdGUgXCJEYXZpY29tIFBIWXNcIlxuIFx0aGVscFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuaW5kZXggZGU2NjBhZTk0OTQ1My4uYzcyZjc3MzBlMjVkYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVxuKysrIGIvZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXG5AQCAtNTIsNiArNTIsNyBAQCBvYmotJChDT05GSUdfQkNNX05FVF9QSFlQVFApXHQrPSBiY20tcGh5LXB0cC5vXG4gb2JqLSQoQ09ORklHX0JST0FEQ09NX1BIWSlcdCs9IGJyb2FkY29tLm9cbiBvYmotJChDT05GSUdfQ0lDQURBX1BIWSlcdCs9IGNpY2FkYS5vXG4gb2JqLSQoQ09ORklHX0NPUlRJTkFfUEhZKVx0Kz0gY29ydGluYS5vXG4rb2JqLSQoQ09ORklHX0RBUDgyMTFSX1BIWSlcdCs9IGRhcDgyMTFyLm9cbiBvYmotJChDT05GSUdfREFWSUNPTV9QSFkpXHQrPSBkYXZpY29tLm9cbiBvYmotJChDT05GSUdfRFA4MzY0MF9QSFkpXHQrPSBkcDgzNjQwLm9cbiBvYmotJChDT05GSUdfRFA4MzgyMl9QSFkpXHQrPSBkcDgzODIyLm9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvZGFwODIxMXIuYyBiL2RyaXZlcnMvbmV0L3BoeS9kYXA4MjExci5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uZjAxMGNlMGMzYmQxM1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNcbkBAIC0wLDAgKzEsMjA2IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisvKlxuKyAqIERyaXZlciBmb3IgdGhlIERBUFUgVGVsZWNvbSBEQVA4MjExUihJKSBHaWdhYml0IEV0aGVybmV0IFBIWS5cbisgKlxuKyAqIFNwZWNpZmljYXRpb25zOlxuKyAqICAgLSBJRUVFIDgwMi4zIDEwQkFTRS1UZSwgMTAwQkFTRS1UWCwgMTAwMEJBU0UtVFxuKyAqICAgLSBJRUVFIDgwMi4zYXotMjAxMCBFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0XG4rICogICAtIElFRUUgMTU4OCBTeW5jRSBzdXBwb3J0XG4rICogICAtIFJHTUlJXG4rICpcbisgKiBBdXRob3I6IEFydGVtIFNoaW1rbyBcdTAwM2NhLnNoaW1rby5kZXZAZ21haWwuY29tXHUwMDNlXG4rICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vycm5vLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvcG9sbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbWlpLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvcGh5LmhcdTAwM2VcbitcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9JRFx0XHRcdDB4MDAwODAxMUJcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9JRF9NQVNLXHRcdDB4RkZGRkZGRkZcbitcbisjZGVmaW5lIERBUDgyMTFSX0VYVF9BRERcdFx0MHgxRVxuKyNkZWZpbmUgREFQODIxMVJfRVhUX0RBVEFcdFx0MHgxRlxuK1xuKyNkZWZpbmUgREFQODIxMVJfUEhZX0NPTlx0XHQweEEwMDFcbisjZGVmaW5lIERBUDgyMTFSX1BIWV9TV19SU1RcdFx0QklUKDE1KVxuK1xuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfQ09OXHRcdDB4QTAwM1xuKyNkZWZpbmUgREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0tcdEdFTk1BU0soMywgMClcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX1JYX0RFTF9NQVNLXHRHRU5NQVNLKDEzLCAxMClcbitcbisjZGVmaW5lIERBUDgyMTFSX1JHTUlJX0NPTkZJR19NQVNLXHQoREFQODIxMVJfUkdNSUlfUlhfREVMX01BU0sgfCBEQVA4MjExUl9SR01JSV9UWF9ERUxfTUFTSylcbitcbisvKiBJbml0aWFsIFJHTUlJIFJYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAwICogMTUwcHMgPT0gMC4wMG5zICovXG4rI2RlZmluZSBEQVA4MjExUl9JTklUSUFMX1JYX0RFTF9WQUxcdDBcbisvKiBJbml0aWFsIFJHTUlJIFRYIGRlbGF5IHBlciBoYXJkd2FyZSBzcGVjaWZpY2F0aW9uOiAxICogMTUwcHMgPT0gMC4xNW5zKi9cbisjZGVmaW5lIERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTFx0MVxuKy8qIERlZmF1bHQgUkdNSUkgZGVsYXk6IDEzICogMTUwID09IDEuOTVucyAqL1xuKyNkZWZpbmUgREFQODIxMVJfREVGQVVMVF9ERUxfU0VMXHQweERcbitcbitzdGF0aWMgY29uc3QgaW50IGRhcDgyMTFyX2ludGVybmFsX2RlbGF5W10gPSB7MCwgMTUwLCAzMDAsIDQ1MCwgNjAwLCA3NTAsIDkwMCxcbitcdFx0XHRcdFx0ICAgICAgMTA1MCwgMTIwMCwgMTM1MCwgMTUwMCwgMTY1MCwgMTgwMCxcbitcdFx0XHRcdFx0ICAgICAgMTk1MCwgMjEwMCwgMjI1MH07XG4rXG4rI2RlZmluZSBEQVA4MjExUl9ERUxBWV9TSVpFXHRBUlJBWV9TSVpFKGRhcDgyMTFyX2ludGVybmFsX2RlbGF5KVxuK1xuKy8qKlxuKyAqIGRhcDgyMTFyX3JlYWRfZXh0KCkgLSBSZWFkIGV4dGVuZGVkIHJlZ2lzdGVyXG4rICogQHBoeWRldjogUEhZIGRldmljZSBzdHJ1Y3R1cmVcbisgKiBAcmVnOiBFeHRlbmRlZCByZWdpc3RlciBhZGRyZXNzXG4rICpcbisgKiBSZWFkcyBhIFBIWSBleHRlbmRlZCByZWdpc3RlciB1c2luZyB0aGUgaW5kaXJlY3QgYWNjZXNzIG1ldGhvZC5cbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cbisgKlxuKyAqIFJldHVybjogUmVnaXN0ZXIgdmFsdWUgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxuKyAqL1xuK3N0YXRpYyBpbnQgZGFwODIxMXJfcmVhZF9leHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZylcbit7XG4rXHRpbnQgcmV0O1xuK1xuK1x0cGh5X2xvY2tfbWRpb19idXMocGh5ZGV2KTtcbitcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgREFQODIxMVJfRVhUX0FERCwgcmVnKTtcbitcdGlmIChyZXQgXHUwMDNjIDApXG4rXHRcdGdvdG8gb3V0O1xuK1xuK1x0cmV0ID0gX19waHlfcmVhZChwaHlkZXYsIERBUDgyMTFSX0VYVF9EQVRBKTtcbitvdXQ6XG4rXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbisvKipcbisgKiBkYXA4MjExcl9tb2RpZnlfZXh0KCkgLSBNb2RpZnkgZXh0ZW5kZWQgcmVnaXN0ZXIgYml0c1xuKyAqIEBwaHlkZXY6IFBIWSBkZXZpY2Ugc3RydWN0dXJlXG4rICogQHJlZzogRXh0ZW5kZWQgcmVnaXN0ZXIgYWRkcmVzc1xuKyAqIEBtYXNrOiBCaXQgbWFzayBvZiBiaXRzIHRvIGNsZWFyXG4rICogQHNldDogQml0IG1hc2sgb2YgYml0cyB0byBzZXRcbisgKlxuKyAqIE1vZGlmaWVzIGEgUEhZIGV4dGVuZGVkIHJlZ2lzdGVyIHVzaW5nIHRoZSBpbmRpcmVjdCBhY2Nlc3MgbWV0aG9kLlxuKyAqIE5ldyB2YWx1ZSA9IChvbGQgdmFsdWUgXHUwMDI2IH5tYXNrKSB8IHNldC5cbisgKiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgTURJTyBidXMgbG9jay5cbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlXG4rICovXG4rc3RhdGljIGludCBkYXA4MjExcl9tb2RpZnlfZXh0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWcsIHUxNiBtYXNrLCB1MTYgc2V0KVxuK3tcbitcdGludCByZXQ7XG4rXG4rXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xuK1x0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBEQVA4MjExUl9FWFRfQURELCByZWcpO1xuK1x0aWYgKHJldCBcdTAwM2MgMClcbitcdFx0Z290byBvdXQ7XG4rXG4rXHRyZXQgPSBfX3BoeV9tb2RpZnkocGh5ZGV2LCBEQVA4MjExUl9FWFRfREFUQSwgbWFzaywgc2V0KTtcbitvdXQ6XG4rXHRwaHlfdW5sb2NrX21kaW9fYnVzKHBoeWRldik7XG4rXHRyZXR1cm4gcmV0O1xuK31cbitcbisvKipcbisgKiBkYXA4MjExcl9jb25maWdfaW5pdCgpIC0gSW5pdGlhbGl6ZSBQSFlcbisgKiBAcGh5ZGV2OiBQSFkgZGV2aWNlIHN0cnVjdHVyZVxuKyAqXG4rICogQ29uZmlndXJlcyB0aGUgUEhZIGR1cmluZyBpbml0aWFsaXphdGlvbjpcbisgKiAtIFJHTUlJIGRlbGF5cyBiYXNlZCBvbiBpbnRlcmZhY2UgbW9kZVxuKyAqIC0gU29mdHdhcmUgcmVzZXQgdG8gYXBwbHkgc2V0dGluZ3MgKGxvdyBhY3RpdmUsIHNlbGYgY2xlYXIpXG4rICpcbisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZVxuKyAqL1xuK3N0YXRpYyBpbnQgZGFwODIxMXJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHR1MTYgc2V0ID0gMDtcbitcdGludCByZXQsIHZhbDtcbitcdHMzMiByeF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfUlhfREVMX1ZBTDtcbitcdHMzMiB0eF9pbnRlcm5hbF9kZWxheSA9IERBUDgyMTFSX0lOSVRJQUxfVFhfREVMX1ZBTDtcbitcbitcdGlmICghcGh5X2ludGVyZmFjZV9pc19yZ21paShwaHlkZXYpKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdGlmIChwaHlkZXYtXHUwMDNlaW50ZXJmYWNlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEKVxuK1x0XHRyeF9pbnRlcm5hbF9kZWxheSA9IHBoeV9nZXRfaW50ZXJuYWxfZGVsYXkocGh5ZGV2LCBkYXA4MjExcl9pbnRlcm5hbF9kZWxheSxcbitcdFx0XHRcdFx0XHRcdCAgIERBUDgyMTFSX0RFTEFZX1NJWkUsIHRydWUpO1xuK1xuK1x0aWYgKHBoeWRldi1cdTAwM2VpbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX1JYSUQpXG4rXHRcdHR4X2ludGVybmFsX2RlbGF5ID0gcGh5X2dldF9pbnRlcm5hbF9kZWxheShwaHlkZXYsIGRhcDgyMTFyX2ludGVybmFsX2RlbGF5LFxuK1x0XHRcdFx0XHRcdFx0ICAgREFQODIxMVJfREVMQVlfU0laRSwgZmFsc2UpO1xuK1xuK1x0c3dpdGNoIChwaHlkZXYtXHUwMDNlaW50ZXJmYWNlKSB7XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbitcdFx0aWYgKHJ4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuK1x0XHRcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfSU5JVElBTF9SWF9ERUxfVkFMO1xuK1xuK1x0XHRpZiAodHhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0dHhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9JTklUSUFMX1RYX0RFTF9WQUw7XG4rXHRcdGJyZWFrO1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcbitcdFx0aWYgKHJ4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuK1x0XHRcdHJ4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuK1x0XHRicmVhaztcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJX0lEOlxuK1x0XHRpZiAocnhfaW50ZXJuYWxfZGVsYXkgXHUwMDNjIDApXG4rXHRcdFx0cnhfaW50ZXJuYWxfZGVsYXkgPSBEQVA4MjExUl9ERUZBVUxUX0RFTF9TRUw7XG4rXHRcdGZhbGx0aHJvdWdoO1xuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcbitcdFx0aWYgKHR4X2ludGVybmFsX2RlbGF5IFx1MDAzYyAwKVxuK1x0XHRcdHR4X2ludGVybmFsX2RlbGF5ID0gREFQODIxMVJfREVGQVVMVF9ERUxfU0VMO1xuK1x0XHRicmVhaztcbitcdGRlZmF1bHQ6XG4rXHRcdHBoeWRldl9lcnIocGh5ZGV2LCBcIlVuc3VwcG9ydGVkIGludGVyZmFjZTogJWRcXG5cIixcbitcdFx0XHQgICBwaHlkZXYtXHUwMDNlaW50ZXJmYWNlKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHRzZXQgfD0gRklFTERfUFJFUChEQVA4MjExUl9SR01JSV9SWF9ERUxfTUFTSywgcnhfaW50ZXJuYWxfZGVsYXkpO1xuK1x0c2V0IHw9IEZJRUxEX1BSRVAoREFQODIxMVJfUkdNSUlfVFhfREVMX01BU0ssIHR4X2ludGVybmFsX2RlbGF5KTtcbitcbitcdHJldCA9IGRhcDgyMTFyX21vZGlmeV9leHQocGh5ZGV2LCBEQVA4MjExUl9QSFlfQ09OLCBEQVA4MjExUl9QSFlfU1dfUlNULCAwKTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHQvKiBXYWl0IGZvciByZXNldCBzZWxmLWNsZWFyIChmcm9tIGxvdyBhY3RpdmUgdG8gaGlnaCkgKi9cbitcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KGRhcDgyMTFyX3JlYWRfZXh0LCB2YWwsXG4rXHRcdFx0XHQodmFsIFx1MDAyNiBEQVA4MjExUl9QSFlfU1dfUlNUKSxcbitcdFx0XHRcdDIwLCAyMDAsIGZhbHNlLCBwaHlkZXYsIERBUDgyMTFSX1BIWV9DT04pO1xuK1x0aWYgKHJldClcbitcdFx0cmV0dXJuIHJldDtcbitcdGlmICh2YWwgXHUwMDNjIDApXG4rXHRcdHJldHVybiB2YWw7XG4rXG4rXHRyZXQgPSBkYXA4MjExcl9tb2RpZnlfZXh0KHBoeWRldiwgREFQODIxMVJfUkdNSUlfQ09OLCBEQVA4MjExUl9SR01JSV9DT05GSUdfTUFTSywgc2V0KTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4rc3RhdGljIHN0cnVjdCBwaHlfZHJpdmVyIGRhcDgyMTFyX2RyaXZlcltdID0ge1xuK1x0e1xuK1x0XHRQSFlfSURfTUFUQ0hfRVhBQ1QoREFQODIxMVJfUEhZX0lEKSxcbitcdFx0Lm5hbWVcdFx0PSBcIkRBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXRcIixcbitcdFx0LnNvZnRfcmVzZXRcdD0gZ2VucGh5X3NvZnRfcmVzZXQsXG4rXHRcdC5jb25maWdfaW5pdFx0PSBkYXA4MjExcl9jb25maWdfaW5pdCxcbitcdFx0LnJlYWRfc3RhdHVzXHQ9IGdlbnBoeV9yZWFkX3N0YXR1cyxcbitcdFx0LnNldF9sb29wYmFja1x0PSBnZW5waHlfbG9vcGJhY2ssXG4rXHRcdC5jb25maWdfYW5lZ1x0PSBnZW5waHlfY29uZmlnX2FuZWcsXG4rXHRcdC5zdXNwZW5kXHQ9IGdlbnBoeV9zdXNwZW5kLFxuK1x0XHQucmVzdW1lXHRcdD0gZ2VucGh5X3Jlc3VtZSxcbitcdH0sXG4rfTtcbittb2R1bGVfcGh5X2RyaXZlcihkYXA4MjExcl9kcml2ZXIpO1xuK1xuK01PRFVMRV9ERVNDUklQVElPTihcIkRBUDgyMTFSIEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGRyaXZlclwiKTtcbitNT0RVTEVfQVVUSE9SKFwiQXJ0ZW0gU2hpbWtvIFx1MDAzY2Euc2hpbWtvLmRldkBnbWFpbC5jb21cdTAwM2VcIik7XG4rTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG4rXG4rc3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvX2RldmljZV9pZCBfX21heWJlX3VudXNlZCBkYXA4MjExcl90YltdID0ge1xuK1x0eyBEQVA4MjExUl9QSFlfSUQsIERBUDgyMTFSX1BIWV9JRF9NQVNLIH0sXG4rXHR7IC8qIHNlbnRpbmVsICovIH1cbit9O1xuK01PRFVMRV9ERVZJQ0VfVEFCTEUobWRpbywgZGFwODIxMXJfdGIpO1xuK1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzM6MjMuODM5NjY4NjI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTU3Nzk3NjYyMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6YWJpbGl0eSBvZiB0aGUgREFQODIxMVIgUEhZIERyaXZlcioqXG5cbk9rYXksIHNvIHdlIGhhdmUgYSBuZXcgUEhZIGRyaXZlciBoZXJlIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpIEdpZ2FiaXQgRXRoZXJuZXQgUEhZLiBUaGUgcGF0Y2ggaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgTWFrZWZpbGUsIGFuZCB0aGUgZHJpdmVyIGl0c2VsZiAoYGRhcDgyMTFyLmNgKS4gVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBzdGFuZGFyZCBQSFkgaW5pdGlhbGl6YXRpb24sIHJlYWQvbW9kaWZ5IGZ1bmN0aW9ucyBhbmQgdXRpbGl6ZXMgc29tZSBnZW5lcmljIFBIWSBmdW5jdGlvbnMuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGFjdHVhbGx5IHJlYWNoIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gUEhZIGRyaXZlcnMsIGFzIHdlIGtub3csIGFyZSBwcm9iZWQgdmlhIHRoZSBNRElPIGJ1cy4gUUVNVSAqbWlnaHQqIGhhdmUgTURJTyBidXNlcyBvbiBzb21lIG5ldHdvcmsgZGV2aWNlcywgYWxsb3dpbmcgUEhZIHByb2JpbmcgYmFzZWQgb24gZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMgb3IgZHJpdmVyIGluc3RhbnRpYXRpb24uIEhvd2V2ZXIsIHNwZWNpZmljIFBIWSBkcml2ZXJzIHVzdWFsbHkgcHJvYmUgb25seSBpZiB0aGUgaGFyZHdhcmUgcmVwb3J0cyB0aGVpciBzcGVjaWZpYyBJRCAoaW4gdGhpcyBjYXNlIGAweDAwMDgwMTFCYCkgb3IgaWYgdGhlIGRldmljZSB0cmVlIGV4cGxpY2l0bHkgbGlzdHMgYSBjb21wYXRpYmxlIHN0cmluZy5cblxuQ2FuIHN5emthbGxlciBmdXp6IHRoaXM/IFRoYXQncyB0aGUga2V5IHF1ZXN0aW9uLiBDYW4gaXQgaW5zdGFudGlhdGUgdGhlIGRyaXZlcj8gU3l6a2FsbGVyIGhhcyBzb21lIG5ldHdvcmsgY2FwYWJpbGl0aWVzIHdpdGggYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAgYW5kIHN1Y2gsIGJ1dCBmb3IgUEhZcyBpdCBoaW5nZXMgb24gdGhlIE1ESU8gYnVzLiBDYW4gdXNlcnNwYWNlIHNvbWVob3cgKmRpcmVjdGx5KiBpbnN0YW50aWF0ZSBhIFBIWSBkcml2ZXIgdGhyb3VnaCBzeXNmcyBvciBuZXRsaW5rPyBObywgbm9ybWFsbHkgUEhZcyBhcmUgcHJvYmVkIHZpYSBNRElPIHNjYW5uaW5nLlxuXG5TbywgZm9yIHN5emthbGxlciB0byByZWFjaCB0aGlzLCB3ZSdkIG5lZWQgYW4gZW11bGF0ZWQgTURJTyBidXMsIG9yIHBlcmhhcHMgYSB2aXJ0dWFsIGRyaXZlci4gRG9lcyBzeXprYWxsZXIgaGF2ZSB0aGlzPyBJIGtub3cgaXQgY2FuIGluamVjdCBNRElPIGZyYW1lcyBpbiB0aGUgcmlnaHQgY2lyY3Vtc3RhbmNlcy4gSXQgZG9lc24ndCBzZWVtIHRvLCBidXQgbWF5YmUgdGhyb3VnaCB0aGUgcmlnaHQgbWVjaGFuaXNtcy4gSSdtIHRoaW5raW5nIG9mIHNvbWV0aGluZyBsaWtlIGBtYWNzZWNgIG9yIGBkdW1teWAgYnV0IHRob3NlIGRvbid0IGhhdmUgTURJTy5cblxuTGV0J3MgdGhpbmsgYWJvdXQgdGhlIGRyaXZlciBpdHNlbGYuIGBkYXA4MjExcl9jb25maWdfaW5pdGAgaXMgY2FsbGVkIHdoZW4gdGhlIFBIWSBpcyBpbml0aWFsaXplZC4gSXQncyB0aGUgZW50cnkgcG9pbnQuIElzIHRoaXMgd29ydGggZnV6emluZz8gUEhZIGRyaXZlcnMgYXJlIG9mdGVuIHZlcnkgaGFyZHdhcmUtc3BlY2lmaWMsIHdoaWNoIG1ha2VzIHJlYWNoaW5nIHRoZW0gZGlmZmljdWx0IHdpdGhvdXQgZW11bGF0aW5nIHRoZSBleGFjdCBoYXJkd2FyZS5cblxuTGV0J3MgdGhpbmsgYWJvdXQgdGhlIGluc3RydWN0aW9ucyBmb3IgZGV0ZXJtaW5pbmcgaWYgYSBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBUaGUgaW5zdHJ1Y3Rpb25zIG1lbnRpb24gdGhhdCBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIGlzIG5vdCB3b3J0aCBmdXp6aW5nIGlmIHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGlzIHNlZW1zIHNpbWlsYXI6IGl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZIGRyaXZlci4gSXQgcmVxdWlyZXMgYW4gTURJTyBidXMgYW5kIHRoZSBzcGVjaWZpYyBQSFkgaGFyZHdhcmUsIG9yIGF0IGxlYXN0IGEgbWF0Y2hpbmcgZGV2aWNlIHRyZWUgbm9kZS4gQ2FuIHdlIHJlYWNoIGl0IGluIHN0YW5kYXJkIFFFTVU/IFByb2JhYmx5IG5vdC4gUUVNVSBlbXVsYXRlcyBnZW5lcmljIFBIWXMsIGJ1dCBub3QgdGhpcyBzcGVjaWZpYyBvbmUsIERBUDgyMTFSLiBBbHNvLCB0aGUgZHJpdmVyIGlzIHZlcnkgc2ltcGxlOyBtb3N0bHkgcmVnaXN0ZXIgcmVhZHMgYW5kIHdyaXRlcy5cblxuSSdtIHRoaW5raW5nLCBpcyB0aGVyZSAqYW55KiB3YXkgdG8gdHJpZ2dlciB0aGlzPyBBbmQsIGlmIHdlIGNhbid0IGVhc2lseSByZWFjaCBpdCwgd2Ugc2hvdWxkIG1hcmsgaXQgYXMgbm90IHdvcnRoIGZ1enppbmcuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgaWYgc3l6a2FsbGVyIGhhcyBzb21lIGFkdmFuY2VkIE1ESU8gaW5qZWN0aW9uIHRyaWNrcy4gSSdsbCBzZWFyY2ggc3l6a2FsbGVyIGZvciBgbWRpb2AuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gUEhZIGRyaXZlcnMgYXJlIGdlbmVyYWxseSBpbiB0aGF0IGNhdGVnb3J5LCB1bmxlc3MgdGhlcmUncyBhIHNwZWNpZmljIGVtdWxhdGlvbiBvciBhIHVzZXJzcGFjZS1jb250cm9sbGFibGUgc29mdHdhcmUgTURJTyBidXMuIElzIHRoZXJlIGEgc29mdHdhcmUgTURJTyBidXM/IEknbGwgY2hlY2sgdGhlIGBkcml2ZXJzL25ldC9waHkvYCBkaXJlY3RvcnkgZm9yIHNvbWV0aGluZyBsaWtlIGBtZGlvLW1vY2t1cGAgb3IgYG1kaW8tZ3Bpb2AgdGhhdCBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgZnJvbSB1c2Vyc3BhY2UuIEV2ZW4gaWYgb25lIGV4aXN0cywgdGhlIGRyaXZlciBpdHNlbGYgaXMgZXh0cmVtZWx5IHNpbXBsZS5cblxuT2theSwgSSdtIGdvaW5nIHRvIG1hcmsgdGhpcyBhcyBXb3J0aEZ1enppbmc9ZmFsc2UuIEl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgUEhZIGRyaXZlciB0aGF0IHJlcXVpcmVzIGVpdGhlciBwaHlzaWNhbCBoYXJkd2FyZSAob3Igc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbikgb3IgYSB2ZXJ5IHNwZWNpZmljIFFFTVUgZW11bGF0aW9uLiBTdGFuZGFyZCBRRU1VLCBJJ20gcHJldHR5IHN1cmUsIHdvbid0IGN1dCBpdC4gSSBuZWVkIHRvIGdvIG92ZXIgdGhlIHZpcnR1YWwgTURJTyBkcml2ZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTYzLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjMzOjM5LjYxOTQzNzQ3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzIxMjE2Njc4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZGlvLiptb2NrdXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjMzOjQyLjM0MDY2NTMwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDM0Njg0OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgVXNlcnNwYWNlIE1ESU8gRHJpdmVyIEludGVyYWN0aW9uKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgbWVjaGFuaXNtIGluIHRoZSBjdXJyZW50IGtlcm5lbCB0aGF0IGFsbG93cyBmb3IgdXNlci1zcGFjZSBpbnN0YW50aWF0aW9uIG9mIGFuIGBtZGlvYCBkcml2ZXIuIE15IGltbWVkaWF0ZSBmb2N1cyB3aWxsIGJlIG9uIHRoZSB0eXBpY2FsIGRyaXZlciBsb2NhdGlvbnMsIHNvIEknbGwgYmUgc2VhcmNoaW5nIHRocm91Z2ggYGRyaXZlcnMvbmV0L3BoeS9gIGFuZCBgZHJpdmVycy9uZXQvbWRpby9gLiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBzdWdnZXN0cyBhIG1lYW5zIGZvciB1c2VyLXNwYWNlIHByb2dyYW1zIHRvIGludGVyZmFjZSB3aXRoIG9yIGV2ZW4gZGlyZWN0bHkgbWFuYWdlIGFuIE1ESU8gUEhZLiBFc3NlbnRpYWxseSwgaXMgdGhlcmUgYSB1c2VyLXNwYWNlIEFQSSBidWlsdCBvbiB0b3Agb2YgdGhlIE1ESU8gYnVzIGNvZGU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBrZXJuZWwgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHVzZXJsYW5kIHRvIHJlZ2lzdGVyIGFuZCBjb250cm9sIGl0cyBvd24gTURJTyBkcml2ZXJzIGFuZCBtYW5hZ2UgTURJTyBkZXZpY2VzIGRpcmVjdGx5LCByYXRoZXIgdGhhbiBzb2xlbHkgdGhyb3VnaCB0aGUgc3RhbmRhcmQgbmV0d29yayBpbnRlcmZhY2Ugc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNTEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMTozMzo0Ni40NDQxMzY3MzFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTI5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbmV0L21kaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiYWNwaV9tZGlvLmNcIixcbiAgICBcImZ3bm9kZV9tZGlvLmNcIixcbiAgICBcIm1kaW8tYWlyb2hhLmNcIixcbiAgICBcIm1kaW8tYXNwZWVkLmNcIixcbiAgICBcIm1kaW8tYmNtLWlwcm9jLmNcIixcbiAgICBcIm1kaW8tYmNtLXVuaW1hYy5jXCIsXG4gICAgXCJtZGlvLWJpdGJhbmcuY1wiLFxuICAgIFwibWRpby1jYXZpdW0uY1wiLFxuICAgIFwibWRpby1jYXZpdW0uaFwiLFxuICAgIFwibWRpby1ncGlvLmNcIixcbiAgICBcIm1kaW8taGlzaS1mZW1hYy5jXCIsXG4gICAgXCJtZGlvLWkyYy5jXCIsXG4gICAgXCJtZGlvLWlwcTQwMTkuY1wiLFxuICAgIFwibWRpby1pcHE4MDY0LmNcIixcbiAgICBcIm1kaW8tbW94YXJ0LmNcIixcbiAgICBcIm1kaW8tbXNjYy1taWltLmNcIixcbiAgICBcIm1kaW8tbXV4LWJjbS1pcHJvYy5jXCIsXG4gICAgXCJtZGlvLW11eC1iY202MzY4LmNcIixcbiAgICBcIm1kaW8tbXV4LWdwaW8uY1wiLFxuICAgIFwibWRpby1tdXgtbWVzb24tZzEyYS5jXCIsXG4gICAgXCJtZGlvLW11eC1tZXNvbi1neGwuY1wiLFxuICAgIFwibWRpby1tdXgtbW1pb3JlZy5jXCIsXG4gICAgXCJtZGlvLW11eC1tdWx0aXBsZXhlci5jXCIsXG4gICAgXCJtZGlvLW11eC5jXCIsXG4gICAgXCJtZGlvLW12dXNiLmNcIixcbiAgICBcIm1kaW8tb2N0ZW9uLmNcIixcbiAgICBcIm1kaW8tcGljNjRocHNjLmNcIixcbiAgICBcIm1kaW8tcmVhbHRlay1ydGw5MzAwLmNcIixcbiAgICBcIm1kaW8tcmVnbWFwLmNcIixcbiAgICBcIm1kaW8tc3VuNGkuY1wiLFxuICAgIFwibWRpby10aHVuZGVyLmNcIixcbiAgICBcIm1kaW8teGdlbmUuY1wiLFxuICAgIFwib2ZfbWRpby5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDExOjMzOjQ2LjQ0NDI4MDYyMVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMDUyNjEzNzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqUG90ZW50aWFsIGZvciBTeXprYWxsZXIgSW50ZWdyYXRpb246IFVTQi1iYXNlZCBNRElPIEFkYXB0ZXIqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IE1ESU8gZHJpdmVycyBoZXJlLiBTcGVjaWZpY2FsbHksIEknbSBzZWVpbmcgcmVmZXJlbmNlcyB0byBgbWRpby1ncGlvLmNgLCBgbWRpby1pMmMuY2AsIGFuZCB0aGVuIHRoaXMgaW50ZXJlc3Rpbmcgb25lOiBgbWRpby1tdnVzYi5jYC4gIEEgVVNCIHRvIE1ESU8gYWRhcHRlci4uLiB0aGF0J3MgdGhlIE1hcnZlbGwgVVNCIE1ESU8gQWRhcHRlciwgaWYgSSByZWNhbGwgY29ycmVjdGx5LiBOb3cgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBTeXprYWxsZXIuIElmIHdlIGNvdWxkIGVtdWxhdGUgdGhpcyBVU0IgZ2FkZ2V0LCB0aGF0IG9wZW5zIHVwIGEgd2hvbGUgbmV3IGF0dGFjayBzdXJmYWNlIGZvciBmdXp6aW5nLiBUaGlzIGNvdWxkIGJlIGEgc2lnbmlmaWNhbnQgZGlzY292ZXJ5LiBUaGUgaW1wbGljYXRpb25zIGFyZSBwb3RlbnRpYWxseSBodWdlIGZvciB0ZXN0aW5nIHRoaXMga2luZCBvZiBoYXJkd2FyZS4gU28sIHdoZXJlIHRvIHN0YXJ0PyBMZXQncyBkaXZlIGludG8gYG1kaW8tbXZ1c2IuY2AgYW5kIHNlZSB3aGF0IG1ha2VzIGl0IHRpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MTUsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzQ6NDkuNDk2ODk2NTA1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MjI0Nzk0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTWFydmVsbCBVU0IgTURJT1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYz0xMTE9TU9EVUxFX0FVVEhPUihcXFwiVG9iaWFzIFdhbGRla3JhbnogXFx1MDAzY3RvYmlhc0B3YWxkZWtyYW56LmNvbVxcdTAwM2VcXFwiKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYzoxMTI6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJNYXJ2ZWxsIFVTQiBNRElPIEFkYXB0ZXJcXFwiKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tbXZ1c2IuYy0xMTMtTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMTozNDo1My4xMTkzNzk5ODNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTY5OTUyNzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkVtdWxhdGluZyB0aGUgTWFydmVsbCBVU0IgTURJTyBBZGFwdGVyIGluIFN5emthbGxlcjogQSBGZWFzaWJpbGl0eSBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgc3l6a2FsbGVyIGNvdWxkIHBvc3NpYmx5IGVtdWxhdGUgdGhpcyBNYXJ2ZWxsIFVTQiBNRElPIGFkYXB0ZXIuIElmIHdlIGNvdWxkIGdldCBpdCB0byByZWdpc3RlciBhbiBNRElPIGJ1cywgdGhhdCB3b3VsZCBiZSBhIGh1Z2Ugc3RlcC4gQnV0IHRoZW4gdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGhvdyBkb2VzIGl0IGluc3RhbnRpYXRlIHRoZSBzcGVjaWZpYyBQSFk/IE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgUEhZIGlzIHR5cGljYWxseSBkaXNjb3ZlcmVkIHRocm91Z2ggcHJvYmluZyB0aGUgTURJTyBidXMuIElmIHRoZSBlbXVsYXRlZCBVU0IgZGV2aWNlICpjb3VsZCogc29tZWhvdyByZXNwb25kIHRvIE1ESU8gcmVhZHMgb24gdGhvc2UgY3J1Y2lhbCBQSFkgSUQgcmVnaXN0ZXJzIChyZWdpc3RlcnMgMiBhbmQgMywgdG8gYmUgcHJlY2lzZSksIGFuZCByZXR1cm5lZCBgMHgwMDA4MDExQmAsIHRoZSBrZXJuZWwgd291bGQgaGFwcGlseSBsb2FkIGFuZCBiaW5kIHRoZSBgZGFwODIxMXJgIGRyaXZlci4gQmluZ28hXG5cbkJ1dCB0aGF0IGJyaW5ncyB1cCB0aGUgYmlnIHF1ZXN0aW9uOiBkb2VzIHN5emthbGxlcidzIFVTQiBmdXp6ZXIgZXZlbiBrbm93IGhvdyB0byByZXNwb25kIHRvIE1ESU8gcmVhZCByZXF1ZXN0cyB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgTWFydmVsbCBVU0IgcHJvdG9jb2w/IFRoYXQncyB0aGUgY3J1eCBvZiBpdCwgcmlnaHQ/IEknbSBhc3N1bWluZyB0aGUgTWFydmVsbCBVU0IgTURJTyBhZGFwdGVyIHByb3RvY29sIGlzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkLiBTeXprYWxsZXIncyBVU0IgZnV6emVyIGdlbmVyYXRlcyByZXNwb25zZXMgcmFuZG9tbHksIGluIGdlbmVyYWwuIFNvIHRoZXJlJ3MgYWx3YXlzIGEgdGhlb3JldGljYWwgcG9zc2liaWxpdHkgb2YgaXQgYWNjaWRlbnRhbGx5IHJldHVybmluZyB0aGUgKmNvcnJlY3QqIFBIWSBJRCwgYnV0IHRoZSBwcm9iYWJpbGl0eSBvZiBpdCByYW5kb21seSBoaXR0aW5nICpleGFjdGx5KiBgMHgwMDA4MDExQmAgaW4gdGhlICpyaWdodCogcmVnaXN0ZXJzIGlzIHZhbmlzaGluZ2x5IHNtYWxsLiBXZSdkIGVzc2VudGlhbGx5IGJlIHRhbGtpbmcgYWJvdXQgd2lubmluZyB0aGUgbG90dGVyeS4gVW5sZXNzLCBvZiBjb3Vyc2UsIHRoZXJlIGFyZSBleGlzdGluZyBzeXpsYW5nIGRlc2NyaXB0aW9ucyBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgcHJvdG9jb2wsIHdoaWNoIHdvdWxkIG1ha2UgdGhlIGNoYW5jZSBvZiBnZW5lcmF0aW5nIHRoYXQgbWFnaWMgbnVtYmVyIG11Y2ggaGlnaGVyLlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc3l6a2FsbGVyIGRlc2NyaXB0aW9ucywgb3IgYW55IGluZm9ybWF0aW9uIGF0IGFsbCwgdGhhdCBkZWFsIHdpdGggYG1kaW9gIG9yIGBtdnVzYmAuIFRoYXQncyB0aGUgbmV4dCBzdGVwIGluIG15IGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyMDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzQ6NTkuMDg5MzM1NjIxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ0MzY2NjEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTE6MzQ6NTkuMTkzNzc5MDQxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExODgyMDQ3ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRGVjaXNpb24gZm9yIHRoZSBEQVA4MjExUiBQSFkgRHJpdmVyKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgZ3JlcHBlcmAgaXMgb2ZmLWxpbWl0cyBmb3IgYHN5cy9gIGZpbGVzLCBzcGVjaWZpY2FsbHkgdGhlIHN5emthbGxlciBsYW5ndWFnZSBkZXNjcmlwdGlvbnMuIEkgbmVlZCB0byB1c2UgYHJlYWQtc3l6LXNwZWNgIG9yIGBzeXotZ3JlcHBlcmAgZm9yIHRob3NlLCBidXQgbmVpdGhlciBvZiB0aG9zZSB0b29scyBpcyBpbiBteSBjdXJyZW50IGFyc2VuYWwuIFNvLCBjaGVja2luZyBzeXpsYW5nIGRlc2NyaXB0aW9ucyBpcyBvdXQuXG5cbkV2ZW4gaWYgSSAqY291bGQqIGdldCBhdCB0aGUgc3l6bGFuZywgdGhpcyBkcml2ZXIgaXRzZWxmIGxvb2tzIGluY3JlZGlibHkgc2ltcGxlLiBJIHNlZSB0aGUgY29kZSwgYW5kIGl0J3MganVzdCBhIHNlcXVlbmNlIG9mIE1ESU8gcmVhZHMgYW5kIHdyaXRlcy4gSXQncyBlc3NlbnRpYWxseSBpbml0aWFsaXppbmcgYSBwaWVjZSBvZiBoYXJkd2FyZS4gTm8gY29tcGxleCBsb2dpYywgbm8gTmV0bGluayBpbnRlcmZhY2VzLCBubyBzeXNmcyBhdHRyaWJ1dGVzLCBub3RoaW5nIHRoYXQgd291bGQgYmUgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIEZ1enppbmcgdGhpcyB0aGluZyB3b3VsZCBiYXNpY2FsbHkgYm9pbCBkb3duIHRvIHJhbmRvbWx5IHJldHVybmluZyB2YWx1ZXMgZnJvbSB0aGUgYGRhcDgyMTFyX3JlYWRfZXh0YCBmdW5jdGlvbi4gSXMgdGhhdCByZWFsbHkgd29ydGggdGhlIGVmZm9ydD9cblxuTm93LCBsZXQncyB0aGluayBhYm91dCB0aGUgXCJXb3J0aEZ1enppbmdcIiBjcml0ZXJpYS4gTXkgaW50ZXJuYWwgcnVsZSBzYXlzLCBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi5Db2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4udGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIi4gVGhpcyBEQVA4MjExUiBkcml2ZXIgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgRXRoZXJuZXQgUEhZLiBJdCAqcmVxdWlyZXMqIHRoZSBwaHlzaWNhbCBEQVA4MjExUiBoYXJkd2FyZS4gVGhlb3JldGljYWxseSwgSSBjb3VsZCAqbWF5YmUqIHJlYWNoIGl0IHdpdGggYSBVU0ItTURJTyBhZGFwdGVyIGFuZCByYW5kb20gVVNCIHJlc3BvbnNlcywgYnV0IHRoYXQncyBhIGxvbmcgc2hvdCBhbmQgbm90IHRoZSBpbnRlbmRlZCBzZXR1cC4gSXQncyBpbXByYWN0aWNhbCBhbmQgbm90IHdoYXQgdGhpcyBmdXp6ZXIgaXMgZGVzaWduZWQgZm9yLiBQbHVzLCBpdCdzIGEgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciwgd2hpY2ggaXMgYW5vdGhlciBtYXJrIGFnYWluc3QgaXQuXG5cbk9rYXksIGxldCdzIGNvbnNpZGVyIG90aGVyIGF2ZW51ZXMgdG8gcmVhY2ggaXQuIERldmljZSB0cmVlPyBTeXprYWxsZXIgZG9lc24ndCB0eXBpY2FsbHkgaW5qZWN0IGFyYml0cmFyeSBkZXZpY2UgdHJlZXMgYXQgcnVudGltZSAoYmFycmluZyBvdmVybGF5cywgYnV0IHRoYXQncyByZXN0cmljdGVkKS4gTm9wZS4gVGhhdCdzIG5vdCBhIHBhdGguXG5cblNvLCBoZXJlJ3MgbXkgY29uY2x1c2lvbjogVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEl0cyBsb2dpYyBpcyBleHRyZW1lbHkgdHJpdmlhbOKAlGp1c3QgYSByZWdpc3RlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGhlcmVmb3JlLCBpdCdzIG5vdCB3b3J0aCBmdXp6aW5nLiBJJ20gZ29pbmcgdG8gZG9jdW1lbnQgdGhlIHJlYXNvbmluZyBjb25jaXNlbHkgYXMgZm9sbG93czogXCJUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdmVuZG9yLXNwZWNpZmljIEV0aGVybmV0IFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkuIFBIWSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gYmUgcHJlc2VudCBvbiBhbiBNRElPIGJ1cyAob3Igc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMgYW5kIGhhcmR3YXJlIGVtdWxhdGlvbiBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCBRRU1VKSB0byBiZSBwcm9iZWQgYW5kIGV4ZWN1dGVkLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIChyZWdpc3RlciByZWFkcy93cml0ZXMpIGFuZCBkb2VzIG5vdCBleHBvc2UgYW55IGNvbXBsZXggc29mdHdhcmUgaW50ZXJmYWNlcywgbWFraW5nIGl0IHVuc3VpdGFibGUgYW5kIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCJcblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbGwgcXVpY2tseSBjaGVjayB0aGUgb3RoZXIgbW9kaWZpZWQgZmlsZXMgdG8gbWFrZSBzdXJlIG5vdGhpbmcgZWxzZSBzbmVha3kgaXMgZ29pbmcgb24uIEknbGwgbG9vayBhdCBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXB1LGRhcDgyMTFyLnlhbWxgLCBgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy55YW1sYCwgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCwgYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAsIGFuZCBgZHJpdmVycy9uZXQvcGh5L2RhcDgyMTFyLmNgLiBPa2F5LCBpdCdzIGFsbCBkaXJlY3RseSByZWxhdGVkIHRvIHRoaXMgb25lIFBIWSBkcml2ZXIuXG5cbkFscmlnaHQsIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODQ1LCJPdXRwdXRUb2tlbnMiOjEzMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMTozNToxMS4wNzU4MzE2N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHZlbmRvci1zcGVjaWZpYyBFdGhlcm5ldCBQSFkgZHJpdmVyIGZvciB0aGUgREFQVSBUZWxlY29tIERBUDgyMTFSKEkpLiBQSFkgZHJpdmVycyByZXF1aXJlIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgb24gYW4gTURJTyBidXMgKG9yIHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zIGFuZCBoYXJkd2FyZSBlbXVsYXRpb24gbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgUUVNVSkgdG8gYmUgcHJvYmVkIGFuZCBleGVjdXRlZC4gRnVydGhlcm1vcmUsIHRoZSBkcml2ZXIgb25seSBjb250YWlucyB0cml2aWFsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcyAocmVnaXN0ZXIgcmVhZHMvd3JpdGVzKSBhbmQgZG9lcyBub3QgZXhwb3NlIGFueSBjb21wbGV4IHNvZnR3YXJlIGludGVyZmFjZXMsIG1ha2luZyBpdCB1bnN1aXRhYmxlIGFuZCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdmVuZG9yLXNwZWNpZmljIEV0aGVybmV0IFBIWSBkcml2ZXIgZm9yIHRoZSBEQVBVIFRlbGVjb20gREFQODIxMVIoSSkuIFBIWSBkcml2ZXJzIHJlcXVpcmUgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgdG8gYmUgcHJlc2VudCBvbiBhbiBNRElPIGJ1cyAob3Igc3BlY2lmaWMgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbnMgYW5kIGhhcmR3YXJlIGVtdWxhdGlvbiBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCBRRU1VKSB0byBiZSBwcm9iZWQgYW5kIGV4ZWN1dGVkLiBGdXJ0aGVybW9yZSwgdGhlIGRyaXZlciBvbmx5IGNvbnRhaW5zIHRyaXZpYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzIChyZWdpc3RlciByZWFkcy93cml0ZXMpIGFuZCBkb2VzIG5vdCBleHBvc2UgYW55IGNvbXBsZXggc29mdHdhcmUgaW50ZXJmYWNlcywgbWFraW5nIGl0IHVuc3VpdGFibGUgYW5kIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowjhvx6[1] Phase: Running StartedAt: 2026-08-03 11:35:22 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhvx6[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 11:35:22 +0000 UTC FinishedAt: 2026-08-03 11:35:27 +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,}