Name: series-workflowrtwzz Phase: Failed StartedAt: 2026-09-06 19:27:32 +0000 UTC FinishedAt: 2026-09-06 20:13:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrtwzz[0] Phase: Succeeded StartedAt: 2026-09-06 19:27:32 +0000 UTC FinishedAt: 2026-09-06 20:13:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrtwzz[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 19:27:32 +0000 UTC FinishedAt: 2026-09-06 20:13:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2hlZCBmaWxlcyAoZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9oeWRyYS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuYywgZHJpdmVycy9zY3NpL2EyMDkxLmMsIGRyaXZlcnMvc2NzaS9ndnAxMS5jLCBkcml2ZXJzL3Njc2kvem9ycm83eHguYywgYW5kIGRyaXZlcnMvc2NzaS96b3Jyb19lc3AuYykgYXJlIGFsbCBkcml2ZXJzIGZvciBBbWlnYSBab3JybyBidXMgZGV2aWNlcyB0aGF0IGRlcGVuZCBvbiBDT05GSUdfWk9SUk8uIENPTkZJR19aT1JSTyBpcyBvbmx5IGRlZmluZWQgZm9yIHRoZSBtNjhrIGFyY2hpdGVjdHVyZSAodW5kZXIgYXJjaC9tNjhrL0tjb25maWcuYnVzKSBhbmQgaXMgbm90IGF2YWlsYWJsZSBvciBjb21waWxhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBvbmx5IGNvbnZlcnQgc3RhbmRhcmQgbW9kdWxlIGluaXQvZXhpdCBib2lsZXJwbGF0ZSB0byB1c2UgdGhlIG1vZHVsZV9kcml2ZXIoKSBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4NGM4YjU5YTAxNjMyZmJhNDc3YzAxY2FhYzQxOTJlMjIwY2IxMzUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAyMDoxMTo1NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmNcbmluZGV4IDlhNTk5MTU0MzZkMjkuLjJlZGY5N2U1MDBkZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuY1xuQEAgLTI1NywxOCAmIzQzOzI1Nyw3IEBAIHN0YXRpYyB2b2lkIGh5ZHJhX3JlbW92ZV9vbmUoc3RydWN0IHpvcnJvX2RldiAqeilcbiAgICAgZnJlZV9uZXRkZXYoZGV2KTtcbiB9XG4gXG4tc3RhdGljIGludCBfX2luaXQgaHlkcmFfaW5pdF9tb2R1bGUodm9pZClcbi17XG4tICAgIHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aHlkcmFfZHJpdmVyKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IGh5ZHJhX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4te1xuLSAgICB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZoeWRyYV9kcml2ZXIpO1xuLX1cbi1cbi1tb2R1bGVfaW5pdChoeWRyYV9pbml0X21vZHVsZSk7XG4tbW9kdWxlX2V4aXQoaHlkcmFfY2xlYW51cF9tb2R1bGUpO1xuJiM0Mzttb2R1bGVfZHJpdmVyKGh5ZHJhX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG4gXG4gTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1pvcnJvLUlJIEh5ZHJhIDgzOTAgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7KTtcbiBNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jXG5pbmRleCBjYjFkNWVkMjA4NzQzLi4wZjY2ZjI4ZTUwYjRmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuY1xuQEAgLTQzMCwxOCAmIzQzOzQzMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIHpvcnJvODM5MF9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHRcdD0gem9ycm84MzkwX3JlbW92ZV9vbmUsXG4gfTtcbiBcbi1zdGF0aWMgaW50IF9faW5pdCB6b3JybzgzOTBfaW5pdF9tb2R1bGUodm9pZClcbi17XG4tXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnpvcnJvODM5MF9kcml2ZXIpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm84MzkwX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4te1xuLVx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2em9ycm84MzkwX2RyaXZlcik7XG4tfVxuLVxuLW1vZHVsZV9pbml0KHpvcnJvODM5MF9pbml0X21vZHVsZSk7XG4tbW9kdWxlX2V4aXQoem9ycm84MzkwX2NsZWFudXBfbW9kdWxlKTtcbiYjNDM7bW9kdWxlX2RyaXZlcih6b3JybzgzOTBfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcbiBcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7Wm9ycm8gTlM4MzkwLWJhc2VkIGV0aGVybmV0IGRyaXZlclwmIzM0Oyk7XG4gTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jXG5pbmRleCA2NzJjNDk5NmIzMGU5Li45M2YyMjYxZjRiZmUwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jXG5AQCAtNzY4LDE4ICYjNDM7NzY4LDcgQEAgc3RhdGljIHZvaWQgYTIwNjVfcmVtb3ZlX29uZShzdHJ1Y3Qgem9ycm9fZGV2ICp6KVxuIFx0ZnJlZV9uZXRkZXYoZGV2KTtcbiB9XG4gXG4tc3RhdGljIGludCBfX2luaXQgYTIwNjVfaW5pdF9tb2R1bGUodm9pZClcbi17XG4tXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmEyMDY1X2RyaXZlcik7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIF9fZXhpdCBhMjA2NV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLXtcbi1cdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmEyMDY1X2RyaXZlcik7XG4tfVxuLVxuLW1vZHVsZV9pbml0KGEyMDY1X2luaXRfbW9kdWxlKTtcbi1tb2R1bGVfZXhpdChhMjA2NV9jbGVhbnVwX21vZHVsZSk7XG4mIzQzO21vZHVsZV9kcml2ZXIoYTIwNjVfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcbiBcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7Q29tbW9kb3JlIEEyMDY1IEV0aGVybmV0IGRyaXZlclwmIzM0Oyk7XG4gTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuY1xuaW5kZXggZWM2ZTdlOGMxNGZlYS4uNjYyZWJhOWU4ZmZkMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmNcbkBAIC03NzcsMTggJiM0Mzs3NzcsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciBhcmlhZG5lX2RyaXZlciA9IHtcbiBcdC5yZW1vdmVcdFx0PSBhcmlhZG5lX3JlbW92ZV9vbmUsXG4gfTtcbiBcbi1zdGF0aWMgaW50IF9faW5pdCBhcmlhZG5lX2luaXRfbW9kdWxlKHZvaWQpXG4te1xuLVx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZhcmlhZG5lX2RyaXZlcik7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIF9fZXhpdCBhcmlhZG5lX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4te1xuLVx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YXJpYWRuZV9kcml2ZXIpO1xuLX1cbi1cbi1tb2R1bGVfaW5pdChhcmlhZG5lX2luaXRfbW9kdWxlKTtcbi1tb2R1bGVfZXhpdChhcmlhZG5lX2NsZWFudXBfbW9kdWxlKTtcbiYjNDM7bW9kdWxlX2RyaXZlcihhcmlhZG5lX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG4gXG4gTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0FyaWFkbmUgRXRoZXJuZXQgRHJpdmVyXCYjMzQ7KTtcbiBNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hMjA5MS5jIGIvZHJpdmVycy9zY3NpL2EyMDkxLmNcbmluZGV4IGY4MWU1M2I1M2UyMDMuLjQyMTMzMGE3YjZhN2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Njc2kvYTIwOTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zY3NpL2EyMDkxLmNcbkBAIC0yODgsMTcgJiM0MzsyODgsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciBhMjA5MV9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHRcdD0gYTIwOTFfcmVtb3ZlLFxuIH07XG4gXG4tc3RhdGljIGludCBfX2luaXQgYTIwOTFfaW5pdCh2b2lkKVxuLXtcbi1cdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YTIwOTFfZHJpdmVyKTtcbi19XG4tbW9kdWxlX2luaXQoYTIwOTFfaW5pdCk7XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IGEyMDkxX2V4aXQodm9pZClcbi17XG4tXHR6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZhMjA5MV9kcml2ZXIpO1xuLX1cbi1tb2R1bGVfZXhpdChhMjA5MV9leGl0KTtcbiYjNDM7bW9kdWxlX2RyaXZlcihhMjA5MV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xuIFxuIE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtDb21tb2RvcmUgQTIwOTEvQTU5MCBTQ1NJXCYjMzQ7KTtcbiBNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9ndnAxMS5jIGIvZHJpdmVycy9zY3NpL2d2cDExLmNcbmluZGV4IDc5YmQ2NGUxMmFkYzIuLmViYTg2OGFjMzU1ZDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Njc2kvZ3ZwMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zY3NpL2d2cDExLmNcbkBAIC00NjEsMTcgJiM0Mzs0NjEsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciBndnAxMV9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHRcdD0gZ3ZwMTFfcmVtb3ZlLFxuIH07XG4gXG4tc3RhdGljIGludCBfX2luaXQgZ3ZwMTFfaW5pdCh2b2lkKVxuLXtcbi1cdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2Z3ZwMTFfZHJpdmVyKTtcbi19XG4tbW9kdWxlX2luaXQoZ3ZwMTFfaW5pdCk7XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IGd2cDExX2V4aXQodm9pZClcbi17XG4tXHR6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZndnAxMV9kcml2ZXIpO1xuLX1cbi1tb2R1bGVfZXhpdChndnAxMV9leGl0KTtcbiYjNDM7bW9kdWxlX2RyaXZlcihndnAxMV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xuIFxuIE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtHVlAgU2VyaWVzIElJIFNDU0lcJiMzNDspO1xuIE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3pvcnJvN3h4LmMgYi9kcml2ZXJzL3Njc2kvem9ycm83eHguY1xuaW5kZXggMjFjNzY5ZGMxZWNiZC4uODBlMTU2YjA0Yjk5NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Njc2kvem9ycm83eHguY1xuQEAgLTE3MywxNSAmIzQzOzE3Myw0IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIHpvcnJvN3h4X2RyaXZlciA9IHtcbiBcdC5yZW1vdmVcdCAgPSB6b3Jybzd4eF9yZW1vdmVfb25lLFxuIH07XG4gXG4tc3RhdGljIGludCBfX2luaXQgem9ycm83eHhfc2NzaV9pbml0KHZvaWQpXG4te1xuLVx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ6b3Jybzd4eF9kcml2ZXIpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm83eHhfc2NzaV9leGl0KHZvaWQpXG4te1xuLVx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2em9ycm83eHhfZHJpdmVyKTtcbi19XG4tXG4tbW9kdWxlX2luaXQoem9ycm83eHhfc2NzaV9pbml0KTtcbi1tb2R1bGVfZXhpdCh6b3Jybzd4eF9zY3NpX2V4aXQpO1xuJiM0Mzttb2R1bGVfZHJpdmVyKHpvcnJvN3h4X2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jIGIvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXG5pbmRleCAxNzhkNDYxNDA2NzQ0Li4xMjFiY2JiY2U1MmQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Njc2kvem9ycm9fZXNwLmNcbkBAIC05NDYsMTUgJiM0Mzs5NDYsNCBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3Jyb19lc3BfZHJpdmVyID0ge1xuIFx0LnJlbW92ZVx0ICA9IHpvcnJvX2VzcF9yZW1vdmUsXG4gfTtcbiBcbi1zdGF0aWMgaW50IF9faW5pdCB6b3Jyb19lc3Bfc2NzaV9pbml0KHZvaWQpXG4te1xuLVx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ6b3Jyb19lc3BfZHJpdmVyKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IHpvcnJvX2VzcF9zY3NpX2V4aXQodm9pZClcbi17XG4tXHR6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZ6b3Jyb19lc3BfZHJpdmVyKTtcbi19XG4tXG4tbW9kdWxlX2luaXQoem9ycm9fZXNwX3Njc2lfaW5pdCk7XG4tbW9kdWxlX2V4aXQoem9ycm9fZXNwX3Njc2lfZXhpdCk7XG4mIzQzO21vZHVsZV9kcml2ZXIoem9ycm9fZXNwX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2hlZCBmaWxlcyAoZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9oeWRyYS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuYywgZHJpdmVycy9zY3NpL2EyMDkxLmMsIGRyaXZlcnMvc2NzaS9ndnAxMS5jLCBkcml2ZXJzL3Njc2kvem9ycm83eHguYywgYW5kIGRyaXZlcnMvc2NzaS96b3Jyb19lc3AuYykgYXJlIGFsbCBkcml2ZXJzIGZvciBBbWlnYSBab3JybyBidXMgZGV2aWNlcyB0aGF0IGRlcGVuZCBvbiBDT05GSUdfWk9SUk8uIENPTkZJR19aT1JSTyBpcyBvbmx5IGRlZmluZWQgZm9yIHRoZSBtNjhrIGFyY2hpdGVjdHVyZSAodW5kZXIgYXJjaC9tNjhrL0tjb25maWcuYnVzKSBhbmQgaXMgbm90IGF2YWlsYWJsZSBvciBjb21waWxhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBvbmx5IGNvbnZlcnQgc3RhbmRhcmQgbW9kdWxlIGluaXQvZXhpdCBib2lsZXJwbGF0ZSB0byB1c2UgdGhlIG1vZHVsZV9kcml2ZXIoKSBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4NGM4YjU5YTAxNjMyZmJhNDc3YzAxY2FhYzQxOTJlMjIwY2IxMzUyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAyMDoxMTo1NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuYwppbmRleCA5YTU5OTE1NDM2ZDI5Li4yZWRmOTdlNTAwZGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9oeWRyYS5jCkBAIC0yNTcsMTggJiM0MzsyNTcsNyBAQCBzdGF0aWMgdm9pZCBoeWRyYV9yZW1vdmVfb25lKHN0cnVjdCB6b3Jyb19kZXYgKnopCiAgICAgZnJlZV9uZXRkZXYoZGV2KTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgaHlkcmFfaW5pdF9tb2R1bGUodm9pZCkKLXsKLSAgICByZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKCZhbXA7aHlkcmFfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGh5ZHJhX2NsZWFudXBfbW9kdWxlKHZvaWQpCi17Ci0gICAgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoJmFtcDtoeWRyYV9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdChoeWRyYV9pbml0X21vZHVsZSk7Ci1tb2R1bGVfZXhpdChoeWRyYV9jbGVhbnVwX21vZHVsZSk7CiYjNDM7bW9kdWxlX2RyaXZlcihoeWRyYV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpOwogCiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtab3Jyby1JSSBIeWRyYSA4MzkwIGV0aGVybmV0IGRyaXZlciYjMzQ7KTsKIE1PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmMKaW5kZXggY2IxZDVlZDIwODc0My4uMGY2NmYyOGU1MGI0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jCkBAIC00MzAsMTggJiM0Mzs0MzAsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3JybzgzOTBfZHJpdmVyID0gewogCS5yZW1vdmUJCT0gem9ycm84MzkwX3JlbW92ZV9vbmUsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB6b3JybzgzOTBfaW5pdF9tb2R1bGUodm9pZCkKLXsKLQlyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKCZhbXA7em9ycm84MzkwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB6b3JybzgzOTBfY2xlYW51cF9tb2R1bGUodm9pZCkKLXsKLQl6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcigmYW1wO3pvcnJvODM5MF9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdCh6b3JybzgzOTBfaW5pdF9tb2R1bGUpOwotbW9kdWxlX2V4aXQoem9ycm84MzkwX2NsZWFudXBfbW9kdWxlKTsKJiM0Mzttb2R1bGVfZHJpdmVyKHpvcnJvODM5MF9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpOwogCiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtab3JybyBOUzgzOTAtYmFzZWQgZXRoZXJuZXQgZHJpdmVyJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jCmluZGV4IDY3MmM0OTk2YjMwZTkuLjkzZjIyNjFmNGJmZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jCkBAIC03NjgsMTggJiM0Mzs3NjgsNyBAQCBzdGF0aWMgdm9pZCBhMjA2NV9yZW1vdmVfb25lKHN0cnVjdCB6b3Jyb19kZXYgKnopCiAJZnJlZV9uZXRkZXYoZGV2KTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgYTIwNjVfaW5pdF9tb2R1bGUodm9pZCkKLXsKLQlyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKCZhbXA7YTIwNjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGEyMDY1X2NsZWFudXBfbW9kdWxlKHZvaWQpCi17Ci0Jem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoJmFtcDthMjA2NV9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdChhMjA2NV9pbml0X21vZHVsZSk7Ci1tb2R1bGVfZXhpdChhMjA2NV9jbGVhbnVwX21vZHVsZSk7CiYjNDM7bW9kdWxlX2RyaXZlcihhMjA2NV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpOwogCiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtDb21tb2RvcmUgQTIwNjUgRXRoZXJuZXQgZHJpdmVyJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuYwppbmRleCBlYzZlN2U4YzE0ZmVhLi42NjJlYmE5ZThmZmQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmMKQEAgLTc3NywxOCAmIzQzOzc3Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIGFyaWFkbmVfZHJpdmVyID0gewogCS5yZW1vdmUJCT0gYXJpYWRuZV9yZW1vdmVfb25lLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgYXJpYWRuZV9pbml0X21vZHVsZSh2b2lkKQotewotCXJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoJmFtcDthcmlhZG5lX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhcmlhZG5lX2NsZWFudXBfbW9kdWxlKHZvaWQpCi17Ci0Jem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoJmFtcDthcmlhZG5lX2RyaXZlcik7Ci19Ci0KLW1vZHVsZV9pbml0KGFyaWFkbmVfaW5pdF9tb2R1bGUpOwotbW9kdWxlX2V4aXQoYXJpYWRuZV9jbGVhbnVwX21vZHVsZSk7CiYjNDM7bW9kdWxlX2RyaXZlcihhcmlhZG5lX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7CiAKIE1PRFVMRV9ERVNDUklQVElPTigmIzM0O0FyaWFkbmUgRXRoZXJuZXQgRHJpdmVyJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYTIwOTEuYyBiL2RyaXZlcnMvc2NzaS9hMjA5MS5jCmluZGV4IGY4MWU1M2I1M2UyMDMuLjQyMTMzMGE3YjZhN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hMjA5MS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS9hMjA5MS5jCkBAIC0yODgsMTcgJiM0MzsyODgsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciBhMjA5MV9kcml2ZXIgPSB7CiAJLnJlbW92ZQkJPSBhMjA5MV9yZW1vdmUsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBhMjA5MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcigmYW1wO2EyMDkxX2RyaXZlcik7Ci19Ci1tb2R1bGVfaW5pdChhMjA5MV9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IGEyMDkxX2V4aXQodm9pZCkKLXsKLQl6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcigmYW1wO2EyMDkxX2RyaXZlcik7Ci19Ci1tb2R1bGVfZXhpdChhMjA5MV9leGl0KTsKJiM0Mzttb2R1bGVfZHJpdmVyKGEyMDkxX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7CiAKIE1PRFVMRV9ERVNDUklQVElPTigmIzM0O0NvbW1vZG9yZSBBMjA5MS9BNTkwIFNDU0kmIzM0Oyk7CiBNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9ndnAxMS5jIGIvZHJpdmVycy9zY3NpL2d2cDExLmMKaW5kZXggNzliZDY0ZTEyYWRjMi4uZWJhODY4YWMzNTVkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2d2cDExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zY3NpL2d2cDExLmMKQEAgLTQ2MSwxNyAmIzQzOzQ2MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIGd2cDExX2RyaXZlciA9IHsKIAkucmVtb3ZlCQk9IGd2cDExX3JlbW92ZSwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGd2cDExX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKCZhbXA7Z3ZwMTFfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KGd2cDExX2luaXQpOwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZ3ZwMTFfZXhpdCh2b2lkKQotewotCXpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKCZhbXA7Z3ZwMTFfZHJpdmVyKTsKLX0KLW1vZHVsZV9leGl0KGd2cDExX2V4aXQpOwomIzQzO21vZHVsZV9kcml2ZXIoZ3ZwMTFfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTsKIAogTU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7R1ZQIFNlcmllcyBJSSBTQ1NJJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvem9ycm83eHguYyBiL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jCmluZGV4IDIxYzc2OWRjMWVjYmQuLjgwZTE1NmIwNGI5OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jCkBAIC0xNzMsMTUgJiM0MzsxNzMsNCBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3Jybzd4eF9kcml2ZXIgPSB7CiAJLnJlbW92ZQkgID0gem9ycm83eHhfcmVtb3ZlX29uZSwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHpvcnJvN3h4X3Njc2lfaW5pdCh2b2lkKQotewotCXJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoJmFtcDt6b3Jybzd4eF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm83eHhfc2NzaV9leGl0KHZvaWQpCi17Ci0Jem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoJmFtcDt6b3Jybzd4eF9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdCh6b3Jybzd4eF9zY3NpX2luaXQpOwotbW9kdWxlX2V4aXQoem9ycm83eHhfc2NzaV9leGl0KTsKJiM0Mzttb2R1bGVfZHJpdmVyKHpvcnJvN3h4X2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvem9ycm9fZXNwLmMgYi9kcml2ZXJzL3Njc2kvem9ycm9fZXNwLmMKaW5kZXggMTc4ZDQ2MTQwNjc0NC4uMTIxYmNiYmNlNTJkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS96b3Jyb19lc3AuYwpAQCAtOTQ2LDE1ICYjNDM7OTQ2LDQgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgem9ycm9fZXNwX2RyaXZlciA9IHsKIAkucmVtb3ZlCSAgPSB6b3Jyb19lc3BfcmVtb3ZlLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgem9ycm9fZXNwX3Njc2lfaW5pdCh2b2lkKQotewotCXJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoJmFtcDt6b3Jyb19lc3BfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHpvcnJvX2VzcF9zY3NpX2V4aXQodm9pZCkKLXsKLQl6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcigmYW1wO3pvcnJvX2VzcF9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdCh6b3Jyb19lc3Bfc2NzaV9pbml0KTsKLW1vZHVsZV9leGl0KHpvcnJvX2VzcF9zY3NpX2V4aXQpOwomIzQzO21vZHVsZV9kcml2ZXIoem9ycm9fZXNwX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMzgKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiAyMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgQU1ENjQqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyBpbXBhY3Qgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGFtZDY0LiBGcm9tIGEgZ2xhbmNlLCBpdCYjMzk7cyBoaXR0aW5nIGEgbnVtYmVyIG9mIGRyaXZlcnMuIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG91Y2hpbmc6CgoqICAgTmV0d29yayBkcml2ZXJzIGZvciBvbGRlciA4MzkwLWJhc2VkIGV0aGVybmV0IGNhcmRzIChgaHlkcmEuY2AsIGB6b3JybzgzOTAuY2AsIGBhMjA2NS5jYCwgYGFyaWFkbmUuY2ApLiBUaGVzZSBhcmUgbGlrZWx5IGxlZ2FjeSBvciBuaWNoZSBoYXJkd2FyZS4KKiAgIFNDU0kgZHJpdmVyczogYGEyMDkxLmNgLCBgZ3ZwMTEuY2AsIGB6b3Jybzd4eC5jYCwgYW5kIGB6b3Jyb19lc3AuY2AuIFRoaXMgc3VnZ2VzdHMgaW50ZXJhY3Rpb24gd2l0aCBvbGRlciBTQ1NJIGNvbnRyb2xsZXJzLCBhbmQgcG90ZW50aWFsbHkgdGhlIFpvcnJvIGJ1cy4KCkdpdmVuIHRoZSBzY29wZSBhbmQgdGhlIHRhcmdldCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIGRyaXZlcnMsIGFuZCBhbHNvIGRlcGVuZGVuY2llcyBvbiB0aGUgWk9SUk8gYnVzLiBBIHRvb2wgbGlrZSBgZ3JlcHBlcmAgd2lsbCBiZSBwZXJmZWN0IGZvciBxdWlja2x5IHNlYXJjaGluZyB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgZmluZGluZyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIHRvIGFzc2VzcyBpZiB0aGUgY2hhbmdlIGludHJvZHVjZXMgYW55IGNvbXBhdGliaWxpdHkgaXNzdWVzLCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgb3IgaWYgaXQgaXMgY29uZGl0aW9uYWwgb24gc3BlY2lmaWMgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIChIWURSQXxaT1JSTzgzOTB8QTIwNjV8QVJJQURORXxBMjA5MV9TQ1NJfEdWUDExX1NDU0l8Wk9SUk83WFhfU0NTSXxTQ1NJX1pPUlJPX0VTUHxaT1JSTykmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc9Mzc9Y29uZmlnIFhTVVJGMTAwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnOjUwOmNvbmZpZyBIWURSQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTUxLVx0dHJpc3RhdGUgXCYjMzQ7SHlkcmEgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZz0xNDU9Y29uZmlnIFNUTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZzoxNTc6Y29uZmlnIFpPUlJPODM5MFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1OC1cdHRyaXN0YXRlIFwmIzM0O1pvcnJvIE5TODM5MC1iYXNlZCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc9MjE9aWYgTkVUX1ZFTkRPUl9BTURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6MjM6Y29uZmlnIEEyMDY1XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O0EyMDY1IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZz00Nj1jb25maWcgUENORVQzMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6NTg6Y29uZmlnIEFSSUFETkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTU5LVx0dHJpc3RhdGUgXCYjMzQ7QXJpYWRuZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWc9MTI5ND1jb25maWcgQTMwMDBfU0NTSVxuLS1cbmRyaXZlcnMvc2NzaS9LY29uZmlnLTEzMDMtXG5kcml2ZXJzL3Njc2kvS2NvbmZpZzoxMzA0OmNvbmZpZyBBMjA5MV9TQ1NJXG5kcml2ZXJzL3Njc2kvS2NvbmZpZy0xMzA1LVx0dHJpc3RhdGUgXCYjMzQ7QTIwOTEvQTU5MCBXRDMzQzkzQSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWctMTMxMy1cbmRyaXZlcnMvc2NzaS9LY29uZmlnOjEzMTQ6Y29uZmlnIEdWUDExX1NDU0lcbmRyaXZlcnMvc2NzaS9LY29uZmlnLTEzMTUtXHR0cmlzdGF0ZSBcJiMzNDtHVlAgU2VyaWVzIElJIFdEMzNDOTNBIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3Njc2kvS2NvbmZpZz0xMzM4PWNvbmZpZyBTQ1NJX1pPUlJPN1hYXG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWctMTM1My1cbmRyaXZlcnMvc2NzaS9LY29uZmlnOjEzNTQ6Y29uZmlnIFNDU0lfWk9SUk9fRVNQXG5kcml2ZXJzL3Njc2kvS2NvbmZpZy0xMzU1LVx0dHJpc3RhdGUgXCYjMzQ7Wm9ycm8gRVNQIFNDU0kgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvem9ycm8vS2NvbmZpZy00LSNcbmRyaXZlcnMvem9ycm8vS2NvbmZpZzo1OmNvbmZpZyBaT1JST19OQU1FU1xuZHJpdmVycy96b3Jyby9LY29uZmlnLTYtXHRib29sIFwmIzM0O1pvcnJvIGRldmljZSBuYW1lIGRhdGFiYXNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQwOAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIERlcHRocyoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IG1ha2luZyBhbnkgY2hhbmdlcyBvciBkZWJ1Z2dpbmcgYW55dGhpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgKmFjdHVhbGx5KiBkZWZpbmVkLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgdmVyaWZ5IHRoZSBLY29uZmlnIGRlZmluaXRpb25zIGZvciAqYWxsKiB0aGUgY29uZmlndXJhdGlvbnMsIGFuZCBlc3BlY2lhbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gaG93IGBDT05GSUdfWk9SUk9gIGlzIGRlZmluZWQuIEFueSB1cHN0cmVhbSBjaGFuZ2VzIHRoYXQgaW1wYWN0IGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gYmVoYXZlcyByZXF1aXJlIGEgZGVlcCBkaXZlIGludG8gdGhlIHVuZGVybHlpbmcgS2NvbmZpZyBmaWxlcy4gSSBrbm93IHRoZSBpbnRyaWNhY2llcyBvZiB0aGlzIHByb2plY3QgZGVtYW5kIGEgc29saWQsIGFsbW9zdCBlbmN5Y2xvcGVkaWMsIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGludGVyYWN0LCBhbmQgdGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCBpbiBlbnN1cmluZyBJIGhhdmUgYSBzb2xpZCBncmFzcC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIG9yIHBvdGVudGlhbCBjb25mbGljdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpPUlJPJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbTY4ay9LY29uZmlnLmJ1cz0xNT1jb25maWcgTlVCVVNcbi0tXG5hcmNoL202OGsvS2NvbmZpZy5idXMtMTktXG5hcmNoL202OGsvS2NvbmZpZy5idXM6MjA6Y29uZmlnIFpPUlJPXG5hcmNoL202OGsvS2NvbmZpZy5idXMtMjEtXHRib29sIFwmIzM0O0FtaWdhIFpvcnJvIChBdXRvQ29uZmlnKSBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZz0xNDU9Y29uZmlnIFNUTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZzoxNTc6Y29uZmlnIFpPUlJPODM5MFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1OC1cdHRyaXN0YXRlIFwmIzM0O1pvcnJvIE5TODM5MC1iYXNlZCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy96b3Jyby9LY29uZmlnLTQtI1xuZHJpdmVycy96b3Jyby9LY29uZmlnOjU6Y29uZmlnIFpPUlJPX05BTUVTXG5kcml2ZXJzL3pvcnJvL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7Wm9ycm8gZGV2aWNlIG5hbWUgZGF0YWJhc2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODg3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBaT1JSTyBDb25maWd1cmF0aW9uIGZvciBtNjhrIEFyY2hpdGVjdHVyZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfWk9SUk9gIGlzIGV4Y2x1c2l2ZWx5IGRlZmluZWQgd2l0aGluIHRoZSBgYXJjaC9tNjhrL0tjb25maWcuYnVzYCBmaWxlLiBUaGlzIHRlbGxzIG1lIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgWk9SUk8gYnVzIGlzIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGUgbTY4ayBhcmNoaXRlY3R1cmUuIE15IG5leHQgc3RlcCBpcyB0byBjYXJlZnVsbHkgZXhhbWluZSBgYXJjaC9tNjhrL0tjb25maWcuYnVzYCBpbiBkZXRhaWwuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgcG90ZW50aWFsbHkgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGF0IGZpbGUgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBPZiBjb3Vyc2UsIEkmIzM5O2xsIG5lZWQgdG8gZW5zdXJlIEkgY2hlY2sgYWxsIHJlbGF0ZWQgS2NvbmZpZyBmaWxlcyB0b28sIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgd2hvbGUgcGljdHVyZS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgbG9naWMsIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgb3ZlcmFsbCBpbnRlbnQgYmVoaW5kIHRoaXMgY29uZmlndXJhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoaXMgZGVmaW5pdGlvbiBhbmQgb3RoZXIgY29tcG9uZW50cyBpcyBrZXkgdG8gZ3Jhc3BpbmcgdGhlIGFyY2hpdGVjdHVyZSYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBaT1JSTyBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL202OGsvS2NvbmZpZy5idXMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0aWYgTU1VXG4gICAzOlx0XG4gICA0Olx0Y29tbWVudCBcJiMzNDtCdXMgU3VwcG9ydFwmIzM0O1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBESU9cbiAgIDc6XHRcdGJvb2wgXCYjMzQ7RElPIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIEhQMzAwXG4gICA5Olx0XHRkZWZhdWx0IHlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgU2F5IFkgaGVyZSB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFwmIzM0O0RJT1wmIzM0OyBleHBhbnNpb24gYnVzIHVzZWQgaW5cbiAgMTI6XHRcdCAgSFAzMDAgbWFjaGluZXMuIElmIHlvdSBhcmUgdXNpbmcgc3VjaCBhIHN5c3RlbSB5b3UgYWxtb3N0IGNlcnRhaW5seVxuICAxMzpcdFx0ICB3YW50IHRoaXMuXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIE5VQlVTXG4gIDE2Olx0XHRib29sXG4gIDE3Olx0XHRkZXBlbmRzIG9uIE1BQ1xuICAxODpcdFx0ZGVmYXVsdCB5XG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFpPUlJPXG4gIDIxOlx0XHRib29sIFwmIzM0O0FtaWdhIFpvcnJvIChBdXRvQ29uZmlnKSBidXMgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBBTUlHQVxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIFpvcnJvIGJ1cyBpbiB0aGUgQW1pZ2EuIElmIHlvdSBoYXZlXG4gIDI1Olx0XHQgIGV4cGFuc2lvbiBjYXJkcyBpbiB5b3VyIEFtaWdhIHRoYXQgY29uZm9ybSB0byB0aGUgQW1pZ2FcbiAgMjY6XHRcdCAgQXV0b0NvbmZpZyh0bSkgc3BlY2lmaWNhdGlvbiwgc2F5IFksIG90aGVyd2lzZSBOLiBOb3RlIHRoYXQgZXZlblxuICAyNzpcdFx0ICBleHBhbnNpb24gY2FyZHMgdGhhdCBkbyBub3QgZml0IGluIHRoZSBab3JybyBzbG90cyBidXQgZml0IGluIGUuZy5cbiAgMjg6XHRcdCAgdGhlIENQVSBzbG90IG1heSBmYWxsIGluIHRoaXMgY2F0ZWdvcnksIHNvIHlvdSBoYXZlIHRvIHNheSBZIHRvIGxldFxuICAyOTpcdFx0ICBMaW51eCB1c2UgdGhlc2UuXG4gIDMwOlx0XG4gIDMxOlx0Y29uZmlnIEFNSUdBX1BDTUNJQVxuICAzMjpcdFx0Ym9vbCBcJiMzNDtBbWlnYSAxMjAwLzYwMCBQQ01DSUEgc3VwcG9ydFwmIzM0O1xuICAzMzpcdFx0ZGVwZW5kcyBvbiBBTUlHQVxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBJbmNsdWRlIHN1cHBvcnQgaW4gdGhlIGtlcm5lbCBmb3IgcGNtY2lhIG9uIEFtaWdhIDEyMDAgYW5kIEFtaWdhXG4gIDM2Olx0XHQgIDYwMC4gSWYgeW91IGludGVuZCB0byB1c2UgcGNtY2lhIGNhcmRzIHNheSBZOyBvdGhlcndpc2Ugc2F5IE4uXG4gIDM3Olx0XG4gIDM4Olx0Y29uZmlnIElTQVxuICAzOTpcdFx0Ym9vbFxuICA0MDpcdFx0ZGVwZW5kcyBvbiBRNDAgfHwgQU1JR0FfUENNQ0lBXG4gIDQxOlx0XHRkZWZhdWx0IHlcbiAgNDI6XHRcdGhlbHBcbiAgNDM6XHRcdCAgRmluZCBvdXQgd2hldGhlciB5b3UgaGF2ZSBJU0Egc2xvdHMgb24geW91ciBtb3RoZXJib2FyZC4gIElTQSBpcyB0aGVcbiAgNDQ6XHRcdCAgbmFtZSBvZiBhIGJ1cyBzeXN0ZW0sIGkuZS4gdGhlIHdheSB0aGUgQ1BVIHRhbGtzIHRvIHRoZSBvdGhlciBzdHVmZlxuICA0NTpcdFx0ICBpbnNpZGUgeW91ciBib3guICBPdGhlciBidXMgc3lzdGVtcyBhcmUgUENJLCBFSVNBLCBNaWNyb0NoYW5uZWxcbiAgNDY6XHRcdCAgKE1DQSkgb3IgVkVTQS4gIElTQSBpcyBhbiBvbGRlciBzeXN0ZW0sIG5vdyBiZWluZyBkaXNwbGFjZWQgYnkgUENJO1xuICA0NzpcdFx0ICBuZXdlciBib2FyZHMgZG9uJiMzOTt0IHN1cHBvcnQgaXQuICBJZiB5b3UgaGF2ZSBJU0EsIHNheSBZLCBvdGhlcndpc2UgTi5cbiAgNDg6XHRcbiAgNDk6XHRjb25maWcgQVRBUklfUk9NX0lTQVxuICA1MDpcdFx0Ym9vbCBcJiMzNDtBdGFyaSBST00gcG9ydCBJU0EgYWRhcHRlciBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg5OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgYW5kIFN0b3JhZ2UgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIG5ldHdvcmsgYW5kIHN0b3JhZ2UgZHJpdmVycy4gSSYjMzk7bGwgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnYCwgYW5kIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AuIFRoZXNlIGBLY29uZmlnYCBmaWxlcyBhcmUga2V5LiBUaGV5JiMzOTtsbCB0ZWxsIG1lIHdoYXQgaGFyZHdhcmUgZWFjaCBkcml2ZXIgc3VwcG9ydHMsIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBmZWF0dXJlcywgYW55IGRlZmF1bHRzIHRoYXQgYXJlIHNldCwgYW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBjYW4gdHdlYWsuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGlzIGlzIGEga2VybmVsIGNvbmZpZ3VyYXRpb24gY29udGV4dCwgc28gdGhlc2UgZmlsZXMgd2lsbCBiZSBlc3NlbnRpYWwgZm9yIHVuZGVyc3RhbmRpbmcgd2hhdCYjMzk7cyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGhvdyBJIGNhbiBjdXN0b21pemUgdGhlIGtlcm5lbCBidWlsZCB0byBzdXBwb3J0IHBhcnRpY3VsYXIgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBTQ1NJIGRldmljZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBkcml2ZXJzIGFuZCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtOyBmb3IgaW5zdGFuY2UsIHVuZGVyc3RhbmRpbmcgaG93IHNwZWNpZmljIDgzOTAgb3IgQU1EIG5ldHdvcmsgZHJpdmVycyBjYW4gYmUgaW50ZWdyYXRlZCBvciByZXBsYWNlZCB3aXRoIG5ld2VyIHNvbHV0aW9ucyBpcyBpbXBvcnRhbnQuIFRoaXMgaW5pdGlhbCBzY2FuIGlzIGFib3V0IGdhaW5pbmcgYSBoaWdoLWxldmVsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4aXN0aW5nIGRyaXZlciBsYW5kc2NhcGUsIHRoZSBjaG9pY2VzIGF2YWlsYWJsZSwgYW5kIHRoZSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBwYXRod2F5cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQ1Olx0XHQgIHNheSBZLiBPdGhlcndpc2UsIHNheSBOLlxuICA0NjpcdFxuICA0NzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDQ4Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHhzdXJmMTAwLlxuICA0OTpcdFxuICA1MDpcdGNvbmZpZyBIWURSQVxuICA1MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SHlkcmEgc3VwcG9ydFwmIzM0O1xuICA1MjpcdFx0ZGVwZW5kcyBvbiBaT1JST1xuICA1MzpcdFx0c2VsZWN0IENSQzMyXG4gIDU0Olx0XHRoZWxwXG4gIDU1Olx0XHQgIElmIHlvdSBoYXZlIGEgSHlkcmEgRXRoZXJuZXQgYWRhcHRlciwgc2F5IFkuIE90aGVyd2lzZSwgc2F5IE4uXG4gIDU2Olx0XG4gIDU3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgNTg6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaHlkcmEuXG4gIDU5Olx0XG4gIDYwOlx0Y29uZmlnIEFSTV9FVEhFUkhcbiAgNjE6XHRcdHRyaXN0YXRlIFwmIzM0O0ktY3ViZWQgRXRoZXJIL0FOVCBFdGhlck0gc3VwcG9ydFwmIzM0O1xuICA2MjpcdFx0ZGVwZW5kcyBvbiBBUk0gXHUwMDI2XHUwMDI2IEFSQ0hfQUNPUk5cbiAgNjM6XHRcdHNlbGVjdCBDUkMzMlxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBJZiB5b3UgaGF2ZSBhbiBBY29ybiBzeXN0ZW0gd2l0aCBvbmUgb2YgdGhlc2UgbmV0d29yayBjYXJkcywgeW91XG4gIDY2Olx0XHQgIHNob3VsZCBzYXkgWSB0byB0aGlzIG9wdGlvbiBpZiB5b3Ugd2lzaCB0byB1c2UgaXQgd2l0aCBMaW51eC5cbiAgNjc6XHRcbiAgNjg6XHRjb25maWcgTUFDODM5MFxuICA2OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFjaW50b3NoIE5TIDgzOTAgYmFzZWQgZXRoZXJuZXQgY2FyZHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU4NgoJCQkJCQkJb3V0cHV0OiA3OQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgd2hvbGUgcGljdHVyZSBoZXJlLiBJIHNob3VsZCBwcm9iYWJseSBleHBhbmQgbXkgc2NvcGUgYW5kIGNoZWNrIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBmaWxlcyByZWxhdGVkIHRvIG5ldHdvcmtpbmcgYW5kIHN0b3JhZ2UuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnYCwgYW5kIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AuIFRoaXMgd2lsbCBoZWxwIG1lIGdldCBhIGJyb2FkZXIgcGVyc3BlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyhIWURSQXxaT1JSTzgzOTB8QTIwNjV8QVJJQURORXxBMjA5MV9TQ1NJfEdWUDExX1NDU0l8U0NTSV9aT1JSTzdYWHxTQ1NJX1pPUlJPX0VTUCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI0MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc9MzY4PWNvbW1lbnQgXCYjMzQ7TWFjIFNNQnVzIGhvc3QgY29udHJvbGxlciBkcml2ZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMzcwLVxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc6MzcxOmNvbmZpZyBJMkNfSFlEUkFcbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnLTM3Mi1cdHRyaXN0YXRlIFwmIzM0O0NIUlAgQXBwbGUgSHlkcmEgTWFjIEkvTyBJMkMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlPTMwPW9iai0kKENPTkZJR19JMkNfWkhBT1hJTilcdCYjNDM7PSBpMmMtdmlhaTJjLXpoYW94aW4ubyBpMmMtdmlhaTJjLWNvbW1vbi5vXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlLTMyLSMgTWFjIFNNQnVzIGhvc3QgY29udHJvbGxlciBkcml2ZXJzXG5kcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0kyQ19IWURSQSlcdFx0JiM0Mzs9IGkyYy1oeWRyYS5vXG5kcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGUtMzQtb2JqLSQoQ09ORklHX0kyQ19QT1dFUk1BQylcdCYjNDM7PSBpMmMtcG93ZXJtYWMub1xuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy0yMS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyMjojZGVmaW5lIEhZRFJBX0NQRF9QRDBcdDB4MDAwMDAwMDFcdC8qIENhY2hlUEQgbGluZXMgKi9cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyMzojZGVmaW5lIEhZRFJBX0NQRF9QRDFcdDB4MDAwMDAwMDJcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyNDojZGVmaW5lIEhZRFJBX0NQRF9QRDJcdDB4MDAwMDAwMDRcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyNTojZGVmaW5lIEhZRFJBX0NQRF9QRDNcdDB4MDAwMDAwMDhcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy0yNi1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyNzojZGVmaW5lIEhZRFJBX1NDTEtcdEhZRFJBX0NQRF9QRDBcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyODojZGVmaW5lIEhZRFJBX1NEQVRcdEhZRFJBX0NQRF9QRDFcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyOTojZGVmaW5lIEhZRFJBX1NDTEtfT0VcdDB4MDAwMDAwMTBcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzozMDojZGVmaW5lIEhZRFJBX1NEQVRfT0VcdDB4MDAwMDAwMjBcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy0zMS1cbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9NDQ9c3RhdGljIHZvaWQgaHlkcmFfYml0X3NldHNjbCh2b2lkICpkYXRhLCBpbnQgc3RhdGUpXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTQ3LVx0aWYgKHN0YXRlKVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjQ4Olx0XHR2YWwgXHUwMDI2PSB+SFlEUkFfU0NMS19PRTtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy00OS1cdGVsc2Uge1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjUwOlx0XHR2YWwgXHUwMDI2PSB+SFlEUkFfU0NMSztcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo1MTpcdFx0dmFsIHw9IEhZRFJBX1NDTEtfT0U7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtNTItXHR9XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jPTU2PXN0YXRpYyB2b2lkIGh5ZHJhX2JpdF9zZXRzZGEodm9pZCAqZGF0YSwgaW50IHN0YXRlKVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy01OS1cdGlmIChzdGF0ZSlcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo2MDpcdFx0dmFsIFx1MDAyNj0gfkhZRFJBX1NEQVRfT0U7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtNjEtXHRlbHNlIHtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo2MjpcdFx0dmFsIFx1MDAyNj0gfkhZRFJBX1NEQVQ7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6NjM6XHRcdHZhbCB8PSBIWURSQV9TREFUX09FO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTY0LVx0fVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYz02OD1zdGF0aWMgaW50IGh5ZHJhX2JpdF9nZXRzY2wodm9pZCAqZGF0YSlcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy02OS17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6NzA6XHRyZXR1cm4gKHBkcmVncihkYXRhKSBcdTAwMjYgSFlEUkFfU0NMSykgIT0gMDtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy03MS19XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jPTczPXN0YXRpYyBpbnQgaHlkcmFfYml0X2dldHNkYSh2b2lkICpkYXRhKVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTc0LXtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo3NTpcdHJldHVybiAocGRyZWdyKGRhdGEpIFx1MDAyNiBIWURSQV9TREFUKSAhPSAwO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTc2LX1cbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9OTU9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGh5ZHJhX2lkc1tdID0ge1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjk2Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVBQTEUsIFBDSV9ERVZJQ0VfSURfQVBQTEVfSFlEUkEpIH0sXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtOTctXHR7IDAsIH1cbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTQyLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzo0MzojZGVmaW5lIE1JTl9IWURSQVRJT05TIDI1NiAvKiBTaXplIG9mIGh5ZHJhdGlvbiBtZW1wb29sICovXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjQ0OiNkZWZpbmUgREVGQVVMVF9IWURSQVRJT05fVEhSRVNIT0xEIDEgLyogMSByZWdpb24gKi9cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6NDU6I2RlZmluZSBERUZBVUxUX0hZRFJBVElPTl9CQVRDSF9TSVpFIDEgLyogSHlkcmF0ZSBpbiBiYXRjaGVzIG9mIDEgcmVnaW9uICovXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTQ2LVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9Njk9c3RydWN0IGNsb25lIHtcbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE0My0jZGVmaW5lIERNX0NMT05FX0RJU0NBUkRfUEFTU0RPV04gMFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNDQ6I2RlZmluZSBETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCAxXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE0NTojZGVmaW5lIERNX0NMT05FX0hZRFJBVElPTl9TVVNQRU5ERUQgMlxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xNDYtXG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz03NjE9c3RhdGljIHZvaWQgaHlkcmF0aW9uX2tjb3B5ZF9jYWxsYmFjayhpbnQgcmVhZF9lcnIsIHVuc2lnbmVkIGxvbmcgd3JpdGVfZXJyLCB2b2lkICpjb250ZXh0KVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtNzg3LVx0LyogQ29udGludWUgYmFja2dyb3VuZCBoeWRyYXRpb24sIGlmIHRoZXJlIGlzIG5vIEkvTyBpbi1mbGlnaHQgKi9cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6Nzg4Olx0aWYgKHRlc3RfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTc4OS1cdCAgICAhYXRvbWljX3JlYWQoXHUwMDI2Y2xvbmUtXHUwMDNlaW9zX2luX2ZsaWdodCkpXG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz0xMDYxPXN0YXRpYyB2b2lkIGRvX2h5ZHJhdGlvbihzdHJ1Y3QgY2xvbmUgKmNsb25lKVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTA5Mi1cdG9mZnNldCA9IGNsb25lLVx1MDAzZWh5ZHJhdGlvbl9vZmZzZXQ7XG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjEwOTM6XHR3aGlsZSAobGlrZWx5KCF0ZXN0X2JpdChETV9DTE9ORV9IWURSQVRJT05fU1VTUEVOREVELCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncykpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMDk0LVx0ICAgICAgICFhdG9taWNfcmVhZChcdTAwMjZjbG9uZS1cdTAwM2Vpb3NfaW5fZmxpZ2h0KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTA5NTpcdCAgICAgICB0ZXN0X2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXHUwMDI2Y2xvbmUtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMDk2LVx0ICAgICAgIG9mZnNldCBcdTAwM2MgbnJfcmVnaW9ucykge1xuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTM4Mj1zdGF0aWMgdm9pZCBlbWl0X2ZsYWdzKHN0cnVjdCBjbG9uZSAqY2xvbmUsIGNoYXIgKnJlc3VsdCwgdW5zaWduZWQgaW50IG1heGxlbixcbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTEzODctXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjEzODg6XHRjb3VudCA9ICF0ZXN0X2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXHUwMDI2Y2xvbmUtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMzg5LVx0Y291bnQgJiM0Mzs9ICF0ZXN0X2JpdChETV9DTE9ORV9ESVNDQVJEX1BBU1NET1dOLCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncyk7XG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMzkyLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxMzkzOlx0aWYgKCF0ZXN0X2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXHUwMDI2Y2xvbmUtXHUwMDNlZmxhZ3MpKVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMzk0LVx0XHRETUVNSVQoXCYjMzQ7bm9faHlkcmF0aW9uIFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz0xNTM3PXN0YXRpYyBpbnQgcGFyc2VfZmVhdHVyZV9hcmdzKHN0cnVjdCBkbV9hcmdfc2V0ICphcywgc3RydWN0IGNsb25lICpjbG9uZSlcbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE1NjItXHRcdGlmICghc3RyY2FzZWNtcChhcmdfbmFtZSwgXCYjMzQ7bm9faHlkcmF0aW9uXCYjMzQ7KSkge1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNTYzOlx0XHRcdF9fY2xlYXJfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE1NjQtXHRcdH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAoYXJnX25hbWUsIFwmIzM0O25vX2Rpc2NhcmRfcGFzc2Rvd25cJiMzNDspKSB7XG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz0xNTc1PXN0YXRpYyBpbnQgcGFyc2VfY29yZV9hcmdzKHN0cnVjdCBkbV9hcmdfc2V0ICphcywgc3RydWN0IGNsb25lICpjbG9uZSlcbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE1ODktXHQvKiBJbml0aWFsaXplIGNvcmUgYXJndW1lbnRzICovXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE1OTA6XHRjbG9uZS1cdTAwM2VoeWRyYXRpb25fYmF0Y2hfc2l6ZSA9IERFRkFVTFRfSFlEUkFUSU9OX0JBVENIX1NJWkU7XG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE1OTE6XHRjbG9uZS1cdTAwM2VoeWRyYXRpb25fdGhyZXNob2xkID0gREVGQVVMVF9IWURSQVRJT05fVEhSRVNIT0xEO1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xNTkyLVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTc1ND1zdGF0aWMgaW50IGNsb25lX2N0cihzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgdW5zaWduZWQgaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTc3Ny1cdC8qIEluaXRpYWxpemUgZG0tY2xvbmUgZmxhZ3MgKi9cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTc3ODpcdF9fc2V0X2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXHUwMDI2Y2xvbmUtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNzc5Olx0X19zZXRfYml0KERNX0NMT05FX0hZRFJBVElPTl9TVVNQRU5ERUQsIFx1MDAyNmNsb25lLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTc4MC1cdF9fc2V0X2JpdChETV9DTE9ORV9ESVNDQVJEX1BBU1NET1dOLCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncyk7XG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xODgwLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxODgxOlx0ciA9IG1lbXBvb2xfaW5pdF9zbGFiX3Bvb2woXHUwMDI2Y2xvbmUtXHUwMDNlaHlkcmF0aW9uX3Bvb2wsIE1JTl9IWURSQVRJT05TLFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xODgyLVx0XHRcdFx0ICAgX2h5ZHJhdGlvbl9jYWNoZSk7XG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz0xOTU1PXN0YXRpYyB2b2lkIGNsb25lX3Bvc3RzdXNwZW5kKHN0cnVjdCBkbV90YXJnZXQgKnRpKVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTk3NS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTk3NjpcdHNldF9iaXQoRE1fQ0xPTkVfSFlEUkFUSU9OX1NVU1BFTkRFRCwgXHUwMDI2Y2xvbmUtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xOTc3LVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTk5Mz1zdGF0aWMgdm9pZCBjbG9uZV9yZXN1bWUoc3RydWN0IGRtX3RhcmdldCAqdGkpXG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xOTk2LVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxOTk3Olx0Y2xlYXJfYml0KERNX0NMT05FX0hZRFJBVElPTl9TVVNQRU5ERUQsIFx1MDAyNmNsb25lLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTk5OC1cdGRvX3dha2VyKFx1MDAyNmNsb25lLVx1MDAzZXdha2VyLndvcmspO1xuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MjEwMz1zdGF0aWMgdm9pZCBlbmFibGVfaHlkcmF0aW9uKHN0cnVjdCBjbG9uZSAqY2xvbmUpXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTIxMDQte1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoyMTA1Olx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncykpXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTIxMDYtXHRcdHdha2Vfd29ya2VyKGNsb25lKTtcbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jPTIxMDk9c3RhdGljIHZvaWQgZGlzYWJsZV9oeWRyYXRpb24oc3RydWN0IGNsb25lICpjbG9uZSlcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMjExMC17XG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjIxMTE6XHRjbGVhcl9iaXQoRE1fQ0xPTkVfSFlEUkFUSU9OX0VOQUJMRUQsIFx1MDAyNmNsb25lLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMjExMi19XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTM4PXN0cnVjdCBteGxfYmFzZSB7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTYzLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY0Olx0dTggICAgICAgICAgICAgICAgICAgYnVmW01YTF9IWURSQV9PRU1fTUFYX0NNRF9CVUZGX0xFTl07XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjUtXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTE0OD1zdGF0aWMgaW50IHJlYWRfcmVnaXN0ZXJfdW5sb2NrZWQoc3RydWN0IG14bCAqc3RhdGUsIHUzMiByZWcsIHUzMiAqdmFsKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xNTAtXHRpbnQgc3RhdDtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxNTE6XHR1OCBkYXRhW01YTF9IWURSQV9SRUdfU0laRV9JTl9CWVRFUyAmIzQzOyBNWExfSFlEUkFfSTJDX0hEUl9TSVpFXSA9IHtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxNTI6XHRcdE1YTF9IWURSQV9QTElEX1JFR19SRUFELCAweDA0LFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTE1My1cdFx0R0VUX0JZVEUocmVnLCAwKSwgR0VUX0JZVEUocmVnLCAxKSxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTU3LVx0c3RhdCA9IGkyY3dyaXRlKHN0YXRlLCBkYXRhLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjE1ODpcdFx0XHRNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMgJiM0MzsgTVhMX0hZRFJBX0kyQ19IRFJfU0laRSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTU5LVx0aWYgKHN0YXQpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTE2Mi1cdFx0c3RhdCA9IGkyY3JlYWQoc3RhdGUsICh1OCAqKSB2YWwsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTYzOlx0XHRcdCAgICAgICBNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTE2NC1cdGxlMzJfdG9fY3B1cyh2YWwpO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0yMDE9c3RhdGljIGludCB3cml0ZV9yZWdpc3RlcihzdHJ1Y3QgbXhsICpzdGF0ZSwgdTMyIHJlZywgdTMyIHZhbClcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjAzLVx0aW50IHN0YXQ7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjA0Olx0dTggZGF0YVtNWExfSFlEUkFfUkVHX1dSSVRFX0xFTl0gPSB7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjA1Olx0XHRNWExfSFlEUkFfUExJRF9SRUdfV1JJVEUsIDB4MDgsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjA2LVx0XHRCWVRFMChyZWcpLCBCWVRFMShyZWcpLCBCWVRFMihyZWcpLCBCWVRFMyhyZWcpLFxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0yMTc9c3RhdGljIGludCB3cml0ZV9maXJtd2FyZV9ibG9jayhzdHJ1Y3QgbXhsICpzdGF0ZSxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjIzLVx0bXV0ZXhfbG9jayhcdTAwMjZzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZWkyY19sb2NrKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyMjQ6XHRidWZbMF0gPSBNWExfSFlEUkFfUExJRF9SRUdfV1JJVEU7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjI1LVx0YnVmWzFdID0gc2l6ZSAmIzQzOyA0O1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yMzEtXHRzdGF0ID0gaTJjd3JpdGUoc3RhdGUsIGJ1ZixcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyMzI6XHRcdFx0TVhMX0hZRFJBX0kyQ19IRFJfU0laRSAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjIzMzpcdFx0XHRNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMgJiM0Mzsgc2l6ZSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjM0LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnN0YXRlLVx1MDAzZWJhc2UtXHUwMDNlaTJjX2xvY2spO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0yNDA9c3RhdGljIGludCByZWFkX3JlZ2lzdGVyKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgcmVnLCB1MzIgKnZhbClcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjQyLVx0aW50IHN0YXQ7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjQzOlx0dTggZGF0YVtNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMgJiM0MzsgTVhMX0hZRFJBX0kyQ19IRFJfU0laRV0gPSB7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjQ0Olx0XHRNWExfSFlEUkFfUExJRF9SRUdfUkVBRCwgMHgwNCxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNDUtXHRcdEdFVF9CWVRFKHJlZywgMCksIEdFVF9CWVRFKHJlZywgMSksXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTI1MC1cdHN0YXQgPSBpMmN3cml0ZShzdGF0ZSwgZGF0YSxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyNTE6XHRcdFx0TVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTICYjNDM7IE1YTF9IWURSQV9JMkNfSERSX1NJWkUpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTI1Mi1cdGlmIChzdGF0KVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNTUtXHRcdHN0YXQgPSBpMmNyZWFkKHN0YXRlLCAodTggKikgdmFsLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjI1NjpcdFx0XHQgICAgICAgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNTctXHRtdXRleF91bmxvY2soXHUwMDI2c3RhdGUtXHUwMDNlYmFzZS1cdTAwM2VpMmNfbG9jayk7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTI2ND1zdGF0aWMgaW50IHJlYWRfcmVnaXN0ZXJfYmxvY2soc3RydWN0IG14bCAqc3RhdGUsIHUzMiByZWcsIHUzMiBzaXplLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjcwLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjI3MTpcdGJ1ZlswXSA9IE1YTF9IWURSQV9QTElEX1JFR19SRUFEO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTI3Mi1cdGJ1ZlsxXSA9IHNpemUgJiM0MzsgNDtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjc3LVx0c3RhdCA9IGkyY3dyaXRlKHN0YXRlLCBidWYsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6Mjc4Olx0XHRcdE1YTF9IWURSQV9JMkNfSERSX1NJWkUgJiM0MzsgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNzktXHRpZiAoIXN0YXQpIHtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MzE5PXN0YXRpYyBpbnQgZmlybXdhcmVfaXNfYWxpdmUoc3RydWN0IG14bCAqc3RhdGUpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyMi1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzozMjM6XHRpZiAocmVhZF9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfSEVBUl9CRUFULCBcdTAwMjZoYjApKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyNC1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMzI1LVx0bXNsZWVwKDIwKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzozMjY6XHRpZiAocmVhZF9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfSEVBUl9CRUFULCBcdTAwMjZoYjEpKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyNy1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTM4ND1zdGF0aWMgaW50IGNmZ19zY3JhbWJsZXIoc3RydWN0IG14bCAqc3RhdGUsIHUzMiBnb2xkKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0zODctXHR1OCBidWZbMjZdID0ge1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjM4ODpcdFx0TVhMX0hZRFJBX1BMSURfQ01EX1dSSVRFLCAyNCxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzozODk6XHRcdDAsIE1YTF9IWURSQV9ERU1PRF9TQ1JBTUJMRV9DT0RFX0NNRCwgMCwgMCxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0zOTAtXHRcdHN0YXRlLVx1MDAzZWRlbW9kLCAwLCAwLCAwLFxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz00MDU9c3RhdGljIGludCBjZmdfZGVtb2RfYWJvcnRfdHVuZShzdHJ1Y3QgbXhsICpzdGF0ZSlcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00MDYte1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQwNzpcdHN0cnVjdCBNWExfSFlEUkFfREVNT0RfQUJPUlRfVFVORV9UIGFib3J0X3R1bmVfY21kO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQwOC1cdHU4IGNtZF9zaXplID0gc2l6ZW9mKGFib3J0X3R1bmVfY21kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0MDk6XHR1OCBjbWRfYnVmZltNWExfSFlEUkFfT0VNX01BWF9DTURfQlVGRl9MRU5dO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQxMC1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00MTEtXHRhYm9ydF90dW5lX2NtZC5kZW1vZF9pZCA9IHN0YXRlLVx1MDAzZWRlbW9kO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQxMjpcdEJVSUxEX0hZRFJBX0NNRChNWExfSFlEUkFfQUJPUlRfVFVORV9DTUQsIE1YTF9DTURfV1JJVEUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDEzLVx0XHRcdGNtZF9zaXplLCBcdTAwMjZhYm9ydF90dW5lX2NtZCwgY21kX2J1ZmYpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQxNDpcdHJldHVybiBzZW5kX2NvbW1hbmQoc3RhdGUsIGNtZF9zaXplICYjNDM7IE1YTF9IWURSQV9DTURfSEVBREVSX1NJWkUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDE1LVx0XHRcdCAgICBcdTAwMjZjbWRfYnVmZlswXSk7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTQyNj1zdGF0aWMgaW50IHNldF9wYXJhbWV0ZXJzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00MjktXHRzdHJ1Y3QgZHR2X2Zyb250ZW5kX3Byb3BlcnRpZXMgKnAgPSBcdTAwMjZmZS1cdTAwM2VkdHZfcHJvcGVydHlfY2FjaGU7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDMwOlx0c3RydWN0IE1YTF9IWURSQV9ERU1PRF9QQVJBTV9UIGRlbW9kX2NoYW5fY2ZnO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQzMS1cdHU4IGNtZF9zaXplID0gc2l6ZW9mKGRlbW9kX2NoYW5fY2ZnKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0MzI6XHR1OCBjbWRfYnVmZltNWExfSFlEUkFfT0VNX01BWF9DTURfQlVGRl9MRU5dO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQzMy1cdHUzMiBzcmFuZ2UgPSAxMDtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDQ0LVx0Y2FzZSBTWVNfRFNTOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ0NTpcdFx0ZGVtb2RfY2hhbl9jZmcuc3RhbmRhcmQgPSBNWExfSFlEUkFfRFNTO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ0NjpcdFx0ZGVtb2RfY2hhbl9jZmcucm9sbF9vZmYgPSBNWExfSFlEUkFfUk9MTE9GRl9BVVRPO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ0Ny1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ1MS1cdFx0XHRzcmFuZ2UgPSAxMDtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NTI6XHRcdGRlbW9kX2NoYW5fY2ZnLnN0YW5kYXJkID0gTVhMX0hZRFJBX0RWQlM7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDUzOlx0XHRkZW1vZF9jaGFuX2NmZy5yb2xsX29mZiA9IE1YTF9IWURSQV9ST0xMT0ZGXzBfMzU7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDU0Olx0XHRkZW1vZF9jaGFuX2NmZy5tb2R1bGF0aW9uX3NjaGVtZSA9IE1YTF9IWURSQV9NT0RfUVBTSztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NTU6XHRcdGRlbW9kX2NoYW5fY2ZnLnBpbG90cyA9IE1YTF9IWURSQV9QSUxPVFNfT0ZGO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ1Ni1cdFx0YnJlYWs7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDU3LVx0Y2FzZSBTWVNfRFZCUzI6XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDU4Olx0XHRkZW1vZF9jaGFuX2NmZy5zdGFuZGFyZCA9IE1YTF9IWURSQV9EVkJTMjtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NTk6XHRcdGRlbW9kX2NoYW5fY2ZnLnJvbGxfb2ZmID0gTVhMX0hZRFJBX1JPTExPRkZfQVVUTztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NjA6XHRcdGRlbW9kX2NoYW5fY2ZnLm1vZHVsYXRpb25fc2NoZW1lID0gTVhMX0hZRFJBX01PRF9BVVRPO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ2MTpcdFx0ZGVtb2RfY2hhbl9jZmcucGlsb3RzID0gTVhMX0hZRFJBX1BJTE9UU19BVVRPO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ2Mi1cdFx0Y2ZnX3NjcmFtYmxlcihzdGF0ZSwgcC1cdTAwM2VzY3JhbWJsaW5nX3NlcXVlbmNlX2luZGV4KTtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDcxLVx0ZGVtb2RfY2hhbl9jZmcubWF4X2NhcnJpZXJfb2Zmc2V0X2luX21oeiA9IHNyYW5nZTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NzI6XHRkZW1vZF9jaGFuX2NmZy5zcGVjdHJ1bV9pbnZlcnNpb24gPSBNWExfSFlEUkFfU1BFQ1RSVU1fQVVUTztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NzM6XHRkZW1vZF9jaGFuX2NmZy5mZWNfY29kZV9yYXRlID0gTVhMX0hZRFJBX0ZFQ19BVVRPO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ3NC1cbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDgxLVx0c3RhdGUtXHUwMDNldHVuZXJfaW5fdXNlID0gc3RhdGUtXHUwMDNldHVuZXI7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDgyOlx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9ERU1PRF9TRVRfUEFSQU1fQ01ELCBNWExfQ01EX1dSSVRFLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ4My1cdFx0XHRjbWRfc2l6ZSwgXHUwMDI2ZGVtb2RfY2hhbl9jZmcsIGNtZF9idWZmKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0ODQ6XHRzdGF0ID0gc2VuZF9jb21tYW5kKHN0YXRlLCBjbWRfc2l6ZSAmIzQzOyBNWExfSFlEUkFfQ01EX0hFQURFUl9TSVpFLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ4NS1cdFx0XHQgICAgXHUwMDI2Y21kX2J1ZmZbMF0pO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz01MTI9c3RhdGljIGludCByZWFkX3NucihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSlcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTE5LVx0bXV0ZXhfbG9jayhcdTAwMjZzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXN0YXR1c19sb2NrKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1MjA6XHRIWURSQV9ERU1PRF9TVEFUVVNfTE9DSyhzdGF0ZSwgc3RhdGUtXHUwMDNlZGVtb2QpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjUyMTpcdHN0YXQgPSByZWFkX3JlZ2lzdGVyKHN0YXRlLCAoSFlEUkFfRE1EX1NOUl9BRERSX09GRlNFVCAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjUyMjpcdFx0XHRcdCAgICAgSFlEUkFfRE1EX1NUQVRVU19PRkZTRVQoc3RhdGUtXHUwMDNlZGVtb2QpKSxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01MjMtXHRcdFx0ICAgICBcdTAwMjZyZWdfZGF0YSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTI0Olx0SFlEUkFfREVNT0RfU1RBVFVTX1VOTE9DSyhzdGF0ZSwgc3RhdGUtXHUwMDNlZGVtb2QpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTUyNS1cdG11dGV4X3VubG9jayhcdTAwMjZzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXN0YXR1c19sb2NrKTtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9NTMzPXN0YXRpYyBpbnQgcmVhZF9iZXIoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTUzOS1cdG11dGV4X2xvY2soXHUwMDI2c3RhdGUtXHUwMDNlYmFzZS1cdTAwM2VzdGF0dXNfbG9jayk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTQwOlx0SFlEUkFfREVNT0RfU1RBVFVTX0xPQ0soc3RhdGUsIHN0YXRlLVx1MDAzZWRlbW9kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDEtXHRyZWFkX3JlZ2lzdGVyX2Jsb2NrKHN0YXRlLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU0MjpcdFx0KEhZRFJBX0RNRF9EVkJTXzFTVF9DT1JSX1JTX0VSUk9SU19BRERSX09GRlNFVCAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU0MzpcdFx0IEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVx1MDAzZWRlbW9kKSksXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTQ0LVx0XHQoNCAqIHNpemVvZih1MzIpKSxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDUtXHRcdCh1OCAqKSBcdTAwMjZyZWdbMF0pO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU0NjpcdEhZRFJBX0RFTU9EX1NUQVRVU19VTkxPQ0soc3RhdGUsIHN0YXRlLVx1MDAzZWRlbW9kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDctXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTU2MC1cdHJlYWRfcmVnaXN0ZXJfYmxvY2soc3RhdGUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTYxOlx0XHQoSFlEUkFfRE1EX0RWQlMyX0NSQ19FUlJPUlNfQUREUl9PRkZTRVQgJiM0MztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1NjI6XHRcdCBIWURSQV9ETURfU1RBVFVTX09GRlNFVChzdGF0ZS1cdTAwM2VkZW1vZCkpLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTU2My1cdFx0KDcgKiBzaXplb2YodTMyKSksXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTU4OT1zdGF0aWMgaW50IHJlYWRfc2lnbmFsX3N0cmVuZ3RoKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01OTYtXHRtdXRleF9sb2NrKFx1MDAyNnN0YXRlLVx1MDAzZWJhc2UtXHUwMDNlc3RhdHVzX2xvY2spO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU5NzpcdEhZRFJBX0RFTU9EX1NUQVRVU19MT0NLKHN0YXRlLCBzdGF0ZS1cdTAwM2VkZW1vZCk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTk4Olx0c3RhdCA9IHJlYWRfcmVnaXN0ZXIoc3RhdGUsIChIWURSQV9ETURfU1RBVFVTX0lOUFVUX1BPV0VSX0FERFIgJiM0MztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1OTk6XHRcdFx0XHQgICAgIEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVx1MDAzZWRlbW9kKSksXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjAwLVx0XHRcdCAgICAgXHUwMDI2cmVnX2RhdGEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYwMTpcdEhZRFJBX0RFTU9EX1NUQVRVU19VTkxPQ0soc3RhdGUsIHN0YXRlLVx1MDAzZWRlbW9kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02MDItXHRtdXRleF91bmxvY2soXHUwMDI2c3RhdGUtXHUwMDNlYmFzZS1cdTAwM2VzdGF0dXNfbG9jayk7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTYxMD1zdGF0aWMgaW50IHJlYWRfc3RhdHVzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCBlbnVtIGZlX3N0YXR1cyAqc3RhdHVzKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02MTYtXHRtdXRleF9sb2NrKFx1MDAyNnN0YXRlLVx1MDAzZWJhc2UtXHUwMDNlc3RhdHVzX2xvY2spO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYxNzpcdEhZRFJBX0RFTU9EX1NUQVRVU19MT0NLKHN0YXRlLCBzdGF0ZS1cdTAwM2VkZW1vZCk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NjE4Olx0cmVhZF9yZWdpc3RlcihzdGF0ZSwgKEhZRFJBX0RNRF9MT0NLX1NUQVRVU19BRERSX09GRlNFVCAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYxOTpcdFx0XHQgICAgIEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVx1MDAzZWRlbW9kKSksXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjIwLVx0XHRcdCAgICAgXHUwMDI2cmVnX2RhdGEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYyMTpcdEhZRFJBX0RFTU9EX1NUQVRVU19VTkxPQ0soc3RhdGUsIHN0YXRlLVx1MDAzZWRlbW9kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02MjItXHRtdXRleF91bmxvY2soXHUwMDI2c3RhdGUtXHUwMDNlYmFzZS1cdTAwM2VzdGF0dXNfbG9jayk7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTY0OD1zdGF0aWMgaW50IHR1bmUoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGJvb2wgcmVfdHVuZSxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjY1LVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY2NjpzdGF0aWMgZW51bSBmZV9jb2RlX3JhdGUgY29udl9mZWMoZW51bSBNWExfSFlEUkFfRkVDX0UgZmVjKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY2Ny17XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY3My1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2NzQ6XHRpZiAoZmVjIFx1MDAzZSBNWExfSFlEUkFfRkVDXzlfMTApXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjc1LVx0XHRyZXR1cm4gRkVDX05PTkU7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTY3OT1zdGF0aWMgaW50IGdldF9mcm9udGVuZChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjg2LVx0bXV0ZXhfbG9jayhcdTAwMjZzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXN0YXR1c19sb2NrKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2ODc6XHRIWURSQV9ERU1PRF9TVEFUVVNfTE9DSyhzdGF0ZSwgc3RhdGUtXHUwMDNlZGVtb2QpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY4OC1cdHJlYWRfcmVnaXN0ZXJfYmxvY2soc3RhdGUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6Njg5Olx0XHQoSFlEUkFfRE1EX1NUQU5EQVJEX0FERFJfT0ZGU0VUICYjNDM7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NjkwOlx0XHRIWURSQV9ETURfU1RBVFVTX09GRlNFVChzdGF0ZS1cdTAwM2VkZW1vZCkpLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY5MS1cdFx0KE1YTF9ERU1PRF9DSEFOX1BBUkFNU19CVUZGX1NJWkUgKiA0KSwgLyogMjUgKiA0IGJ5dGVzICovXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY5NC1cdHJlYWRfcmVnaXN0ZXJfYmxvY2soc3RhdGUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6Njk1Olx0XHQoSFlEUkFfRE1EX1NUQVRVU19DRU5URVJfRlJFUV9JTl9LSFpfQUREUiAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY5NjpcdFx0SFlEUkFfRE1EX1NUQVRVU19PRkZTRVQoc3RhdGUtXHUwMDNlZGVtb2QpKSxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02OTctXHRcdCg0KSwgLyogNCBieXRlcyAqL1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY5OC1cdFx0KHU4ICopIFx1MDAyNmZyZXEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY5OTpcdEhZRFJBX0RFTU9EX1NUQVRVU19VTkxPQ0soc3RhdGUsIHN0YXRlLVx1MDAzZWRlbW9kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MDAtXHRtdXRleF91bmxvY2soXHUwMDI2c3RhdGUtXHUwMDNlYmFzZS1cdTAwM2VzdGF0dXNfbG9jayk7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcwOC1cdCAqIHAtXHUwMDNlZGVsaXZlcnlfc3lzdGVtID1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MDk6XHQgKlx0KE1YTF9IWURSQV9CQ0FTVF9TVERfRSkgcmVnRGF0YVtETURfU1RBTkRBUkRfQUREUl07XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzEwLVx0ICogcC1cdTAwM2VpbnZlcnNpb24gPVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjcxMTpcdCAqXHQoTVhMX0hZRFJBX1NQRUNUUlVNX0UpIHJlZ0RhdGFbRE1EX1NQRUNUUlVNX0lOVkVSU0lPTl9BRERSXTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MTItXHQgKiBmcmVxU2VhcmNoUmFuZ2VLSHogPVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MjAtXHRjYXNlIFNZU19EVkJTMjpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MjE6XHRcdHN3aXRjaCAoKGVudW0gTVhMX0hZRFJBX1BJTE9UU19FKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcyMi1cdFx0XHRyZWdfZGF0YVtETURfRFZCUzJfUElMT1RfT05fT0ZGX0FERFJdKSB7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzIzOlx0XHRjYXNlIE1YTF9IWURSQV9QSUxPVFNfT0ZGOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcyNC1cdFx0XHRwLVx1MDAzZXBpbG90ID0gUElMT1RfT0ZGO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcyNS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MjY6XHRcdGNhc2UgTVhMX0hZRFJBX1BJTE9UU19PTjpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MjctXHRcdFx0cC1cdTAwM2VwaWxvdCA9IFBJTE9UX09OO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MzMtXHRjYXNlIFNZU19EVkJTOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjczNDpcdFx0c3dpdGNoICgoZW51bSBNWExfSFlEUkFfTU9EVUxBVElPTl9FKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTczNS1cdFx0XHRyZWdfZGF0YVtETURfTU9EVUxBVElPTl9TQ0hFTUVfQUREUl0pIHtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MzY6XHRcdGNhc2UgTVhMX0hZRFJBX01PRF9RUFNLOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTczNy1cdFx0XHRwLVx1MDAzZW1vZHVsYXRpb24gPSBRUFNLO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTczOC1cdFx0XHRicmVhaztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3Mzk6XHRcdGNhc2UgTVhMX0hZRFJBX01PRF84UFNLOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc0MC1cdFx0XHRwLVx1MDAzZW1vZHVsYXRpb24gPSBQU0tfODtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzQ0LVx0XHR9XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzQ1Olx0XHRzd2l0Y2ggKChlbnVtIE1YTF9IWURSQV9ST0xMT0ZGX0UpXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzQ2LVx0XHRcdHJlZ19kYXRhW0RNRF9TUEVDVFJVTV9ST0xMX09GRl9BRERSXSkge1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjc0NzpcdFx0Y2FzZSBNWExfSFlEUkFfUk9MTE9GRl8wXzIwOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc0OC1cdFx0XHRwLVx1MDAzZXJvbGxvZmYgPSBST0xMT0ZGXzIwO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc0OS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3NTA6XHRcdGNhc2UgTVhMX0hZRFJBX1JPTExPRkZfMF8zNTpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03NTEtXHRcdFx0cC1cdTAwM2Vyb2xsb2ZmID0gUk9MTE9GRl8zNTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03NTItXHRcdFx0YnJlYWs7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzUzOlx0XHRjYXNlIE1YTF9IWURSQV9ST0xMT0ZGXzBfMjU6XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzU0LVx0XHRcdHAtXHUwMDNlcm9sbG9mZiA9IFJPTExPRkZfMjU7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTgwNz1zdGF0aWMgdm9pZCBjZmdfZGV2X3h0YWwoc3RydWN0IG14bCAqc3RhdGUsIHUzMiBmcmVxLCB1MzIgY2FwLCB1MzIgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy04MTItXHRpZiAoZnJlcSA9PSAyNDAwMDAwMClcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo4MTM6XHRcdHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9DUllTVEFMX1NFVFRJTkcsIDApO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTgxNC1cdGVsc2VcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo4MTU6XHRcdHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9DUllTVEFMX1NFVFRJTkcsIDEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTgxNi1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo4MTc6XHR3cml0ZV9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfQ1JZU1RBTF9DQVAsIGNhcCk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtODE4LX1cbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9ODQxPXN0YXRpYyBpbnQgd3JpdGVfZndfc2VnbWVudChzdHJ1Y3QgbXhsICpzdGF0ZSxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtODQ4LVx0dTggKndfYnVmX3B0ciA9IE5VTEw7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6ODQ5Olx0dTMyIGJsb2NrX3NpemUgPSAoKE1YTF9IWURSQV9PRU1fTUFYX0JMT0NLX1dSSVRFX0xFTkdUSCAtXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6ODUwOlx0XHRcdCAoTVhMX0hZRFJBX0kyQ19IRFJfU0laRSAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg1MTpcdFx0XHQgIE1YTF9IWURSQV9SRUdfU0laRV9JTl9CWVRFUykpIC8gNCkgKiA0O1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg1MjpcdHU4IHdfbXNnX2J1ZmZlcltNWExfSFlEUkFfT0VNX01BWF9CTE9DS19XUklURV9MRU5HVEggLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg1MzpcdFx0ICAgICAgKE1YTF9IWURSQV9JMkNfSERSX1NJWkUgJiM0MzsgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKV07XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtODU0LVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz04NzY9c3RhdGljIGludCBkb19maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgbXhsICpzdGF0ZSwgdTggKm1iaW5fYnVmZmVyX3B0cixcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTA3LVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjkwODpcdFx0aWYgKHN0YXRlLVx1MDAzZWJhc2UtXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU2OCkge1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTkwOS1cdFx0XHRpZiAoKCgoc2VnX2FkZHJlc3MgXHUwMDI2IDB4OTA3NjAwMDApID09IDB4OTA3NjAwMDApIHx8XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTk1Nz1zdGF0aWMgaW50IGZpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCBteGwgKnN0YXRlLCB1OCAqbWJpbiwgdTMyIG1iaW5fbGVuKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05NjAtXHR1MzIgcmVnX2RhdGEgPSAwO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk2MTpcdHN0cnVjdCBNWExfSFlEUkFfU0tVX0NPTU1BTkRfVCBkZXZfc2t1X2NmZztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5NjI6XHR1OCBjbWRfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgTVhMX0hZRFJBX1NLVV9DT01NQU5EX1QpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk2MzpcdHU4IGNtZF9idWZmW3NpemVvZihzdHJ1Y3QgTVhMX0hZRFJBX1NLVV9DT01NQU5EX1QpICYjNDM7IDZdO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk2NC1cbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTc0LVx0LyogUmVzZXQgVFggRklGTyYjMzk7cywgQkJBTkQsIFhCQVIgKi9cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5NzU6XHRzdGF0dXMgPSB3cml0ZV9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfUkVTRVRfVFJBTlNQT1JUX0ZJRk9fUkVHLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk3NjpcdFx0XHRcdEhZRFJBX1JFU0VUX1RSQU5TUE9SVF9GSUZPX0RBVEEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk3Ny1cdGlmIChzdGF0dXMpXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTc4LVx0XHRyZXR1cm4gc3RhdHVzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk3OTpcdHN0YXR1cyA9IHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9SRVNFVF9CQkFORF9SRUcsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTgwOlx0XHRcdFx0SFlEUkFfUkVTRVRfQkJBTkRfREFUQSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTgxLVx0aWYgKHN0YXR1cylcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05ODItXHRcdHJldHVybiBzdGF0dXM7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTgzOlx0c3RhdHVzID0gd3JpdGVfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX1JFU0VUX1hCQVJfUkVHLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk4NDpcdFx0XHRcdEhZRFJBX1JFU0VUX1hCQVJfREFUQSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTg1LVx0aWYgKHN0YXR1cylcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTkwLVx0ICovXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTkxOlx0c3RhdHVzID0gd3JpdGVfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX01PRFVMRVNfQ0xLXzJfUkVHLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk5MjpcdFx0XHRcdEhZRFJBX0RJU0FCTEVfQ0xLXzIpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk5My1cdGlmIChzdGF0dXMpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk5NS1cdC8qIENsZWFyIFNvZnR3YXJlIFx1MDAyNiBIb3N0IGludGVycnVwdCBzdGF0dXMgLSAoQ2xlYXIgb24gcmVhZCkgKi9cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5OTY6XHRzdGF0dXMgPSByZWFkX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9QUkNNX1JPT1RfQ0xLX1JFRywgXHUwMDI2cmVnX2RhdGEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk5Ny1cdGlmIChzdGF0dXMpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwMDItXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTAwMzpcdGlmIChzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXR5cGUgPT0gTVhMX0hZRFJBX0RFVklDRV81NjgpIHtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDA0LVx0XHR1c2xlZXBfcmFuZ2UoMTAwMDAsIDExMDAwKTtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTA0MC1cdGRldl9za3VfY2ZnLnNrdV90eXBlID0gc3RhdGUtXHUwMDNlYmFzZS1cdTAwM2Vza3VfdHlwZTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDQxOlx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9ERVZfQ0ZHX1NLVV9DTUQsIE1YTF9DTURfV1JJVEUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTA0Mi1cdFx0XHRjbWRfc2l6ZSwgXHUwMDI2ZGV2X3NrdV9jZmcsIGNtZF9idWZmKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDQzOlx0c3RhdHVzID0gc2VuZF9jb21tYW5kKHN0YXRlLCBjbWRfc2l6ZSAmIzQzOyBNWExfSFlEUkFfQ01EX0hFQURFUl9TSVpFLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNDQtXHRcdFx0ICAgICAgXHUwMDI2Y21kX2J1ZmZbMF0pO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0xMDQ5PXN0YXRpYyBpbnQgY2ZnX3RzX3BhZF9tdXgoc3RydWN0IG14bCAqc3RhdGUsIGVudW0gTVhMX0JPT0xfRSBlbmFibGVfc2VyaWFsX3RzKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDU1LVx0XHRwYWRfbXV4X3ZhbHVlID0gMDtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDU2Olx0XHRpZiAoKHN0YXRlLVx1MDAzZWJhc2UtXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU0MSkgfHxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDU3Olx0XHQgICAgKHN0YXRlLVx1MDAzZWJhc2UtXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU0MVMpKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNTgtXHRcdFx0cGFkX211eF92YWx1ZSA9IDI7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTA1OS1cdH0gZWxzZSB7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTA2MDpcdFx0aWYgKChzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXR5cGUgPT0gTVhMX0hZRFJBX0RFVklDRV81ODEpIHx8XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTA2MTpcdFx0ICAgIChzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXR5cGUgPT0gTVhMX0hZRFJBX0RFVklDRV81ODFTKSlcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDYyLVx0XHRcdHBhZF9tdXhfdmFsdWUgPSAyO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDY3LVx0c3dpdGNoIChzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXR5cGUpIHtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDY4Olx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU2MTpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDY5Olx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU4MTpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDcwOlx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU0MTpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDcxOlx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU0MVM6XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTA3MjpcdGNhc2UgTVhMX0hZRFJBX0RFVklDRV81NjFTOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNzM6XHRjYXNlIE1YTF9IWURSQV9ERVZJQ0VfNTgxUzpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDc0LVx0XHRzdGF0dXMgfD0gdXBkYXRlX2J5X21uZW1vbmljKHN0YXRlLCAweDkwMDAwMTcwLCAyNCwgMyxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTEwMS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMTAyOlx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU0NDpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMTAzOlx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU0MjpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMTA0LVx0XHRzdGF0dXMgfD0gdXBkYXRlX2J5X21uZW1vbmljKHN0YXRlLCAweDkwMDAwMTZDLCA0LCAzLCAxKTtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTE5MS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMTkyOlx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU2ODpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMTkzLVx0XHRpZiAoZW5hYmxlX3NlcmlhbF90cyA9PSBNWExfRkFMU0UpIHtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTI4NC1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMjg1Olx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU4NDpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMjg2LVx0ZGVmYXVsdDpcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MTMxND1zdGF0aWMgaW50IHNldF9kcml2ZV9zdHJlbmd0aChzdHJ1Y3QgbXhsICpzdGF0ZSxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzE1Olx0XHRlbnVtIE1YTF9IWURSQV9UU19EUklWRV9TVFJFTkdUSF9FIHRzX2RyaXZlX3N0cmVuZ3RoKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzMTYte1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0xMzQ2PXN0YXRpYyBpbnQgZW5hYmxlX3R1bmVyKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgdHVuZXIsIHUzMiBlbmFibGUpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNDgtXHRpbnQgc3RhdCA9IDA7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM0OTpcdHN0cnVjdCBNWExfSFlEUkFfVFVORVJfQ01EIGN0cmxfdHVuZXJfY21kO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNTAtXHR1OCBjbWRfc2l6ZSA9IHNpemVvZihjdHJsX3R1bmVyX2NtZCk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM1MTpcdHU4IGNtZF9idWZmW01YTF9IWURSQV9PRU1fTUFYX0NNRF9CVUZGX0xFTl07XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTM1Mi1cdHUzMiB2YWwsIGNvdW50ID0gMTA7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNTUtXHRjdHJsX3R1bmVyX2NtZC5lbmFibGUgPSBlbmFibGU7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM1NjpcdEJVSUxEX0hZRFJBX0NNRChNWExfSFlEUkFfVFVORVJfQUNUSVZBVEVfQ01ELCBNWExfQ01EX1dSSVRFLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNTctXHRcdFx0Y21kX3NpemUsIFx1MDAyNmN0cmxfdHVuZXJfY21kLCBjbWRfYnVmZik7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM1ODpcdHN0YXQgPSBzZW5kX2NvbW1hbmQoc3RhdGUsIGNtZF9zaXplICYjNDM7IE1YTF9IWURSQV9DTURfSEVBREVSX1NJWkUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTM1OS1cdFx0XHQgICAgXHUwMDI2Y21kX2J1ZmZbMF0pO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMzYxLVx0XHRyZXR1cm4gc3RhdDtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzYyOlx0cmVhZF9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfVFVORVJfRU5BQkxFX0NPTVBMRVRFLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNjMtXHR3aGlsZSAoLS1jb3VudCBcdTAwMjZcdTAwMjYgKCh2YWwgXHUwMDNlXHUwMDNlIHR1bmVyKSBcdTAwMjYgMSkgIT0gZW5hYmxlKSB7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTM2NC1cdFx0bXNsZWVwKDIwKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzY1Olx0XHRyZWFkX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9UVU5FUl9FTkFCTEVfQ09NUExFVEUsIFx1MDAyNnZhbCk7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxMDkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIEtjb25maWcgZm9yIFpPUlJPODM5MCBTdXBwb3J0KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBgWk9SUk84MzkwYCBFdGhlcm5ldCBkcml2ZXIuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgbGlrZWx5IGRlZmluZWQgdGhlcmUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBhbmQgdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgY29udHJvbGxlZC4gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXM/IENvbmRpdGlvbmFsIGNvbXBpbGF0aW9uPyBBbnkgc3BlY2lmaWMgQ09ORklHIG9wdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2Ygd2hlbiBjb25zaWRlcmluZyB0aGlzIGZ1bmN0aW9uYWxpdHk/IFVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgZmlsZSBpcyB0aGUgZmlyc3QsIGVzc2VudGlhbCBzdGVwIHRvIGdyYXNwaW5nIGhvdyB0aGlzIGRyaXZlciBpcyBpbnRlZ3JhdGVkIGFuZCBjb25maWd1cmVkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgaXRzIGJ1aWxkIGNoYXJhY3RlcmlzdGljcywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTUwOlx0XHQgIFN1cHBvcnQgZm9yIGNhcmRzIGJhc2VkIG9uIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIERQODM5MDJBVlxuIDE1MTpcdFx0ICBTVC1OSUMgU2VyaWFsIE5ldHdvcmsgSW50ZXJmYWNlIENvbnRyb2xsZXIgZm9yIFR3aXN0ZWQgUGFpci4gIFRoaXNcbiAxNTI6XHRcdCAgaXMgYSAxME1iaXQvc2VjIEV0aGVybmV0IGNvbnRyb2xsZXIuICBQcm9kdWN0IG92ZXJ2aWV3IGFuZCBzcGVjcyBhdFxuIDE1MzpcdFx0ICBcdTAwM2NodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9EUC9EUDgzOTAyQS5odG1sXHUwMDNlLlxuIDE1NDpcdFxuIDE1NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDE1NjpcdFxuIDE1NzpcdGNvbmZpZyBaT1JSTzgzOTBcbiAxNTg6XHRcdHRyaXN0YXRlIFwmIzM0O1pvcnJvIE5TODM5MC1iYXNlZCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gMTU5Olx0XHRkZXBlbmRzIG9uIFpPUlJPXG4gMTYwOlx0XHRzZWxlY3QgQ1JDMzJcbiAxNjE6XHRcdGhlbHBcbiAxNjI6XHRcdCAgVGhpcyBkcml2ZXIgaXMgZm9yIFpvcnJvIEV0aGVybmV0IGNhcmRzIHVzaW5nIGFuIE5TODM5MC1jb21wYXRpYmxlXG4gMTYzOlx0XHQgIGNoaXBzZXQsIGxpa2UgdGhlIFZpbGxhZ2UgVHJvbmljIEFyaWFkbmUgSUkgYW5kIHRoZSBJbmRpdmlkdWFsXG4gMTY0Olx0XHQgIENvbXB1dGVycyBYLVN1cmYgRXRoZXJuZXQgY2FyZHMuIElmIHlvdSBoYXZlIHN1Y2ggYSBjYXJkLCBzYXkgWS5cbiAxNjU6XHRcdCAgT3RoZXJ3aXNlLCBzYXkgTi5cbiAxNjY6XHRcbiAxNjc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDE2ODpcdFx0ICB3aWxsIGJlIGNhbGxlZCB6b3JybzgzOTAuXG4gMTY5Olx0XG4gMTcwOlx0ZW5kaWYgIyBORVRfVkVORE9SXzgzOTBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3MjAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLY29uZmlnIERpdmU6IEFNRCBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgJiMzNDtXaGVyZSBkbyBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoaXMgQU1EIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uPyYjMzQ7IE5hdHVyYWxseSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGBLY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyB0aGUgYnVpbGQgc3lzdGVtIHVuZGVyc3RhbmRzIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGNvbmZpZ3VyYWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZ2Ag4oCTIHRoYXQmIzM5O3MgdGhlIGJyZWFkY3J1bWIgdHJhaWwgSSYjMzk7bSBmb2xsb3dpbmcuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBieSBleGFtaW5pbmcgdGhpcyBmaWxlLCBJIGNhbiBidWlsZCBhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhdmFpbGFibGUgb3B0aW9ucywgZGVwZW5kZW5jaWVzIG9uIG90aGVyIHN1YnN5c3RlbXMsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBBTUQgRXRoZXJuZXQgY29udHJvbGxlciBzdXBwb3J0LiBJJiMzOTttIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSB1c3VhbCBzdXNwZWN0cyDigJMgZGV2aWNlIHN1cHBvcnQsIGZlYXR1cmUgZmxhZ3MgKGxpa2UganVtYm8gZnJhbWVzLCBjaGVja3N1bSBvZmZsb2FkLCBWTEFOKSwgYW5kIHByb2JhYmx5IHNvbWUgbW9kdWxlL2J1aWx0LWluIGNob2ljZXMuIFRoaXMgc2hvdWxkIGJlIGEgZmFpcmx5IHN0YW5kYXJkIHN0YXJ0aW5nIHBvaW50IGZvciBhbnlvbmUgaW52ZXN0aWdhdGluZyBhIHBhcnRpY3VsYXIgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYWJsZSBhc3BlY3RzIHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMDpcdFxuICAyMTpcdGlmIE5FVF9WRU5ET1JfQU1EXG4gIDIyOlx0XG4gIDIzOlx0Y29uZmlnIEEyMDY1XG4gIDI0Olx0XHR0cmlzdGF0ZSBcJiMzNDtBMjA2NSBzdXBwb3J0XCYjMzQ7XG4gIDI1Olx0XHRkZXBlbmRzIG9uIFpPUlJPXG4gIDI2Olx0XHRzZWxlY3QgQ1JDMzJcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgSWYgeW91IGhhdmUgYSBDb21tb2RvcmUgQTIwNjUgRXRoZXJuZXQgYWRhcHRlciwgc2F5IFkuIE90aGVyd2lzZSxcbiAgMjk6XHRcdCAgc2F5IE4uXG4gIDMwOlx0XG4gIDMxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMzI6XHRcdCAgd2lsbCBiZSBjYWxsZWQgYTIwNjUuXG4gIDMzOlx0XG4gIDM0Olx0Y29uZmlnIEFNRDgxMTFfRVRIXG4gIDM1Olx0XHR0cmlzdGF0ZSBcJiMzNDtBTUQgODExMSAobmV3IFBDSSBMQU5DRSkgc3VwcG9ydFwmIzM0O1xuICAzNjpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMzc6XHRcdHNlbGVjdCBDUkMzMlxuICAzODpcdFx0c2VsZWN0IE1JSVxuICAzOTpcdFx0aGVscFxuICA0MDpcdFx0ICBJZiB5b3UgaGF2ZSBhbiBBTUQgODExMS1iYXNlZCBQQ0kgTEFOQ0UgZXRoZXJuZXQgY2FyZCxcbiAgNDE6XHRcdCAgYW5zd2VyIFkgaGVyZS5cbiAgNDI6XHRcbiAgNDM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICA0NDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBhbWQ4MTExZS5cbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgUENORVQzMlxuICA0NzpcdFx0dHJpc3RhdGUgXCYjMzQ7QU1EIFBDbmV0MzIgUENJIHN1cHBvcnRcJiMzNDtcbiAgNDg6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9QT1JUXG4gIDQ5Olx0XHRzZWxlY3QgQ1JDMzJcbiAgNTA6XHRcdHNlbGVjdCBNSUlcbiAgNTE6XHRcdGhlbHBcbiAgNTI6XHRcdCAgSWYgeW91IGhhdmUgYSBQQ25ldDMyIG9yIFBDbmV0UENJIGJhc2VkIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkLFxuICA1MzpcdFx0ICBhbnN3ZXIgWSBoZXJlLlxuICA1NDpcdFxuICA1NTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXG4gIDU2Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHBjbmV0MzIuXG4gIDU3Olx0XG4gIDU4Olx0Y29uZmlnIEFSSUFETkVcbiAgNTk6XHRcdHRyaXN0YXRlIFwmIzM0O0FyaWFkbmUgc3VwcG9ydFwmIzM0O1xuICA2MDpcdFx0ZGVwZW5kcyBvbiBaT1JST1xuICA2MTpcdFx0aGVscFxuICA2MjpcdFx0ICBJZiB5b3UgaGF2ZSBhIFZpbGxhZ2UgVHJvbmljIEFyaWFkbmUgRXRoZXJuZXQgYWRhcHRlciwgc2F5IFkuXG4gIDYzOlx0XHQgIE90aGVyd2lzZSwgc2F5IE4uXG4gIDY0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NTY0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIEluc3BlY3Rpb246IFNDU0kgRHJpdmVycyoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBlbmFibGVkIGFuZCBkaXNhYmxlZCByZWdhcmRpbmcgdGhlIFNDU0kgc3Vic3lzdGVtLiBgZHJpdmVycy9zY3NpL0tjb25maWdgIGlzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBpdCYjMzk7cyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUgU0NTSSBhcmVhLiBJJiMzOTtsbCBuZWVkIHRvIHJhcGlkbHkgcGFyc2UgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZmlsZSwgaWRlbnRpZnlpbmcgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIGFueSB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zLiBNeSBnb2FsIGlzIHRvIGdyYXNwIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyYWwgY2hvaWNlcyByZWdhcmRpbmcgd2hpY2ggU0NTSSBkcml2ZXJzIGFyZSBpbmNsdWRlZCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBUaGlzIHdpbGwgaGVscCBtZSBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGF2YWlsYWJsZSBvcHRpb25zIGFuZCBob3cgdGhleSYjMzk7cmUgaW50ZW5kZWQgdG8gYmUgdXNlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIGNvbnRhaW5lZCB3aXRoaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zY3NpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzMDA6XHRcbjEzMDE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4xMzAyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhMzAwMC5cbjEzMDM6XHRcbjEzMDQ6XHRjb25maWcgQTIwOTFfU0NTSVxuMTMwNTpcdFx0dHJpc3RhdGUgXCYjMzQ7QTIwOTEvQTU5MCBXRDMzQzkzQSBzdXBwb3J0XCYjMzQ7XG4xMzA2Olx0XHRkZXBlbmRzIG9uIFpPUlJPIFx1MDAyNlx1MDAyNiBTQ1NJXG4xMzA3Olx0XHRoZWxwXG4xMzA4Olx0XHQgIElmIHlvdSBoYXZlIGEgQ29tbW9kb3JlIEEyMDkxIFNDU0kgY29udHJvbGxlciwgc2F5IFkuIE90aGVyd2lzZSxcbjEzMDk6XHRcdCAgc2F5IE4uXG4xMzEwOlx0XG4xMzExOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuMTMxMjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYTIwOTEuXG4xMzEzOlx0XG4xMzE0Olx0Y29uZmlnIEdWUDExX1NDU0lcbjEzMTU6XHRcdHRyaXN0YXRlIFwmIzM0O0dWUCBTZXJpZXMgSUkgV0QzM0M5M0Egc3VwcG9ydFwmIzM0O1xuMTMxNjpcdFx0ZGVwZW5kcyBvbiBaT1JSTyBcdTAwMjZcdTAwMjYgU0NTSVxuMTMxNzpcdFx0aGVscFxuMTMxODpcdFx0ICBJZiB5b3UgaGF2ZSBhIEdyZWF0IFZhbGxleSBQcm9kdWN0cyBTZXJpZXMgSUkgU0NTSSBjb250cm9sbGVyLFxuMTMxOTpcdFx0ICBhbnN3ZXIgWS4gQWxzbyBzYXkgWSBpZiB5b3UgaGF2ZSBhIGxhdGVyIG1vZGVsIG9mIEdWUCBTQ1NJXG4xMzIwOlx0XHQgIGNvbnRyb2xsZXIgKHN1Y2ggYXMgdGhlIEdWUCBBNDAwOCBvciBhIENvbWJvIGJvYXJkKS4gT3RoZXJ3aXNlLFxuMTMyMTpcdFx0ICBhbnN3ZXIgTi4gVGhpcyBkcml2ZXIgZG9lcyBOT1Qgd29yayBmb3IgdGhlIFQtUmV4IHNlcmllcyBvZlxuMTMyMjpcdFx0ICBhY2NlbGVyYXRvcnMgZnJvbSBUZWtNYWdpYyBhbmQgR1ZQLU0uXG4xMzIzOlx0XG4xMzI0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuMTMyNTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZ3ZwMTEuXG4xMzI2Olx0XG4xMzI3Olx0Y29uZmlnIFNDU0lfQTQwMDBUXG4xMzI4Olx0XHR0cmlzdGF0ZSBcJiMzNDtBNDAwMFQgTkNSNTNjNzEwIFNDU0kgc3VwcG9ydFwmIzM0O1xuMTMyOTpcdFx0ZGVwZW5kcyBvbiBBTUlHQSBcdTAwMjZcdTAwMjYgU0NTSVxuMTMzMDpcdFx0c2VsZWN0IFNDU0lfU1BJX0FUVFJTXG4xMzMxOlx0XHRoZWxwXG4xMzMyOlx0XHQgIElmIHlvdSBoYXZlIGFuIEFtaWdhIDQwMDBUIGFuZCBoYXZlIFNDU0kgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlXG4xMzMzOlx0XHQgIGJ1aWx0LWluIFNDU0kgY29udHJvbGxlciwgc2F5IFkuIE90aGVyd2lzZSwgc2F5IE4uXG4xMzM0Olx0XG4xMzM1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuMTMzNjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYTQwMDB0LlxuMTMzNzpcdFxuMTMzODpcdGNvbmZpZyBTQ1NJX1pPUlJPN1hYXG4xMzM5Olx0XHR0cmlzdGF0ZSBcJiMzNDtab3JybyBOQ1I1M2M3MTAgU0NTSSBzdXBwb3J0XCYjMzQ7XG4xMzQwOlx0XHRkZXBlbmRzIG9uIFpPUlJPIFx1MDAyNlx1MDAyNiBTQ1NJXG4xMzQxOlx0XHRzZWxlY3QgU0NTSV9TUElfQVRUUlNcbjEzNDI6XHRcdGhlbHBcbjEzNDM6XHRcdCAgU3VwcG9ydCBmb3IgdmFyaW91cyBOQ1I1M2M3MTAtYmFzZWQgU0NTSSBjb250cm9sbGVycyBvbiBab3Jyb1xuMTM0NDpcdFx0ICBleHBhbnNpb24gYm9hcmRzIGZvciB0aGUgQW1pZ2EuXG4xMzQ1Olx0XHQgIFRoaXMgaW5jbHVkZXM6XG4xMzQ2Olx0XHQgICAgLSB0aGUgQW1pZ2EgNDA5MSBab3JybyBJSUkgU0NTSS0yIGNvbnRyb2xsZXIsXG4xMzQ3Olx0XHQgICAgLSB0aGUgTWFjcm9TeXN0ZW0gRGV2ZWxvcG1lbnQmIzM5O3MgV2FycEVuZ2luZSBBbWlnYSBTQ1NJLTIgY29udHJvbGxlclxuMTM0ODpcdFx0ICAgICAgKGluZm8gYXRcbjEzNDk6XHRcdCAgICAgIFx1MDAzY2h0dHA6Ly93d3cubHlzYXRvci5saXUuc2UvYW1pZ2EvYXIvZ3VpZGUvYXIzMTAuZ3VpZGU/RkVBVFVSRTVcdTAwM2UpLFxuMTM1MDpcdFx0ICAgIC0gdGhlIFNDU0kgY29udHJvbGxlciBvbiB0aGUgUGhhc2U1IEJsaXp6YXJkIFBvd2VyVVAgNjAzZSYjNDM7XG4xMzUxOlx0XHQgICAgICBhY2NlbGVyYXRvciBjYXJkIGZvciB0aGUgQW1pZ2EgMTIwMCxcbjEzNTI6XHRcdCAgICAtIHRoZSBTQ1NJIGNvbnRyb2xsZXIgb24gdGhlIEdWUCBUdXJibyAwNDAvMDYwIGFjY2VsZXJhdG9yLlxuMTM1MzpcdFxuMTM1NDpcdGNvbmZpZyBTQ1NJX1pPUlJPX0VTUFxuMTM1NTpcdFx0dHJpc3RhdGUgXCYjMzQ7Wm9ycm8gRVNQIFNDU0kgc3VwcG9ydFwmIzM0O1xuMTM1NjpcdFx0ZGVwZW5kcyBvbiBaT1JSTyBcdTAwMjZcdTAwMjYgU0NTSVxuMTM1NzpcdFx0c2VsZWN0IFNDU0lfU1BJX0FUVFJTXG4xMzU4Olx0XHRzZWxlY3QgU0NTSV9FU1BfUElPXG4xMzU5Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NzgxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBaT1JSTyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIHRoZSBgWk9SUk9gIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgYSBjbGFzc2ljIEFtaWdhIGJ1cyBzeXN0ZW0sIGFuZCBJIGNhbiBzZWUgc2V2ZXJhbCBkcml2ZXJzIOKAkyBgSFlEUkFgLCBgWk9SUk84MzkwYCwgYEEyMDY1YCwgYEFSSUFETkVgLCBwbHVzIGEgZmV3IFNDU0kgY29udHJvbGxlcnMgKGBBMjA5MV9TQ1NJYCwgYEdWUDExX1NDU0lgLCBgU0NTSV9aT1JSTzdYWGAsIGBTQ1NJX1pPUlJPX0VTUGApIOKAkyBhbGwgdGllZCB0byBpdC4gVGhlIFNDU0kgb25lcyBoYXZlIHRoYXQgZXh0cmEgYFNDU0lgIGRlcGVuZGVuY3ksIHdoaWNoIGlzIGV4cGVjdGVkLiBObyBzdXJwcmlzZXMgc28gZmFyLgoKTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2l0dWF0aW9uIHdpdGggYFpPUlJPYCBpdHNlbGYuIElzIGl0IGRlZmluZWQ/IElzIGl0IGVuYWJsZWQgb24geDg2XzY0PyBJJiMzOTt2ZSBnb3QgdG8gdHJhY2UgaXQgYmFjay4gSSYjMzk7dmUgYWxyZWFkeSBkb25lIGEgcXVpY2sgc2VhcmNoIGZvciBgY29uZmlnIFpPUlJPYCBpbiB0aGUga2VybmVsIHRyZWUsIGFuZCB0aGF0IHR1cm5lZCB1cCBzb21lIHJlbGV2YW50IGZpbGVzOiBgYXJjaC9tNjhrL0tjb25maWcuYnVzYCAod2hlcmUgaXQmIzM5O3MgZGVmaW5lZCksIGBkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWdgIChmb3IgYFpPUlJPODM5MGApLCBhbmQgYGRyaXZlcnMvem9ycm8vS2NvbmZpZ2AuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIGBaT1JST2AgaXMgc29tZWhvdyBkZXBlbmRlbnQgb24gYEFNSUdBYCwgd2hpY2ggd291bGQgbWFrZSBzZW5zZSBnaXZlbiB0aGUgYnVzIGFyY2hpdGVjdHVyZSwgYW5kIHRoYXQgYGFyY2gvbTY4ay9LY29uZmlnLmJ1c2AgYXNzb2NpYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMgaW4gdGhlIGBtNjhrYCBhcmNoaXRlY3R1cmUgb3Igb3RoZXIgcGxhY2VzIGluIHRoZSB0cmVlIHRvIGRldGVybWluZSBob3cgYFpPUlJPYCBpdHNlbGYgaXMgZGVmaW5lZCBhbmQgd2hhdCBpdCYjMzk7cyBkZXBlbmRlbnQgb24uIFRoaXMgd2lsbCBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgWk9SUk9cXGImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjU1MQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudCBkb3duOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIFpPUlJPIERlZmF1bHQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gc29tZXRoaW5nIHRoYXQgKm1pZ2h0KiBiZSByZWxhdGVkIHRvIFpPUlJPIGFuZCBhIGRlZmF1bHQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxldmVyYWdlIGBncmVwcGVyYC4gSXQmIzM5O3MgbXkgZ28tdG8gZm9yIHF1aWNrbHkgc2VhcmNoaW5nIGNvZGViYXNlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcywgZXNwZWNpYWxseSB3aGVuIEkmIzM5O20gZGVhbGluZyB3aXRoIHBhdHRlcm5zIG9yIGtleXdvcmRzIEkgc3VzcGVjdCBtaWdodCBiZSB1c2VkLiBJIGZpZ3VyZSwgc2luY2UgSSYjMzk7bSB0cnlpbmcgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgZGVmYXVsdCByZWxhdGVkIHRvIFpPUlJPLCBJIG5lZWQgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBhIHNlYXJjaC4gSSYjMzk7bGwgc2VhcmNoIHdpdGggYGRlZmF1bHQuKlpPUlJPYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZSB2YXJpYXRpb25zIHRoYXQgbWlnaHQgY2F0Y2ggZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9ucyBvciBhYmJyZXZpYXRpb25zIHVzZWQgaW4gdGhlIGNvZGUuIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IGNvbmZpZ3VyYXRpb24gb3IgY29kZSBzZWN0aW9ucyB3aGVyZSBaT1JSTyBpcyBtZW50aW9uZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhIGRlZmF1bHQgc2V0dGluZy4gSXQmIzM5O3MgYSBxdWljayB3YXkgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhlIHN5c3RlbSBkb2VzIHdpdGggWk9SUk8gaWYgc29tZXRoaW5nIGdvZXMgd3Jvbmcgb3IgaXNuJiMzOTt0IHNwZWNpZmllZC4gVGhpcyBmZWVscyBsaWtlIHRoZSByaWdodCBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtaT1JSTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbTY4ay9LY29uZmlnLmJ1cz0xNT1jb25maWcgTlVCVVNcbi0tXG5hcmNoL202OGsvS2NvbmZpZy5idXMtMTktXG5hcmNoL202OGsvS2NvbmZpZy5idXM6MjA6Y29uZmlnIFpPUlJPXG5hcmNoL202OGsvS2NvbmZpZy5idXMtMjEtXHRib29sIFwmIzM0O0FtaWdhIFpvcnJvIChBdXRvQ29uZmlnKSBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYz0xNDE9aW50IF9faW5pdCBhbWlnYV9wYXJzZV9ib290aW5mbyhjb25zdCBzdHJ1Y3QgYmlfcmVjb3JkICpyZWNvcmQpXG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTE3MS1cdGNhc2UgQklfQU1JR0FfQVVUT0NPTjpcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoxNzI6I2lmZGVmIENPTkZJR19aT1JST1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjE3MzpcdFx0aWYgKHpvcnJvX251bV9hdXRvY29uIFx1MDAzYyBaT1JST19OVU1fQVVUTykge1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTE3NC1cdFx0XHRjb25zdCBzdHJ1Y3QgQ29uZmlnRGV2ICpjZCA9IGRhdGE7XG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTE4Mi1cdFx0XHQvKiBDUy1MQUIgV2FycCAxMjYwIHdvcmthcm91bmQgKi9cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoxODM6XHRcdFx0aWYgKGJlMTZfdG9fY3B1KGRldi1cdTAwM2Vyb20uZXJfTWFudWZhY3R1cmVyKSA9PSBaT1JST19NQU5VRihaT1JST19QUk9EX0NTTEFCX1dBUlBfMTI2MCkgXHUwMDI2XHUwMDI2XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6MTg0Olx0XHRcdCAgICBkZXYtXHUwMDNlcm9tLmVyX1Byb2R1Y3QgPT0gWk9SUk9fUFJPRChaT1JST19QUk9EX0NTTEFCX1dBUlBfMTI2MCkpIHtcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0xODUtXG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTE5MS1cdFx0XHRwcl93YXJuKFwmIzM0O2FtaWdhX3BhcnNlX2Jvb3RpbmZvOiB0b28gbWFueSBBdXRvQ29uZmlnIGRldmljZXNcXG5cJiMzNDspO1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjE5MjojZW5kaWYgLyogQ09ORklHX1pPUlJPICovXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMTkzLVx0XHRicmVhaztcbi0tXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM9MjA5PXN0YXRpYyB2b2lkIF9faW5pdCBhbWlnYV9pZGVudGlmeSh2b2lkKVxuLS1cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0yNDctXHRcdEFNSUdBSFdfU0VUKEEzMDAwX0NMSyk7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6MjQ4Olx0XHRBTUlHQUhXX1NFVChaT1JSTzMpO1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTI0OS1cdFx0YnJlYWs7XG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTI1Ni1cdFx0QU1JR0FIV19TRVQoQTMwMDBfQ0xLKTtcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoyNTc6XHRcdEFNSUdBSFdfU0VUKFpPUlJPMyk7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMjU4LVx0XHRicmVhaztcbi0tXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMzI0LVx0fVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjMyNTpcdEFNSUdBSFdfU0VUKFpPUlJPKTtcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0zMjYtXG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTM1OS1cdEFNSUdBSFdfQU5OT1VOQ0UoUENNQ0lBLCBcJiMzNDtQQ01DSUEgXCYjMzQ7KTtcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzozNjA6XHRpZiAoQU1JR0FIV19QUkVTRU5UKFpPUlJPKSlcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzozNjE6XHRcdHByX2NvbnQoXCYjMzQ7Wk9SUk8lcyBcJiMzNDssIEFNSUdBSFdfUFJFU0VOVChaT1JSTzMpID8gXCYjMzQ7M1wmIzM0OyA6IFwmIzM0O1wmIzM0Oyk7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMzYyLVx0cHJfY29udChcJiMzNDtcXG5cJiMzNDspO1xuLS1cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYz0zNzk9dm9pZCBfX2luaXQgY29uZmlnX2FtaWdhKHZvaWQpXG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTQxMy1cdC8qIGRvbiYjMzk7dCB1c2UgWjIgUkFNIGFzIHN5c3RlbSBtZW1vcnkgb24gWjMgY2FwYWJsZSBtYWNoaW5lcyAqL1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjQxNDpcdGlmIChBTUlHQUhXX1BSRVNFTlQoWk9SUk8zKSkge1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTQxNS1cdFx0aW50IGksIGo7XG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jPTc4MD1zdGF0aWMgdm9pZCBhbWlnYV9nZXRfaGFyZHdhcmVfbGlzdChzdHJ1Y3Qgc2VxX2ZpbGUgKm0pXG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTgzOC1cdEFNSUdBSFdfQU5OT1VOQ0UoUENNQ0lBLCBcJiMzNDtQQ01DSUEgU2xvdFwmIzM0Oyk7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6ODM5OiNpZmRlZiBDT05GSUdfWk9SUk9cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzo4NDA6XHRpZiAoQU1JR0FIV19QUkVTRU5UKFpPUlJPKSlcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy04NDEtXHRcdHNlcV9wcmludGYobSwgXCYjMzQ7XFx0Wm9ycm8gSUklcyBBdXRvQ29uZmlnOiAlZCBFeHBhbnNpb24gXCYjMzQ7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtODQyLVx0XHRcdFx0XCYjMzQ7RGV2aWNlJXNcXG5cJiMzNDssXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6ODQzOlx0XHRcdFx0QU1JR0FIV19QUkVTRU5UKFpPUlJPMykgPyBcJiMzNDtJXCYjMzQ7IDogXCYjMzQ7XCYjMzQ7LFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTg0NC1cdFx0XHRcdHpvcnJvX251bV9hdXRvY29uLCBzdHJfcGx1cmFsKHpvcnJvX251bV9hdXRvY29uKSk7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6ODQ1OiNlbmRpZiAvKiBDT05GSUdfWk9SUk8gKi9cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy04NDYtXG4tLVxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtMTgtXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYzoxOTojaWZkZWYgQ09ORklHX1pPUlJPXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy0yMC1cbi0tXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYz00OT1zdGF0aWMgaW50IF9faW5pdCBhbWlnYV9pbml0X2J1cyh2b2lkKVxuLS1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTUzLVxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6NTQ6XHRpZiAoIU1BQ0hfSVNfQU1JR0EgfHwgIUFNSUdBSFdfUFJFU0VOVChaT1JSTykpXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy01NS1cdFx0cmV0dXJuIC1FTk9ERVY7XG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy01Ni1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jOjU3Olx0biA9IEFNSUdBSFdfUFJFU0VOVChaT1JSTzMpID8gNCA6IDI7XG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy01OC1cdHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKFwmIzM0O2FtaWdhLXpvcnJvXCYjMzQ7LCAtMSxcbi0tXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYz02Nj1zdGF0aWMgaW50IF9faW5pdCB6X2Rldl9wcmVzZW50KHpvcnJvX2lkIGlkKVxuLS1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTcxLVx0XHRjb25zdCBzdHJ1Y3QgRXhwYW5zaW9uUm9tICpyb20gPSBcdTAwMjZ6b3Jyb19hdXRvY29uX2luaXRbaV0ucm9tO1xuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6NzI6XHRcdGlmIChiZTE2X3RvX2NwdShyb20tXHUwMDNlZXJfTWFudWZhY3R1cmVyKSA9PSBaT1JST19NQU5VRihpZCkgXHUwMDI2XHUwMDI2XG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYzo3MzpcdFx0ICAgIHJvbS1cdTAwM2Vlcl9Qcm9kdWN0ID09IFpPUlJPX1BST0QoaWQpKVxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtNzQtXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtNzktXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYzo4MDojZWxzZSAvKiAhQ09ORklHX1pPUlJPICovXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy04MS1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jPTgyPXN0YXRpYyBpbmxpbmUgaW50IHpfZGV2X3ByZXNlbnQoem9ycm9faWQgaWQpIHsgcmV0dXJuIDA7IH1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTgzLVxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6ODQ6I2VuZGlmIC8qICFDT05GSUdfWk9SUk8gKi9cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTg1LVxuLS1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jPTEzND1zdGF0aWMgaW50IF9faW5pdCBhbWlnYV9pbml0X2RldmljZXModm9pZClcbi0tXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy0xODMtXHRpZiAoQU1JR0FIV19QUkVTRU5UKEExMjAwX0lERSkgfHxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jOjE4NDpcdCAgICB6X2Rldl9wcmVzZW50KFpPUlJPX1BST0RfTVRFQ19WSVBFUl9NS19WX0VfTUFUUklYXzUzMF9TQ1NJX0lERSkpIHtcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTE4NS1cdFx0cGRldiA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoXCYjMzQ7YW1pZ2EtZ2F5bGUtaWRlXCYjMzQ7LCAtMSxcbi0tXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc9MTk9Q09ORklHX0FNSUdBPXlcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzoyMDpDT05GSUdfWk9SUk89eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTIxLUNPTkZJR19BTUlHQV9QQ01DSUE9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjIyOkNPTkZJR19aT1JST19OQU1FUz15XG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctMjMtQ09ORklHX0hFQVJUQkVBVD15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTI4MD1DT05GSUdfU0NTSV9BNDAwMFQ9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjI4MTpDT05GSUdfU0NTSV9aT1JSTzdYWD15XG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6MjgyOkNPTkZJR19TQ1NJX1pPUlJPX0VTUD15XG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctMjgzLUNPTkZJR19BVEE9eVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZz0zMzg9Q09ORklHX0FQTkU9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjMzOTpDT05GSUdfWk9SUk84MzkwPXlcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZy0zNDAtQ09ORklHX1BQUD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTI5PUNPTkZJR19RNDA9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnOjMwOkNPTkZJR19aT1JSTz15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctMzEtQ09ORklHX0FNSUdBX1BDTUNJQT15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9MzI9Q09ORklHX0FUQVJJX1JPTV9JU0E9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnOjMzOkNPTkZJR19aT1JST19OQU1FUz15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctMzQtQ09ORklHX0hFQVJUQkVBVD15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTI5OD1DT05GSUdfU0NTSV9BNDAwMFQ9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnOjI5OTpDT05GSUdfU0NTSV9aT1JSTzdYWD15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6MzAwOkNPTkZJR19TQ1NJX1pPUlJPX0VTUD15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctMzAxLUNPTkZJR19BVEFSSV9TQ1NJPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9MzgzPUNPTkZJR19BUE5FPXlcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzozODQ6Q09ORklHX1pPUlJPODM5MD15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctMzg1LUNPTkZJR19TTUM5MVg9eVxuLS1cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS9hbWlnYWh3Lmg9NDU9c3RydWN0IGFtaWdhX2h3X3ByZXNlbnQge1xuLS1cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS9hbWlnYWh3LmgtODAtICAgIEFNSUdBSFdfREVDTEFSRShQQ01DSUEpO1x0XHQvKiBQQ01DSUEgU2xvdCAqL1xuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaDo4MTogICAgQU1JR0FIV19ERUNMQVJFKFpPUlJPKTtcdFx0LyogWm9ycm8gQXV0b0NvbmZpZyAqL1xuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaDo4MjogICAgQU1JR0FIV19ERUNMQVJFKFpPUlJPMyk7XHRcdC8qIFpvcnJvIElJSSAqL1xuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaC04My19O1xuLS1cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oOjI6I2lmbmRlZiBfQVNNX002OEtfWk9SUk9fSFxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL3pvcnJvLmg6MzojZGVmaW5lIF9BU01fTTY4S19aT1JST19IXG5hcmNoL202OGsvaW5jbHVkZS9hc20vem9ycm8uaC00LVxuLS1cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oPTM3PXN0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICp6X3JlbWFwX2Z1bGxjYWNoZSh1bnNpZ25lZCBsb25nIHBoeXNhZGRyLFxuLS1cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oLTQ2LVxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL3pvcnJvLmg6NDc6I2VuZGlmIC8qIF9BU01fTTY4S19aT1JST19IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTM2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgdGhlIFpvcnJvIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYGRyaXZlcnMvem9ycm8vS2NvbmZpZ2AgZmlsZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBab3JybyBidXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMga2VybmVsIGJ1aWxkLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB0aGUgdmFyaW91cyBab3Jyby1yZWxhdGVkIGZlYXR1cmVzIGFyZSBjb250cm9sbGVkLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb2YgdGhpcyBtb2R1bGUsIGFuZCBob3cgdmFyaW91cyBvcHRpb25zIGVmZmVjdCB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqRmVhdHVyZSBGbGFnczoqKiBBcmUgdGhlcmUgc3BlY2lmaWMgc3ltYm9scyBkZWZpbmVkIGZvciBkaWZmZXJlbnQgWm9ycm8gaGFyZHdhcmUgcmV2aXNpb25zIG9yIGRldmljZSB0eXBlcz8gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIGlzIGVzc2VudGlhbCBmb3IgZGVhbGluZyB3aXRoIHJ1bnRpbWUgYmVoYXZpb3Igb2YgZHJpdmVycy4KKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgZHJpdmVycyBkb2VzIHRoaXMgWm9ycm8gZHJpdmVyIHJlbHkgb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBvciBib2FyZCBjb25maWd1cmF0aW9ucyB0aGF0IGl0JiMzOTtzIGRlc2lnbmVkIGZvcj8gVGhpcyBpcyBrZXkgZm9yIHVuZGVyc3RhbmRpbmcgcG9ydGFiaWxpdHkgYW5kIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBpc3N1ZXMuCiogICAqKkRlZmF1bHQgQmVoYXZpb3I6KiogV2hhdCYjMzk7cyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uPyBBcmUgdGhlIFpvcnJvIGJ1cyBmdW5jdGlvbnMgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBhcmUgdGhleSBvZmYgYnkgZGVmYXVsdD8gVW5kZXJzdGFuZGluZyBkZWZhdWx0cyBpcyBrZXkgdG8gZGVidWdnaW5nIGFuZCBidWlsZGluZyBuZXcgc3lzdGVtcy4KKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBBcmUgdGhlcmUgZ29vZCBjb21tZW50cz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIGZvciBtZSB0byBleHBsb3JlIGluIGdyZWF0ZXIgZGV0YWlsPwoKQnkgZXhhbWluaW5nIHRoaXMgS2NvbmZpZyBmaWxlIGZpcnN0LCBJJiMzOTtsbCBnZXQgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gb2YgdGhlIFpvcnJvIGRyaXZlciBjb2RlIGFuZCBpdHMgaW50ZWdyYXRpb24gaW50byB0aGUgd2lkZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvem9ycm8vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFpvcnJvIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0Y29uZmlnIFpPUlJPX05BTUVTXG4gICA2Olx0XHRib29sIFwmIzM0O1pvcnJvIGRldmljZSBuYW1lIGRhdGFiYXNlXCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIFpPUlJPXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIEJ5IGRlZmF1bHQsIHRoZSBrZXJuZWwgY29udGFpbnMgYSBkYXRhYmFzZSBvZiBhbGwga25vd24gWm9ycm8gZGV2aWNlXG4gIDEwOlx0XHQgIG5hbWVzIHRvIG1ha2UgdGhlIGluZm9ybWF0aW9uIGluIC9wcm9jL2lvbWVtIGNvbXByZWhlbnNpYmxlIHRvIHRoZVxuICAxMTpcdFx0ICB1c2VyLiBUaGlzIGRhdGFiYXNlIGluY3JlYXNlcyB0aGUgc2l6ZSBvZiB0aGUga2VybmVsIGltYWdlIGJ5IGFib3V0XG4gIDEyOlx0XHQgIDE1S0IsIGJ1dCBpdCBnZXRzIGZyZWVkIGFmdGVyIHRoZSBzeXN0ZW0gYm9vdHMgdXAsIHNvIGl0IGRvZXNuJiMzOTt0XG4gIDEzOlx0XHQgIHRha2UgdXAga2VybmVsIG1lbW9yeS4gQW55d2F5LCBpZiB5b3UgYXJlIGJ1aWxkaW5nIGFuIGluc3RhbGxhdGlvblxuICAxNDpcdFx0ICBmbG9wcHkgb3Iga2VybmVsIGZvciBhbiBlbWJlZGRlZCBzeXN0ZW0gd2hlcmUga2VybmVsIGltYWdlIHNpemVcbiAgMTU6XHRcdCAgcmVhbGx5IG1hdHRlcnMsIHlvdSBjYW4gZGlzYWJsZSB0aGlzIGZlYXR1cmUgYW5kIHlvdSYjMzk7bGwgZ2V0IGRldmljZVxuICAxNjpcdFx0ICBJRCBudW1iZXJzIGluc3RlYWQgb2YgbmFtZXMuXG4gIDE3Olx0XG4gIDE4Olx0XHQgIFdoZW4gaW4gZG91YnQsIHNheSBZLlxuICAxOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDc4MwoJCQkJCQkJb3V0cHV0OiAyMzkKCQkJCQkJCXRob3VnaHRzOiA2MzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgbTY4ay1TcGVjaWZpYyBab3JybyBEcml2ZXJzIG9uIGFtZDY0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIFpvcnJvIHN1cHBvcnQgZXh0ZW5kcyBiZXlvbmQgdGhlIG02OGsgYXJjaGl0ZWN0dXJlLCBiZWNhdXNlIGlmIGl0IGRpZCwgdGhlc2UgZHJpdmVycyAqbWlnaHQqIGJlIHJlbGV2YW50IGZvciBmdXp6aW5nIG9uIGFtZDY0LiBBIHF1aWNrIHNjYW4gb2YgdGhlIGBLY29uZmlnLmJ1c2AgZmlsZSBpbiB0aGUgbTY4ayBhcmNoaXRlY3R1cmUgY29uZmlybXMgdGhhdCBgQ09ORklHX1pPUlJPYCBpcyAqb25seSogZGVmaW5lZCB0aGVyZSwgYW5kIGl0JiMzOTtzIGNvbnRpbmdlbnQgb24gdGhlIGBBTUlHQWAgY29uZmlnIG9wdGlvbiwgd2hpY2gsIGFzIHdlIGtub3csIGlzIG02OGstc3BlY2lmaWMuCgpHaXZlbiB0aGF0IHRoZSB0YXJnZXQgaXMgYW1kNjQgKHg4Nl82NCksIGBDT05GSUdfWk9SUk9gICpjYW5ub3QqIGJlIGVuYWJsZWQuIFRoZXJlZm9yZSwgYWxsIHRoZSBkcml2ZXIgbW9kaWZpY2F0aW9ucyBpbiB0aGlzIHBhdGNoIGFyZSwgaW4gZXNzZW5jZSwgZGVhZCBjb2RlIGZyb20gdGhlIGFtZDY0IHBlcnNwZWN0aXZlLiBUaGlzIGluY2x1ZGVzIHRoZSBjaGFuZ2VzIGluIGBoeWRyYS5jYCwgYHpvcnJvODM5MC5jYCwgYGEyMDY1LmNgLCBgYXJpYWRuZS5jYCwgYGEyMDkxLmNgLCBgZ3ZwMTEuY2AsIGB6b3Jybzd4eC5jYCwgYW5kIGB6b3Jyb19lc3AuY2AuIFRoZXkgYWxsIGRlcGVuZCBvbiBgQ09ORklHX1pPUlJPYC4KClRoZXNlIGRyaXZlcnMgYXJlIFpvcnJvIGJ1cyBleHBhbnNpb24gY2FyZHMgZm9yIHRoZSBBbWlnYSwgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVycywgbm90aGluZyBtb3JlLiBUaGUgcGF0Y2gmIzM5O3MgY29udHJpYnV0aW9uIGxpZXMgaW4gYSBzaW1wbGUgcmVmYWN0b3JpbmcsIGVtcGxveWluZyB0aGUgYG1vZHVsZV9kcml2ZXIoKWAgbWFjcm8gZm9yIGluaXRpYWxpemF0aW9uIGFuZCBjbGVhbnVwIChgem9ycm9fcmVnaXN0ZXJfZHJpdmVyYCwgYHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyYCkgLSBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCgpNeSBhbmFseXNpcyBhbGlnbnMgcGVyZmVjdGx5IHdpdGggdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gVGhlIGNvZGUgaXMgKmFyY2hpdGVjdHVyYWxseSB1bnJlYWNoYWJsZSogb24gYW1kNjQsIGFuZCBpdCBpcyBhbHNvICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUqIG9uIGFueSBvdGhlciBhcmNoaXRlY3R1cmUuIFRoZXNlIGRyaXZlcnMgYXJlIG5vdCByZWxldmFudC4gVGhpcyBtZWFucyB0aGUgZnV6emluZyBmbGFnIGlzIHNldCB0byBmYWxzZS4KCkkgbmVlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2Agbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoZWQgZmlsZXMgKGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmMsIGRyaXZlcnMvc2NzaS9hMjA5MS5jLCBkcml2ZXJzL3Njc2kvZ3ZwMTEuYywgZHJpdmVycy9zY3NpL3pvcnJvN3h4LmMsIGFuZCBkcml2ZXJzL3Njc2kvem9ycm9fZXNwLmMpIGFyZSBhbGwgZHJpdmVycyBmb3IgQW1pZ2EgWm9ycm8gYnVzIGRldmljZXMgdGhhdCBkZXBlbmQgb24gQ09ORklHX1pPUlJPLiBDT05GSUdfWk9SUk8gaXMgb25seSBkZWZpbmVkIGZvciB0aGUgbTY4ayBhcmNoaXRlY3R1cmUgKHVuZGVyIGFyY2gvbTY4ay9LY29uZmlnLmJ1cykgYW5kIGlzIG5vdCBhdmFpbGFibGUgb3IgY29tcGlsYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgb25seSBjb252ZXJ0IHN0YW5kYXJkIG1vZHVsZSBpbml0L2V4aXQgYm9pbGVycGxhdGUgdG8gdXNlIHRoZSBtb2R1bGVfZHJpdmVyKCkgbWFjcm8uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaGVkIGZpbGVzIChkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jLCBkcml2ZXJzL3Njc2kvYTIwOTEuYywgZHJpdmVycy9zY3NpL2d2cDExLmMsIGRyaXZlcnMvc2NzaS96b3Jybzd4eC5jLCBhbmQgZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jKSBhcmUgYWxsIGRyaXZlcnMgZm9yIEFtaWdhIFpvcnJvIGJ1cyBkZXZpY2VzIHRoYXQgZGVwZW5kIG9uIENPTkZJR19aT1JSTy4gQ09ORklHX1pPUlJPIGlzIG9ubHkgZGVmaW5lZCBmb3IgdGhlIG02OGsgYXJjaGl0ZWN0dXJlICh1bmRlciBhcmNoL202OGsvS2NvbmZpZy5idXMpIGFuZCBpcyBub3QgYXZhaWxhYmxlIG9yIGNvbXBpbGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIG9ubHkgY29udmVydCBzdGFuZGFyZCBtb2R1bGUgaW5pdC9leGl0IGJvaWxlcnBsYXRlIHRvIHVzZSB0aGUgbW9kdWxlX2RyaXZlcigpIG1hY3JvLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjExOjU2LjQ0MDQ2NTk2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTE0ODMwMjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2hlZCBmaWxlcyAoZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9oeWRyYS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuYywgZHJpdmVycy9zY3NpL2EyMDkxLmMsIGRyaXZlcnMvc2NzaS9ndnAxMS5jLCBkcml2ZXJzL3Njc2kvem9ycm83eHguYywgYW5kIGRyaXZlcnMvc2NzaS96b3Jyb19lc3AuYykgYXJlIGFsbCBkcml2ZXJzIGZvciBBbWlnYSBab3JybyBidXMgZGV2aWNlcyB0aGF0IGRlcGVuZCBvbiBDT05GSUdfWk9SUk8uIENPTkZJR19aT1JSTyBpcyBvbmx5IGRlZmluZWQgZm9yIHRoZSBtNjhrIGFyY2hpdGVjdHVyZSAodW5kZXIgYXJjaC9tNjhrL0tjb25maWcuYnVzKSBhbmQgaXMgbm90IGF2YWlsYWJsZSBvciBjb21waWxhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBvbmx5IGNvbnZlcnQgc3RhbmRhcmQgbW9kdWxlIGluaXQvZXhpdCBib2lsZXJwbGF0ZSB0byB1c2UgdGhlIG1vZHVsZV9kcml2ZXIoKSBtYWNyby5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjExOjU2LjQ0MDQ3MDQwNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4OTc3Mzc4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg0YzhiNTlhMDE2MzJmYmE0NzdjMDFjYWFjNDE5MmUyMjBjYjEzNTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBTZXAgNiAyMDoxMTo1NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmNcXG5pbmRleCA5YTU5OTE1NDM2ZDI5Li4yZWRmOTdlNTAwZGZiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuY1xcbkBAIC0yNTcsMTggKzI1Nyw3IEBAIHN0YXRpYyB2b2lkIGh5ZHJhX3JlbW92ZV9vbmUoc3RydWN0IHpvcnJvX2RldiAqeilcXG4gICAgIGZyZWVfbmV0ZGV2KGRldik7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgX19pbml0IGh5ZHJhX2luaXRfbW9kdWxlKHZvaWQpXFxuLXtcXG4tICAgIHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmh5ZHJhX2RyaXZlcik7XFxuLX1cXG4tXFxuLXN0YXRpYyB2b2lkIF9fZXhpdCBoeWRyYV9jbGVhbnVwX21vZHVsZSh2b2lkKVxcbi17XFxuLSAgICB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2aHlkcmFfZHJpdmVyKTtcXG4tfVxcbi1cXG4tbW9kdWxlX2luaXQoaHlkcmFfaW5pdF9tb2R1bGUpO1xcbi1tb2R1bGVfZXhpdChoeWRyYV9jbGVhbnVwX21vZHVsZSk7XFxuK21vZHVsZV9kcml2ZXIoaHlkcmFfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcXG4gXFxuIE1PRFVMRV9ERVNDUklQVElPTihcXFwiWm9ycm8tSUkgSHlkcmEgODM5MCBldGhlcm5ldCBkcml2ZXJcXFwiKTtcXG4gTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuY1xcbmluZGV4IGNiMWQ1ZWQyMDg3NDMuLjBmNjZmMjhlNTBiNGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmNcXG5AQCAtNDMwLDE4ICs0MzAsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3JybzgzOTBfZHJpdmVyID0ge1xcbiBcXHQucmVtb3ZlXFx0XFx0PSB6b3JybzgzOTBfcmVtb3ZlX29uZSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBpbnQgX19pbml0IHpvcnJvODM5MF9pbml0X21vZHVsZSh2b2lkKVxcbi17XFxuLVxcdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnpvcnJvODM5MF9kcml2ZXIpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm84MzkwX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuLXtcXG4tXFx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnpvcnJvODM5MF9kcml2ZXIpO1xcbi19XFxuLVxcbi1tb2R1bGVfaW5pdCh6b3JybzgzOTBfaW5pdF9tb2R1bGUpO1xcbi1tb2R1bGVfZXhpdCh6b3JybzgzOTBfY2xlYW51cF9tb2R1bGUpO1xcbittb2R1bGVfZHJpdmVyKHpvcnJvODM5MF9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xcbiBcXG4gTU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJab3JybyBOUzgzOTAtYmFzZWQgZXRoZXJuZXQgZHJpdmVyXFxcIik7XFxuIE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuY1xcbmluZGV4IDY3MmM0OTk2YjMwZTkuLjkzZjIyNjFmNGJmZTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuY1xcbkBAIC03NjgsMTggKzc2OCw3IEBAIHN0YXRpYyB2b2lkIGEyMDY1X3JlbW92ZV9vbmUoc3RydWN0IHpvcnJvX2RldiAqeilcXG4gXFx0ZnJlZV9uZXRkZXYoZGV2KTtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBfX2luaXQgYTIwNjVfaW5pdF9tb2R1bGUodm9pZClcXG4te1xcbi1cXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZhMjA2NV9kcml2ZXIpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBfX2V4aXQgYTIwNjVfY2xlYW51cF9tb2R1bGUodm9pZClcXG4te1xcbi1cXHR6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2YTIwNjVfZHJpdmVyKTtcXG4tfVxcbi1cXG4tbW9kdWxlX2luaXQoYTIwNjVfaW5pdF9tb2R1bGUpO1xcbi1tb2R1bGVfZXhpdChhMjA2NV9jbGVhbnVwX21vZHVsZSk7XFxuK21vZHVsZV9kcml2ZXIoYTIwNjVfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcXG4gXFxuIE1PRFVMRV9ERVNDUklQVElPTihcXFwiQ29tbW9kb3JlIEEyMDY1IEV0aGVybmV0IGRyaXZlclxcXCIpO1xcbiBNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jXFxuaW5kZXggZWM2ZTdlOGMxNGZlYS4uNjYyZWJhOWU4ZmZkMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuY1xcbkBAIC03NzcsMTggKzc3Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIGFyaWFkbmVfZHJpdmVyID0ge1xcbiBcXHQucmVtb3ZlXFx0XFx0PSBhcmlhZG5lX3JlbW92ZV9vbmUsXFxuIH07XFxuIFxcbi1zdGF0aWMgaW50IF9faW5pdCBhcmlhZG5lX2luaXRfbW9kdWxlKHZvaWQpXFxuLXtcXG4tXFx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2YXJpYWRuZV9kcml2ZXIpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBfX2V4aXQgYXJpYWRuZV9jbGVhbnVwX21vZHVsZSh2b2lkKVxcbi17XFxuLVxcdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZhcmlhZG5lX2RyaXZlcik7XFxuLX1cXG4tXFxuLW1vZHVsZV9pbml0KGFyaWFkbmVfaW5pdF9tb2R1bGUpO1xcbi1tb2R1bGVfZXhpdChhcmlhZG5lX2NsZWFudXBfbW9kdWxlKTtcXG4rbW9kdWxlX2RyaXZlcihhcmlhZG5lX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XFxuIFxcbiBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkFyaWFkbmUgRXRoZXJuZXQgRHJpdmVyXFxcIik7XFxuIE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2EyMDkxLmMgYi9kcml2ZXJzL3Njc2kvYTIwOTEuY1xcbmluZGV4IGY4MWU1M2I1M2UyMDMuLjQyMTMzMGE3YjZhN2EgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zY3NpL2EyMDkxLmNcXG4rKysgYi9kcml2ZXJzL3Njc2kvYTIwOTEuY1xcbkBAIC0yODgsMTcgKzI4OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIGEyMDkxX2RyaXZlciA9IHtcXG4gXFx0LnJlbW92ZVxcdFxcdD0gYTIwOTFfcmVtb3ZlLFxcbiB9O1xcbiBcXG4tc3RhdGljIGludCBfX2luaXQgYTIwOTFfaW5pdCh2b2lkKVxcbi17XFxuLVxcdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmEyMDkxX2RyaXZlcik7XFxuLX1cXG4tbW9kdWxlX2luaXQoYTIwOTFfaW5pdCk7XFxuLVxcbi1zdGF0aWMgdm9pZCBfX2V4aXQgYTIwOTFfZXhpdCh2b2lkKVxcbi17XFxuLVxcdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZhMjA5MV9kcml2ZXIpO1xcbi19XFxuLW1vZHVsZV9leGl0KGEyMDkxX2V4aXQpO1xcbittb2R1bGVfZHJpdmVyKGEyMDkxX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XFxuIFxcbiBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkNvbW1vZG9yZSBBMjA5MS9BNTkwIFNDU0lcXFwiKTtcXG4gTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZ3ZwMTEuYyBiL2RyaXZlcnMvc2NzaS9ndnAxMS5jXFxuaW5kZXggNzliZDY0ZTEyYWRjMi4uZWJhODY4YWMzNTVkOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3Njc2kvZ3ZwMTEuY1xcbisrKyBiL2RyaXZlcnMvc2NzaS9ndnAxMS5jXFxuQEAgLTQ2MSwxNyArNDYxLDcgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgZ3ZwMTFfZHJpdmVyID0ge1xcbiBcXHQucmVtb3ZlXFx0XFx0PSBndnAxMV9yZW1vdmUsXFxuIH07XFxuIFxcbi1zdGF0aWMgaW50IF9faW5pdCBndnAxMV9pbml0KHZvaWQpXFxuLXtcXG4tXFx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2Z3ZwMTFfZHJpdmVyKTtcXG4tfVxcbi1tb2R1bGVfaW5pdChndnAxMV9pbml0KTtcXG4tXFxuLXN0YXRpYyB2b2lkIF9fZXhpdCBndnAxMV9leGl0KHZvaWQpXFxuLXtcXG4tXFx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmd2cDExX2RyaXZlcik7XFxuLX1cXG4tbW9kdWxlX2V4aXQoZ3ZwMTFfZXhpdCk7XFxuK21vZHVsZV9kcml2ZXIoZ3ZwMTFfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcXG4gXFxuIE1PRFVMRV9ERVNDUklQVElPTihcXFwiR1ZQIFNlcmllcyBJSSBTQ1NJXFxcIik7XFxuIE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3pvcnJvN3h4LmMgYi9kcml2ZXJzL3Njc2kvem9ycm83eHguY1xcbmluZGV4IDIxYzc2OWRjMWVjYmQuLjgwZTE1NmIwNGI5OTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvN3h4LmNcXG4rKysgYi9kcml2ZXJzL3Njc2kvem9ycm83eHguY1xcbkBAIC0xNzMsMTUgKzE3Myw0IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIHpvcnJvN3h4X2RyaXZlciA9IHtcXG4gXFx0LnJlbW92ZVxcdCAgPSB6b3Jybzd4eF9yZW1vdmVfb25lLFxcbiB9O1xcbiBcXG4tc3RhdGljIGludCBfX2luaXQgem9ycm83eHhfc2NzaV9pbml0KHZvaWQpXFxuLXtcXG4tXFx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2em9ycm83eHhfZHJpdmVyKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgX19leGl0IHpvcnJvN3h4X3Njc2lfZXhpdCh2b2lkKVxcbi17XFxuLVxcdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZ6b3Jybzd4eF9kcml2ZXIpO1xcbi19XFxuLVxcbi1tb2R1bGVfaW5pdCh6b3Jybzd4eF9zY3NpX2luaXQpO1xcbi1tb2R1bGVfZXhpdCh6b3Jybzd4eF9zY3NpX2V4aXQpO1xcbittb2R1bGVfZHJpdmVyKHpvcnJvN3h4X2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS96b3Jyb19lc3AuYyBiL2RyaXZlcnMvc2NzaS96b3Jyb19lc3AuY1xcbmluZGV4IDE3OGQ0NjE0MDY3NDQuLjEyMWJjYmJjZTUyZDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXFxuKysrIGIvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXFxuQEAgLTk0NiwxNSArOTQ2LDQgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgem9ycm9fZXNwX2RyaXZlciA9IHtcXG4gXFx0LnJlbW92ZVxcdCAgPSB6b3Jyb19lc3BfcmVtb3ZlLFxcbiB9O1xcbiBcXG4tc3RhdGljIGludCBfX2luaXQgem9ycm9fZXNwX3Njc2lfaW5pdCh2b2lkKVxcbi17XFxuLVxcdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnpvcnJvX2VzcF9kcml2ZXIpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm9fZXNwX3Njc2lfZXhpdCh2b2lkKVxcbi17XFxuLVxcdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZ6b3Jyb19lc3BfZHJpdmVyKTtcXG4tfVxcbi1cXG4tbW9kdWxlX2luaXQoem9ycm9fZXNwX3Njc2lfaW5pdCk7XFxuLW1vZHVsZV9leGl0KHpvcnJvX2VzcF9zY3NpX2V4aXQpO1xcbittb2R1bGVfZHJpdmVyKHpvcnJvX2VzcF9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMTo1Ny44MzA4NTUzMzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ0MTI0NDI4OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaGVkIGZpbGVzIChkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jLCBkcml2ZXJzL3Njc2kvYTIwOTEuYywgZHJpdmVycy9zY3NpL2d2cDExLmMsIGRyaXZlcnMvc2NzaS96b3Jybzd4eC5jLCBhbmQgZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jKSBhcmUgYWxsIGRyaXZlcnMgZm9yIEFtaWdhIFpvcnJvIGJ1cyBkZXZpY2VzIHRoYXQgZGVwZW5kIG9uIENPTkZJR19aT1JSTy4gQ09ORklHX1pPUlJPIGlzIG9ubHkgZGVmaW5lZCBmb3IgdGhlIG02OGsgYXJjaGl0ZWN0dXJlICh1bmRlciBhcmNoL202OGsvS2NvbmZpZy5idXMpIGFuZCBpcyBub3QgYXZhaWxhYmxlIG9yIGNvbXBpbGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIG9ubHkgY29udmVydCBzdGFuZGFyZCBtb2R1bGUgaW5pdC9leGl0IGJvaWxlcnBsYXRlIHRvIHVzZSB0aGUgbW9kdWxlX2RyaXZlcigpIG1hY3JvLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NGM4YjU5YTAxNjMyZmJhNDc3YzAxY2FhYzQxOTJlMjIwY2IxMzUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAyMDoxMTo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuY1xuaW5kZXggOWE1OTkxNTQzNmQyOS4uMmVkZjk3ZTUwMGRmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9oeWRyYS5jXG5AQCAtMjU3LDE4ICsyNTcsNyBAQCBzdGF0aWMgdm9pZCBoeWRyYV9yZW1vdmVfb25lKHN0cnVjdCB6b3Jyb19kZXYgKnopXG4gICAgIGZyZWVfbmV0ZGV2KGRldik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgX19pbml0IGh5ZHJhX2luaXRfbW9kdWxlKHZvaWQpXG4te1xuLSAgICByZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmh5ZHJhX2RyaXZlcik7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIF9fZXhpdCBoeWRyYV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLXtcbi0gICAgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aHlkcmFfZHJpdmVyKTtcbi19XG4tXG4tbW9kdWxlX2luaXQoaHlkcmFfaW5pdF9tb2R1bGUpO1xuLW1vZHVsZV9leGl0KGh5ZHJhX2NsZWFudXBfbW9kdWxlKTtcbittb2R1bGVfZHJpdmVyKGh5ZHJhX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG4gXG4gTU9EVUxFX0RFU0NSSVBUSU9OKFwiWm9ycm8tSUkgSHlkcmEgODM5MCBldGhlcm5ldCBkcml2ZXJcIik7XG4gTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmNcbmluZGV4IGNiMWQ1ZWQyMDg3NDMuLjBmNjZmMjhlNTBiNGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jXG5AQCAtNDMwLDE4ICs0MzAsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3JybzgzOTBfZHJpdmVyID0ge1xuIFx0LnJlbW92ZVx0XHQ9IHpvcnJvODM5MF9yZW1vdmVfb25lLFxuIH07XG4gXG4tc3RhdGljIGludCBfX2luaXQgem9ycm84MzkwX2luaXRfbW9kdWxlKHZvaWQpXG4te1xuLVx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ6b3JybzgzOTBfZHJpdmVyKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IHpvcnJvODM5MF9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLXtcbi1cdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnpvcnJvODM5MF9kcml2ZXIpO1xuLX1cbi1cbi1tb2R1bGVfaW5pdCh6b3JybzgzOTBfaW5pdF9tb2R1bGUpO1xuLW1vZHVsZV9leGl0KHpvcnJvODM5MF9jbGVhbnVwX21vZHVsZSk7XG4rbW9kdWxlX2RyaXZlcih6b3JybzgzOTBfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcbiBcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCJab3JybyBOUzgzOTAtYmFzZWQgZXRoZXJuZXQgZHJpdmVyXCIpO1xuIE1PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmNcbmluZGV4IDY3MmM0OTk2YjMwZTkuLjkzZjIyNjFmNGJmZTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmNcbkBAIC03NjgsMTggKzc2OCw3IEBAIHN0YXRpYyB2b2lkIGEyMDY1X3JlbW92ZV9vbmUoc3RydWN0IHpvcnJvX2RldiAqeilcbiBcdGZyZWVfbmV0ZGV2KGRldik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgX19pbml0IGEyMDY1X2luaXRfbW9kdWxlKHZvaWQpXG4te1xuLVx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZhMjA2NV9kcml2ZXIpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBfX2V4aXQgYTIwNjVfY2xlYW51cF9tb2R1bGUodm9pZClcbi17XG4tXHR6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZhMjA2NV9kcml2ZXIpO1xuLX1cbi1cbi1tb2R1bGVfaW5pdChhMjA2NV9pbml0X21vZHVsZSk7XG4tbW9kdWxlX2V4aXQoYTIwNjVfY2xlYW51cF9tb2R1bGUpO1xuK21vZHVsZV9kcml2ZXIoYTIwNjVfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcbiBcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCJDb21tb2RvcmUgQTIwNjUgRXRoZXJuZXQgZHJpdmVyXCIpO1xuIE1PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jXG5pbmRleCBlYzZlN2U4YzE0ZmVhLi42NjJlYmE5ZThmZmQwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuY1xuQEAgLTc3NywxOCArNzc3LDcgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgYXJpYWRuZV9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHRcdD0gYXJpYWRuZV9yZW1vdmVfb25lLFxuIH07XG4gXG4tc3RhdGljIGludCBfX2luaXQgYXJpYWRuZV9pbml0X21vZHVsZSh2b2lkKVxuLXtcbi1cdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YXJpYWRuZV9kcml2ZXIpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBfX2V4aXQgYXJpYWRuZV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLXtcbi1cdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmFyaWFkbmVfZHJpdmVyKTtcbi19XG4tXG4tbW9kdWxlX2luaXQoYXJpYWRuZV9pbml0X21vZHVsZSk7XG4tbW9kdWxlX2V4aXQoYXJpYWRuZV9jbGVhbnVwX21vZHVsZSk7XG4rbW9kdWxlX2RyaXZlcihhcmlhZG5lX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG4gXG4gTU9EVUxFX0RFU0NSSVBUSU9OKFwiQXJpYWRuZSBFdGhlcm5ldCBEcml2ZXJcIik7XG4gTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2EyMDkxLmMgYi9kcml2ZXJzL3Njc2kvYTIwOTEuY1xuaW5kZXggZjgxZTUzYjUzZTIwMy4uNDIxMzMwYTdiNmE3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc2NzaS9hMjA5MS5jXG4rKysgYi9kcml2ZXJzL3Njc2kvYTIwOTEuY1xuQEAgLTI4OCwxNyArMjg4LDcgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgYTIwOTFfZHJpdmVyID0ge1xuIFx0LnJlbW92ZVx0XHQ9IGEyMDkxX3JlbW92ZSxcbiB9O1xuIFxuLXN0YXRpYyBpbnQgX19pbml0IGEyMDkxX2luaXQodm9pZClcbi17XG4tXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmEyMDkxX2RyaXZlcik7XG4tfVxuLW1vZHVsZV9pbml0KGEyMDkxX2luaXQpO1xuLVxuLXN0YXRpYyB2b2lkIF9fZXhpdCBhMjA5MV9leGl0KHZvaWQpXG4te1xuLVx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YTIwOTFfZHJpdmVyKTtcbi19XG4tbW9kdWxlX2V4aXQoYTIwOTFfZXhpdCk7XG4rbW9kdWxlX2RyaXZlcihhMjA5MV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xuIFxuIE1PRFVMRV9ERVNDUklQVElPTihcIkNvbW1vZG9yZSBBMjA5MS9BNTkwIFNDU0lcIik7XG4gTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2d2cDExLmMgYi9kcml2ZXJzL3Njc2kvZ3ZwMTEuY1xuaW5kZXggNzliZDY0ZTEyYWRjMi4uZWJhODY4YWMzNTVkOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc2NzaS9ndnAxMS5jXG4rKysgYi9kcml2ZXJzL3Njc2kvZ3ZwMTEuY1xuQEAgLTQ2MSwxNyArNDYxLDcgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgZ3ZwMTFfZHJpdmVyID0ge1xuIFx0LnJlbW92ZVx0XHQ9IGd2cDExX3JlbW92ZSxcbiB9O1xuIFxuLXN0YXRpYyBpbnQgX19pbml0IGd2cDExX2luaXQodm9pZClcbi17XG4tXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmd2cDExX2RyaXZlcik7XG4tfVxuLW1vZHVsZV9pbml0KGd2cDExX2luaXQpO1xuLVxuLXN0YXRpYyB2b2lkIF9fZXhpdCBndnAxMV9leGl0KHZvaWQpXG4te1xuLVx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2Z3ZwMTFfZHJpdmVyKTtcbi19XG4tbW9kdWxlX2V4aXQoZ3ZwMTFfZXhpdCk7XG4rbW9kdWxlX2RyaXZlcihndnAxMV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xuIFxuIE1PRFVMRV9ERVNDUklQVElPTihcIkdWUCBTZXJpZXMgSUkgU0NTSVwiKTtcbiBNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvem9ycm83eHguYyBiL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jXG5pbmRleCAyMWM3NjlkYzFlY2JkLi44MGUxNTZiMDRiOTk1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvN3h4LmNcbisrKyBiL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jXG5AQCAtMTczLDE1ICsxNzMsNCBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3Jybzd4eF9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHQgID0gem9ycm83eHhfcmVtb3ZlX29uZSxcbiB9O1xuIFxuLXN0YXRpYyBpbnQgX19pbml0IHpvcnJvN3h4X3Njc2lfaW5pdCh2b2lkKVxuLXtcbi1cdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2em9ycm83eHhfZHJpdmVyKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IHpvcnJvN3h4X3Njc2lfZXhpdCh2b2lkKVxuLXtcbi1cdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnpvcnJvN3h4X2RyaXZlcik7XG4tfVxuLVxuLW1vZHVsZV9pbml0KHpvcnJvN3h4X3Njc2lfaW5pdCk7XG4tbW9kdWxlX2V4aXQoem9ycm83eHhfc2NzaV9leGl0KTtcbittb2R1bGVfZHJpdmVyKHpvcnJvN3h4X2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jIGIvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXG5pbmRleCAxNzhkNDYxNDA2NzQ0Li4xMjFiY2JiY2U1MmQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXG4rKysgYi9kcml2ZXJzL3Njc2kvem9ycm9fZXNwLmNcbkBAIC05NDYsMTUgKzk0Niw0IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIHpvcnJvX2VzcF9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHQgID0gem9ycm9fZXNwX3JlbW92ZSxcbiB9O1xuIFxuLXN0YXRpYyBpbnQgX19pbml0IHpvcnJvX2VzcF9zY3NpX2luaXQodm9pZClcbi17XG4tXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnpvcnJvX2VzcF9kcml2ZXIpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm9fZXNwX3Njc2lfZXhpdCh2b2lkKVxuLXtcbi1cdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnpvcnJvX2VzcF9kcml2ZXIpO1xuLX1cbi1cbi1tb2R1bGVfaW5pdCh6b3Jyb19lc3Bfc2NzaV9pbml0KTtcbi1tb2R1bGVfZXhpdCh6b3Jyb19lc3Bfc2NzaV9leGl0KTtcbittb2R1bGVfZHJpdmVyKHpvcnJvX2VzcF9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTE6NTcuODMwODU2NTcyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjI3ODI0MjY4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBBTUQ2NCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyBpbXBhY3Qgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGFtZDY0LiBGcm9tIGEgZ2xhbmNlLCBpdCdzIGhpdHRpbmcgYSBudW1iZXIgb2YgZHJpdmVycy4gSSBzZWUgbW9kaWZpY2F0aW9ucyB0b3VjaGluZzpcblxuKiAgIE5ldHdvcmsgZHJpdmVycyBmb3Igb2xkZXIgODM5MC1iYXNlZCBldGhlcm5ldCBjYXJkcyAoYGh5ZHJhLmNgLCBgem9ycm84MzkwLmNgLCBgYTIwNjUuY2AsIGBhcmlhZG5lLmNgKS4gVGhlc2UgYXJlIGxpa2VseSBsZWdhY3kgb3IgbmljaGUgaGFyZHdhcmUuXG4qICAgU0NTSSBkcml2ZXJzOiBgYTIwOTEuY2AsIGBndnAxMS5jYCwgYHpvcnJvN3h4LmNgLCBhbmQgYHpvcnJvX2VzcC5jYC4gVGhpcyBzdWdnZXN0cyBpbnRlcmFjdGlvbiB3aXRoIG9sZGVyIFNDU0kgY29udHJvbGxlcnMsIGFuZCBwb3RlbnRpYWxseSB0aGUgWm9ycm8gYnVzLlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIHRoZSB0YXJnZXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBkcml2ZXJzLCBhbmQgYWxzbyBkZXBlbmRlbmNpZXMgb24gdGhlIFpPUlJPIGJ1cy4gQSB0b29sIGxpa2UgYGdyZXBwZXJgIHdpbGwgYmUgcGVyZmVjdCBmb3IgcXVpY2tseSBzZWFyY2hpbmcgdGhlIEtjb25maWcgZmlsZXMgYW5kIGZpbmRpbmcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCB0byBhc3Nlc3MgaWYgdGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGFueSBjb21wYXRpYmlsaXR5IGlzc3VlcywgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMsIG9yIGlmIGl0IGlzIGNvbmRpdGlvbmFsIG9uIHNwZWNpZmljIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTM4LCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MDQuMTA5MTAxMzI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDQxNTE1MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIChIWURSQXxaT1JSTzgzOTB8QTIwNjV8QVJJQURORXxBMjA5MV9TQ1NJfEdWUDExX1NDU0l8Wk9SUk83WFhfU0NTSXxTQ1NJX1pPUlJPX0VTUHxaT1JSTylcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnPTM3PWNvbmZpZyBYU1VSRjEwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZzo1MDpjb25maWcgSFlEUkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWctNTEtXFx0dHJpc3RhdGUgXFxcIkh5ZHJhIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc9MTQ1PWNvbmZpZyBTVE5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc6MTU3OmNvbmZpZyBaT1JSTzgzOTBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWctMTU4LVxcdHRyaXN0YXRlIFxcXCJab3JybyBOUzgzOTAtYmFzZWQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnPTIxPWlmIE5FVF9WRU5ET1JfQU1EXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6MjM6Y29uZmlnIEEyMDY1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIkEyMDY1IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZz00Nj1jb25maWcgUENORVQzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6NTg6Y29uZmlnIEFSSUFETkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZy01OS1cXHR0cmlzdGF0ZSBcXFwiQXJpYWRuZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWc9MTI5ND1jb25maWcgQTMwMDBfU0NTSVxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWctMTMwMy1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZzoxMzA0OmNvbmZpZyBBMjA5MV9TQ1NJXFxuZHJpdmVycy9zY3NpL0tjb25maWctMTMwNS1cXHR0cmlzdGF0ZSBcXFwiQTIwOTEvQTU5MCBXRDMzQzkzQSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWctMTMxMy1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZzoxMzE0OmNvbmZpZyBHVlAxMV9TQ1NJXFxuZHJpdmVycy9zY3NpL0tjb25maWctMTMxNS1cXHR0cmlzdGF0ZSBcXFwiR1ZQIFNlcmllcyBJSSBXRDMzQzkzQSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWc9MTMzOD1jb25maWcgU0NTSV9aT1JSTzdYWFxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWctMTM1My1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZzoxMzU0OmNvbmZpZyBTQ1NJX1pPUlJPX0VTUFxcbmRyaXZlcnMvc2NzaS9LY29uZmlnLTEzNTUtXFx0dHJpc3RhdGUgXFxcIlpvcnJvIEVTUCBTQ1NJIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3pvcnJvL0tjb25maWctNC0jXFxuZHJpdmVycy96b3Jyby9LY29uZmlnOjU6Y29uZmlnIFpPUlJPX05BTUVTXFxuZHJpdmVycy96b3Jyby9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiWm9ycm8gZGV2aWNlIG5hbWUgZGF0YWJhc2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjA1LjIxMzI1NzY1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4MTY5MjIxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIERlcHRocyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggdGhlc2UgY29uZmlndXJhdGlvbnMuIEJlZm9yZSBJIGV2ZW4gdGhpbmsgYWJvdXQgbWFraW5nIGFueSBjaGFuZ2VzIG9yIGRlYnVnZ2luZyBhbnl0aGluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzICphY3R1YWxseSogZGVmaW5lZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IHZlcmlmeSB0aGUgS2NvbmZpZyBkZWZpbml0aW9ucyBmb3IgKmFsbCogdGhlIGNvbmZpZ3VyYXRpb25zLCBhbmQgZXNwZWNpYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIGhvdyBgQ09ORklHX1pPUlJPYCBpcyBkZWZpbmVkLiBBbnkgdXBzdHJlYW0gY2hhbmdlcyB0aGF0IGltcGFjdCBob3cgdGhpcyBjb25maWd1cmF0aW9uIGJlaGF2ZXMgcmVxdWlyZSBhIGRlZXAgZGl2ZSBpbnRvIHRoZSB1bmRlcmx5aW5nIEtjb25maWcgZmlsZXMuIEkga25vdyB0aGUgaW50cmljYWNpZXMgb2YgdGhpcyBwcm9qZWN0IGRlbWFuZCBhIHNvbGlkLCBhbG1vc3QgZW5jeWNsb3BlZGljLCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBjb25maWd1cmF0aW9ucyBpbnRlcmFjdCwgYW5kIHRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gZW5zdXJpbmcgSSBoYXZlIGEgc29saWQgZ3Jhc3AuIExldCdzIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQwOCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjA3LjAzMDE4MTcyOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgxMzkxNDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaT1JST1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL202OGsvS2NvbmZpZy5idXM9MTU9Y29uZmlnIE5VQlVTXFxuLS1cXG5hcmNoL202OGsvS2NvbmZpZy5idXMtMTktXFxuYXJjaC9tNjhrL0tjb25maWcuYnVzOjIwOmNvbmZpZyBaT1JST1xcbmFyY2gvbTY4ay9LY29uZmlnLmJ1cy0yMS1cXHRib29sIFxcXCJBbWlnYSBab3JybyAoQXV0b0NvbmZpZykgYnVzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc9MTQ1PWNvbmZpZyBTVE5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc6MTU3OmNvbmZpZyBaT1JSTzgzOTBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWctMTU4LVxcdHRyaXN0YXRlIFxcXCJab3JybyBOUzgzOTAtYmFzZWQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvem9ycm8vS2NvbmZpZy00LSNcXG5kcml2ZXJzL3pvcnJvL0tjb25maWc6NTpjb25maWcgWk9SUk9fTkFNRVNcXG5kcml2ZXJzL3pvcnJvL0tjb25maWctNi1cXHRib29sIFxcXCJab3JybyBkZXZpY2UgbmFtZSBkYXRhYmFzZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MDguNzExNTc4NTA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM1Nzc1NDUyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFpPUlJPIENvbmZpZ3VyYXRpb24gZm9yIG02OGsgQXJjaGl0ZWN0dXJlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYENPTkZJR19aT1JST2AgaXMgZXhjbHVzaXZlbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGBhcmNoL202OGsvS2NvbmZpZy5idXNgIGZpbGUuIFRoaXMgdGVsbHMgbWUgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBaT1JSTyBidXMgaXMgY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBtNjhrIGFyY2hpdGVjdHVyZS4gTXkgbmV4dCBzdGVwIGlzIHRvIGNhcmVmdWxseSBleGFtaW5lIGBhcmNoL202OGsvS2NvbmZpZy5idXNgIGluIGRldGFpbC4gSSdsbCBuZWVkIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIHBvdGVudGlhbGx5IGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyB3aXRoaW4gdGhhdCBmaWxlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGdvaW5nIG9uLiBPZiBjb3Vyc2UsIEknbGwgbmVlZCB0byBlbnN1cmUgSSBjaGVjayBhbGwgcmVsYXRlZCBLY29uZmlnIGZpbGVzIHRvbywgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLiBJJ20gbG9va2luZyBmb3IgdGhlIGxvZ2ljLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIG92ZXJhbGwgaW50ZW50IGJlaGluZCB0aGlzIGNvbmZpZ3VyYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGlzIGRlZmluaXRpb24gYW5kIG90aGVyIGNvbXBvbmVudHMgaXMga2V5IHRvIGdyYXNwaW5nIHRoZSBhcmNoaXRlY3R1cmUncyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBaT1JSTyBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4ODcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjoxMS4wNjkzMzYwNzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL202OGsvS2NvbmZpZy5idXNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRpZiBNTVVcXG4gICAzOlxcdFxcbiAgIDQ6XFx0Y29tbWVudCBcXFwiQnVzIFN1cHBvcnRcXFwiXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBESU9cXG4gICA3OlxcdFxcdGJvb2wgXFxcIkRJTyBidXMgc3VwcG9ydFxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSFAzMDBcXG4gICA5OlxcdFxcdGRlZmF1bHQgeVxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgXFxcIkRJT1xcXCIgZXhwYW5zaW9uIGJ1cyB1c2VkIGluXFxuICAxMjpcXHRcXHQgIEhQMzAwIG1hY2hpbmVzLiBJZiB5b3UgYXJlIHVzaW5nIHN1Y2ggYSBzeXN0ZW0geW91IGFsbW9zdCBjZXJ0YWlubHlcXG4gIDEzOlxcdFxcdCAgd2FudCB0aGlzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgTlVCVVNcXG4gIDE2OlxcdFxcdGJvb2xcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gTUFDXFxuICAxODpcXHRcXHRkZWZhdWx0IHlcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFpPUlJPXFxuICAyMTpcXHRcXHRib29sIFxcXCJBbWlnYSBab3JybyAoQXV0b0NvbmZpZykgYnVzIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIEFNSUdBXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgWm9ycm8gYnVzIGluIHRoZSBBbWlnYS4gSWYgeW91IGhhdmVcXG4gIDI1OlxcdFxcdCAgZXhwYW5zaW9uIGNhcmRzIGluIHlvdXIgQW1pZ2EgdGhhdCBjb25mb3JtIHRvIHRoZSBBbWlnYVxcbiAgMjY6XFx0XFx0ICBBdXRvQ29uZmlnKHRtKSBzcGVjaWZpY2F0aW9uLCBzYXkgWSwgb3RoZXJ3aXNlIE4uIE5vdGUgdGhhdCBldmVuXFxuICAyNzpcXHRcXHQgIGV4cGFuc2lvbiBjYXJkcyB0aGF0IGRvIG5vdCBmaXQgaW4gdGhlIFpvcnJvIHNsb3RzIGJ1dCBmaXQgaW4gZS5nLlxcbiAgMjg6XFx0XFx0ICB0aGUgQ1BVIHNsb3QgbWF5IGZhbGwgaW4gdGhpcyBjYXRlZ29yeSwgc28geW91IGhhdmUgdG8gc2F5IFkgdG8gbGV0XFxuICAyOTpcXHRcXHQgIExpbnV4IHVzZSB0aGVzZS5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIEFNSUdBX1BDTUNJQVxcbiAgMzI6XFx0XFx0Ym9vbCBcXFwiQW1pZ2EgMTIwMC82MDAgUENNQ0lBIHN1cHBvcnRcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIEFNSUdBXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIEluY2x1ZGUgc3VwcG9ydCBpbiB0aGUga2VybmVsIGZvciBwY21jaWEgb24gQW1pZ2EgMTIwMCBhbmQgQW1pZ2FcXG4gIDM2OlxcdFxcdCAgNjAwLiBJZiB5b3UgaW50ZW5kIHRvIHVzZSBwY21jaWEgY2FyZHMgc2F5IFk7IG90aGVyd2lzZSBzYXkgTi5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIElTQVxcbiAgMzk6XFx0XFx0Ym9vbFxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBRNDAgfHwgQU1JR0FfUENNQ0lBXFxuICA0MTpcXHRcXHRkZWZhdWx0IHlcXG4gIDQyOlxcdFxcdGhlbHBcXG4gIDQzOlxcdFxcdCAgRmluZCBvdXQgd2hldGhlciB5b3UgaGF2ZSBJU0Egc2xvdHMgb24geW91ciBtb3RoZXJib2FyZC4gIElTQSBpcyB0aGVcXG4gIDQ0OlxcdFxcdCAgbmFtZSBvZiBhIGJ1cyBzeXN0ZW0sIGkuZS4gdGhlIHdheSB0aGUgQ1BVIHRhbGtzIHRvIHRoZSBvdGhlciBzdHVmZlxcbiAgNDU6XFx0XFx0ICBpbnNpZGUgeW91ciBib3guICBPdGhlciBidXMgc3lzdGVtcyBhcmUgUENJLCBFSVNBLCBNaWNyb0NoYW5uZWxcXG4gIDQ2OlxcdFxcdCAgKE1DQSkgb3IgVkVTQS4gIElTQSBpcyBhbiBvbGRlciBzeXN0ZW0sIG5vdyBiZWluZyBkaXNwbGFjZWQgYnkgUENJO1xcbiAgNDc6XFx0XFx0ICBuZXdlciBib2FyZHMgZG9uJ3Qgc3VwcG9ydCBpdC4gIElmIHlvdSBoYXZlIElTQSwgc2F5IFksIG90aGVyd2lzZSBOLlxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgQVRBUklfUk9NX0lTQVxcbiAgNTA6XFx0XFx0Ym9vbCBcXFwiQXRhcmkgUk9NIHBvcnQgSVNBIGFkYXB0ZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MTEuMDY5Mzk5NTM3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM4MTk2NDczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgYW5kIFN0b3JhZ2UgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgbmV0d29yayBhbmQgc3RvcmFnZSBkcml2ZXJzLiBJJ2xsIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZ2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZ2AsIGFuZCBgZHJpdmVycy9zY3NpL0tjb25maWdgLiBUaGVzZSBgS2NvbmZpZ2AgZmlsZXMgYXJlIGtleS4gVGhleSdsbCB0ZWxsIG1lIHdoYXQgaGFyZHdhcmUgZWFjaCBkcml2ZXIgc3VwcG9ydHMsIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBmZWF0dXJlcywgYW55IGRlZmF1bHRzIHRoYXQgYXJlIHNldCwgYW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBjYW4gdHdlYWsuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgaXMgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBjb250ZXh0LCBzbyB0aGVzZSBmaWxlcyB3aWxsIGJlIGVzc2VudGlhbCBmb3IgdW5kZXJzdGFuZGluZyB3aGF0J3MgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBob3cgSSBjYW4gY3VzdG9taXplIHRoZSBrZXJuZWwgYnVpbGQgdG8gc3VwcG9ydCBwYXJ0aWN1bGFyIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgU0NTSSBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZHJpdmVycyBhbmQgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbTsgZm9yIGluc3RhbmNlLCB1bmRlcnN0YW5kaW5nIGhvdyBzcGVjaWZpYyA4MzkwIG9yIEFNRCBuZXR3b3JrIGRyaXZlcnMgY2FuIGJlIGludGVncmF0ZWQgb3IgcmVwbGFjZWQgd2l0aCBuZXdlciBzb2x1dGlvbnMgaXMgaW1wb3J0YW50LiBUaGlzIGluaXRpYWwgc2NhbiBpcyBhYm91dCBnYWluaW5nIGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGlzdGluZyBkcml2ZXIgbGFuZHNjYXBlLCB0aGUgY2hvaWNlcyBhdmFpbGFibGUsIGFuZCB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gcGF0aHdheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4OTksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjEzLjQ1MTM2Nzc2MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDU6XFx0XFx0ICBzYXkgWS4gT3RoZXJ3aXNlLCBzYXkgTi5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICA0ODpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHhzdXJmMTAwLlxcbiAgNDk6XFx0XFxuICA1MDpcXHRjb25maWcgSFlEUkFcXG4gIDUxOlxcdFxcdHRyaXN0YXRlIFxcXCJIeWRyYSBzdXBwb3J0XFxcIlxcbiAgNTI6XFx0XFx0ZGVwZW5kcyBvbiBaT1JST1xcbiAgNTM6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA1NDpcXHRcXHRoZWxwXFxuICA1NTpcXHRcXHQgIElmIHlvdSBoYXZlIGEgSHlkcmEgRXRoZXJuZXQgYWRhcHRlciwgc2F5IFkuIE90aGVyd2lzZSwgc2F5IE4uXFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgNTg6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBoeWRyYS5cXG4gIDU5OlxcdFxcbiAgNjA6XFx0Y29uZmlnIEFSTV9FVEhFUkhcXG4gIDYxOlxcdFxcdHRyaXN0YXRlIFxcXCJJLWN1YmVkIEV0aGVySC9BTlQgRXRoZXJNIHN1cHBvcnRcXFwiXFxuICA2MjpcXHRcXHRkZXBlbmRzIG9uIEFSTSBcXHUwMDI2XFx1MDAyNiBBUkNIX0FDT1JOXFxuICA2MzpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDY0OlxcdFxcdGhlbHBcXG4gIDY1OlxcdFxcdCAgSWYgeW91IGhhdmUgYW4gQWNvcm4gc3lzdGVtIHdpdGggb25lIG9mIHRoZXNlIG5ldHdvcmsgY2FyZHMsIHlvdVxcbiAgNjY6XFx0XFx0ICBzaG91bGQgc2F5IFkgdG8gdGhpcyBvcHRpb24gaWYgeW91IHdpc2ggdG8gdXNlIGl0IHdpdGggTGludXguXFxuICA2NzpcXHRcXG4gIDY4OlxcdGNvbmZpZyBNQUM4MzkwXFxuICA2OTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFjaW50b3NoIE5TIDgzOTAgYmFzZWQgZXRoZXJuZXQgY2FyZHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjEzLjQ1MTQyNjQwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjYyMzQ5NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgdGhlIHdob2xlIHBpY3R1cmUgaGVyZS4gSSBzaG91bGQgcHJvYmFibHkgZXhwYW5kIG15IHNjb3BlIGFuZCBjaGVjayBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgcmVsYXRlZCB0byBuZXR3b3JraW5nIGFuZCBzdG9yYWdlLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgYnkgbG9va2luZyBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnYCwgYW5kIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AuIFRoaXMgd2lsbCBoZWxwIG1lIGdldCBhIGJyb2FkZXIgcGVyc3BlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1ODYsIk91dHB1dFRva2VucyI6NzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjE1LjExMzc3OTA4NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwODg3MTI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoSFlEUkF8Wk9SUk84MzkwfEEyMDY1fEFSSUFETkV8QTIwOTFfU0NTSXxHVlAxMV9TQ1NJfFNDU0lfWk9SUk83WFh8U0NTSV9aT1JST19FU1ApXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI0MSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc9MzY4PWNvbW1lbnQgXFxcIk1hYyBTTUJ1cyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyc1xcXCJcXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnLTM3MC1cXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZzozNzE6Y29uZmlnIEkyQ19IWURSQVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnLTM3Mi1cXHR0cmlzdGF0ZSBcXFwiQ0hSUCBBcHBsZSBIeWRyYSBNYWMgSS9PIEkyQyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX0kyQ19aSEFPWElOKVxcdCs9IGkyYy12aWFpMmMtemhhb3hpbi5vIGkyYy12aWFpMmMtY29tbW9uLm9cXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZS0zMi0jIE1hYyBTTUJ1cyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyc1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfSTJDX0hZRFJBKVxcdFxcdCs9IGkyYy1oeWRyYS5vXFxuZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlLTM0LW9iai0kKENPTkZJR19JMkNfUE9XRVJNQUMpXFx0Kz0gaTJjLXBvd2VybWFjLm9cXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy0yMS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6MjI6I2RlZmluZSBIWURSQV9DUERfUEQwXFx0MHgwMDAwMDAwMVxcdC8qIENhY2hlUEQgbGluZXMgKi9cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6MjM6I2RlZmluZSBIWURSQV9DUERfUEQxXFx0MHgwMDAwMDAwMlxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyNDojZGVmaW5lIEhZRFJBX0NQRF9QRDJcXHQweDAwMDAwMDA0XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjI1OiNkZWZpbmUgSFlEUkFfQ1BEX1BEM1xcdDB4MDAwMDAwMDhcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtMjYtXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjI3OiNkZWZpbmUgSFlEUkFfU0NMS1xcdEhZRFJBX0NQRF9QRDBcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6Mjg6I2RlZmluZSBIWURSQV9TREFUXFx0SFlEUkFfQ1BEX1BEMVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyOTojZGVmaW5lIEhZRFJBX1NDTEtfT0VcXHQweDAwMDAwMDEwXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjMwOiNkZWZpbmUgSFlEUkFfU0RBVF9PRVxcdDB4MDAwMDAwMjBcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtMzEtXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9NDQ9c3RhdGljIHZvaWQgaHlkcmFfYml0X3NldHNjbCh2b2lkICpkYXRhLCBpbnQgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtNDctXFx0aWYgKHN0YXRlKVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo0ODpcXHRcXHR2YWwgXFx1MDAyNj0gfkhZRFJBX1NDTEtfT0U7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTQ5LVxcdGVsc2Uge1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo1MDpcXHRcXHR2YWwgXFx1MDAyNj0gfkhZRFJBX1NDTEs7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjUxOlxcdFxcdHZhbCB8PSBIWURSQV9TQ0xLX09FO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy01Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9NTY9c3RhdGljIHZvaWQgaHlkcmFfYml0X3NldHNkYSh2b2lkICpkYXRhLCBpbnQgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtNTktXFx0aWYgKHN0YXRlKVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo2MDpcXHRcXHR2YWwgXFx1MDAyNj0gfkhZRFJBX1NEQVRfT0U7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTYxLVxcdGVsc2Uge1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo2MjpcXHRcXHR2YWwgXFx1MDAyNj0gfkhZRFJBX1NEQVQ7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjYzOlxcdFxcdHZhbCB8PSBIWURSQV9TREFUX09FO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy02NC1cXHR9XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9Njg9c3RhdGljIGludCBoeWRyYV9iaXRfZ2V0c2NsKHZvaWQgKmRhdGEpXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTY5LXtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6NzA6XFx0cmV0dXJuIChwZHJlZ3IoZGF0YSkgXFx1MDAyNiBIWURSQV9TQ0xLKSAhPSAwO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy03MS19XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9NzM9c3RhdGljIGludCBoeWRyYV9iaXRfZ2V0c2RhKHZvaWQgKmRhdGEpXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTc0LXtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6NzU6XFx0cmV0dXJuIChwZHJlZ3IoZGF0YSkgXFx1MDAyNiBIWURSQV9TREFUKSAhPSAwO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy03Ni19XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9OTU9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGh5ZHJhX2lkc1tdID0ge1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo5NjpcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9BUFBMRSwgUENJX0RFVklDRV9JRF9BUFBMRV9IWURSQSkgfSxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtOTctXFx0eyAwLCB9XFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTQyLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6NDM6I2RlZmluZSBNSU5fSFlEUkFUSU9OUyAyNTYgLyogU2l6ZSBvZiBoeWRyYXRpb24gbWVtcG9vbCAqL1xcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6NDQ6I2RlZmluZSBERUZBVUxUX0hZRFJBVElPTl9USFJFU0hPTEQgMSAvKiAxIHJlZ2lvbiAqL1xcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6NDU6I2RlZmluZSBERUZBVUxUX0hZRFJBVElPTl9CQVRDSF9TSVpFIDEgLyogSHlkcmF0ZSBpbiBiYXRjaGVzIG9mIDEgcmVnaW9uICovXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy00Ni1cXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9Njk9c3RydWN0IGNsb25lIHtcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTQzLSNkZWZpbmUgRE1fQ0xPTkVfRElTQ0FSRF9QQVNTRE9XTiAwXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNDQ6I2RlZmluZSBETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCAxXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNDU6I2RlZmluZSBETV9DTE9ORV9IWURSQVRJT05fU1VTUEVOREVEIDJcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE0Ni1cXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9NzYxPXN0YXRpYyB2b2lkIGh5ZHJhdGlvbl9rY29weWRfY2FsbGJhY2soaW50IHJlYWRfZXJyLCB1bnNpZ25lZCBsb25nIHdyaXRlX2Vyciwgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtNzg3LVxcdC8qIENvbnRpbnVlIGJhY2tncm91bmQgaHlkcmF0aW9uLCBpZiB0aGVyZSBpcyBubyBJL08gaW4tZmxpZ2h0ICovXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzo3ODg6XFx0aWYgKHRlc3RfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtNzg5LVxcdCAgICAhYXRvbWljX3JlYWQoXFx1MDAyNmNsb25lLVxcdTAwM2Vpb3NfaW5fZmxpZ2h0KSlcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTA2MT1zdGF0aWMgdm9pZCBkb19oeWRyYXRpb24oc3RydWN0IGNsb25lICpjbG9uZSlcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTA5Mi1cXHRvZmZzZXQgPSBjbG9uZS1cXHUwMDNlaHlkcmF0aW9uX29mZnNldDtcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjEwOTM6XFx0d2hpbGUgKGxpa2VseSghdGVzdF9iaXQoRE1fQ0xPTkVfSFlEUkFUSU9OX1NVU1BFTkRFRCwgXFx1MDAyNmNsb25lLVxcdTAwM2VmbGFncykpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMDk0LVxcdCAgICAgICAhYXRvbWljX3JlYWQoXFx1MDAyNmNsb25lLVxcdTAwM2Vpb3NfaW5fZmxpZ2h0KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTA5NTpcXHQgICAgICAgdGVzdF9iaXQoRE1fQ0xPTkVfSFlEUkFUSU9OX0VOQUJMRUQsIFxcdTAwMjZjbG9uZS1cXHUwMDNlZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMDk2LVxcdCAgICAgICBvZmZzZXQgXFx1MDAzYyBucl9yZWdpb25zKSB7XFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jPTEzODI9c3RhdGljIHZvaWQgZW1pdF9mbGFncyhzdHJ1Y3QgY2xvbmUgKmNsb25lLCBjaGFyICpyZXN1bHQsIHVuc2lnbmVkIGludCBtYXhsZW4sXFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTEzODctXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxMzg4OlxcdGNvdW50ID0gIXRlc3RfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTEzODktXFx0Y291bnQgKz0gIXRlc3RfYml0KERNX0NMT05FX0RJU0NBUkRfUEFTU0RPV04sIFxcdTAwMjZjbG9uZS1cXHUwMDNlZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMzkyLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTM5MzpcXHRpZiAoIXRlc3RfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKSlcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTEzOTQtXFx0XFx0RE1FTUlUKFxcXCJub19oeWRyYXRpb24gXFxcIik7XFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jPTE1Mzc9c3RhdGljIGludCBwYXJzZV9mZWF0dXJlX2FyZ3Moc3RydWN0IGRtX2FyZ19zZXQgKmFzLCBzdHJ1Y3QgY2xvbmUgKmNsb25lKVxcbi0tXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xNTYyLVxcdFxcdGlmICghc3RyY2FzZWNtcChhcmdfbmFtZSwgXFxcIm5vX2h5ZHJhdGlvblxcXCIpKSB7XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNTYzOlxcdFxcdFxcdF9fY2xlYXJfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE1NjQtXFx0XFx0fSBlbHNlIGlmICghc3RyY2FzZWNtcChhcmdfbmFtZSwgXFxcIm5vX2Rpc2NhcmRfcGFzc2Rvd25cXFwiKSkge1xcbi0tXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz0xNTc1PXN0YXRpYyBpbnQgcGFyc2VfY29yZV9hcmdzKHN0cnVjdCBkbV9hcmdfc2V0ICphcywgc3RydWN0IGNsb25lICpjbG9uZSlcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTU4OS1cXHQvKiBJbml0aWFsaXplIGNvcmUgYXJndW1lbnRzICovXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNTkwOlxcdGNsb25lLVxcdTAwM2VoeWRyYXRpb25fYmF0Y2hfc2l6ZSA9IERFRkFVTFRfSFlEUkFUSU9OX0JBVENIX1NJWkU7XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNTkxOlxcdGNsb25lLVxcdTAwM2VoeWRyYXRpb25fdGhyZXNob2xkID0gREVGQVVMVF9IWURSQVRJT05fVEhSRVNIT0xEO1xcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTU5Mi1cXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTc1ND1zdGF0aWMgaW50IGNsb25lX2N0cihzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgdW5zaWduZWQgaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbi0tXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xNzc3LVxcdC8qIEluaXRpYWxpemUgZG0tY2xvbmUgZmxhZ3MgKi9cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE3Nzg6XFx0X19zZXRfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE3Nzk6XFx0X19zZXRfYml0KERNX0NMT05FX0hZRFJBVElPTl9TVVNQRU5ERUQsIFxcdTAwMjZjbG9uZS1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTc4MC1cXHRfX3NldF9iaXQoRE1fQ0xPTkVfRElTQ0FSRF9QQVNTRE9XTiwgXFx1MDAyNmNsb25lLVxcdTAwM2VmbGFncyk7XFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE4ODAtXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxODgxOlxcdHIgPSBtZW1wb29sX2luaXRfc2xhYl9wb29sKFxcdTAwMjZjbG9uZS1cXHUwMDNlaHlkcmF0aW9uX3Bvb2wsIE1JTl9IWURSQVRJT05TLFxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTg4Mi1cXHRcXHRcXHRcXHQgICBfaHlkcmF0aW9uX2NhY2hlKTtcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTk1NT1zdGF0aWMgdm9pZCBjbG9uZV9wb3N0c3VzcGVuZChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSlcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTk3NS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE5NzY6XFx0c2V0X2JpdChETV9DTE9ORV9IWURSQVRJT05fU1VTUEVOREVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE5NzctXFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jPTE5OTM9c3RhdGljIHZvaWQgY2xvbmVfcmVzdW1lKHN0cnVjdCBkbV90YXJnZXQgKnRpKVxcbi0tXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xOTk2LVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTk5NzpcXHRjbGVhcl9iaXQoRE1fQ0xPTkVfSFlEUkFUSU9OX1NVU1BFTkRFRCwgXFx1MDAyNmNsb25lLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xOTk4LVxcdGRvX3dha2VyKFxcdTAwMjZjbG9uZS1cXHUwMDNld2FrZXIud29yayk7XFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jPTIxMDM9c3RhdGljIHZvaWQgZW5hYmxlX2h5ZHJhdGlvbihzdHJ1Y3QgY2xvbmUgKmNsb25lKVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMjEwNC17XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoyMTA1OlxcdGlmICghdGVzdF9hbmRfc2V0X2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXFx1MDAyNmNsb25lLVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0yMTA2LVxcdFxcdHdha2Vfd29ya2VyKGNsb25lKTtcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MjEwOT1zdGF0aWMgdm9pZCBkaXNhYmxlX2h5ZHJhdGlvbihzdHJ1Y3QgY2xvbmUgKmNsb25lKVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMjExMC17XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoyMTExOlxcdGNsZWFyX2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXFx1MDAyNmNsb25lLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0yMTEyLX1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0zOD1zdHJ1Y3QgbXhsX2Jhc2Uge1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTYzLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2NDpcXHR1OCAgICAgICAgICAgICAgICAgICBidWZbTVhMX0hZRFJBX09FTV9NQVhfQ01EX0JVRkZfTEVOXTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjUtXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MTQ4PXN0YXRpYyBpbnQgcmVhZF9yZWdpc3Rlcl91bmxvY2tlZChzdHJ1Y3QgbXhsICpzdGF0ZSwgdTMyIHJlZywgdTMyICp2YWwpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTUwLVxcdGludCBzdGF0O1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxNTE6XFx0dTggZGF0YVtNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMgKyBNWExfSFlEUkFfSTJDX0hEUl9TSVpFXSA9IHtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTUyOlxcdFxcdE1YTF9IWURSQV9QTElEX1JFR19SRUFELCAweDA0LFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xNTMtXFx0XFx0R0VUX0JZVEUocmVnLCAwKSwgR0VUX0JZVEUocmVnLCAxKSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xNTctXFx0c3RhdCA9IGkyY3dyaXRlKHN0YXRlLCBkYXRhLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxNTg6XFx0XFx0XFx0TVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTICsgTVhMX0hZRFJBX0kyQ19IRFJfU0laRSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTE1OS1cXHRpZiAoc3RhdClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xNjItXFx0XFx0c3RhdCA9IGkyY3JlYWQoc3RhdGUsICh1OCAqKSB2YWwsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjE2MzpcXHRcXHRcXHQgICAgICAgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTY0LVxcdGxlMzJfdG9fY3B1cyh2YWwpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTIwMT1zdGF0aWMgaW50IHdyaXRlX3JlZ2lzdGVyKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgcmVnLCB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTIwMy1cXHRpbnQgc3RhdDtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjA0OlxcdHU4IGRhdGFbTVhMX0hZRFJBX1JFR19XUklURV9MRU5dID0ge1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyMDU6XFx0XFx0TVhMX0hZRFJBX1BMSURfUkVHX1dSSVRFLCAweDA4LFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yMDYtXFx0XFx0QllURTAocmVnKSwgQllURTEocmVnKSwgQllURTIocmVnKSwgQllURTMocmVnKSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0yMTc9c3RhdGljIGludCB3cml0ZV9maXJtd2FyZV9ibG9jayhzdHJ1Y3QgbXhsICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yMjMtXFx0bXV0ZXhfbG9jayhcXHUwMDI2c3RhdGUtXFx1MDAzZWJhc2UtXFx1MDAzZWkyY19sb2NrKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjI0OlxcdGJ1ZlswXSA9IE1YTF9IWURSQV9QTElEX1JFR19XUklURTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjI1LVxcdGJ1ZlsxXSA9IHNpemUgKyA0O1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTIzMS1cXHRzdGF0ID0gaTJjd3JpdGUoc3RhdGUsIGJ1ZixcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjMyOlxcdFxcdFxcdE1YTF9IWURSQV9JMkNfSERSX1NJWkUgK1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyMzM6XFx0XFx0XFx0TVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTICsgc2l6ZSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTIzNC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2VpMmNfbG9jayk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MjQwPXN0YXRpYyBpbnQgcmVhZF9yZWdpc3RlcihzdHJ1Y3QgbXhsICpzdGF0ZSwgdTMyIHJlZywgdTMyICp2YWwpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjQyLVxcdGludCBzdGF0O1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyNDM6XFx0dTggZGF0YVtNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMgKyBNWExfSFlEUkFfSTJDX0hEUl9TSVpFXSA9IHtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjQ0OlxcdFxcdE1YTF9IWURSQV9QTElEX1JFR19SRUFELCAweDA0LFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNDUtXFx0XFx0R0VUX0JZVEUocmVnLCAwKSwgR0VUX0JZVEUocmVnLCAxKSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNTAtXFx0c3RhdCA9IGkyY3dyaXRlKHN0YXRlLCBkYXRhLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyNTE6XFx0XFx0XFx0TVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTICsgTVhMX0hZRFJBX0kyQ19IRFJfU0laRSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTI1Mi1cXHRpZiAoc3RhdClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNTUtXFx0XFx0c3RhdCA9IGkyY3JlYWQoc3RhdGUsICh1OCAqKSB2YWwsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjI1NjpcXHRcXHRcXHQgICAgICAgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjU3LVxcdG11dGV4X3VubG9jayhcXHUwMDI2c3RhdGUtXFx1MDAzZWJhc2UtXFx1MDAzZWkyY19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0yNjQ9c3RhdGljIGludCByZWFkX3JlZ2lzdGVyX2Jsb2NrKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgcmVnLCB1MzIgc2l6ZSwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjcwLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyNzE6XFx0YnVmWzBdID0gTVhMX0hZRFJBX1BMSURfUkVHX1JFQUQ7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTI3Mi1cXHRidWZbMV0gPSBzaXplICsgNDtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNzctXFx0c3RhdCA9IGkyY3dyaXRlKHN0YXRlLCBidWYsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjI3ODpcXHRcXHRcXHRNWExfSFlEUkFfSTJDX0hEUl9TSVpFICsgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjc5LVxcdGlmICghc3RhdCkge1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTMxOT1zdGF0aWMgaW50IGZpcm13YXJlX2lzX2FsaXZlKHN0cnVjdCBteGwgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyMi1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MzIzOlxcdGlmIChyZWFkX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9IRUFSX0JFQVQsIFxcdTAwMjZoYjApKVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0zMjQtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyNS1cXHRtc2xlZXAoMjApO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzozMjY6XFx0aWYgKHJlYWRfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX0hFQVJfQkVBVCwgXFx1MDAyNmhiMSkpXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyNy1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0zODQ9c3RhdGljIGludCBjZmdfc2NyYW1ibGVyKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgZ29sZClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0zODctXFx0dTggYnVmWzI2XSA9IHtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6Mzg4OlxcdFxcdE1YTF9IWURSQV9QTElEX0NNRF9XUklURSwgMjQsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjM4OTpcXHRcXHQwLCBNWExfSFlEUkFfREVNT0RfU0NSQU1CTEVfQ09ERV9DTUQsIDAsIDAsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTM5MC1cXHRcXHRzdGF0ZS1cXHUwMDNlZGVtb2QsIDAsIDAsIDAsXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9NDA1PXN0YXRpYyBpbnQgY2ZnX2RlbW9kX2Fib3J0X3R1bmUoc3RydWN0IG14bCAqc3RhdGUpXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQwNi17XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQwNzpcXHRzdHJ1Y3QgTVhMX0hZRFJBX0RFTU9EX0FCT1JUX1RVTkVfVCBhYm9ydF90dW5lX2NtZDtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDA4LVxcdHU4IGNtZF9zaXplID0gc2l6ZW9mKGFib3J0X3R1bmVfY21kKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDA5OlxcdHU4IGNtZF9idWZmW01YTF9IWURSQV9PRU1fTUFYX0NNRF9CVUZGX0xFTl07XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQxMC1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDExLVxcdGFib3J0X3R1bmVfY21kLmRlbW9kX2lkID0gc3RhdGUtXFx1MDAzZWRlbW9kO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0MTI6XFx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9BQk9SVF9UVU5FX0NNRCwgTVhMX0NNRF9XUklURSxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDEzLVxcdFxcdFxcdGNtZF9zaXplLCBcXHUwMDI2YWJvcnRfdHVuZV9jbWQsIGNtZF9idWZmKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDE0OlxcdHJldHVybiBzZW5kX2NvbW1hbmQoc3RhdGUsIGNtZF9zaXplICsgTVhMX0hZRFJBX0NNRF9IRUFERVJfU0laRSxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDE1LVxcdFxcdFxcdCAgICBcXHUwMDI2Y21kX2J1ZmZbMF0pO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTQyNj1zdGF0aWMgaW50IHNldF9wYXJhbWV0ZXJzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQyOS1cXHRzdHJ1Y3QgZHR2X2Zyb250ZW5kX3Byb3BlcnRpZXMgKnAgPSBcXHUwMDI2ZmUtXFx1MDAzZWR0dl9wcm9wZXJ0eV9jYWNoZTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDMwOlxcdHN0cnVjdCBNWExfSFlEUkFfREVNT0RfUEFSQU1fVCBkZW1vZF9jaGFuX2NmZztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDMxLVxcdHU4IGNtZF9zaXplID0gc2l6ZW9mKGRlbW9kX2NoYW5fY2ZnKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDMyOlxcdHU4IGNtZF9idWZmW01YTF9IWURSQV9PRU1fTUFYX0NNRF9CVUZGX0xFTl07XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQzMy1cXHR1MzIgc3JhbmdlID0gMTA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDQ0LVxcdGNhc2UgU1lTX0RTUzpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDQ1OlxcdFxcdGRlbW9kX2NoYW5fY2ZnLnN0YW5kYXJkID0gTVhMX0hZRFJBX0RTUztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDQ2OlxcdFxcdGRlbW9kX2NoYW5fY2ZnLnJvbGxfb2ZmID0gTVhMX0hZRFJBX1JPTExPRkZfQVVUTztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDQ3LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ1MS1cXHRcXHRcXHRzcmFuZ2UgPSAxMDtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDUyOlxcdFxcdGRlbW9kX2NoYW5fY2ZnLnN0YW5kYXJkID0gTVhMX0hZRFJBX0RWQlM7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ1MzpcXHRcXHRkZW1vZF9jaGFuX2NmZy5yb2xsX29mZiA9IE1YTF9IWURSQV9ST0xMT0ZGXzBfMzU7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ1NDpcXHRcXHRkZW1vZF9jaGFuX2NmZy5tb2R1bGF0aW9uX3NjaGVtZSA9IE1YTF9IWURSQV9NT0RfUVBTSztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDU1OlxcdFxcdGRlbW9kX2NoYW5fY2ZnLnBpbG90cyA9IE1YTF9IWURSQV9QSUxPVFNfT0ZGO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00NTYtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ1Ny1cXHRjYXNlIFNZU19EVkJTMjpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDU4OlxcdFxcdGRlbW9kX2NoYW5fY2ZnLnN0YW5kYXJkID0gTVhMX0hZRFJBX0RWQlMyO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NTk6XFx0XFx0ZGVtb2RfY2hhbl9jZmcucm9sbF9vZmYgPSBNWExfSFlEUkFfUk9MTE9GRl9BVVRPO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NjA6XFx0XFx0ZGVtb2RfY2hhbl9jZmcubW9kdWxhdGlvbl9zY2hlbWUgPSBNWExfSFlEUkFfTU9EX0FVVE87XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ2MTpcXHRcXHRkZW1vZF9jaGFuX2NmZy5waWxvdHMgPSBNWExfSFlEUkFfUElMT1RTX0FVVE87XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ2Mi1cXHRcXHRjZmdfc2NyYW1ibGVyKHN0YXRlLCBwLVxcdTAwM2VzY3JhbWJsaW5nX3NlcXVlbmNlX2luZGV4KTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00NzEtXFx0ZGVtb2RfY2hhbl9jZmcubWF4X2NhcnJpZXJfb2Zmc2V0X2luX21oeiA9IHNyYW5nZTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDcyOlxcdGRlbW9kX2NoYW5fY2ZnLnNwZWN0cnVtX2ludmVyc2lvbiA9IE1YTF9IWURSQV9TUEVDVFJVTV9BVVRPO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NzM6XFx0ZGVtb2RfY2hhbl9jZmcuZmVjX2NvZGVfcmF0ZSA9IE1YTF9IWURSQV9GRUNfQVVUTztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDc0LVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ4MS1cXHRzdGF0ZS1cXHUwMDNldHVuZXJfaW5fdXNlID0gc3RhdGUtXFx1MDAzZXR1bmVyO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0ODI6XFx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9ERU1PRF9TRVRfUEFSQU1fQ01ELCBNWExfQ01EX1dSSVRFLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00ODMtXFx0XFx0XFx0Y21kX3NpemUsIFxcdTAwMjZkZW1vZF9jaGFuX2NmZywgY21kX2J1ZmYpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0ODQ6XFx0c3RhdCA9IHNlbmRfY29tbWFuZChzdGF0ZSwgY21kX3NpemUgKyBNWExfSFlEUkFfQ01EX0hFQURFUl9TSVpFLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00ODUtXFx0XFx0XFx0ICAgIFxcdTAwMjZjbWRfYnVmZlswXSk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9NTEyPXN0YXRpYyBpbnQgcmVhZF9zbnIoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTE5LVxcdG11dGV4X2xvY2soXFx1MDAyNnN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2VzdGF0dXNfbG9jayk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjUyMDpcXHRIWURSQV9ERU1PRF9TVEFUVVNfTE9DSyhzdGF0ZSwgc3RhdGUtXFx1MDAzZWRlbW9kKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTIxOlxcdHN0YXQgPSByZWFkX3JlZ2lzdGVyKHN0YXRlLCAoSFlEUkFfRE1EX1NOUl9BRERSX09GRlNFVCArXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjUyMjpcXHRcXHRcXHRcXHQgICAgIEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVxcdTAwM2VkZW1vZCkpLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01MjMtXFx0XFx0XFx0ICAgICBcXHUwMDI2cmVnX2RhdGEpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1MjQ6XFx0SFlEUkFfREVNT0RfU1RBVFVTX1VOTE9DSyhzdGF0ZSwgc3RhdGUtXFx1MDAzZWRlbW9kKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTI1LVxcdG11dGV4X3VubG9jayhcXHUwMDI2c3RhdGUtXFx1MDAzZWJhc2UtXFx1MDAzZXN0YXR1c19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz01MzM9c3RhdGljIGludCByZWFkX2JlcihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01MzktXFx0bXV0ZXhfbG9jayhcXHUwMDI2c3RhdGUtXFx1MDAzZWJhc2UtXFx1MDAzZXN0YXR1c19sb2NrKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTQwOlxcdEhZRFJBX0RFTU9EX1NUQVRVU19MT0NLKHN0YXRlLCBzdGF0ZS1cXHUwMDNlZGVtb2QpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDEtXFx0cmVhZF9yZWdpc3Rlcl9ibG9jayhzdGF0ZSxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTQyOlxcdFxcdChIWURSQV9ETURfRFZCU18xU1RfQ09SUl9SU19FUlJPUlNfQUREUl9PRkZTRVQgK1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1NDM6XFx0XFx0IEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVxcdTAwM2VkZW1vZCkpLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDQtXFx0XFx0KDQgKiBzaXplb2YodTMyKSksXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTU0NS1cXHRcXHQodTggKikgXFx1MDAyNnJlZ1swXSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU0NjpcXHRIWURSQV9ERU1PRF9TVEFUVVNfVU5MT0NLKHN0YXRlLCBzdGF0ZS1cXHUwMDNlZGVtb2QpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDctXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTYwLVxcdHJlYWRfcmVnaXN0ZXJfYmxvY2soc3RhdGUsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU2MTpcXHRcXHQoSFlEUkFfRE1EX0RWQlMyX0NSQ19FUlJPUlNfQUREUl9PRkZTRVQgK1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1NjI6XFx0XFx0IEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVxcdTAwM2VkZW1vZCkpLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NjMtXFx0XFx0KDcgKiBzaXplb2YodTMyKSksXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9NTg5PXN0YXRpYyBpbnQgcmVhZF9zaWduYWxfc3RyZW5ndGgoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTk2LVxcdG11dGV4X2xvY2soXFx1MDAyNnN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2VzdGF0dXNfbG9jayk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU5NzpcXHRIWURSQV9ERU1PRF9TVEFUVVNfTE9DSyhzdGF0ZSwgc3RhdGUtXFx1MDAzZWRlbW9kKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTk4OlxcdHN0YXQgPSByZWFkX3JlZ2lzdGVyKHN0YXRlLCAoSFlEUkFfRE1EX1NUQVRVU19JTlBVVF9QT1dFUl9BRERSICtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTk5OlxcdFxcdFxcdFxcdCAgICAgSFlEUkFfRE1EX1NUQVRVU19PRkZTRVQoc3RhdGUtXFx1MDAzZWRlbW9kKSksXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTYwMC1cXHRcXHRcXHQgICAgIFxcdTAwMjZyZWdfZGF0YSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYwMTpcXHRIWURSQV9ERU1PRF9TVEFUVVNfVU5MT0NLKHN0YXRlLCBzdGF0ZS1cXHUwMDNlZGVtb2QpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02MDItXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTYxMD1zdGF0aWMgaW50IHJlYWRfc3RhdHVzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCBlbnVtIGZlX3N0YXR1cyAqc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTYxNi1cXHRtdXRleF9sb2NrKFxcdTAwMjZzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2MTc6XFx0SFlEUkFfREVNT0RfU1RBVFVTX0xPQ0soc3RhdGUsIHN0YXRlLVxcdTAwM2VkZW1vZCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYxODpcXHRyZWFkX3JlZ2lzdGVyKHN0YXRlLCAoSFlEUkFfRE1EX0xPQ0tfU1RBVFVTX0FERFJfT0ZGU0VUICtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NjE5OlxcdFxcdFxcdCAgICAgSFlEUkFfRE1EX1NUQVRVU19PRkZTRVQoc3RhdGUtXFx1MDAzZWRlbW9kKSksXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTYyMC1cXHRcXHRcXHQgICAgIFxcdTAwMjZyZWdfZGF0YSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYyMTpcXHRIWURSQV9ERU1PRF9TVEFUVVNfVU5MT0NLKHN0YXRlLCBzdGF0ZS1cXHUwMDNlZGVtb2QpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02MjItXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTY0OD1zdGF0aWMgaW50IHR1bmUoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGJvb2wgcmVfdHVuZSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02NjUtXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY2NjpzdGF0aWMgZW51bSBmZV9jb2RlX3JhdGUgY29udl9mZWMoZW51bSBNWExfSFlEUkFfRkVDX0UgZmVjKVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02Njcte1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY3My1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6Njc0OlxcdGlmIChmZWMgXFx1MDAzZSBNWExfSFlEUkFfRkVDXzlfMTApXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY3NS1cXHRcXHRyZXR1cm4gRkVDX05PTkU7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9Njc5PXN0YXRpYyBpbnQgZ2V0X2Zyb250ZW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLFxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY4Ni1cXHRtdXRleF9sb2NrKFxcdTAwMjZzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2ODc6XFx0SFlEUkFfREVNT0RfU1RBVFVTX0xPQ0soc3RhdGUsIHN0YXRlLVxcdTAwM2VkZW1vZCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY4OC1cXHRyZWFkX3JlZ2lzdGVyX2Jsb2NrKHN0YXRlLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2ODk6XFx0XFx0KEhZRFJBX0RNRF9TVEFOREFSRF9BRERSX09GRlNFVCArXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY5MDpcXHRcXHRIWURSQV9ETURfU1RBVFVTX09GRlNFVChzdGF0ZS1cXHUwMDNlZGVtb2QpKSxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjkxLVxcdFxcdChNWExfREVNT0RfQ0hBTl9QQVJBTVNfQlVGRl9TSVpFICogNCksIC8qIDI1ICogNCBieXRlcyAqL1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY5NC1cXHRyZWFkX3JlZ2lzdGVyX2Jsb2NrKHN0YXRlLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2OTU6XFx0XFx0KEhZRFJBX0RNRF9TVEFUVVNfQ0VOVEVSX0ZSRVFfSU5fS0haX0FERFIgK1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2OTY6XFx0XFx0SFlEUkFfRE1EX1NUQVRVU19PRkZTRVQoc3RhdGUtXFx1MDAzZWRlbW9kKSksXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY5Ny1cXHRcXHQoNCksIC8qIDQgYnl0ZXMgKi9cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjk4LVxcdFxcdCh1OCAqKSBcXHUwMDI2ZnJlcSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY5OTpcXHRIWURSQV9ERU1PRF9TVEFUVVNfVU5MT0NLKHN0YXRlLCBzdGF0ZS1cXHUwMDNlZGVtb2QpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MDAtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcwOC1cXHQgKiBwLVxcdTAwM2VkZWxpdmVyeV9zeXN0ZW0gPVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MDk6XFx0ICpcXHQoTVhMX0hZRFJBX0JDQVNUX1NURF9FKSByZWdEYXRhW0RNRF9TVEFOREFSRF9BRERSXTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzEwLVxcdCAqIHAtXFx1MDAzZWludmVyc2lvbiA9XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjcxMTpcXHQgKlxcdChNWExfSFlEUkFfU1BFQ1RSVU1fRSkgcmVnRGF0YVtETURfU1BFQ1RSVU1fSU5WRVJTSU9OX0FERFJdO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MTItXFx0ICogZnJlcVNlYXJjaFJhbmdlS0h6ID1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MjAtXFx0Y2FzZSBTWVNfRFZCUzI6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjcyMTpcXHRcXHRzd2l0Y2ggKChlbnVtIE1YTF9IWURSQV9QSUxPVFNfRSlcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzIyLVxcdFxcdFxcdHJlZ19kYXRhW0RNRF9EVkJTMl9QSUxPVF9PTl9PRkZfQUREUl0pIHtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzIzOlxcdFxcdGNhc2UgTVhMX0hZRFJBX1BJTE9UU19PRkY6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcyNC1cXHRcXHRcXHRwLVxcdTAwM2VwaWxvdCA9IFBJTE9UX09GRjtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzI1LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MjY6XFx0XFx0Y2FzZSBNWExfSFlEUkFfUElMT1RTX09OOlxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MjctXFx0XFx0XFx0cC1cXHUwMDNlcGlsb3QgPSBQSUxPVF9PTjtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MzMtXFx0Y2FzZSBTWVNfRFZCUzpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzM0OlxcdFxcdHN3aXRjaCAoKGVudW0gTVhMX0hZRFJBX01PRFVMQVRJT05fRSlcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzM1LVxcdFxcdFxcdHJlZ19kYXRhW0RNRF9NT0RVTEFUSU9OX1NDSEVNRV9BRERSXSkge1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MzY6XFx0XFx0Y2FzZSBNWExfSFlEUkFfTU9EX1FQU0s6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTczNy1cXHRcXHRcXHRwLVxcdTAwM2Vtb2R1bGF0aW9uID0gUVBTSztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzM4LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3Mzk6XFx0XFx0Y2FzZSBNWExfSFlEUkFfTU9EXzhQU0s6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc0MC1cXHRcXHRcXHRwLVxcdTAwM2Vtb2R1bGF0aW9uID0gUFNLXzg7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzQ0LVxcdFxcdH1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzQ1OlxcdFxcdHN3aXRjaCAoKGVudW0gTVhMX0hZRFJBX1JPTExPRkZfRSlcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzQ2LVxcdFxcdFxcdHJlZ19kYXRhW0RNRF9TUEVDVFJVTV9ST0xMX09GRl9BRERSXSkge1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3NDc6XFx0XFx0Y2FzZSBNWExfSFlEUkFfUk9MTE9GRl8wXzIwOlxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03NDgtXFx0XFx0XFx0cC1cXHUwMDNlcm9sbG9mZiA9IFJPTExPRkZfMjA7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc0OS1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzUwOlxcdFxcdGNhc2UgTVhMX0hZRFJBX1JPTExPRkZfMF8zNTpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzUxLVxcdFxcdFxcdHAtXFx1MDAzZXJvbGxvZmYgPSBST0xMT0ZGXzM1O1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03NTItXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjc1MzpcXHRcXHRjYXNlIE1YTF9IWURSQV9ST0xMT0ZGXzBfMjU6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc1NC1cXHRcXHRcXHRwLVxcdTAwM2Vyb2xsb2ZmID0gUk9MTE9GRl8yNTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz04MDc9c3RhdGljIHZvaWQgY2ZnX2Rldl94dGFsKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgZnJlcSwgdTMyIGNhcCwgdTMyIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy04MTItXFx0aWYgKGZyZXEgPT0gMjQwMDAwMDApXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjgxMzpcXHRcXHR3cml0ZV9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfQ1JZU1RBTF9TRVRUSU5HLCAwKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtODE0LVxcdGVsc2VcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6ODE1OlxcdFxcdHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9DUllTVEFMX1NFVFRJTkcsIDEpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy04MTYtXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjgxNzpcXHR3cml0ZV9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfQ1JZU1RBTF9DQVAsIGNhcCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTgxOC19XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9ODQxPXN0YXRpYyBpbnQgd3JpdGVfZndfc2VnbWVudChzdHJ1Y3QgbXhsICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy04NDgtXFx0dTggKndfYnVmX3B0ciA9IE5VTEw7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg0OTpcXHR1MzIgYmxvY2tfc2l6ZSA9ICgoTVhMX0hZRFJBX09FTV9NQVhfQkxPQ0tfV1JJVEVfTEVOR1RIIC1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6ODUwOlxcdFxcdFxcdCAoTVhMX0hZRFJBX0kyQ19IRFJfU0laRSArXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg1MTpcXHRcXHRcXHQgIE1YTF9IWURSQV9SRUdfU0laRV9JTl9CWVRFUykpIC8gNCkgKiA0O1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo4NTI6XFx0dTggd19tc2dfYnVmZmVyW01YTF9IWURSQV9PRU1fTUFYX0JMT0NLX1dSSVRFX0xFTkdUSCAtXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg1MzpcXHRcXHQgICAgICAoTVhMX0hZRFJBX0kyQ19IRFJfU0laRSArIE1YTF9IWURSQV9SRUdfU0laRV9JTl9CWVRFUyldO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy04NTQtXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9ODc2PXN0YXRpYyBpbnQgZG9fZmlybXdhcmVfZG93bmxvYWQoc3RydWN0IG14bCAqc3RhdGUsIHU4ICptYmluX2J1ZmZlcl9wdHIsXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTA3LVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5MDg6XFx0XFx0aWYgKHN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2V0eXBlID09IE1YTF9IWURSQV9ERVZJQ0VfNTY4KSB7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTkwOS1cXHRcXHRcXHRpZiAoKCgoc2VnX2FkZHJlc3MgXFx1MDAyNiAweDkwNzYwMDAwKSA9PSAweDkwNzYwMDAwKSB8fFxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTk1Nz1zdGF0aWMgaW50IGZpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCBteGwgKnN0YXRlLCB1OCAqbWJpbiwgdTMyIG1iaW5fbGVuKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk2MC1cXHR1MzIgcmVnX2RhdGEgPSAwO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5NjE6XFx0c3RydWN0IE1YTF9IWURSQV9TS1VfQ09NTUFORF9UIGRldl9za3VfY2ZnO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5NjI6XFx0dTggY21kX3NpemUgPSBzaXplb2Yoc3RydWN0IE1YTF9IWURSQV9TS1VfQ09NTUFORF9UKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTYzOlxcdHU4IGNtZF9idWZmW3NpemVvZihzdHJ1Y3QgTVhMX0hZRFJBX1NLVV9DT01NQU5EX1QpICsgNl07XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk2NC1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05NzQtXFx0LyogUmVzZXQgVFggRklGTydzLCBCQkFORCwgWEJBUiAqL1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5NzU6XFx0c3RhdHVzID0gd3JpdGVfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX1JFU0VUX1RSQU5TUE9SVF9GSUZPX1JFRyxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTc2OlxcdFxcdFxcdFxcdEhZRFJBX1JFU0VUX1RSQU5TUE9SVF9GSUZPX0RBVEEpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05NzctXFx0aWYgKHN0YXR1cylcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTc4LVxcdFxcdHJldHVybiBzdGF0dXM7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk3OTpcXHRzdGF0dXMgPSB3cml0ZV9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfUkVTRVRfQkJBTkRfUkVHLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5ODA6XFx0XFx0XFx0XFx0SFlEUkFfUkVTRVRfQkJBTkRfREFUQSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk4MS1cXHRpZiAoc3RhdHVzKVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05ODItXFx0XFx0cmV0dXJuIHN0YXR1cztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTgzOlxcdHN0YXR1cyA9IHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9SRVNFVF9YQkFSX1JFRyxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTg0OlxcdFxcdFxcdFxcdEhZRFJBX1JFU0VUX1hCQVJfREFUQSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk4NS1cXHRpZiAoc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk5MC1cXHQgKi9cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTkxOlxcdHN0YXR1cyA9IHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9NT0RVTEVTX0NMS18yX1JFRyxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTkyOlxcdFxcdFxcdFxcdEhZRFJBX0RJU0FCTEVfQ0xLXzIpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05OTMtXFx0aWYgKHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05OTUtXFx0LyogQ2xlYXIgU29mdHdhcmUgXFx1MDAyNiBIb3N0IGludGVycnVwdCBzdGF0dXMgLSAoQ2xlYXIgb24gcmVhZCkgKi9cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTk2OlxcdHN0YXR1cyA9IHJlYWRfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX1BSQ01fUk9PVF9DTEtfUkVHLCBcXHUwMDI2cmVnX2RhdGEpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05OTctXFx0aWYgKHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDAyLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDAzOlxcdGlmIChzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU2OCkge1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDA0LVxcdFxcdHVzbGVlcF9yYW5nZSgxMDAwMCwgMTEwMDApO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNDAtXFx0ZGV2X3NrdV9jZmcuc2t1X3R5cGUgPSBzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc2t1X3R5cGU7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNDE6XFx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9ERVZfQ0ZHX1NLVV9DTUQsIE1YTF9DTURfV1JJVEUsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNDItXFx0XFx0XFx0Y21kX3NpemUsIFxcdTAwMjZkZXZfc2t1X2NmZywgY21kX2J1ZmYpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDQzOlxcdHN0YXR1cyA9IHNlbmRfY29tbWFuZChzdGF0ZSwgY21kX3NpemUgKyBNWExfSFlEUkFfQ01EX0hFQURFUl9TSVpFLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDQ0LVxcdFxcdFxcdCAgICAgIFxcdTAwMjZjbWRfYnVmZlswXSk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MTA0OT1zdGF0aWMgaW50IGNmZ190c19wYWRfbXV4KHN0cnVjdCBteGwgKnN0YXRlLCBlbnVtIE1YTF9CT09MX0UgZW5hYmxlX3NlcmlhbF90cylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDU1LVxcdFxcdHBhZF9tdXhfdmFsdWUgPSAwO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDU2OlxcdFxcdGlmICgoc3RhdGUtXFx1MDAzZWJhc2UtXFx1MDAzZXR5cGUgPT0gTVhMX0hZRFJBX0RFVklDRV81NDEpIHx8XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNTc6XFx0XFx0ICAgIChzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU0MVMpKVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDU4LVxcdFxcdFxcdHBhZF9tdXhfdmFsdWUgPSAyO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDU5LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNjA6XFx0XFx0aWYgKChzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU4MSkgfHxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTA2MTpcXHRcXHQgICAgKHN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2V0eXBlID09IE1YTF9IWURSQV9ERVZJQ0VfNTgxUykpXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNjItXFx0XFx0XFx0cGFkX211eF92YWx1ZSA9IDI7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTA2Ny1cXHRzd2l0Y2ggKHN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2V0eXBlKSB7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNjg6XFx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU2MTpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTA2OTpcXHRjYXNlIE1YTF9IWURSQV9ERVZJQ0VfNTgxOlxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDcwOlxcdGNhc2UgTVhMX0hZRFJBX0RFVklDRV81NDE6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNzE6XFx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU0MVM6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNzI6XFx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU2MVM6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNzM6XFx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU4MVM6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNzQtXFx0XFx0c3RhdHVzIHw9IHVwZGF0ZV9ieV9tbmVtb25pYyhzdGF0ZSwgMHg5MDAwMDE3MCwgMjQsIDMsXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTEwMS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTEwMjpcXHRjYXNlIE1YTF9IWURSQV9ERVZJQ0VfNTQ0OlxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMTAzOlxcdGNhc2UgTVhMX0hZRFJBX0RFVklDRV81NDI6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTExMDQtXFx0XFx0c3RhdHVzIHw9IHVwZGF0ZV9ieV9tbmVtb25pYyhzdGF0ZSwgMHg5MDAwMDE2QywgNCwgMywgMSk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTE5MS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTE5MjpcXHRjYXNlIE1YTF9IWURSQV9ERVZJQ0VfNTY4OlxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMTkzLVxcdFxcdGlmIChlbmFibGVfc2VyaWFsX3RzID09IE1YTF9GQUxTRSkge1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEyODQtXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEyODU6XFx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU4NDpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTI4Ni1cXHRkZWZhdWx0Olxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTEzMTQ9c3RhdGljIGludCBzZXRfZHJpdmVfc3RyZW5ndGgoc3RydWN0IG14bCAqc3RhdGUsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEzMTU6XFx0XFx0ZW51bSBNWExfSFlEUkFfVFNfRFJJVkVfU1RSRU5HVEhfRSB0c19kcml2ZV9zdHJlbmd0aClcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTMxNi17XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MTM0Nj1zdGF0aWMgaW50IGVuYWJsZV90dW5lcihzdHJ1Y3QgbXhsICpzdGF0ZSwgdTMyIHR1bmVyLCB1MzIgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNDgtXFx0aW50IHN0YXQgPSAwO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzQ5OlxcdHN0cnVjdCBNWExfSFlEUkFfVFVORVJfQ01EIGN0cmxfdHVuZXJfY21kO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMzUwLVxcdHU4IGNtZF9zaXplID0gc2l6ZW9mKGN0cmxfdHVuZXJfY21kKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM1MTpcXHR1OCBjbWRfYnVmZltNWExfSFlEUkFfT0VNX01BWF9DTURfQlVGRl9MRU5dO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMzUyLVxcdHUzMiB2YWwsIGNvdW50ID0gMTA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTM1NS1cXHRjdHJsX3R1bmVyX2NtZC5lbmFibGUgPSBlbmFibGU7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEzNTY6XFx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9UVU5FUl9BQ1RJVkFURV9DTUQsIE1YTF9DTURfV1JJVEUsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNTctXFx0XFx0XFx0Y21kX3NpemUsIFxcdTAwMjZjdHJsX3R1bmVyX2NtZCwgY21kX2J1ZmYpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzU4OlxcdHN0YXQgPSBzZW5kX2NvbW1hbmQoc3RhdGUsIGNtZF9zaXplICsgTVhMX0hZRFJBX0NNRF9IRUFERVJfU0laRSxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTM1OS1cXHRcXHRcXHQgICAgXFx1MDAyNmNtZF9idWZmWzBdKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMzYxLVxcdFxcdHJldHVybiBzdGF0O1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzYyOlxcdHJlYWRfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX1RVTkVSX0VOQUJMRV9DT01QTEVURSwgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNjMtXFx0d2hpbGUgKC0tY291bnQgXFx1MDAyNlxcdTAwMjYgKCh2YWwgXFx1MDAzZVxcdTAwM2UgdHVuZXIpIFxcdTAwMjYgMSkgIT0gZW5hYmxlKSB7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNjQtXFx0XFx0bXNsZWVwKDIwKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM2NTpcXHRcXHRyZWFkX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9UVU5FUl9FTkFCTEVfQ09NUExFVEUsIFxcdTAwMjZ2YWwpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjoxNi40MjI2NTU2MTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA1MjY1OTE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBaT1JSTzgzOTAgU3VwcG9ydCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWdgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGBaT1JSTzgzOTBgIEV0aGVybmV0IGRyaXZlci4gSSdtIGFzc3VtaW5nIGl0J3MgbGlrZWx5IGRlZmluZWQgdGhlcmUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBhbmQgdW5kZXJzdGFuZCBob3cgaXQncyBjb250cm9sbGVkLiBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcz8gQ29uZGl0aW9uYWwgY29tcGlsYXRpb24/IEFueSBzcGVjaWZpYyBDT05GSUcgb3B0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZiB3aGVuIGNvbnNpZGVyaW5nIHRoaXMgZnVuY3Rpb25hbGl0eT8gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBmaWxlIGlzIHRoZSBmaXJzdCwgZXNzZW50aWFsIHN0ZXAgdG8gZ3Jhc3BpbmcgaG93IHRoaXMgZHJpdmVyIGlzIGludGVncmF0ZWQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgY2hhcmFjdGVyaXN0aWNzLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTA5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MTguNDc1MzE4NzAyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFx0ICBTdXBwb3J0IGZvciBjYXJkcyBiYXNlZCBvbiB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzOTAyQVZcXG4gMTUxOlxcdFxcdCAgU1QtTklDIFNlcmlhbCBOZXR3b3JrIEludGVyZmFjZSBDb250cm9sbGVyIGZvciBUd2lzdGVkIFBhaXIuICBUaGlzXFxuIDE1MjpcXHRcXHQgIGlzIGEgMTBNYml0L3NlYyBFdGhlcm5ldCBjb250cm9sbGVyLiAgUHJvZHVjdCBvdmVydmlldyBhbmQgc3BlY3MgYXRcXG4gMTUzOlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0RQL0RQODM5MDJBLmh0bWxcXHUwMDNlLlxcbiAxNTQ6XFx0XFxuIDE1NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE1NjpcXHRcXG4gMTU3OlxcdGNvbmZpZyBaT1JSTzgzOTBcXG4gMTU4OlxcdFxcdHRyaXN0YXRlIFxcXCJab3JybyBOUzgzOTAtYmFzZWQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gMTU5OlxcdFxcdGRlcGVuZHMgb24gWk9SUk9cXG4gMTYwOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxNjE6XFx0XFx0aGVscFxcbiAxNjI6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBmb3IgWm9ycm8gRXRoZXJuZXQgY2FyZHMgdXNpbmcgYW4gTlM4MzkwLWNvbXBhdGlibGVcXG4gMTYzOlxcdFxcdCAgY2hpcHNldCwgbGlrZSB0aGUgVmlsbGFnZSBUcm9uaWMgQXJpYWRuZSBJSSBhbmQgdGhlIEluZGl2aWR1YWxcXG4gMTY0OlxcdFxcdCAgQ29tcHV0ZXJzIFgtU3VyZiBFdGhlcm5ldCBjYXJkcy4gSWYgeW91IGhhdmUgc3VjaCBhIGNhcmQsIHNheSBZLlxcbiAxNjU6XFx0XFx0ICBPdGhlcndpc2UsIHNheSBOLlxcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTY4OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgem9ycm84MzkwLlxcbiAxNjk6XFx0XFxuIDE3MDpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfODM5MFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjoxOC40NzU0MTMwMjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzM5ODkyMjkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlOiBBTUQgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBcIldoZXJlIGRvIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIGludG8gdGhpcyBBTUQgRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24/XCIgTmF0dXJhbGx5LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgYEtjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgY29yZSBvZiBob3cgdGhlIGJ1aWxkIHN5c3RlbSB1bmRlcnN0YW5kcyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmFibGUgZm9yIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWdgIOKAkyB0aGF0J3MgdGhlIGJyZWFkY3J1bWIgdHJhaWwgSSdtIGZvbGxvd2luZy4gSSdtIGFzc3VtaW5nIHRoYXQgYnkgZXhhbWluaW5nIHRoaXMgZmlsZSwgSSBjYW4gYnVpbGQgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgYXZhaWxhYmxlIG9wdGlvbnMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBzdWJzeXN0ZW1zLCBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgQU1EIEV0aGVybmV0IGNvbnRyb2xsZXIgc3VwcG9ydC4gSSdtIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSB1c3VhbCBzdXNwZWN0cyDigJMgZGV2aWNlIHN1cHBvcnQsIGZlYXR1cmUgZmxhZ3MgKGxpa2UganVtYm8gZnJhbWVzLCBjaGVja3N1bSBvZmZsb2FkLCBWTEFOKSwgYW5kIHByb2JhYmx5IHNvbWUgbW9kdWxlL2J1aWx0LWluIGNob2ljZXMuIFRoaXMgc2hvdWxkIGJlIGEgZmFpcmx5IHN0YW5kYXJkIHN0YXJ0aW5nIHBvaW50IGZvciBhbnlvbmUgaW52ZXN0aWdhdGluZyBhIHBhcnRpY3VsYXIgZHJpdmVyJ3MgY29uZmlndXJhYmxlIGFzcGVjdHMgd2l0aGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzIwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjoyMS44NzQzMzgwMDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFxuICAyMTpcXHRpZiBORVRfVkVORE9SX0FNRFxcbiAgMjI6XFx0XFxuICAyMzpcXHRjb25maWcgQTIwNjVcXG4gIDI0OlxcdFxcdHRyaXN0YXRlIFxcXCJBMjA2NSBzdXBwb3J0XFxcIlxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBaT1JST1xcbiAgMjY6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIElmIHlvdSBoYXZlIGEgQ29tbW9kb3JlIEEyMDY1IEV0aGVybmV0IGFkYXB0ZXIsIHNheSBZLiBPdGhlcndpc2UsXFxuICAyOTpcXHRcXHQgIHNheSBOLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDMyOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgYTIwNjUuXFxuICAzMzpcXHRcXG4gIDM0OlxcdGNvbmZpZyBBTUQ4MTExX0VUSFxcbiAgMzU6XFx0XFx0dHJpc3RhdGUgXFxcIkFNRCA4MTExIChuZXcgUENJIExBTkNFKSBzdXBwb3J0XFxcIlxcbiAgMzY6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDM3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMzg6XFx0XFx0c2VsZWN0IE1JSVxcbiAgMzk6XFx0XFx0aGVscFxcbiAgNDA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhbiBBTUQgODExMS1iYXNlZCBQQ0kgTEFOQ0UgZXRoZXJuZXQgY2FyZCxcXG4gIDQxOlxcdFxcdCAgYW5zd2VyIFkgaGVyZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICA0NDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGFtZDgxMTFlLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRjb25maWcgUENORVQzMlxcbiAgNDc6XFx0XFx0dHJpc3RhdGUgXFxcIkFNRCBQQ25ldDMyIFBDSSBzdXBwb3J0XFxcIlxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbiAgNDk6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA1MDpcXHRcXHRzZWxlY3QgTUlJXFxuICA1MTpcXHRcXHRoZWxwXFxuICA1MjpcXHRcXHQgIElmIHlvdSBoYXZlIGEgUENuZXQzMiBvciBQQ25ldFBDSSBiYXNlZCBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCxcXG4gIDUzOlxcdFxcdCAgYW5zd2VyIFkgaGVyZS5cXG4gIDU0OlxcdFxcbiAgNTU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICA1NjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHBjbmV0MzIuXFxuICA1NzpcXHRcXG4gIDU4OlxcdGNvbmZpZyBBUklBRE5FXFxuICA1OTpcXHRcXHR0cmlzdGF0ZSBcXFwiQXJpYWRuZSBzdXBwb3J0XFxcIlxcbiAgNjA6XFx0XFx0ZGVwZW5kcyBvbiBaT1JST1xcbiAgNjE6XFx0XFx0aGVscFxcbiAgNjI6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIFZpbGxhZ2UgVHJvbmljIEFyaWFkbmUgRXRoZXJuZXQgYWRhcHRlciwgc2F5IFkuXFxuICA2MzpcXHRcXHQgIE90aGVyd2lzZSwgc2F5IE4uXFxuICA2NDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MjEuODc0NDA3NDE0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4MTI3MTE4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBJbnNwZWN0aW9uOiBTQ1NJIERyaXZlcnMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsZWQgYW5kIGRpc2FibGVkIHJlZ2FyZGluZyB0aGUgU0NTSSBzdWJzeXN0ZW0uIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQg4oCTIGl0J3MgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciBkcml2ZXIgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIFNDU0kgYXJlYS4gSSdsbCBuZWVkIHRvIHJhcGlkbHkgcGFyc2UgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZmlsZSwgaWRlbnRpZnlpbmcgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIGFueSB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zLiBNeSBnb2FsIGlzIHRvIGdyYXNwIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyYWwgY2hvaWNlcyByZWdhcmRpbmcgd2hpY2ggU0NTSSBkcml2ZXJzIGFyZSBpbmNsdWRlZCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBUaGlzIHdpbGwgaGVscCBtZSBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGF2YWlsYWJsZSBvcHRpb25zIGFuZCBob3cgdGhleSdyZSBpbnRlbmRlZCB0byBiZSB1c2VkLiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBjb250YWluZWQgd2l0aGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDU2NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MjMuNjg3MTIyNDcxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTg5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3Njc2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzAwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzAwOlxcdFxcbjEzMDE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4xMzAyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGEzMDAwLlxcbjEzMDM6XFx0XFxuMTMwNDpcXHRjb25maWcgQTIwOTFfU0NTSVxcbjEzMDU6XFx0XFx0dHJpc3RhdGUgXFxcIkEyMDkxL0E1OTAgV0QzM0M5M0Egc3VwcG9ydFxcXCJcXG4xMzA2OlxcdFxcdGRlcGVuZHMgb24gWk9SUk8gXFx1MDAyNlxcdTAwMjYgU0NTSVxcbjEzMDc6XFx0XFx0aGVscFxcbjEzMDg6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIENvbW1vZG9yZSBBMjA5MSBTQ1NJIGNvbnRyb2xsZXIsIHNheSBZLiBPdGhlcndpc2UsXFxuMTMwOTpcXHRcXHQgIHNheSBOLlxcbjEzMTA6XFx0XFxuMTMxMTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbjEzMTI6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYTIwOTEuXFxuMTMxMzpcXHRcXG4xMzE0OlxcdGNvbmZpZyBHVlAxMV9TQ1NJXFxuMTMxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiR1ZQIFNlcmllcyBJSSBXRDMzQzkzQSBzdXBwb3J0XFxcIlxcbjEzMTY6XFx0XFx0ZGVwZW5kcyBvbiBaT1JSTyBcXHUwMDI2XFx1MDAyNiBTQ1NJXFxuMTMxNzpcXHRcXHRoZWxwXFxuMTMxODpcXHRcXHQgIElmIHlvdSBoYXZlIGEgR3JlYXQgVmFsbGV5IFByb2R1Y3RzIFNlcmllcyBJSSBTQ1NJIGNvbnRyb2xsZXIsXFxuMTMxOTpcXHRcXHQgIGFuc3dlciBZLiBBbHNvIHNheSBZIGlmIHlvdSBoYXZlIGEgbGF0ZXIgbW9kZWwgb2YgR1ZQIFNDU0lcXG4xMzIwOlxcdFxcdCAgY29udHJvbGxlciAoc3VjaCBhcyB0aGUgR1ZQIEE0MDA4IG9yIGEgQ29tYm8gYm9hcmQpLiBPdGhlcndpc2UsXFxuMTMyMTpcXHRcXHQgIGFuc3dlciBOLiBUaGlzIGRyaXZlciBkb2VzIE5PVCB3b3JrIGZvciB0aGUgVC1SZXggc2VyaWVzIG9mXFxuMTMyMjpcXHRcXHQgIGFjY2VsZXJhdG9ycyBmcm9tIFRla01hZ2ljIGFuZCBHVlAtTS5cXG4xMzIzOlxcdFxcbjEzMjQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4xMzI1OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGd2cDExLlxcbjEzMjY6XFx0XFxuMTMyNzpcXHRjb25maWcgU0NTSV9BNDAwMFRcXG4xMzI4OlxcdFxcdHRyaXN0YXRlIFxcXCJBNDAwMFQgTkNSNTNjNzEwIFNDU0kgc3VwcG9ydFxcXCJcXG4xMzI5OlxcdFxcdGRlcGVuZHMgb24gQU1JR0EgXFx1MDAyNlxcdTAwMjYgU0NTSVxcbjEzMzA6XFx0XFx0c2VsZWN0IFNDU0lfU1BJX0FUVFJTXFxuMTMzMTpcXHRcXHRoZWxwXFxuMTMzMjpcXHRcXHQgIElmIHlvdSBoYXZlIGFuIEFtaWdhIDQwMDBUIGFuZCBoYXZlIFNDU0kgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlXFxuMTMzMzpcXHRcXHQgIGJ1aWx0LWluIFNDU0kgY29udHJvbGxlciwgc2F5IFkuIE90aGVyd2lzZSwgc2F5IE4uXFxuMTMzNDpcXHRcXG4xMzM1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuMTMzNjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhNDAwMHQuXFxuMTMzNzpcXHRcXG4xMzM4OlxcdGNvbmZpZyBTQ1NJX1pPUlJPN1hYXFxuMTMzOTpcXHRcXHR0cmlzdGF0ZSBcXFwiWm9ycm8gTkNSNTNjNzEwIFNDU0kgc3VwcG9ydFxcXCJcXG4xMzQwOlxcdFxcdGRlcGVuZHMgb24gWk9SUk8gXFx1MDAyNlxcdTAwMjYgU0NTSVxcbjEzNDE6XFx0XFx0c2VsZWN0IFNDU0lfU1BJX0FUVFJTXFxuMTM0MjpcXHRcXHRoZWxwXFxuMTM0MzpcXHRcXHQgIFN1cHBvcnQgZm9yIHZhcmlvdXMgTkNSNTNjNzEwLWJhc2VkIFNDU0kgY29udHJvbGxlcnMgb24gWm9ycm9cXG4xMzQ0OlxcdFxcdCAgZXhwYW5zaW9uIGJvYXJkcyBmb3IgdGhlIEFtaWdhLlxcbjEzNDU6XFx0XFx0ICBUaGlzIGluY2x1ZGVzOlxcbjEzNDY6XFx0XFx0ICAgIC0gdGhlIEFtaWdhIDQwOTEgWm9ycm8gSUlJIFNDU0ktMiBjb250cm9sbGVyLFxcbjEzNDc6XFx0XFx0ICAgIC0gdGhlIE1hY3JvU3lzdGVtIERldmVsb3BtZW50J3MgV2FycEVuZ2luZSBBbWlnYSBTQ1NJLTIgY29udHJvbGxlclxcbjEzNDg6XFx0XFx0ICAgICAgKGluZm8gYXRcXG4xMzQ5OlxcdFxcdCAgICAgIFxcdTAwM2NodHRwOi8vd3d3Lmx5c2F0b3IubGl1LnNlL2FtaWdhL2FyL2d1aWRlL2FyMzEwLmd1aWRlP0ZFQVRVUkU1XFx1MDAzZSksXFxuMTM1MDpcXHRcXHQgICAgLSB0aGUgU0NTSSBjb250cm9sbGVyIG9uIHRoZSBQaGFzZTUgQmxpenphcmQgUG93ZXJVUCA2MDNlK1xcbjEzNTE6XFx0XFx0ICAgICAgYWNjZWxlcmF0b3IgY2FyZCBmb3IgdGhlIEFtaWdhIDEyMDAsXFxuMTM1MjpcXHRcXHQgICAgLSB0aGUgU0NTSSBjb250cm9sbGVyIG9uIHRoZSBHVlAgVHVyYm8gMDQwLzA2MCBhY2NlbGVyYXRvci5cXG4xMzUzOlxcdFxcbjEzNTQ6XFx0Y29uZmlnIFNDU0lfWk9SUk9fRVNQXFxuMTM1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiWm9ycm8gRVNQIFNDU0kgc3VwcG9ydFxcXCJcXG4xMzU2OlxcdFxcdGRlcGVuZHMgb24gWk9SUk8gXFx1MDAyNlxcdTAwMjYgU0NTSVxcbjEzNTc6XFx0XFx0c2VsZWN0IFNDU0lfU1BJX0FUVFJTXFxuMTM1ODpcXHRcXHRzZWxlY3QgU0NTSV9FU1BfUElPXFxuMTM1OTpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjIzLjY4NzIzMDI0MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzg5ODM0OTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBaT1JSTyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiB0aGUgYFpPUlJPYCBkZXBlbmRlbmNpZXMuIEl0J3MgYSBjbGFzc2ljIEFtaWdhIGJ1cyBzeXN0ZW0sIGFuZCBJIGNhbiBzZWUgc2V2ZXJhbCBkcml2ZXJzIOKAkyBgSFlEUkFgLCBgWk9SUk84MzkwYCwgYEEyMDY1YCwgYEFSSUFETkVgLCBwbHVzIGEgZmV3IFNDU0kgY29udHJvbGxlcnMgKGBBMjA5MV9TQ1NJYCwgYEdWUDExX1NDU0lgLCBgU0NTSV9aT1JSTzdYWGAsIGBTQ1NJX1pPUlJPX0VTUGApIOKAkyBhbGwgdGllZCB0byBpdC4gVGhlIFNDU0kgb25lcyBoYXZlIHRoYXQgZXh0cmEgYFNDU0lgIGRlcGVuZGVuY3ksIHdoaWNoIGlzIGV4cGVjdGVkLiBObyBzdXJwcmlzZXMgc28gZmFyLlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzaXR1YXRpb24gd2l0aCBgWk9SUk9gIGl0c2VsZi4gSXMgaXQgZGVmaW5lZD8gSXMgaXQgZW5hYmxlZCBvbiB4ODZfNjQ/IEkndmUgZ290IHRvIHRyYWNlIGl0IGJhY2suIEkndmUgYWxyZWFkeSBkb25lIGEgcXVpY2sgc2VhcmNoIGZvciBgY29uZmlnIFpPUlJPYCBpbiB0aGUga2VybmVsIHRyZWUsIGFuZCB0aGF0IHR1cm5lZCB1cCBzb21lIHJlbGV2YW50IGZpbGVzOiBgYXJjaC9tNjhrL0tjb25maWcuYnVzYCAod2hlcmUgaXQncyBkZWZpbmVkKSwgYGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZ2AgKGZvciBgWk9SUk84MzkwYCksIGFuZCBgZHJpdmVycy96b3Jyby9LY29uZmlnYC5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiBgWk9SUk9gIGlzIHNvbWVob3cgZGVwZW5kZW50IG9uIGBBTUlHQWAsIHdoaWNoIHdvdWxkIG1ha2Ugc2Vuc2UgZ2l2ZW4gdGhlIGJ1cyBhcmNoaXRlY3R1cmUsIGFuZCB0aGF0IGBhcmNoL202OGsvS2NvbmZpZy5idXNgIGFzc29jaWF0aW9uLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMgaW4gdGhlIGBtNjhrYCBhcmNoaXRlY3R1cmUgb3Igb3RoZXIgcGxhY2VzIGluIHRoZSB0cmVlIHRvIGRldGVybWluZSBob3cgYFpPUlJPYCBpdHNlbGYgaXMgZGVmaW5lZCBhbmQgd2hhdCBpdCdzIGRlcGVuZGVudCBvbi4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc4MSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjI3LjA3NzA2NzgzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEzMTgzNzI2NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFpPUlJPXFxcXGJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjI5LjIwODkxMjIzMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDk1MTkxODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50IGRvd246XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBaT1JSTyBEZWZhdWx0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byBzb21ldGhpbmcgdGhhdCAqbWlnaHQqIGJlIHJlbGF0ZWQgdG8gWk9SUk8gYW5kIGEgZGVmYXVsdC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbGV2ZXJhZ2UgYGdyZXBwZXJgLiBJdCdzIG15IGdvLXRvIGZvciBxdWlja2x5IHNlYXJjaGluZyBjb2RlYmFzZXMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGVzcGVjaWFsbHkgd2hlbiBJJ20gZGVhbGluZyB3aXRoIHBhdHRlcm5zIG9yIGtleXdvcmRzIEkgc3VzcGVjdCBtaWdodCBiZSB1c2VkLiBJIGZpZ3VyZSwgc2luY2UgSSdtIHRyeWluZyB0byBzZWUgaWYgdGhlcmUncyBhIGRlZmF1bHQgcmVsYXRlZCB0byBaT1JSTywgSSBuZWVkIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBzZWFyY2guIEknbGwgc2VhcmNoIHdpdGggYGRlZmF1bHQuKlpPUlJPYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZSB2YXJpYXRpb25zIHRoYXQgbWlnaHQgY2F0Y2ggZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9ucyBvciBhYmJyZXZpYXRpb25zIHVzZWQgaW4gdGhlIGNvZGUuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgY29uZmlndXJhdGlvbiBvciBjb2RlIHNlY3Rpb25zIHdoZXJlIFpPUlJPIGlzIG1lbnRpb25lZCBpbiBjb25qdW5jdGlvbiB3aXRoIGEgZGVmYXVsdCBzZXR0aW5nLiBJdCdzIGEgcXVpY2sgd2F5IHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHRoZSBzeXN0ZW0gZG9lcyB3aXRoIFpPUlJPIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nIG9yIGlzbid0IHNwZWNpZmllZC4gVGhpcyBmZWVscyBsaWtlIHRoZSByaWdodCBmaXJzdCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU1MSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjMxLjMwNDEyNTcxM1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU3NTIzMTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlpPUlJPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbTY4ay9LY29uZmlnLmJ1cz0xNT1jb25maWcgTlVCVVNcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLmJ1cy0xOS1cXG5hcmNoL202OGsvS2NvbmZpZy5idXM6MjA6Y29uZmlnIFpPUlJPXFxuYXJjaC9tNjhrL0tjb25maWcuYnVzLTIxLVxcdGJvb2wgXFxcIkFtaWdhIFpvcnJvIChBdXRvQ29uZmlnKSBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYz0xNDE9aW50IF9faW5pdCBhbWlnYV9wYXJzZV9ib290aW5mbyhjb25zdCBzdHJ1Y3QgYmlfcmVjb3JkICpyZWNvcmQpXFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMTcxLVxcdGNhc2UgQklfQU1JR0FfQVVUT0NPTjpcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6MTcyOiNpZmRlZiBDT05GSUdfWk9SUk9cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6MTczOlxcdFxcdGlmICh6b3Jyb19udW1fYXV0b2NvbiBcXHUwMDNjIFpPUlJPX05VTV9BVVRPKSB7XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTE3NC1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgQ29uZmlnRGV2ICpjZCA9IGRhdGE7XFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMTgyLVxcdFxcdFxcdC8qIENTLUxBQiBXYXJwIDEyNjAgd29ya2Fyb3VuZCAqL1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoxODM6XFx0XFx0XFx0aWYgKGJlMTZfdG9fY3B1KGRldi1cXHUwMDNlcm9tLmVyX01hbnVmYWN0dXJlcikgPT0gWk9SUk9fTUFOVUYoWk9SUk9fUFJPRF9DU0xBQl9XQVJQXzEyNjApIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjE4NDpcXHRcXHRcXHQgICAgZGV2LVxcdTAwM2Vyb20uZXJfUHJvZHVjdCA9PSBaT1JST19QUk9EKFpPUlJPX1BST0RfQ1NMQUJfV0FSUF8xMjYwKSkge1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0xODUtXFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMTkxLVxcdFxcdFxcdHByX3dhcm4oXFxcImFtaWdhX3BhcnNlX2Jvb3RpbmZvOiB0b28gbWFueSBBdXRvQ29uZmlnIGRldmljZXNcXFxcblxcXCIpO1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoxOTI6I2VuZGlmIC8qIENPTkZJR19aT1JSTyAqL1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0xOTMtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM9MjA5PXN0YXRpYyB2b2lkIF9faW5pdCBhbWlnYV9pZGVudGlmeSh2b2lkKVxcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTI0Ny1cXHRcXHRBTUlHQUhXX1NFVChBMzAwMF9DTEspO1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoyNDg6XFx0XFx0QU1JR0FIV19TRVQoWk9SUk8zKTtcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMjQ5LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTI1Ni1cXHRcXHRBTUlHQUhXX1NFVChBMzAwMF9DTEspO1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoyNTc6XFx0XFx0QU1JR0FIV19TRVQoWk9SUk8zKTtcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMjU4LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTMyNC1cXHR9XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjMyNTpcXHRBTUlHQUhXX1NFVChaT1JSTyk7XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTMyNi1cXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0zNTktXFx0QU1JR0FIV19BTk5PVU5DRShQQ01DSUEsIFxcXCJQQ01DSUEgXFxcIik7XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjM2MDpcXHRpZiAoQU1JR0FIV19QUkVTRU5UKFpPUlJPKSlcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6MzYxOlxcdFxcdHByX2NvbnQoXFxcIlpPUlJPJXMgXFxcIiwgQU1JR0FIV19QUkVTRU5UKFpPUlJPMykgPyBcXFwiM1xcXCIgOiBcXFwiXFxcIik7XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTM2Mi1cXHRwcl9jb250KFxcXCJcXFxcblxcXCIpO1xcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jPTM3OT12b2lkIF9faW5pdCBjb25maWdfYW1pZ2Eodm9pZClcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy00MTMtXFx0LyogZG9uJ3QgdXNlIFoyIFJBTSBhcyBzeXN0ZW0gbWVtb3J5IG9uIFozIGNhcGFibGUgbWFjaGluZXMgKi9cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6NDE0OlxcdGlmIChBTUlHQUhXX1BSRVNFTlQoWk9SUk8zKSkge1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy00MTUtXFx0XFx0aW50IGksIGo7XFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM9NzgwPXN0YXRpYyB2b2lkIGFtaWdhX2dldF9oYXJkd2FyZV9saXN0KHN0cnVjdCBzZXFfZmlsZSAqbSlcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy04MzgtXFx0QU1JR0FIV19BTk5PVU5DRShQQ01DSUEsIFxcXCJQQ01DSUEgU2xvdFxcXCIpO1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzo4Mzk6I2lmZGVmIENPTkZJR19aT1JST1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzo4NDA6XFx0aWYgKEFNSUdBSFdfUFJFU0VOVChaT1JSTykpXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTg0MS1cXHRcXHRzZXFfcHJpbnRmKG0sIFxcXCJcXFxcdFpvcnJvIElJJXMgQXV0b0NvbmZpZzogJWQgRXhwYW5zaW9uIFxcXCJcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtODQyLVxcdFxcdFxcdFxcdFxcXCJEZXZpY2Ulc1xcXFxuXFxcIixcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6ODQzOlxcdFxcdFxcdFxcdEFNSUdBSFdfUFJFU0VOVChaT1JSTzMpID8gXFxcIklcXFwiIDogXFxcIlxcXCIsXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTg0NC1cXHRcXHRcXHRcXHR6b3Jyb19udW1fYXV0b2Nvbiwgc3RyX3BsdXJhbCh6b3Jyb19udW1fYXV0b2NvbikpO1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzo4NDU6I2VuZGlmIC8qIENPTkZJR19aT1JSTyAqL1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy04NDYtXFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy0xOC1cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYzoxOTojaWZkZWYgQ09ORklHX1pPUlJPXFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtMjAtXFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYz00OT1zdGF0aWMgaW50IF9faW5pdCBhbWlnYV9pbml0X2J1cyh2b2lkKVxcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtNTMtXFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6NTQ6XFx0aWYgKCFNQUNIX0lTX0FNSUdBIHx8ICFBTUlHQUhXX1BSRVNFTlQoWk9SUk8pKVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTU1LVxcdFxcdHJldHVybiAtRU5PREVWO1xcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTU2LVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jOjU3OlxcdG4gPSBBTUlHQUhXX1BSRVNFTlQoWk9SUk8zKSA/IDQgOiAyO1xcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTU4LVxcdHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKFxcXCJhbWlnYS16b3Jyb1xcXCIsIC0xLFxcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM9NjY9c3RhdGljIGludCBfX2luaXQgel9kZXZfcHJlc2VudCh6b3Jyb19pZCBpZClcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTcxLVxcdFxcdGNvbnN0IHN0cnVjdCBFeHBhbnNpb25Sb20gKnJvbSA9IFxcdTAwMjZ6b3Jyb19hdXRvY29uX2luaXRbaV0ucm9tO1xcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jOjcyOlxcdFxcdGlmIChiZTE2X3RvX2NwdShyb20tXFx1MDAzZWVyX01hbnVmYWN0dXJlcikgPT0gWk9SUk9fTUFOVUYoaWQpIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6NzM6XFx0XFx0ICAgIHJvbS1cXHUwMDNlZXJfUHJvZHVjdCA9PSBaT1JST19QUk9EKGlkKSlcXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy03NC1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTc5LVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jOjgwOiNlbHNlIC8qICFDT05GSUdfWk9SUk8gKi9cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy04MS1cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYz04Mj1zdGF0aWMgaW5saW5lIGludCB6X2Rldl9wcmVzZW50KHpvcnJvX2lkIGlkKSB7IHJldHVybiAwOyB9XFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtODMtXFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6ODQ6I2VuZGlmIC8qICFDT05GSUdfWk9SUk8gKi9cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy04NS1cXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jPTEzND1zdGF0aWMgaW50IF9faW5pdCBhbWlnYV9pbml0X2RldmljZXModm9pZClcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTE4My1cXHRpZiAoQU1JR0FIV19QUkVTRU5UKEExMjAwX0lERSkgfHxcXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYzoxODQ6XFx0ICAgIHpfZGV2X3ByZXNlbnQoWk9SUk9fUFJPRF9NVEVDX1ZJUEVSX01LX1ZfRV9NQVRSSVhfNTMwX1NDU0lfSURFKSkge1xcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTE4NS1cXHRcXHRwZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX3NpbXBsZShcXFwiYW1pZ2EtZ2F5bGUtaWRlXFxcIiwgLTEsXFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc9MTk9Q09ORklHX0FNSUdBPXlcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6MjA6Q09ORklHX1pPUlJPPXlcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctMjEtQ09ORklHX0FNSUdBX1BDTUNJQT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjIyOkNPTkZJR19aT1JST19OQU1FUz15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTIzLUNPTkZJR19IRUFSVEJFQVQ9eVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTI4MD1DT05GSUdfU0NTSV9BNDAwMFQ9eVxcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzoyODE6Q09ORklHX1NDU0lfWk9SUk83WFg9eVxcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzoyODI6Q09ORklHX1NDU0lfWk9SUk9fRVNQPXlcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctMjgzLUNPTkZJR19BVEE9eVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTMzOD1DT05GSUdfQVBORT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjMzOTpDT05GSUdfWk9SUk84MzkwPXlcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctMzQwLUNPTkZJR19QUFA9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTI5PUNPTkZJR19RNDA9eVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzozMDpDT05GSUdfWk9SUk89eVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy0zMS1DT05GSUdfQU1JR0FfUENNQ0lBPXlcXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9MzI9Q09ORklHX0FUQVJJX1JPTV9JU0E9eVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzozMzpDT05GSUdfWk9SUk9fTkFNRVM9eVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy0zNC1DT05GSUdfSEVBUlRCRUFUPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZz0yOTg9Q09ORklHX1NDU0lfQTQwMDBUPXlcXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6Mjk5OkNPTkZJR19TQ1NJX1pPUlJPN1hYPXlcXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6MzAwOkNPTkZJR19TQ1NJX1pPUlJPX0VTUD15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTMwMS1DT05GSUdfQVRBUklfU0NTST15XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9MzgzPUNPTkZJR19BUE5FPXlcXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6Mzg0OkNPTkZJR19aT1JSTzgzOTA9eVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy0zODUtQ09ORklHX1NNQzkxWD15XFxuLS1cXG5hcmNoL202OGsvaW5jbHVkZS9hc20vYW1pZ2Fody5oPTQ1PXN0cnVjdCBhbWlnYV9od19wcmVzZW50IHtcXG4tLVxcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS9hbWlnYWh3LmgtODAtICAgIEFNSUdBSFdfREVDTEFSRShQQ01DSUEpO1xcdFxcdC8qIFBDTUNJQSBTbG90ICovXFxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaDo4MTogICAgQU1JR0FIV19ERUNMQVJFKFpPUlJPKTtcXHRcXHQvKiBab3JybyBBdXRvQ29uZmlnICovXFxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaDo4MjogICAgQU1JR0FIV19ERUNMQVJFKFpPUlJPMyk7XFx0XFx0LyogWm9ycm8gSUlJICovXFxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaC04My19O1xcbi0tXFxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL3pvcnJvLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oOjI6I2lmbmRlZiBfQVNNX002OEtfWk9SUk9fSFxcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oOjM6I2RlZmluZSBfQVNNX002OEtfWk9SUk9fSFxcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oLTQtXFxuLS1cXG5hcmNoL202OGsvaW5jbHVkZS9hc20vem9ycm8uaD0zNz1zdGF0aWMgaW5saW5lIHZvaWQgX19pb21lbSAqel9yZW1hcF9mdWxsY2FjaGUodW5zaWduZWQgbG9uZyBwaHlzYWRkcixcXG4tLVxcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oLTQ2LVxcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oOjQ3OiNlbmRpZiAvKiBfQVNNX002OEtfWk9SUk9fSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjozMS41NjE2NTM0ODFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjk1OTI4NDg2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIFpvcnJvIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL3pvcnJvL0tjb25maWdgIGZpbGUuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgWm9ycm8gYnVzIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGlzIGtlcm5lbCBidWlsZC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3QsIGFuZCBob3cgdGhlIHZhcmlvdXMgWm9ycm8tcmVsYXRlZCBmZWF0dXJlcyBhcmUgY29udHJvbGxlZC4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIHRoaXMgbW9kdWxlLCBhbmQgaG93IHZhcmlvdXMgb3B0aW9ucyBlZmZlY3QgdGhlIGF2YWlsYWJsZSBmZWF0dXJlcy4gSSdtIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOlxuXG4qICAgKipGZWF0dXJlIEZsYWdzOioqIEFyZSB0aGVyZSBzcGVjaWZpYyBzeW1ib2xzIGRlZmluZWQgZm9yIGRpZmZlcmVudCBab3JybyBoYXJkd2FyZSByZXZpc2lvbnMgb3IgZGV2aWNlIHR5cGVzPyBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gaXMgZXNzZW50aWFsIGZvciBkZWFsaW5nIHdpdGggcnVudGltZSBiZWhhdmlvciBvZiBkcml2ZXJzLlxuKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgZHJpdmVycyBkb2VzIHRoaXMgWm9ycm8gZHJpdmVyIHJlbHkgb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBvciBib2FyZCBjb25maWd1cmF0aW9ucyB0aGF0IGl0J3MgZGVzaWduZWQgZm9yPyBUaGlzIGlzIGtleSBmb3IgdW5kZXJzdGFuZGluZyBwb3J0YWJpbGl0eSBhbmQgcG90ZW50aWFsIGludGVncmF0aW9uIGlzc3Vlcy5cbiogICAqKkRlZmF1bHQgQmVoYXZpb3I6KiogV2hhdCdzIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24/IEFyZSB0aGUgWm9ycm8gYnVzIGZ1bmN0aW9ucyBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGFyZSB0aGV5IG9mZiBieSBkZWZhdWx0PyBVbmRlcnN0YW5kaW5nIGRlZmF1bHRzIGlzIGtleSB0byBkZWJ1Z2dpbmcgYW5kIGJ1aWxkaW5nIG5ldyBzeXN0ZW1zLlxuKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBBcmUgdGhlcmUgZ29vZCBjb21tZW50cz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIGZvciBtZSB0byBleHBsb3JlIGluIGdyZWF0ZXIgZGV0YWlsP1xuXG5CeSBleGFtaW5pbmcgdGhpcyBLY29uZmlnIGZpbGUgZmlyc3QsIEknbGwgZ2V0IGEgc29saWQgZm91bmRhdGlvbiBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9mIHRoZSBab3JybyBkcml2ZXIgY29kZSBhbmQgaXRzIGludGVncmF0aW9uIGludG8gdGhlIHdpZGVyIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMzYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjozNC41MjA5NDA4NzRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy96b3Jyby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFpvcnJvIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdGNvbmZpZyBaT1JST19OQU1FU1xcbiAgIDY6XFx0XFx0Ym9vbCBcXFwiWm9ycm8gZGV2aWNlIG5hbWUgZGF0YWJhc2VcXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIFpPUlJPXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIEJ5IGRlZmF1bHQsIHRoZSBrZXJuZWwgY29udGFpbnMgYSBkYXRhYmFzZSBvZiBhbGwga25vd24gWm9ycm8gZGV2aWNlXFxuICAxMDpcXHRcXHQgIG5hbWVzIHRvIG1ha2UgdGhlIGluZm9ybWF0aW9uIGluIC9wcm9jL2lvbWVtIGNvbXByZWhlbnNpYmxlIHRvIHRoZVxcbiAgMTE6XFx0XFx0ICB1c2VyLiBUaGlzIGRhdGFiYXNlIGluY3JlYXNlcyB0aGUgc2l6ZSBvZiB0aGUga2VybmVsIGltYWdlIGJ5IGFib3V0XFxuICAxMjpcXHRcXHQgIDE1S0IsIGJ1dCBpdCBnZXRzIGZyZWVkIGFmdGVyIHRoZSBzeXN0ZW0gYm9vdHMgdXAsIHNvIGl0IGRvZXNuJ3RcXG4gIDEzOlxcdFxcdCAgdGFrZSB1cCBrZXJuZWwgbWVtb3J5LiBBbnl3YXksIGlmIHlvdSBhcmUgYnVpbGRpbmcgYW4gaW5zdGFsbGF0aW9uXFxuICAxNDpcXHRcXHQgIGZsb3BweSBvciBrZXJuZWwgZm9yIGFuIGVtYmVkZGVkIHN5c3RlbSB3aGVyZSBrZXJuZWwgaW1hZ2Ugc2l6ZVxcbiAgMTU6XFx0XFx0ICByZWFsbHkgbWF0dGVycywgeW91IGNhbiBkaXNhYmxlIHRoaXMgZmVhdHVyZSBhbmQgeW91J2xsIGdldCBkZXZpY2VcXG4gIDE2OlxcdFxcdCAgSUQgbnVtYmVycyBpbnN0ZWFkIG9mIG5hbWVzLlxcbiAgMTc6XFx0XFxuICAxODpcXHRcXHQgIFdoZW4gaW4gZG91YnQsIHNheSBZLlxcbiAgMTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjM0LjUyMTAyNDY4NFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NDM0MjMzOTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIG02OGstU3BlY2lmaWMgWm9ycm8gRHJpdmVycyBvbiBhbWQ2NCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBzZWUgaWYgWm9ycm8gc3VwcG9ydCBleHRlbmRzIGJleW9uZCB0aGUgbTY4ayBhcmNoaXRlY3R1cmUsIGJlY2F1c2UgaWYgaXQgZGlkLCB0aGVzZSBkcml2ZXJzICptaWdodCogYmUgcmVsZXZhbnQgZm9yIGZ1enppbmcgb24gYW1kNjQuIEEgcXVpY2sgc2NhbiBvZiB0aGUgYEtjb25maWcuYnVzYCBmaWxlIGluIHRoZSBtNjhrIGFyY2hpdGVjdHVyZSBjb25maXJtcyB0aGF0IGBDT05GSUdfWk9SUk9gIGlzICpvbmx5KiBkZWZpbmVkIHRoZXJlLCBhbmQgaXQncyBjb250aW5nZW50IG9uIHRoZSBgQU1JR0FgIGNvbmZpZyBvcHRpb24sIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyBtNjhrLXNwZWNpZmljLlxuXG5HaXZlbiB0aGF0IHRoZSB0YXJnZXQgaXMgYW1kNjQgKHg4Nl82NCksIGBDT05GSUdfWk9SUk9gICpjYW5ub3QqIGJlIGVuYWJsZWQuIFRoZXJlZm9yZSwgYWxsIHRoZSBkcml2ZXIgbW9kaWZpY2F0aW9ucyBpbiB0aGlzIHBhdGNoIGFyZSwgaW4gZXNzZW5jZSwgZGVhZCBjb2RlIGZyb20gdGhlIGFtZDY0IHBlcnNwZWN0aXZlLiBUaGlzIGluY2x1ZGVzIHRoZSBjaGFuZ2VzIGluIGBoeWRyYS5jYCwgYHpvcnJvODM5MC5jYCwgYGEyMDY1LmNgLCBgYXJpYWRuZS5jYCwgYGEyMDkxLmNgLCBgZ3ZwMTEuY2AsIGB6b3Jybzd4eC5jYCwgYW5kIGB6b3Jyb19lc3AuY2AuIFRoZXkgYWxsIGRlcGVuZCBvbiBgQ09ORklHX1pPUlJPYC5cblxuVGhlc2UgZHJpdmVycyBhcmUgWm9ycm8gYnVzIGV4cGFuc2lvbiBjYXJkcyBmb3IgdGhlIEFtaWdhLCBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzLCBub3RoaW5nIG1vcmUuIFRoZSBwYXRjaCdzIGNvbnRyaWJ1dGlvbiBsaWVzIGluIGEgc2ltcGxlIHJlZmFjdG9yaW5nLCBlbXBsb3lpbmcgdGhlIGBtb2R1bGVfZHJpdmVyKClgIG1hY3JvIGZvciBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCAoYHpvcnJvX3JlZ2lzdGVyX2RyaXZlcmAsIGB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcmApIC0gbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLlxuXG5NeSBhbmFseXNpcyBhbGlnbnMgcGVyZmVjdGx5IHdpdGggdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gVGhlIGNvZGUgaXMgKmFyY2hpdGVjdHVyYWxseSB1bnJlYWNoYWJsZSogb24gYW1kNjQsIGFuZCBpdCBpcyBhbHNvICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUqIG9uIGFueSBvdGhlciBhcmNoaXRlY3R1cmUuIFRoZXNlIGRyaXZlcnMgYXJlIG5vdCByZWxldmFudC4gVGhpcyBtZWFucyB0aGUgZnV6emluZyBmbGFnIGlzIHNldCB0byBmYWxzZS5cblxuSSBuZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzgzLCJPdXRwdXRUb2tlbnMiOjIzOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjQxLjk1NTI2MTgyNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoZWQgZmlsZXMgKGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmMsIGRyaXZlcnMvc2NzaS9hMjA5MS5jLCBkcml2ZXJzL3Njc2kvZ3ZwMTEuYywgZHJpdmVycy9zY3NpL3pvcnJvN3h4LmMsIGFuZCBkcml2ZXJzL3Njc2kvem9ycm9fZXNwLmMpIGFyZSBhbGwgZHJpdmVycyBmb3IgQW1pZ2EgWm9ycm8gYnVzIGRldmljZXMgdGhhdCBkZXBlbmQgb24gQ09ORklHX1pPUlJPLiBDT05GSUdfWk9SUk8gaXMgb25seSBkZWZpbmVkIGZvciB0aGUgbTY4ayBhcmNoaXRlY3R1cmUgKHVuZGVyIGFyY2gvbTY4ay9LY29uZmlnLmJ1cykgYW5kIGlzIG5vdCBhdmFpbGFibGUgb3IgY29tcGlsYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgb25seSBjb252ZXJ0IHN0YW5kYXJkIG1vZHVsZSBpbml0L2V4aXQgYm9pbGVycGxhdGUgdG8gdXNlIHRoZSBtb2R1bGVfZHJpdmVyKCkgbWFjcm8uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaGVkIGZpbGVzIChkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jLCBkcml2ZXJzL3Njc2kvYTIwOTEuYywgZHJpdmVycy9zY3NpL2d2cDExLmMsIGRyaXZlcnMvc2NzaS96b3Jybzd4eC5jLCBhbmQgZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jKSBhcmUgYWxsIGRyaXZlcnMgZm9yIEFtaWdhIFpvcnJvIGJ1cyBkZXZpY2VzIHRoYXQgZGVwZW5kIG9uIENPTkZJR19aT1JSTy4gQ09ORklHX1pPUlJPIGlzIG9ubHkgZGVmaW5lZCBmb3IgdGhlIG02OGsgYXJjaGl0ZWN0dXJlICh1bmRlciBhcmNoL202OGsvS2NvbmZpZy5idXMpIGFuZCBpcyBub3QgYXZhaWxhYmxlIG9yIGNvbXBpbGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIG9ubHkgY29udmVydCBzdGFuZGFyZCBtb2R1bGUgaW5pdC9leGl0IGJvaWxlcnBsYXRlIHRvIHVzZSB0aGUgbW9kdWxlX2RyaXZlcigpIG1hY3JvLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6NDEuOTU1Mjg2MDI1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrtwzz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 19:27:32 +0000 UTC FinishedAt: 2026-09-06 20:12:42 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjExPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2hlZCBmaWxlcyAoZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9oeWRyYS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuYywgZHJpdmVycy9zY3NpL2EyMDkxLmMsIGRyaXZlcnMvc2NzaS9ndnAxMS5jLCBkcml2ZXJzL3Njc2kvem9ycm83eHguYywgYW5kIGRyaXZlcnMvc2NzaS96b3Jyb19lc3AuYykgYXJlIGFsbCBkcml2ZXJzIGZvciBBbWlnYSBab3JybyBidXMgZGV2aWNlcyB0aGF0IGRlcGVuZCBvbiBDT05GSUdfWk9SUk8uIENPTkZJR19aT1JSTyBpcyBvbmx5IGRlZmluZWQgZm9yIHRoZSBtNjhrIGFyY2hpdGVjdHVyZSAodW5kZXIgYXJjaC9tNjhrL0tjb25maWcuYnVzKSBhbmQgaXMgbm90IGF2YWlsYWJsZSBvciBjb21waWxhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBvbmx5IGNvbnZlcnQgc3RhbmRhcmQgbW9kdWxlIGluaXQvZXhpdCBib2lsZXJwbGF0ZSB0byB1c2UgdGhlIG1vZHVsZV9kcml2ZXIoKSBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4NGM4YjU5YTAxNjMyZmJhNDc3YzAxY2FhYzQxOTJlMjIwY2IxMzUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAyMDoxMTo1NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmNcbmluZGV4IDlhNTk5MTU0MzZkMjkuLjJlZGY5N2U1MDBkZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuY1xuQEAgLTI1NywxOCAmIzQzOzI1Nyw3IEBAIHN0YXRpYyB2b2lkIGh5ZHJhX3JlbW92ZV9vbmUoc3RydWN0IHpvcnJvX2RldiAqeilcbiAgICAgZnJlZV9uZXRkZXYoZGV2KTtcbiB9XG4gXG4tc3RhdGljIGludCBfX2luaXQgaHlkcmFfaW5pdF9tb2R1bGUodm9pZClcbi17XG4tICAgIHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aHlkcmFfZHJpdmVyKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IGh5ZHJhX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4te1xuLSAgICB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZoeWRyYV9kcml2ZXIpO1xuLX1cbi1cbi1tb2R1bGVfaW5pdChoeWRyYV9pbml0X21vZHVsZSk7XG4tbW9kdWxlX2V4aXQoaHlkcmFfY2xlYW51cF9tb2R1bGUpO1xuJiM0Mzttb2R1bGVfZHJpdmVyKGh5ZHJhX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG4gXG4gTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1pvcnJvLUlJIEh5ZHJhIDgzOTAgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7KTtcbiBNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jXG5pbmRleCBjYjFkNWVkMjA4NzQzLi4wZjY2ZjI4ZTUwYjRmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuY1xuQEAgLTQzMCwxOCAmIzQzOzQzMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIHpvcnJvODM5MF9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHRcdD0gem9ycm84MzkwX3JlbW92ZV9vbmUsXG4gfTtcbiBcbi1zdGF0aWMgaW50IF9faW5pdCB6b3JybzgzOTBfaW5pdF9tb2R1bGUodm9pZClcbi17XG4tXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnpvcnJvODM5MF9kcml2ZXIpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm84MzkwX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4te1xuLVx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2em9ycm84MzkwX2RyaXZlcik7XG4tfVxuLVxuLW1vZHVsZV9pbml0KHpvcnJvODM5MF9pbml0X21vZHVsZSk7XG4tbW9kdWxlX2V4aXQoem9ycm84MzkwX2NsZWFudXBfbW9kdWxlKTtcbiYjNDM7bW9kdWxlX2RyaXZlcih6b3JybzgzOTBfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcbiBcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7Wm9ycm8gTlM4MzkwLWJhc2VkIGV0aGVybmV0IGRyaXZlclwmIzM0Oyk7XG4gTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jXG5pbmRleCA2NzJjNDk5NmIzMGU5Li45M2YyMjYxZjRiZmUwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jXG5AQCAtNzY4LDE4ICYjNDM7NzY4LDcgQEAgc3RhdGljIHZvaWQgYTIwNjVfcmVtb3ZlX29uZShzdHJ1Y3Qgem9ycm9fZGV2ICp6KVxuIFx0ZnJlZV9uZXRkZXYoZGV2KTtcbiB9XG4gXG4tc3RhdGljIGludCBfX2luaXQgYTIwNjVfaW5pdF9tb2R1bGUodm9pZClcbi17XG4tXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmEyMDY1X2RyaXZlcik7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIF9fZXhpdCBhMjA2NV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLXtcbi1cdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmEyMDY1X2RyaXZlcik7XG4tfVxuLVxuLW1vZHVsZV9pbml0KGEyMDY1X2luaXRfbW9kdWxlKTtcbi1tb2R1bGVfZXhpdChhMjA2NV9jbGVhbnVwX21vZHVsZSk7XG4mIzQzO21vZHVsZV9kcml2ZXIoYTIwNjVfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcbiBcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7Q29tbW9kb3JlIEEyMDY1IEV0aGVybmV0IGRyaXZlclwmIzM0Oyk7XG4gTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuY1xuaW5kZXggZWM2ZTdlOGMxNGZlYS4uNjYyZWJhOWU4ZmZkMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmNcbkBAIC03NzcsMTggJiM0Mzs3NzcsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciBhcmlhZG5lX2RyaXZlciA9IHtcbiBcdC5yZW1vdmVcdFx0PSBhcmlhZG5lX3JlbW92ZV9vbmUsXG4gfTtcbiBcbi1zdGF0aWMgaW50IF9faW5pdCBhcmlhZG5lX2luaXRfbW9kdWxlKHZvaWQpXG4te1xuLVx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZhcmlhZG5lX2RyaXZlcik7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIF9fZXhpdCBhcmlhZG5lX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4te1xuLVx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YXJpYWRuZV9kcml2ZXIpO1xuLX1cbi1cbi1tb2R1bGVfaW5pdChhcmlhZG5lX2luaXRfbW9kdWxlKTtcbi1tb2R1bGVfZXhpdChhcmlhZG5lX2NsZWFudXBfbW9kdWxlKTtcbiYjNDM7bW9kdWxlX2RyaXZlcihhcmlhZG5lX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG4gXG4gTU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0FyaWFkbmUgRXRoZXJuZXQgRHJpdmVyXCYjMzQ7KTtcbiBNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hMjA5MS5jIGIvZHJpdmVycy9zY3NpL2EyMDkxLmNcbmluZGV4IGY4MWU1M2I1M2UyMDMuLjQyMTMzMGE3YjZhN2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Njc2kvYTIwOTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zY3NpL2EyMDkxLmNcbkBAIC0yODgsMTcgJiM0MzsyODgsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciBhMjA5MV9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHRcdD0gYTIwOTFfcmVtb3ZlLFxuIH07XG4gXG4tc3RhdGljIGludCBfX2luaXQgYTIwOTFfaW5pdCh2b2lkKVxuLXtcbi1cdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YTIwOTFfZHJpdmVyKTtcbi19XG4tbW9kdWxlX2luaXQoYTIwOTFfaW5pdCk7XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IGEyMDkxX2V4aXQodm9pZClcbi17XG4tXHR6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZhMjA5MV9kcml2ZXIpO1xuLX1cbi1tb2R1bGVfZXhpdChhMjA5MV9leGl0KTtcbiYjNDM7bW9kdWxlX2RyaXZlcihhMjA5MV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xuIFxuIE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtDb21tb2RvcmUgQTIwOTEvQTU5MCBTQ1NJXCYjMzQ7KTtcbiBNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9ndnAxMS5jIGIvZHJpdmVycy9zY3NpL2d2cDExLmNcbmluZGV4IDc5YmQ2NGUxMmFkYzIuLmViYTg2OGFjMzU1ZDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3Njc2kvZ3ZwMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zY3NpL2d2cDExLmNcbkBAIC00NjEsMTcgJiM0Mzs0NjEsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciBndnAxMV9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHRcdD0gZ3ZwMTFfcmVtb3ZlLFxuIH07XG4gXG4tc3RhdGljIGludCBfX2luaXQgZ3ZwMTFfaW5pdCh2b2lkKVxuLXtcbi1cdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2Z3ZwMTFfZHJpdmVyKTtcbi19XG4tbW9kdWxlX2luaXQoZ3ZwMTFfaW5pdCk7XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IGd2cDExX2V4aXQodm9pZClcbi17XG4tXHR6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZndnAxMV9kcml2ZXIpO1xuLX1cbi1tb2R1bGVfZXhpdChndnAxMV9leGl0KTtcbiYjNDM7bW9kdWxlX2RyaXZlcihndnAxMV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xuIFxuIE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtHVlAgU2VyaWVzIElJIFNDU0lcJiMzNDspO1xuIE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3pvcnJvN3h4LmMgYi9kcml2ZXJzL3Njc2kvem9ycm83eHguY1xuaW5kZXggMjFjNzY5ZGMxZWNiZC4uODBlMTU2YjA0Yjk5NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Njc2kvem9ycm83eHguY1xuQEAgLTE3MywxNSAmIzQzOzE3Myw0IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIHpvcnJvN3h4X2RyaXZlciA9IHtcbiBcdC5yZW1vdmVcdCAgPSB6b3Jybzd4eF9yZW1vdmVfb25lLFxuIH07XG4gXG4tc3RhdGljIGludCBfX2luaXQgem9ycm83eHhfc2NzaV9pbml0KHZvaWQpXG4te1xuLVx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ6b3Jybzd4eF9kcml2ZXIpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm83eHhfc2NzaV9leGl0KHZvaWQpXG4te1xuLVx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2em9ycm83eHhfZHJpdmVyKTtcbi19XG4tXG4tbW9kdWxlX2luaXQoem9ycm83eHhfc2NzaV9pbml0KTtcbi1tb2R1bGVfZXhpdCh6b3Jybzd4eF9zY3NpX2V4aXQpO1xuJiM0Mzttb2R1bGVfZHJpdmVyKHpvcnJvN3h4X2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jIGIvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXG5pbmRleCAxNzhkNDYxNDA2NzQ0Li4xMjFiY2JiY2U1MmQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3Njc2kvem9ycm9fZXNwLmNcbkBAIC05NDYsMTUgJiM0Mzs5NDYsNCBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3Jyb19lc3BfZHJpdmVyID0ge1xuIFx0LnJlbW92ZVx0ICA9IHpvcnJvX2VzcF9yZW1vdmUsXG4gfTtcbiBcbi1zdGF0aWMgaW50IF9faW5pdCB6b3Jyb19lc3Bfc2NzaV9pbml0KHZvaWQpXG4te1xuLVx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ6b3Jyb19lc3BfZHJpdmVyKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IHpvcnJvX2VzcF9zY3NpX2V4aXQodm9pZClcbi17XG4tXHR6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZ6b3Jyb19lc3BfZHJpdmVyKTtcbi19XG4tXG4tbW9kdWxlX2luaXQoem9ycm9fZXNwX3Njc2lfaW5pdCk7XG4tbW9kdWxlX2V4aXQoem9ycm9fZXNwX3Njc2lfZXhpdCk7XG4mIzQzO21vZHVsZV9kcml2ZXIoem9ycm9fZXNwX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2hlZCBmaWxlcyAoZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9oeWRyYS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuYywgZHJpdmVycy9zY3NpL2EyMDkxLmMsIGRyaXZlcnMvc2NzaS9ndnAxMS5jLCBkcml2ZXJzL3Njc2kvem9ycm83eHguYywgYW5kIGRyaXZlcnMvc2NzaS96b3Jyb19lc3AuYykgYXJlIGFsbCBkcml2ZXJzIGZvciBBbWlnYSBab3JybyBidXMgZGV2aWNlcyB0aGF0IGRlcGVuZCBvbiBDT05GSUdfWk9SUk8uIENPTkZJR19aT1JSTyBpcyBvbmx5IGRlZmluZWQgZm9yIHRoZSBtNjhrIGFyY2hpdGVjdHVyZSAodW5kZXIgYXJjaC9tNjhrL0tjb25maWcuYnVzKSBhbmQgaXMgbm90IGF2YWlsYWJsZSBvciBjb21waWxhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBvbmx5IGNvbnZlcnQgc3RhbmRhcmQgbW9kdWxlIGluaXQvZXhpdCBib2lsZXJwbGF0ZSB0byB1c2UgdGhlIG1vZHVsZV9kcml2ZXIoKSBtYWNyby4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4NGM4YjU5YTAxNjMyZmJhNDc3YzAxY2FhYzQxOTJlMjIwY2IxMzUyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBTZXAgNiAyMDoxMTo1NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuYwppbmRleCA5YTU5OTE1NDM2ZDI5Li4yZWRmOTdlNTAwZGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9oeWRyYS5jCkBAIC0yNTcsMTggJiM0MzsyNTcsNyBAQCBzdGF0aWMgdm9pZCBoeWRyYV9yZW1vdmVfb25lKHN0cnVjdCB6b3Jyb19kZXYgKnopCiAgICAgZnJlZV9uZXRkZXYoZGV2KTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgaHlkcmFfaW5pdF9tb2R1bGUodm9pZCkKLXsKLSAgICByZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKCZhbXA7aHlkcmFfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGh5ZHJhX2NsZWFudXBfbW9kdWxlKHZvaWQpCi17Ci0gICAgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoJmFtcDtoeWRyYV9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdChoeWRyYV9pbml0X21vZHVsZSk7Ci1tb2R1bGVfZXhpdChoeWRyYV9jbGVhbnVwX21vZHVsZSk7CiYjNDM7bW9kdWxlX2RyaXZlcihoeWRyYV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpOwogCiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtab3Jyby1JSSBIeWRyYSA4MzkwIGV0aGVybmV0IGRyaXZlciYjMzQ7KTsKIE1PRFVMRV9MSUNFTlNFKCYjMzQ7R1BMJiMzNDspOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmMKaW5kZXggY2IxZDVlZDIwODc0My4uMGY2NmYyOGU1MGI0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jCkBAIC00MzAsMTggJiM0Mzs0MzAsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3JybzgzOTBfZHJpdmVyID0gewogCS5yZW1vdmUJCT0gem9ycm84MzkwX3JlbW92ZV9vbmUsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB6b3JybzgzOTBfaW5pdF9tb2R1bGUodm9pZCkKLXsKLQlyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKCZhbXA7em9ycm84MzkwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB6b3JybzgzOTBfY2xlYW51cF9tb2R1bGUodm9pZCkKLXsKLQl6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcigmYW1wO3pvcnJvODM5MF9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdCh6b3JybzgzOTBfaW5pdF9tb2R1bGUpOwotbW9kdWxlX2V4aXQoem9ycm84MzkwX2NsZWFudXBfbW9kdWxlKTsKJiM0Mzttb2R1bGVfZHJpdmVyKHpvcnJvODM5MF9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpOwogCiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtab3JybyBOUzgzOTAtYmFzZWQgZXRoZXJuZXQgZHJpdmVyJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jCmluZGV4IDY3MmM0OTk2YjMwZTkuLjkzZjIyNjFmNGJmZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jCkBAIC03NjgsMTggJiM0Mzs3NjgsNyBAQCBzdGF0aWMgdm9pZCBhMjA2NV9yZW1vdmVfb25lKHN0cnVjdCB6b3Jyb19kZXYgKnopCiAJZnJlZV9uZXRkZXYoZGV2KTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgYTIwNjVfaW5pdF9tb2R1bGUodm9pZCkKLXsKLQlyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKCZhbXA7YTIwNjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGEyMDY1X2NsZWFudXBfbW9kdWxlKHZvaWQpCi17Ci0Jem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoJmFtcDthMjA2NV9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdChhMjA2NV9pbml0X21vZHVsZSk7Ci1tb2R1bGVfZXhpdChhMjA2NV9jbGVhbnVwX21vZHVsZSk7CiYjNDM7bW9kdWxlX2RyaXZlcihhMjA2NV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpOwogCiBNT0RVTEVfREVTQ1JJUFRJT04oJiMzNDtDb21tb2RvcmUgQTIwNjUgRXRoZXJuZXQgZHJpdmVyJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuYwppbmRleCBlYzZlN2U4YzE0ZmVhLi42NjJlYmE5ZThmZmQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmMKQEAgLTc3NywxOCAmIzQzOzc3Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIGFyaWFkbmVfZHJpdmVyID0gewogCS5yZW1vdmUJCT0gYXJpYWRuZV9yZW1vdmVfb25lLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgYXJpYWRuZV9pbml0X21vZHVsZSh2b2lkKQotewotCXJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoJmFtcDthcmlhZG5lX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhcmlhZG5lX2NsZWFudXBfbW9kdWxlKHZvaWQpCi17Ci0Jem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoJmFtcDthcmlhZG5lX2RyaXZlcik7Ci19Ci0KLW1vZHVsZV9pbml0KGFyaWFkbmVfaW5pdF9tb2R1bGUpOwotbW9kdWxlX2V4aXQoYXJpYWRuZV9jbGVhbnVwX21vZHVsZSk7CiYjNDM7bW9kdWxlX2RyaXZlcihhcmlhZG5lX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7CiAKIE1PRFVMRV9ERVNDUklQVElPTigmIzM0O0FyaWFkbmUgRXRoZXJuZXQgRHJpdmVyJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYTIwOTEuYyBiL2RyaXZlcnMvc2NzaS9hMjA5MS5jCmluZGV4IGY4MWU1M2I1M2UyMDMuLjQyMTMzMGE3YjZhN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hMjA5MS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS9hMjA5MS5jCkBAIC0yODgsMTcgJiM0MzsyODgsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciBhMjA5MV9kcml2ZXIgPSB7CiAJLnJlbW92ZQkJPSBhMjA5MV9yZW1vdmUsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBhMjA5MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcigmYW1wO2EyMDkxX2RyaXZlcik7Ci19Ci1tb2R1bGVfaW5pdChhMjA5MV9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IGEyMDkxX2V4aXQodm9pZCkKLXsKLQl6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcigmYW1wO2EyMDkxX2RyaXZlcik7Ci19Ci1tb2R1bGVfZXhpdChhMjA5MV9leGl0KTsKJiM0Mzttb2R1bGVfZHJpdmVyKGEyMDkxX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7CiAKIE1PRFVMRV9ERVNDUklQVElPTigmIzM0O0NvbW1vZG9yZSBBMjA5MS9BNTkwIFNDU0kmIzM0Oyk7CiBNT0RVTEVfTElDRU5TRSgmIzM0O0dQTCYjMzQ7KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9ndnAxMS5jIGIvZHJpdmVycy9zY3NpL2d2cDExLmMKaW5kZXggNzliZDY0ZTEyYWRjMi4uZWJhODY4YWMzNTVkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2d2cDExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9zY3NpL2d2cDExLmMKQEAgLTQ2MSwxNyAmIzQzOzQ2MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIGd2cDExX2RyaXZlciA9IHsKIAkucmVtb3ZlCQk9IGd2cDExX3JlbW92ZSwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGd2cDExX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKCZhbXA7Z3ZwMTFfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KGd2cDExX2luaXQpOwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZ3ZwMTFfZXhpdCh2b2lkKQotewotCXpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKCZhbXA7Z3ZwMTFfZHJpdmVyKTsKLX0KLW1vZHVsZV9leGl0KGd2cDExX2V4aXQpOwomIzQzO21vZHVsZV9kcml2ZXIoZ3ZwMTFfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTsKIAogTU9EVUxFX0RFU0NSSVBUSU9OKCYjMzQ7R1ZQIFNlcmllcyBJSSBTQ1NJJiMzNDspOwogTU9EVUxFX0xJQ0VOU0UoJiMzNDtHUEwmIzM0Oyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvem9ycm83eHguYyBiL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jCmluZGV4IDIxYzc2OWRjMWVjYmQuLjgwZTE1NmIwNGI5OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jCkBAIC0xNzMsMTUgJiM0MzsxNzMsNCBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3Jybzd4eF9kcml2ZXIgPSB7CiAJLnJlbW92ZQkgID0gem9ycm83eHhfcmVtb3ZlX29uZSwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHpvcnJvN3h4X3Njc2lfaW5pdCh2b2lkKQotewotCXJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoJmFtcDt6b3Jybzd4eF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm83eHhfc2NzaV9leGl0KHZvaWQpCi17Ci0Jem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoJmFtcDt6b3Jybzd4eF9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdCh6b3Jybzd4eF9zY3NpX2luaXQpOwotbW9kdWxlX2V4aXQoem9ycm83eHhfc2NzaV9leGl0KTsKJiM0Mzttb2R1bGVfZHJpdmVyKHpvcnJvN3h4X2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvem9ycm9fZXNwLmMgYi9kcml2ZXJzL3Njc2kvem9ycm9fZXNwLmMKaW5kZXggMTc4ZDQ2MTQwNjc0NC4uMTIxYmNiYmNlNTJkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvc2NzaS96b3Jyb19lc3AuYwpAQCAtOTQ2LDE1ICYjNDM7OTQ2LDQgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgem9ycm9fZXNwX2RyaXZlciA9IHsKIAkucmVtb3ZlCSAgPSB6b3Jyb19lc3BfcmVtb3ZlLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgem9ycm9fZXNwX3Njc2lfaW5pdCh2b2lkKQotewotCXJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoJmFtcDt6b3Jyb19lc3BfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHpvcnJvX2VzcF9zY3NpX2V4aXQodm9pZCkKLXsKLQl6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcigmYW1wO3pvcnJvX2VzcF9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdCh6b3Jyb19lc3Bfc2NzaV9pbml0KTsKLW1vZHVsZV9leGl0KHpvcnJvX2VzcF9zY3NpX2V4aXQpOwomIzQzO21vZHVsZV9kcml2ZXIoem9ycm9fZXNwX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjExPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMzgKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiAyMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgQU1ENjQqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyBpbXBhY3Qgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGFtZDY0LiBGcm9tIGEgZ2xhbmNlLCBpdCYjMzk7cyBoaXR0aW5nIGEgbnVtYmVyIG9mIGRyaXZlcnMuIEkgc2VlIG1vZGlmaWNhdGlvbnMgdG91Y2hpbmc6CgoqICAgTmV0d29yayBkcml2ZXJzIGZvciBvbGRlciA4MzkwLWJhc2VkIGV0aGVybmV0IGNhcmRzIChgaHlkcmEuY2AsIGB6b3JybzgzOTAuY2AsIGBhMjA2NS5jYCwgYGFyaWFkbmUuY2ApLiBUaGVzZSBhcmUgbGlrZWx5IGxlZ2FjeSBvciBuaWNoZSBoYXJkd2FyZS4KKiAgIFNDU0kgZHJpdmVyczogYGEyMDkxLmNgLCBgZ3ZwMTEuY2AsIGB6b3Jybzd4eC5jYCwgYW5kIGB6b3Jyb19lc3AuY2AuIFRoaXMgc3VnZ2VzdHMgaW50ZXJhY3Rpb24gd2l0aCBvbGRlciBTQ1NJIGNvbnRyb2xsZXJzLCBhbmQgcG90ZW50aWFsbHkgdGhlIFpvcnJvIGJ1cy4KCkdpdmVuIHRoZSBzY29wZSBhbmQgdGhlIHRhcmdldCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIGRyaXZlcnMsIGFuZCBhbHNvIGRlcGVuZGVuY2llcyBvbiB0aGUgWk9SUk8gYnVzLiBBIHRvb2wgbGlrZSBgZ3JlcHBlcmAgd2lsbCBiZSBwZXJmZWN0IGZvciBxdWlja2x5IHNlYXJjaGluZyB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgZmluZGluZyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIHRvIGFzc2VzcyBpZiB0aGUgY2hhbmdlIGludHJvZHVjZXMgYW55IGNvbXBhdGliaWxpdHkgaXNzdWVzLCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgb3IgaWYgaXQgaXMgY29uZGl0aW9uYWwgb24gc3BlY2lmaWMgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIChIWURSQXxaT1JSTzgzOTB8QTIwNjV8QVJJQURORXxBMjA5MV9TQ1NJfEdWUDExX1NDU0l8Wk9SUk83WFhfU0NTSXxTQ1NJX1pPUlJPX0VTUHxaT1JSTykmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc9Mzc9Y29uZmlnIFhTVVJGMTAwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnOjUwOmNvbmZpZyBIWURSQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTUxLVx0dHJpc3RhdGUgXCYjMzQ7SHlkcmEgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZz0xNDU9Y29uZmlnIFNUTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZzoxNTc6Y29uZmlnIFpPUlJPODM5MFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1OC1cdHRyaXN0YXRlIFwmIzM0O1pvcnJvIE5TODM5MC1iYXNlZCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc9MjE9aWYgTkVUX1ZFTkRPUl9BTURcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6MjM6Y29uZmlnIEEyMDY1XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O0EyMDY1IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZz00Nj1jb25maWcgUENORVQzMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6NTg6Y29uZmlnIEFSSUFETkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnLTU5LVx0dHJpc3RhdGUgXCYjMzQ7QXJpYWRuZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWc9MTI5ND1jb25maWcgQTMwMDBfU0NTSVxuLS1cbmRyaXZlcnMvc2NzaS9LY29uZmlnLTEzMDMtXG5kcml2ZXJzL3Njc2kvS2NvbmZpZzoxMzA0OmNvbmZpZyBBMjA5MV9TQ1NJXG5kcml2ZXJzL3Njc2kvS2NvbmZpZy0xMzA1LVx0dHJpc3RhdGUgXCYjMzQ7QTIwOTEvQTU5MCBXRDMzQzkzQSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWctMTMxMy1cbmRyaXZlcnMvc2NzaS9LY29uZmlnOjEzMTQ6Y29uZmlnIEdWUDExX1NDU0lcbmRyaXZlcnMvc2NzaS9LY29uZmlnLTEzMTUtXHR0cmlzdGF0ZSBcJiMzNDtHVlAgU2VyaWVzIElJIFdEMzNDOTNBIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL3Njc2kvS2NvbmZpZz0xMzM4PWNvbmZpZyBTQ1NJX1pPUlJPN1hYXG4tLVxuZHJpdmVycy9zY3NpL0tjb25maWctMTM1My1cbmRyaXZlcnMvc2NzaS9LY29uZmlnOjEzNTQ6Y29uZmlnIFNDU0lfWk9SUk9fRVNQXG5kcml2ZXJzL3Njc2kvS2NvbmZpZy0xMzU1LVx0dHJpc3RhdGUgXCYjMzQ7Wm9ycm8gRVNQIFNDU0kgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvem9ycm8vS2NvbmZpZy00LSNcbmRyaXZlcnMvem9ycm8vS2NvbmZpZzo1OmNvbmZpZyBaT1JST19OQU1FU1xuZHJpdmVycy96b3Jyby9LY29uZmlnLTYtXHRib29sIFwmIzM0O1pvcnJvIGRldmljZSBuYW1lIGRhdGFiYXNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQwOAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIERlcHRocyoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSB3aXRoIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IG1ha2luZyBhbnkgY2hhbmdlcyBvciBkZWJ1Z2dpbmcgYW55dGhpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgKmFjdHVhbGx5KiBkZWZpbmVkLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgdmVyaWZ5IHRoZSBLY29uZmlnIGRlZmluaXRpb25zIGZvciAqYWxsKiB0aGUgY29uZmlndXJhdGlvbnMsIGFuZCBlc3BlY2lhbGx5LCBJIG5lZWQgdG8gZm9jdXMgb24gaG93IGBDT05GSUdfWk9SUk9gIGlzIGRlZmluZWQuIEFueSB1cHN0cmVhbSBjaGFuZ2VzIHRoYXQgaW1wYWN0IGhvdyB0aGlzIGNvbmZpZ3VyYXRpb24gYmVoYXZlcyByZXF1aXJlIGEgZGVlcCBkaXZlIGludG8gdGhlIHVuZGVybHlpbmcgS2NvbmZpZyBmaWxlcy4gSSBrbm93IHRoZSBpbnRyaWNhY2llcyBvZiB0aGlzIHByb2plY3QgZGVtYW5kIGEgc29saWQsIGFsbW9zdCBlbmN5Y2xvcGVkaWMsIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGludGVyYWN0LCBhbmQgdGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCBpbiBlbnN1cmluZyBJIGhhdmUgYSBzb2xpZCBncmFzcC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBzdWJ0bGUgZGVwZW5kZW5jaWVzIG9yIHBvdGVudGlhbCBjb25mbGljdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpPUlJPJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbTY4ay9LY29uZmlnLmJ1cz0xNT1jb25maWcgTlVCVVNcbi0tXG5hcmNoL202OGsvS2NvbmZpZy5idXMtMTktXG5hcmNoL202OGsvS2NvbmZpZy5idXM6MjA6Y29uZmlnIFpPUlJPXG5hcmNoL202OGsvS2NvbmZpZy5idXMtMjEtXHRib29sIFwmIzM0O0FtaWdhIFpvcnJvIChBdXRvQ29uZmlnKSBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZz0xNDU9Y29uZmlnIFNUTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZzoxNTc6Y29uZmlnIFpPUlJPODM5MFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1OC1cdHRyaXN0YXRlIFwmIzM0O1pvcnJvIE5TODM5MC1iYXNlZCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy96b3Jyby9LY29uZmlnLTQtI1xuZHJpdmVycy96b3Jyby9LY29uZmlnOjU6Y29uZmlnIFpPUlJPX05BTUVTXG5kcml2ZXJzL3pvcnJvL0tjb25maWctNi1cdGJvb2wgXCYjMzQ7Wm9ycm8gZGV2aWNlIG5hbWUgZGF0YWJhc2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODg3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBaT1JSTyBDb25maWd1cmF0aW9uIGZvciBtNjhrIEFyY2hpdGVjdHVyZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfWk9SUk9gIGlzIGV4Y2x1c2l2ZWx5IGRlZmluZWQgd2l0aGluIHRoZSBgYXJjaC9tNjhrL0tjb25maWcuYnVzYCBmaWxlLiBUaGlzIHRlbGxzIG1lIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgWk9SUk8gYnVzIGlzIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGUgbTY4ayBhcmNoaXRlY3R1cmUuIE15IG5leHQgc3RlcCBpcyB0byBjYXJlZnVsbHkgZXhhbWluZSBgYXJjaC9tNjhrL0tjb25maWcuYnVzYCBpbiBkZXRhaWwuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHRzLCBhbmQgcG90ZW50aWFsbHkgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGF0IGZpbGUgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBPZiBjb3Vyc2UsIEkmIzM5O2xsIG5lZWQgdG8gZW5zdXJlIEkgY2hlY2sgYWxsIHJlbGF0ZWQgS2NvbmZpZyBmaWxlcyB0b28sIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGUgd2hvbGUgcGljdHVyZS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgbG9naWMsIHRoZSBkZXBlbmRlbmNpZXMsIGFuZCB0aGUgb3ZlcmFsbCBpbnRlbnQgYmVoaW5kIHRoaXMgY29uZmlndXJhdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoaXMgZGVmaW5pdGlvbiBhbmQgb3RoZXIgY29tcG9uZW50cyBpcyBrZXkgdG8gZ3Jhc3BpbmcgdGhlIGFyY2hpdGVjdHVyZSYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBaT1JSTyBidXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDthcmNoL202OGsvS2NvbmZpZy5idXMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0aWYgTU1VXG4gICAzOlx0XG4gICA0Olx0Y29tbWVudCBcJiMzNDtCdXMgU3VwcG9ydFwmIzM0O1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBESU9cbiAgIDc6XHRcdGJvb2wgXCYjMzQ7RElPIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIEhQMzAwXG4gICA5Olx0XHRkZWZhdWx0IHlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgU2F5IFkgaGVyZSB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFwmIzM0O0RJT1wmIzM0OyBleHBhbnNpb24gYnVzIHVzZWQgaW5cbiAgMTI6XHRcdCAgSFAzMDAgbWFjaGluZXMuIElmIHlvdSBhcmUgdXNpbmcgc3VjaCBhIHN5c3RlbSB5b3UgYWxtb3N0IGNlcnRhaW5seVxuICAxMzpcdFx0ICB3YW50IHRoaXMuXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIE5VQlVTXG4gIDE2Olx0XHRib29sXG4gIDE3Olx0XHRkZXBlbmRzIG9uIE1BQ1xuICAxODpcdFx0ZGVmYXVsdCB5XG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFpPUlJPXG4gIDIxOlx0XHRib29sIFwmIzM0O0FtaWdhIFpvcnJvIChBdXRvQ29uZmlnKSBidXMgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiBBTUlHQVxuICAyMzpcdFx0aGVscFxuICAyNDpcdFx0ICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIFpvcnJvIGJ1cyBpbiB0aGUgQW1pZ2EuIElmIHlvdSBoYXZlXG4gIDI1Olx0XHQgIGV4cGFuc2lvbiBjYXJkcyBpbiB5b3VyIEFtaWdhIHRoYXQgY29uZm9ybSB0byB0aGUgQW1pZ2FcbiAgMjY6XHRcdCAgQXV0b0NvbmZpZyh0bSkgc3BlY2lmaWNhdGlvbiwgc2F5IFksIG90aGVyd2lzZSBOLiBOb3RlIHRoYXQgZXZlblxuICAyNzpcdFx0ICBleHBhbnNpb24gY2FyZHMgdGhhdCBkbyBub3QgZml0IGluIHRoZSBab3JybyBzbG90cyBidXQgZml0IGluIGUuZy5cbiAgMjg6XHRcdCAgdGhlIENQVSBzbG90IG1heSBmYWxsIGluIHRoaXMgY2F0ZWdvcnksIHNvIHlvdSBoYXZlIHRvIHNheSBZIHRvIGxldFxuICAyOTpcdFx0ICBMaW51eCB1c2UgdGhlc2UuXG4gIDMwOlx0XG4gIDMxOlx0Y29uZmlnIEFNSUdBX1BDTUNJQVxuICAzMjpcdFx0Ym9vbCBcJiMzNDtBbWlnYSAxMjAwLzYwMCBQQ01DSUEgc3VwcG9ydFwmIzM0O1xuICAzMzpcdFx0ZGVwZW5kcyBvbiBBTUlHQVxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBJbmNsdWRlIHN1cHBvcnQgaW4gdGhlIGtlcm5lbCBmb3IgcGNtY2lhIG9uIEFtaWdhIDEyMDAgYW5kIEFtaWdhXG4gIDM2Olx0XHQgIDYwMC4gSWYgeW91IGludGVuZCB0byB1c2UgcGNtY2lhIGNhcmRzIHNheSBZOyBvdGhlcndpc2Ugc2F5IE4uXG4gIDM3Olx0XG4gIDM4Olx0Y29uZmlnIElTQVxuICAzOTpcdFx0Ym9vbFxuICA0MDpcdFx0ZGVwZW5kcyBvbiBRNDAgfHwgQU1JR0FfUENNQ0lBXG4gIDQxOlx0XHRkZWZhdWx0IHlcbiAgNDI6XHRcdGhlbHBcbiAgNDM6XHRcdCAgRmluZCBvdXQgd2hldGhlciB5b3UgaGF2ZSBJU0Egc2xvdHMgb24geW91ciBtb3RoZXJib2FyZC4gIElTQSBpcyB0aGVcbiAgNDQ6XHRcdCAgbmFtZSBvZiBhIGJ1cyBzeXN0ZW0sIGkuZS4gdGhlIHdheSB0aGUgQ1BVIHRhbGtzIHRvIHRoZSBvdGhlciBzdHVmZlxuICA0NTpcdFx0ICBpbnNpZGUgeW91ciBib3guICBPdGhlciBidXMgc3lzdGVtcyBhcmUgUENJLCBFSVNBLCBNaWNyb0NoYW5uZWxcbiAgNDY6XHRcdCAgKE1DQSkgb3IgVkVTQS4gIElTQSBpcyBhbiBvbGRlciBzeXN0ZW0sIG5vdyBiZWluZyBkaXNwbGFjZWQgYnkgUENJO1xuICA0NzpcdFx0ICBuZXdlciBib2FyZHMgZG9uJiMzOTt0IHN1cHBvcnQgaXQuICBJZiB5b3UgaGF2ZSBJU0EsIHNheSBZLCBvdGhlcndpc2UgTi5cbiAgNDg6XHRcbiAgNDk6XHRjb25maWcgQVRBUklfUk9NX0lTQVxuICA1MDpcdFx0Ym9vbCBcJiMzNDtBdGFyaSBST00gcG9ydCBJU0EgYWRhcHRlciBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg5OQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgYW5kIFN0b3JhZ2UgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIG5ldHdvcmsgYW5kIHN0b3JhZ2UgZHJpdmVycy4gSSYjMzk7bGwgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnYCwgYW5kIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AuIFRoZXNlIGBLY29uZmlnYCBmaWxlcyBhcmUga2V5LiBUaGV5JiMzOTtsbCB0ZWxsIG1lIHdoYXQgaGFyZHdhcmUgZWFjaCBkcml2ZXIgc3VwcG9ydHMsIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBmZWF0dXJlcywgYW55IGRlZmF1bHRzIHRoYXQgYXJlIHNldCwgYW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBjYW4gdHdlYWsuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCB0aGlzIGlzIGEga2VybmVsIGNvbmZpZ3VyYXRpb24gY29udGV4dCwgc28gdGhlc2UgZmlsZXMgd2lsbCBiZSBlc3NlbnRpYWwgZm9yIHVuZGVyc3RhbmRpbmcgd2hhdCYjMzk7cyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGhvdyBJIGNhbiBjdXN0b21pemUgdGhlIGtlcm5lbCBidWlsZCB0byBzdXBwb3J0IHBhcnRpY3VsYXIgbmV0d29yayBpbnRlcmZhY2VzIGFuZCBTQ1NJIGRldmljZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBkcml2ZXJzIGFuZCBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtOyBmb3IgaW5zdGFuY2UsIHVuZGVyc3RhbmRpbmcgaG93IHNwZWNpZmljIDgzOTAgb3IgQU1EIG5ldHdvcmsgZHJpdmVycyBjYW4gYmUgaW50ZWdyYXRlZCBvciByZXBsYWNlZCB3aXRoIG5ld2VyIHNvbHV0aW9ucyBpcyBpbXBvcnRhbnQuIFRoaXMgaW5pdGlhbCBzY2FuIGlzIGFib3V0IGdhaW5pbmcgYSBoaWdoLWxldmVsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGV4aXN0aW5nIGRyaXZlciBsYW5kc2NhcGUsIHRoZSBjaG9pY2VzIGF2YWlsYWJsZSwgYW5kIHRoZSBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBwYXRod2F5cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQ1Olx0XHQgIHNheSBZLiBPdGhlcndpc2UsIHNheSBOLlxuICA0NjpcdFxuICA0NzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDQ4Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHhzdXJmMTAwLlxuICA0OTpcdFxuICA1MDpcdGNvbmZpZyBIWURSQVxuICA1MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SHlkcmEgc3VwcG9ydFwmIzM0O1xuICA1MjpcdFx0ZGVwZW5kcyBvbiBaT1JST1xuICA1MzpcdFx0c2VsZWN0IENSQzMyXG4gIDU0Olx0XHRoZWxwXG4gIDU1Olx0XHQgIElmIHlvdSBoYXZlIGEgSHlkcmEgRXRoZXJuZXQgYWRhcHRlciwgc2F5IFkuIE90aGVyd2lzZSwgc2F5IE4uXG4gIDU2Olx0XG4gIDU3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgNTg6XHRcdCAgd2lsbCBiZSBjYWxsZWQgaHlkcmEuXG4gIDU5Olx0XG4gIDYwOlx0Y29uZmlnIEFSTV9FVEhFUkhcbiAgNjE6XHRcdHRyaXN0YXRlIFwmIzM0O0ktY3ViZWQgRXRoZXJIL0FOVCBFdGhlck0gc3VwcG9ydFwmIzM0O1xuICA2MjpcdFx0ZGVwZW5kcyBvbiBBUk0gXHUwMDI2XHUwMDI2IEFSQ0hfQUNPUk5cbiAgNjM6XHRcdHNlbGVjdCBDUkMzMlxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBJZiB5b3UgaGF2ZSBhbiBBY29ybiBzeXN0ZW0gd2l0aCBvbmUgb2YgdGhlc2UgbmV0d29yayBjYXJkcywgeW91XG4gIDY2Olx0XHQgIHNob3VsZCBzYXkgWSB0byB0aGlzIG9wdGlvbiBpZiB5b3Ugd2lzaCB0byB1c2UgaXQgd2l0aCBMaW51eC5cbiAgNjc6XHRcbiAgNjg6XHRjb25maWcgTUFDODM5MFxuICA2OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWFjaW50b3NoIE5TIDgzOTAgYmFzZWQgZXRoZXJuZXQgY2FyZHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU4NgoJCQkJCQkJb3V0cHV0OiA3OQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgd2hvbGUgcGljdHVyZSBoZXJlLiBJIHNob3VsZCBwcm9iYWJseSBleHBhbmQgbXkgc2NvcGUgYW5kIGNoZWNrIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBmaWxlcyByZWxhdGVkIHRvIG5ldHdvcmtpbmcgYW5kIHN0b3JhZ2UuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnYCwgYW5kIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AuIFRoaXMgd2lsbCBoZWxwIG1lIGdldCBhIGJyb2FkZXIgcGVyc3BlY3RpdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyhIWURSQXxaT1JSTzgzOTB8QTIwNjV8QVJJQURORXxBMjA5MV9TQ1NJfEdWUDExX1NDU0l8U0NTSV9aT1JSTzdYWHxTQ1NJX1pPUlJPX0VTUCkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI0MSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc9MzY4PWNvbW1lbnQgXCYjMzQ7TWFjIFNNQnVzIGhvc3QgY29udHJvbGxlciBkcml2ZXJzXCYjMzQ7XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWctMzcwLVxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc6MzcxOmNvbmZpZyBJMkNfSFlEUkFcbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnLTM3Mi1cdHRyaXN0YXRlIFwmIzM0O0NIUlAgQXBwbGUgSHlkcmEgTWFjIEkvTyBJMkMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlPTMwPW9iai0kKENPTkZJR19JMkNfWkhBT1hJTilcdCYjNDM7PSBpMmMtdmlhaTJjLXpoYW94aW4ubyBpMmMtdmlhaTJjLWNvbW1vbi5vXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlLTMyLSMgTWFjIFNNQnVzIGhvc3QgY29udHJvbGxlciBkcml2ZXJzXG5kcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0kyQ19IWURSQSlcdFx0JiM0Mzs9IGkyYy1oeWRyYS5vXG5kcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGUtMzQtb2JqLSQoQ09ORklHX0kyQ19QT1dFUk1BQylcdCYjNDM7PSBpMmMtcG93ZXJtYWMub1xuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy0yMS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyMjojZGVmaW5lIEhZRFJBX0NQRF9QRDBcdDB4MDAwMDAwMDFcdC8qIENhY2hlUEQgbGluZXMgKi9cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyMzojZGVmaW5lIEhZRFJBX0NQRF9QRDFcdDB4MDAwMDAwMDJcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyNDojZGVmaW5lIEhZRFJBX0NQRF9QRDJcdDB4MDAwMDAwMDRcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyNTojZGVmaW5lIEhZRFJBX0NQRF9QRDNcdDB4MDAwMDAwMDhcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy0yNi1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyNzojZGVmaW5lIEhZRFJBX1NDTEtcdEhZRFJBX0NQRF9QRDBcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyODojZGVmaW5lIEhZRFJBX1NEQVRcdEhZRFJBX0NQRF9QRDFcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyOTojZGVmaW5lIEhZRFJBX1NDTEtfT0VcdDB4MDAwMDAwMTBcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzozMDojZGVmaW5lIEhZRFJBX1NEQVRfT0VcdDB4MDAwMDAwMjBcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy0zMS1cbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9NDQ9c3RhdGljIHZvaWQgaHlkcmFfYml0X3NldHNjbCh2b2lkICpkYXRhLCBpbnQgc3RhdGUpXG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTQ3LVx0aWYgKHN0YXRlKVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjQ4Olx0XHR2YWwgXHUwMDI2PSB+SFlEUkFfU0NMS19PRTtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy00OS1cdGVsc2Uge1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjUwOlx0XHR2YWwgXHUwMDI2PSB+SFlEUkFfU0NMSztcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo1MTpcdFx0dmFsIHw9IEhZRFJBX1NDTEtfT0U7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtNTItXHR9XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jPTU2PXN0YXRpYyB2b2lkIGh5ZHJhX2JpdF9zZXRzZGEodm9pZCAqZGF0YSwgaW50IHN0YXRlKVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy01OS1cdGlmIChzdGF0ZSlcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo2MDpcdFx0dmFsIFx1MDAyNj0gfkhZRFJBX1NEQVRfT0U7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtNjEtXHRlbHNlIHtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo2MjpcdFx0dmFsIFx1MDAyNj0gfkhZRFJBX1NEQVQ7XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6NjM6XHRcdHZhbCB8PSBIWURSQV9TREFUX09FO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTY0LVx0fVxuLS1cbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYz02OD1zdGF0aWMgaW50IGh5ZHJhX2JpdF9nZXRzY2wodm9pZCAqZGF0YSlcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy02OS17XG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6NzA6XHRyZXR1cm4gKHBkcmVncihkYXRhKSBcdTAwMjYgSFlEUkFfU0NMSykgIT0gMDtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy03MS19XG4tLVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jPTczPXN0YXRpYyBpbnQgaHlkcmFfYml0X2dldHNkYSh2b2lkICpkYXRhKVxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTc0LXtcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo3NTpcdHJldHVybiAocGRyZWdyKGRhdGEpIFx1MDAyNiBIWURSQV9TREFUKSAhPSAwO1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTc2LX1cbi0tXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9OTU9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGh5ZHJhX2lkc1tdID0ge1xuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjk2Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQVBQTEUsIFBDSV9ERVZJQ0VfSURfQVBQTEVfSFlEUkEpIH0sXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtOTctXHR7IDAsIH1cbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTQyLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzo0MzojZGVmaW5lIE1JTl9IWURSQVRJT05TIDI1NiAvKiBTaXplIG9mIGh5ZHJhdGlvbiBtZW1wb29sICovXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjQ0OiNkZWZpbmUgREVGQVVMVF9IWURSQVRJT05fVEhSRVNIT0xEIDEgLyogMSByZWdpb24gKi9cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6NDU6I2RlZmluZSBERUZBVUxUX0hZRFJBVElPTl9CQVRDSF9TSVpFIDEgLyogSHlkcmF0ZSBpbiBiYXRjaGVzIG9mIDEgcmVnaW9uICovXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTQ2LVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9Njk9c3RydWN0IGNsb25lIHtcbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE0My0jZGVmaW5lIERNX0NMT05FX0RJU0NBUkRfUEFTU0RPV04gMFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNDQ6I2RlZmluZSBETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCAxXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE0NTojZGVmaW5lIERNX0NMT05FX0hZRFJBVElPTl9TVVNQRU5ERUQgMlxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xNDYtXG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz03NjE9c3RhdGljIHZvaWQgaHlkcmF0aW9uX2tjb3B5ZF9jYWxsYmFjayhpbnQgcmVhZF9lcnIsIHVuc2lnbmVkIGxvbmcgd3JpdGVfZXJyLCB2b2lkICpjb250ZXh0KVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtNzg3LVx0LyogQ29udGludWUgYmFja2dyb3VuZCBoeWRyYXRpb24sIGlmIHRoZXJlIGlzIG5vIEkvTyBpbi1mbGlnaHQgKi9cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6Nzg4Olx0aWYgKHRlc3RfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTc4OS1cdCAgICAhYXRvbWljX3JlYWQoXHUwMDI2Y2xvbmUtXHUwMDNlaW9zX2luX2ZsaWdodCkpXG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz0xMDYxPXN0YXRpYyB2b2lkIGRvX2h5ZHJhdGlvbihzdHJ1Y3QgY2xvbmUgKmNsb25lKVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTA5Mi1cdG9mZnNldCA9IGNsb25lLVx1MDAzZWh5ZHJhdGlvbl9vZmZzZXQ7XG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjEwOTM6XHR3aGlsZSAobGlrZWx5KCF0ZXN0X2JpdChETV9DTE9ORV9IWURSQVRJT05fU1VTUEVOREVELCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncykpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMDk0LVx0ICAgICAgICFhdG9taWNfcmVhZChcdTAwMjZjbG9uZS1cdTAwM2Vpb3NfaW5fZmxpZ2h0KSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTA5NTpcdCAgICAgICB0ZXN0X2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXHUwMDI2Y2xvbmUtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMDk2LVx0ICAgICAgIG9mZnNldCBcdTAwM2MgbnJfcmVnaW9ucykge1xuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTM4Mj1zdGF0aWMgdm9pZCBlbWl0X2ZsYWdzKHN0cnVjdCBjbG9uZSAqY2xvbmUsIGNoYXIgKnJlc3VsdCwgdW5zaWduZWQgaW50IG1heGxlbixcbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTEzODctXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjEzODg6XHRjb3VudCA9ICF0ZXN0X2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXHUwMDI2Y2xvbmUtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMzg5LVx0Y291bnQgJiM0Mzs9ICF0ZXN0X2JpdChETV9DTE9ORV9ESVNDQVJEX1BBU1NET1dOLCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncyk7XG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMzkyLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxMzkzOlx0aWYgKCF0ZXN0X2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXHUwMDI2Y2xvbmUtXHUwMDNlZmxhZ3MpKVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMzk0LVx0XHRETUVNSVQoXCYjMzQ7bm9faHlkcmF0aW9uIFwmIzM0Oyk7XG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz0xNTM3PXN0YXRpYyBpbnQgcGFyc2VfZmVhdHVyZV9hcmdzKHN0cnVjdCBkbV9hcmdfc2V0ICphcywgc3RydWN0IGNsb25lICpjbG9uZSlcbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE1NjItXHRcdGlmICghc3RyY2FzZWNtcChhcmdfbmFtZSwgXCYjMzQ7bm9faHlkcmF0aW9uXCYjMzQ7KSkge1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNTYzOlx0XHRcdF9fY2xlYXJfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE1NjQtXHRcdH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAoYXJnX25hbWUsIFwmIzM0O25vX2Rpc2NhcmRfcGFzc2Rvd25cJiMzNDspKSB7XG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz0xNTc1PXN0YXRpYyBpbnQgcGFyc2VfY29yZV9hcmdzKHN0cnVjdCBkbV9hcmdfc2V0ICphcywgc3RydWN0IGNsb25lICpjbG9uZSlcbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE1ODktXHQvKiBJbml0aWFsaXplIGNvcmUgYXJndW1lbnRzICovXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE1OTA6XHRjbG9uZS1cdTAwM2VoeWRyYXRpb25fYmF0Y2hfc2l6ZSA9IERFRkFVTFRfSFlEUkFUSU9OX0JBVENIX1NJWkU7XG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE1OTE6XHRjbG9uZS1cdTAwM2VoeWRyYXRpb25fdGhyZXNob2xkID0gREVGQVVMVF9IWURSQVRJT05fVEhSRVNIT0xEO1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xNTkyLVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTc1ND1zdGF0aWMgaW50IGNsb25lX2N0cihzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgdW5zaWduZWQgaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTc3Ny1cdC8qIEluaXRpYWxpemUgZG0tY2xvbmUgZmxhZ3MgKi9cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTc3ODpcdF9fc2V0X2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXHUwMDI2Y2xvbmUtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNzc5Olx0X19zZXRfYml0KERNX0NMT05FX0hZRFJBVElPTl9TVVNQRU5ERUQsIFx1MDAyNmNsb25lLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTc4MC1cdF9fc2V0X2JpdChETV9DTE9ORV9ESVNDQVJEX1BBU1NET1dOLCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncyk7XG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xODgwLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxODgxOlx0ciA9IG1lbXBvb2xfaW5pdF9zbGFiX3Bvb2woXHUwMDI2Y2xvbmUtXHUwMDNlaHlkcmF0aW9uX3Bvb2wsIE1JTl9IWURSQVRJT05TLFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xODgyLVx0XHRcdFx0ICAgX2h5ZHJhdGlvbl9jYWNoZSk7XG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz0xOTU1PXN0YXRpYyB2b2lkIGNsb25lX3Bvc3RzdXNwZW5kKHN0cnVjdCBkbV90YXJnZXQgKnRpKVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTk3NS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTk3NjpcdHNldF9iaXQoRE1fQ0xPTkVfSFlEUkFUSU9OX1NVU1BFTkRFRCwgXHUwMDI2Y2xvbmUtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xOTc3LVxuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTk5Mz1zdGF0aWMgdm9pZCBjbG9uZV9yZXN1bWUoc3RydWN0IGRtX3RhcmdldCAqdGkpXG4tLVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xOTk2LVxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxOTk3Olx0Y2xlYXJfYml0KERNX0NMT05FX0hZRFJBVElPTl9TVVNQRU5ERUQsIFx1MDAyNmNsb25lLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTk5OC1cdGRvX3dha2VyKFx1MDAyNmNsb25lLVx1MDAzZXdha2VyLndvcmspO1xuLS1cbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MjEwMz1zdGF0aWMgdm9pZCBlbmFibGVfaHlkcmF0aW9uKHN0cnVjdCBjbG9uZSAqY2xvbmUpXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTIxMDQte1xuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoyMTA1Olx0aWYgKCF0ZXN0X2FuZF9zZXRfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcdTAwMjZjbG9uZS1cdTAwM2VmbGFncykpXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTIxMDYtXHRcdHdha2Vfd29ya2VyKGNsb25lKTtcbi0tXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jPTIxMDk9c3RhdGljIHZvaWQgZGlzYWJsZV9oeWRyYXRpb24oc3RydWN0IGNsb25lICpjbG9uZSlcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMjExMC17XG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjIxMTE6XHRjbGVhcl9iaXQoRE1fQ0xPTkVfSFlEUkFUSU9OX0VOQUJMRUQsIFx1MDAyNmNsb25lLVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMjExMi19XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTM4PXN0cnVjdCBteGxfYmFzZSB7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTYzLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY0Olx0dTggICAgICAgICAgICAgICAgICAgYnVmW01YTF9IWURSQV9PRU1fTUFYX0NNRF9CVUZGX0xFTl07XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjUtXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTE0OD1zdGF0aWMgaW50IHJlYWRfcmVnaXN0ZXJfdW5sb2NrZWQoc3RydWN0IG14bCAqc3RhdGUsIHUzMiByZWcsIHUzMiAqdmFsKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xNTAtXHRpbnQgc3RhdDtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxNTE6XHR1OCBkYXRhW01YTF9IWURSQV9SRUdfU0laRV9JTl9CWVRFUyAmIzQzOyBNWExfSFlEUkFfSTJDX0hEUl9TSVpFXSA9IHtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxNTI6XHRcdE1YTF9IWURSQV9QTElEX1JFR19SRUFELCAweDA0LFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTE1My1cdFx0R0VUX0JZVEUocmVnLCAwKSwgR0VUX0JZVEUocmVnLCAxKSxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTU3LVx0c3RhdCA9IGkyY3dyaXRlKHN0YXRlLCBkYXRhLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjE1ODpcdFx0XHRNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMgJiM0MzsgTVhMX0hZRFJBX0kyQ19IRFJfU0laRSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTU5LVx0aWYgKHN0YXQpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTE2Mi1cdFx0c3RhdCA9IGkyY3JlYWQoc3RhdGUsICh1OCAqKSB2YWwsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTYzOlx0XHRcdCAgICAgICBNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTE2NC1cdGxlMzJfdG9fY3B1cyh2YWwpO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0yMDE9c3RhdGljIGludCB3cml0ZV9yZWdpc3RlcihzdHJ1Y3QgbXhsICpzdGF0ZSwgdTMyIHJlZywgdTMyIHZhbClcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjAzLVx0aW50IHN0YXQ7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjA0Olx0dTggZGF0YVtNWExfSFlEUkFfUkVHX1dSSVRFX0xFTl0gPSB7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjA1Olx0XHRNWExfSFlEUkFfUExJRF9SRUdfV1JJVEUsIDB4MDgsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjA2LVx0XHRCWVRFMChyZWcpLCBCWVRFMShyZWcpLCBCWVRFMihyZWcpLCBCWVRFMyhyZWcpLFxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0yMTc9c3RhdGljIGludCB3cml0ZV9maXJtd2FyZV9ibG9jayhzdHJ1Y3QgbXhsICpzdGF0ZSxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjIzLVx0bXV0ZXhfbG9jayhcdTAwMjZzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZWkyY19sb2NrKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyMjQ6XHRidWZbMF0gPSBNWExfSFlEUkFfUExJRF9SRUdfV1JJVEU7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjI1LVx0YnVmWzFdID0gc2l6ZSAmIzQzOyA0O1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yMzEtXHRzdGF0ID0gaTJjd3JpdGUoc3RhdGUsIGJ1ZixcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyMzI6XHRcdFx0TVhMX0hZRFJBX0kyQ19IRFJfU0laRSAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjIzMzpcdFx0XHRNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMgJiM0Mzsgc2l6ZSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjM0LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnN0YXRlLVx1MDAzZWJhc2UtXHUwMDNlaTJjX2xvY2spO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0yNDA9c3RhdGljIGludCByZWFkX3JlZ2lzdGVyKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgcmVnLCB1MzIgKnZhbClcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjQyLVx0aW50IHN0YXQ7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjQzOlx0dTggZGF0YVtNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMgJiM0MzsgTVhMX0hZRFJBX0kyQ19IRFJfU0laRV0gPSB7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjQ0Olx0XHRNWExfSFlEUkFfUExJRF9SRUdfUkVBRCwgMHgwNCxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNDUtXHRcdEdFVF9CWVRFKHJlZywgMCksIEdFVF9CWVRFKHJlZywgMSksXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTI1MC1cdHN0YXQgPSBpMmN3cml0ZShzdGF0ZSwgZGF0YSxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyNTE6XHRcdFx0TVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTICYjNDM7IE1YTF9IWURSQV9JMkNfSERSX1NJWkUpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTI1Mi1cdGlmIChzdGF0KVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNTUtXHRcdHN0YXQgPSBpMmNyZWFkKHN0YXRlLCAodTggKikgdmFsLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjI1NjpcdFx0XHQgICAgICAgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNTctXHRtdXRleF91bmxvY2soXHUwMDI2c3RhdGUtXHUwMDNlYmFzZS1cdTAwM2VpMmNfbG9jayk7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTI2ND1zdGF0aWMgaW50IHJlYWRfcmVnaXN0ZXJfYmxvY2soc3RydWN0IG14bCAqc3RhdGUsIHUzMiByZWcsIHUzMiBzaXplLCB1OCAqZGF0YSlcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjcwLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjI3MTpcdGJ1ZlswXSA9IE1YTF9IWURSQV9QTElEX1JFR19SRUFEO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTI3Mi1cdGJ1ZlsxXSA9IHNpemUgJiM0MzsgNDtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjc3LVx0c3RhdCA9IGkyY3dyaXRlKHN0YXRlLCBidWYsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6Mjc4Olx0XHRcdE1YTF9IWURSQV9JMkNfSERSX1NJWkUgJiM0MzsgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNzktXHRpZiAoIXN0YXQpIHtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MzE5PXN0YXRpYyBpbnQgZmlybXdhcmVfaXNfYWxpdmUoc3RydWN0IG14bCAqc3RhdGUpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyMi1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzozMjM6XHRpZiAocmVhZF9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfSEVBUl9CRUFULCBcdTAwMjZoYjApKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyNC1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMzI1LVx0bXNsZWVwKDIwKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzozMjY6XHRpZiAocmVhZF9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfSEVBUl9CRUFULCBcdTAwMjZoYjEpKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyNy1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTM4ND1zdGF0aWMgaW50IGNmZ19zY3JhbWJsZXIoc3RydWN0IG14bCAqc3RhdGUsIHUzMiBnb2xkKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0zODctXHR1OCBidWZbMjZdID0ge1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjM4ODpcdFx0TVhMX0hZRFJBX1BMSURfQ01EX1dSSVRFLCAyNCxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzozODk6XHRcdDAsIE1YTF9IWURSQV9ERU1PRF9TQ1JBTUJMRV9DT0RFX0NNRCwgMCwgMCxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0zOTAtXHRcdHN0YXRlLVx1MDAzZWRlbW9kLCAwLCAwLCAwLFxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz00MDU9c3RhdGljIGludCBjZmdfZGVtb2RfYWJvcnRfdHVuZShzdHJ1Y3QgbXhsICpzdGF0ZSlcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00MDYte1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQwNzpcdHN0cnVjdCBNWExfSFlEUkFfREVNT0RfQUJPUlRfVFVORV9UIGFib3J0X3R1bmVfY21kO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQwOC1cdHU4IGNtZF9zaXplID0gc2l6ZW9mKGFib3J0X3R1bmVfY21kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0MDk6XHR1OCBjbWRfYnVmZltNWExfSFlEUkFfT0VNX01BWF9DTURfQlVGRl9MRU5dO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQxMC1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00MTEtXHRhYm9ydF90dW5lX2NtZC5kZW1vZF9pZCA9IHN0YXRlLVx1MDAzZWRlbW9kO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQxMjpcdEJVSUxEX0hZRFJBX0NNRChNWExfSFlEUkFfQUJPUlRfVFVORV9DTUQsIE1YTF9DTURfV1JJVEUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDEzLVx0XHRcdGNtZF9zaXplLCBcdTAwMjZhYm9ydF90dW5lX2NtZCwgY21kX2J1ZmYpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQxNDpcdHJldHVybiBzZW5kX2NvbW1hbmQoc3RhdGUsIGNtZF9zaXplICYjNDM7IE1YTF9IWURSQV9DTURfSEVBREVSX1NJWkUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDE1LVx0XHRcdCAgICBcdTAwMjZjbWRfYnVmZlswXSk7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTQyNj1zdGF0aWMgaW50IHNldF9wYXJhbWV0ZXJzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00MjktXHRzdHJ1Y3QgZHR2X2Zyb250ZW5kX3Byb3BlcnRpZXMgKnAgPSBcdTAwMjZmZS1cdTAwM2VkdHZfcHJvcGVydHlfY2FjaGU7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDMwOlx0c3RydWN0IE1YTF9IWURSQV9ERU1PRF9QQVJBTV9UIGRlbW9kX2NoYW5fY2ZnO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQzMS1cdHU4IGNtZF9zaXplID0gc2l6ZW9mKGRlbW9kX2NoYW5fY2ZnKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0MzI6XHR1OCBjbWRfYnVmZltNWExfSFlEUkFfT0VNX01BWF9DTURfQlVGRl9MRU5dO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQzMy1cdHUzMiBzcmFuZ2UgPSAxMDtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDQ0LVx0Y2FzZSBTWVNfRFNTOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ0NTpcdFx0ZGVtb2RfY2hhbl9jZmcuc3RhbmRhcmQgPSBNWExfSFlEUkFfRFNTO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ0NjpcdFx0ZGVtb2RfY2hhbl9jZmcucm9sbF9vZmYgPSBNWExfSFlEUkFfUk9MTE9GRl9BVVRPO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ0Ny1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ1MS1cdFx0XHRzcmFuZ2UgPSAxMDtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NTI6XHRcdGRlbW9kX2NoYW5fY2ZnLnN0YW5kYXJkID0gTVhMX0hZRFJBX0RWQlM7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDUzOlx0XHRkZW1vZF9jaGFuX2NmZy5yb2xsX29mZiA9IE1YTF9IWURSQV9ST0xMT0ZGXzBfMzU7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDU0Olx0XHRkZW1vZF9jaGFuX2NmZy5tb2R1bGF0aW9uX3NjaGVtZSA9IE1YTF9IWURSQV9NT0RfUVBTSztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NTU6XHRcdGRlbW9kX2NoYW5fY2ZnLnBpbG90cyA9IE1YTF9IWURSQV9QSUxPVFNfT0ZGO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ1Ni1cdFx0YnJlYWs7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDU3LVx0Y2FzZSBTWVNfRFZCUzI6XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDU4Olx0XHRkZW1vZF9jaGFuX2NmZy5zdGFuZGFyZCA9IE1YTF9IWURSQV9EVkJTMjtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NTk6XHRcdGRlbW9kX2NoYW5fY2ZnLnJvbGxfb2ZmID0gTVhMX0hZRFJBX1JPTExPRkZfQVVUTztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NjA6XHRcdGRlbW9kX2NoYW5fY2ZnLm1vZHVsYXRpb25fc2NoZW1lID0gTVhMX0hZRFJBX01PRF9BVVRPO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ2MTpcdFx0ZGVtb2RfY2hhbl9jZmcucGlsb3RzID0gTVhMX0hZRFJBX1BJTE9UU19BVVRPO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ2Mi1cdFx0Y2ZnX3NjcmFtYmxlcihzdGF0ZSwgcC1cdTAwM2VzY3JhbWJsaW5nX3NlcXVlbmNlX2luZGV4KTtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDcxLVx0ZGVtb2RfY2hhbl9jZmcubWF4X2NhcnJpZXJfb2Zmc2V0X2luX21oeiA9IHNyYW5nZTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NzI6XHRkZW1vZF9jaGFuX2NmZy5zcGVjdHJ1bV9pbnZlcnNpb24gPSBNWExfSFlEUkFfU1BFQ1RSVU1fQVVUTztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NzM6XHRkZW1vZF9jaGFuX2NmZy5mZWNfY29kZV9yYXRlID0gTVhMX0hZRFJBX0ZFQ19BVVRPO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ3NC1cbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDgxLVx0c3RhdGUtXHUwMDNldHVuZXJfaW5fdXNlID0gc3RhdGUtXHUwMDNldHVuZXI7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDgyOlx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9ERU1PRF9TRVRfUEFSQU1fQ01ELCBNWExfQ01EX1dSSVRFLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ4My1cdFx0XHRjbWRfc2l6ZSwgXHUwMDI2ZGVtb2RfY2hhbl9jZmcsIGNtZF9idWZmKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0ODQ6XHRzdGF0ID0gc2VuZF9jb21tYW5kKHN0YXRlLCBjbWRfc2l6ZSAmIzQzOyBNWExfSFlEUkFfQ01EX0hFQURFUl9TSVpFLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ4NS1cdFx0XHQgICAgXHUwMDI2Y21kX2J1ZmZbMF0pO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz01MTI9c3RhdGljIGludCByZWFkX3NucihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSlcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTE5LVx0bXV0ZXhfbG9jayhcdTAwMjZzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXN0YXR1c19sb2NrKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1MjA6XHRIWURSQV9ERU1PRF9TVEFUVVNfTE9DSyhzdGF0ZSwgc3RhdGUtXHUwMDNlZGVtb2QpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjUyMTpcdHN0YXQgPSByZWFkX3JlZ2lzdGVyKHN0YXRlLCAoSFlEUkFfRE1EX1NOUl9BRERSX09GRlNFVCAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjUyMjpcdFx0XHRcdCAgICAgSFlEUkFfRE1EX1NUQVRVU19PRkZTRVQoc3RhdGUtXHUwMDNlZGVtb2QpKSxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01MjMtXHRcdFx0ICAgICBcdTAwMjZyZWdfZGF0YSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTI0Olx0SFlEUkFfREVNT0RfU1RBVFVTX1VOTE9DSyhzdGF0ZSwgc3RhdGUtXHUwMDNlZGVtb2QpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTUyNS1cdG11dGV4X3VubG9jayhcdTAwMjZzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXN0YXR1c19sb2NrKTtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9NTMzPXN0YXRpYyBpbnQgcmVhZF9iZXIoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTUzOS1cdG11dGV4X2xvY2soXHUwMDI2c3RhdGUtXHUwMDNlYmFzZS1cdTAwM2VzdGF0dXNfbG9jayk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTQwOlx0SFlEUkFfREVNT0RfU1RBVFVTX0xPQ0soc3RhdGUsIHN0YXRlLVx1MDAzZWRlbW9kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDEtXHRyZWFkX3JlZ2lzdGVyX2Jsb2NrKHN0YXRlLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU0MjpcdFx0KEhZRFJBX0RNRF9EVkJTXzFTVF9DT1JSX1JTX0VSUk9SU19BRERSX09GRlNFVCAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU0MzpcdFx0IEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVx1MDAzZWRlbW9kKSksXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTQ0LVx0XHQoNCAqIHNpemVvZih1MzIpKSxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDUtXHRcdCh1OCAqKSBcdTAwMjZyZWdbMF0pO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU0NjpcdEhZRFJBX0RFTU9EX1NUQVRVU19VTkxPQ0soc3RhdGUsIHN0YXRlLVx1MDAzZWRlbW9kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDctXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTU2MC1cdHJlYWRfcmVnaXN0ZXJfYmxvY2soc3RhdGUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTYxOlx0XHQoSFlEUkFfRE1EX0RWQlMyX0NSQ19FUlJPUlNfQUREUl9PRkZTRVQgJiM0MztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1NjI6XHRcdCBIWURSQV9ETURfU1RBVFVTX09GRlNFVChzdGF0ZS1cdTAwM2VkZW1vZCkpLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTU2My1cdFx0KDcgKiBzaXplb2YodTMyKSksXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTU4OT1zdGF0aWMgaW50IHJlYWRfc2lnbmFsX3N0cmVuZ3RoKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01OTYtXHRtdXRleF9sb2NrKFx1MDAyNnN0YXRlLVx1MDAzZWJhc2UtXHUwMDNlc3RhdHVzX2xvY2spO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU5NzpcdEhZRFJBX0RFTU9EX1NUQVRVU19MT0NLKHN0YXRlLCBzdGF0ZS1cdTAwM2VkZW1vZCk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTk4Olx0c3RhdCA9IHJlYWRfcmVnaXN0ZXIoc3RhdGUsIChIWURSQV9ETURfU1RBVFVTX0lOUFVUX1BPV0VSX0FERFIgJiM0MztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1OTk6XHRcdFx0XHQgICAgIEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVx1MDAzZWRlbW9kKSksXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjAwLVx0XHRcdCAgICAgXHUwMDI2cmVnX2RhdGEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYwMTpcdEhZRFJBX0RFTU9EX1NUQVRVU19VTkxPQ0soc3RhdGUsIHN0YXRlLVx1MDAzZWRlbW9kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02MDItXHRtdXRleF91bmxvY2soXHUwMDI2c3RhdGUtXHUwMDNlYmFzZS1cdTAwM2VzdGF0dXNfbG9jayk7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTYxMD1zdGF0aWMgaW50IHJlYWRfc3RhdHVzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCBlbnVtIGZlX3N0YXR1cyAqc3RhdHVzKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02MTYtXHRtdXRleF9sb2NrKFx1MDAyNnN0YXRlLVx1MDAzZWJhc2UtXHUwMDNlc3RhdHVzX2xvY2spO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYxNzpcdEhZRFJBX0RFTU9EX1NUQVRVU19MT0NLKHN0YXRlLCBzdGF0ZS1cdTAwM2VkZW1vZCk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NjE4Olx0cmVhZF9yZWdpc3RlcihzdGF0ZSwgKEhZRFJBX0RNRF9MT0NLX1NUQVRVU19BRERSX09GRlNFVCAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYxOTpcdFx0XHQgICAgIEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVx1MDAzZWRlbW9kKSksXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjIwLVx0XHRcdCAgICAgXHUwMDI2cmVnX2RhdGEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYyMTpcdEhZRFJBX0RFTU9EX1NUQVRVU19VTkxPQ0soc3RhdGUsIHN0YXRlLVx1MDAzZWRlbW9kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02MjItXHRtdXRleF91bmxvY2soXHUwMDI2c3RhdGUtXHUwMDNlYmFzZS1cdTAwM2VzdGF0dXNfbG9jayk7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTY0OD1zdGF0aWMgaW50IHR1bmUoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGJvb2wgcmVfdHVuZSxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjY1LVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY2NjpzdGF0aWMgZW51bSBmZV9jb2RlX3JhdGUgY29udl9mZWMoZW51bSBNWExfSFlEUkFfRkVDX0UgZmVjKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY2Ny17XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY3My1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2NzQ6XHRpZiAoZmVjIFx1MDAzZSBNWExfSFlEUkFfRkVDXzlfMTApXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjc1LVx0XHRyZXR1cm4gRkVDX05PTkU7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTY3OT1zdGF0aWMgaW50IGdldF9mcm9udGVuZChzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjg2LVx0bXV0ZXhfbG9jayhcdTAwMjZzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXN0YXR1c19sb2NrKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2ODc6XHRIWURSQV9ERU1PRF9TVEFUVVNfTE9DSyhzdGF0ZSwgc3RhdGUtXHUwMDNlZGVtb2QpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY4OC1cdHJlYWRfcmVnaXN0ZXJfYmxvY2soc3RhdGUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6Njg5Olx0XHQoSFlEUkFfRE1EX1NUQU5EQVJEX0FERFJfT0ZGU0VUICYjNDM7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NjkwOlx0XHRIWURSQV9ETURfU1RBVFVTX09GRlNFVChzdGF0ZS1cdTAwM2VkZW1vZCkpLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY5MS1cdFx0KE1YTF9ERU1PRF9DSEFOX1BBUkFNU19CVUZGX1NJWkUgKiA0KSwgLyogMjUgKiA0IGJ5dGVzICovXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY5NC1cdHJlYWRfcmVnaXN0ZXJfYmxvY2soc3RhdGUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6Njk1Olx0XHQoSFlEUkFfRE1EX1NUQVRVU19DRU5URVJfRlJFUV9JTl9LSFpfQUREUiAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY5NjpcdFx0SFlEUkFfRE1EX1NUQVRVU19PRkZTRVQoc3RhdGUtXHUwMDNlZGVtb2QpKSxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02OTctXHRcdCg0KSwgLyogNCBieXRlcyAqL1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY5OC1cdFx0KHU4ICopIFx1MDAyNmZyZXEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY5OTpcdEhZRFJBX0RFTU9EX1NUQVRVU19VTkxPQ0soc3RhdGUsIHN0YXRlLVx1MDAzZWRlbW9kKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MDAtXHRtdXRleF91bmxvY2soXHUwMDI2c3RhdGUtXHUwMDNlYmFzZS1cdTAwM2VzdGF0dXNfbG9jayk7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcwOC1cdCAqIHAtXHUwMDNlZGVsaXZlcnlfc3lzdGVtID1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MDk6XHQgKlx0KE1YTF9IWURSQV9CQ0FTVF9TVERfRSkgcmVnRGF0YVtETURfU1RBTkRBUkRfQUREUl07XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzEwLVx0ICogcC1cdTAwM2VpbnZlcnNpb24gPVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjcxMTpcdCAqXHQoTVhMX0hZRFJBX1NQRUNUUlVNX0UpIHJlZ0RhdGFbRE1EX1NQRUNUUlVNX0lOVkVSU0lPTl9BRERSXTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MTItXHQgKiBmcmVxU2VhcmNoUmFuZ2VLSHogPVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MjAtXHRjYXNlIFNZU19EVkJTMjpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MjE6XHRcdHN3aXRjaCAoKGVudW0gTVhMX0hZRFJBX1BJTE9UU19FKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcyMi1cdFx0XHRyZWdfZGF0YVtETURfRFZCUzJfUElMT1RfT05fT0ZGX0FERFJdKSB7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzIzOlx0XHRjYXNlIE1YTF9IWURSQV9QSUxPVFNfT0ZGOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcyNC1cdFx0XHRwLVx1MDAzZXBpbG90ID0gUElMT1RfT0ZGO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcyNS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MjY6XHRcdGNhc2UgTVhMX0hZRFJBX1BJTE9UU19PTjpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MjctXHRcdFx0cC1cdTAwM2VwaWxvdCA9IFBJTE9UX09OO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MzMtXHRjYXNlIFNZU19EVkJTOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjczNDpcdFx0c3dpdGNoICgoZW51bSBNWExfSFlEUkFfTU9EVUxBVElPTl9FKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTczNS1cdFx0XHRyZWdfZGF0YVtETURfTU9EVUxBVElPTl9TQ0hFTUVfQUREUl0pIHtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MzY6XHRcdGNhc2UgTVhMX0hZRFJBX01PRF9RUFNLOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTczNy1cdFx0XHRwLVx1MDAzZW1vZHVsYXRpb24gPSBRUFNLO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTczOC1cdFx0XHRicmVhaztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3Mzk6XHRcdGNhc2UgTVhMX0hZRFJBX01PRF84UFNLOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc0MC1cdFx0XHRwLVx1MDAzZW1vZHVsYXRpb24gPSBQU0tfODtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzQ0LVx0XHR9XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzQ1Olx0XHRzd2l0Y2ggKChlbnVtIE1YTF9IWURSQV9ST0xMT0ZGX0UpXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzQ2LVx0XHRcdHJlZ19kYXRhW0RNRF9TUEVDVFJVTV9ST0xMX09GRl9BRERSXSkge1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjc0NzpcdFx0Y2FzZSBNWExfSFlEUkFfUk9MTE9GRl8wXzIwOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc0OC1cdFx0XHRwLVx1MDAzZXJvbGxvZmYgPSBST0xMT0ZGXzIwO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc0OS1cdFx0XHRicmVhaztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3NTA6XHRcdGNhc2UgTVhMX0hZRFJBX1JPTExPRkZfMF8zNTpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03NTEtXHRcdFx0cC1cdTAwM2Vyb2xsb2ZmID0gUk9MTE9GRl8zNTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03NTItXHRcdFx0YnJlYWs7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzUzOlx0XHRjYXNlIE1YTF9IWURSQV9ST0xMT0ZGXzBfMjU6XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzU0LVx0XHRcdHAtXHUwMDNlcm9sbG9mZiA9IFJPTExPRkZfMjU7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTgwNz1zdGF0aWMgdm9pZCBjZmdfZGV2X3h0YWwoc3RydWN0IG14bCAqc3RhdGUsIHUzMiBmcmVxLCB1MzIgY2FwLCB1MzIgZW5hYmxlKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy04MTItXHRpZiAoZnJlcSA9PSAyNDAwMDAwMClcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo4MTM6XHRcdHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9DUllTVEFMX1NFVFRJTkcsIDApO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTgxNC1cdGVsc2VcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo4MTU6XHRcdHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9DUllTVEFMX1NFVFRJTkcsIDEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTgxNi1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo4MTc6XHR3cml0ZV9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfQ1JZU1RBTF9DQVAsIGNhcCk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtODE4LX1cbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9ODQxPXN0YXRpYyBpbnQgd3JpdGVfZndfc2VnbWVudChzdHJ1Y3QgbXhsICpzdGF0ZSxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtODQ4LVx0dTggKndfYnVmX3B0ciA9IE5VTEw7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6ODQ5Olx0dTMyIGJsb2NrX3NpemUgPSAoKE1YTF9IWURSQV9PRU1fTUFYX0JMT0NLX1dSSVRFX0xFTkdUSCAtXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6ODUwOlx0XHRcdCAoTVhMX0hZRFJBX0kyQ19IRFJfU0laRSAmIzQzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg1MTpcdFx0XHQgIE1YTF9IWURSQV9SRUdfU0laRV9JTl9CWVRFUykpIC8gNCkgKiA0O1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg1MjpcdHU4IHdfbXNnX2J1ZmZlcltNWExfSFlEUkFfT0VNX01BWF9CTE9DS19XUklURV9MRU5HVEggLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg1MzpcdFx0ICAgICAgKE1YTF9IWURSQV9JMkNfSERSX1NJWkUgJiM0MzsgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKV07XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtODU0LVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz04NzY9c3RhdGljIGludCBkb19maXJtd2FyZV9kb3dubG9hZChzdHJ1Y3QgbXhsICpzdGF0ZSwgdTggKm1iaW5fYnVmZmVyX3B0cixcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTA3LVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjkwODpcdFx0aWYgKHN0YXRlLVx1MDAzZWJhc2UtXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU2OCkge1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTkwOS1cdFx0XHRpZiAoKCgoc2VnX2FkZHJlc3MgXHUwMDI2IDB4OTA3NjAwMDApID09IDB4OTA3NjAwMDApIHx8XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTk1Nz1zdGF0aWMgaW50IGZpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCBteGwgKnN0YXRlLCB1OCAqbWJpbiwgdTMyIG1iaW5fbGVuKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05NjAtXHR1MzIgcmVnX2RhdGEgPSAwO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk2MTpcdHN0cnVjdCBNWExfSFlEUkFfU0tVX0NPTU1BTkRfVCBkZXZfc2t1X2NmZztcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5NjI6XHR1OCBjbWRfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgTVhMX0hZRFJBX1NLVV9DT01NQU5EX1QpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk2MzpcdHU4IGNtZF9idWZmW3NpemVvZihzdHJ1Y3QgTVhMX0hZRFJBX1NLVV9DT01NQU5EX1QpICYjNDM7IDZdO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk2NC1cbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTc0LVx0LyogUmVzZXQgVFggRklGTyYjMzk7cywgQkJBTkQsIFhCQVIgKi9cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5NzU6XHRzdGF0dXMgPSB3cml0ZV9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfUkVTRVRfVFJBTlNQT1JUX0ZJRk9fUkVHLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk3NjpcdFx0XHRcdEhZRFJBX1JFU0VUX1RSQU5TUE9SVF9GSUZPX0RBVEEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk3Ny1cdGlmIChzdGF0dXMpXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTc4LVx0XHRyZXR1cm4gc3RhdHVzO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk3OTpcdHN0YXR1cyA9IHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9SRVNFVF9CQkFORF9SRUcsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTgwOlx0XHRcdFx0SFlEUkFfUkVTRVRfQkJBTkRfREFUQSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTgxLVx0aWYgKHN0YXR1cylcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05ODItXHRcdHJldHVybiBzdGF0dXM7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTgzOlx0c3RhdHVzID0gd3JpdGVfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX1JFU0VUX1hCQVJfUkVHLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk4NDpcdFx0XHRcdEhZRFJBX1JFU0VUX1hCQVJfREFUQSk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTg1LVx0aWYgKHN0YXR1cylcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTkwLVx0ICovXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTkxOlx0c3RhdHVzID0gd3JpdGVfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX01PRFVMRVNfQ0xLXzJfUkVHLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk5MjpcdFx0XHRcdEhZRFJBX0RJU0FCTEVfQ0xLXzIpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk5My1cdGlmIChzdGF0dXMpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk5NS1cdC8qIENsZWFyIFNvZnR3YXJlIFx1MDAyNiBIb3N0IGludGVycnVwdCBzdGF0dXMgLSAoQ2xlYXIgb24gcmVhZCkgKi9cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5OTY6XHRzdGF0dXMgPSByZWFkX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9QUkNNX1JPT1RfQ0xLX1JFRywgXHUwMDI2cmVnX2RhdGEpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk5Ny1cdGlmIChzdGF0dXMpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwMDItXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTAwMzpcdGlmIChzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXR5cGUgPT0gTVhMX0hZRFJBX0RFVklDRV81NjgpIHtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDA0LVx0XHR1c2xlZXBfcmFuZ2UoMTAwMDAsIDExMDAwKTtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTA0MC1cdGRldl9za3VfY2ZnLnNrdV90eXBlID0gc3RhdGUtXHUwMDNlYmFzZS1cdTAwM2Vza3VfdHlwZTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDQxOlx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9ERVZfQ0ZHX1NLVV9DTUQsIE1YTF9DTURfV1JJVEUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTA0Mi1cdFx0XHRjbWRfc2l6ZSwgXHUwMDI2ZGV2X3NrdV9jZmcsIGNtZF9idWZmKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDQzOlx0c3RhdHVzID0gc2VuZF9jb21tYW5kKHN0YXRlLCBjbWRfc2l6ZSAmIzQzOyBNWExfSFlEUkFfQ01EX0hFQURFUl9TSVpFLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNDQtXHRcdFx0ICAgICAgXHUwMDI2Y21kX2J1ZmZbMF0pO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0xMDQ5PXN0YXRpYyBpbnQgY2ZnX3RzX3BhZF9tdXgoc3RydWN0IG14bCAqc3RhdGUsIGVudW0gTVhMX0JPT0xfRSBlbmFibGVfc2VyaWFsX3RzKVxuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDU1LVx0XHRwYWRfbXV4X3ZhbHVlID0gMDtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDU2Olx0XHRpZiAoKHN0YXRlLVx1MDAzZWJhc2UtXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU0MSkgfHxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDU3Olx0XHQgICAgKHN0YXRlLVx1MDAzZWJhc2UtXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU0MVMpKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNTgtXHRcdFx0cGFkX211eF92YWx1ZSA9IDI7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTA1OS1cdH0gZWxzZSB7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTA2MDpcdFx0aWYgKChzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXR5cGUgPT0gTVhMX0hZRFJBX0RFVklDRV81ODEpIHx8XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTA2MTpcdFx0ICAgIChzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXR5cGUgPT0gTVhMX0hZRFJBX0RFVklDRV81ODFTKSlcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDYyLVx0XHRcdHBhZF9tdXhfdmFsdWUgPSAyO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDY3LVx0c3dpdGNoIChzdGF0ZS1cdTAwM2ViYXNlLVx1MDAzZXR5cGUpIHtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDY4Olx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU2MTpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDY5Olx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU4MTpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDcwOlx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU0MTpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDcxOlx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU0MVM6XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTA3MjpcdGNhc2UgTVhMX0hZRFJBX0RFVklDRV81NjFTOlxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNzM6XHRjYXNlIE1YTF9IWURSQV9ERVZJQ0VfNTgxUzpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDc0LVx0XHRzdGF0dXMgfD0gdXBkYXRlX2J5X21uZW1vbmljKHN0YXRlLCAweDkwMDAwMTcwLCAyNCwgMyxcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTEwMS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMTAyOlx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU0NDpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMTAzOlx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU0MjpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMTA0LVx0XHRzdGF0dXMgfD0gdXBkYXRlX2J5X21uZW1vbmljKHN0YXRlLCAweDkwMDAwMTZDLCA0LCAzLCAxKTtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTE5MS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMTkyOlx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU2ODpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMTkzLVx0XHRpZiAoZW5hYmxlX3NlcmlhbF90cyA9PSBNWExfRkFMU0UpIHtcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTI4NC1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMjg1Olx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU4NDpcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMjg2LVx0ZGVmYXVsdDpcbi0tXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MTMxND1zdGF0aWMgaW50IHNldF9kcml2ZV9zdHJlbmd0aChzdHJ1Y3QgbXhsICpzdGF0ZSxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzE1Olx0XHRlbnVtIE1YTF9IWURSQV9UU19EUklWRV9TVFJFTkdUSF9FIHRzX2RyaXZlX3N0cmVuZ3RoKVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzMTYte1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0xMzQ2PXN0YXRpYyBpbnQgZW5hYmxlX3R1bmVyKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgdHVuZXIsIHUzMiBlbmFibGUpXG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNDgtXHRpbnQgc3RhdCA9IDA7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM0OTpcdHN0cnVjdCBNWExfSFlEUkFfVFVORVJfQ01EIGN0cmxfdHVuZXJfY21kO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNTAtXHR1OCBjbWRfc2l6ZSA9IHNpemVvZihjdHJsX3R1bmVyX2NtZCk7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM1MTpcdHU4IGNtZF9idWZmW01YTF9IWURSQV9PRU1fTUFYX0NNRF9CVUZGX0xFTl07XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTM1Mi1cdHUzMiB2YWwsIGNvdW50ID0gMTA7XG4tLVxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNTUtXHRjdHJsX3R1bmVyX2NtZC5lbmFibGUgPSBlbmFibGU7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM1NjpcdEJVSUxEX0hZRFJBX0NNRChNWExfSFlEUkFfVFVORVJfQUNUSVZBVEVfQ01ELCBNWExfQ01EX1dSSVRFLFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNTctXHRcdFx0Y21kX3NpemUsIFx1MDAyNmN0cmxfdHVuZXJfY21kLCBjbWRfYnVmZik7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM1ODpcdHN0YXQgPSBzZW5kX2NvbW1hbmQoc3RhdGUsIGNtZF9zaXplICYjNDM7IE1YTF9IWURSQV9DTURfSEVBREVSX1NJWkUsXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTM1OS1cdFx0XHQgICAgXHUwMDI2Y21kX2J1ZmZbMF0pO1xuLS1cbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMzYxLVx0XHRyZXR1cm4gc3RhdDtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzYyOlx0cmVhZF9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfVFVORVJfRU5BQkxFX0NPTVBMRVRFLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNjMtXHR3aGlsZSAoLS1jb3VudCBcdTAwMjZcdTAwMjYgKCh2YWwgXHUwMDNlXHUwMDNlIHR1bmVyKSBcdTAwMjYgMSkgIT0gZW5hYmxlKSB7XG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTM2NC1cdFx0bXNsZWVwKDIwKTtcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzY1Olx0XHRyZWFkX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9UVU5FUl9FTkFCTEVfQ09NUExFVEUsIFx1MDAyNnZhbCk7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxMDkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIEtjb25maWcgZm9yIFpPUlJPODM5MCBTdXBwb3J0KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBgWk9SUk84MzkwYCBFdGhlcm5ldCBkcml2ZXIuIEkmIzM5O20gYXNzdW1pbmcgaXQmIzM5O3MgbGlrZWx5IGRlZmluZWQgdGhlcmUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBhbmQgdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgY29udHJvbGxlZC4gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXM/IENvbmRpdGlvbmFsIGNvbXBpbGF0aW9uPyBBbnkgc3BlY2lmaWMgQ09ORklHIG9wdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2Ygd2hlbiBjb25zaWRlcmluZyB0aGlzIGZ1bmN0aW9uYWxpdHk/IFVuZGVyc3RhbmRpbmcgdGhlIEtjb25maWcgZmlsZSBpcyB0aGUgZmlyc3QsIGVzc2VudGlhbCBzdGVwIHRvIGdyYXNwaW5nIGhvdyB0aGlzIGRyaXZlciBpcyBpbnRlZ3JhdGVkIGFuZCBjb25maWd1cmVkIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgaXRzIGJ1aWxkIGNoYXJhY3RlcmlzdGljcywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTUwOlx0XHQgIFN1cHBvcnQgZm9yIGNhcmRzIGJhc2VkIG9uIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIERQODM5MDJBVlxuIDE1MTpcdFx0ICBTVC1OSUMgU2VyaWFsIE5ldHdvcmsgSW50ZXJmYWNlIENvbnRyb2xsZXIgZm9yIFR3aXN0ZWQgUGFpci4gIFRoaXNcbiAxNTI6XHRcdCAgaXMgYSAxME1iaXQvc2VjIEV0aGVybmV0IGNvbnRyb2xsZXIuICBQcm9kdWN0IG92ZXJ2aWV3IGFuZCBzcGVjcyBhdFxuIDE1MzpcdFx0ICBcdTAwM2NodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9EUC9EUDgzOTAyQS5odG1sXHUwMDNlLlxuIDE1NDpcdFxuIDE1NTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuIDE1NjpcdFxuIDE1NzpcdGNvbmZpZyBaT1JSTzgzOTBcbiAxNTg6XHRcdHRyaXN0YXRlIFwmIzM0O1pvcnJvIE5TODM5MC1iYXNlZCBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4gMTU5Olx0XHRkZXBlbmRzIG9uIFpPUlJPXG4gMTYwOlx0XHRzZWxlY3QgQ1JDMzJcbiAxNjE6XHRcdGhlbHBcbiAxNjI6XHRcdCAgVGhpcyBkcml2ZXIgaXMgZm9yIFpvcnJvIEV0aGVybmV0IGNhcmRzIHVzaW5nIGFuIE5TODM5MC1jb21wYXRpYmxlXG4gMTYzOlx0XHQgIGNoaXBzZXQsIGxpa2UgdGhlIFZpbGxhZ2UgVHJvbmljIEFyaWFkbmUgSUkgYW5kIHRoZSBJbmRpdmlkdWFsXG4gMTY0Olx0XHQgIENvbXB1dGVycyBYLVN1cmYgRXRoZXJuZXQgY2FyZHMuIElmIHlvdSBoYXZlIHN1Y2ggYSBjYXJkLCBzYXkgWS5cbiAxNjU6XHRcdCAgT3RoZXJ3aXNlLCBzYXkgTi5cbiAxNjY6XHRcbiAxNjc6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDE2ODpcdFx0ICB3aWxsIGJlIGNhbGxlZCB6b3JybzgzOTAuXG4gMTY5Olx0XG4gMTcwOlx0ZW5kaWYgIyBORVRfVkVORE9SXzgzOTBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM3MjAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLY29uZmlnIERpdmU6IEFNRCBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgJiMzNDtXaGVyZSBkbyBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIHRoaXMgQU1EIEV0aGVybmV0IGRyaXZlciBjb25maWd1cmF0aW9uPyYjMzQ7IE5hdHVyYWxseSwgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIGBLY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyB0aGUgYnVpbGQgc3lzdGVtIHVuZGVyc3RhbmRzIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGNvbmZpZ3VyYWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZ2Ag4oCTIHRoYXQmIzM5O3MgdGhlIGJyZWFkY3J1bWIgdHJhaWwgSSYjMzk7bSBmb2xsb3dpbmcuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBieSBleGFtaW5pbmcgdGhpcyBmaWxlLCBJIGNhbiBidWlsZCBhbiB1bmRlcnN0YW5kaW5nIG9mIHRoZSBhdmFpbGFibGUgb3B0aW9ucywgZGVwZW5kZW5jaWVzIG9uIG90aGVyIHN1YnN5c3RlbXMsIGFuZCBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBBTUQgRXRoZXJuZXQgY29udHJvbGxlciBzdXBwb3J0LiBJJiMzOTttIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSB1c3VhbCBzdXNwZWN0cyDigJMgZGV2aWNlIHN1cHBvcnQsIGZlYXR1cmUgZmxhZ3MgKGxpa2UganVtYm8gZnJhbWVzLCBjaGVja3N1bSBvZmZsb2FkLCBWTEFOKSwgYW5kIHByb2JhYmx5IHNvbWUgbW9kdWxlL2J1aWx0LWluIGNob2ljZXMuIFRoaXMgc2hvdWxkIGJlIGEgZmFpcmx5IHN0YW5kYXJkIHN0YXJ0aW5nIHBvaW50IGZvciBhbnlvbmUgaW52ZXN0aWdhdGluZyBhIHBhcnRpY3VsYXIgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYWJsZSBhc3BlY3RzIHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAyMDpcdFxuICAyMTpcdGlmIE5FVF9WRU5ET1JfQU1EXG4gIDIyOlx0XG4gIDIzOlx0Y29uZmlnIEEyMDY1XG4gIDI0Olx0XHR0cmlzdGF0ZSBcJiMzNDtBMjA2NSBzdXBwb3J0XCYjMzQ7XG4gIDI1Olx0XHRkZXBlbmRzIG9uIFpPUlJPXG4gIDI2Olx0XHRzZWxlY3QgQ1JDMzJcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgSWYgeW91IGhhdmUgYSBDb21tb2RvcmUgQTIwNjUgRXRoZXJuZXQgYWRhcHRlciwgc2F5IFkuIE90aGVyd2lzZSxcbiAgMjk6XHRcdCAgc2F5IE4uXG4gIDMwOlx0XG4gIDMxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMzI6XHRcdCAgd2lsbCBiZSBjYWxsZWQgYTIwNjUuXG4gIDMzOlx0XG4gIDM0Olx0Y29uZmlnIEFNRDgxMTFfRVRIXG4gIDM1Olx0XHR0cmlzdGF0ZSBcJiMzNDtBTUQgODExMSAobmV3IFBDSSBMQU5DRSkgc3VwcG9ydFwmIzM0O1xuICAzNjpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMzc6XHRcdHNlbGVjdCBDUkMzMlxuICAzODpcdFx0c2VsZWN0IE1JSVxuICAzOTpcdFx0aGVscFxuICA0MDpcdFx0ICBJZiB5b3UgaGF2ZSBhbiBBTUQgODExMS1iYXNlZCBQQ0kgTEFOQ0UgZXRoZXJuZXQgY2FyZCxcbiAgNDE6XHRcdCAgYW5zd2VyIFkgaGVyZS5cbiAgNDI6XHRcbiAgNDM6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxuICA0NDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBhbWQ4MTExZS5cbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgUENORVQzMlxuICA0NzpcdFx0dHJpc3RhdGUgXCYjMzQ7QU1EIFBDbmV0MzIgUENJIHN1cHBvcnRcJiMzNDtcbiAgNDg6XHRcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9QT1JUXG4gIDQ5Olx0XHRzZWxlY3QgQ1JDMzJcbiAgNTA6XHRcdHNlbGVjdCBNSUlcbiAgNTE6XHRcdGhlbHBcbiAgNTI6XHRcdCAgSWYgeW91IGhhdmUgYSBQQ25ldDMyIG9yIFBDbmV0UENJIGJhc2VkIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkLFxuICA1MzpcdFx0ICBhbnN3ZXIgWSBoZXJlLlxuICA1NDpcdFxuICA1NTpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXG4gIDU2Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHBjbmV0MzIuXG4gIDU3Olx0XG4gIDU4Olx0Y29uZmlnIEFSSUFETkVcbiAgNTk6XHRcdHRyaXN0YXRlIFwmIzM0O0FyaWFkbmUgc3VwcG9ydFwmIzM0O1xuICA2MDpcdFx0ZGVwZW5kcyBvbiBaT1JST1xuICA2MTpcdFx0aGVscFxuICA2MjpcdFx0ICBJZiB5b3UgaGF2ZSBhIFZpbGxhZ2UgVHJvbmljIEFyaWFkbmUgRXRoZXJuZXQgYWRhcHRlciwgc2F5IFkuXG4gIDYzOlx0XHQgIE90aGVyd2lzZSwgc2F5IE4uXG4gIDY0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NTY0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIEluc3BlY3Rpb246IFNDU0kgRHJpdmVycyoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBlbmFibGVkIGFuZCBkaXNhYmxlZCByZWdhcmRpbmcgdGhlIFNDU0kgc3Vic3lzdGVtLiBgZHJpdmVycy9zY3NpL0tjb25maWdgIGlzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyBpdCYjMzk7cyB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUgU0NTSSBhcmVhLiBJJiMzOTtsbCBuZWVkIHRvIHJhcGlkbHkgcGFyc2UgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZmlsZSwgaWRlbnRpZnlpbmcgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIGFueSB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zLiBNeSBnb2FsIGlzIHRvIGdyYXNwIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyYWwgY2hvaWNlcyByZWdhcmRpbmcgd2hpY2ggU0NTSSBkcml2ZXJzIGFyZSBpbmNsdWRlZCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBUaGlzIHdpbGwgaGVscCBtZSBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGF2YWlsYWJsZSBvcHRpb25zIGFuZCBob3cgdGhleSYjMzk7cmUgaW50ZW5kZWQgdG8gYmUgdXNlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgYXJlIGNvbnRhaW5lZCB3aXRoaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9zY3NpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzMDA6XHRcbjEzMDE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4xMzAyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhMzAwMC5cbjEzMDM6XHRcbjEzMDQ6XHRjb25maWcgQTIwOTFfU0NTSVxuMTMwNTpcdFx0dHJpc3RhdGUgXCYjMzQ7QTIwOTEvQTU5MCBXRDMzQzkzQSBzdXBwb3J0XCYjMzQ7XG4xMzA2Olx0XHRkZXBlbmRzIG9uIFpPUlJPIFx1MDAyNlx1MDAyNiBTQ1NJXG4xMzA3Olx0XHRoZWxwXG4xMzA4Olx0XHQgIElmIHlvdSBoYXZlIGEgQ29tbW9kb3JlIEEyMDkxIFNDU0kgY29udHJvbGxlciwgc2F5IFkuIE90aGVyd2lzZSxcbjEzMDk6XHRcdCAgc2F5IE4uXG4xMzEwOlx0XG4xMzExOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuMTMxMjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYTIwOTEuXG4xMzEzOlx0XG4xMzE0Olx0Y29uZmlnIEdWUDExX1NDU0lcbjEzMTU6XHRcdHRyaXN0YXRlIFwmIzM0O0dWUCBTZXJpZXMgSUkgV0QzM0M5M0Egc3VwcG9ydFwmIzM0O1xuMTMxNjpcdFx0ZGVwZW5kcyBvbiBaT1JSTyBcdTAwMjZcdTAwMjYgU0NTSVxuMTMxNzpcdFx0aGVscFxuMTMxODpcdFx0ICBJZiB5b3UgaGF2ZSBhIEdyZWF0IFZhbGxleSBQcm9kdWN0cyBTZXJpZXMgSUkgU0NTSSBjb250cm9sbGVyLFxuMTMxOTpcdFx0ICBhbnN3ZXIgWS4gQWxzbyBzYXkgWSBpZiB5b3UgaGF2ZSBhIGxhdGVyIG1vZGVsIG9mIEdWUCBTQ1NJXG4xMzIwOlx0XHQgIGNvbnRyb2xsZXIgKHN1Y2ggYXMgdGhlIEdWUCBBNDAwOCBvciBhIENvbWJvIGJvYXJkKS4gT3RoZXJ3aXNlLFxuMTMyMTpcdFx0ICBhbnN3ZXIgTi4gVGhpcyBkcml2ZXIgZG9lcyBOT1Qgd29yayBmb3IgdGhlIFQtUmV4IHNlcmllcyBvZlxuMTMyMjpcdFx0ICBhY2NlbGVyYXRvcnMgZnJvbSBUZWtNYWdpYyBhbmQgR1ZQLU0uXG4xMzIzOlx0XG4xMzI0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuMTMyNTpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgZ3ZwMTEuXG4xMzI2Olx0XG4xMzI3Olx0Y29uZmlnIFNDU0lfQTQwMDBUXG4xMzI4Olx0XHR0cmlzdGF0ZSBcJiMzNDtBNDAwMFQgTkNSNTNjNzEwIFNDU0kgc3VwcG9ydFwmIzM0O1xuMTMyOTpcdFx0ZGVwZW5kcyBvbiBBTUlHQSBcdTAwMjZcdTAwMjYgU0NTSVxuMTMzMDpcdFx0c2VsZWN0IFNDU0lfU1BJX0FUVFJTXG4xMzMxOlx0XHRoZWxwXG4xMzMyOlx0XHQgIElmIHlvdSBoYXZlIGFuIEFtaWdhIDQwMDBUIGFuZCBoYXZlIFNDU0kgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlXG4xMzMzOlx0XHQgIGJ1aWx0LWluIFNDU0kgY29udHJvbGxlciwgc2F5IFkuIE90aGVyd2lzZSwgc2F5IE4uXG4xMzM0Olx0XG4xMzM1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuMTMzNjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYTQwMDB0LlxuMTMzNzpcdFxuMTMzODpcdGNvbmZpZyBTQ1NJX1pPUlJPN1hYXG4xMzM5Olx0XHR0cmlzdGF0ZSBcJiMzNDtab3JybyBOQ1I1M2M3MTAgU0NTSSBzdXBwb3J0XCYjMzQ7XG4xMzQwOlx0XHRkZXBlbmRzIG9uIFpPUlJPIFx1MDAyNlx1MDAyNiBTQ1NJXG4xMzQxOlx0XHRzZWxlY3QgU0NTSV9TUElfQVRUUlNcbjEzNDI6XHRcdGhlbHBcbjEzNDM6XHRcdCAgU3VwcG9ydCBmb3IgdmFyaW91cyBOQ1I1M2M3MTAtYmFzZWQgU0NTSSBjb250cm9sbGVycyBvbiBab3Jyb1xuMTM0NDpcdFx0ICBleHBhbnNpb24gYm9hcmRzIGZvciB0aGUgQW1pZ2EuXG4xMzQ1Olx0XHQgIFRoaXMgaW5jbHVkZXM6XG4xMzQ2Olx0XHQgICAgLSB0aGUgQW1pZ2EgNDA5MSBab3JybyBJSUkgU0NTSS0yIGNvbnRyb2xsZXIsXG4xMzQ3Olx0XHQgICAgLSB0aGUgTWFjcm9TeXN0ZW0gRGV2ZWxvcG1lbnQmIzM5O3MgV2FycEVuZ2luZSBBbWlnYSBTQ1NJLTIgY29udHJvbGxlclxuMTM0ODpcdFx0ICAgICAgKGluZm8gYXRcbjEzNDk6XHRcdCAgICAgIFx1MDAzY2h0dHA6Ly93d3cubHlzYXRvci5saXUuc2UvYW1pZ2EvYXIvZ3VpZGUvYXIzMTAuZ3VpZGU/RkVBVFVSRTVcdTAwM2UpLFxuMTM1MDpcdFx0ICAgIC0gdGhlIFNDU0kgY29udHJvbGxlciBvbiB0aGUgUGhhc2U1IEJsaXp6YXJkIFBvd2VyVVAgNjAzZSYjNDM7XG4xMzUxOlx0XHQgICAgICBhY2NlbGVyYXRvciBjYXJkIGZvciB0aGUgQW1pZ2EgMTIwMCxcbjEzNTI6XHRcdCAgICAtIHRoZSBTQ1NJIGNvbnRyb2xsZXIgb24gdGhlIEdWUCBUdXJibyAwNDAvMDYwIGFjY2VsZXJhdG9yLlxuMTM1MzpcdFxuMTM1NDpcdGNvbmZpZyBTQ1NJX1pPUlJPX0VTUFxuMTM1NTpcdFx0dHJpc3RhdGUgXCYjMzQ7Wm9ycm8gRVNQIFNDU0kgc3VwcG9ydFwmIzM0O1xuMTM1NjpcdFx0ZGVwZW5kcyBvbiBaT1JSTyBcdTAwMjZcdTAwMjYgU0NTSVxuMTM1NzpcdFx0c2VsZWN0IFNDU0lfU1BJX0FUVFJTXG4xMzU4Olx0XHRzZWxlY3QgU0NTSV9FU1BfUElPXG4xMzU5Olx0XHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NzgxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBaT1JSTyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIHRoZSBgWk9SUk9gIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgYSBjbGFzc2ljIEFtaWdhIGJ1cyBzeXN0ZW0sIGFuZCBJIGNhbiBzZWUgc2V2ZXJhbCBkcml2ZXJzIOKAkyBgSFlEUkFgLCBgWk9SUk84MzkwYCwgYEEyMDY1YCwgYEFSSUFETkVgLCBwbHVzIGEgZmV3IFNDU0kgY29udHJvbGxlcnMgKGBBMjA5MV9TQ1NJYCwgYEdWUDExX1NDU0lgLCBgU0NTSV9aT1JSTzdYWGAsIGBTQ1NJX1pPUlJPX0VTUGApIOKAkyBhbGwgdGllZCB0byBpdC4gVGhlIFNDU0kgb25lcyBoYXZlIHRoYXQgZXh0cmEgYFNDU0lgIGRlcGVuZGVuY3ksIHdoaWNoIGlzIGV4cGVjdGVkLiBObyBzdXJwcmlzZXMgc28gZmFyLgoKTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2l0dWF0aW9uIHdpdGggYFpPUlJPYCBpdHNlbGYuIElzIGl0IGRlZmluZWQ/IElzIGl0IGVuYWJsZWQgb24geDg2XzY0PyBJJiMzOTt2ZSBnb3QgdG8gdHJhY2UgaXQgYmFjay4gSSYjMzk7dmUgYWxyZWFkeSBkb25lIGEgcXVpY2sgc2VhcmNoIGZvciBgY29uZmlnIFpPUlJPYCBpbiB0aGUga2VybmVsIHRyZWUsIGFuZCB0aGF0IHR1cm5lZCB1cCBzb21lIHJlbGV2YW50IGZpbGVzOiBgYXJjaC9tNjhrL0tjb25maWcuYnVzYCAod2hlcmUgaXQmIzM5O3MgZGVmaW5lZCksIGBkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWdgIChmb3IgYFpPUlJPODM5MGApLCBhbmQgYGRyaXZlcnMvem9ycm8vS2NvbmZpZ2AuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIGBaT1JST2AgaXMgc29tZWhvdyBkZXBlbmRlbnQgb24gYEFNSUdBYCwgd2hpY2ggd291bGQgbWFrZSBzZW5zZSBnaXZlbiB0aGUgYnVzIGFyY2hpdGVjdHVyZSwgYW5kIHRoYXQgYGFyY2gvbTY4ay9LY29uZmlnLmJ1c2AgYXNzb2NpYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMgaW4gdGhlIGBtNjhrYCBhcmNoaXRlY3R1cmUgb3Igb3RoZXIgcGxhY2VzIGluIHRoZSB0cmVlIHRvIGRldGVybWluZSBob3cgYFpPUlJPYCBpdHNlbGYgaXMgZGVmaW5lZCBhbmQgd2hhdCBpdCYjMzk7cyBkZXBlbmRlbnQgb24uIFRoaXMgd2lsbCBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgWk9SUk9cXGImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjU1MQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudCBkb3duOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIFpPUlJPIERlZmF1bHQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gc29tZXRoaW5nIHRoYXQgKm1pZ2h0KiBiZSByZWxhdGVkIHRvIFpPUlJPIGFuZCBhIGRlZmF1bHQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGxldmVyYWdlIGBncmVwcGVyYC4gSXQmIzM5O3MgbXkgZ28tdG8gZm9yIHF1aWNrbHkgc2VhcmNoaW5nIGNvZGViYXNlcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcywgZXNwZWNpYWxseSB3aGVuIEkmIzM5O20gZGVhbGluZyB3aXRoIHBhdHRlcm5zIG9yIGtleXdvcmRzIEkgc3VzcGVjdCBtaWdodCBiZSB1c2VkLiBJIGZpZ3VyZSwgc2luY2UgSSYjMzk7bSB0cnlpbmcgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgZGVmYXVsdCByZWxhdGVkIHRvIFpPUlJPLCBJIG5lZWQgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBhIHNlYXJjaC4gSSYjMzk7bGwgc2VhcmNoIHdpdGggYGRlZmF1bHQuKlpPUlJPYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZSB2YXJpYXRpb25zIHRoYXQgbWlnaHQgY2F0Y2ggZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9ucyBvciBhYmJyZXZpYXRpb25zIHVzZWQgaW4gdGhlIGNvZGUuIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IGNvbmZpZ3VyYXRpb24gb3IgY29kZSBzZWN0aW9ucyB3aGVyZSBaT1JSTyBpcyBtZW50aW9uZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhIGRlZmF1bHQgc2V0dGluZy4gSXQmIzM5O3MgYSBxdWljayB3YXkgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhlIHN5c3RlbSBkb2VzIHdpdGggWk9SUk8gaWYgc29tZXRoaW5nIGdvZXMgd3Jvbmcgb3IgaXNuJiMzOTt0IHNwZWNpZmllZC4gVGhpcyBmZWVscyBsaWtlIHRoZSByaWdodCBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtaT1JSTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbTY4ay9LY29uZmlnLmJ1cz0xNT1jb25maWcgTlVCVVNcbi0tXG5hcmNoL202OGsvS2NvbmZpZy5idXMtMTktXG5hcmNoL202OGsvS2NvbmZpZy5idXM6MjA6Y29uZmlnIFpPUlJPXG5hcmNoL202OGsvS2NvbmZpZy5idXMtMjEtXHRib29sIFwmIzM0O0FtaWdhIFpvcnJvIChBdXRvQ29uZmlnKSBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYz0xNDE9aW50IF9faW5pdCBhbWlnYV9wYXJzZV9ib290aW5mbyhjb25zdCBzdHJ1Y3QgYmlfcmVjb3JkICpyZWNvcmQpXG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTE3MS1cdGNhc2UgQklfQU1JR0FfQVVUT0NPTjpcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoxNzI6I2lmZGVmIENPTkZJR19aT1JST1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjE3MzpcdFx0aWYgKHpvcnJvX251bV9hdXRvY29uIFx1MDAzYyBaT1JST19OVU1fQVVUTykge1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTE3NC1cdFx0XHRjb25zdCBzdHJ1Y3QgQ29uZmlnRGV2ICpjZCA9IGRhdGE7XG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTE4Mi1cdFx0XHQvKiBDUy1MQUIgV2FycCAxMjYwIHdvcmthcm91bmQgKi9cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoxODM6XHRcdFx0aWYgKGJlMTZfdG9fY3B1KGRldi1cdTAwM2Vyb20uZXJfTWFudWZhY3R1cmVyKSA9PSBaT1JST19NQU5VRihaT1JST19QUk9EX0NTTEFCX1dBUlBfMTI2MCkgXHUwMDI2XHUwMDI2XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6MTg0Olx0XHRcdCAgICBkZXYtXHUwMDNlcm9tLmVyX1Byb2R1Y3QgPT0gWk9SUk9fUFJPRChaT1JST19QUk9EX0NTTEFCX1dBUlBfMTI2MCkpIHtcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0xODUtXG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTE5MS1cdFx0XHRwcl93YXJuKFwmIzM0O2FtaWdhX3BhcnNlX2Jvb3RpbmZvOiB0b28gbWFueSBBdXRvQ29uZmlnIGRldmljZXNcXG5cJiMzNDspO1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjE5MjojZW5kaWYgLyogQ09ORklHX1pPUlJPICovXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMTkzLVx0XHRicmVhaztcbi0tXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM9MjA5PXN0YXRpYyB2b2lkIF9faW5pdCBhbWlnYV9pZGVudGlmeSh2b2lkKVxuLS1cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0yNDctXHRcdEFNSUdBSFdfU0VUKEEzMDAwX0NMSyk7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6MjQ4Olx0XHRBTUlHQUhXX1NFVChaT1JSTzMpO1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTI0OS1cdFx0YnJlYWs7XG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTI1Ni1cdFx0QU1JR0FIV19TRVQoQTMwMDBfQ0xLKTtcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoyNTc6XHRcdEFNSUdBSFdfU0VUKFpPUlJPMyk7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMjU4LVx0XHRicmVhaztcbi0tXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMzI0LVx0fVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjMyNTpcdEFNSUdBSFdfU0VUKFpPUlJPKTtcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0zMjYtXG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTM1OS1cdEFNSUdBSFdfQU5OT1VOQ0UoUENNQ0lBLCBcJiMzNDtQQ01DSUEgXCYjMzQ7KTtcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzozNjA6XHRpZiAoQU1JR0FIV19QUkVTRU5UKFpPUlJPKSlcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzozNjE6XHRcdHByX2NvbnQoXCYjMzQ7Wk9SUk8lcyBcJiMzNDssIEFNSUdBSFdfUFJFU0VOVChaT1JSTzMpID8gXCYjMzQ7M1wmIzM0OyA6IFwmIzM0O1wmIzM0Oyk7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMzYyLVx0cHJfY29udChcJiMzNDtcXG5cJiMzNDspO1xuLS1cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYz0zNzk9dm9pZCBfX2luaXQgY29uZmlnX2FtaWdhKHZvaWQpXG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTQxMy1cdC8qIGRvbiYjMzk7dCB1c2UgWjIgUkFNIGFzIHN5c3RlbSBtZW1vcnkgb24gWjMgY2FwYWJsZSBtYWNoaW5lcyAqL1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjQxNDpcdGlmIChBTUlHQUhXX1BSRVNFTlQoWk9SUk8zKSkge1xuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTQxNS1cdFx0aW50IGksIGo7XG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jPTc4MD1zdGF0aWMgdm9pZCBhbWlnYV9nZXRfaGFyZHdhcmVfbGlzdChzdHJ1Y3Qgc2VxX2ZpbGUgKm0pXG4tLVxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTgzOC1cdEFNSUdBSFdfQU5OT1VOQ0UoUENNQ0lBLCBcJiMzNDtQQ01DSUEgU2xvdFwmIzM0Oyk7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6ODM5OiNpZmRlZiBDT05GSUdfWk9SUk9cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzo4NDA6XHRpZiAoQU1JR0FIV19QUkVTRU5UKFpPUlJPKSlcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy04NDEtXHRcdHNlcV9wcmludGYobSwgXCYjMzQ7XFx0Wm9ycm8gSUklcyBBdXRvQ29uZmlnOiAlZCBFeHBhbnNpb24gXCYjMzQ7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtODQyLVx0XHRcdFx0XCYjMzQ7RGV2aWNlJXNcXG5cJiMzNDssXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6ODQzOlx0XHRcdFx0QU1JR0FIV19QUkVTRU5UKFpPUlJPMykgPyBcJiMzNDtJXCYjMzQ7IDogXCYjMzQ7XCYjMzQ7LFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTg0NC1cdFx0XHRcdHpvcnJvX251bV9hdXRvY29uLCBzdHJfcGx1cmFsKHpvcnJvX251bV9hdXRvY29uKSk7XG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6ODQ1OiNlbmRpZiAvKiBDT05GSUdfWk9SUk8gKi9cbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy04NDYtXG4tLVxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtMTgtXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYzoxOTojaWZkZWYgQ09ORklHX1pPUlJPXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy0yMC1cbi0tXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYz00OT1zdGF0aWMgaW50IF9faW5pdCBhbWlnYV9pbml0X2J1cyh2b2lkKVxuLS1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTUzLVxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6NTQ6XHRpZiAoIU1BQ0hfSVNfQU1JR0EgfHwgIUFNSUdBSFdfUFJFU0VOVChaT1JSTykpXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy01NS1cdFx0cmV0dXJuIC1FTk9ERVY7XG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy01Ni1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jOjU3Olx0biA9IEFNSUdBSFdfUFJFU0VOVChaT1JSTzMpID8gNCA6IDI7XG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy01OC1cdHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKFwmIzM0O2FtaWdhLXpvcnJvXCYjMzQ7LCAtMSxcbi0tXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYz02Nj1zdGF0aWMgaW50IF9faW5pdCB6X2Rldl9wcmVzZW50KHpvcnJvX2lkIGlkKVxuLS1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTcxLVx0XHRjb25zdCBzdHJ1Y3QgRXhwYW5zaW9uUm9tICpyb20gPSBcdTAwMjZ6b3Jyb19hdXRvY29uX2luaXRbaV0ucm9tO1xuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6NzI6XHRcdGlmIChiZTE2X3RvX2NwdShyb20tXHUwMDNlZXJfTWFudWZhY3R1cmVyKSA9PSBaT1JST19NQU5VRihpZCkgXHUwMDI2XHUwMDI2XG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYzo3MzpcdFx0ICAgIHJvbS1cdTAwM2Vlcl9Qcm9kdWN0ID09IFpPUlJPX1BST0QoaWQpKVxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtNzQtXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtNzktXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYzo4MDojZWxzZSAvKiAhQ09ORklHX1pPUlJPICovXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy04MS1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jPTgyPXN0YXRpYyBpbmxpbmUgaW50IHpfZGV2X3ByZXNlbnQoem9ycm9faWQgaWQpIHsgcmV0dXJuIDA7IH1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTgzLVxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6ODQ6I2VuZGlmIC8qICFDT05GSUdfWk9SUk8gKi9cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTg1LVxuLS1cbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jPTEzND1zdGF0aWMgaW50IF9faW5pdCBhbWlnYV9pbml0X2RldmljZXModm9pZClcbi0tXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy0xODMtXHRpZiAoQU1JR0FIV19QUkVTRU5UKEExMjAwX0lERSkgfHxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jOjE4NDpcdCAgICB6X2Rldl9wcmVzZW50KFpPUlJPX1BST0RfTVRFQ19WSVBFUl9NS19WX0VfTUFUUklYXzUzMF9TQ1NJX0lERSkpIHtcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTE4NS1cdFx0cGRldiA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoXCYjMzQ7YW1pZ2EtZ2F5bGUtaWRlXCYjMzQ7LCAtMSxcbi0tXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc9MTk9Q09ORklHX0FNSUdBPXlcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzoyMDpDT05GSUdfWk9SUk89eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTIxLUNPTkZJR19BTUlHQV9QQ01DSUE9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjIyOkNPTkZJR19aT1JST19OQU1FUz15XG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctMjMtQ09ORklHX0hFQVJUQkVBVD15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTI4MD1DT05GSUdfU0NTSV9BNDAwMFQ9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjI4MTpDT05GSUdfU0NTSV9aT1JSTzdYWD15XG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6MjgyOkNPTkZJR19TQ1NJX1pPUlJPX0VTUD15XG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctMjgzLUNPTkZJR19BVEE9eVxuLS1cbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZz0zMzg9Q09ORklHX0FQTkU9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjMzOTpDT05GSUdfWk9SUk84MzkwPXlcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZy0zNDAtQ09ORklHX1BQUD1tXG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTI5PUNPTkZJR19RNDA9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnOjMwOkNPTkZJR19aT1JSTz15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctMzEtQ09ORklHX0FNSUdBX1BDTUNJQT15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9MzI9Q09ORklHX0FUQVJJX1JPTV9JU0E9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnOjMzOkNPTkZJR19aT1JST19OQU1FUz15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctMzQtQ09ORklHX0hFQVJUQkVBVD15XG4tLVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTI5OD1DT05GSUdfU0NTSV9BNDAwMFQ9eVxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnOjI5OTpDT05GSUdfU0NTSV9aT1JSTzdYWD15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6MzAwOkNPTkZJR19TQ1NJX1pPUlJPX0VTUD15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctMzAxLUNPTkZJR19BVEFSSV9TQ1NJPXlcbi0tXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9MzgzPUNPTkZJR19BUE5FPXlcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzozODQ6Q09ORklHX1pPUlJPODM5MD15XG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWctMzg1LUNPTkZJR19TTUM5MVg9eVxuLS1cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS9hbWlnYWh3Lmg9NDU9c3RydWN0IGFtaWdhX2h3X3ByZXNlbnQge1xuLS1cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS9hbWlnYWh3LmgtODAtICAgIEFNSUdBSFdfREVDTEFSRShQQ01DSUEpO1x0XHQvKiBQQ01DSUEgU2xvdCAqL1xuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaDo4MTogICAgQU1JR0FIV19ERUNMQVJFKFpPUlJPKTtcdFx0LyogWm9ycm8gQXV0b0NvbmZpZyAqL1xuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaDo4MjogICAgQU1JR0FIV19ERUNMQVJFKFpPUlJPMyk7XHRcdC8qIFpvcnJvIElJSSAqL1xuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaC04My19O1xuLS1cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oOjI6I2lmbmRlZiBfQVNNX002OEtfWk9SUk9fSFxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL3pvcnJvLmg6MzojZGVmaW5lIF9BU01fTTY4S19aT1JST19IXG5hcmNoL202OGsvaW5jbHVkZS9hc20vem9ycm8uaC00LVxuLS1cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oPTM3PXN0YXRpYyBpbmxpbmUgdm9pZCBfX2lvbWVtICp6X3JlbWFwX2Z1bGxjYWNoZSh1bnNpZ25lZCBsb25nIHBoeXNhZGRyLFxuLS1cbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oLTQ2LVxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL3pvcnJvLmg6NDc6I2VuZGlmIC8qIF9BU01fTTY4S19aT1JST19IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDIwOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTM2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgdGhlIFpvcnJvIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYGRyaXZlcnMvem9ycm8vS2NvbmZpZ2AgZmlsZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBab3JybyBidXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQgd2l0aGluIHRoaXMga2VybmVsIGJ1aWxkLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCB3aGF0IGRlcGVuZGVuY2llcyBleGlzdCwgYW5kIGhvdyB0aGUgdmFyaW91cyBab3Jyby1yZWxhdGVkIGZlYXR1cmVzIGFyZSBjb250cm9sbGVkLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gb2YgdGhpcyBtb2R1bGUsIGFuZCBob3cgdmFyaW91cyBvcHRpb25zIGVmZmVjdCB0aGUgYXZhaWxhYmxlIGZlYXR1cmVzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqRmVhdHVyZSBGbGFnczoqKiBBcmUgdGhlcmUgc3BlY2lmaWMgc3ltYm9scyBkZWZpbmVkIGZvciBkaWZmZXJlbnQgWm9ycm8gaGFyZHdhcmUgcmV2aXNpb25zIG9yIGRldmljZSB0eXBlcz8gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIGlzIGVzc2VudGlhbCBmb3IgZGVhbGluZyB3aXRoIHJ1bnRpbWUgYmVoYXZpb3Igb2YgZHJpdmVycy4KKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgZHJpdmVycyBkb2VzIHRoaXMgWm9ycm8gZHJpdmVyIHJlbHkgb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBvciBib2FyZCBjb25maWd1cmF0aW9ucyB0aGF0IGl0JiMzOTtzIGRlc2lnbmVkIGZvcj8gVGhpcyBpcyBrZXkgZm9yIHVuZGVyc3RhbmRpbmcgcG9ydGFiaWxpdHkgYW5kIHBvdGVudGlhbCBpbnRlZ3JhdGlvbiBpc3N1ZXMuCiogICAqKkRlZmF1bHQgQmVoYXZpb3I6KiogV2hhdCYjMzk7cyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uPyBBcmUgdGhlIFpvcnJvIGJ1cyBmdW5jdGlvbnMgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBhcmUgdGhleSBvZmYgYnkgZGVmYXVsdD8gVW5kZXJzdGFuZGluZyBkZWZhdWx0cyBpcyBrZXkgdG8gZGVidWdnaW5nIGFuZCBidWlsZGluZyBuZXcgc3lzdGVtcy4KKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBBcmUgdGhlcmUgZ29vZCBjb21tZW50cz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIGZvciBtZSB0byBleHBsb3JlIGluIGdyZWF0ZXIgZGV0YWlsPwoKQnkgZXhhbWluaW5nIHRoaXMgS2NvbmZpZyBmaWxlIGZpcnN0LCBJJiMzOTtsbCBnZXQgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gb2YgdGhlIFpvcnJvIGRyaXZlciBjb2RlIGFuZCBpdHMgaW50ZWdyYXRpb24gaW50byB0aGUgd2lkZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvem9ycm8vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFpvcnJvIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0Y29uZmlnIFpPUlJPX05BTUVTXG4gICA2Olx0XHRib29sIFwmIzM0O1pvcnJvIGRldmljZSBuYW1lIGRhdGFiYXNlXCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIFpPUlJPXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIEJ5IGRlZmF1bHQsIHRoZSBrZXJuZWwgY29udGFpbnMgYSBkYXRhYmFzZSBvZiBhbGwga25vd24gWm9ycm8gZGV2aWNlXG4gIDEwOlx0XHQgIG5hbWVzIHRvIG1ha2UgdGhlIGluZm9ybWF0aW9uIGluIC9wcm9jL2lvbWVtIGNvbXByZWhlbnNpYmxlIHRvIHRoZVxuICAxMTpcdFx0ICB1c2VyLiBUaGlzIGRhdGFiYXNlIGluY3JlYXNlcyB0aGUgc2l6ZSBvZiB0aGUga2VybmVsIGltYWdlIGJ5IGFib3V0XG4gIDEyOlx0XHQgIDE1S0IsIGJ1dCBpdCBnZXRzIGZyZWVkIGFmdGVyIHRoZSBzeXN0ZW0gYm9vdHMgdXAsIHNvIGl0IGRvZXNuJiMzOTt0XG4gIDEzOlx0XHQgIHRha2UgdXAga2VybmVsIG1lbW9yeS4gQW55d2F5LCBpZiB5b3UgYXJlIGJ1aWxkaW5nIGFuIGluc3RhbGxhdGlvblxuICAxNDpcdFx0ICBmbG9wcHkgb3Iga2VybmVsIGZvciBhbiBlbWJlZGRlZCBzeXN0ZW0gd2hlcmUga2VybmVsIGltYWdlIHNpemVcbiAgMTU6XHRcdCAgcmVhbGx5IG1hdHRlcnMsIHlvdSBjYW4gZGlzYWJsZSB0aGlzIGZlYXR1cmUgYW5kIHlvdSYjMzk7bGwgZ2V0IGRldmljZVxuICAxNjpcdFx0ICBJRCBudW1iZXJzIGluc3RlYWQgb2YgbmFtZXMuXG4gIDE3Olx0XG4gIDE4Olx0XHQgIFdoZW4gaW4gZG91YnQsIHNheSBZLlxuICAxOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDc4MwoJCQkJCQkJb3V0cHV0OiAyMzkKCQkJCQkJCXRob3VnaHRzOiA2MzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgbTY4ay1TcGVjaWZpYyBab3JybyBEcml2ZXJzIG9uIGFtZDY0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gc2VlIGlmIFpvcnJvIHN1cHBvcnQgZXh0ZW5kcyBiZXlvbmQgdGhlIG02OGsgYXJjaGl0ZWN0dXJlLCBiZWNhdXNlIGlmIGl0IGRpZCwgdGhlc2UgZHJpdmVycyAqbWlnaHQqIGJlIHJlbGV2YW50IGZvciBmdXp6aW5nIG9uIGFtZDY0LiBBIHF1aWNrIHNjYW4gb2YgdGhlIGBLY29uZmlnLmJ1c2AgZmlsZSBpbiB0aGUgbTY4ayBhcmNoaXRlY3R1cmUgY29uZmlybXMgdGhhdCBgQ09ORklHX1pPUlJPYCBpcyAqb25seSogZGVmaW5lZCB0aGVyZSwgYW5kIGl0JiMzOTtzIGNvbnRpbmdlbnQgb24gdGhlIGBBTUlHQWAgY29uZmlnIG9wdGlvbiwgd2hpY2gsIGFzIHdlIGtub3csIGlzIG02OGstc3BlY2lmaWMuCgpHaXZlbiB0aGF0IHRoZSB0YXJnZXQgaXMgYW1kNjQgKHg4Nl82NCksIGBDT05GSUdfWk9SUk9gICpjYW5ub3QqIGJlIGVuYWJsZWQuIFRoZXJlZm9yZSwgYWxsIHRoZSBkcml2ZXIgbW9kaWZpY2F0aW9ucyBpbiB0aGlzIHBhdGNoIGFyZSwgaW4gZXNzZW5jZSwgZGVhZCBjb2RlIGZyb20gdGhlIGFtZDY0IHBlcnNwZWN0aXZlLiBUaGlzIGluY2x1ZGVzIHRoZSBjaGFuZ2VzIGluIGBoeWRyYS5jYCwgYHpvcnJvODM5MC5jYCwgYGEyMDY1LmNgLCBgYXJpYWRuZS5jYCwgYGEyMDkxLmNgLCBgZ3ZwMTEuY2AsIGB6b3Jybzd4eC5jYCwgYW5kIGB6b3Jyb19lc3AuY2AuIFRoZXkgYWxsIGRlcGVuZCBvbiBgQ09ORklHX1pPUlJPYC4KClRoZXNlIGRyaXZlcnMgYXJlIFpvcnJvIGJ1cyBleHBhbnNpb24gY2FyZHMgZm9yIHRoZSBBbWlnYSwgcGh5c2ljYWwgaGFyZHdhcmUgZHJpdmVycywgbm90aGluZyBtb3JlLiBUaGUgcGF0Y2gmIzM5O3MgY29udHJpYnV0aW9uIGxpZXMgaW4gYSBzaW1wbGUgcmVmYWN0b3JpbmcsIGVtcGxveWluZyB0aGUgYG1vZHVsZV9kcml2ZXIoKWAgbWFjcm8gZm9yIGluaXRpYWxpemF0aW9uIGFuZCBjbGVhbnVwIChgem9ycm9fcmVnaXN0ZXJfZHJpdmVyYCwgYHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyYCkgLSBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCgpNeSBhbmFseXNpcyBhbGlnbnMgcGVyZmVjdGx5IHdpdGggdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gVGhlIGNvZGUgaXMgKmFyY2hpdGVjdHVyYWxseSB1bnJlYWNoYWJsZSogb24gYW1kNjQsIGFuZCBpdCBpcyBhbHNvICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUqIG9uIGFueSBvdGhlciBhcmNoaXRlY3R1cmUuIFRoZXNlIGRyaXZlcnMgYXJlIG5vdCByZWxldmFudC4gVGhpcyBtZWFucyB0aGUgZnV6emluZyBmbGFnIGlzIHNldCB0byBmYWxzZS4KCkkgbmVlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2Agbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAyMDoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoZWQgZmlsZXMgKGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmMsIGRyaXZlcnMvc2NzaS9hMjA5MS5jLCBkcml2ZXJzL3Njc2kvZ3ZwMTEuYywgZHJpdmVycy9zY3NpL3pvcnJvN3h4LmMsIGFuZCBkcml2ZXJzL3Njc2kvem9ycm9fZXNwLmMpIGFyZSBhbGwgZHJpdmVycyBmb3IgQW1pZ2EgWm9ycm8gYnVzIGRldmljZXMgdGhhdCBkZXBlbmQgb24gQ09ORklHX1pPUlJPLiBDT05GSUdfWk9SUk8gaXMgb25seSBkZWZpbmVkIGZvciB0aGUgbTY4ayBhcmNoaXRlY3R1cmUgKHVuZGVyIGFyY2gvbTY4ay9LY29uZmlnLmJ1cykgYW5kIGlzIG5vdCBhdmFpbGFibGUgb3IgY29tcGlsYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgb25seSBjb252ZXJ0IHN0YW5kYXJkIG1vZHVsZSBpbml0L2V4aXQgYm9pbGVycGxhdGUgdG8gdXNlIHRoZSBtb2R1bGVfZHJpdmVyKCkgbWFjcm8uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaGVkIGZpbGVzIChkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jLCBkcml2ZXJzL3Njc2kvYTIwOTEuYywgZHJpdmVycy9zY3NpL2d2cDExLmMsIGRyaXZlcnMvc2NzaS96b3Jybzd4eC5jLCBhbmQgZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jKSBhcmUgYWxsIGRyaXZlcnMgZm9yIEFtaWdhIFpvcnJvIGJ1cyBkZXZpY2VzIHRoYXQgZGVwZW5kIG9uIENPTkZJR19aT1JSTy4gQ09ORklHX1pPUlJPIGlzIG9ubHkgZGVmaW5lZCBmb3IgdGhlIG02OGsgYXJjaGl0ZWN0dXJlICh1bmRlciBhcmNoL202OGsvS2NvbmZpZy5idXMpIGFuZCBpcyBub3QgYXZhaWxhYmxlIG9yIGNvbXBpbGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIG9ubHkgY29udmVydCBzdGFuZGFyZCBtb2R1bGUgaW5pdC9leGl0IGJvaWxlcnBsYXRlIHRvIHVzZSB0aGUgbW9kdWxlX2RyaXZlcigpIG1hY3JvLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMjA6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjExOjU2LjQ0MDQ2NTk2NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTE0ODMwMjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2hlZCBmaWxlcyAoZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9oeWRyYS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuYywgZHJpdmVycy9zY3NpL2EyMDkxLmMsIGRyaXZlcnMvc2NzaS9ndnAxMS5jLCBkcml2ZXJzL3Njc2kvem9ycm83eHguYywgYW5kIGRyaXZlcnMvc2NzaS96b3Jyb19lc3AuYykgYXJlIGFsbCBkcml2ZXJzIGZvciBBbWlnYSBab3JybyBidXMgZGV2aWNlcyB0aGF0IGRlcGVuZCBvbiBDT05GSUdfWk9SUk8uIENPTkZJR19aT1JSTyBpcyBvbmx5IGRlZmluZWQgZm9yIHRoZSBtNjhrIGFyY2hpdGVjdHVyZSAodW5kZXIgYXJjaC9tNjhrL0tjb25maWcuYnVzKSBhbmQgaXMgbm90IGF2YWlsYWJsZSBvciBjb21waWxhYmxlIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIChhbWQ2NCkuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBvbmx5IGNvbnZlcnQgc3RhbmRhcmQgbW9kdWxlIGluaXQvZXhpdCBib2lsZXJwbGF0ZSB0byB1c2UgdGhlIG1vZHVsZV9kcml2ZXIoKSBtYWNyby5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjExOjU2LjQ0MDQ3MDQwNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4OTc3Mzc4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg0YzhiNTlhMDE2MzJmYmE0NzdjMDFjYWFjNDE5MmUyMjBjYjEzNTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBTZXAgNiAyMDoxMTo1NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmNcXG5pbmRleCA5YTU5OTE1NDM2ZDI5Li4yZWRmOTdlNTAwZGZiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuY1xcbkBAIC0yNTcsMTggKzI1Nyw3IEBAIHN0YXRpYyB2b2lkIGh5ZHJhX3JlbW92ZV9vbmUoc3RydWN0IHpvcnJvX2RldiAqeilcXG4gICAgIGZyZWVfbmV0ZGV2KGRldik7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbnQgX19pbml0IGh5ZHJhX2luaXRfbW9kdWxlKHZvaWQpXFxuLXtcXG4tICAgIHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmh5ZHJhX2RyaXZlcik7XFxuLX1cXG4tXFxuLXN0YXRpYyB2b2lkIF9fZXhpdCBoeWRyYV9jbGVhbnVwX21vZHVsZSh2b2lkKVxcbi17XFxuLSAgICB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2aHlkcmFfZHJpdmVyKTtcXG4tfVxcbi1cXG4tbW9kdWxlX2luaXQoaHlkcmFfaW5pdF9tb2R1bGUpO1xcbi1tb2R1bGVfZXhpdChoeWRyYV9jbGVhbnVwX21vZHVsZSk7XFxuK21vZHVsZV9kcml2ZXIoaHlkcmFfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcXG4gXFxuIE1PRFVMRV9ERVNDUklQVElPTihcXFwiWm9ycm8tSUkgSHlkcmEgODM5MCBldGhlcm5ldCBkcml2ZXJcXFwiKTtcXG4gTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuY1xcbmluZGV4IGNiMWQ1ZWQyMDg3NDMuLjBmNjZmMjhlNTBiNGYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmNcXG5AQCAtNDMwLDE4ICs0MzAsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3JybzgzOTBfZHJpdmVyID0ge1xcbiBcXHQucmVtb3ZlXFx0XFx0PSB6b3JybzgzOTBfcmVtb3ZlX29uZSxcXG4gfTtcXG4gXFxuLXN0YXRpYyBpbnQgX19pbml0IHpvcnJvODM5MF9pbml0X21vZHVsZSh2b2lkKVxcbi17XFxuLVxcdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnpvcnJvODM5MF9kcml2ZXIpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm84MzkwX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuLXtcXG4tXFx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnpvcnJvODM5MF9kcml2ZXIpO1xcbi19XFxuLVxcbi1tb2R1bGVfaW5pdCh6b3JybzgzOTBfaW5pdF9tb2R1bGUpO1xcbi1tb2R1bGVfZXhpdCh6b3JybzgzOTBfY2xlYW51cF9tb2R1bGUpO1xcbittb2R1bGVfZHJpdmVyKHpvcnJvODM5MF9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xcbiBcXG4gTU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJab3JybyBOUzgzOTAtYmFzZWQgZXRoZXJuZXQgZHJpdmVyXFxcIik7XFxuIE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuY1xcbmluZGV4IDY3MmM0OTk2YjMwZTkuLjkzZjIyNjFmNGJmZTAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuY1xcbkBAIC03NjgsMTggKzc2OCw3IEBAIHN0YXRpYyB2b2lkIGEyMDY1X3JlbW92ZV9vbmUoc3RydWN0IHpvcnJvX2RldiAqeilcXG4gXFx0ZnJlZV9uZXRkZXYoZGV2KTtcXG4gfVxcbiBcXG4tc3RhdGljIGludCBfX2luaXQgYTIwNjVfaW5pdF9tb2R1bGUodm9pZClcXG4te1xcbi1cXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZhMjA2NV9kcml2ZXIpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBfX2V4aXQgYTIwNjVfY2xlYW51cF9tb2R1bGUodm9pZClcXG4te1xcbi1cXHR6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2YTIwNjVfZHJpdmVyKTtcXG4tfVxcbi1cXG4tbW9kdWxlX2luaXQoYTIwNjVfaW5pdF9tb2R1bGUpO1xcbi1tb2R1bGVfZXhpdChhMjA2NV9jbGVhbnVwX21vZHVsZSk7XFxuK21vZHVsZV9kcml2ZXIoYTIwNjVfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcXG4gXFxuIE1PRFVMRV9ERVNDUklQVElPTihcXFwiQ29tbW9kb3JlIEEyMDY1IEV0aGVybmV0IGRyaXZlclxcXCIpO1xcbiBNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jXFxuaW5kZXggZWM2ZTdlOGMxNGZlYS4uNjYyZWJhOWU4ZmZkMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuY1xcbkBAIC03NzcsMTggKzc3Nyw3IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIGFyaWFkbmVfZHJpdmVyID0ge1xcbiBcXHQucmVtb3ZlXFx0XFx0PSBhcmlhZG5lX3JlbW92ZV9vbmUsXFxuIH07XFxuIFxcbi1zdGF0aWMgaW50IF9faW5pdCBhcmlhZG5lX2luaXRfbW9kdWxlKHZvaWQpXFxuLXtcXG4tXFx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2YXJpYWRuZV9kcml2ZXIpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBfX2V4aXQgYXJpYWRuZV9jbGVhbnVwX21vZHVsZSh2b2lkKVxcbi17XFxuLVxcdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZhcmlhZG5lX2RyaXZlcik7XFxuLX1cXG4tXFxuLW1vZHVsZV9pbml0KGFyaWFkbmVfaW5pdF9tb2R1bGUpO1xcbi1tb2R1bGVfZXhpdChhcmlhZG5lX2NsZWFudXBfbW9kdWxlKTtcXG4rbW9kdWxlX2RyaXZlcihhcmlhZG5lX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XFxuIFxcbiBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkFyaWFkbmUgRXRoZXJuZXQgRHJpdmVyXFxcIik7XFxuIE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2EyMDkxLmMgYi9kcml2ZXJzL3Njc2kvYTIwOTEuY1xcbmluZGV4IGY4MWU1M2I1M2UyMDMuLjQyMTMzMGE3YjZhN2EgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zY3NpL2EyMDkxLmNcXG4rKysgYi9kcml2ZXJzL3Njc2kvYTIwOTEuY1xcbkBAIC0yODgsMTcgKzI4OCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIGEyMDkxX2RyaXZlciA9IHtcXG4gXFx0LnJlbW92ZVxcdFxcdD0gYTIwOTFfcmVtb3ZlLFxcbiB9O1xcbiBcXG4tc3RhdGljIGludCBfX2luaXQgYTIwOTFfaW5pdCh2b2lkKVxcbi17XFxuLVxcdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmEyMDkxX2RyaXZlcik7XFxuLX1cXG4tbW9kdWxlX2luaXQoYTIwOTFfaW5pdCk7XFxuLVxcbi1zdGF0aWMgdm9pZCBfX2V4aXQgYTIwOTFfZXhpdCh2b2lkKVxcbi17XFxuLVxcdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZhMjA5MV9kcml2ZXIpO1xcbi19XFxuLW1vZHVsZV9leGl0KGEyMDkxX2V4aXQpO1xcbittb2R1bGVfZHJpdmVyKGEyMDkxX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XFxuIFxcbiBNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkNvbW1vZG9yZSBBMjA5MS9BNTkwIFNDU0lcXFwiKTtcXG4gTU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZ3ZwMTEuYyBiL2RyaXZlcnMvc2NzaS9ndnAxMS5jXFxuaW5kZXggNzliZDY0ZTEyYWRjMi4uZWJhODY4YWMzNTVkOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3Njc2kvZ3ZwMTEuY1xcbisrKyBiL2RyaXZlcnMvc2NzaS9ndnAxMS5jXFxuQEAgLTQ2MSwxNyArNDYxLDcgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgZ3ZwMTFfZHJpdmVyID0ge1xcbiBcXHQucmVtb3ZlXFx0XFx0PSBndnAxMV9yZW1vdmUsXFxuIH07XFxuIFxcbi1zdGF0aWMgaW50IF9faW5pdCBndnAxMV9pbml0KHZvaWQpXFxuLXtcXG4tXFx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2Z3ZwMTFfZHJpdmVyKTtcXG4tfVxcbi1tb2R1bGVfaW5pdChndnAxMV9pbml0KTtcXG4tXFxuLXN0YXRpYyB2b2lkIF9fZXhpdCBndnAxMV9leGl0KHZvaWQpXFxuLXtcXG4tXFx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmd2cDExX2RyaXZlcik7XFxuLX1cXG4tbW9kdWxlX2V4aXQoZ3ZwMTFfZXhpdCk7XFxuK21vZHVsZV9kcml2ZXIoZ3ZwMTFfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcXG4gXFxuIE1PRFVMRV9ERVNDUklQVElPTihcXFwiR1ZQIFNlcmllcyBJSSBTQ1NJXFxcIik7XFxuIE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3pvcnJvN3h4LmMgYi9kcml2ZXJzL3Njc2kvem9ycm83eHguY1xcbmluZGV4IDIxYzc2OWRjMWVjYmQuLjgwZTE1NmIwNGI5OTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvN3h4LmNcXG4rKysgYi9kcml2ZXJzL3Njc2kvem9ycm83eHguY1xcbkBAIC0xNzMsMTUgKzE3Myw0IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIHpvcnJvN3h4X2RyaXZlciA9IHtcXG4gXFx0LnJlbW92ZVxcdCAgPSB6b3Jybzd4eF9yZW1vdmVfb25lLFxcbiB9O1xcbiBcXG4tc3RhdGljIGludCBfX2luaXQgem9ycm83eHhfc2NzaV9pbml0KHZvaWQpXFxuLXtcXG4tXFx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2em9ycm83eHhfZHJpdmVyKTtcXG4tfVxcbi1cXG4tc3RhdGljIHZvaWQgX19leGl0IHpvcnJvN3h4X3Njc2lfZXhpdCh2b2lkKVxcbi17XFxuLVxcdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZ6b3Jybzd4eF9kcml2ZXIpO1xcbi19XFxuLVxcbi1tb2R1bGVfaW5pdCh6b3Jybzd4eF9zY3NpX2luaXQpO1xcbi1tb2R1bGVfZXhpdCh6b3Jybzd4eF9zY3NpX2V4aXQpO1xcbittb2R1bGVfZHJpdmVyKHpvcnJvN3h4X2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS96b3Jyb19lc3AuYyBiL2RyaXZlcnMvc2NzaS96b3Jyb19lc3AuY1xcbmluZGV4IDE3OGQ0NjE0MDY3NDQuLjEyMWJjYmJjZTUyZDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXFxuKysrIGIvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXFxuQEAgLTk0NiwxNSArOTQ2LDQgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgem9ycm9fZXNwX2RyaXZlciA9IHtcXG4gXFx0LnJlbW92ZVxcdCAgPSB6b3Jyb19lc3BfcmVtb3ZlLFxcbiB9O1xcbiBcXG4tc3RhdGljIGludCBfX2luaXQgem9ycm9fZXNwX3Njc2lfaW5pdCh2b2lkKVxcbi17XFxuLVxcdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNnpvcnJvX2VzcF9kcml2ZXIpO1xcbi19XFxuLVxcbi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm9fZXNwX3Njc2lfZXhpdCh2b2lkKVxcbi17XFxuLVxcdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFxcdTAwMjZ6b3Jyb19lc3BfZHJpdmVyKTtcXG4tfVxcbi1cXG4tbW9kdWxlX2luaXQoem9ycm9fZXNwX3Njc2lfaW5pdCk7XFxuLW1vZHVsZV9leGl0KHpvcnJvX2VzcF9zY3NpX2V4aXQpO1xcbittb2R1bGVfZHJpdmVyKHpvcnJvX2VzcF9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMTo1Ny44MzA4NTUzMzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ0MTI0NDI4OTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaGVkIGZpbGVzIChkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jLCBkcml2ZXJzL3Njc2kvYTIwOTEuYywgZHJpdmVycy9zY3NpL2d2cDExLmMsIGRyaXZlcnMvc2NzaS96b3Jybzd4eC5jLCBhbmQgZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jKSBhcmUgYWxsIGRyaXZlcnMgZm9yIEFtaWdhIFpvcnJvIGJ1cyBkZXZpY2VzIHRoYXQgZGVwZW5kIG9uIENPTkZJR19aT1JSTy4gQ09ORklHX1pPUlJPIGlzIG9ubHkgZGVmaW5lZCBmb3IgdGhlIG02OGsgYXJjaGl0ZWN0dXJlICh1bmRlciBhcmNoL202OGsvS2NvbmZpZy5idXMpIGFuZCBpcyBub3QgYXZhaWxhYmxlIG9yIGNvbXBpbGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIG9ubHkgY29udmVydCBzdGFuZGFyZCBtb2R1bGUgaW5pdC9leGl0IGJvaWxlcnBsYXRlIHRvIHVzZSB0aGUgbW9kdWxlX2RyaXZlcigpIG1hY3JvLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NGM4YjU5YTAxNjMyZmJhNDc3YzAxY2FhYzQxOTJlMjIwY2IxMzUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAyMDoxMTo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuY1xuaW5kZXggOWE1OTkxNTQzNmQyOS4uMmVkZjk3ZTUwMGRmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9oeWRyYS5jXG5AQCAtMjU3LDE4ICsyNTcsNyBAQCBzdGF0aWMgdm9pZCBoeWRyYV9yZW1vdmVfb25lKHN0cnVjdCB6b3Jyb19kZXYgKnopXG4gICAgIGZyZWVfbmV0ZGV2KGRldik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgX19pbml0IGh5ZHJhX2luaXRfbW9kdWxlKHZvaWQpXG4te1xuLSAgICByZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmh5ZHJhX2RyaXZlcik7XG4tfVxuLVxuLXN0YXRpYyB2b2lkIF9fZXhpdCBoeWRyYV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLXtcbi0gICAgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2aHlkcmFfZHJpdmVyKTtcbi19XG4tXG4tbW9kdWxlX2luaXQoaHlkcmFfaW5pdF9tb2R1bGUpO1xuLW1vZHVsZV9leGl0KGh5ZHJhX2NsZWFudXBfbW9kdWxlKTtcbittb2R1bGVfZHJpdmVyKGh5ZHJhX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG4gXG4gTU9EVUxFX0RFU0NSSVBUSU9OKFwiWm9ycm8tSUkgSHlkcmEgODM5MCBldGhlcm5ldCBkcml2ZXJcIik7XG4gTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmNcbmluZGV4IGNiMWQ1ZWQyMDg3NDMuLjBmNjZmMjhlNTBiNGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL3pvcnJvODM5MC5jXG5AQCAtNDMwLDE4ICs0MzAsNyBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3JybzgzOTBfZHJpdmVyID0ge1xuIFx0LnJlbW92ZVx0XHQ9IHpvcnJvODM5MF9yZW1vdmVfb25lLFxuIH07XG4gXG4tc3RhdGljIGludCBfX2luaXQgem9ycm84MzkwX2luaXRfbW9kdWxlKHZvaWQpXG4te1xuLVx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZ6b3JybzgzOTBfZHJpdmVyKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IHpvcnJvODM5MF9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLXtcbi1cdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnpvcnJvODM5MF9kcml2ZXIpO1xuLX1cbi1cbi1tb2R1bGVfaW5pdCh6b3JybzgzOTBfaW5pdF9tb2R1bGUpO1xuLW1vZHVsZV9leGl0KHpvcnJvODM5MF9jbGVhbnVwX21vZHVsZSk7XG4rbW9kdWxlX2RyaXZlcih6b3JybzgzOTBfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcbiBcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCJab3JybyBOUzgzOTAtYmFzZWQgZXRoZXJuZXQgZHJpdmVyXCIpO1xuIE1PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmNcbmluZGV4IDY3MmM0OTk2YjMwZTkuLjkzZjIyNjFmNGJmZTAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYTIwNjUuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmNcbkBAIC03NjgsMTggKzc2OCw3IEBAIHN0YXRpYyB2b2lkIGEyMDY1X3JlbW92ZV9vbmUoc3RydWN0IHpvcnJvX2RldiAqeilcbiBcdGZyZWVfbmV0ZGV2KGRldik7XG4gfVxuIFxuLXN0YXRpYyBpbnQgX19pbml0IGEyMDY1X2luaXRfbW9kdWxlKHZvaWQpXG4te1xuLVx0cmV0dXJuIHpvcnJvX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZhMjA2NV9kcml2ZXIpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBfX2V4aXQgYTIwNjVfY2xlYW51cF9tb2R1bGUodm9pZClcbi17XG4tXHR6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZhMjA2NV9kcml2ZXIpO1xuLX1cbi1cbi1tb2R1bGVfaW5pdChhMjA2NV9pbml0X21vZHVsZSk7XG4tbW9kdWxlX2V4aXQoYTIwNjVfY2xlYW51cF9tb2R1bGUpO1xuK21vZHVsZV9kcml2ZXIoYTIwNjVfZHJpdmVyLCB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIsIHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKTtcbiBcbiBNT0RVTEVfREVTQ1JJUFRJT04oXCJDb21tb2RvcmUgQTIwNjUgRXRoZXJuZXQgZHJpdmVyXCIpO1xuIE1PRFVMRV9MSUNFTlNFKFwiR1BMXCIpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jXG5pbmRleCBlYzZlN2U4YzE0ZmVhLi42NjJlYmE5ZThmZmQwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2FyaWFkbmUuY1xuQEAgLTc3NywxOCArNzc3LDcgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgYXJpYWRuZV9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHRcdD0gYXJpYWRuZV9yZW1vdmVfb25lLFxuIH07XG4gXG4tc3RhdGljIGludCBfX2luaXQgYXJpYWRuZV9pbml0X21vZHVsZSh2b2lkKVxuLXtcbi1cdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YXJpYWRuZV9kcml2ZXIpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBfX2V4aXQgYXJpYWRuZV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLXtcbi1cdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmFyaWFkbmVfZHJpdmVyKTtcbi19XG4tXG4tbW9kdWxlX2luaXQoYXJpYWRuZV9pbml0X21vZHVsZSk7XG4tbW9kdWxlX2V4aXQoYXJpYWRuZV9jbGVhbnVwX21vZHVsZSk7XG4rbW9kdWxlX2RyaXZlcihhcmlhZG5lX2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG4gXG4gTU9EVUxFX0RFU0NSSVBUSU9OKFwiQXJpYWRuZSBFdGhlcm5ldCBEcml2ZXJcIik7XG4gTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2EyMDkxLmMgYi9kcml2ZXJzL3Njc2kvYTIwOTEuY1xuaW5kZXggZjgxZTUzYjUzZTIwMy4uNDIxMzMwYTdiNmE3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc2NzaS9hMjA5MS5jXG4rKysgYi9kcml2ZXJzL3Njc2kvYTIwOTEuY1xuQEAgLTI4OCwxNyArMjg4LDcgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgYTIwOTFfZHJpdmVyID0ge1xuIFx0LnJlbW92ZVx0XHQ9IGEyMDkxX3JlbW92ZSxcbiB9O1xuIFxuLXN0YXRpYyBpbnQgX19pbml0IGEyMDkxX2luaXQodm9pZClcbi17XG4tXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmEyMDkxX2RyaXZlcik7XG4tfVxuLW1vZHVsZV9pbml0KGEyMDkxX2luaXQpO1xuLVxuLXN0YXRpYyB2b2lkIF9fZXhpdCBhMjA5MV9leGl0KHZvaWQpXG4te1xuLVx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2YTIwOTFfZHJpdmVyKTtcbi19XG4tbW9kdWxlX2V4aXQoYTIwOTFfZXhpdCk7XG4rbW9kdWxlX2RyaXZlcihhMjA5MV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xuIFxuIE1PRFVMRV9ERVNDUklQVElPTihcIkNvbW1vZG9yZSBBMjA5MS9BNTkwIFNDU0lcIik7XG4gTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2d2cDExLmMgYi9kcml2ZXJzL3Njc2kvZ3ZwMTEuY1xuaW5kZXggNzliZDY0ZTEyYWRjMi4uZWJhODY4YWMzNTVkOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvc2NzaS9ndnAxMS5jXG4rKysgYi9kcml2ZXJzL3Njc2kvZ3ZwMTEuY1xuQEAgLTQ2MSwxNyArNDYxLDcgQEAgc3RhdGljIHN0cnVjdCB6b3Jyb19kcml2ZXIgZ3ZwMTFfZHJpdmVyID0ge1xuIFx0LnJlbW92ZVx0XHQ9IGd2cDExX3JlbW92ZSxcbiB9O1xuIFxuLXN0YXRpYyBpbnQgX19pbml0IGd2cDExX2luaXQodm9pZClcbi17XG4tXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmd2cDExX2RyaXZlcik7XG4tfVxuLW1vZHVsZV9pbml0KGd2cDExX2luaXQpO1xuLVxuLXN0YXRpYyB2b2lkIF9fZXhpdCBndnAxMV9leGl0KHZvaWQpXG4te1xuLVx0em9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2Z3ZwMTFfZHJpdmVyKTtcbi19XG4tbW9kdWxlX2V4aXQoZ3ZwMTFfZXhpdCk7XG4rbW9kdWxlX2RyaXZlcihndnAxMV9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xuIFxuIE1PRFVMRV9ERVNDUklQVElPTihcIkdWUCBTZXJpZXMgSUkgU0NTSVwiKTtcbiBNT0RVTEVfTElDRU5TRShcIkdQTFwiKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvem9ycm83eHguYyBiL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jXG5pbmRleCAyMWM3NjlkYzFlY2JkLi44MGUxNTZiMDRiOTk1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvN3h4LmNcbisrKyBiL2RyaXZlcnMvc2NzaS96b3Jybzd4eC5jXG5AQCAtMTczLDE1ICsxNzMsNCBAQCBzdGF0aWMgc3RydWN0IHpvcnJvX2RyaXZlciB6b3Jybzd4eF9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHQgID0gem9ycm83eHhfcmVtb3ZlX29uZSxcbiB9O1xuIFxuLXN0YXRpYyBpbnQgX19pbml0IHpvcnJvN3h4X3Njc2lfaW5pdCh2b2lkKVxuLXtcbi1cdHJldHVybiB6b3Jyb19yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2em9ycm83eHhfZHJpdmVyKTtcbi19XG4tXG4tc3RhdGljIHZvaWQgX19leGl0IHpvcnJvN3h4X3Njc2lfZXhpdCh2b2lkKVxuLXtcbi1cdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnpvcnJvN3h4X2RyaXZlcik7XG4tfVxuLVxuLW1vZHVsZV9pbml0KHpvcnJvN3h4X3Njc2lfaW5pdCk7XG4tbW9kdWxlX2V4aXQoem9ycm83eHhfc2NzaV9leGl0KTtcbittb2R1bGVfZHJpdmVyKHpvcnJvN3h4X2RyaXZlciwgem9ycm9fcmVnaXN0ZXJfZHJpdmVyLCB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jIGIvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXG5pbmRleCAxNzhkNDYxNDA2NzQ0Li4xMjFiY2JiY2U1MmQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jXG4rKysgYi9kcml2ZXJzL3Njc2kvem9ycm9fZXNwLmNcbkBAIC05NDYsMTUgKzk0Niw0IEBAIHN0YXRpYyBzdHJ1Y3Qgem9ycm9fZHJpdmVyIHpvcnJvX2VzcF9kcml2ZXIgPSB7XG4gXHQucmVtb3ZlXHQgID0gem9ycm9fZXNwX3JlbW92ZSxcbiB9O1xuIFxuLXN0YXRpYyBpbnQgX19pbml0IHpvcnJvX2VzcF9zY3NpX2luaXQodm9pZClcbi17XG4tXHRyZXR1cm4gem9ycm9fcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnpvcnJvX2VzcF9kcml2ZXIpO1xuLX1cbi1cbi1zdGF0aWMgdm9pZCBfX2V4aXQgem9ycm9fZXNwX3Njc2lfZXhpdCh2b2lkKVxuLXtcbi1cdHpvcnJvX3VucmVnaXN0ZXJfZHJpdmVyKFx1MDAyNnpvcnJvX2VzcF9kcml2ZXIpO1xuLX1cbi1cbi1tb2R1bGVfaW5pdCh6b3Jyb19lc3Bfc2NzaV9pbml0KTtcbi1tb2R1bGVfZXhpdCh6b3Jyb19lc3Bfc2NzaV9leGl0KTtcbittb2R1bGVfZHJpdmVyKHpvcnJvX2VzcF9kcml2ZXIsIHpvcnJvX3JlZ2lzdGVyX2RyaXZlciwgem9ycm9fdW5yZWdpc3Rlcl9kcml2ZXIpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTE6NTcuODMwODU2NTcyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjI3ODI0MjY4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBBTUQ2NCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIGl0cyBpbXBhY3Qgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHdoaWNoIGlzIGFtZDY0LiBGcm9tIGEgZ2xhbmNlLCBpdCdzIGhpdHRpbmcgYSBudW1iZXIgb2YgZHJpdmVycy4gSSBzZWUgbW9kaWZpY2F0aW9ucyB0b3VjaGluZzpcblxuKiAgIE5ldHdvcmsgZHJpdmVycyBmb3Igb2xkZXIgODM5MC1iYXNlZCBldGhlcm5ldCBjYXJkcyAoYGh5ZHJhLmNgLCBgem9ycm84MzkwLmNgLCBgYTIwNjUuY2AsIGBhcmlhZG5lLmNgKS4gVGhlc2UgYXJlIGxpa2VseSBsZWdhY3kgb3IgbmljaGUgaGFyZHdhcmUuXG4qICAgU0NTSSBkcml2ZXJzOiBgYTIwOTEuY2AsIGBndnAxMS5jYCwgYHpvcnJvN3h4LmNgLCBhbmQgYHpvcnJvX2VzcC5jYC4gVGhpcyBzdWdnZXN0cyBpbnRlcmFjdGlvbiB3aXRoIG9sZGVyIFNDU0kgY29udHJvbGxlcnMsIGFuZCBwb3RlbnRpYWxseSB0aGUgWm9ycm8gYnVzLlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIHRoZSB0YXJnZXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBkcml2ZXJzLCBhbmQgYWxzbyBkZXBlbmRlbmNpZXMgb24gdGhlIFpPUlJPIGJ1cy4gQSB0b29sIGxpa2UgYGdyZXBwZXJgIHdpbGwgYmUgcGVyZmVjdCBmb3IgcXVpY2tseSBzZWFyY2hpbmcgdGhlIEtjb25maWcgZmlsZXMgYW5kIGZpbmRpbmcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3J1Y2lhbCB0byBhc3Nlc3MgaWYgdGhlIGNoYW5nZSBpbnRyb2R1Y2VzIGFueSBjb21wYXRpYmlsaXR5IGlzc3VlcywgcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMsIG9yIGlmIGl0IGlzIGNvbmRpdGlvbmFsIG9uIHNwZWNpZmljIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTM4LCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MDQuMTA5MTAxMzI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDQxNTE1MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIChIWURSQXxaT1JSTzgzOTB8QTIwNjV8QVJJQURORXxBMjA5MV9TQ1NJfEdWUDExX1NDU0l8Wk9SUk83WFhfU0NTSXxTQ1NJX1pPUlJPX0VTUHxaT1JSTylcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnPTM3PWNvbmZpZyBYU1VSRjEwMFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZzo1MDpjb25maWcgSFlEUkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWctNTEtXFx0dHJpc3RhdGUgXFxcIkh5ZHJhIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc9MTQ1PWNvbmZpZyBTVE5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc6MTU3OmNvbmZpZyBaT1JSTzgzOTBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWctMTU4LVxcdHRyaXN0YXRlIFxcXCJab3JybyBOUzgzOTAtYmFzZWQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnPTIxPWlmIE5FVF9WRU5ET1JfQU1EXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWctMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6MjM6Y29uZmlnIEEyMDY1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIkEyMDY1IHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZz00Nj1jb25maWcgUENORVQzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWc6NTg6Y29uZmlnIEFSSUFETkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZy01OS1cXHR0cmlzdGF0ZSBcXFwiQXJpYWRuZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWc9MTI5ND1jb25maWcgQTMwMDBfU0NTSVxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWctMTMwMy1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZzoxMzA0OmNvbmZpZyBBMjA5MV9TQ1NJXFxuZHJpdmVycy9zY3NpL0tjb25maWctMTMwNS1cXHR0cmlzdGF0ZSBcXFwiQTIwOTEvQTU5MCBXRDMzQzkzQSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWctMTMxMy1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZzoxMzE0OmNvbmZpZyBHVlAxMV9TQ1NJXFxuZHJpdmVycy9zY3NpL0tjb25maWctMTMxNS1cXHR0cmlzdGF0ZSBcXFwiR1ZQIFNlcmllcyBJSSBXRDMzQzkzQSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWc9MTMzOD1jb25maWcgU0NTSV9aT1JSTzdYWFxcbi0tXFxuZHJpdmVycy9zY3NpL0tjb25maWctMTM1My1cXG5kcml2ZXJzL3Njc2kvS2NvbmZpZzoxMzU0OmNvbmZpZyBTQ1NJX1pPUlJPX0VTUFxcbmRyaXZlcnMvc2NzaS9LY29uZmlnLTEzNTUtXFx0dHJpc3RhdGUgXFxcIlpvcnJvIEVTUCBTQ1NJIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3pvcnJvL0tjb25maWctNC0jXFxuZHJpdmVycy96b3Jyby9LY29uZmlnOjU6Y29uZmlnIFpPUlJPX05BTUVTXFxuZHJpdmVycy96b3Jyby9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiWm9ycm8gZGV2aWNlIG5hbWUgZGF0YWJhc2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjA1LjIxMzI1NzY1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4MTY5MjIxMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIERlcHRocyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IHdpdGggdGhlc2UgY29uZmlndXJhdGlvbnMuIEJlZm9yZSBJIGV2ZW4gdGhpbmsgYWJvdXQgbWFraW5nIGFueSBjaGFuZ2VzIG9yIGRlYnVnZ2luZyBhbnl0aGluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzICphY3R1YWxseSogZGVmaW5lZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IHZlcmlmeSB0aGUgS2NvbmZpZyBkZWZpbml0aW9ucyBmb3IgKmFsbCogdGhlIGNvbmZpZ3VyYXRpb25zLCBhbmQgZXNwZWNpYWxseSwgSSBuZWVkIHRvIGZvY3VzIG9uIGhvdyBgQ09ORklHX1pPUlJPYCBpcyBkZWZpbmVkLiBBbnkgdXBzdHJlYW0gY2hhbmdlcyB0aGF0IGltcGFjdCBob3cgdGhpcyBjb25maWd1cmF0aW9uIGJlaGF2ZXMgcmVxdWlyZSBhIGRlZXAgZGl2ZSBpbnRvIHRoZSB1bmRlcmx5aW5nIEtjb25maWcgZmlsZXMuIEkga25vdyB0aGUgaW50cmljYWNpZXMgb2YgdGhpcyBwcm9qZWN0IGRlbWFuZCBhIHNvbGlkLCBhbG1vc3QgZW5jeWNsb3BlZGljLCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBjb25maWd1cmF0aW9ucyBpbnRlcmFjdCwgYW5kIHRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgaW4gZW5zdXJpbmcgSSBoYXZlIGEgc29saWQgZ3Jhc3AuIExldCdzIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IHN1YnRsZSBkZXBlbmRlbmNpZXMgb3IgcG90ZW50aWFsIGNvbmZsaWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQwOCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjA3LjAzMDE4MTcyOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgxMzkxNDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaT1JST1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL202OGsvS2NvbmZpZy5idXM9MTU9Y29uZmlnIE5VQlVTXFxuLS1cXG5hcmNoL202OGsvS2NvbmZpZy5idXMtMTktXFxuYXJjaC9tNjhrL0tjb25maWcuYnVzOjIwOmNvbmZpZyBaT1JST1xcbmFyY2gvbTY4ay9LY29uZmlnLmJ1cy0yMS1cXHRib29sIFxcXCJBbWlnYSBab3JybyAoQXV0b0NvbmZpZykgYnVzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc9MTQ1PWNvbmZpZyBTVE5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnLTE1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWc6MTU3OmNvbmZpZyBaT1JSTzgzOTBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWctMTU4LVxcdHRyaXN0YXRlIFxcXCJab3JybyBOUzgzOTAtYmFzZWQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvem9ycm8vS2NvbmZpZy00LSNcXG5kcml2ZXJzL3pvcnJvL0tjb25maWc6NTpjb25maWcgWk9SUk9fTkFNRVNcXG5kcml2ZXJzL3pvcnJvL0tjb25maWctNi1cXHRib29sIFxcXCJab3JybyBkZXZpY2UgbmFtZSBkYXRhYmFzZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MDguNzExNTc4NTA3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM1Nzc1NDUyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFpPUlJPIENvbmZpZ3VyYXRpb24gZm9yIG02OGsgQXJjaGl0ZWN0dXJlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYENPTkZJR19aT1JST2AgaXMgZXhjbHVzaXZlbHkgZGVmaW5lZCB3aXRoaW4gdGhlIGBhcmNoL202OGsvS2NvbmZpZy5idXNgIGZpbGUuIFRoaXMgdGVsbHMgbWUgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBaT1JSTyBidXMgaXMgY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBtNjhrIGFyY2hpdGVjdHVyZS4gTXkgbmV4dCBzdGVwIGlzIHRvIGNhcmVmdWxseSBleGFtaW5lIGBhcmNoL202OGsvS2NvbmZpZy5idXNgIGluIGRldGFpbC4gSSdsbCBuZWVkIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIHBvdGVudGlhbGx5IGFueSBvdGhlciByZWxldmFudCBjb25maWd1cmF0aW9ucyB3aXRoaW4gdGhhdCBmaWxlIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGdvaW5nIG9uLiBPZiBjb3Vyc2UsIEknbGwgbmVlZCB0byBlbnN1cmUgSSBjaGVjayBhbGwgcmVsYXRlZCBLY29uZmlnIGZpbGVzIHRvbywgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLiBJJ20gbG9va2luZyBmb3IgdGhlIGxvZ2ljLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIG92ZXJhbGwgaW50ZW50IGJlaGluZCB0aGlzIGNvbmZpZ3VyYXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGlzIGRlZmluaXRpb24gYW5kIG90aGVyIGNvbXBvbmVudHMgaXMga2V5IHRvIGdyYXNwaW5nIHRoZSBhcmNoaXRlY3R1cmUncyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBaT1JSTyBidXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4ODcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjoxMS4wNjkzMzYwNzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjIzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL202OGsvS2NvbmZpZy5idXNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRpZiBNTVVcXG4gICAzOlxcdFxcbiAgIDQ6XFx0Y29tbWVudCBcXFwiQnVzIFN1cHBvcnRcXFwiXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBESU9cXG4gICA3OlxcdFxcdGJvb2wgXFxcIkRJTyBidXMgc3VwcG9ydFxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSFAzMDBcXG4gICA5OlxcdFxcdGRlZmF1bHQgeVxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgXFxcIkRJT1xcXCIgZXhwYW5zaW9uIGJ1cyB1c2VkIGluXFxuICAxMjpcXHRcXHQgIEhQMzAwIG1hY2hpbmVzLiBJZiB5b3UgYXJlIHVzaW5nIHN1Y2ggYSBzeXN0ZW0geW91IGFsbW9zdCBjZXJ0YWlubHlcXG4gIDEzOlxcdFxcdCAgd2FudCB0aGlzLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRjb25maWcgTlVCVVNcXG4gIDE2OlxcdFxcdGJvb2xcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gTUFDXFxuICAxODpcXHRcXHRkZWZhdWx0IHlcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFpPUlJPXFxuICAyMTpcXHRcXHRib29sIFxcXCJBbWlnYSBab3JybyAoQXV0b0NvbmZpZykgYnVzIHN1cHBvcnRcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIEFNSUdBXFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgWm9ycm8gYnVzIGluIHRoZSBBbWlnYS4gSWYgeW91IGhhdmVcXG4gIDI1OlxcdFxcdCAgZXhwYW5zaW9uIGNhcmRzIGluIHlvdXIgQW1pZ2EgdGhhdCBjb25mb3JtIHRvIHRoZSBBbWlnYVxcbiAgMjY6XFx0XFx0ICBBdXRvQ29uZmlnKHRtKSBzcGVjaWZpY2F0aW9uLCBzYXkgWSwgb3RoZXJ3aXNlIE4uIE5vdGUgdGhhdCBldmVuXFxuICAyNzpcXHRcXHQgIGV4cGFuc2lvbiBjYXJkcyB0aGF0IGRvIG5vdCBmaXQgaW4gdGhlIFpvcnJvIHNsb3RzIGJ1dCBmaXQgaW4gZS5nLlxcbiAgMjg6XFx0XFx0ICB0aGUgQ1BVIHNsb3QgbWF5IGZhbGwgaW4gdGhpcyBjYXRlZ29yeSwgc28geW91IGhhdmUgdG8gc2F5IFkgdG8gbGV0XFxuICAyOTpcXHRcXHQgIExpbnV4IHVzZSB0aGVzZS5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIEFNSUdBX1BDTUNJQVxcbiAgMzI6XFx0XFx0Ym9vbCBcXFwiQW1pZ2EgMTIwMC82MDAgUENNQ0lBIHN1cHBvcnRcXFwiXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIEFNSUdBXFxuICAzNDpcXHRcXHRoZWxwXFxuICAzNTpcXHRcXHQgIEluY2x1ZGUgc3VwcG9ydCBpbiB0aGUga2VybmVsIGZvciBwY21jaWEgb24gQW1pZ2EgMTIwMCBhbmQgQW1pZ2FcXG4gIDM2OlxcdFxcdCAgNjAwLiBJZiB5b3UgaW50ZW5kIHRvIHVzZSBwY21jaWEgY2FyZHMgc2F5IFk7IG90aGVyd2lzZSBzYXkgTi5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIElTQVxcbiAgMzk6XFx0XFx0Ym9vbFxcbiAgNDA6XFx0XFx0ZGVwZW5kcyBvbiBRNDAgfHwgQU1JR0FfUENNQ0lBXFxuICA0MTpcXHRcXHRkZWZhdWx0IHlcXG4gIDQyOlxcdFxcdGhlbHBcXG4gIDQzOlxcdFxcdCAgRmluZCBvdXQgd2hldGhlciB5b3UgaGF2ZSBJU0Egc2xvdHMgb24geW91ciBtb3RoZXJib2FyZC4gIElTQSBpcyB0aGVcXG4gIDQ0OlxcdFxcdCAgbmFtZSBvZiBhIGJ1cyBzeXN0ZW0sIGkuZS4gdGhlIHdheSB0aGUgQ1BVIHRhbGtzIHRvIHRoZSBvdGhlciBzdHVmZlxcbiAgNDU6XFx0XFx0ICBpbnNpZGUgeW91ciBib3guICBPdGhlciBidXMgc3lzdGVtcyBhcmUgUENJLCBFSVNBLCBNaWNyb0NoYW5uZWxcXG4gIDQ2OlxcdFxcdCAgKE1DQSkgb3IgVkVTQS4gIElTQSBpcyBhbiBvbGRlciBzeXN0ZW0sIG5vdyBiZWluZyBkaXNwbGFjZWQgYnkgUENJO1xcbiAgNDc6XFx0XFx0ICBuZXdlciBib2FyZHMgZG9uJ3Qgc3VwcG9ydCBpdC4gIElmIHlvdSBoYXZlIElTQSwgc2F5IFksIG90aGVyd2lzZSBOLlxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgQVRBUklfUk9NX0lTQVxcbiAgNTA6XFx0XFx0Ym9vbCBcXFwiQXRhcmkgUk9NIHBvcnQgSVNBIGFkYXB0ZXIgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MTEuMDY5Mzk5NTM3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM4MTk2NDczNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgYW5kIFN0b3JhZ2UgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgYXZhaWxhYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgbmV0d29yayBhbmQgc3RvcmFnZSBkcml2ZXJzLiBJJ2xsIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZ2AsIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvS2NvbmZpZ2AsIGFuZCBgZHJpdmVycy9zY3NpL0tjb25maWdgLiBUaGVzZSBgS2NvbmZpZ2AgZmlsZXMgYXJlIGtleS4gVGhleSdsbCB0ZWxsIG1lIHdoYXQgaGFyZHdhcmUgZWFjaCBkcml2ZXIgc3VwcG9ydHMsIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBmZWF0dXJlcywgYW55IGRlZmF1bHRzIHRoYXQgYXJlIHNldCwgYW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBjYW4gdHdlYWsuIEknbSBhc3N1bWluZyB0aGF0IHRoaXMgaXMgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBjb250ZXh0LCBzbyB0aGVzZSBmaWxlcyB3aWxsIGJlIGVzc2VudGlhbCBmb3IgdW5kZXJzdGFuZGluZyB3aGF0J3MgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBob3cgSSBjYW4gY3VzdG9taXplIHRoZSBrZXJuZWwgYnVpbGQgdG8gc3VwcG9ydCBwYXJ0aWN1bGFyIG5ldHdvcmsgaW50ZXJmYWNlcyBhbmQgU0NTSSBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZHJpdmVycyBhbmQgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbTsgZm9yIGluc3RhbmNlLCB1bmRlcnN0YW5kaW5nIGhvdyBzcGVjaWZpYyA4MzkwIG9yIEFNRCBuZXR3b3JrIGRyaXZlcnMgY2FuIGJlIGludGVncmF0ZWQgb3IgcmVwbGFjZWQgd2l0aCBuZXdlciBzb2x1dGlvbnMgaXMgaW1wb3J0YW50LiBUaGlzIGluaXRpYWwgc2NhbiBpcyBhYm91dCBnYWluaW5nIGEgaGlnaC1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBleGlzdGluZyBkcml2ZXIgbGFuZHNjYXBlLCB0aGUgY2hvaWNlcyBhdmFpbGFibGUsIGFuZCB0aGUgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gcGF0aHdheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4OTksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjEzLjQ1MTM2Nzc2MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDUsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDU6XFx0XFx0ICBzYXkgWS4gT3RoZXJ3aXNlLCBzYXkgTi5cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICA0ODpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHhzdXJmMTAwLlxcbiAgNDk6XFx0XFxuICA1MDpcXHRjb25maWcgSFlEUkFcXG4gIDUxOlxcdFxcdHRyaXN0YXRlIFxcXCJIeWRyYSBzdXBwb3J0XFxcIlxcbiAgNTI6XFx0XFx0ZGVwZW5kcyBvbiBaT1JST1xcbiAgNTM6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA1NDpcXHRcXHRoZWxwXFxuICA1NTpcXHRcXHQgIElmIHlvdSBoYXZlIGEgSHlkcmEgRXRoZXJuZXQgYWRhcHRlciwgc2F5IFkuIE90aGVyd2lzZSwgc2F5IE4uXFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgNTg6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBoeWRyYS5cXG4gIDU5OlxcdFxcbiAgNjA6XFx0Y29uZmlnIEFSTV9FVEhFUkhcXG4gIDYxOlxcdFxcdHRyaXN0YXRlIFxcXCJJLWN1YmVkIEV0aGVySC9BTlQgRXRoZXJNIHN1cHBvcnRcXFwiXFxuICA2MjpcXHRcXHRkZXBlbmRzIG9uIEFSTSBcXHUwMDI2XFx1MDAyNiBBUkNIX0FDT1JOXFxuICA2MzpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDY0OlxcdFxcdGhlbHBcXG4gIDY1OlxcdFxcdCAgSWYgeW91IGhhdmUgYW4gQWNvcm4gc3lzdGVtIHdpdGggb25lIG9mIHRoZXNlIG5ldHdvcmsgY2FyZHMsIHlvdVxcbiAgNjY6XFx0XFx0ICBzaG91bGQgc2F5IFkgdG8gdGhpcyBvcHRpb24gaWYgeW91IHdpc2ggdG8gdXNlIGl0IHdpdGggTGludXguXFxuICA2NzpcXHRcXG4gIDY4OlxcdGNvbmZpZyBNQUM4MzkwXFxuICA2OTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWFjaW50b3NoIE5TIDgzOTAgYmFzZWQgZXRoZXJuZXQgY2FyZHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjEzLjQ1MTQyNjQwMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjYyMzQ5NjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgdGhlIHdob2xlIHBpY3R1cmUgaGVyZS4gSSBzaG91bGQgcHJvYmFibHkgZXhwYW5kIG15IHNjb3BlIGFuZCBjaGVjayBzb21lIG90aGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgcmVsYXRlZCB0byBuZXR3b3JraW5nIGFuZCBzdG9yYWdlLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgYnkgbG9va2luZyBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC9LY29uZmlnYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9LY29uZmlnYCwgYW5kIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AuIFRoaXMgd2lsbCBoZWxwIG1lIGdldCBhIGJyb2FkZXIgcGVyc3BlY3RpdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1ODYsIk91dHB1dFRva2VucyI6NzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjE1LjExMzc3OTA4NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwODg3MTI0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoSFlEUkF8Wk9SUk84MzkwfEEyMDY1fEFSSUFETkV8QTIwOTFfU0NTSXxHVlAxMV9TQ1NJfFNDU0lfWk9SUk83WFh8U0NTSV9aT1JST19FU1ApXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI0MSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9pMmMvYnVzc2VzL0tjb25maWc9MzY4PWNvbW1lbnQgXFxcIk1hYyBTTUJ1cyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyc1xcXCJcXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnLTM3MC1cXG5kcml2ZXJzL2kyYy9idXNzZXMvS2NvbmZpZzozNzE6Y29uZmlnIEkyQ19IWURSQVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9LY29uZmlnLTM3Mi1cXHR0cmlzdGF0ZSBcXFwiQ0hSUCBBcHBsZSBIeWRyYSBNYWMgSS9PIEkyQyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX0kyQ19aSEFPWElOKVxcdCs9IGkyYy12aWFpMmMtemhhb3hpbi5vIGkyYy12aWFpMmMtY29tbW9uLm9cXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZS0zMi0jIE1hYyBTTUJ1cyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyc1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfSTJDX0hZRFJBKVxcdFxcdCs9IGkyYy1oeWRyYS5vXFxuZHJpdmVycy9pMmMvYnVzc2VzL01ha2VmaWxlLTM0LW9iai0kKENPTkZJR19JMkNfUE9XRVJNQUMpXFx0Kz0gaTJjLXBvd2VybWFjLm9cXG4tLVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy0yMS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6MjI6I2RlZmluZSBIWURSQV9DUERfUEQwXFx0MHgwMDAwMDAwMVxcdC8qIENhY2hlUEQgbGluZXMgKi9cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6MjM6I2RlZmluZSBIWURSQV9DUERfUEQxXFx0MHgwMDAwMDAwMlxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyNDojZGVmaW5lIEhZRFJBX0NQRF9QRDJcXHQweDAwMDAwMDA0XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjI1OiNkZWZpbmUgSFlEUkFfQ1BEX1BEM1xcdDB4MDAwMDAwMDhcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtMjYtXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjI3OiNkZWZpbmUgSFlEUkFfU0NMS1xcdEhZRFJBX0NQRF9QRDBcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6Mjg6I2RlZmluZSBIWURSQV9TREFUXFx0SFlEUkFfQ1BEX1BEMVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzoyOTojZGVmaW5lIEhZRFJBX1NDTEtfT0VcXHQweDAwMDAwMDEwXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjMwOiNkZWZpbmUgSFlEUkFfU0RBVF9PRVxcdDB4MDAwMDAwMjBcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtMzEtXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9NDQ9c3RhdGljIHZvaWQgaHlkcmFfYml0X3NldHNjbCh2b2lkICpkYXRhLCBpbnQgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtNDctXFx0aWYgKHN0YXRlKVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo0ODpcXHRcXHR2YWwgXFx1MDAyNj0gfkhZRFJBX1NDTEtfT0U7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTQ5LVxcdGVsc2Uge1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo1MDpcXHRcXHR2YWwgXFx1MDAyNj0gfkhZRFJBX1NDTEs7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjUxOlxcdFxcdHZhbCB8PSBIWURSQV9TQ0xLX09FO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy01Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9NTY9c3RhdGljIHZvaWQgaHlkcmFfYml0X3NldHNkYSh2b2lkICpkYXRhLCBpbnQgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtNTktXFx0aWYgKHN0YXRlKVxcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo2MDpcXHRcXHR2YWwgXFx1MDAyNj0gfkhZRFJBX1NEQVRfT0U7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTYxLVxcdGVsc2Uge1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo2MjpcXHRcXHR2YWwgXFx1MDAyNj0gfkhZRFJBX1NEQVQ7XFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jOjYzOlxcdFxcdHZhbCB8PSBIWURSQV9TREFUX09FO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy02NC1cXHR9XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9Njg9c3RhdGljIGludCBoeWRyYV9iaXRfZ2V0c2NsKHZvaWQgKmRhdGEpXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTY5LXtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6NzA6XFx0cmV0dXJuIChwZHJlZ3IoZGF0YSkgXFx1MDAyNiBIWURSQV9TQ0xLKSAhPSAwO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy03MS19XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9NzM9c3RhdGljIGludCBoeWRyYV9iaXRfZ2V0c2RhKHZvaWQgKmRhdGEpXFxuZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1oeWRyYS5jLTc0LXtcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM6NzU6XFx0cmV0dXJuIChwZHJlZ3IoZGF0YSkgXFx1MDAyNiBIWURSQV9TREFUKSAhPSAwO1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYy03Ni19XFxuLS1cXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmM9OTU9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGh5ZHJhX2lkc1tdID0ge1xcbmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaHlkcmEuYzo5NjpcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9BUFBMRSwgUENJX0RFVklDRV9JRF9BUFBMRV9IWURSQSkgfSxcXG5kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWh5ZHJhLmMtOTctXFx0eyAwLCB9XFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTQyLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6NDM6I2RlZmluZSBNSU5fSFlEUkFUSU9OUyAyNTYgLyogU2l6ZSBvZiBoeWRyYXRpb24gbWVtcG9vbCAqL1xcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6NDQ6I2RlZmluZSBERUZBVUxUX0hZRFJBVElPTl9USFJFU0hPTEQgMSAvKiAxIHJlZ2lvbiAqL1xcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6NDU6I2RlZmluZSBERUZBVUxUX0hZRFJBVElPTl9CQVRDSF9TSVpFIDEgLyogSHlkcmF0ZSBpbiBiYXRjaGVzIG9mIDEgcmVnaW9uICovXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy00Ni1cXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9Njk9c3RydWN0IGNsb25lIHtcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTQzLSNkZWZpbmUgRE1fQ0xPTkVfRElTQ0FSRF9QQVNTRE9XTiAwXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNDQ6I2RlZmluZSBETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCAxXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNDU6I2RlZmluZSBETV9DTE9ORV9IWURSQVRJT05fU1VTUEVOREVEIDJcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE0Ni1cXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9NzYxPXN0YXRpYyB2b2lkIGh5ZHJhdGlvbl9rY29weWRfY2FsbGJhY2soaW50IHJlYWRfZXJyLCB1bnNpZ25lZCBsb25nIHdyaXRlX2Vyciwgdm9pZCAqY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtNzg3LVxcdC8qIENvbnRpbnVlIGJhY2tncm91bmQgaHlkcmF0aW9uLCBpZiB0aGVyZSBpcyBubyBJL08gaW4tZmxpZ2h0ICovXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzo3ODg6XFx0aWYgKHRlc3RfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtNzg5LVxcdCAgICAhYXRvbWljX3JlYWQoXFx1MDAyNmNsb25lLVxcdTAwM2Vpb3NfaW5fZmxpZ2h0KSlcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTA2MT1zdGF0aWMgdm9pZCBkb19oeWRyYXRpb24oc3RydWN0IGNsb25lICpjbG9uZSlcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTA5Mi1cXHRvZmZzZXQgPSBjbG9uZS1cXHUwMDNlaHlkcmF0aW9uX29mZnNldDtcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjEwOTM6XFx0d2hpbGUgKGxpa2VseSghdGVzdF9iaXQoRE1fQ0xPTkVfSFlEUkFUSU9OX1NVU1BFTkRFRCwgXFx1MDAyNmNsb25lLVxcdTAwM2VmbGFncykpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMDk0LVxcdCAgICAgICAhYXRvbWljX3JlYWQoXFx1MDAyNmNsb25lLVxcdTAwM2Vpb3NfaW5fZmxpZ2h0KSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTA5NTpcXHQgICAgICAgdGVzdF9iaXQoRE1fQ0xPTkVfSFlEUkFUSU9OX0VOQUJMRUQsIFxcdTAwMjZjbG9uZS1cXHUwMDNlZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMDk2LVxcdCAgICAgICBvZmZzZXQgXFx1MDAzYyBucl9yZWdpb25zKSB7XFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jPTEzODI9c3RhdGljIHZvaWQgZW1pdF9mbGFncyhzdHJ1Y3QgY2xvbmUgKmNsb25lLCBjaGFyICpyZXN1bHQsIHVuc2lnbmVkIGludCBtYXhsZW4sXFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTEzODctXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxMzg4OlxcdGNvdW50ID0gIXRlc3RfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTEzODktXFx0Y291bnQgKz0gIXRlc3RfYml0KERNX0NMT05FX0RJU0NBUkRfUEFTU0RPV04sIFxcdTAwMjZjbG9uZS1cXHUwMDNlZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xMzkyLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTM5MzpcXHRpZiAoIXRlc3RfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKSlcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTEzOTQtXFx0XFx0RE1FTUlUKFxcXCJub19oeWRyYXRpb24gXFxcIik7XFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jPTE1Mzc9c3RhdGljIGludCBwYXJzZV9mZWF0dXJlX2FyZ3Moc3RydWN0IGRtX2FyZ19zZXQgKmFzLCBzdHJ1Y3QgY2xvbmUgKmNsb25lKVxcbi0tXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xNTYyLVxcdFxcdGlmICghc3RyY2FzZWNtcChhcmdfbmFtZSwgXFxcIm5vX2h5ZHJhdGlvblxcXCIpKSB7XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNTYzOlxcdFxcdFxcdF9fY2xlYXJfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE1NjQtXFx0XFx0fSBlbHNlIGlmICghc3RyY2FzZWNtcChhcmdfbmFtZSwgXFxcIm5vX2Rpc2NhcmRfcGFzc2Rvd25cXFwiKSkge1xcbi0tXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYz0xNTc1PXN0YXRpYyBpbnQgcGFyc2VfY29yZV9hcmdzKHN0cnVjdCBkbV9hcmdfc2V0ICphcywgc3RydWN0IGNsb25lICpjbG9uZSlcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTU4OS1cXHQvKiBJbml0aWFsaXplIGNvcmUgYXJndW1lbnRzICovXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNTkwOlxcdGNsb25lLVxcdTAwM2VoeWRyYXRpb25fYmF0Y2hfc2l6ZSA9IERFRkFVTFRfSFlEUkFUSU9OX0JBVENIX1NJWkU7XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxNTkxOlxcdGNsb25lLVxcdTAwM2VoeWRyYXRpb25fdGhyZXNob2xkID0gREVGQVVMVF9IWURSQVRJT05fVEhSRVNIT0xEO1xcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTU5Mi1cXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTc1ND1zdGF0aWMgaW50IGNsb25lX2N0cihzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgdW5zaWduZWQgaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbi0tXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xNzc3LVxcdC8qIEluaXRpYWxpemUgZG0tY2xvbmUgZmxhZ3MgKi9cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE3Nzg6XFx0X19zZXRfYml0KERNX0NMT05FX0hZRFJBVElPTl9FTkFCTEVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE3Nzk6XFx0X19zZXRfYml0KERNX0NMT05FX0hZRFJBVElPTl9TVVNQRU5ERUQsIFxcdTAwMjZjbG9uZS1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTc4MC1cXHRfX3NldF9iaXQoRE1fQ0xPTkVfRElTQ0FSRF9QQVNTRE9XTiwgXFx1MDAyNmNsb25lLVxcdTAwM2VmbGFncyk7XFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE4ODAtXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoxODgxOlxcdHIgPSBtZW1wb29sX2luaXRfc2xhYl9wb29sKFxcdTAwMjZjbG9uZS1cXHUwMDNlaHlkcmF0aW9uX3Bvb2wsIE1JTl9IWURSQVRJT05TLFxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTg4Mi1cXHRcXHRcXHRcXHQgICBfaHlkcmF0aW9uX2NhY2hlKTtcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MTk1NT1zdGF0aWMgdm9pZCBjbG9uZV9wb3N0c3VzcGVuZChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSlcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMTk3NS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jOjE5NzY6XFx0c2V0X2JpdChETV9DTE9ORV9IWURSQVRJT05fU1VTUEVOREVELCBcXHUwMDI2Y2xvbmUtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jLTE5NzctXFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jPTE5OTM9c3RhdGljIHZvaWQgY2xvbmVfcmVzdW1lKHN0cnVjdCBkbV90YXJnZXQgKnRpKVxcbi0tXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xOTk2LVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM6MTk5NzpcXHRjbGVhcl9iaXQoRE1fQ0xPTkVfSFlEUkFUSU9OX1NVU1BFTkRFRCwgXFx1MDAyNmNsb25lLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0xOTk4LVxcdGRvX3dha2VyKFxcdTAwMjZjbG9uZS1cXHUwMDNld2FrZXIud29yayk7XFxuLS1cXG5kcml2ZXJzL21kL2RtLWNsb25lLXRhcmdldC5jPTIxMDM9c3RhdGljIHZvaWQgZW5hYmxlX2h5ZHJhdGlvbihzdHJ1Y3QgY2xvbmUgKmNsb25lKVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMjEwNC17XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoyMTA1OlxcdGlmICghdGVzdF9hbmRfc2V0X2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXFx1MDAyNmNsb25lLVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0yMTA2LVxcdFxcdHdha2Vfd29ya2VyKGNsb25lKTtcXG4tLVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmM9MjEwOT1zdGF0aWMgdm9pZCBkaXNhYmxlX2h5ZHJhdGlvbihzdHJ1Y3QgY2xvbmUgKmNsb25lKVxcbmRyaXZlcnMvbWQvZG0tY2xvbmUtdGFyZ2V0LmMtMjExMC17XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYzoyMTExOlxcdGNsZWFyX2JpdChETV9DTE9ORV9IWURSQVRJT05fRU5BQkxFRCwgXFx1MDAyNmNsb25lLVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9tZC9kbS1jbG9uZS10YXJnZXQuYy0yMTEyLX1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0zOD1zdHJ1Y3QgbXhsX2Jhc2Uge1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTYzLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2NDpcXHR1OCAgICAgICAgICAgICAgICAgICBidWZbTVhMX0hZRFJBX09FTV9NQVhfQ01EX0JVRkZfTEVOXTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjUtXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MTQ4PXN0YXRpYyBpbnQgcmVhZF9yZWdpc3Rlcl91bmxvY2tlZChzdHJ1Y3QgbXhsICpzdGF0ZSwgdTMyIHJlZywgdTMyICp2YWwpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTUwLVxcdGludCBzdGF0O1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxNTE6XFx0dTggZGF0YVtNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMgKyBNWExfSFlEUkFfSTJDX0hEUl9TSVpFXSA9IHtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTUyOlxcdFxcdE1YTF9IWURSQV9QTElEX1JFR19SRUFELCAweDA0LFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xNTMtXFx0XFx0R0VUX0JZVEUocmVnLCAwKSwgR0VUX0JZVEUocmVnLCAxKSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xNTctXFx0c3RhdCA9IGkyY3dyaXRlKHN0YXRlLCBkYXRhLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxNTg6XFx0XFx0XFx0TVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTICsgTVhMX0hZRFJBX0kyQ19IRFJfU0laRSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTE1OS1cXHRpZiAoc3RhdClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xNjItXFx0XFx0c3RhdCA9IGkyY3JlYWQoc3RhdGUsICh1OCAqKSB2YWwsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjE2MzpcXHRcXHRcXHQgICAgICAgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTY0LVxcdGxlMzJfdG9fY3B1cyh2YWwpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTIwMT1zdGF0aWMgaW50IHdyaXRlX3JlZ2lzdGVyKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgcmVnLCB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTIwMy1cXHRpbnQgc3RhdDtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjA0OlxcdHU4IGRhdGFbTVhMX0hZRFJBX1JFR19XUklURV9MRU5dID0ge1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyMDU6XFx0XFx0TVhMX0hZRFJBX1BMSURfUkVHX1dSSVRFLCAweDA4LFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yMDYtXFx0XFx0QllURTAocmVnKSwgQllURTEocmVnKSwgQllURTIocmVnKSwgQllURTMocmVnKSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0yMTc9c3RhdGljIGludCB3cml0ZV9maXJtd2FyZV9ibG9jayhzdHJ1Y3QgbXhsICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yMjMtXFx0bXV0ZXhfbG9jayhcXHUwMDI2c3RhdGUtXFx1MDAzZWJhc2UtXFx1MDAzZWkyY19sb2NrKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjI0OlxcdGJ1ZlswXSA9IE1YTF9IWURSQV9QTElEX1JFR19XUklURTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjI1LVxcdGJ1ZlsxXSA9IHNpemUgKyA0O1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTIzMS1cXHRzdGF0ID0gaTJjd3JpdGUoc3RhdGUsIGJ1ZixcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjMyOlxcdFxcdFxcdE1YTF9IWURSQV9JMkNfSERSX1NJWkUgK1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyMzM6XFx0XFx0XFx0TVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTICsgc2l6ZSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTIzNC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2VpMmNfbG9jayk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MjQwPXN0YXRpYyBpbnQgcmVhZF9yZWdpc3RlcihzdHJ1Y3QgbXhsICpzdGF0ZSwgdTMyIHJlZywgdTMyICp2YWwpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjQyLVxcdGludCBzdGF0O1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyNDM6XFx0dTggZGF0YVtNWExfSFlEUkFfUkVHX1NJWkVfSU5fQllURVMgKyBNWExfSFlEUkFfSTJDX0hEUl9TSVpFXSA9IHtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MjQ0OlxcdFxcdE1YTF9IWURSQV9QTElEX1JFR19SRUFELCAweDA0LFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNDUtXFx0XFx0R0VUX0JZVEUocmVnLCAwKSwgR0VUX0JZVEUocmVnLCAxKSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNTAtXFx0c3RhdCA9IGkyY3dyaXRlKHN0YXRlLCBkYXRhLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyNTE6XFx0XFx0XFx0TVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTICsgTVhMX0hZRFJBX0kyQ19IRFJfU0laRSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTI1Mi1cXHRpZiAoc3RhdClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNTUtXFx0XFx0c3RhdCA9IGkyY3JlYWQoc3RhdGUsICh1OCAqKSB2YWwsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjI1NjpcXHRcXHRcXHQgICAgICAgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjU3LVxcdG11dGV4X3VubG9jayhcXHUwMDI2c3RhdGUtXFx1MDAzZWJhc2UtXFx1MDAzZWkyY19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0yNjQ9c3RhdGljIGludCByZWFkX3JlZ2lzdGVyX2Jsb2NrKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgcmVnLCB1MzIgc2l6ZSwgdTggKmRhdGEpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjcwLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoyNzE6XFx0YnVmWzBdID0gTVhMX0hZRFJBX1BMSURfUkVHX1JFQUQ7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTI3Mi1cXHRidWZbMV0gPSBzaXplICsgNDtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0yNzctXFx0c3RhdCA9IGkyY3dyaXRlKHN0YXRlLCBidWYsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjI3ODpcXHRcXHRcXHRNWExfSFlEUkFfSTJDX0hEUl9TSVpFICsgTVhMX0hZRFJBX1JFR19TSVpFX0lOX0JZVEVTKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMjc5LVxcdGlmICghc3RhdCkge1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTMxOT1zdGF0aWMgaW50IGZpcm13YXJlX2lzX2FsaXZlKHN0cnVjdCBteGwgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyMi1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MzIzOlxcdGlmIChyZWFkX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9IRUFSX0JFQVQsIFxcdTAwMjZoYjApKVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0zMjQtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyNS1cXHRtc2xlZXAoMjApO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzozMjY6XFx0aWYgKHJlYWRfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX0hFQVJfQkVBVCwgXFx1MDAyNmhiMSkpXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTMyNy1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz0zODQ9c3RhdGljIGludCBjZmdfc2NyYW1ibGVyKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgZ29sZClcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0zODctXFx0dTggYnVmWzI2XSA9IHtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6Mzg4OlxcdFxcdE1YTF9IWURSQV9QTElEX0NNRF9XUklURSwgMjQsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjM4OTpcXHRcXHQwLCBNWExfSFlEUkFfREVNT0RfU0NSQU1CTEVfQ09ERV9DTUQsIDAsIDAsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTM5MC1cXHRcXHRzdGF0ZS1cXHUwMDNlZGVtb2QsIDAsIDAsIDAsXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9NDA1PXN0YXRpYyBpbnQgY2ZnX2RlbW9kX2Fib3J0X3R1bmUoc3RydWN0IG14bCAqc3RhdGUpXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQwNi17XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQwNzpcXHRzdHJ1Y3QgTVhMX0hZRFJBX0RFTU9EX0FCT1JUX1RVTkVfVCBhYm9ydF90dW5lX2NtZDtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDA4LVxcdHU4IGNtZF9zaXplID0gc2l6ZW9mKGFib3J0X3R1bmVfY21kKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDA5OlxcdHU4IGNtZF9idWZmW01YTF9IWURSQV9PRU1fTUFYX0NNRF9CVUZGX0xFTl07XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQxMC1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDExLVxcdGFib3J0X3R1bmVfY21kLmRlbW9kX2lkID0gc3RhdGUtXFx1MDAzZWRlbW9kO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0MTI6XFx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9BQk9SVF9UVU5FX0NNRCwgTVhMX0NNRF9XUklURSxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDEzLVxcdFxcdFxcdGNtZF9zaXplLCBcXHUwMDI2YWJvcnRfdHVuZV9jbWQsIGNtZF9idWZmKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDE0OlxcdHJldHVybiBzZW5kX2NvbW1hbmQoc3RhdGUsIGNtZF9zaXplICsgTVhMX0hZRFJBX0NNRF9IRUFERVJfU0laRSxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDE1LVxcdFxcdFxcdCAgICBcXHUwMDI2Y21kX2J1ZmZbMF0pO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTQyNj1zdGF0aWMgaW50IHNldF9wYXJhbWV0ZXJzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQyOS1cXHRzdHJ1Y3QgZHR2X2Zyb250ZW5kX3Byb3BlcnRpZXMgKnAgPSBcXHUwMDI2ZmUtXFx1MDAzZWR0dl9wcm9wZXJ0eV9jYWNoZTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDMwOlxcdHN0cnVjdCBNWExfSFlEUkFfREVNT0RfUEFSQU1fVCBkZW1vZF9jaGFuX2NmZztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDMxLVxcdHU4IGNtZF9zaXplID0gc2l6ZW9mKGRlbW9kX2NoYW5fY2ZnKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDMyOlxcdHU4IGNtZF9idWZmW01YTF9IWURSQV9PRU1fTUFYX0NNRF9CVUZGX0xFTl07XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQzMy1cXHR1MzIgc3JhbmdlID0gMTA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDQ0LVxcdGNhc2UgU1lTX0RTUzpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDQ1OlxcdFxcdGRlbW9kX2NoYW5fY2ZnLnN0YW5kYXJkID0gTVhMX0hZRFJBX0RTUztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDQ2OlxcdFxcdGRlbW9kX2NoYW5fY2ZnLnJvbGxfb2ZmID0gTVhMX0hZRFJBX1JPTExPRkZfQVVUTztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDQ3LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ1MS1cXHRcXHRcXHRzcmFuZ2UgPSAxMDtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDUyOlxcdFxcdGRlbW9kX2NoYW5fY2ZnLnN0YW5kYXJkID0gTVhMX0hZRFJBX0RWQlM7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ1MzpcXHRcXHRkZW1vZF9jaGFuX2NmZy5yb2xsX29mZiA9IE1YTF9IWURSQV9ST0xMT0ZGXzBfMzU7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ1NDpcXHRcXHRkZW1vZF9jaGFuX2NmZy5tb2R1bGF0aW9uX3NjaGVtZSA9IE1YTF9IWURSQV9NT0RfUVBTSztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDU1OlxcdFxcdGRlbW9kX2NoYW5fY2ZnLnBpbG90cyA9IE1YTF9IWURSQV9QSUxPVFNfT0ZGO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00NTYtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ1Ny1cXHRjYXNlIFNZU19EVkJTMjpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDU4OlxcdFxcdGRlbW9kX2NoYW5fY2ZnLnN0YW5kYXJkID0gTVhMX0hZRFJBX0RWQlMyO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NTk6XFx0XFx0ZGVtb2RfY2hhbl9jZmcucm9sbF9vZmYgPSBNWExfSFlEUkFfUk9MTE9GRl9BVVRPO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NjA6XFx0XFx0ZGVtb2RfY2hhbl9jZmcubW9kdWxhdGlvbl9zY2hlbWUgPSBNWExfSFlEUkFfTU9EX0FVVE87XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjQ2MTpcXHRcXHRkZW1vZF9jaGFuX2NmZy5waWxvdHMgPSBNWExfSFlEUkFfUElMT1RTX0FVVE87XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ2Mi1cXHRcXHRjZmdfc2NyYW1ibGVyKHN0YXRlLCBwLVxcdTAwM2VzY3JhbWJsaW5nX3NlcXVlbmNlX2luZGV4KTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00NzEtXFx0ZGVtb2RfY2hhbl9jZmcubWF4X2NhcnJpZXJfb2Zmc2V0X2luX21oeiA9IHNyYW5nZTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NDcyOlxcdGRlbW9kX2NoYW5fY2ZnLnNwZWN0cnVtX2ludmVyc2lvbiA9IE1YTF9IWURSQV9TUEVDVFJVTV9BVVRPO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0NzM6XFx0ZGVtb2RfY2hhbl9jZmcuZmVjX2NvZGVfcmF0ZSA9IE1YTF9IWURSQV9GRUNfQVVUTztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNDc0LVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTQ4MS1cXHRzdGF0ZS1cXHUwMDNldHVuZXJfaW5fdXNlID0gc3RhdGUtXFx1MDAzZXR1bmVyO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0ODI6XFx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9ERU1PRF9TRVRfUEFSQU1fQ01ELCBNWExfQ01EX1dSSVRFLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00ODMtXFx0XFx0XFx0Y21kX3NpemUsIFxcdTAwMjZkZW1vZF9jaGFuX2NmZywgY21kX2J1ZmYpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo0ODQ6XFx0c3RhdCA9IHNlbmRfY29tbWFuZChzdGF0ZSwgY21kX3NpemUgKyBNWExfSFlEUkFfQ01EX0hFQURFUl9TSVpFLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy00ODUtXFx0XFx0XFx0ICAgIFxcdTAwMjZjbWRfYnVmZlswXSk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9NTEyPXN0YXRpYyBpbnQgcmVhZF9zbnIoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTE5LVxcdG11dGV4X2xvY2soXFx1MDAyNnN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2VzdGF0dXNfbG9jayk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjUyMDpcXHRIWURSQV9ERU1PRF9TVEFUVVNfTE9DSyhzdGF0ZSwgc3RhdGUtXFx1MDAzZWRlbW9kKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTIxOlxcdHN0YXQgPSByZWFkX3JlZ2lzdGVyKHN0YXRlLCAoSFlEUkFfRE1EX1NOUl9BRERSX09GRlNFVCArXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjUyMjpcXHRcXHRcXHRcXHQgICAgIEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVxcdTAwM2VkZW1vZCkpLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01MjMtXFx0XFx0XFx0ICAgICBcXHUwMDI2cmVnX2RhdGEpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1MjQ6XFx0SFlEUkFfREVNT0RfU1RBVFVTX1VOTE9DSyhzdGF0ZSwgc3RhdGUtXFx1MDAzZWRlbW9kKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTI1LVxcdG11dGV4X3VubG9jayhcXHUwMDI2c3RhdGUtXFx1MDAzZWJhc2UtXFx1MDAzZXN0YXR1c19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz01MzM9c3RhdGljIGludCByZWFkX2JlcihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01MzktXFx0bXV0ZXhfbG9jayhcXHUwMDI2c3RhdGUtXFx1MDAzZWJhc2UtXFx1MDAzZXN0YXR1c19sb2NrKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTQwOlxcdEhZRFJBX0RFTU9EX1NUQVRVU19MT0NLKHN0YXRlLCBzdGF0ZS1cXHUwMDNlZGVtb2QpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDEtXFx0cmVhZF9yZWdpc3Rlcl9ibG9jayhzdGF0ZSxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTQyOlxcdFxcdChIWURSQV9ETURfRFZCU18xU1RfQ09SUl9SU19FUlJPUlNfQUREUl9PRkZTRVQgK1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1NDM6XFx0XFx0IEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVxcdTAwM2VkZW1vZCkpLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDQtXFx0XFx0KDQgKiBzaXplb2YodTMyKSksXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTU0NS1cXHRcXHQodTggKikgXFx1MDAyNnJlZ1swXSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU0NjpcXHRIWURSQV9ERU1PRF9TVEFUVVNfVU5MT0NLKHN0YXRlLCBzdGF0ZS1cXHUwMDNlZGVtb2QpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NDctXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTYwLVxcdHJlYWRfcmVnaXN0ZXJfYmxvY2soc3RhdGUsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU2MTpcXHRcXHQoSFlEUkFfRE1EX0RWQlMyX0NSQ19FUlJPUlNfQUREUl9PRkZTRVQgK1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo1NjI6XFx0XFx0IEhZRFJBX0RNRF9TVEFUVVNfT0ZGU0VUKHN0YXRlLVxcdTAwM2VkZW1vZCkpLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy01NjMtXFx0XFx0KDcgKiBzaXplb2YodTMyKSksXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9NTg5PXN0YXRpYyBpbnQgcmVhZF9zaWduYWxfc3RyZW5ndGgoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUpXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNTk2LVxcdG11dGV4X2xvY2soXFx1MDAyNnN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2VzdGF0dXNfbG9jayk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjU5NzpcXHRIWURSQV9ERU1PRF9TVEFUVVNfTE9DSyhzdGF0ZSwgc3RhdGUtXFx1MDAzZWRlbW9kKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTk4OlxcdHN0YXQgPSByZWFkX3JlZ2lzdGVyKHN0YXRlLCAoSFlEUkFfRE1EX1NUQVRVU19JTlBVVF9QT1dFUl9BRERSICtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NTk5OlxcdFxcdFxcdFxcdCAgICAgSFlEUkFfRE1EX1NUQVRVU19PRkZTRVQoc3RhdGUtXFx1MDAzZWRlbW9kKSksXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTYwMC1cXHRcXHRcXHQgICAgIFxcdTAwMjZyZWdfZGF0YSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYwMTpcXHRIWURSQV9ERU1PRF9TVEFUVVNfVU5MT0NLKHN0YXRlLCBzdGF0ZS1cXHUwMDNlZGVtb2QpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02MDItXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTYxMD1zdGF0aWMgaW50IHJlYWRfc3RhdHVzKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLCBlbnVtIGZlX3N0YXR1cyAqc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTYxNi1cXHRtdXRleF9sb2NrKFxcdTAwMjZzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2MTc6XFx0SFlEUkFfREVNT0RfU1RBVFVTX0xPQ0soc3RhdGUsIHN0YXRlLVxcdTAwM2VkZW1vZCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYxODpcXHRyZWFkX3JlZ2lzdGVyKHN0YXRlLCAoSFlEUkFfRE1EX0xPQ0tfU1RBVFVTX0FERFJfT0ZGU0VUICtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NjE5OlxcdFxcdFxcdCAgICAgSFlEUkFfRE1EX1NUQVRVU19PRkZTRVQoc3RhdGUtXFx1MDAzZWRlbW9kKSksXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTYyMC1cXHRcXHRcXHQgICAgIFxcdTAwMjZyZWdfZGF0YSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjYyMTpcXHRIWURSQV9ERU1PRF9TVEFUVVNfVU5MT0NLKHN0YXRlLCBzdGF0ZS1cXHUwMDNlZGVtb2QpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02MjItXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTY0OD1zdGF0aWMgaW50IHR1bmUoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGJvb2wgcmVfdHVuZSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02NjUtXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY2NjpzdGF0aWMgZW51bSBmZV9jb2RlX3JhdGUgY29udl9mZWMoZW51bSBNWExfSFlEUkFfRkVDX0UgZmVjKVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy02Njcte1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY3My1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6Njc0OlxcdGlmIChmZWMgXFx1MDAzZSBNWExfSFlEUkFfRkVDXzlfMTApXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY3NS1cXHRcXHRyZXR1cm4gRkVDX05PTkU7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9Njc5PXN0YXRpYyBpbnQgZ2V0X2Zyb250ZW5kKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlLFxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY4Ni1cXHRtdXRleF9sb2NrKFxcdTAwMjZzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2ODc6XFx0SFlEUkFfREVNT0RfU1RBVFVTX0xPQ0soc3RhdGUsIHN0YXRlLVxcdTAwM2VkZW1vZCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY4OC1cXHRyZWFkX3JlZ2lzdGVyX2Jsb2NrKHN0YXRlLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2ODk6XFx0XFx0KEhZRFJBX0RNRF9TVEFOREFSRF9BRERSX09GRlNFVCArXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY5MDpcXHRcXHRIWURSQV9ETURfU1RBVFVTX09GRlNFVChzdGF0ZS1cXHUwMDNlZGVtb2QpKSxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjkxLVxcdFxcdChNWExfREVNT0RfQ0hBTl9QQVJBTVNfQlVGRl9TSVpFICogNCksIC8qIDI1ICogNCBieXRlcyAqL1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY5NC1cXHRyZWFkX3JlZ2lzdGVyX2Jsb2NrKHN0YXRlLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2OTU6XFx0XFx0KEhZRFJBX0RNRF9TVEFUVVNfQ0VOVEVSX0ZSRVFfSU5fS0haX0FERFIgK1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo2OTY6XFx0XFx0SFlEUkFfRE1EX1NUQVRVU19PRkZTRVQoc3RhdGUtXFx1MDAzZWRlbW9kKSksXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTY5Ny1cXHRcXHQoNCksIC8qIDQgYnl0ZXMgKi9cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNjk4LVxcdFxcdCh1OCAqKSBcXHUwMDI2ZnJlcSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjY5OTpcXHRIWURSQV9ERU1PRF9TVEFUVVNfVU5MT0NLKHN0YXRlLCBzdGF0ZS1cXHUwMDNlZGVtb2QpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MDAtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc3RhdHVzX2xvY2spO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcwOC1cXHQgKiBwLVxcdTAwM2VkZWxpdmVyeV9zeXN0ZW0gPVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MDk6XFx0ICpcXHQoTVhMX0hZRFJBX0JDQVNUX1NURF9FKSByZWdEYXRhW0RNRF9TVEFOREFSRF9BRERSXTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzEwLVxcdCAqIHAtXFx1MDAzZWludmVyc2lvbiA9XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjcxMTpcXHQgKlxcdChNWExfSFlEUkFfU1BFQ1RSVU1fRSkgcmVnRGF0YVtETURfU1BFQ1RSVU1fSU5WRVJTSU9OX0FERFJdO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MTItXFx0ICogZnJlcVNlYXJjaFJhbmdlS0h6ID1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MjAtXFx0Y2FzZSBTWVNfRFZCUzI6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjcyMTpcXHRcXHRzd2l0Y2ggKChlbnVtIE1YTF9IWURSQV9QSUxPVFNfRSlcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzIyLVxcdFxcdFxcdHJlZ19kYXRhW0RNRF9EVkJTMl9QSUxPVF9PTl9PRkZfQUREUl0pIHtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzIzOlxcdFxcdGNhc2UgTVhMX0hZRFJBX1BJTE9UU19PRkY6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTcyNC1cXHRcXHRcXHRwLVxcdTAwM2VwaWxvdCA9IFBJTE9UX09GRjtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzI1LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MjY6XFx0XFx0Y2FzZSBNWExfSFlEUkFfUElMT1RTX09OOlxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MjctXFx0XFx0XFx0cC1cXHUwMDNlcGlsb3QgPSBQSUxPVF9PTjtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03MzMtXFx0Y2FzZSBTWVNfRFZCUzpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzM0OlxcdFxcdHN3aXRjaCAoKGVudW0gTVhMX0hZRFJBX01PRFVMQVRJT05fRSlcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzM1LVxcdFxcdFxcdHJlZ19kYXRhW0RNRF9NT0RVTEFUSU9OX1NDSEVNRV9BRERSXSkge1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3MzY6XFx0XFx0Y2FzZSBNWExfSFlEUkFfTU9EX1FQU0s6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTczNy1cXHRcXHRcXHRwLVxcdTAwM2Vtb2R1bGF0aW9uID0gUVBTSztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzM4LVxcdFxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3Mzk6XFx0XFx0Y2FzZSBNWExfSFlEUkFfTU9EXzhQU0s6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc0MC1cXHRcXHRcXHRwLVxcdTAwM2Vtb2R1bGF0aW9uID0gUFNLXzg7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzQ0LVxcdFxcdH1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzQ1OlxcdFxcdHN3aXRjaCAoKGVudW0gTVhMX0hZRFJBX1JPTExPRkZfRSlcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzQ2LVxcdFxcdFxcdHJlZ19kYXRhW0RNRF9TUEVDVFJVTV9ST0xMX09GRl9BRERSXSkge1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo3NDc6XFx0XFx0Y2FzZSBNWExfSFlEUkFfUk9MTE9GRl8wXzIwOlxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03NDgtXFx0XFx0XFx0cC1cXHUwMDNlcm9sbG9mZiA9IFJPTExPRkZfMjA7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc0OS1cXHRcXHRcXHRicmVhaztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6NzUwOlxcdFxcdGNhc2UgTVhMX0hZRFJBX1JPTExPRkZfMF8zNTpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtNzUxLVxcdFxcdFxcdHAtXFx1MDAzZXJvbGxvZmYgPSBST0xMT0ZGXzM1O1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy03NTItXFx0XFx0XFx0YnJlYWs7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjc1MzpcXHRcXHRjYXNlIE1YTF9IWURSQV9ST0xMT0ZGXzBfMjU6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTc1NC1cXHRcXHRcXHRwLVxcdTAwM2Vyb2xsb2ZmID0gUk9MTE9GRl8yNTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYz04MDc9c3RhdGljIHZvaWQgY2ZnX2Rldl94dGFsKHN0cnVjdCBteGwgKnN0YXRlLCB1MzIgZnJlcSwgdTMyIGNhcCwgdTMyIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy04MTItXFx0aWYgKGZyZXEgPT0gMjQwMDAwMDApXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjgxMzpcXHRcXHR3cml0ZV9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfQ1JZU1RBTF9TRVRUSU5HLCAwKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtODE0LVxcdGVsc2VcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6ODE1OlxcdFxcdHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9DUllTVEFMX1NFVFRJTkcsIDEpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy04MTYtXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjgxNzpcXHR3cml0ZV9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfQ1JZU1RBTF9DQVAsIGNhcCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTgxOC19XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9ODQxPXN0YXRpYyBpbnQgd3JpdGVfZndfc2VnbWVudChzdHJ1Y3QgbXhsICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy04NDgtXFx0dTggKndfYnVmX3B0ciA9IE5VTEw7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg0OTpcXHR1MzIgYmxvY2tfc2l6ZSA9ICgoTVhMX0hZRFJBX09FTV9NQVhfQkxPQ0tfV1JJVEVfTEVOR1RIIC1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6ODUwOlxcdFxcdFxcdCAoTVhMX0hZRFJBX0kyQ19IRFJfU0laRSArXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg1MTpcXHRcXHRcXHQgIE1YTF9IWURSQV9SRUdfU0laRV9JTl9CWVRFUykpIC8gNCkgKiA0O1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo4NTI6XFx0dTggd19tc2dfYnVmZmVyW01YTF9IWURSQV9PRU1fTUFYX0JMT0NLX1dSSVRFX0xFTkdUSCAtXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjg1MzpcXHRcXHQgICAgICAoTVhMX0hZRFJBX0kyQ19IRFJfU0laRSArIE1YTF9IWURSQV9SRUdfU0laRV9JTl9CWVRFUyldO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy04NTQtXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9ODc2PXN0YXRpYyBpbnQgZG9fZmlybXdhcmVfZG93bmxvYWQoc3RydWN0IG14bCAqc3RhdGUsIHU4ICptYmluX2J1ZmZlcl9wdHIsXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTA3LVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5MDg6XFx0XFx0aWYgKHN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2V0eXBlID09IE1YTF9IWURSQV9ERVZJQ0VfNTY4KSB7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTkwOS1cXHRcXHRcXHRpZiAoKCgoc2VnX2FkZHJlc3MgXFx1MDAyNiAweDkwNzYwMDAwKSA9PSAweDkwNzYwMDAwKSB8fFxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTk1Nz1zdGF0aWMgaW50IGZpcm13YXJlX2Rvd25sb2FkKHN0cnVjdCBteGwgKnN0YXRlLCB1OCAqbWJpbiwgdTMyIG1iaW5fbGVuKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk2MC1cXHR1MzIgcmVnX2RhdGEgPSAwO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5NjE6XFx0c3RydWN0IE1YTF9IWURSQV9TS1VfQ09NTUFORF9UIGRldl9za3VfY2ZnO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5NjI6XFx0dTggY21kX3NpemUgPSBzaXplb2Yoc3RydWN0IE1YTF9IWURSQV9TS1VfQ09NTUFORF9UKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTYzOlxcdHU4IGNtZF9idWZmW3NpemVvZihzdHJ1Y3QgTVhMX0hZRFJBX1NLVV9DT01NQU5EX1QpICsgNl07XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk2NC1cXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05NzQtXFx0LyogUmVzZXQgVFggRklGTydzLCBCQkFORCwgWEJBUiAqL1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5NzU6XFx0c3RhdHVzID0gd3JpdGVfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX1JFU0VUX1RSQU5TUE9SVF9GSUZPX1JFRyxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTc2OlxcdFxcdFxcdFxcdEhZRFJBX1JFU0VUX1RSQU5TUE9SVF9GSUZPX0RBVEEpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05NzctXFx0aWYgKHN0YXR1cylcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtOTc4LVxcdFxcdHJldHVybiBzdGF0dXM7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjk3OTpcXHRzdGF0dXMgPSB3cml0ZV9yZWdpc3RlcihzdGF0ZSwgSFlEUkFfUkVTRVRfQkJBTkRfUkVHLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzo5ODA6XFx0XFx0XFx0XFx0SFlEUkFfUkVTRVRfQkJBTkRfREFUQSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk4MS1cXHRpZiAoc3RhdHVzKVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05ODItXFx0XFx0cmV0dXJuIHN0YXR1cztcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTgzOlxcdHN0YXR1cyA9IHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9SRVNFVF9YQkFSX1JFRyxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTg0OlxcdFxcdFxcdFxcdEhZRFJBX1JFU0VUX1hCQVJfREFUQSk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk4NS1cXHRpZiAoc3RhdHVzKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTk5MC1cXHQgKi9cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTkxOlxcdHN0YXR1cyA9IHdyaXRlX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9NT0RVTEVTX0NMS18yX1JFRyxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTkyOlxcdFxcdFxcdFxcdEhZRFJBX0RJU0FCTEVfQ0xLXzIpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05OTMtXFx0aWYgKHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05OTUtXFx0LyogQ2xlYXIgU29mdHdhcmUgXFx1MDAyNiBIb3N0IGludGVycnVwdCBzdGF0dXMgLSAoQ2xlYXIgb24gcmVhZCkgKi9cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6OTk2OlxcdHN0YXR1cyA9IHJlYWRfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX1BSQ01fUk9PVF9DTEtfUkVHLCBcXHUwMDI2cmVnX2RhdGEpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy05OTctXFx0aWYgKHN0YXR1cylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDAyLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDAzOlxcdGlmIChzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU2OCkge1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDA0LVxcdFxcdHVzbGVlcF9yYW5nZSgxMDAwMCwgMTEwMDApO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNDAtXFx0ZGV2X3NrdV9jZmcuc2t1X3R5cGUgPSBzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNlc2t1X3R5cGU7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNDE6XFx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9ERVZfQ0ZHX1NLVV9DTUQsIE1YTF9DTURfV1JJVEUsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNDItXFx0XFx0XFx0Y21kX3NpemUsIFxcdTAwMjZkZXZfc2t1X2NmZywgY21kX2J1ZmYpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDQzOlxcdHN0YXR1cyA9IHNlbmRfY29tbWFuZChzdGF0ZSwgY21kX3NpemUgKyBNWExfSFlEUkFfQ01EX0hFQURFUl9TSVpFLFxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDQ0LVxcdFxcdFxcdCAgICAgIFxcdTAwMjZjbWRfYnVmZlswXSk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MTA0OT1zdGF0aWMgaW50IGNmZ190c19wYWRfbXV4KHN0cnVjdCBteGwgKnN0YXRlLCBlbnVtIE1YTF9CT09MX0UgZW5hYmxlX3NlcmlhbF90cylcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDU1LVxcdFxcdHBhZF9tdXhfdmFsdWUgPSAwO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDU2OlxcdFxcdGlmICgoc3RhdGUtXFx1MDAzZWJhc2UtXFx1MDAzZXR5cGUgPT0gTVhMX0hZRFJBX0RFVklDRV81NDEpIHx8XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNTc6XFx0XFx0ICAgIChzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU0MVMpKVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDU4LVxcdFxcdFxcdHBhZF9tdXhfdmFsdWUgPSAyO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMDU5LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNjA6XFx0XFx0aWYgKChzdGF0ZS1cXHUwMDNlYmFzZS1cXHUwMDNldHlwZSA9PSBNWExfSFlEUkFfREVWSUNFXzU4MSkgfHxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTA2MTpcXHRcXHQgICAgKHN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2V0eXBlID09IE1YTF9IWURSQV9ERVZJQ0VfNTgxUykpXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNjItXFx0XFx0XFx0cGFkX211eF92YWx1ZSA9IDI7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTA2Ny1cXHRzd2l0Y2ggKHN0YXRlLVxcdTAwM2ViYXNlLVxcdTAwM2V0eXBlKSB7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNjg6XFx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU2MTpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTA2OTpcXHRjYXNlIE1YTF9IWURSQV9ERVZJQ0VfNTgxOlxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMDcwOlxcdGNhc2UgTVhMX0hZRFJBX0RFVklDRV81NDE6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNzE6XFx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU0MVM6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNzI6XFx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU2MVM6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEwNzM6XFx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU4MVM6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEwNzQtXFx0XFx0c3RhdHVzIHw9IHVwZGF0ZV9ieV9tbmVtb25pYyhzdGF0ZSwgMHg5MDAwMDE3MCwgMjQsIDMsXFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTEwMS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTEwMjpcXHRjYXNlIE1YTF9IWURSQV9ERVZJQ0VfNTQ0OlxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMTAzOlxcdGNhc2UgTVhMX0hZRFJBX0RFVklDRV81NDI6XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTExMDQtXFx0XFx0c3RhdHVzIHw9IHVwZGF0ZV9ieV9tbmVtb25pYyhzdGF0ZSwgMHg5MDAwMDE2QywgNCwgMywgMSk7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTE5MS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTE5MjpcXHRjYXNlIE1YTF9IWURSQV9ERVZJQ0VfNTY4OlxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMTkzLVxcdFxcdGlmIChlbmFibGVfc2VyaWFsX3RzID09IE1YTF9GQUxTRSkge1xcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEyODQtXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEyODU6XFx0Y2FzZSBNWExfSFlEUkFfREVWSUNFXzU4NDpcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTI4Ni1cXHRkZWZhdWx0Olxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jPTEzMTQ9c3RhdGljIGludCBzZXRfZHJpdmVfc3RyZW5ndGgoc3RydWN0IG14bCAqc3RhdGUsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEzMTU6XFx0XFx0ZW51bSBNWExfSFlEUkFfVFNfRFJJVkVfU1RSRU5HVEhfRSB0c19kcml2ZV9zdHJlbmd0aClcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTMxNi17XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM9MTM0Nj1zdGF0aWMgaW50IGVuYWJsZV90dW5lcihzdHJ1Y3QgbXhsICpzdGF0ZSwgdTMyIHR1bmVyLCB1MzIgZW5hYmxlKVxcbi0tXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNDgtXFx0aW50IHN0YXQgPSAwO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzQ5OlxcdHN0cnVjdCBNWExfSFlEUkFfVFVORVJfQ01EIGN0cmxfdHVuZXJfY21kO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMzUwLVxcdHU4IGNtZF9zaXplID0gc2l6ZW9mKGN0cmxfdHVuZXJfY21kKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM1MTpcXHR1OCBjbWRfYnVmZltNWExfSFlEUkFfT0VNX01BWF9DTURfQlVGRl9MRU5dO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMzUyLVxcdHUzMiB2YWwsIGNvdW50ID0gMTA7XFxuLS1cXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTM1NS1cXHRjdHJsX3R1bmVyX2NtZC5lbmFibGUgPSBlbmFibGU7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jOjEzNTY6XFx0QlVJTERfSFlEUkFfQ01EKE1YTF9IWURSQV9UVU5FUl9BQ1RJVkFURV9DTUQsIE1YTF9DTURfV1JJVEUsXFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNTctXFx0XFx0XFx0Y21kX3NpemUsIFxcdTAwMjZjdHJsX3R1bmVyX2NtZCwgY21kX2J1ZmYpO1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzU4OlxcdHN0YXQgPSBzZW5kX2NvbW1hbmQoc3RhdGUsIGNtZF9zaXplICsgTVhMX0hZRFJBX0NNRF9IRUFERVJfU0laRSxcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmMtMTM1OS1cXHRcXHRcXHQgICAgXFx1MDAyNmNtZF9idWZmWzBdKTtcXG4tLVxcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYy0xMzYxLVxcdFxcdHJldHVybiBzdGF0O1xcbmRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9teGw1eHguYzoxMzYyOlxcdHJlYWRfcmVnaXN0ZXIoc3RhdGUsIEhZRFJBX1RVTkVSX0VOQUJMRV9DT01QTEVURSwgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNjMtXFx0d2hpbGUgKC0tY291bnQgXFx1MDAyNlxcdTAwMjYgKCh2YWwgXFx1MDAzZVxcdTAwM2UgdHVuZXIpIFxcdTAwMjYgMSkgIT0gZW5hYmxlKSB7XFxuZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL214bDV4eC5jLTEzNjQtXFx0XFx0bXNsZWVwKDIwKTtcXG5kcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvbXhsNXh4LmM6MTM2NTpcXHRcXHRyZWFkX3JlZ2lzdGVyKHN0YXRlLCBIWURSQV9UVU5FUl9FTkFCTEVfQ09NUExFVEUsIFxcdTAwMjZ2YWwpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjoxNi40MjI2NTU2MTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjA1MjY1OTE5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBaT1JSTzgzOTAgU3VwcG9ydCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL0tjb25maWdgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGBaT1JSTzgzOTBgIEV0aGVybmV0IGRyaXZlci4gSSdtIGFzc3VtaW5nIGl0J3MgbGlrZWx5IGRlZmluZWQgdGhlcmUsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBhbmQgdW5kZXJzdGFuZCBob3cgaXQncyBjb250cm9sbGVkLiBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcz8gQ29uZGl0aW9uYWwgY29tcGlsYXRpb24/IEFueSBzcGVjaWZpYyBDT05GSUcgb3B0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZiB3aGVuIGNvbnNpZGVyaW5nIHRoaXMgZnVuY3Rpb25hbGl0eT8gVW5kZXJzdGFuZGluZyB0aGUgS2NvbmZpZyBmaWxlIGlzIHRoZSBmaXJzdCwgZXNzZW50aWFsIHN0ZXAgdG8gZ3Jhc3BpbmcgaG93IHRoaXMgZHJpdmVyIGlzIGludGVncmF0ZWQgYW5kIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCBpdHMgYnVpbGQgY2hhcmFjdGVyaXN0aWNzLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTA5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MTguNDc1MzE4NzAyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDI1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFx0ICBTdXBwb3J0IGZvciBjYXJkcyBiYXNlZCBvbiB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBEUDgzOTAyQVZcXG4gMTUxOlxcdFxcdCAgU1QtTklDIFNlcmlhbCBOZXR3b3JrIEludGVyZmFjZSBDb250cm9sbGVyIGZvciBUd2lzdGVkIFBhaXIuICBUaGlzXFxuIDE1MjpcXHRcXHQgIGlzIGEgMTBNYml0L3NlYyBFdGhlcm5ldCBjb250cm9sbGVyLiAgUHJvZHVjdCBvdmVydmlldyBhbmQgc3BlY3MgYXRcXG4gMTUzOlxcdFxcdCAgXFx1MDAzY2h0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0RQL0RQODM5MDJBLmh0bWxcXHUwMDNlLlxcbiAxNTQ6XFx0XFxuIDE1NTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDE1NjpcXHRcXG4gMTU3OlxcdGNvbmZpZyBaT1JSTzgzOTBcXG4gMTU4OlxcdFxcdHRyaXN0YXRlIFxcXCJab3JybyBOUzgzOTAtYmFzZWQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gMTU5OlxcdFxcdGRlcGVuZHMgb24gWk9SUk9cXG4gMTYwOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxNjE6XFx0XFx0aGVscFxcbiAxNjI6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBmb3IgWm9ycm8gRXRoZXJuZXQgY2FyZHMgdXNpbmcgYW4gTlM4MzkwLWNvbXBhdGlibGVcXG4gMTYzOlxcdFxcdCAgY2hpcHNldCwgbGlrZSB0aGUgVmlsbGFnZSBUcm9uaWMgQXJpYWRuZSBJSSBhbmQgdGhlIEluZGl2aWR1YWxcXG4gMTY0OlxcdFxcdCAgQ29tcHV0ZXJzIFgtU3VyZiBFdGhlcm5ldCBjYXJkcy4gSWYgeW91IGhhdmUgc3VjaCBhIGNhcmQsIHNheSBZLlxcbiAxNjU6XFx0XFx0ICBPdGhlcndpc2UsIHNheSBOLlxcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTY4OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgem9ycm84MzkwLlxcbiAxNjk6XFx0XFxuIDE3MDpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfODM5MFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjoxOC40NzU0MTMwMjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzM5ODkyMjkyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2NvbmZpZyBEaXZlOiBBTUQgRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBcIldoZXJlIGRvIEkgbmVlZCB0byBzdGFydCBkaWdnaW5nIGludG8gdGhpcyBBTUQgRXRoZXJuZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24/XCIgTmF0dXJhbGx5LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgYEtjb25maWdgIGZpbGUuIFRoYXQncyB0aGUgY29yZSBvZiBob3cgdGhlIGJ1aWxkIHN5c3RlbSB1bmRlcnN0YW5kcyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIGFuZCBjb25maWd1cmFibGUgZm9yIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWdgIOKAkyB0aGF0J3MgdGhlIGJyZWFkY3J1bWIgdHJhaWwgSSdtIGZvbGxvd2luZy4gSSdtIGFzc3VtaW5nIHRoYXQgYnkgZXhhbWluaW5nIHRoaXMgZmlsZSwgSSBjYW4gYnVpbGQgYW4gdW5kZXJzdGFuZGluZyBvZiB0aGUgYXZhaWxhYmxlIG9wdGlvbnMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBzdWJzeXN0ZW1zLCBhbmQgYW55IHBsYXRmb3JtLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgQU1EIEV0aGVybmV0IGNvbnRyb2xsZXIgc3VwcG9ydC4gSSdtIGFudGljaXBhdGluZyBmaW5kaW5nIHRoZSB1c3VhbCBzdXNwZWN0cyDigJMgZGV2aWNlIHN1cHBvcnQsIGZlYXR1cmUgZmxhZ3MgKGxpa2UganVtYm8gZnJhbWVzLCBjaGVja3N1bSBvZmZsb2FkLCBWTEFOKSwgYW5kIHByb2JhYmx5IHNvbWUgbW9kdWxlL2J1aWx0LWluIGNob2ljZXMuIFRoaXMgc2hvdWxkIGJlIGEgZmFpcmx5IHN0YW5kYXJkIHN0YXJ0aW5nIHBvaW50IGZvciBhbnlvbmUgaW52ZXN0aWdhdGluZyBhIHBhcnRpY3VsYXIgZHJpdmVyJ3MgY29uZmlndXJhYmxlIGFzcGVjdHMgd2l0aGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzIwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjoyMS44NzQzMzgwMDRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgxOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0XFxuICAyMTpcXHRpZiBORVRfVkVORE9SX0FNRFxcbiAgMjI6XFx0XFxuICAyMzpcXHRjb25maWcgQTIwNjVcXG4gIDI0OlxcdFxcdHRyaXN0YXRlIFxcXCJBMjA2NSBzdXBwb3J0XFxcIlxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiBaT1JST1xcbiAgMjY6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIElmIHlvdSBoYXZlIGEgQ29tbW9kb3JlIEEyMDY1IEV0aGVybmV0IGFkYXB0ZXIsIHNheSBZLiBPdGhlcndpc2UsXFxuICAyOTpcXHRcXHQgIHNheSBOLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDMyOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgYTIwNjUuXFxuICAzMzpcXHRcXG4gIDM0OlxcdGNvbmZpZyBBTUQ4MTExX0VUSFxcbiAgMzU6XFx0XFx0dHJpc3RhdGUgXFxcIkFNRCA4MTExIChuZXcgUENJIExBTkNFKSBzdXBwb3J0XFxcIlxcbiAgMzY6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDM3OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMzg6XFx0XFx0c2VsZWN0IE1JSVxcbiAgMzk6XFx0XFx0aGVscFxcbiAgNDA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhbiBBTUQgODExMS1iYXNlZCBQQ0kgTEFOQ0UgZXRoZXJuZXQgY2FyZCxcXG4gIDQxOlxcdFxcdCAgYW5zd2VyIFkgaGVyZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICA0NDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGFtZDgxMTFlLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRjb25maWcgUENORVQzMlxcbiAgNDc6XFx0XFx0dHJpc3RhdGUgXFxcIkFNRCBQQ25ldDMyIFBDSSBzdXBwb3J0XFxcIlxcbiAgNDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbiAgNDk6XFx0XFx0c2VsZWN0IENSQzMyXFxuICA1MDpcXHRcXHRzZWxlY3QgTUlJXFxuICA1MTpcXHRcXHRoZWxwXFxuICA1MjpcXHRcXHQgIElmIHlvdSBoYXZlIGEgUENuZXQzMiBvciBQQ25ldFBDSSBiYXNlZCBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCxcXG4gIDUzOlxcdFxcdCAgYW5zd2VyIFkgaGVyZS5cXG4gIDU0OlxcdFxcbiAgNTU6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLiBUaGUgbW9kdWxlXFxuICA1NjpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHBjbmV0MzIuXFxuICA1NzpcXHRcXG4gIDU4OlxcdGNvbmZpZyBBUklBRE5FXFxuICA1OTpcXHRcXHR0cmlzdGF0ZSBcXFwiQXJpYWRuZSBzdXBwb3J0XFxcIlxcbiAgNjA6XFx0XFx0ZGVwZW5kcyBvbiBaT1JST1xcbiAgNjE6XFx0XFx0aGVscFxcbiAgNjI6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIFZpbGxhZ2UgVHJvbmljIEFyaWFkbmUgRXRoZXJuZXQgYWRhcHRlciwgc2F5IFkuXFxuICA2MzpcXHRcXHQgIE90aGVyd2lzZSwgc2F5IE4uXFxuICA2NDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MjEuODc0NDA3NDE0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4MTI3MTE4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqS2NvbmZpZyBJbnNwZWN0aW9uOiBTQ1NJIERyaXZlcnMqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGVuYWJsZWQgYW5kIGRpc2FibGVkIHJlZ2FyZGluZyB0aGUgU0NTSSBzdWJzeXN0ZW0uIGBkcml2ZXJzL3Njc2kvS2NvbmZpZ2AgaXMgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQg4oCTIGl0J3MgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciBkcml2ZXIgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIFNDU0kgYXJlYS4gSSdsbCBuZWVkIHRvIHJhcGlkbHkgcGFyc2UgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZmlsZSwgaWRlbnRpZnlpbmcgZGVwZW5kZW5jaWVzLCBkZWZhdWx0cywgYW5kIGFueSB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zLiBNeSBnb2FsIGlzIHRvIGdyYXNwIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyYWwgY2hvaWNlcyByZWdhcmRpbmcgd2hpY2ggU0NTSSBkcml2ZXJzIGFyZSBpbmNsdWRlZCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBUaGlzIHdpbGwgaGVscCBtZSBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGF2YWlsYWJsZSBvcHRpb25zIGFuZCBob3cgdGhleSdyZSBpbnRlbmRlZCB0byBiZSB1c2VkLiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBjb250YWluZWQgd2l0aGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDU2NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6MjMuNjg3MTIyNDcxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTg5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3Njc2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzAwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzAwOlxcdFxcbjEzMDE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4xMzAyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGEzMDAwLlxcbjEzMDM6XFx0XFxuMTMwNDpcXHRjb25maWcgQTIwOTFfU0NTSVxcbjEzMDU6XFx0XFx0dHJpc3RhdGUgXFxcIkEyMDkxL0E1OTAgV0QzM0M5M0Egc3VwcG9ydFxcXCJcXG4xMzA2OlxcdFxcdGRlcGVuZHMgb24gWk9SUk8gXFx1MDAyNlxcdTAwMjYgU0NTSVxcbjEzMDc6XFx0XFx0aGVscFxcbjEzMDg6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIENvbW1vZG9yZSBBMjA5MSBTQ1NJIGNvbnRyb2xsZXIsIHNheSBZLiBPdGhlcndpc2UsXFxuMTMwOTpcXHRcXHQgIHNheSBOLlxcbjEzMTA6XFx0XFxuMTMxMTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbjEzMTI6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYTIwOTEuXFxuMTMxMzpcXHRcXG4xMzE0OlxcdGNvbmZpZyBHVlAxMV9TQ1NJXFxuMTMxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiR1ZQIFNlcmllcyBJSSBXRDMzQzkzQSBzdXBwb3J0XFxcIlxcbjEzMTY6XFx0XFx0ZGVwZW5kcyBvbiBaT1JSTyBcXHUwMDI2XFx1MDAyNiBTQ1NJXFxuMTMxNzpcXHRcXHRoZWxwXFxuMTMxODpcXHRcXHQgIElmIHlvdSBoYXZlIGEgR3JlYXQgVmFsbGV5IFByb2R1Y3RzIFNlcmllcyBJSSBTQ1NJIGNvbnRyb2xsZXIsXFxuMTMxOTpcXHRcXHQgIGFuc3dlciBZLiBBbHNvIHNheSBZIGlmIHlvdSBoYXZlIGEgbGF0ZXIgbW9kZWwgb2YgR1ZQIFNDU0lcXG4xMzIwOlxcdFxcdCAgY29udHJvbGxlciAoc3VjaCBhcyB0aGUgR1ZQIEE0MDA4IG9yIGEgQ29tYm8gYm9hcmQpLiBPdGhlcndpc2UsXFxuMTMyMTpcXHRcXHQgIGFuc3dlciBOLiBUaGlzIGRyaXZlciBkb2VzIE5PVCB3b3JrIGZvciB0aGUgVC1SZXggc2VyaWVzIG9mXFxuMTMyMjpcXHRcXHQgIGFjY2VsZXJhdG9ycyBmcm9tIFRla01hZ2ljIGFuZCBHVlAtTS5cXG4xMzIzOlxcdFxcbjEzMjQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4xMzI1OlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGd2cDExLlxcbjEzMjY6XFx0XFxuMTMyNzpcXHRjb25maWcgU0NTSV9BNDAwMFRcXG4xMzI4OlxcdFxcdHRyaXN0YXRlIFxcXCJBNDAwMFQgTkNSNTNjNzEwIFNDU0kgc3VwcG9ydFxcXCJcXG4xMzI5OlxcdFxcdGRlcGVuZHMgb24gQU1JR0EgXFx1MDAyNlxcdTAwMjYgU0NTSVxcbjEzMzA6XFx0XFx0c2VsZWN0IFNDU0lfU1BJX0FUVFJTXFxuMTMzMTpcXHRcXHRoZWxwXFxuMTMzMjpcXHRcXHQgIElmIHlvdSBoYXZlIGFuIEFtaWdhIDQwMDBUIGFuZCBoYXZlIFNDU0kgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlXFxuMTMzMzpcXHRcXHQgIGJ1aWx0LWluIFNDU0kgY29udHJvbGxlciwgc2F5IFkuIE90aGVyd2lzZSwgc2F5IE4uXFxuMTMzNDpcXHRcXG4xMzM1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuMTMzNjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhNDAwMHQuXFxuMTMzNzpcXHRcXG4xMzM4OlxcdGNvbmZpZyBTQ1NJX1pPUlJPN1hYXFxuMTMzOTpcXHRcXHR0cmlzdGF0ZSBcXFwiWm9ycm8gTkNSNTNjNzEwIFNDU0kgc3VwcG9ydFxcXCJcXG4xMzQwOlxcdFxcdGRlcGVuZHMgb24gWk9SUk8gXFx1MDAyNlxcdTAwMjYgU0NTSVxcbjEzNDE6XFx0XFx0c2VsZWN0IFNDU0lfU1BJX0FUVFJTXFxuMTM0MjpcXHRcXHRoZWxwXFxuMTM0MzpcXHRcXHQgIFN1cHBvcnQgZm9yIHZhcmlvdXMgTkNSNTNjNzEwLWJhc2VkIFNDU0kgY29udHJvbGxlcnMgb24gWm9ycm9cXG4xMzQ0OlxcdFxcdCAgZXhwYW5zaW9uIGJvYXJkcyBmb3IgdGhlIEFtaWdhLlxcbjEzNDU6XFx0XFx0ICBUaGlzIGluY2x1ZGVzOlxcbjEzNDY6XFx0XFx0ICAgIC0gdGhlIEFtaWdhIDQwOTEgWm9ycm8gSUlJIFNDU0ktMiBjb250cm9sbGVyLFxcbjEzNDc6XFx0XFx0ICAgIC0gdGhlIE1hY3JvU3lzdGVtIERldmVsb3BtZW50J3MgV2FycEVuZ2luZSBBbWlnYSBTQ1NJLTIgY29udHJvbGxlclxcbjEzNDg6XFx0XFx0ICAgICAgKGluZm8gYXRcXG4xMzQ5OlxcdFxcdCAgICAgIFxcdTAwM2NodHRwOi8vd3d3Lmx5c2F0b3IubGl1LnNlL2FtaWdhL2FyL2d1aWRlL2FyMzEwLmd1aWRlP0ZFQVRVUkU1XFx1MDAzZSksXFxuMTM1MDpcXHRcXHQgICAgLSB0aGUgU0NTSSBjb250cm9sbGVyIG9uIHRoZSBQaGFzZTUgQmxpenphcmQgUG93ZXJVUCA2MDNlK1xcbjEzNTE6XFx0XFx0ICAgICAgYWNjZWxlcmF0b3IgY2FyZCBmb3IgdGhlIEFtaWdhIDEyMDAsXFxuMTM1MjpcXHRcXHQgICAgLSB0aGUgU0NTSSBjb250cm9sbGVyIG9uIHRoZSBHVlAgVHVyYm8gMDQwLzA2MCBhY2NlbGVyYXRvci5cXG4xMzUzOlxcdFxcbjEzNTQ6XFx0Y29uZmlnIFNDU0lfWk9SUk9fRVNQXFxuMTM1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiWm9ycm8gRVNQIFNDU0kgc3VwcG9ydFxcXCJcXG4xMzU2OlxcdFxcdGRlcGVuZHMgb24gWk9SUk8gXFx1MDAyNlxcdTAwMjYgU0NTSVxcbjEzNTc6XFx0XFx0c2VsZWN0IFNDU0lfU1BJX0FUVFJTXFxuMTM1ODpcXHRcXHRzZWxlY3QgU0NTSV9FU1BfUElPXFxuMTM1OTpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjIzLjY4NzIzMDI0MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzg5ODM0OTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBaT1JSTyBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiB0aGUgYFpPUlJPYCBkZXBlbmRlbmNpZXMuIEl0J3MgYSBjbGFzc2ljIEFtaWdhIGJ1cyBzeXN0ZW0sIGFuZCBJIGNhbiBzZWUgc2V2ZXJhbCBkcml2ZXJzIOKAkyBgSFlEUkFgLCBgWk9SUk84MzkwYCwgYEEyMDY1YCwgYEFSSUFETkVgLCBwbHVzIGEgZmV3IFNDU0kgY29udHJvbGxlcnMgKGBBMjA5MV9TQ1NJYCwgYEdWUDExX1NDU0lgLCBgU0NTSV9aT1JSTzdYWGAsIGBTQ1NJX1pPUlJPX0VTUGApIOKAkyBhbGwgdGllZCB0byBpdC4gVGhlIFNDU0kgb25lcyBoYXZlIHRoYXQgZXh0cmEgYFNDU0lgIGRlcGVuZGVuY3ksIHdoaWNoIGlzIGV4cGVjdGVkLiBObyBzdXJwcmlzZXMgc28gZmFyLlxuXG5Ob3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzaXR1YXRpb24gd2l0aCBgWk9SUk9gIGl0c2VsZi4gSXMgaXQgZGVmaW5lZD8gSXMgaXQgZW5hYmxlZCBvbiB4ODZfNjQ/IEkndmUgZ290IHRvIHRyYWNlIGl0IGJhY2suIEkndmUgYWxyZWFkeSBkb25lIGEgcXVpY2sgc2VhcmNoIGZvciBgY29uZmlnIFpPUlJPYCBpbiB0aGUga2VybmVsIHRyZWUsIGFuZCB0aGF0IHR1cm5lZCB1cCBzb21lIHJlbGV2YW50IGZpbGVzOiBgYXJjaC9tNjhrL0tjb25maWcuYnVzYCAod2hlcmUgaXQncyBkZWZpbmVkKSwgYGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvS2NvbmZpZ2AgKGZvciBgWk9SUk84MzkwYCksIGFuZCBgZHJpdmVycy96b3Jyby9LY29uZmlnYC5cblxuTXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiBgWk9SUk9gIGlzIHNvbWVob3cgZGVwZW5kZW50IG9uIGBBTUlHQWAsIHdoaWNoIHdvdWxkIG1ha2Ugc2Vuc2UgZ2l2ZW4gdGhlIGJ1cyBhcmNoaXRlY3R1cmUsIGFuZCB0aGF0IGBhcmNoL202OGsvS2NvbmZpZy5idXNgIGFzc29jaWF0aW9uLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMgaW4gdGhlIGBtNjhrYCBhcmNoaXRlY3R1cmUgb3Igb3RoZXIgcGxhY2VzIGluIHRoZSB0cmVlIHRvIGRldGVybWluZSBob3cgYFpPUlJPYCBpdHNlbGYgaXMgZGVmaW5lZCBhbmQgd2hhdCBpdCdzIGRlcGVuZGVudCBvbi4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTc4MSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjI3LjA3NzA2NzgzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEzMTgzNzI2NiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFpPUlJPXFxcXGJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjI5LjIwODkxMjIzMVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDk1MTkxODQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50IGRvd246XG5cbioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBaT1JSTyBEZWZhdWx0KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byBzb21ldGhpbmcgdGhhdCAqbWlnaHQqIGJlIHJlbGF0ZWQgdG8gWk9SUk8gYW5kIGEgZGVmYXVsdC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gbGV2ZXJhZ2UgYGdyZXBwZXJgLiBJdCdzIG15IGdvLXRvIGZvciBxdWlja2x5IHNlYXJjaGluZyBjb2RlYmFzZXMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGVzcGVjaWFsbHkgd2hlbiBJJ20gZGVhbGluZyB3aXRoIHBhdHRlcm5zIG9yIGtleXdvcmRzIEkgc3VzcGVjdCBtaWdodCBiZSB1c2VkLiBJIGZpZ3VyZSwgc2luY2UgSSdtIHRyeWluZyB0byBzZWUgaWYgdGhlcmUncyBhIGRlZmF1bHQgcmVsYXRlZCB0byBaT1JSTywgSSBuZWVkIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBzZWFyY2guIEknbGwgc2VhcmNoIHdpdGggYGRlZmF1bHQuKlpPUlJPYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZSB2YXJpYXRpb25zIHRoYXQgbWlnaHQgY2F0Y2ggZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9ucyBvciBhYmJyZXZpYXRpb25zIHVzZWQgaW4gdGhlIGNvZGUuIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgY29uZmlndXJhdGlvbiBvciBjb2RlIHNlY3Rpb25zIHdoZXJlIFpPUlJPIGlzIG1lbnRpb25lZCBpbiBjb25qdW5jdGlvbiB3aXRoIGEgZGVmYXVsdCBzZXR0aW5nLiBJdCdzIGEgcXVpY2sgd2F5IHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHRoZSBzeXN0ZW0gZG9lcyB3aXRoIFpPUlJPIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nIG9yIGlzbid0IHNwZWNpZmllZC4gVGhpcyBmZWVscyBsaWtlIHRoZSByaWdodCBmaXJzdCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjU1MSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjMxLjMwNDEyNTcxM1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU3NTIzMTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlpPUlJPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbTY4ay9LY29uZmlnLmJ1cz0xNT1jb25maWcgTlVCVVNcXG4tLVxcbmFyY2gvbTY4ay9LY29uZmlnLmJ1cy0xOS1cXG5hcmNoL202OGsvS2NvbmZpZy5idXM6MjA6Y29uZmlnIFpPUlJPXFxuYXJjaC9tNjhrL0tjb25maWcuYnVzLTIxLVxcdGJvb2wgXFxcIkFtaWdhIFpvcnJvIChBdXRvQ29uZmlnKSBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYz0xNDE9aW50IF9faW5pdCBhbWlnYV9wYXJzZV9ib290aW5mbyhjb25zdCBzdHJ1Y3QgYmlfcmVjb3JkICpyZWNvcmQpXFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMTcxLVxcdGNhc2UgQklfQU1JR0FfQVVUT0NPTjpcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6MTcyOiNpZmRlZiBDT05GSUdfWk9SUk9cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6MTczOlxcdFxcdGlmICh6b3Jyb19udW1fYXV0b2NvbiBcXHUwMDNjIFpPUlJPX05VTV9BVVRPKSB7XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTE3NC1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgQ29uZmlnRGV2ICpjZCA9IGRhdGE7XFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMTgyLVxcdFxcdFxcdC8qIENTLUxBQiBXYXJwIDEyNjAgd29ya2Fyb3VuZCAqL1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoxODM6XFx0XFx0XFx0aWYgKGJlMTZfdG9fY3B1KGRldi1cXHUwMDNlcm9tLmVyX01hbnVmYWN0dXJlcikgPT0gWk9SUk9fTUFOVUYoWk9SUk9fUFJPRF9DU0xBQl9XQVJQXzEyNjApIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjE4NDpcXHRcXHRcXHQgICAgZGV2LVxcdTAwM2Vyb20uZXJfUHJvZHVjdCA9PSBaT1JST19QUk9EKFpPUlJPX1BST0RfQ1NMQUJfV0FSUF8xMjYwKSkge1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0xODUtXFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMTkxLVxcdFxcdFxcdHByX3dhcm4oXFxcImFtaWdhX3BhcnNlX2Jvb3RpbmZvOiB0b28gbWFueSBBdXRvQ29uZmlnIGRldmljZXNcXFxcblxcXCIpO1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoxOTI6I2VuZGlmIC8qIENPTkZJR19aT1JSTyAqL1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0xOTMtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM9MjA5PXN0YXRpYyB2b2lkIF9faW5pdCBhbWlnYV9pZGVudGlmeSh2b2lkKVxcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTI0Ny1cXHRcXHRBTUlHQUhXX1NFVChBMzAwMF9DTEspO1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoyNDg6XFx0XFx0QU1JR0FIV19TRVQoWk9SUk8zKTtcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMjQ5LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTI1Ni1cXHRcXHRBTUlHQUhXX1NFVChBMzAwMF9DTEspO1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzoyNTc6XFx0XFx0QU1JR0FIV19TRVQoWk9SUk8zKTtcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtMjU4LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTMyNC1cXHR9XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjMyNTpcXHRBTUlHQUhXX1NFVChaT1JSTyk7XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTMyNi1cXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy0zNTktXFx0QU1JR0FIV19BTk5PVU5DRShQQ01DSUEsIFxcXCJQQ01DSUEgXFxcIik7XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jOjM2MDpcXHRpZiAoQU1JR0FIV19QUkVTRU5UKFpPUlJPKSlcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6MzYxOlxcdFxcdHByX2NvbnQoXFxcIlpPUlJPJXMgXFxcIiwgQU1JR0FIV19QUkVTRU5UKFpPUlJPMykgPyBcXFwiM1xcXCIgOiBcXFwiXFxcIik7XFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTM2Mi1cXHRwcl9jb250KFxcXCJcXFxcblxcXCIpO1xcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jPTM3OT12b2lkIF9faW5pdCBjb25maWdfYW1pZ2Eodm9pZClcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy00MTMtXFx0LyogZG9uJ3QgdXNlIFoyIFJBTSBhcyBzeXN0ZW0gbWVtb3J5IG9uIFozIGNhcGFibGUgbWFjaGluZXMgKi9cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6NDE0OlxcdGlmIChBTUlHQUhXX1BSRVNFTlQoWk9SUk8zKSkge1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy00MTUtXFx0XFx0aW50IGksIGo7XFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM9NzgwPXN0YXRpYyB2b2lkIGFtaWdhX2dldF9oYXJkd2FyZV9saXN0KHN0cnVjdCBzZXFfZmlsZSAqbSlcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy04MzgtXFx0QU1JR0FIV19BTk5PVU5DRShQQ01DSUEsIFxcXCJQQ01DSUEgU2xvdFxcXCIpO1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzo4Mzk6I2lmZGVmIENPTkZJR19aT1JST1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzo4NDA6XFx0aWYgKEFNSUdBSFdfUFJFU0VOVChaT1JSTykpXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTg0MS1cXHRcXHRzZXFfcHJpbnRmKG0sIFxcXCJcXFxcdFpvcnJvIElJJXMgQXV0b0NvbmZpZzogJWQgRXhwYW5zaW9uIFxcXCJcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmMtODQyLVxcdFxcdFxcdFxcdFxcXCJEZXZpY2Ulc1xcXFxuXFxcIixcXG5hcmNoL202OGsvYW1pZ2EvY29uZmlnLmM6ODQzOlxcdFxcdFxcdFxcdEFNSUdBSFdfUFJFU0VOVChaT1JSTzMpID8gXFxcIklcXFwiIDogXFxcIlxcXCIsXFxuYXJjaC9tNjhrL2FtaWdhL2NvbmZpZy5jLTg0NC1cXHRcXHRcXHRcXHR6b3Jyb19udW1fYXV0b2Nvbiwgc3RyX3BsdXJhbCh6b3Jyb19udW1fYXV0b2NvbikpO1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYzo4NDU6I2VuZGlmIC8qIENPTkZJR19aT1JSTyAqL1xcbmFyY2gvbTY4ay9hbWlnYS9jb25maWcuYy04NDYtXFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy0xOC1cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYzoxOTojaWZkZWYgQ09ORklHX1pPUlJPXFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtMjAtXFxuLS1cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYz00OT1zdGF0aWMgaW50IF9faW5pdCBhbWlnYV9pbml0X2J1cyh2b2lkKVxcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtNTMtXFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6NTQ6XFx0aWYgKCFNQUNIX0lTX0FNSUdBIHx8ICFBTUlHQUhXX1BSRVNFTlQoWk9SUk8pKVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTU1LVxcdFxcdHJldHVybiAtRU5PREVWO1xcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTU2LVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jOjU3OlxcdG4gPSBBTUlHQUhXX1BSRVNFTlQoWk9SUk8zKSA/IDQgOiAyO1xcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTU4LVxcdHBkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKFxcXCJhbWlnYS16b3Jyb1xcXCIsIC0xLFxcbi0tXFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM9NjY9c3RhdGljIGludCBfX2luaXQgel9kZXZfcHJlc2VudCh6b3Jyb19pZCBpZClcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTcxLVxcdFxcdGNvbnN0IHN0cnVjdCBFeHBhbnNpb25Sb20gKnJvbSA9IFxcdTAwMjZ6b3Jyb19hdXRvY29uX2luaXRbaV0ucm9tO1xcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jOjcyOlxcdFxcdGlmIChiZTE2X3RvX2NwdShyb20tXFx1MDAzZWVyX01hbnVmYWN0dXJlcikgPT0gWk9SUk9fTUFOVUYoaWQpIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6NzM6XFx0XFx0ICAgIHJvbS1cXHUwMDNlZXJfUHJvZHVjdCA9PSBaT1JST19QUk9EKGlkKSlcXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy03NC1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTc5LVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jOjgwOiNlbHNlIC8qICFDT05GSUdfWk9SUk8gKi9cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy04MS1cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYz04Mj1zdGF0aWMgaW5saW5lIGludCB6X2Rldl9wcmVzZW50KHpvcnJvX2lkIGlkKSB7IHJldHVybiAwOyB9XFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmMtODMtXFxuYXJjaC9tNjhrL2FtaWdhL3BsYXRmb3JtLmM6ODQ6I2VuZGlmIC8qICFDT05GSUdfWk9SUk8gKi9cXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYy04NS1cXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jPTEzND1zdGF0aWMgaW50IF9faW5pdCBhbWlnYV9pbml0X2RldmljZXModm9pZClcXG4tLVxcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTE4My1cXHRpZiAoQU1JR0FIV19QUkVTRU5UKEExMjAwX0lERSkgfHxcXG5hcmNoL202OGsvYW1pZ2EvcGxhdGZvcm0uYzoxODQ6XFx0ICAgIHpfZGV2X3ByZXNlbnQoWk9SUk9fUFJPRF9NVEVDX1ZJUEVSX01LX1ZfRV9NQVRSSVhfNTMwX1NDU0lfSURFKSkge1xcbmFyY2gvbTY4ay9hbWlnYS9wbGF0Zm9ybS5jLTE4NS1cXHRcXHRwZGV2ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX3NpbXBsZShcXFwiYW1pZ2EtZ2F5bGUtaWRlXFxcIiwgLTEsXFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc9MTk9Q09ORklHX0FNSUdBPXlcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWc6MjA6Q09ORklHX1pPUlJPPXlcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctMjEtQ09ORklHX0FNSUdBX1BDTUNJQT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjIyOkNPTkZJR19aT1JST19OQU1FUz15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnLTIzLUNPTkZJR19IRUFSVEJFQVQ9eVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTI4MD1DT05GSUdfU0NTSV9BNDAwMFQ9eVxcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzoyODE6Q09ORklHX1NDU0lfWk9SUk83WFg9eVxcbmFyY2gvbTY4ay9jb25maWdzL2FtaWdhX2RlZmNvbmZpZzoyODI6Q09ORklHX1NDU0lfWk9SUk9fRVNQPXlcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctMjgzLUNPTkZJR19BVEE9eVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnPTMzOD1DT05GSUdfQVBORT15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvYW1pZ2FfZGVmY29uZmlnOjMzOTpDT05GSUdfWk9SUk84MzkwPXlcXG5hcmNoL202OGsvY29uZmlncy9hbWlnYV9kZWZjb25maWctMzQwLUNPTkZJR19QUFA9bVxcbi0tXFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnPTI5PUNPTkZJR19RNDA9eVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzozMDpDT05GSUdfWk9SUk89eVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy0zMS1DT05GSUdfQU1JR0FfUENNQ0lBPXlcXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9MzI9Q09ORklHX0FUQVJJX1JPTV9JU0E9eVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZzozMzpDT05GSUdfWk9SUk9fTkFNRVM9eVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy0zNC1DT05GSUdfSEVBUlRCRUFUPXlcXG4tLVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZz0yOTg9Q09ORklHX1NDU0lfQTQwMDBUPXlcXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6Mjk5OkNPTkZJR19TQ1NJX1pPUlJPN1hYPXlcXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6MzAwOkNPTkZJR19TQ1NJX1pPUlJPX0VTUD15XFxuYXJjaC9tNjhrL2NvbmZpZ3MvbXVsdGlfZGVmY29uZmlnLTMwMS1DT05GSUdfQVRBUklfU0NTST15XFxuLS1cXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc9MzgzPUNPTkZJR19BUE5FPXlcXG5hcmNoL202OGsvY29uZmlncy9tdWx0aV9kZWZjb25maWc6Mzg0OkNPTkZJR19aT1JSTzgzOTA9eVxcbmFyY2gvbTY4ay9jb25maWdzL211bHRpX2RlZmNvbmZpZy0zODUtQ09ORklHX1NNQzkxWD15XFxuLS1cXG5hcmNoL202OGsvaW5jbHVkZS9hc20vYW1pZ2Fody5oPTQ1PXN0cnVjdCBhbWlnYV9od19wcmVzZW50IHtcXG4tLVxcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS9hbWlnYWh3LmgtODAtICAgIEFNSUdBSFdfREVDTEFSRShQQ01DSUEpO1xcdFxcdC8qIFBDTUNJQSBTbG90ICovXFxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaDo4MTogICAgQU1JR0FIV19ERUNMQVJFKFpPUlJPKTtcXHRcXHQvKiBab3JybyBBdXRvQ29uZmlnICovXFxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaDo4MjogICAgQU1JR0FIV19ERUNMQVJFKFpPUlJPMyk7XFx0XFx0LyogWm9ycm8gSUlJICovXFxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2FtaWdhaHcuaC04My19O1xcbi0tXFxuYXJjaC9tNjhrL2luY2x1ZGUvYXNtL3pvcnJvLmgtMS0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oOjI6I2lmbmRlZiBfQVNNX002OEtfWk9SUk9fSFxcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oOjM6I2RlZmluZSBfQVNNX002OEtfWk9SUk9fSFxcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oLTQtXFxuLS1cXG5hcmNoL202OGsvaW5jbHVkZS9hc20vem9ycm8uaD0zNz1zdGF0aWMgaW5saW5lIHZvaWQgX19pb21lbSAqel9yZW1hcF9mdWxsY2FjaGUodW5zaWduZWQgbG9uZyBwaHlzYWRkcixcXG4tLVxcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oLTQ2LVxcbmFyY2gvbTY4ay9pbmNsdWRlL2FzbS96b3Jyby5oOjQ3OiNlbmRpZiAvKiBfQVNNX002OEtfWk9SUk9fSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjozMS41NjE2NTM0ODFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjk1OTI4NDg2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgdGhlIFpvcnJvIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGBkcml2ZXJzL3pvcnJvL0tjb25maWdgIGZpbGUuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgWm9ycm8gYnVzIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGlzIGtlcm5lbCBidWlsZC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgd2hhdCBkZXBlbmRlbmNpZXMgZXhpc3QsIGFuZCBob3cgdGhlIHZhcmlvdXMgWm9ycm8tcmVsYXRlZCBmZWF0dXJlcyBhcmUgY29udHJvbGxlZC4gVGhpcyBLY29uZmlnIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIHRoaXMgbW9kdWxlLCBhbmQgaG93IHZhcmlvdXMgb3B0aW9ucyBlZmZlY3QgdGhlIGF2YWlsYWJsZSBmZWF0dXJlcy4gSSdtIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOlxuXG4qICAgKipGZWF0dXJlIEZsYWdzOioqIEFyZSB0aGVyZSBzcGVjaWZpYyBzeW1ib2xzIGRlZmluZWQgZm9yIGRpZmZlcmVudCBab3JybyBoYXJkd2FyZSByZXZpc2lvbnMgb3IgZGV2aWNlIHR5cGVzPyBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gaXMgZXNzZW50aWFsIGZvciBkZWFsaW5nIHdpdGggcnVudGltZSBiZWhhdmlvciBvZiBkcml2ZXJzLlxuKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMgb3IgZHJpdmVycyBkb2VzIHRoaXMgWm9ycm8gZHJpdmVyIHJlbHkgb24/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBvciBib2FyZCBjb25maWd1cmF0aW9ucyB0aGF0IGl0J3MgZGVzaWduZWQgZm9yPyBUaGlzIGlzIGtleSBmb3IgdW5kZXJzdGFuZGluZyBwb3J0YWJpbGl0eSBhbmQgcG90ZW50aWFsIGludGVncmF0aW9uIGlzc3Vlcy5cbiogICAqKkRlZmF1bHQgQmVoYXZpb3I6KiogV2hhdCdzIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24/IEFyZSB0aGUgWm9ycm8gYnVzIGZ1bmN0aW9ucyBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGFyZSB0aGV5IG9mZiBieSBkZWZhdWx0PyBVbmRlcnN0YW5kaW5nIGRlZmF1bHRzIGlzIGtleSB0byBkZWJ1Z2dpbmcgYW5kIGJ1aWxkaW5nIG5ldyBzeXN0ZW1zLlxuKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBBcmUgdGhlcmUgZ29vZCBjb21tZW50cz8gQXJlIHRoZXJlIGFueSBvYnZpb3VzIGFyZWFzIGZvciBtZSB0byBleHBsb3JlIGluIGdyZWF0ZXIgZGV0YWlsP1xuXG5CeSBleGFtaW5pbmcgdGhpcyBLY29uZmlnIGZpbGUgZmlyc3QsIEknbGwgZ2V0IGEgc29saWQgZm91bmRhdGlvbiBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9mIHRoZSBab3JybyBkcml2ZXIgY29kZSBhbmQgaXRzIGludGVncmF0aW9uIGludG8gdGhlIHdpZGVyIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMzYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQyMDoxMjozNC41MjA5NDA4NzRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy96b3Jyby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFpvcnJvIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdGNvbmZpZyBaT1JST19OQU1FU1xcbiAgIDY6XFx0XFx0Ym9vbCBcXFwiWm9ycm8gZGV2aWNlIG5hbWUgZGF0YWJhc2VcXFwiXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIFpPUlJPXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIEJ5IGRlZmF1bHQsIHRoZSBrZXJuZWwgY29udGFpbnMgYSBkYXRhYmFzZSBvZiBhbGwga25vd24gWm9ycm8gZGV2aWNlXFxuICAxMDpcXHRcXHQgIG5hbWVzIHRvIG1ha2UgdGhlIGluZm9ybWF0aW9uIGluIC9wcm9jL2lvbWVtIGNvbXByZWhlbnNpYmxlIHRvIHRoZVxcbiAgMTE6XFx0XFx0ICB1c2VyLiBUaGlzIGRhdGFiYXNlIGluY3JlYXNlcyB0aGUgc2l6ZSBvZiB0aGUga2VybmVsIGltYWdlIGJ5IGFib3V0XFxuICAxMjpcXHRcXHQgIDE1S0IsIGJ1dCBpdCBnZXRzIGZyZWVkIGFmdGVyIHRoZSBzeXN0ZW0gYm9vdHMgdXAsIHNvIGl0IGRvZXNuJ3RcXG4gIDEzOlxcdFxcdCAgdGFrZSB1cCBrZXJuZWwgbWVtb3J5LiBBbnl3YXksIGlmIHlvdSBhcmUgYnVpbGRpbmcgYW4gaW5zdGFsbGF0aW9uXFxuICAxNDpcXHRcXHQgIGZsb3BweSBvciBrZXJuZWwgZm9yIGFuIGVtYmVkZGVkIHN5c3RlbSB3aGVyZSBrZXJuZWwgaW1hZ2Ugc2l6ZVxcbiAgMTU6XFx0XFx0ICByZWFsbHkgbWF0dGVycywgeW91IGNhbiBkaXNhYmxlIHRoaXMgZmVhdHVyZSBhbmQgeW91J2xsIGdldCBkZXZpY2VcXG4gIDE2OlxcdFxcdCAgSUQgbnVtYmVycyBpbnN0ZWFkIG9mIG5hbWVzLlxcbiAgMTc6XFx0XFxuICAxODpcXHRcXHQgIFdoZW4gaW4gZG91YnQsIHNheSBZLlxcbiAgMTk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjM0LjUyMTAyNDY4NFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NDM0MjMzOTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIG02OGstU3BlY2lmaWMgWm9ycm8gRHJpdmVycyBvbiBhbWQ2NCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBzZWUgaWYgWm9ycm8gc3VwcG9ydCBleHRlbmRzIGJleW9uZCB0aGUgbTY4ayBhcmNoaXRlY3R1cmUsIGJlY2F1c2UgaWYgaXQgZGlkLCB0aGVzZSBkcml2ZXJzICptaWdodCogYmUgcmVsZXZhbnQgZm9yIGZ1enppbmcgb24gYW1kNjQuIEEgcXVpY2sgc2NhbiBvZiB0aGUgYEtjb25maWcuYnVzYCBmaWxlIGluIHRoZSBtNjhrIGFyY2hpdGVjdHVyZSBjb25maXJtcyB0aGF0IGBDT05GSUdfWk9SUk9gIGlzICpvbmx5KiBkZWZpbmVkIHRoZXJlLCBhbmQgaXQncyBjb250aW5nZW50IG9uIHRoZSBgQU1JR0FgIGNvbmZpZyBvcHRpb24sIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyBtNjhrLXNwZWNpZmljLlxuXG5HaXZlbiB0aGF0IHRoZSB0YXJnZXQgaXMgYW1kNjQgKHg4Nl82NCksIGBDT05GSUdfWk9SUk9gICpjYW5ub3QqIGJlIGVuYWJsZWQuIFRoZXJlZm9yZSwgYWxsIHRoZSBkcml2ZXIgbW9kaWZpY2F0aW9ucyBpbiB0aGlzIHBhdGNoIGFyZSwgaW4gZXNzZW5jZSwgZGVhZCBjb2RlIGZyb20gdGhlIGFtZDY0IHBlcnNwZWN0aXZlLiBUaGlzIGluY2x1ZGVzIHRoZSBjaGFuZ2VzIGluIGBoeWRyYS5jYCwgYHpvcnJvODM5MC5jYCwgYGEyMDY1LmNgLCBgYXJpYWRuZS5jYCwgYGEyMDkxLmNgLCBgZ3ZwMTEuY2AsIGB6b3Jybzd4eC5jYCwgYW5kIGB6b3Jyb19lc3AuY2AuIFRoZXkgYWxsIGRlcGVuZCBvbiBgQ09ORklHX1pPUlJPYC5cblxuVGhlc2UgZHJpdmVycyBhcmUgWm9ycm8gYnVzIGV4cGFuc2lvbiBjYXJkcyBmb3IgdGhlIEFtaWdhLCBwaHlzaWNhbCBoYXJkd2FyZSBkcml2ZXJzLCBub3RoaW5nIG1vcmUuIFRoZSBwYXRjaCdzIGNvbnRyaWJ1dGlvbiBsaWVzIGluIGEgc2ltcGxlIHJlZmFjdG9yaW5nLCBlbXBsb3lpbmcgdGhlIGBtb2R1bGVfZHJpdmVyKClgIG1hY3JvIGZvciBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCAoYHpvcnJvX3JlZ2lzdGVyX2RyaXZlcmAsIGB6b3Jyb191bnJlZ2lzdGVyX2RyaXZlcmApIC0gbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLlxuXG5NeSBhbmFseXNpcyBhbGlnbnMgcGVyZmVjdGx5IHdpdGggdGhlIGZ1enppbmcgZ3VpZGVsaW5lcy4gVGhlIGNvZGUgaXMgKmFyY2hpdGVjdHVyYWxseSB1bnJlYWNoYWJsZSogb24gYW1kNjQsIGFuZCBpdCBpcyBhbHNvICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUqIG9uIGFueSBvdGhlciBhcmNoaXRlY3R1cmUuIFRoZXNlIGRyaXZlcnMgYXJlIG5vdCByZWxldmFudC4gVGhpcyBtZWFucyB0aGUgZnV6emluZyBmbGFnIGlzIHNldCB0byBmYWxzZS5cblxuSSBuZWVkIHRvIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzgzLCJPdXRwdXRUb2tlbnMiOjIzOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDIwOjEyOjQxLjk1NTI2MTgyNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoZWQgZmlsZXMgKGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvaHlkcmEuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvODM5MC96b3JybzgzOTAuYywgZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL2EyMDY1LmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hcmlhZG5lLmMsIGRyaXZlcnMvc2NzaS9hMjA5MS5jLCBkcml2ZXJzL3Njc2kvZ3ZwMTEuYywgZHJpdmVycy9zY3NpL3pvcnJvN3h4LmMsIGFuZCBkcml2ZXJzL3Njc2kvem9ycm9fZXNwLmMpIGFyZSBhbGwgZHJpdmVycyBmb3IgQW1pZ2EgWm9ycm8gYnVzIGRldmljZXMgdGhhdCBkZXBlbmQgb24gQ09ORklHX1pPUlJPLiBDT05GSUdfWk9SUk8gaXMgb25seSBkZWZpbmVkIGZvciB0aGUgbTY4ayBhcmNoaXRlY3R1cmUgKHVuZGVyIGFyY2gvbTY4ay9LY29uZmlnLmJ1cykgYW5kIGlzIG5vdCBhdmFpbGFibGUgb3IgY29tcGlsYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYW1kNjQpLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgb25seSBjb252ZXJ0IHN0YW5kYXJkIG1vZHVsZSBpbml0L2V4aXQgYm9pbGVycGxhdGUgdG8gdXNlIHRoZSBtb2R1bGVfZHJpdmVyKCkgbWFjcm8uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaGVkIGZpbGVzIChkcml2ZXJzL25ldC9ldGhlcm5ldC84MzkwL2h5ZHJhLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvem9ycm84MzkwLmMsIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC9hMjA2NS5jLCBkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvYXJpYWRuZS5jLCBkcml2ZXJzL3Njc2kvYTIwOTEuYywgZHJpdmVycy9zY3NpL2d2cDExLmMsIGRyaXZlcnMvc2NzaS96b3Jybzd4eC5jLCBhbmQgZHJpdmVycy9zY3NpL3pvcnJvX2VzcC5jKSBhcmUgYWxsIGRyaXZlcnMgZm9yIEFtaWdhIFpvcnJvIGJ1cyBkZXZpY2VzIHRoYXQgZGVwZW5kIG9uIENPTkZJR19aT1JSTy4gQ09ORklHX1pPUlJPIGlzIG9ubHkgZGVmaW5lZCBmb3IgdGhlIG02OGsgYXJjaGl0ZWN0dXJlICh1bmRlciBhcmNoL202OGsvS2NvbmZpZy5idXMpIGFuZCBpcyBub3QgYXZhaWxhYmxlIG9yIGNvbXBpbGFibGUgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgKGFtZDY0KS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIG9ubHkgY29udmVydCBzdGFuZGFyZCBtb2R1bGUgaW5pdC9leGl0IGJvaWxlcnBsYXRlIHRvIHVzZSB0aGUgbW9kdWxlX2RyaXZlcigpIG1hY3JvLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMjA6MTI6NDEuOTU1Mjg2MDI1WiIsIlNlcSI6MjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrtwzz[1] Phase: Running StartedAt: 2026-09-06 20:13:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrtwzz[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 20:13:15 +0000 UTC FinishedAt: 2026-09-06 20:13:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}