LyoKICogQ29weXJpZ2h0IKkgMjAwNiBJbnRlbCBDb3Jwb3JhdGlvbgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAogKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCiAqIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCiAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAqIFNPRlRXQVJFLgogKgogKiBBdXRob3JzOgogKiAgICBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PgogKgogKi8KCiNpZm5kZWYgX0k4MzBfQklPU19IXwojZGVmaW5lIF9JODMwX0JJT1NfSF8KCiNpbmNsdWRlICJkcm1QLmgiCgpzdHJ1Y3QgdmJ0X2hlYWRlciB7Cgl1OCBzaWduYXR1cmVbMjBdOwkJLyoqPCBBbHdheXMgc3RhcnRzIHdpdGggJ1ZCVCQnICovCgl1MTYgdmVyc2lvbjsJCQkvKio8IGRlY2ltYWwgKi8KCXUxNiBoZWFkZXJfc2l6ZTsJCS8qKjwgaW4gYnl0ZXMgKi8KCXUxNiB2YnRfc2l6ZTsJCQkvKio8IGluIGJ5dGVzICovCgl1OCB2YnRfY2hlY2tzdW07Cgl1OCByZXNlcnZlZDA7Cgl1MzIgYmRiX29mZnNldDsJCQkvKio8IGZyb20gYmVnaW5uaW5nIG9mIFZCVCAqLwoJdTMyIGFpbV9vZmZzZXRbNF07CQkvKio8IGZyb20gYmVnaW5uaW5nIG9mIFZCVCAqLwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGJkYl9oZWFkZXIgewoJdTggc2lnbmF0dXJlWzE2XTsJCS8qKjwgQWx3YXlzICdCSU9TX0RBVEFfQkxPQ0snICovCgl1MTYgdmVyc2lvbjsJCQkvKio8IGRlY2ltYWwgKi8KCXUxNiBoZWFkZXJfc2l6ZTsJCS8qKjwgaW4gYnl0ZXMgKi8KCXUxNiBiZGJfc2l6ZTsJCQkvKio8IGluIGJ5dGVzICovCn07CgovKiBzdHJpY3RseSBzcGVha2luZywgdGhpcyBpcyBhICJza2lwIiBibG9jaywgYnV0IGl0IGhhcyBpbnRlcmVzdGluZyBpbmZvICovCnN0cnVjdCB2Ymlvc19kYXRhIHsKCXU4IHR5cGU7IC8qIDAgPT0gZGVza3RvcCwgMSA9PSBtb2JpbGUgKi8KCXU4IHJlbHN0YWdlOwoJdTggY2hpcHNldDsKCXU4IGx2ZHNfcHJlc2VudDoxOwoJdTggdHZfcHJlc2VudDoxOwoJdTggcnN2ZDI6NjsgLyogZmluaXNoIGJ5dGUgKi8KCXU4IHJzdmQzWzRdOwoJdTggc2lnbm9uWzE1NV07Cgl1OCBjb3B5cmlnaHRbNjFdOwoJdTE2IGNvZGVfc2VnbWVudDsKCXU4IGRvc19ib290X21vZGU7Cgl1OCBiYW5kd2lkdGhfcGVyY2VudDsKCXU4IHJzdmQ0OyAvKiBwb3B1cCBtZW1vcnkgc2l6ZSAqLwoJdTggcmVzaXplX3BjaV9iaW9zOwoJdTggcnN2ZDU7IC8qIGlzIGNydCBhbHJlYWR5IG9uIGRkYzIgKi8KfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCi8qCiAqIFRoZXJlIGFyZSBzZXZlcmFsIHR5cGVzIG9mIEJJT1MgZGF0YSBibG9ja3MgKEJEQnMpLCBlYWNoIGJsb2NrIGhhcwogKiBhbiBJRCBhbmQgc2l6ZSBpbiB0aGUgZmlyc3QgMyBieXRlcyAoSUQgaW4gZmlyc3QsIHNpemUgaW4gbmV4dCAyKS4KICogS25vd24gdHlwZXMgYXJlIGxpc3RlZCBiZWxvdy4KICovCiNkZWZpbmUgQkRCX0dFTkVSQUxfRkVBVFVSRVMJICAxCiNkZWZpbmUgQkRCX0dFTkVSQUxfREVGSU5JVElPTlMJICAyCiNkZWZpbmUgQkRCX09MRF9UT0dHTEVfTElTVAkgIDMKI2RlZmluZSBCREJfTU9ERV9TVVBQT1JUX0xJU1QJICA0CiNkZWZpbmUgQkRCX0dFTkVSSUNfTU9ERV9UQUJMRQkgIDUKI2RlZmluZSBCREJfRVhUX01NSU9fUkVHUwkgIDYKI2RlZmluZSBCREJfU1dGX0lPCQkgIDcKI2RlZmluZSBCREJfU1dGX01NSU8JCSAgOAojZGVmaW5lIEJEQl9ET1RfQ0xPQ0tfVEFCTEUJICA5CiNkZWZpbmUgQkRCX01PREVfUkVNT1ZBTF9UQUJMRQkgMTAKI2RlZmluZSBCREJfQ0hJTERfREVWSUNFX1RBQkxFCSAxMQojZGVmaW5lIEJEQl9EUklWRVJfRkVBVFVSRVMJIDEyCiNkZWZpbmUgQkRCX0RSSVZFUl9QRVJTSVNURU5DRQkgMTMKI2RlZmluZSBCREJfRVhUX1RBQkxFX1BUUlMJIDE0CiNkZWZpbmUgQkRCX0RPVF9DTE9DS19PVkVSUklERQkgMTUKI2RlZmluZSBCREJfRElTUExBWV9TRUxFQ1QJIDE2Ci8qIDE3IHJzdmQgKi8KI2RlZmluZSBCREJfRFJJVkVSX1JPVEFUSU9OCSAxOAojZGVmaW5lIEJEQl9ESVNQTEFZX1JFTU9WRQkgMTkKI2RlZmluZSBCREJfT0VNX0NVU1RPTQkJIDIwCiNkZWZpbmUgQkRCX0VGUF9MSVNUCQkgMjEgLyogd29ya2Fyb3VuZHMgZm9yIFZHQSBoc3luYy92c3luYyAqLwojZGVmaW5lIEJEQl9TRFZPX0xWRFNfT1BUSU9OUwkgMjIKI2RlZmluZSBCREJfU0RWT19QQU5FTF9EVERTCSAyMwojZGVmaW5lIEJEQl9TRFZPX0xWRFNfUE5QX0lEUwkgMjQKI2RlZmluZSBCREJfU0RWT19MVkRTX1BPV0VSX1NFUQkgMjUKI2RlZmluZSBCREJfVFZfT1BUSU9OUwkJIDI2CiNkZWZpbmUgQkRCX0xWRFNfT1BUSU9OUwkgNDAKI2RlZmluZSBCREJfTFZEU19MRlBfREFUQV9QVFJTCSA0MQojZGVmaW5lIEJEQl9MVkRTX0xGUF9EQVRBCSA0MgojZGVmaW5lIEJEQl9MVkRTX0JBQ0tMSUdIVAkgNDMKI2RlZmluZSBCREJfTFZEU19QT1dFUgkJIDQ0CiNkZWZpbmUgQkRCX1NLSVAJCTI1NCAvKiBWQklPUyBwcml2YXRlIGJsb2NrLCBpZ25vcmUgKi8KCnN0cnVjdCBiZGJfZ2VuZXJhbF9mZWF0dXJlcyB7CiAgICAgICAgLyogYml0cyAxICovCgl1OCBwYW5lbF9maXR0aW5nOjI7Cgl1OCBmbGV4YWltOjE7Cgl1OCBtc2dfZW5hYmxlOjE7Cgl1OCBjbGVhcl9zY3JlZW46MzsKCXU4IGNvbG9yX2ZsaXA6MTsKCiAgICAgICAgLyogYml0cyAyICovCgl1OCBkb3dubG9hZF9leHRfdmJ0OjE7Cgl1OCBlbmFibGVfc3NjOjE7Cgl1OCBzc2NfZnJlcToxOwoJdTggZW5hYmxlX2xmcF9vbl9vdmVycmlkZToxOwoJdTggZGlzYWJsZV9zc2NfZGR0OjE7Cgl1OCByc3ZkODozOyAvKiBmaW5pc2ggYnl0ZSAqLwoKICAgICAgICAvKiBiaXRzIDMgKi8KCXU4IGRpc2FibGVfc21vb3RoX3Zpc2lvbjoxOwoJdTggc2luZ2xlX2R2aToxOwoJdTggcnN2ZDk6NjsgLyogZmluaXNoIGJ5dGUgKi8KCiAgICAgICAgLyogYml0cyA0ICovCgl1OCBsZWdhY3lfbW9uaXRvcl9kZXRlY3Q7CgogICAgICAgIC8qIGJpdHMgNSAqLwoJdTggaW50X2NydF9zdXBwb3J0OjE7Cgl1OCBpbnRfdHZfc3VwcG9ydDoxOwoJdTggcnN2ZDExOjY7IC8qIGZpbmlzaCBieXRlICovCn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgpzdHJ1Y3QgYmRiX2dlbmVyYWxfZGVmaW5pdGlvbnMgewoJLyogRERDIEdQSU8gKi8KCXU4IGNydF9kZGNfZ21idXNfcGluOwoKCS8qIERQTVMgYml0cyAqLwoJdTggZHBtc19hY3BpOjE7Cgl1OCBza2lwX2Jvb3RfY3J0X2RldGVjdDoxOwoJdTggZHBtc19haW06MTsKCXU4IHJzdmQxOjU7IC8qIGZpbmlzaCBieXRlICovCgoJLyogYm9vdCBkZXZpY2UgYml0cyAqLwoJdTggYm9vdF9kaXNwbGF5WzJdOwoJdTggY2hpbGRfZGV2X3NpemU7CgoJLyogZGV2aWNlIGluZm8gKi8KCXU4IHR2X29yX2x2ZHNfaW5mb1szM107Cgl1OCBkZXYxWzMzXTsKCXU4IGRldjJbMzNdOwoJdTggZGV2M1szM107Cgl1OCBkZXY0WzMzXTsKCS8qIG1heSBiZSBhbm90aGVyIGRldmljZSBibG9jayBoZXJlIG9uIHNvbWUgcGxhdGZvcm1zICovCn07CgpzdHJ1Y3QgYmRiX2x2ZHNfb3B0aW9ucyB7Cgl1OCBwYW5lbF90eXBlOwoJdTggcnN2ZDE7CgkvKiBMVkRTIGNhcGFiaWxpdGllcywgc3RvcmVkIGluIGEgZHdvcmQgKi8KCXU4IHBmaXRfbW9kZToyOwoJdTggcGZpdF90ZXh0X21vZGVfZW5oYW5jZWQ6MTsKCXU4IHBmaXRfZ2Z4X21vZGVfZW5oYW5jZWQ6MTsKCXU4IHBmaXRfcmF0aW9fYXV0bzoxOwoJdTggcGl4ZWxfZGl0aGVyOjE7Cgl1OCBsdmRzX2VkaWQ6MTsKCXU4IHJzdmQyOjE7Cgl1OCByc3ZkNDsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCi8qIExGUCBwb2ludGVyIHRhYmxlIGNvbnRhaW5zIGVudHJpZXMgdG8gdGhlIHN0cnVjdCBiZWxvdyAqLwpzdHJ1Y3QgYmRiX2x2ZHNfbGZwX2RhdGFfcHRyIHsKCXUxNiBmcF90aW1pbmdfb2Zmc2V0OyAvKiBvZmZzZXRzIGFyZSBmcm9tIHN0YXJ0IG9mIGJkYiAqLwoJdTggZnBfdGFibGVfc2l6ZTsKCXUxNiBkdm9fdGltaW5nX29mZnNldDsKCXU4IGR2b190YWJsZV9zaXplOwoJdTE2IHBhbmVsX3BucF9pZF9vZmZzZXQ7Cgl1OCBwbnBfdGFibGVfc2l6ZTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCBiZGJfbHZkc19sZnBfZGF0YV9wdHJzIHsKCXU4IGx2ZHNfZW50cmllczsgLyogZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgbHZkc19kYXRhX3B0ciBzdHJ1Y3RzICovCglzdHJ1Y3QgYmRiX2x2ZHNfbGZwX2RhdGFfcHRyIHB0clsxNl07Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgovKiBMRlAgZGF0YSBoYXMgMyBibG9ja3MgcGVyIGVudHJ5ICovCnN0cnVjdCBsdmRzX2ZwX3RpbWluZyB7Cgl1MTYgeF9yZXM7Cgl1MTYgeV9yZXM7Cgl1MzIgbHZkc19yZWc7Cgl1MzIgbHZkc19yZWdfdmFsOwoJdTMyIHBwX29uX3JlZzsKCXUzMiBwcF9vbl9yZWdfdmFsOwoJdTMyIHBwX29mZl9yZWc7Cgl1MzIgcHBfb2ZmX3JlZ192YWw7Cgl1MzIgcHBfY3ljbGVfcmVnOwoJdTMyIHBwX2N5Y2xlX3JlZ192YWw7Cgl1MzIgcGZpdF9yZWc7Cgl1MzIgcGZpdF9yZWdfdmFsOwoJdTE2IHRlcm1pbmF0b3I7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgpzdHJ1Y3QgbHZkc19kdm9fdGltaW5nIHsKCXUxNiBjbG9jazsJCS8qKjwgSW4gMTBraHogKi8KCXU4IGhhY3RpdmVfbG87Cgl1OCBoYmxhbmtfbG87Cgl1OCBoYmxhbmtfaGk6NDsKCXU4IGhhY3RpdmVfaGk6NDsKCXU4IHZhY3RpdmVfbG87Cgl1OCB2YmxhbmtfbG87Cgl1OCB2YmxhbmtfaGk6NDsKCXU4IHZhY3RpdmVfaGk6NDsKCXU4IGhzeW5jX29mZl9sbzsKCXU4IGhzeW5jX3B1bHNlX3dpZHRoOwoJdTggdnN5bmNfcHVsc2Vfd2lkdGg6NDsKCXU4IHZzeW5jX29mZjo0OwoJdTggcnN2ZDA6NjsKCXU4IGhzeW5jX29mZl9oaToyOwoJdTggaF9pbWFnZTsKCXU4IHZfaW1hZ2U7Cgl1OCBtYXhfaHY7Cgl1OCBoX2JvcmRlcjsKCXU4IHZfYm9yZGVyOwoJdTggcnN2ZDE6MzsKCXU4IGRpZ2l0YWw6MjsKCXU4IHZzeW5jX3Bvc2l0aXZlOjE7Cgl1OCBoc3luY19wb3NpdGl2ZToxOwoJdTggcnN2ZDI6MTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCBsdmRzX3BucF9pZCB7Cgl1MTYgbWZnX25hbWU7Cgl1MTYgcHJvZHVjdF9jb2RlOwoJdTMyIHNlcmlhbDsKCXU4IG1mZ193ZWVrOwoJdTggbWZnX3llYXI7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgpzdHJ1Y3QgYmRiX2x2ZHNfbGZwX2RhdGFfZW50cnkgewoJc3RydWN0IGx2ZHNfZnBfdGltaW5nIGZwX3RpbWluZzsKCXN0cnVjdCBsdmRzX2R2b190aW1pbmcgZHZvX3RpbWluZzsKCXN0cnVjdCBsdmRzX3BucF9pZCBwbnBfaWQ7Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CgpzdHJ1Y3QgYmRiX2x2ZHNfbGZwX2RhdGEgewoJc3RydWN0IGJkYl9sdmRzX2xmcF9kYXRhX2VudHJ5IGRhdGFbMTZdOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGFpbWRiX2hlYWRlciB7CgljaGFyIHNpZ25hdHVyZVsxNl07CgljaGFyIG9lbV9kZXZpY2VbMjBdOwoJdTE2IGFpbWRiX3ZlcnNpb247Cgl1MTYgYWltZGJfaGVhZGVyX3NpemU7Cgl1MTYgYWltZGJfc2l6ZTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKCnN0cnVjdCBhaW1kYl9ibG9jayB7Cgl1OCBhaW1kYl9pZDsKCXUxNiBhaW1kYl9zaXplOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IHZjaF9wYW5lbF9kYXRhIHsKCXUxNiBmcF90aW1pbmdfb2Zmc2V0OwoJdTggZnBfdGltaW5nX3NpemU7Cgl1MTYgZHZvX3RpbWluZ19vZmZzZXQ7Cgl1OCBkdm9fdGltaW5nX3NpemU7Cgl1MTYgdGV4dF9maXR0aW5nX29mZnNldDsKCXU4IHRleHRfZml0dGluZ19zaXplOwoJdTE2IGdyYXBoaWNzX2ZpdHRpbmdfb2Zmc2V0OwoJdTggZ3JhcGhpY3NfZml0dGluZ19zaXplOwp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IHZjaF9iZGJfMjIgewoJc3RydWN0IGFpbWRiX2Jsb2NrIGFpbWRiX2Jsb2NrOwoJc3RydWN0IHZjaF9wYW5lbF9kYXRhIHBhbmVsc1sxNl07Cn0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cgpib29sIGludGVsX2luaXRfYmlvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKCi8qCiAqIERyaXZlcjwtPlZCSU9TIGludGVyYWN0aW9uIG9jY3VycyB0aHJvdWdoIHNjcmF0Y2ggYml0cyBpbgogKiBHUjE4ICYgU1dGKi4KICovCgovKiBHUjE4IGJpdHMgYXJlIHNldCBvbiBkaXNwbGF5IHN3aXRjaCBhbmQgaG90a2V5IGV2ZW50cyAqLwojZGVmaW5lIEdSMThfRFJJVkVSX1NXSVRDSF9FTgkoMTw8NykgLyogMDogVkJJT1MgY29udHJvbCwgMTogZHJpdmVyIGNvbnRyb2wgKi8KI2RlZmluZSBHUjE4X0hPVEtFWV9NQVNLCTB4NzggLyogU2VlIGFsc28gU1dGNCAxNTowICovCiNkZWZpbmUgICBHUjE4X0hLX05PTkUJCSgweDA8PDMpCiNkZWZpbmUgICBHUjE4X0hLX0xGUF9TVFJFVENICSgweDE8PDMpCiNkZWZpbmUgICBHUjE4X0hLX1RPR0dMRV9ESVNQCSgweDI8PDMpCiNkZWZpbmUgICBHUjE4X0hLX0RJU1BfU1dJVENICSgweDQ8PDMpIC8qIHNlZSBTV0YxNCAxNTowIGZvciB3aGF0IHRvIGVuYWJsZSAqLwojZGVmaW5lICAgR1IxOF9IS19QT1BVUF9ESVNBQkxFRCAoMHg2PDwzKQojZGVmaW5lICAgR1IxOF9IS19QT1BVUF9FTkFCTEVECSgweDc8PDMpCiNkZWZpbmUgICBHUjE4X0hLX1BGSVQJCSgweDg8PDMpCiNkZWZpbmUgICBHUjE4X0hLX0FQTV9DSEFOR0UJKDB4YTw8MykKI2RlZmluZSAgIEdSMThfSEtfTVVMVElQTEUJKDB4Yzw8MykKI2RlZmluZSBHUjE4X1VTRVJfSU5UX0VOCSgxPDwyKQojZGVmaW5lIEdSMThfQTAwMDBfRkxVU0hfRU4JKDE8PDEpCiNkZWZpbmUgR1IxOF9TTU1fRU4JCSgxPDwwKQoKLyogU2V0IGJ5IGRyaXZlciwgY2xlYXJlZCBieSBWQklPUyAqLwojZGVmaW5lIFNXRjAwX1lSRVNfU0hJRlQJMTYKI2RlZmluZSBTV0YwMF9YUkVTX1NISUZUCTAKI2RlZmluZSBTV0YwMF9SRVNfTUFTSwkJMHhmZmZmCgovKiBTZXQgYnkgVkJJT1MgYXQgYm9vdCB0aW1lIGFuZCBkcml2ZXIgYXQgcnVudGltZSAqLwojZGVmaW5lIFNXRjAxX1RWMl9GT1JNQVRfU0hJRlQJOAojZGVmaW5lIFNXRjAxX1RWMV9GT1JNQVRfU0hJRlQJMAojZGVmaW5lIFNXRjAxX1RWX0ZPUk1BVF9NQVNLCTB4ZmZmZgoKI2RlZmluZSBTV0YxMF9WQklPU19CTENfSTJDX0VOCSgxPDwyOSkKI2RlZmluZSBTV0YxMF9HVFRfT1ZFUlJJREVfRU4JKDE8PDI4KQojZGVmaW5lIFNXRjEwX0xGUF9EUE1TX09WUgkoMTw8MjcpIC8qIG92ZXJyaWRlIERQTVMgb24gZGlzcGxheSBzd2l0Y2ggKi8KI2RlZmluZSBTV0YxMF9BQ1RJVkVfVE9HR0xFX0xJU1RfTUFTSyAoNzw8MjQpCiNkZWZpbmUgICBTV0YxMF9PTERfVE9HR0xFCTB4MAojZGVmaW5lICAgU1dGMTBfVE9HR0xFX0xJU1RfMQkweDEKI2RlZmluZSAgIFNXRjEwX1RPR0dMRV9MSVNUXzIJMHgyCiNkZWZpbmUgICBTV0YxMF9UT0dHTEVfTElTVF8zCTB4MwojZGVmaW5lICAgU1dGMTBfVE9HR0xFX0xJU1RfNAkweDQKI2RlZmluZSBTV0YxMF9QQU5OSU5HX0VOCSgxPDwyMykKI2RlZmluZSBTV0YxMF9EUklWRVJfTE9BREVECSgxPDwyMikKI2RlZmluZSBTV0YxMF9FWFRFTkRFRF9ERVNLVE9QCSgxPDwyMSkKI2RlZmluZSBTV0YxMF9FWENMVVNJVkVfTU9ERQkoMTw8MjApCiNkZWZpbmUgU1dGMTBfT1ZFUkxBWV9FTgkoMTw8MTkpCiNkZWZpbmUgU1dGMTBfUExBTkVCX0hPTERPRkYJKDE8PDE4KQojZGVmaW5lIFNXRjEwX1BMQU5FQV9IT0xET0ZGCSgxPDwxNykKI2RlZmluZSBTV0YxMF9WR0FfSE9MRE9GRgkoMTw8MTYpCiNkZWZpbmUgU1dGMTBfQUNUSVZFX0RJU1BfTUFTSwkweGZmZmYKI2RlZmluZSAgIFNXRjEwX1BJUEVCX0xGUDIJKDE8PDE1KQojZGVmaW5lICAgU1dGMTBfUElQRUJfRUZQMgkoMTw8MTQpCiNkZWZpbmUgICBTV0YxMF9QSVBFQl9UVjIJKDE8PDEzKQojZGVmaW5lICAgU1dGMTBfUElQRUJfQ1JUMgkoMTw8MTIpCiNkZWZpbmUgICBTV0YxMF9QSVBFQl9MRlAJKDE8PDExKQojZGVmaW5lICAgU1dGMTBfUElQRUJfRUZQCSgxPDwxMCkKI2RlZmluZSAgIFNXRjEwX1BJUEVCX1RWCSgxPDw5KQojZGVmaW5lICAgU1dGMTBfUElQRUJfQ1JUCSgxPDw4KQojZGVmaW5lICAgU1dGMTBfUElQRUFfTEZQMgkoMTw8NykKI2RlZmluZSAgIFNXRjEwX1BJUEVBX0VGUDIJKDE8PDYpCiNkZWZpbmUgICBTV0YxMF9QSVBFQV9UVjIJKDE8PDUpCiNkZWZpbmUgICBTV0YxMF9QSVBFQV9DUlQyCSgxPDw0KQojZGVmaW5lICAgU1dGMTBfUElQRUFfTEZQCSgxPDwzKQojZGVmaW5lICAgU1dGMTBfUElQRUFfRUZQCSgxPDwyKQojZGVmaW5lICAgU1dGMTBfUElQRUFfVFYJKDE8PDEpCiNkZWZpbmUgICBTV0YxMF9QSVBFQV9DUlQJKDE8PDApCgojZGVmaW5lIFNXRjExX01FTU9SWV9TSVpFX1NISUZUCTE2CiNkZWZpbmUgU1dGMTFfU1ZfVEVTVF9FTgkoMTw8MTUpCiNkZWZpbmUgU1dGMTFfSVNfQUdQCQkoMTw8MTQpCiNkZWZpbmUgU1dGMTFfRElTUExBWV9IT0xET0ZGCSgxPDwxMykKI2RlZmluZSBTV0YxMV9EUE1TX1JFRFVDRUQJKDE8PDEyKQojZGVmaW5lIFNXRjExX0lTX1ZCRV9NT0RFCSgxPDwxMSkKI2RlZmluZSBTV0YxMV9QSVBFQl9BQ0NFU1MJKDE8PDEwKSAvKiAwIGhlcmUgbWVhbnMgcGlwZSBhICovCiNkZWZpbmUgU1dGMTFfRFBNU19NQVNLCQkweDA3CiNkZWZpbmUgICBTV0YxMV9EUE1TX09GRgkoMTw8MikKI2RlZmluZSAgIFNXRjExX0RQTVNfU1VTUEVORAkoMTw8MSkKI2RlZmluZSAgIFNXRjExX0RQTVNfU1RBTkRCWQkoMTw8MCkKI2RlZmluZSAgIFNXRjExX0RQTVNfT04JCTAKCiNkZWZpbmUgU1dGMTRfR0ZYX1BGSVRfRU4JKDE8PDMxKQojZGVmaW5lIFNXRjE0X1RFWFRfUEZJVF9FTgkoMTw8MzApCiNkZWZpbmUgU1dGMTRfTElEX1NUQVRVU19DTE9TRUQJKDE8PDI5KSAvKiAwIGhlcmUgbWVhbnMgb3BlbiAqLwojZGVmaW5lIFNXRjE0X1BPUFVQX0VOCQkoMTw8MjgpCiNkZWZpbmUgU1dGMTRfRElTUExBWV9IT0xET0ZGCSgxPDwyNykKI2RlZmluZSBTV0YxNF9ESVNQX0RFVEVDVF9FTgkoMTw8MjYpCiNkZWZpbmUgU1dGMTRfRE9DS0lOR19TVEFUVVNfRE9DS0VEICgxPDwyNSkgLyogMCBoZXJlIG1lYW5zIHVuZG9ja2VkICovCiNkZWZpbmUgU1dGMTRfRFJJVkVSX1NUQVRVUwkoMTw8MjQpCiNkZWZpbmUgU1dGMTRfT1NfVFlQRV9XSU45WAkoMTw8MjMpCiNkZWZpbmUgU1dGMTRfT1NfVFlQRV9XSU5OVAkoMTw8MjIpCi8qIDIxOjE5IHJzdmQgKi8KI2RlZmluZSBTV0YxNF9QTV9UWVBFX01BU0sJMHgwMDA3MDAwMAojZGVmaW5lICAgU1dGMTRfUE1fQUNQSV9WSURFTwkoMHg0IDw8IDE2KQojZGVmaW5lICAgU1dGMTRfUE1fQUNQSQkJKDB4MyA8PCAxNikKI2RlZmluZSAgIFNXRjE0X1BNX0FQTV8xMgkoMHgyIDw8IDE2KQojZGVmaW5lICAgU1dGMTRfUE1fQVBNXzExCSgweDEgPDwgMTYpCiNkZWZpbmUgU1dGMTRfSEtfUkVRVUVTVF9NQVNLCTB4MDAwMGZmZmYgLyogc2VlIEdSMTggNjozIGZvciBldmVudCB0eXBlICovCiAgICAgICAgICAvKiBpZiBHUjE4IGluZGljYXRlcyBhIGRpc3BsYXkgc3dpdGNoICovCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQl9MRlAyX0VOICgxPDwxNSkKI2RlZmluZSAgIFNXRjE0X0RTX1BJUEVCX0VGUDJfRU4gKDE8PDE0KQojZGVmaW5lICAgU1dGMTRfRFNfUElQRUJfVFYyX0VOICAoMTw8MTMpCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQl9DUlQyX0VOICgxPDwxMikKI2RlZmluZSAgIFNXRjE0X0RTX1BJUEVCX0xGUF9FTiAgKDE8PDExKQojZGVmaW5lICAgU1dGMTRfRFNfUElQRUJfRUZQX0VOICAoMTw8MTApCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQl9UVl9FTiAgICgxPDw5KQojZGVmaW5lICAgU1dGMTRfRFNfUElQRUJfQ1JUX0VOICAoMTw8OCkKI2RlZmluZSAgIFNXRjE0X0RTX1BJUEVBX0xGUDJfRU4gKDE8PDcpCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQV9FRlAyX0VOICgxPDw2KQojZGVmaW5lICAgU1dGMTRfRFNfUElQRUFfVFYyX0VOICAoMTw8NSkKI2RlZmluZSAgIFNXRjE0X0RTX1BJUEVBX0NSVDJfRU4gKDE8PDQpCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQV9MRlBfRU4gICgxPDwzKQojZGVmaW5lICAgU1dGMTRfRFNfUElQRUFfRUZQX0VOICAoMTw8MikKI2RlZmluZSAgIFNXRjE0X0RTX1BJUEVBX1RWX0VOICAgKDE8PDEpCiNkZWZpbmUgICBTV0YxNF9EU19QSVBFQV9DUlRfRU4gICgxPDwwKQogICAgICAgICAgLyogaWYgR1IxOCBpbmRpY2F0ZXMgYSBwYW5lbCBmaXR0aW5nIHJlcXVlc3QgKi8KI2RlZmluZSAgIFNXRjE0X1BGSVRfRU4JCSgxPDwwKSAvKiAwIG1lYW5zIGRpc2FibGUgKi8KICAgICAgICAgIC8qIGlmIEdSMTggaW5kaWNhdGVzIGFuIEFQTSBjaGFuZ2UgcmVxdWVzdCAqLwojZGVmaW5lICAgU1dGMTRfQVBNX0hJQkVSTkFURQkweDQKI2RlZmluZSAgIFNXRjE0X0FQTV9TVVNQRU5ECTB4MwojZGVmaW5lICAgU1dGMTRfQVBNX1NUQU5EQlkJMHgxCiNkZWZpbmUgICBTV0YxNF9BUE1fUkVTVE9SRQkweDAKCiNlbmRpZiAvKiBfSTgzMF9CSU9TX0hfICovCg==