ZGlmZiAtLWdpdCBhL2JvYXJkL3B4YTI1NV9pZHAvTWFrZWZpbGUgYi9ib2FyZC9weGEyNTVfaWRwL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZjM1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9weGEyNTVfaWRwL01ha2VmaWxlCkBAIC0wLDAgKzEsNDggQEAKKworIworIyAoQykgQ29weXJpZ2h0IDIwMDAtMjAwNQorIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIworIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworIyBwcm9qZWN0LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyBNQSAwMjExMS0xMzA3IFVTQQorIworCitpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKKworTElCCT0gbGliJChCT0FSRCkuYQorCitPQkpTCTo9IHB4YV9pZHAubworU09CSlMJOj0gbWVtc2V0dXAubworCiskKExJQik6CSQoT0JKUykgJChTT0JKUykKKwkkKEFSKSBjcnYgJEAgJChPQkpTKSAkKFNPQkpTKQorCitjbGVhbjoKKwlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisKK2Rpc3RjbGVhbjoJY2xlYW4KKwlybSAtZiAkKExJQikgY29yZSAqLmJhayAuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworLmRlcGVuZDoJTWFrZWZpbGUgJChTT0JKUzoubz0uUykgJChPQkpTOi5vPS5jKQorCQkkKENDKSAtTSAkKENQUEZMQUdTKSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpID4gJEAKKworLWluY2x1ZGUgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9ib2FyZC9weGEyNTVfaWRwL1JFQURNRSBiL2JvYXJkL3B4YTI1NV9pZHAvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjYzJmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9weGEyNTVfaWRwL1JFQURNRQpAQCAtMCwwICsxLDExIEBACitUZXN0ZWQ6CisKKy0gTU1DCistIEV0aGVybmV0CistIEJMIGNvbnNvbGUgKG9uIHNlcmlhbCBwb3J0IGNvbm5lY3RvciBKNSkKKy0gZmxhc2ggc3VwcG9ydAorCitUb2RvOgorCistIGRpc3BsYXkgc3VwcG9ydAorLSBQQ01DSUEgc3VwcG9ydApkaWZmIC0tZ2l0IGEvYm9hcmQvcHhhMjU1X2lkcC9jb25maWcubWsgYi9ib2FyZC9weGEyNTVfaWRwL2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmEyMDQwCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvcHhhMjU1X2lkcC9jb25maWcubWsKQEAgLTAsMCArMSwzIEBACisjVEVYVF9CQVNFID0gMHhhMTcwMDAwMAorVEVYVF9CQVNFID0gMHhhMzAwMDAwMAorI1RFWFRfQkFTRSA9IDAKZGlmZiAtLWdpdCBhL2JvYXJkL3B4YTI1NV9pZHAvaWRwX25vdGVzLnR4dCBiL2JvYXJkL3B4YTI1NV9pZHAvaWRwX25vdGVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzQ2NzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvcHhhMjU1X2lkcC9pZHBfbm90ZXMudHh0CkBAIC0wLDAgKzEsNDYgQEAKK05vdGVzIG9uIHRoZSBWaWJyZW4gUFhBMjU1IElEUC4KKworQ2hpcCBzZWxlY3QgdXNhZ2U6CisKK0NTMCAtIGZsYXNoCitDUzEgLSBhbHQgZmxhc2ggKE1kb2Mgb3IgbWFpbiBmbGFzaCkKK0NTMiAtIGhpZ2ggc3BlZWQgZXhwYW5zaW9uIGJ1cworQ1MzIC0gTWVkaWEgUSwgbG93IHNwZWVkIGV4cCBidXMKK0NTNCAtIGxvdyBzcGVlZCBleHAgYnVzCitDUzUgLSBsb3cgc3BlZWQgZXhwIGJ1cworICAtIElERTogb2Zmc2V0IDB4MDMwMDAwMDAgKGFiczogMHgxNzAwMDAwMCkKKyAgLSBFdGg6IG9mZnNldCAweDAzNDAwMDAwIChhYnM6IDB4MTc0MDAwMDApCisgIC0gY29yZSB2b2x0YWdlIGxhdGNoOiBvZmZzZXQgMHgwMzgwMDAwMCAoYWJzOiAweDE3ODAwMDAwKQorICAtIENQTEQ6IG9mZnNldCAweDAzQzAwMDAwIChhYnM6IDB4MTdDMDAwMDApCisKK1BDTUNJQSBQb3dlciBjb250cm9sCisKK01BWDE2MDJFRSB3LyBjb2RlIHB1bGxlZCBoaWdoIChDaXJydXMgY29kZSkKK3Z4ID0gNXYKK3Z5ID0gM3YKKworCQkJQml0IHBhdHRlcm4KKwkJCVBXUiAzLDIsMSwwCit2Y2MJICAgICB2cHAJQTFWQ0MgIEEwVkNDICAgQTFWUFAgICBBMFZQUAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzAJICAgICAwICAgICAgICAgICAgMCAgICAgIDAgICAgICAgMCAgICAgICAwCTB4MAorMyAodnkpCSAgICAgMCAgICAgICAgICAgIDEgICAgICAwICAgICAgIDEgICAgICAgMQkweEIKKzMgKHZ5KQkgICAgIDMgKHZ5KSAgICAgICAxICAgICAgMCAgICAgICAwICAgICAgIDEJMHg5CiszICh2eSkJICAgICAxMigxMmluKSAgICAgMSAgICAgIDAgICAgICAgMSAgICAgICAwCTB4QQorNSAodngpCSAgICAgMCAgICAgICAgICAgIDAgICAgICAxICAgICAgIDEgICAgICAgMQkweDcKKzUgKHZ4KQkgICAgIDUgKHZ4KSAgICAgICAwICAgICAgMSAgICAgICAwICAgICAgIDEJMHg1Cis1ICh2eAkgICAgIDEyKDEyaW4pICAgICAwICAgICAgMSAgICAgICAxICAgICAgIDAJMHg2CisKK0Rpc3BsYXkgcG93ZXIgc2VxdWVuY2luZzoKKworLSBWREQgYXBwbGllZAorLSB3aXRoaW4gMXNlYywgYWN0aXZhdGUgc2Nhbm5pbmcgc2lnbmFscworLSB3YWl0IGF0IGxlYXN0IDUwbVMgLSBzY2FubmluZyBzaWduYWxzIG11c3QgYmUgYWN0aXZlIGJlZm9yZSBhY3RpdmF0aW5nIERJU1AKKworU2lnbmFsIG1hcHBpbmc6CitTY2hlbWF0aWMgICAgICAgICAgICBMVjhWMzEgc2lnbmFsIG5hbWUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitMQ0RfRU5BVkxDRAkJRElTUAorTENEX1BXUgkJCUFwcGxpZXMgVkREIHRvIGJvYXJkCisKK0JvdGggb2YgdGhlIGFib3ZlIHNpZ25hbHMgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIENQTEQKZGlmZiAtLWdpdCBhL2JvYXJkL3B4YTI1NV9pZHAvbWVtc2V0dXAuUyBiL2JvYXJkL3B4YTI1NV9pZHAvbWVtc2V0dXAuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTQ4NWEyCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvcHhhMjU1X2lkcC9tZW1zZXR1cC5TCkBAIC0wLDAgKzEsNDk2IEBACisvKgorICogTW9zdCBvZiB0aGlzIHRha2VuIGZyb20gUmVkYm9vdCBoYWxfcGxhdGZvcm1fc2V0dXAuaCB3aXRoIGNsZWFudXAKKyAqCisgKiBOT1RFOiBJIGhhdmVuJ3QgY2xlYW4gdGhpcyB1cCBjb25zaWRlcmFibHksIGp1c3QgZW5vdWdoIHRvIGdldCBpdAorICogcnVubmluZy4gU2VlIGhhbF9wbGF0Zm9ybV9zZXR1cC5oIGZvciB0aGUgc291cmNlLiBTZWUKKyAqIGJvYXJkL2NyYWRsZS9tZW1zZXR1cC5TIGZvciBhbm90aGVyIFBYQTI1MCBzZXR1cCB0aGF0IGlzCisgKiBtdWNoIGNsZWFuZXIuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgorCitEUkFNX1NJWkU6ICAubG9uZyAgIENGR19EUkFNX1NJWkUKKworLyogd2FpdCBmb3IgY29wcm9jZXNzb3Igd3JpdGUgY29tcGxldGUgKi8KKwkubWFjcm8gQ1BXQUlUIHJlZworCW1yYyAgcDE1LDAsXHJlZyxjMixjMCwwCisJbW92ICBccmVnLFxyZWcKKwlzdWIgIHBjLHBjLCM0CisJLmVuZG0KKworLyoKKyAqIAlNZW1vcnkgc2V0dXAKKyAqLworLmdsb2JsIG1lbXNldHVwCittZW1zZXR1cDoKKworCW1vdiAgICAgIHIxMCwgbHIKKworI2lmZGVmIERFQlVHX0JMSU5LX0VOQUJMRQorCS8qIDNyZCBibGluayAqLworCWJsCWJsaW5rCisjZW5kaWYKKworCS8qIFNldCB1cCBHUElPIHBpbnMgZmlyc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwlsZHIJCXIwLAk9R1BTUjAKKwlsZHIJCXIxLAk9Q0ZHX0dQU1IwX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQU1IxCisJbGRyCQlyMSwJPUNGR19HUFNSMV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUFNSMgorCWxkcgkJcjEsCT1DRkdfR1BTUjJfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BDUjAKKwlsZHIJCXIxLAk9Q0ZHX0dQQ1IwX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQQ1IxCisJbGRyCQlyMSwJPUNGR19HUENSMV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUENSMgorCWxkcgkJcjEsCT1DRkdfR1BDUjJfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BEUjAKKwlsZHIJCXIxLAk9Q0ZHX0dQRFIwX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQRFIxCisJbGRyCQlyMSwJPUNGR19HUERSMV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUERSMgorCWxkcgkJcjEsCT1DRkdfR1BEUjJfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0FGUjBfTAorCWxkcgkJcjEsCT1DRkdfR0FGUjBfTF9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HQUZSMF9VCisJbGRyCQlyMSwJPUNGR19HQUZSMF9VX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIxX0wKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIxX0xfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0FGUjFfVQorCWxkcgkJcjEsCT1DRkdfR0FGUjFfVV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HQUZSMl9MCisJbGRyCQlyMSwJPUNGR19HQUZSMl9MX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIyX1UKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIyX1VfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJcjAsCT1QU1NSCQkvKiBlbmFibGUgR1BJTyBwaW5zICovCisJbGRyCQlyMSwJPUNGR19QU1NSX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisjaWZkZWYgREVCVUdfQkxJTktfRU5BQkxFCisJLyogNHRoIGRlYnVnIGJsaW5rICovCisJYmwgCWJsaW5rCisjZW5kaWYKKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBFbmFibGUgbWVtb3J5IGludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisJLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCS8qIFRoZSBzZXF1ZW5jZSBiZWxvdyBpcyBiYXNlZCBvbiB0aGUgcmVjb21tZW5kZWQgaW5pdCBzdGVwcyAgICAgICAgKi8KKwkvKiBkZXRhaWxlZCBpbiB0aGUgSW50ZWwgUFhBMjUwIE9wZXJhdGluZyBTeXN0ZW1zIERldmVsb3BlcnMgR3VpZGUsICovCisJLyogQ2hhcHRlciAxMC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBTdGVwIDE6IFdhaXQgZm9yIGF0IGxlYXN0IDIwMCBtaWNyb3NlZG9uZHMgdG8gYWxsb3cgaW50ZXJuYWwgICAgICovCisJLyogICAgICAgICBjbG9ja3MgdG8gc2V0dGxlLiBPbmx5IG5lY2Vzc2FyeSBhZnRlciBoYXJkIHJlc2V0Li4uICAgICAqLworCS8qICAgICAgICAgRklYTUU6IGNhbiBiZSBvcHRpbWl6ZWQgbGF0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwlsZHIgcjMsID1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KKwltb3YgcjIsICMwCisJc3RyIHIyLCBbcjNdCisJbGRyIHI0LCA9MHgzMDAJCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLworCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLworMToKKwlsZHIgcjIsIFtyM10KKwljbXAgcjQsIHIyCisJYmd0IDFiCisKK21lbV9pbml0OgorCisJbGRyICAgICByMSwgID1NRU1DX0JBU0UJCS8qIGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHIuICovCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAyYTogSW5pdGlhbGl6ZSBBc3luY2hyb25vdXMgc3RhdGljIG1lbW9yeSBjb250cm9sbGVyICAgICAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8qIE1TQyByZWdpc3RlcnM6IHRpbWluZywgYnVzIHdpZHRoLCBtZW0gdHlwZSAgICAgICAgICAgICAgICAgICAgICAgKi8KKworCS8qIE1TQzA6IG5DUygwLDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwlsZHIgICAgIHIyLCAgID1DRkdfTVNDMF9WQUwKKwlzdHIgICAgIHIyLCAgIFtyMSwgI01TQzBfT0ZGU0VUXQorCWxkciAgICAgcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCS8qIHJlYWQgYmFjayB0byBlbnN1cmUgICAgICAqLworCQkJCQkJLyogdGhhdCBkYXRhIGxhdGNoZXMgICAgICAgICovCisJLyogTVNDMTogbkNTKDIsMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCWxkciAgICAgcjIsICA9Q0ZHX01TQzFfVkFMCisJc3RyICAgICByMiwgIFtyMSwgI01TQzFfT0ZGU0VUXQorCWxkciAgICAgcjIsICBbcjEsICNNU0MxX09GRlNFVF0KKworCS8qIE1TQzI6IG5DUyg0LDUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwlsZHIgICAgIHIyLCAgPUNGR19NU0MyX1ZBTAorCXN0ciAgICAgcjIsICBbcjEsICNNU0MyX09GRlNFVF0KKwlsZHIgICAgIHIyLCAgW3IxLCAjTVNDMl9PRkZTRVRdCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAyYjogSW5pdGlhbGl6ZSBDYXJkIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8qIE1FQ1I6IE1lbW9yeSBFeHBhbnNpb24gQ2FyZCBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwlsZHIgICAgIHIyLCAgPUNGR19NRUNSX1ZBTAorCXN0ciAgICAgcjIsICBbcjEsICNNRUNSX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01FQ1JfT0ZGU0VUXQorCisJLyogTUNNRU0wOiBDYXJkIEludGVyZmFjZSBzbG90IDAgdGltaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCWxkciAgICAgcjIsICA9Q0ZHX01DTUVNMF9WQUwKKwlzdHIgICAgIHIyLCAgW3IxLCAjTUNNRU0wX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01DTUVNMF9PRkZTRVRdCisKKwkvKiBNQ01FTTE6IENhcmQgSW50ZXJmYWNlIHNsb3QgMSB0aW1pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisJbGRyICAgICByMiwgID1DRkdfTUNNRU0xX1ZBTAorCXN0ciAgICAgcjIsICBbcjEsICNNQ01FTTFfT0ZGU0VUXQorCWxkcglyMiwJW3IxLCAjTUNNRU0xX09GRlNFVF0KKworCS8qIE1DQVRUMDogQ2FyZCBJbnRlcmZhY2UgQXR0cmlidXRlIFNwYWNlIFRpbWluZywgc2xvdCAwICAgICAgICAgICAgKi8KKwlsZHIgICAgIHIyLCAgPUNGR19NQ0FUVDBfVkFMCisJc3RyICAgICByMiwgIFtyMSwgI01DQVRUMF9PRkZTRVRdCisJbGRyCXIyLAlbcjEsICNNQ0FUVDBfT0ZGU0VUXQorCisJLyogTUNBVFQxOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAqLworCWxkciAgICAgcjIsICA9Q0ZHX01DQVRUMV9WQUwKKwlzdHIgICAgIHIyLCAgW3IxLCAjTUNBVFQxX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01DQVRUMV9PRkZTRVRdCisKKwkvKiBNQ0lPMDogQ2FyZCBJbnRlcmZhY2UgSS9PIFNwYWNlIFRpbWluZywgc2xvdCAwICAgICAgICAgICAgICAgICAgICovCisJbGRyICAgICByMiwgID1DRkdfTUNJTzBfVkFMCisJc3RyICAgICByMiwgIFtyMSwgI01DSU8wX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01DSU8wX09GRlNFVF0KKworCS8qIE1DSU8xOiBDYXJkIEludGVyZmFjZSBJL08gU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAgICAgICAgKi8KKwlsZHIgICAgIHIyLCAgPUNGR19NQ0lPMV9WQUwKKwlzdHIgICAgIHIyLCAgW3IxLCAjTUNJTzFfT0ZGU0VUXQorCWxkcglyMiwJW3IxLCAjTUNJTzFfT0ZGU0VUXQorCisjaWZkZWYgREVCVUdfQkxJTktfRU5BQkxFCisJLyogNXRoIGJsaW5rICovCisJYmwgCWJsaW5rCisjZW5kaWYKKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBTdGVwIDJjOiBXcml0ZSBGTFlDTkZHICBGSVhNRTogd2hhdCdzIHRoYXQ/Pz8gICAgICAgICAgICAgICAgICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIFN0ZXAgMmQ6IEluaXRpYWxpemUgVGltaW5nIGZvciBTeW5jIE1lbW9yeSAoU0RDTEswKSAgICAgICAgICAgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvKiBCZWZvcmUgYWNjZXNzaW5nIE1EUkVGUiB3ZSBuZWVkIGEgdmFsaWQgRFJJIGZpZWxkLCBzbyB3ZSBzZXQgICAgICovCisJLyogdGhpcyB0byBwb3dlciBvbiBkZWZhdWx0cyArIERSSSBmaWVsZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisJbGRyICAgICByMywgICAgID1DRkdfTURSRUZSX1ZBTAorCWxkciAgICAgcjIsICAgICA9MHhGRkYKKwlhbmQgICAgIHIzLCAgICAgcjMsICByMgorCWxkcglyNCwJPTB4MDNjYTQwMDAKKwlvcnIgICAgIHI0LCAgICAgcjQsICByMworCXN0cglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRFJFRlIgICAgICAgICovCisJbGRyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCisKKwkvKiBOb3RlOiBwcmVzZXJ2ZSB0aGUgbWRyZWZyIHZhbHVlIGluIHI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAzOiBJbml0aWFsaXplIFN5bmNocm9ub3VzIFN0YXRpYyBNZW1vcnkgKEZsYXNoL1BlcmlwaGVyYWxzKSAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8qIEluaXRpYWxpemUgU1hDTkZHIHJlZ2lzdGVyLiBBc3NlcnQgdGhlIGVuYWJsZSBiaXRzICAgICAgICAgICAgICAgKi8KKworCS8qIFdyaXRlIFNYTVJTIHRvIGNhdXNlIGFuIE1SUyBjb21tYW5kIHRvIGFsbCBlbmFibGVkIGJhbmtzIG9mICAgICAgKi8KKwkvKiBzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5LiBOb3RlIHRoYXQgU1hMQ1IgbmVlZCBub3QgYmUgd3JpdHRlbiAgICovCisJLyogYXQgdGhpcyB0aW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisJLyogRklYTUU6IHdlIHVzZSBhc3luYyBtb2RlIGZvciBub3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIFN0ZXAgNDogSW5pdGlhbGl6ZSBTRFJBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvKiBzZXQgTURSRUZSIGFjY29yZGluZyB0byB1c2VyIGRlZmluZSB3aXRoIGV4Y2VwdGlvbiBvZiBhIGZldyBiaXRzICovCisKKwlsZHIgICAgIHI0LCAgICAgPUNGR19NRFJFRlJfVkFMCisJb3JyCXI0LAlyNCwJIyhNRFJFRlJfU0xGUlNIKQorCWJpYwlyNCwJcjQsCSMoTURSRUZSX0UxUElOfE1EUkVGUl9FMFBJTikKKwlzdHIgICAgIHI0LCAgICAgW3IxLCAjTURSRUZSX09GRlNFVF0gICAgLyogd3JpdGUgYmFjayBNRFJFRlIgICAgICAgICovCisJbGRyICAgICByNCwgIFtyMSwgI01EUkVGUl9PRkZTRVRdCisKKwkvKiBTdGVwIDRiOiBkZS1hc3NlcnQgTURSRUZSOlNMRlJTSC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKwliaWMJcjQsCXI0LAkjKE1EUkVGUl9TTEZSU0gpCisJc3RyICAgICByNCwgICAgIFtyMSwgI01EUkVGUl9PRkZTRVRdICAgIC8qIHdyaXRlIGJhY2sgTURSRUZSICAgICAgICAqLworCWxkciAgICAgcjQsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCisJLyogU3RlcCA0YzogYXNzZXJ0IE1EUkVGUjpFMVBJTiBhbmQgRTBQSU8gYXMgZGVzaXJlZCAgICAgICAgICAgICAgICAqLworCisJbGRyICAgICByNCwgICAgID1DRkdfTURSRUZSX1ZBTAorCXN0ciAgICAgcjQsICAgICBbcjEsICNNRFJFRlJfT0ZGU0VUXSAgICAvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KKwlsZHIgICAgIHI0LCAgICAgW3IxLCAjTURSRUZSX09GRlNFVF0KKworCisJLyogU3RlcCA0ZDogd3JpdGUgTURDTkZHIHdpdGggTURDTkZHOkRFeCBkZWFzc2VydGVkIChzZXQgdG8gMCksIHRvICAqLworCS8qICAgICAgICAgIGNvbmZpZ3VyZSBidXQgbm90IGVuYWJsZSBlYWNoIFNEUkFNIHBhcnRpdGlvbiBwYWlyLiAgICAgKi8KKworCWxkcglyNCwJPUNGR19NRENORkdfVkFMCisJYmljCXI0LAlyNCwJIyhNRENORkdfREUwfE1EQ05GR19ERTEpCisKKwlzdHIgICAgIHI0LCAgICAgW3IxLCAjTURDTkZHX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRENORkcgICAgICAgICovCisJbGRyICAgICByNCwgICAgIFtyMSwgI01EQ05GR19PRkZTRVRdCisKKwkvKiBTdGVwIDRlOiBXYWl0IGZvciB0aGUgY2xvY2sgdG8gdGhlIFNEUkFNcyB0byBzdGFiaWxpemUsICAgICAgICAgICovCisJLyogICAgICAgICAgMTAwLi4yMDAgtXNlYy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisJbGRyIHIzLCA9T1NDUgkJCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCisJbW92IHIyLCAjMAorCSAgICBzdHIgcjIsIFtyM10KKwlsZHIgcjQsID0weDMwMAkJCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCAgICovCisJCQkJCS8qIHNvIDB4MzAwIHNob3VsZCBiZSBwbGVudHkgICAgICAgICovCisxOgorCSAgICBsZHIgcjIsIFtyM10KKwkgICAgY21wIHI0LCByMgorCSAgICBiZ3QgMWIKKworCS8qIFN0ZXAgNGY6IFRyaWdnZXIgYSBudW1iZXIgKHVzdWFsbHkgOCkgcmVmcmVzaCBjeWNsZXMgYnkgICAgICAgICAgKi8KKwkvKiAgICAgICAgICBhdHRlbXB0aW5nIG5vbi1idXJzdCByZWFkIG9yIHdyaXRlIGFjY2Vzc2VzIHRvIGRpc2FibGVkICovCisJLyogICAgICAgICAgU0RSQU0sIGFzIGNvbW1vbmx5IHNwZWNpZmllZCBpbiB0aGUgcG93ZXIgdXAgc2VxdWVuY2UgICAqLworCS8qICAgICAgICAgIGRvY3VtZW50ZWQgaW4gU0RSQU0gZGF0YSBzaGVldHMuIFRoZSBhZGRyZXNzKGVzKSB1c2VkICAgKi8KKwkvKiAgICAgICAgICBmb3IgdGhpcyBwdXJwb3NlIG11c3Qgbm90IGJlIGNhY2hlYWJsZS4gICAgICAgICAgICAgICAgICovCisKKwlsZHIJcjMsCT1DRkdfRFJBTV9CQVNFCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisJc3RyCXIyLAlbcjNdCisKKwkvKiBTdGVwIDRnOiBXcml0ZSBNRENORkcgd2l0aCBlbmFibGUgYml0cyBhc3NlcnRlZCAgICAgICAgICAgICAgICAgICovCisJLyogICAgICAgICAgKE1EQ05GRzpERXggc2V0IHRvIDEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisJbGRyICAgICByMywgIFtyMSwgI01EQ05GR19PRkZTRVRdCisJb3JyCXIzLAlyMywJIyhNRENORkdfREUwfE1EQ05GR19ERTEpCisJc3RyICAgICByMywgIFtyMSwgI01EQ05GR19PRkZTRVRdCisKKwkvKiBTdGVwIDRoOiBXcml0ZSBNRE1SUy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKwlsZHIgICAgIHIyLCAgPUNGR19NRE1SU19WQUwKKwlzdHIgICAgIHIyLCAgW3IxLCAjTURNUlNfT0ZGU0VUXQorCisJLyogV2UgYXJlIGZpbmlzaGVkIHdpdGggSW50ZWwncyBtZW1vcnkgY29udHJvbGxlciBpbml0aWFsaXNhdGlvbiAgICAqLworI2lmIDAKKwkvKiBGSVhNRSB0dXJuIG9uIHNlcmlhbCBwb3J0cyAqLworCS8qIGxvb2sgaW50byBtb3ZpbmcgdGhpcyB0byBib2FyZF9pbml0KCkgKi8KKwlsZHIgCXIyLCA9KFBYQV9DUzVfUEhZUyArIDB4MDNDMDAwMmMpCisJbW92CXIzLCAjMHgxMworCXN0cglyMywgW3IyXQorI2VuZGlmCisKKyNpZmRlZiBERUJVR19CTElOS19FTkFCTEUKKwkvKiA2dGggYmxpbmsgKi8KKwlibCAJYmxpbmsKKyNlbmRpZgorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIERpc2FibGUgKG1hc2spIGFsbCBpbnRlcnJ1cHRzIGF0IGludGVycnVwdCBjb250cm9sbGVyICAgICAgICAgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2luaXRpcnFzOgorCisJbW92ICAgICByMSwgIzAJCS8qIGNsZWFyIGludC4gbGV2ZWwgcmVnaXN0ZXIgKElSUSwgbm90IEZJUSkgKi8KKwlsZHIgICAgIHIyLCAgPUlDTFIKKwlzdHIgICAgIHIxLCAgW3IyXQorCisJbGRyICAgICByMiwgID1JQ01SCS8qIG1hc2sgYWxsIGludGVycnVwdHMgYXQgdGhlIGNvbnRyb2xsZXIgICAgKi8KKwlzdHIgICAgIHIxLCAgW3IyXQorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIENsb2NrIGluaXRpYWxpc2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2luaXRjbGtzOgorCisJLyogRGlzYWJsZSB0aGUgcGVyaXBoZXJhbCBjbG9ja3MsIGFuZCBzZXQgdGhlIGNvcmUgY2xvY2sgZnJlcXVlbmN5ICAqLworCS8qIChoYXJkLWNvZGluZyBhdCAzOTguMTJNSHogZm9yIG5vdykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworCS8qIFR1cm4gT2ZmIEFMTCBvbi1jaGlwIHBlcmlwaGVyYWwgY2xvY2tzIGZvciByZS1jb25maWd1cmF0aW9uICAgICAgKi8KKwkvKiBOb3RlOiBTZWUgbGFiZWwgJ0VOQUJMRUNMS1MnIGZvciB0aGUgcmUtZW5hYmxpbmcgICAgICAgICAgICAgICAgICovCisjaWYgMAorCWxkciAgICAgcjEsICA9Q0tFTgorCW1vdiAgICAgcjIsICAjMAorCXN0ciAgICAgcjIsICBbcjFdCisKKwkvKiBkZWZhdWx0IHZhbHVlIGluIGNhc2Ugbm8gdmFsaWQgcm90YXJ5IHN3aXRjaCBzZXR0aW5nIGlzIGZvdW5kICAgICovCisJbGRyICAgICByMiwgPShDQ0NSX0wyN3xDQ0NSX00yfENDQ1JfTjEwKSAgLyogREVGQVVMVDogezIwMC8yMDAvMTAwfSAqLworCisJLyogLi4uIGFuZCB3cml0ZSB0aGUgY29yZSBjbG9jayBjb25maWcgcmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAqLworCWxkciAgICAgcjEsICA9Q0NDUgorCXN0ciAgICAgcjIsICBbcjFdCisKKyNlbmRpZgorCisjaWZkZWYgUlRDCisJLyogZW5hYmxlIHRoZSAzMktoeiBvc2NpbGxhdG9yIGZvciBSVEMgYW5kIFBvd2VyTWFuYWdlciAgICAgICAgICAgICAqLworCisJbGRyICAgICByMSwgID1PU0NDCisJbW92ICAgICByMiwgICNPU0NDX09PTgorCXN0ciAgICAgcjIsICBbcjFdCisKKwkvKiBOT1RFOiAgc3BpbiBoZXJlIHVudGlsIE9TQ0MuT09LIGdldCBzZXQsIG1lYW5pbmcgdGhlIFBMTCAgICAgICAgICovCisJLyogaGFzIHNldHRsZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworNjA6CisJbGRyICAgICByMiwgW3IxXQorCWFuZHMgICAgcjIsIHIyLCAjMQorCWJlcSAgICAgNjBiCisjZW5kaWYKKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLyogU2F2ZSBTRFJBTSBzaXplICovCisJbGRyICAgICByMSwgPURSQU1fU0laRQorCSBzdHIJICAgcjgsIFtyMV0KKworCS8qIEludGVycnVwdCBpbml0OiBNYXNrIGFsbCBpbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwlsZHIJcjAsID1JQ01SIC8qIGVuYWJsZSBubyBzb3VyY2VzICovCisJbW92IHIxLCAjMAorCXN0ciByMSwgW3IwXQorCisJLyogRklYTUUgKi8KKworI2RlZmluZSBOT0RFQlVHCisjaWZkZWYgTk9ERUJVRworCS8qRGlzYWJsZSBzb2Z0d2FyZSBhbmQgZGF0YSBicmVha3BvaW50cyAqLworCW1vdglyMCwjMAorCW1jcglwMTUsMCxyMCxjMTQsYzgsMCAgLyogaWJjcjAgKi8KKwltY3IJcDE1LDAscjAsYzE0LGM5LDAgIC8qIGliY3IxICovCisJbWNyCXAxNSwwLHIwLGMxNCxjNCwwICAvKiBkYmNvbiAqLworCisJLypFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KKwltb3YJcjAsIzB4ODAwMDAwMDAKKwltY3IJcDE0LDAscjAsYzEwLGMwLDAgIC8qIGRjc3IgKi8KKyNlbmRpZgorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIEVuZCBtZW1zZXR1cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNpZmRlZiBERUJVR19CTElOS19FTkFCTEUKKwkvKiA3dGggYmxpbmsgKi8KKwlibCAJYmxpbmsKKyNlbmRpZgorCitlbmRtZW1zZXR1cDoKKworCW1vdiAgICAgcGMsIHIxMAorCisKKyNpZmRlZiBERUJVR19CTElOS19FTkFCTEUKKworLyogZGVidWcgTEVEIGNvZGUgKi8KKworLyogZGVsYXkgYWJvdXQgMjAwbXMgKi8KK2RlbGF5OgorCisJLyogcmVzZXQgT1NDUiB0byAwICovCisJbGRyCXI4LCA9T1NDUgorCW1vdglyOSwgIzAKKwlzdHIJcjksIFtyOF0KKworCS8qIG1ha2Ugc3VyZSBuZXcgdmFsdWUgaGFzIHN0dWNrICovCisxOgorCWxkcglyOCwgPU9TQ1IKKwlsZHIJcjksIFtyOF0KKwltb3YJcjgsICMweDEwMDAwCisJY21wCXI5LCByOAorCWJndAkxYgorCisJLyogbm93LCB3YWl0IGZvciBkZWxheSB0byBleHBpcmUgKi8KKzE6CisJbGRyCXI4LCA9T1NDUgorCWxkcglyOSwgW3I4XQorCW1vdglyOCwgIzB4ZDQwMDAKKwljbXAJcjgsIHI5CisJYmd0CTFiCisKKwltb3YJcGMsIGxyCisKKy8qIGJsaW5rIGNvZGUgLS0gdHJhc2hlcyByNywgcjgsIHI5ICovCisKKy5nbG9ibCBibGluaworYmxpbms6CisKKwltb3YJcjcsIGxyCisKKwkvKiBzZXQgR1BJTzEwIGFzIG91dG91dCAqLworCWxkcglyOCwgID1HUERSMAorCWxkcglyOSwgIFtyOF0KKwlvcnIJcjksICByOSwgIygxPDwxMCkKKwlzdHIJcjksICBbcjhdCisKKwkvKiB0dXJuIExFRCBvZmYgKi8KKwltb3YJcjksICAjKDE8PDEwKQorCWxkcglyOCwgID1HUENSMAorCXN0cglyOSwgW3I4XQorCWJsCWRlbGF5CisKKwkvKiB0dXJuIExFRCBvbiAqLworCW1vdglyOSwgICMoMTw8MTApCisJbGRyCXI4LCAgPUdQU1IwCisJc3RyCXI5LCBbcjhdCisJYmwJZGVsYXkKKworCS8qIHR1cm4gTEVEIG9mZiAqLworCW1vdglyOSwgICMoMTw8MTApCisJbGRyCXI4LCAgPUdQQ1IwCisJc3RyCXI5LCBbcjhdCisKKwltb3YJcGMsIHI3CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYm9hcmQvcHhhMjU1X2lkcC9weGFfaWRwLmMgYi9ib2FyZC9weGEyNTVfaWRwL3B4YV9pZHAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWI5OTNhCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvcHhhMjU1X2lkcC9weGFfaWRwLmMKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIEt5bGUgSGFycmlzLCBOZXh1cyBUZWNobm9sb2dpZXMsIEluYy4ga2hhcnJpc0BuZXh1cy10ZWNoLm5ldAorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogU3lzZ28gUmVhbC1UaW1lIFNvbHV0aW9ucywgR21iSCA8d3d3LmVsaW5vcy5jb20+CisgKiBNYXJpdXMgR3JvZWdlciA8bWdyb2VnZXJAc3lzZ28uZGU+CisgKgorICogKEMpIENvcHlyaWdodCAyMDA0CisgKiBCRUMgU3lzdGVtcyA8aHR0cDovL2JlYy1zeXN0ZW1zLmNvbT4KKyAqIENsaWZmIEJyYWtlIDxjbGlmZi5icmFrZUBnbWFpbC5jb20+CisgKiBTdXBwb3J0IGZvciBBY2NlbGVudC9WaWJyZW4gUFhBMjU1IElEUAorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCisvKgorICogTWlzY2VsYW5lb3VzIHBsYXRmb3JtIGRlcGVuZGVudCBpbml0aWFsaXNhdGlvbnMKKyAqLworCitpbnQgYm9hcmRfaW5pdCAodm9pZCkKK3sKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworCS8qIG1lbW9yeSBhbmQgY3B1LXNwZWVkIGFyZSBzZXR1cCBiZWZvcmUgcmVsb2NhdGlvbiAqLworCS8qIHNvIHdlIGRvIF9ub3RoaW5nXyBoZXJlICovCisKKwkvKiBhcmNoIG51bWJlciBvZiBMdWJib2NrLUJvYXJkICovCisJZ2QtPmJkLT5iaV9hcmNoX251bWJlciA9IE1BQ0hfVFlQRV9QWEFfSURQOworCisJLyogYWRyZXNzIG9mIGJvb3QgcGFyYW1ldGVycyAqLworCWdkLT5iZC0+YmlfYm9vdF9wYXJhbXMgPSAweGEwMDAwMTAwOworCisJLyogdHVybiBvbiBzZXJpYWwgcG9ydHMgKi8KKwkqKHZvbGF0aWxlIHVuc2lnbmVkIGludCAqKShQWEFfQ1M1X1BIWVMgKyAweDAzQzAwMDJjKSA9IDB4MTM7CisKKwkvKiBzZXQgUFdNIGZvciBMQ0QgKi8KKwkvKiBhIHZhbHVlIHRoYXQgd29ya3MgaXMgNjBIeiwgNzclIGR1dHkgY3ljbGUgKi8KKwlDS0VOIHw9IENLRU4wX1BXTTA7CisJUFdNX0NUUkwwID0gMHgzZjsKKwlQV01fUEVSVkFMMCA9IDB4M2ZmOworCVBXTV9QV0RVVFkwID0gNzkyOworCisJLyogY2xlYXIgcmVzZXQgdG8gQUM5NyBjb2RlYyAqLworCUNLRU4gfD0gQ0tFTjJfQUM5NzsKKwlHQ1IgPSBHQ1JfQ09MRF9SU1Q7CisKKwkvKiBlbmFibGUgTENEIGJhY2tsaWdodCAqLworCS8qICoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopKFBYQV9DUzVfUEhZUyArIDB4MDNDMDAwMzApID0gMHg3OyAqLworCisJLyogdGVzdCBkaXNwbGF5ICovCisJLyogbGNkX3B1dHMoIlRoaXMgaXMgYSB0ZXN0XG5UZXN0ICMyXG4iKTsgKi8KKworCXJldHVybiAwOworfQorCitpbnQgYm9hcmRfbGF0ZV9pbml0KHZvaWQpCit7CisJc2V0ZW52KCJzdGRvdXQiLCAic2VyaWFsIik7CisJc2V0ZW52KCJzdGRlcnIiLCAic2VyaWFsIik7CisJcmV0dXJuIDA7Cit9CisKKworaW50IGRyYW1faW5pdCAodm9pZCkKK3sKKwlERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOworCWdkLT5iZC0+YmlfZHJhbVsxXS5zdGFydCA9IFBIWVNfU0RSQU1fMjsKKwlnZC0+YmQtPmJpX2RyYW1bMV0uc2l6ZSA9IFBIWVNfU0RSQU1fMl9TSVpFOworCWdkLT5iZC0+YmlfZHJhbVsyXS5zdGFydCA9IFBIWVNfU0RSQU1fMzsKKwlnZC0+YmQtPmJpX2RyYW1bMl0uc2l6ZSA9IFBIWVNfU0RSQU1fM19TSVpFOworCWdkLT5iZC0+YmlfZHJhbVszXS5zdGFydCA9IFBIWVNfU0RSQU1fNDsKKwlnZC0+YmQtPmJpX2RyYW1bM10uc2l6ZSA9IFBIWVNfU0RSQU1fNF9TSVpFOworCisJcmV0dXJuIDA7Cit9CisKKworI2lmZGVmIERFQlVHX0JMSU5LQ19FTkFCTEUKKwordm9pZCBkZWxheV9jKHZvaWQpCit7CisJLyogcmVzZXQgT1NDUiB0byAwICovCisJT1NDUiA9IDA7CisJd2hpbGUoT1NDUiA+IDB4MTAwMDApCisJCTsKKworCXdoaWxlKE9TQ1IgPCAweGQ0MDAwKQorCQk7Cit9CisKK3ZvaWQgYmxpbmtfYyh2b2lkKQoreworCWludCBsZWRfYml0ID0gKDE8PDEwKTsKKworCUdQRFIwID0gbGVkX2JpdDsKKwlHUENSMCA9IGxlZF9iaXQ7CisJZGVsYXlfYygpOworCUdQU1IwID0gbGVkX2JpdDsKKwlkZWxheV9jKCk7CisJR1BDUjAgPSBsZWRfYml0OworfQorCitpbnQgZG9faWRwY21kKGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXByaW50ZigiSURQQ01EIHN0YXJ0ZWRcbiIpOworCXJldHVybiAwOworfQorCitVX0JPT1RfQ01EKGlkcGNtZCwgQ0ZHX01BWEFSR1MsIDAsIGRvX2lkcGNtZCwKKwkgICAiaWRwY21kICAgIC0gY3VzdG9tIElEUCBjb21tYW5kXG4iLAorCSAgICJubyBhcmdzIGF0IHRoaXMgdGltZVxuIgorKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9ib2FyZC9weGEyNTVfaWRwL3B4YV9yZWdfY2FsY3Mub3V0IGIvYm9hcmQvcHhhMjU1X2lkcC9weGFfcmVnX2NhbGNzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGE5OTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvcHhhMjU1X2lkcC9weGFfcmVnX2NhbGNzLm91dApAQCAtMCwwICsxLDExOSBAQAorZ2FmcjBfbDogMHg4MDAwMTAwNQorZ2FmcjBfdTogMHhhNTEyODAxMgorZ2FmcjFfbDogMHg2OTlhOTU1OAorZ2FmcjFfdTogMHhhYWE1YWE2YQorZ2FmcjJfbDogMHhhYWFhYWFhYQorZ2FmcjJfdTogMHgyCitncGNyMDogMHgxODAwNDAwCitncGNyMTogMHgwCitncGNyMjogMHgwCitncGRyMDogMHhjMTgxODQ0MAorZ3BkcjE6IDB4ZmNmZmFiODIKK2dwZHIyOiAweDFmZmZmCitncHNyMDogMHg4MDAwCitncHNyMTogMHgzZjAwMDIKK2dwc3IyOiAweDFjMDAwCisKKworI2RlZmluZSBDRkdfR0FGUjBfTF9WQUwJMHg4MDAwMTAwNQorI2RlZmluZSBDRkdfR0FGUjBfVV9WQUwJMHhhNTEyODAxMgorI2RlZmluZSBDRkdfR0FGUjFfTF9WQUwJMHg2OTlhOTU1OAorI2RlZmluZSBDRkdfR0FGUjFfVV9WQUwJMHhhYWE1YWE2YQorI2RlZmluZSBDRkdfR0FGUjJfTF9WQUwJMHhhYWFhYWFhYQorI2RlZmluZSBDRkdfR0FGUjJfVV9WQUwJMHgyCisjZGVmaW5lIENGR19HUENSMF9WQUwJMHgxODAwNDAwCisjZGVmaW5lIENGR19HUENSMV9WQUwJMHgwCisjZGVmaW5lIENGR19HUENSMl9WQUwJMHgwCisjZGVmaW5lIENGR19HUERSMF9WQUwJMHhjMTgxODQ0MAorI2RlZmluZSBDRkdfR1BEUjFfVkFMCTB4ZmNmZmFiODIKKyNkZWZpbmUgQ0ZHX0dQRFIyX1ZBTAkweDFmZmZmCisjZGVmaW5lIENGR19HUFNSMF9WQUwJMHg4MDAwCisjZGVmaW5lIENGR19HUFNSMV9WQUwJMHgzZjAwMDIKKyNkZWZpbmUgQ0ZHX0dQU1IyX1ZBTAkweDFjMDAwCisKKworR1BJTzogMCwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PW5vbmUsIGRlc2M9VVNFUl9SRVNFVCMKK0dQSU86IDEsIGRpcj0wLCBzZXQ9MCwgY2xyPTAsIGFsdD1ncGlvIHJlc2V0LCBkZXNjPVVTRVJfUkVTRVQjCitHUElPOiAyLCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9Z3BpbywgZGVzYz1CQVRfREFUQQorR1BJTzogMywgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9TVFfSVJRIworR1BJTzogNCwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9SVJRX0VUSAorR1BJTzogNSwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9SVJRX1RPVUNIIworR1BJTzogNiwgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PU1NQyBjbGssIGRlc2M9TU1DX0NMSworR1BJTzogNywgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9UENDX1MwX0NEIworR1BJTzogOCwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9UENDX1MxX0NEIworR1BJTzogOSwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9TU1DX0NEIworR1BJTzogMTAsIGRpcj0xLCBzZXQ9MCwgY2xyPTEsIGFsdD1ncGlvLCBkZXNjPUdQSU9fMTAvUlRDX0NMSy9kZWJ1ZyBMRUQKK0dQSU86IDExLCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9Z3BpbywgZGVzYz0zTTZfQ0xLCitHUElPOiAxMiwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9R1BJT18xMi8zMktfQ0xLCitHUElPOiAxMywgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9TUJHTlQKK0dQSU86IDE0LCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9Z3BpbywgZGVzYz1NQlJFUQorR1BJTzogMTUsIGRpcj0xLCBzZXQ9MSwgY2xyPTAsIGFsdD1uQ1NfMSwgZGVzYz1DUzEjCitHUElPOiAxNiwgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PVBXTTAsIGRlc2M9UFdNMAorR1BJTzogMTcsIGRpcj0wLCBzZXQ9MCwgY2xyPTAsIGFsdD1ncGlvLCBkZXNjPUlSUV9BWEIKK0dQSU86IDE4LCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9UkRZLCBkZXNjPVJEWQorR1BJTzogMTksIGRpcj0wLCBzZXQ9MCwgY2xyPTAsIGFsdD1ncGlvLCBkZXNjPVhCX0RSRVExLCBQQ0NfU09fSVJRX08jCitHUElPOiAyMCwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9WEJfRFJFUTAKK0dQSU86IDIxLCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9Z3BpbywgZGVzYz1JUlFfSURFLCBQRkkKK0dQSU86IDIyLCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9Z3BpbywgZGVzYz1Db25zdW1lciBJUiwgUENDX1MxX0lSUV9PIworR1BJTzogMjMsIGRpcj0xLCBzZXQ9MCwgY2xyPTEsIGFsdD1TU1AgU0NMSywgZGVzYz1TU1BfU0NMSworR1BJTzogMjQsIGRpcj0xLCBzZXQ9MCwgY2xyPTEsIGFsdD1TU1AgU0ZSTSwgZGVzYz1TU1BfU0ZSTQorR1BJTzogMjUsIGRpcj0wLCBzZXQ9MCwgY2xyPTAsIGFsdD1ncGlvLCBkZXNjPVNTUF9UWEQKK0dQSU86IDI2LCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9U1NQIFJYRCwgZGVzYz1TU1BfUlhECitHUElPOiAyNywgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9U1NQX0VYVENMSworR1BJTzogMjgsIGRpcj0wLCBzZXQ9MCwgY2xyPTAsIGFsdD1BQzk3IGJpdGNsayBpbiwgSTJTIGJpdGNsb2NrIG91dCwgZGVzYz1BQ19CSVRDTEsKK0dQSU86IDI5LCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9QUM5NyBTREFUQV9JTjAsIGRlc2M9QVVEX1NESU4wCitHUElPOiAzMCwgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PUFDOTcgU0RBVEFfT1VULCBkZXNjPUFDX1NET1VUCitHUElPOiAzMSwgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PUFDOTcgU1lOQywgZGVzYz1BQ19TWU5DCitHUElPOiAzMiwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PWdwaW8sIGRlc2M9QVVEX1NESU4xCitHUElPOiAzMywgZGlyPTEsIHNldD0xLCBjbHI9MCwgYWx0PW5DU181LCBkZXNjPUNTNSMKK0dQSU86IDM0LCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9RkYgUlhELCBkZXNjPUZGX1JYRAorR1BJTzogMzUsIGRpcj0wLCBzZXQ9MCwgY2xyPTAsIGFsdD1GRiBDVFMsIGRlc2M9RkZfQ1RTCitHUElPOiAzNiwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PUZGIERDRCwgZGVzYz1GRl9EQ0QKK0dQSU86IDM3LCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9RkYgRFNSLCBkZXNjPUZGX0RTUgorR1BJTzogMzgsIGRpcj0wLCBzZXQ9MCwgY2xyPTAsIGFsdD1GRiBSSSwgZGVzYz1GRl9SSQorR1BJTzogMzksIGRpcj0xLCBzZXQ9MCwgY2xyPTAsIGFsdD1GRiBUWEQsIGRlc2M9RkZfVFhECitHUElPOiA0MCwgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PUZGIERUUiwgZGVzYz1GRl9EVFIKK0dQSU86IDQxLCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9RkYgUlRTLCBkZXNjPUZGX1JUUworR1BJTzogNDIsIGRpcj0wLCBzZXQ9MCwgY2xyPTAsIGFsdD1CVCBSWEQsIGRlc2M9QlRfUlhECitHUElPOiA0MywgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PUJUIFRYRCwgZGVzYz1CVF9UWEQKK0dQSU86IDQ0LCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9QlQgQ1RTLCBkZXNjPUJUX0NUUworR1BJTzogNDUsIGRpcj0xLCBzZXQ9MCwgY2xyPTAsIGFsdD1CVCBSVFMsIGRlc2M9QlRfUlRTCitHUElPOiA0NiwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PVNURCBSWEQsIGRlc2M9SVJfUlhECitHUElPOiA0NywgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PVNURCBUWEQsIGRlc2M9SVJfVFhECitHUElPOiA0OCwgZGlyPTEsIHNldD0xLCBjbHI9MCwgYWx0PW5QT0UsIGRlc2M9UENDX09FIworR1BJTzogNDksIGRpcj0xLCBzZXQ9MSwgY2xyPTAsIGFsdD1uUFdFLCBkZXNjPVBDQ19XRSMKK0dQSU86IDUwLCBkaXI9MSwgc2V0PTEsIGNscj0wLCBhbHQ9blBJT1IsIGRlc2M9UENDX0lPUiMKK0dQSU86IDUxLCBkaXI9MSwgc2V0PTEsIGNscj0wLCBhbHQ9blBJT1csIGRlc2M9UENDX0lPVyMKK0dQSU86IDUyLCBkaXI9MSwgc2V0PTEsIGNscj0wLCBhbHQ9blBDRVsxXSwgZGVzYz1QQ0NfQ0UxIworR1BJTzogNTMsIGRpcj0xLCBzZXQ9MSwgY2xyPTAsIGFsdD1uUENFWzJdLCBkZXNjPVBDQ19DRTIjCitHUElPOiA1NCwgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PW5QU0tTRUwsIGRlc2M9UENDX1NDS1NFTAorR1BJTzogNTUsIGRpcj0xLCBzZXQ9MCwgY2xyPTAsIGFsdD1uUFJFRywgZGVzYz1QQ0NfUkVHIworR1BJTzogNTYsIGRpcj0wLCBzZXQ9MCwgY2xyPTAsIGFsdD1uUFdBSVQsIGRlc2M9UENDX1dBSVQjCitHUElPOiA1NywgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PW5JT0lTMTYsIGRlc2M9UENDX0lPSVMxNiMKK0dQSU86IDU4LCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzBdLCBkZXNjPUxERDAKK0dQSU86IDU5LCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzFdLCBkZXNjPUxERDEKK0dQSU86IDYwLCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzJdLCBkZXNjPUxERDIKK0dQSU86IDYxLCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzNdLCBkZXNjPUxERDMKK0dQSU86IDYyLCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzRdLCBkZXNjPUxERDQKK0dQSU86IDYzLCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzVdLCBkZXNjPUxERDUKK0dQSU86IDY0LCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzZdLCBkZXNjPUxERDYKK0dQSU86IDY1LCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzddLCBkZXNjPUxERDcKK0dQSU86IDY2LCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzhdLCBkZXNjPUxERDgKK0dQSU86IDY3LCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzldLCBkZXNjPUxERDkKK0dQSU86IDY4LCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzEwXSwgZGVzYz1MREQxMAorR1BJTzogNjksIGRpcj0xLCBzZXQ9MCwgY2xyPTAsIGFsdD1MRERbMTFdLCBkZXNjPUxERDExCitHUElPOiA3MCwgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PUxERFsxMl0sIGRlc2M9TEREMTIKK0dQSU86IDcxLCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TEREWzEzXSwgZGVzYz1MREQxMworR1BJTzogNzIsIGRpcj0xLCBzZXQ9MCwgY2xyPTAsIGFsdD1MRERbMTRdLCBkZXNjPUxERDE0CitHUElPOiA3MywgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PUxERFsxNV0sIGRlc2M9TEREMTUKK0dQSU86IDc0LCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TENEX0ZDTEssIGRlc2M9RkNMSworR1BJTzogNzUsIGRpcj0xLCBzZXQ9MCwgY2xyPTAsIGFsdD1MQ0RfTENMSywgZGVzYz1MQ0xLCitHUElPOiA3NiwgZGlyPTEsIHNldD0wLCBjbHI9MCwgYWx0PUxDRF9QQ0xLLCBkZXNjPVBDTEsKK0dQSU86IDc3LCBkaXI9MSwgc2V0PTAsIGNscj0wLCBhbHQ9TENEX0FDQklBUywgZGVzYz1BQ0JJQVMKK0dQSU86IDc4LCBkaXI9MSwgc2V0PTEsIGNscj0wLCBhbHQ9bkNTXzIsIGRlc2M9Q1MyIworR1BJTzogNzksIGRpcj0xLCBzZXQ9MSwgY2xyPTAsIGFsdD1uQ1NfMywgZGVzYz1DUzMjCitHUElPOiA4MCwgZGlyPTEsIHNldD0xLCBjbHI9MCwgYWx0PW5DU180LCBkZXNjPUNTNCMKK0dQSU86IDgxLCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9Z3BpbywgZGVzYz0KK0dQSU86IDgyLCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9Z3BpbywgZGVzYz0KK0dQSU86IDgzLCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9Z3BpbywgZGVzYz0KK0dQSU86IDg0LCBkaXI9MCwgc2V0PTAsIGNscj0wLCBhbHQ9Z3BpbywgZGVzYz0KZGlmZiAtLWdpdCBhL2JvYXJkL3B4YTI1NV9pZHAvcHhhX3JlZ19jYWxjcy5weSBiL2JvYXJkL3B4YTI1NV9pZHAvcHhhX3JlZ19jYWxjcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGJjYjRiCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvcHhhMjU1X2lkcC9weGFfcmVnX2NhbGNzLnB5CkBAIC0wLDAgKzEsMzExIEBACisjIS91c3IvYmluL3B5dGhvbgorCisjIChDKSBDb3B5cmlnaHQgMjAwNAorIyBCRUMgU3lzdGVtcyA8aHR0cDovL2JlYy1zeXN0ZW1zLmNvbT4KKyMgQ2xpZmYgQnJha2UgPGNsaWZmLmJyYWtlQGdtYWlsLmNvbT4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyBNQSAwMjExMS0xMzA3IFVTQQorCisjIGNhbGN1bGF0aW9ucyBmb3IgUFhBMjU1IHJlZ2lzdGVycworCitjbGFzcyBncGlvOgorCWRpciA9ICcwJworCXNldCA9ICcwJworCWNsciA9ICcwJworCWFsdCA9ICcwJworCWRlc2MgPSAnJworCisJZGVmIF9faW5pdF9fKHNlbGYsIGRpcj0wLCBzZXQ9MCwgY2xyPTAsIGFsdD0wLCBkZXNjPScnKToKKwkJc2VsZi5kaXIgPSBkaXIKKwkJc2VsZi5zZXQgPSBzZXQKKwkJc2VsZi5jbHIgPSBjbHIKKwkJc2VsZi5hbHQgPSBhbHQKKwkJc2VsZi5kZXNjID0gZGVzYworCQkKKworIyB0aGUgZm9sbG93aW5nIGlzIGEgZGljdGlvbmFyeSBvZiBhbGwgR1BJT3MgaW4gdGhlIHN5c3RlbQorIyB0aGUga2V5IGlzIHRoZSBHUElPIG51bWJlcgorCisKK3B4YTI1NV9hbHRfZnVuYyA9IHsKKwkwOiBbJ2dwaW8nLCAnbm9uZScsICdub25lJywgJ25vbmUnXSwKKwkxOiBbJ2dwaW8nLCAnZ3BpbyByZXNldCcsICdub25lJywgJ25vbmUnXSwKKwkyOiBbJ2dwaW8nLCAnbm9uZScsICdub25lJywgJ25vbmUnXSwKKwkzOiBbJ2dwaW8nLCAnbm9uZScsICdub25lJywgJ25vbmUnXSwKKwk0OiBbJ2dwaW8nLCAnbm9uZScsICdub25lJywgJ25vbmUnXSwKKwk1OiBbJ2dwaW8nLCAnbm9uZScsICdub25lJywgJ25vbmUnXSwKKwk2OiBbJ2dwaW8nLCAnTU1DIGNsaycsICdub25lJywgJ25vbmUnXSwKKwk3OiBbJ2dwaW8nLCAnNDhNSHogY2xvY2snLCAnbm9uZScsICdub25lJ10sCisJODogWydncGlvJywgJ01NQyBDUzAnLCAnbm9uZScsICdub25lJ10sCisJOTogWydncGlvJywgJ01NQyBDUzEnLCAnbm9uZScsICdub25lJ10sCisJMTA6IFsnZ3BpbycsICdSVEMgQ2xvY2snLCAnbm9uZScsICdub25lJ10sCisJMTE6IFsnZ3BpbycsICczLjZNSHonLCAnbm9uZScsICdub25lJ10sCisJMTI6IFsnZ3BpbycsICczMktIeicsICdub25lJywgJ25vbmUnXSwKKwkxMzogWydncGlvJywgJ25vbmUnLCAnTUJHTlQnLCAnbm9uZSddLAorCTE0OiBbJ2dwaW8nLCAnTUJSRVEnLCAnbm9uZScsICdub25lJ10sCisJMTU6IFsnZ3BpbycsICdub25lJywgJ25DU18xJywgJ25vbmUnXSwKKwkxNjogWydncGlvJywgJ25vbmUnLCAnUFdNMCcsICdub25lJ10sCisJMTc6IFsnZ3BpbycsICdub25lJywgJ1BXTTEnLCAnbm9uZSddLAorCTE4OiBbJ2dwaW8nLCAnUkRZJywgJ25vbmUnLCAnbm9uZSddLAorCTE5OiBbJ2dwaW8nLCAnRFJFUVsxXScsICdub25lJywgJ25vbmUnXSwKKwkyMDogWydncGlvJywgJ0RSRVFbMF0nLCAnbm9uZScsICdub25lJ10sCisJMjE6IFsnZ3BpbycsICdub25lJywgJ25vbmUnLCAnbm9uZSddLAorCTIyOiBbJ2dwaW8nLCAnbm9uZScsICdub25lJywgJ25vbmUnXSwKKwkyMzogWydncGlvJywgJ25vbmUnLCAnU1NQIFNDTEsnLCAnbm9uZSddLAorCTI0OiBbJ2dwaW8nLCAnbm9uZScsICdTU1AgU0ZSTScsICdub25lJ10sCisJMjU6IFsnZ3BpbycsICdub25lJywgJ1NTUCBUWEQnLCAnbm9uZSddLAorCTI2OiBbJ2dwaW8nLCAnU1NQIFJYRCcsICdub25lJywgJ25vbmUnXSwKKwkyNzogWydncGlvJywgJ1NTUCBFWFRDTEsnLCAnbm9uZScsICdub25lJ10sCisJMjg6IFsnZ3BpbycsICdBQzk3IGJpdGNsayBpbiwgSTJTIGJpdGNsb2NrIG91dCcsICdJMlMgYml0Y2xvY2sgaW4nLCAnbm9uZSddLAorCTI5OiBbJ2dwaW8nLCAnQUM5NyBTREFUQV9JTjAnLCAnSTJTIFNEQVRBX0lOJywgJ25vbmUnXSwKKwkzMDogWydncGlvJywgJ0kyUyBTREFUQV9PVVQnLCAnQUM5NyBTREFUQV9PVVQnLCAnbm9uZSddLAorCTMxOiBbJ2dwaW8nLCAnSTJTIFNZTkMnLCAnQUM5NyBTWU5DJywgJ25vbmUnXSwKKwkzMjogWydncGlvJywgJ0FDOTcgU0RBVEFfSU4xJywgJ0kyUyBTWVNDTEsnLCAnbm9uZSddLAorCTMzOiBbJ2dwaW8nLCAnbm9uZScsICduQ1NfNScsICdub25lJ10sCisJMzQ6IFsnZ3BpbycsICdGRiBSWEQnLCAnTU1DIENTMCcsICdub25lJ10sCisJMzU6IFsnZ3BpbycsICdGRiBDVFMnLCAnbm9uZScsICdub25lJ10sCisJMzY6IFsnZ3BpbycsICdGRiBEQ0QnLCAnbm9uZScsICdub25lJ10sCisJMzc6IFsnZ3BpbycsICdGRiBEU1InLCAnbm9uZScsICdub25lJ10sCisJMzg6IFsnZ3BpbycsICdGRiBSSScsICdub25lJywgJ25vbmUnXSwKKwkzOTogWydncGlvJywgJ01NQyBDUzEnLCAnRkYgVFhEJywgJ25vbmUnXSwKKwk0MDogWydncGlvJywgJ25vbmUnLCAnRkYgRFRSJywgJ25vbmUnXSwKKwk0MTogWydncGlvJywgJ25vbmUnLCAnRkYgUlRTJywgJ25vbmUnXSwKKwk0MjogWydncGlvJywgJ0JUIFJYRCcsICdub25lJywgJ0hXIFJYRCddLAorCTQzOiBbJ2dwaW8nLCAnbm9uZScsICdCVCBUWEQnLCAnSFcgVFhEJ10sCisJNDQ6IFsnZ3BpbycsICdCVCBDVFMnLCAnbm9uZScsICdIVyBDVFMnXSwKKwk0NTogWydncGlvJywgJ25vbmUnLCAnQlQgUlRTJywgJ0hXIFJUUyddLAorCTQ2OiBbJ2dwaW8nLCAnSUNQX1JYRCcsICdTVEQgUlhEJywgJ25vbmUnXSwKKwk0NzogWydncGlvJywgJ1NURCBUWEQnLCAnSUNQX1RYRCcsICdub25lJ10sCisJNDg6IFsnZ3BpbycsICdIVyBUWEQnLCAnblBPRScsICdub25lJ10sCisJNDk6IFsnZ3BpbycsICdIVyBSWEQnLCAnblBXRScsICdub25lJ10sCisJNTA6IFsnZ3BpbycsICdIVyBDVFMnLCAnblBJT1InLCAnbm9uZSddLAorCTUxOiBbJ2dwaW8nLCAnblBJT1cnLCAnSFcgUlRTJywgJ25vbmUnXSwKKwk1MjogWydncGlvJywgJ25vbmUnLCAnblBDRVsxXScsICdub25lJ10sCisJNTM6IFsnZ3BpbycsICdNTUMgQ0xLJywgJ25QQ0VbMl0nLCAnbm9uZSddLAorCTU0OiBbJ2dwaW8nLCAnTU1DIENMSycsICduUFNLU0VMJywgJ25vbmUnXSwKKwk1NTogWydncGlvJywgJ25vbmUnLCAnblBSRUcnLCAnbm9uZSddLAorCTU2OiBbJ2dwaW8nLCAnblBXQUlUJywgJ25vbmUnLCAnbm9uZSddLAorCTU3OiBbJ2dwaW8nLCAnbklPSVMxNicsICdub25lJywgJ25vbmUnXSwKKwk1ODogWydncGlvJywgJ25vbmUnLCAnTEREWzBdJywgJ25vbmUnXSwKKwk1OTogWydncGlvJywgJ25vbmUnLCAnTEREWzFdJywgJ25vbmUnXSwKKwk2MDogWydncGlvJywgJ25vbmUnLCAnTEREWzJdJywgJ25vbmUnXSwKKwk2MTogWydncGlvJywgJ25vbmUnLCAnTEREWzNdJywgJ25vbmUnXSwKKwk2MjogWydncGlvJywgJ25vbmUnLCAnTEREWzRdJywgJ25vbmUnXSwKKwk2MzogWydncGlvJywgJ25vbmUnLCAnTEREWzVdJywgJ25vbmUnXSwKKwk2NDogWydncGlvJywgJ25vbmUnLCAnTEREWzZdJywgJ25vbmUnXSwKKwk2NTogWydncGlvJywgJ25vbmUnLCAnTEREWzddJywgJ25vbmUnXSwKKwk2NjogWydncGlvJywgJ01CUkVRJywgJ0xERFs4XScsICdub25lJ10sCisJNjc6IFsnZ3BpbycsICdNTUMgQ1MwJywgJ0xERFs5XScsICdub25lJ10sCisJNjg6IFsnZ3BpbycsICdNTUMgQ1MxJywgJ0xERFsxMF0nLCAnbm9uZSddLAorCTY5OiBbJ2dwaW8nLCAnTU1DIENMSycsICdMRERbMTFdJywgJ25vbmUnXSwKKwk3MDogWydncGlvJywgJ1JUQyBDTEsnLCAnTEREWzEyXScsICdub25lJ10sCisJNzE6IFsnZ3BpbycsICczLjYgTUh6JywgJ0xERFsxM10nLCAnbm9uZSddLAorCTcyOiBbJ2dwaW8nLCAnMzIgS0h6JywgJ0xERFsxNF0nLCAnbm9uZSddLAorCTczOiBbJ2dwaW8nLCAnTUJHTlQnLCAnTEREWzE1XScsICdub25lJ10sCisJNzQ6IFsnZ3BpbycsICdub25lJywgJ0xDRF9GQ0xLJywgJ25vbmUnXSwKKwk3NTogWydncGlvJywgJ25vbmUnLCAnTENEX0xDTEsnLCAnbm9uZSddLAorCTc2OiBbJ2dwaW8nLCAnbm9uZScsICdMQ0RfUENMSycsICdub25lJ10sCisJNzc6IFsnZ3BpbycsICdub25lJywgJ0xDRF9BQ0JJQVMnLCAnbm9uZSddLAorCTc4OiBbJ2dwaW8nLCAnbm9uZScsICduQ1NfMicsICdub25lJ10sCisJNzk6IFsnZ3BpbycsICdub25lJywgJ25DU18zJywgJ25vbmUnXSwKKwk4MDogWydncGlvJywgJ25vbmUnLCAnbkNTXzQnLCAnbm9uZSddLAorCTgxOiBbJ2dwaW8nLCAnTlNTUFNDTEsnLCAnbm9uZScsICdub25lJ10sCisJODI6IFsnZ3BpbycsICdOU1NQU0ZSTScsICdub25lJywgJ25vbmUnXSwKKwk4MzogWydncGlvJywgJ05TU1BUWEQnLCAnTlNTUFJYRCcsICdub25lJ10sCisJODQ6IFsnZ3BpbycsICdOU1NQVFhEJywgJ05TU1BSWEQnLCAnbm9uZSddLAorfQorCisKKyNkZWYgX19pbml0X18oc2VsZiwgZGlyPTAsIHNldD0wLCBjbHI9MCwgYWx0PTAsIGRlc2M9JycpOgorCitncGlvX2xpc3QgPSBbXQorCitmb3IgaSBpbiByYW5nZSgwLDg1KToKKwlncGlvX2xpc3QuYXBwZW5kKGdwaW8oKSkKKworI2NoaXAgc2VsZWN0IEdQSU9zCitncGlvX2xpc3RbMThdID0gZ3BpbygwLCAwLCAwLCAxLCAnUkRZJykKK2dwaW9fbGlzdFszM10gPSBncGlvKDEsIDEsIDAsIDIsICdDUzUjJykKK2dwaW9fbGlzdFs4MF0gPSBncGlvKDEsIDEsIDAsIDIsICdDUzQjJykKK2dwaW9fbGlzdFs3OV0gPSBncGlvKDEsIDEsIDAsIDIsICdDUzMjJykKK2dwaW9fbGlzdFs3OF0gPSBncGlvKDEsIDEsIDAsIDIsICdDUzIjJykKK2dwaW9fbGlzdFsxNV0gPSBncGlvKDEsIDEsIDAsIDIsICdDUzEjJykKK2dwaW9fbGlzdFsyMl0gPSBncGlvKDAsIDAsIDAsIDAsICdDb25zdW1lciBJUiwgUENDX1MxX0lSUV9PIycpCitncGlvX2xpc3RbMjFdID0gZ3BpbygwLCAwLCAwLCAwLCAnSVJRX0lERSwgUEZJJykKK2dwaW9fbGlzdFsxOV0gPSBncGlvKDAsIDAsIDAsIDAsICdYQl9EUkVRMSwgUENDX1NPX0lSUV9PIycpCitncGlvX2xpc3RbMjBdID0gZ3BpbygwLCAwLCAwLCAwLCAnWEJfRFJFUTAnKQorZ3Bpb19saXN0WzIwXSA9IGdwaW8oMCwgMCwgMCwgMCwgJ1hCX0RSRVEwJykKK2dwaW9fbGlzdFsxN10gPSBncGlvKDAsIDAsIDAsIDAsICdJUlFfQVhCJykKK2dwaW9fbGlzdFsxNl0gPSBncGlvKDEsIDAsIDAsIDIsICdQV00wJykKKworIyBQQ01DSUEgc3R1ZmYKK2dwaW9fbGlzdFs1N10gPSBncGlvKDAsIDAsIDAsIDEsICdQQ0NfSU9JUzE2IycpCitncGlvX2xpc3RbNTZdID0gZ3BpbygwLCAwLCAwLCAxLCAnUENDX1dBSVQjJykKK2dwaW9fbGlzdFs1NV0gPSBncGlvKDEsIDAsIDAsIDIsICdQQ0NfUkVHIycpCitncGlvX2xpc3RbNTRdID0gZ3BpbygxLCAwLCAwLCAyLCAnUENDX1NDS1NFTCcpCitncGlvX2xpc3RbNTNdID0gZ3BpbygxLCAxLCAwLCAyLCAnUENDX0NFMiMnKQorZ3Bpb19saXN0WzUyXSA9IGdwaW8oMSwgMSwgMCwgMiwgJ1BDQ19DRTEjJykKK2dwaW9fbGlzdFs1MV0gPSBncGlvKDEsIDEsIDAsIDEsICdQQ0NfSU9XIycpCitncGlvX2xpc3RbNTBdID0gZ3BpbygxLCAxLCAwLCAyLCAnUENDX0lPUiMnKQorZ3Bpb19saXN0WzQ5XSA9IGdwaW8oMSwgMSwgMCwgMiwgJ1BDQ19XRSMnKQorZ3Bpb19saXN0WzQ4XSA9IGdwaW8oMSwgMSwgMCwgMiwgJ1BDQ19PRSMnKQorCisjIFNTUCBwb3J0CitncGlvX2xpc3RbMjZdID0gZ3BpbygwLCAwLCAwLCAxLCAnU1NQX1JYRCcpCitncGlvX2xpc3RbMjVdID0gZ3BpbygwLCAwLCAwLCAwLCAnU1NQX1RYRCcpCitncGlvX2xpc3RbMjRdID0gZ3BpbygxLCAwLCAxLCAyLCAnU1NQX1NGUk0nKQorZ3Bpb19saXN0WzIzXSA9IGdwaW8oMSwgMCwgMSwgMiwgJ1NTUF9TQ0xLJykKK2dwaW9fbGlzdFsyN10gPSBncGlvKDAsIDAsIDAsIDAsICdTU1BfRVhUQ0xLJykKKworIyBhdWRpbyBjb2RlYworZ3Bpb19saXN0WzMyXSA9IGdwaW8oMCwgMCwgMCwgMCwgJ0FVRF9TRElOMScpCitncGlvX2xpc3RbMzFdID0gZ3BpbygxLCAwLCAwLCAyLCAnQUNfU1lOQycpCitncGlvX2xpc3RbMzBdID0gZ3BpbygxLCAwLCAwLCAyLCAnQUNfU0RPVVQnKQorZ3Bpb19saXN0WzI5XSA9IGdwaW8oMCwgMCwgMCwgMSwgJ0FVRF9TRElOMCcpCitncGlvX2xpc3RbMjhdID0gZ3BpbygwLCAwLCAwLCAxLCAnQUNfQklUQ0xLJykKKworIyBzZXJpYWwgcG9ydHMKK2dwaW9fbGlzdFszOV0gPSBncGlvKDEsIDAsIDAsIDIsICdGRl9UWEQnKQorZ3Bpb19saXN0WzM0XSA9IGdwaW8oMCwgMCwgMCwgMSwgJ0ZGX1JYRCcpCitncGlvX2xpc3RbNDFdID0gZ3BpbygxLCAwLCAwLCAyLCAnRkZfUlRTJykKK2dwaW9fbGlzdFszNV0gPSBncGlvKDAsIDAsIDAsIDEsICdGRl9DVFMnKQorZ3Bpb19saXN0WzQwXSA9IGdwaW8oMSwgMCwgMCwgMiwgJ0ZGX0RUUicpCitncGlvX2xpc3RbMzddID0gZ3BpbygwLCAwLCAwLCAxLCAnRkZfRFNSJykKK2dwaW9fbGlzdFszOF0gPSBncGlvKDAsIDAsIDAsIDEsICdGRl9SSScpCitncGlvX2xpc3RbMzZdID0gZ3BpbygwLCAwLCAwLCAxLCAnRkZfRENEJykKKworZ3Bpb19saXN0WzQzXSA9IGdwaW8oMSwgMCwgMCwgMiwgJ0JUX1RYRCcpCitncGlvX2xpc3RbNDJdID0gZ3BpbygwLCAwLCAwLCAxLCAnQlRfUlhEJykKK2dwaW9fbGlzdFs0NV0gPSBncGlvKDEsIDAsIDAsIDIsICdCVF9SVFMnKQorZ3Bpb19saXN0WzQ0XSA9IGdwaW8oMCwgMCwgMCwgMSwgJ0JUX0NUUycpCisKK2dwaW9fbGlzdFs0N10gPSBncGlvKDEsIDAsIDAsIDEsICdJUl9UWEQnKQorZ3Bpb19saXN0WzQ2XSA9IGdwaW8oMCwgMCwgMCwgMiwgJ0lSX1JYRCcpCisKKyMgbWlzYyBHUElPIHNpZ25hbHMKK2dwaW9fbGlzdFsxNF0gPSBncGlvKDAsIDAsIDAsIDAsICdNQlJFUScpCitncGlvX2xpc3RbMTNdID0gZ3BpbygwLCAwLCAwLCAwLCAnTUJHTlQnKQorZ3Bpb19saXN0WzEyXSA9IGdwaW8oMCwgMCwgMCwgMCwgJ0dQSU9fMTIvMzJLX0NMSycpCitncGlvX2xpc3RbMTFdID0gZ3BpbygwLCAwLCAwLCAwLCAnM002X0NMSycpCitncGlvX2xpc3RbMTBdID0gZ3BpbygxLCAwLCAxLCAwLCAnR1BJT18xMC9SVENfQ0xLL2RlYnVnIExFRCcpCitncGlvX2xpc3RbOV0gPSBncGlvKDAsIDAsIDAsIDAsICdNTUNfQ0QjJykKK2dwaW9fbGlzdFs4XSA9IGdwaW8oMCwgMCwgMCwgMCwgJ1BDQ19TMV9DRCMnKQorZ3Bpb19saXN0WzddID0gZ3BpbygwLCAwLCAwLCAwLCAnUENDX1MwX0NEIycpCitncGlvX2xpc3RbNl0gPSBncGlvKDEsIDAsIDAsIDEsICdNTUNfQ0xLJykKK2dwaW9fbGlzdFs1XSA9IGdwaW8oMCwgMCwgMCwgMCwgJ0lSUV9UT1VDSCMnKQorZ3Bpb19saXN0WzRdID0gZ3BpbygwLCAwLCAwLCAwLCAnSVJRX0VUSCcpCitncGlvX2xpc3RbM10gPSBncGlvKDAsIDAsIDAsIDAsICdNUV9JUlEjJykKK2dwaW9fbGlzdFsyXSA9IGdwaW8oMCwgMCwgMCwgMCwgJ0JBVF9EQVRBJykKK2dwaW9fbGlzdFsxXSA9IGdwaW8oMCwgMCwgMCwgMSwgJ1VTRVJfUkVTRVQjJykKK2dwaW9fbGlzdFswXSA9IGdwaW8oMCwgMCwgMCwgMSwgJ1VTRVJfUkVTRVQjJykKKworIyBMQ0QgR1BJT3MKK2dwaW9fbGlzdFs1OF0gPSBncGlvKDEsIDAsIDAsIDIsICdMREQwJykKK2dwaW9fbGlzdFs1OV0gPSBncGlvKDEsIDAsIDAsIDIsICdMREQxJykKK2dwaW9fbGlzdFs2MF0gPSBncGlvKDEsIDAsIDAsIDIsICdMREQyJykKK2dwaW9fbGlzdFs2MV0gPSBncGlvKDEsIDAsIDAsIDIsICdMREQzJykKK2dwaW9fbGlzdFs2Ml0gPSBncGlvKDEsIDAsIDAsIDIsICdMREQ0JykKK2dwaW9fbGlzdFs2M10gPSBncGlvKDEsIDAsIDAsIDIsICdMREQ1JykKK2dwaW9fbGlzdFs2NF0gPSBncGlvKDEsIDAsIDAsIDIsICdMREQ2JykKK2dwaW9fbGlzdFs2NV0gPSBncGlvKDEsIDAsIDAsIDIsICdMREQ3JykKK2dwaW9fbGlzdFs2Nl0gPSBncGlvKDEsIDAsIDAsIDIsICdMREQ4JykKK2dwaW9fbGlzdFs2N10gPSBncGlvKDEsIDAsIDAsIDIsICdMREQ5JykKK2dwaW9fbGlzdFs2OF0gPSBncGlvKDEsIDAsIDAsIDIsICdMREQxMCcpCitncGlvX2xpc3RbNjldID0gZ3BpbygxLCAwLCAwLCAyLCAnTEREMTEnKQorZ3Bpb19saXN0WzcwXSA9IGdwaW8oMSwgMCwgMCwgMiwgJ0xERDEyJykKK2dwaW9fbGlzdFs3MV0gPSBncGlvKDEsIDAsIDAsIDIsICdMREQxMycpCitncGlvX2xpc3RbNzJdID0gZ3BpbygxLCAwLCAwLCAyLCAnTEREMTQnKQorZ3Bpb19saXN0WzczXSA9IGdwaW8oMSwgMCwgMCwgMiwgJ0xERDE1JykKK2dwaW9fbGlzdFs3NF0gPSBncGlvKDEsIDAsIDAsIDIsICdGQ0xLJykKK2dwaW9fbGlzdFs3NV0gPSBncGlvKDEsIDAsIDAsIDIsICdMQ0xLJykKK2dwaW9fbGlzdFs3Nl0gPSBncGlvKDEsIDAsIDAsIDIsICdQQ0xLJykKK2dwaW9fbGlzdFs3N10gPSBncGlvKDEsIDAsIDAsIDIsICdBQ0JJQVMnKQorCisjIGNhbGN1bGF0ZSByZWdpc3RlcnMKK3B4YV9yZWdzID0geworCSdncGRyMCc6MCwgJ2dwZHIxJzowLCAnZ3BkcjInOjAsCisJJ2dwc3IwJzowLCAnZ3BzcjEnOjAsICdncHNyMic6MCwKKwknZ3BjcjAnOjAsICdncGNyMSc6MCwgJ2dwY3IyJzowLAorCSdnYWZyMF9sJzowLCAnZ2FmcjBfdSc6MCwKKwknZ2FmcjFfbCc6MCwgJ2dhZnIxX3UnOjAsCisJJ2dhZnIyX2wnOjAsICdnYWZyMl91JzowLAorfQorCisjIFUtYm9vdCBkZWZpbmUgbmFtZXMKK3Vib290X3JlZ19uYW1lcyA9IHsKKwknZ3BkcjAnOidDRkdfR1BEUjBfVkFMJywgJ2dwZHIxJzonQ0ZHX0dQRFIxX1ZBTCcsICdncGRyMic6J0NGR19HUERSMl9WQUwnLAorCSdncHNyMCc6J0NGR19HUFNSMF9WQUwnLCAnZ3BzcjEnOidDRkdfR1BTUjFfVkFMJywgJ2dwc3IyJzonQ0ZHX0dQU1IyX1ZBTCcsCisJJ2dwY3IwJzonQ0ZHX0dQQ1IwX1ZBTCcsICdncGNyMSc6J0NGR19HUENSMV9WQUwnLCAnZ3BjcjInOidDRkdfR1BDUjJfVkFMJywKKwknZ2FmcjBfbCc6J0NGR19HQUZSMF9MX1ZBTCcsICdnYWZyMF91JzonQ0ZHX0dBRlIwX1VfVkFMJywKKwknZ2FmcjFfbCc6J0NGR19HQUZSMV9MX1ZBTCcsICdnYWZyMV91JzonQ0ZHX0dBRlIxX1VfVkFMJywKKwknZ2FmcjJfbCc6J0NGR19HQUZSMl9MX1ZBTCcsICdnYWZyMl91JzonQ0ZHX0dBRlIyX1VfVkFMJywKK30KKworIyBiaXQgbWFwcGluZ3MKKworYml0X21hcHBpbmdzID0gWworCit7ICdncGlvJzooMCwzMiksICAnc2hpZnQnOjEsICdyZWdzJzp7J2Rpcic6J2dwZHIwJywgJ3NldCc6J2dwc3IwJywgJ2Nscic6J2dwY3IwJ30gfSwKK3sgJ2dwaW8nOigzMiw2NCksICdzaGlmdCc6MSwgJ3JlZ3MnOnsnZGlyJzonZ3BkcjEnLCAnc2V0JzonZ3BzcjEnLCAnY2xyJzonZ3BjcjEnfSB9LAoreyAnZ3Bpbyc6KDY0LDg1KSwgJ3NoaWZ0JzoxLCAncmVncyc6eydkaXInOidncGRyMicsICdzZXQnOidncHNyMicsICdjbHInOidncGNyMid9IH0sCit7ICdncGlvJzooMCwxNiksICAnc2hpZnQnOjIsICdyZWdzJzp7J2FsdCc6J2dhZnIwX2wnfSB9LAoreyAnZ3Bpbyc6KDE2LDMyKSwgJ3NoaWZ0JzoyLCAncmVncyc6eydhbHQnOidnYWZyMF91J30gfSwKK3sgJ2dwaW8nOigzMiw0OCksICdzaGlmdCc6MiwgJ3JlZ3MnOnsnYWx0JzonZ2FmcjFfbCd9IH0sCit7ICdncGlvJzooNDgsNjQpLCAnc2hpZnQnOjIsICdyZWdzJzp7J2FsdCc6J2dhZnIxX3UnfSB9LAoreyAnZ3Bpbyc6KDY0LDgwKSwgJ3NoaWZ0JzoyLCAncmVncyc6eydhbHQnOidnYWZyMl9sJ30gfSwKK3sgJ2dwaW8nOig4MCw4NSksICdzaGlmdCc6MiwgJ3JlZ3MnOnsnYWx0JzonZ2FmcjJfdSd9IH0sCisKK10KKworZGVmIHN0dWZmX2JpdHMoYml0X21hcHBpbmcsIGdwaW9fbGlzdCk6CisJZ3Bpb3MgPSByYW5nZSggYml0X21hcHBpbmdbJ2dwaW8nXVswXSwgYml0X21hcHBpbmdbJ2dwaW8nXVsxXSkKKworCWZvciBncGlvIGluIGdwaW9zOgorCQlmb3IgcmVnIGluIGJpdF9tYXBwaW5nWydyZWdzJ10ua2V5cygpOgorCQkJdmFsdWUgPSBldmFsKCAnZ3Bpb19saXN0W2dwaW9dLiVzJyAlIChyZWcpICkKKwkJCWlmICggdmFsdWUgKToKKwkJCQkjIHdlIGhhdmUgYSBoaWdoIGJpdAorCQkJCWJpdF9zaGlmdCA9IChncGlvIC0gYml0X21hcHBpbmdbJ2dwaW8nXVswXSkgKiBiaXRfbWFwcGluZ1snc2hpZnQnXQorCQkJCWJpdCA9IHZhbHVlIDw8IChiaXRfc2hpZnQpCisJCQkJcHhhX3JlZ3NbYml0X21hcHBpbmdbJ3JlZ3MnXVtyZWddXSB8PSBiaXQKKworZm9yIGkgaW4gYml0X21hcHBpbmdzOgorCXN0dWZmX2JpdHMoaSwgZ3Bpb19saXN0KQorCisjIG5vdyBwcmludCBvdXQgYWxsIHJlZ3MKK3JlZ2lzdGVycyA9IHB4YV9yZWdzLmtleXMoKQorcmVnaXN0ZXJzLnNvcnQoKQorZm9yIHJlZyBpbiByZWdpc3RlcnM6CisJcHJpbnQgJyVzOiAweCV4JyAlIChyZWcsIHB4YV9yZWdzW3JlZ10pCisKKyMgcHJpbnQgZGVmaW5lIHRvIHBhc3QgcmlnaHQgaW50byBVLUJvb3Qgc291cmNlIGNvZGUKKworcHJpbnQgCitwcmludCAKKworZm9yIHJlZyBpbiByZWdpc3RlcnM6CisJcHJpbnQgJyNkZWZpbmUgJXMJMHgleCcgJSAodWJvb3RfcmVnX25hbWVzW3JlZ10sIHB4YV9yZWdzW3JlZ10pCisKKyMgcHJpbnQgYWxsIEdQSU9TCitwcmludAorcHJpbnQKKworZm9yIGkgaW4gcmFuZ2UobGVuKGdwaW9fbGlzdCkpOgorCWdwaW9faSA9IGdwaW9fbGlzdFtpXQorCWFsdF9mdW5jX2Rlc2MgPSBweGEyNTVfYWx0X2Z1bmNbaV1bZ3Bpb19pLmFsdF0KKwlwcmludCAnR1BJTzogJWksIGRpcj0laSwgc2V0PSVpLCBjbHI9JWksIGFsdD0lcywgZGVzYz0lcycgJSAoaSwgZ3Bpb19pLmRpciwgZ3Bpb19pLnNldCwgZ3Bpb19pLmNsciwgYWx0X2Z1bmNfZGVzYywgZ3Bpb19pLmRlc2MpCisKKwpkaWZmIC0tZ2l0IGEvYm9hcmQvcHhhMjU1X2lkcC91LWJvb3QubGRzIGIvYm9hcmQvcHhhMjU1X2lkcC91LWJvb3QubGRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwY2UxMDgKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9weGEyNTVfaWRwL3UtYm9vdC5sZHMKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMC0yMDA1CisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKK09VVFBVVF9GT1JNQVQoImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItbGl0dGxlYXJtIikKK09VVFBVVF9BUkNIKGFybSkKK0VOVFJZKF9zdGFydCkKK1NFQ1RJT05TCit7CisJLiA9IDB4MDAwMDAwMDA7CisKKwkuID0gQUxJR04oNCk7CisJLnRleHQgICAgICA6CisJeworCSAgY3B1L3B4YS9zdGFydC5vCSgudGV4dCkKKwkgICooLnRleHQpCisJfQorCisJLiA9IEFMSUdOKDQpOworCS5yb2RhdGEgOiB7ICooLnJvZGF0YSkgfQorCisJLiA9IEFMSUdOKDQpOworCS5kYXRhIDogeyAqKC5kYXRhKSB9CisKKwkuID0gQUxJR04oNCk7CisJLmdvdCA6IHsgKiguZ290KSB9CisKKwlfX3VfYm9vdF9jbWRfc3RhcnQgPSAuOworCS51X2Jvb3RfY21kIDogeyAqKC51X2Jvb3RfY21kKSB9CisJX191X2Jvb3RfY21kX2VuZCA9IC47CisKKwkuID0gQUxJR04oNCk7CisJX19ic3Nfc3RhcnQgPSAuOworCS5ic3MgOiB7ICooLmJzcykgfQorCV9lbmQgPSAuOworfQo=