ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcgYi9hcmNoL2FybS9LY29uZmlnCmluZGV4IGYxMjNjN2MuLjkxOWQ4YjkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL0tjb25maWcKKysrIGIvYXJjaC9hcm0vS2NvbmZpZwpAQCAtMTIxLDExICsxMjEsMTEgQEAKIAloZWxwCiAJICBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgQVJNIEx0ZCBWZXJzYXRpbGUgYm9hcmQuCiAKLWNvbmZpZyBBUkNIX0FUOTFSTTkyMDAKLQlib29sICJBdG1lbCBBVDkxUk05MjAwIgorY29uZmlnIEFSQ0hfQVQ5MQorCWJvb2wgIkF0bWVsIEFUOTEiCiAJaGVscAotCSAgU2F5IFkgaGVyZSBpZiB5b3UgaW50ZW5kIHRvIHJ1biB0aGlzIGtlcm5lbCBvbiBhbiBBdG1lbAotCSAgQVQ5MVJNOTIwMC1iYXNlZCBib2FyZC4KKwkgIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciBzeXN0ZW1zIGJhc2VkIG9uIHRoZSBBdG1lbCBBVDkxUk05MjAwCisJICBhbmQgQVQ5MVNBTTl4eHggcHJvY2Vzc29ycy4KIAogY29uZmlnIEFSQ0hfQ0xQUzc1MDAKIAlib29sICJDaXJydXMgQ0wtUFM3NTAwRkUiCkBAIC01NDcsNyArNTQ3LDcgQEAKIAkJICAgQVJDSF9MVUJCT0NLIHx8IE1BQ0hfTUFJTlNUT05FIHx8IEFSQ0hfTkVUV0lOREVSIHx8IFwKIAkJICAgQVJDSF9PTUFQIHx8IEFSQ0hfUDcyMFQgfHwgQVJDSF9QWEFfSURQIHx8IFwKIAkJICAgQVJDSF9TQTExMDAgfHwgQVJDSF9TSEFSSyB8fCBBUkNIX1ZFUlNBVElMRSB8fCBcCi0JCSAgIEFSQ0hfQVQ5MVJNOTIwMAorCQkgICBBUkNIX0FUOTFSTTkyMDAgfHwgTUFDSF9UUklaRVBTNAogCWhlbHAKIAkgIElmIHlvdSBzYXkgWSBoZXJlLCB0aGUgTEVEcyBvbiB5b3VyIG1hY2hpbmUgd2lsbCBiZSB1c2VkCiAJICB0byBwcm92aWRlIHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIGN1cnJlbnQgc3lzdGVtIHN0YXR1cy4KQEAgLTY3OCw3ICs2NzgsNyBAQAogCiBlbmRtZW51CiAKLWlmIChBUkNIX1NBMTEwMCB8fCBBUkNIX0lOVEVHUkFUT1IgfHwgQVJDSF9PTUFQMSkKK2lmIChBUkNIX1NBMTEwMCB8fCBBUkNIX0lOVEVHUkFUT1IgfHwgQVJDSF9PTUFQKQogCiBtZW51ICJDUFUgRnJlcXVlbmN5IHNjYWxpbmciCiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL01ha2VmaWxlIGIvYXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggYTNiYmFhZi4uMzM0NWM2ZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vTWFrZWZpbGUKQEAgLTExNCw3ICsxMTQsNyBAQAogIG1hY2hpbmUtJChDT05GSUdfQVJDSF9INzIwWCkJICAgOj0gaDcyMHgKICBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfQUFFQzIwMDApICAgOj0gYWFlYzIwMDAKICBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfUkVBTFZJRVcpICAgOj0gcmVhbHZpZXcKLSBtYWNoaW5lLSQoQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMCkgOj0gYXQ5MXJtOTIwMAorIG1hY2hpbmUtJChDT05GSUdfQVJDSF9BVDkxKSAgICAgICA6PSBhdDkxcm05MjAwCiAgbWFjaGluZS0kKENPTkZJR19BUkNIX0VQOTNYWCkgICAgIDo9IGVwOTN4eAogIG1hY2hpbmUtJChDT05GSUdfQVJDSF9QTlg0MDA4KSAgICA6PSBwbng0MDA4CiAgbWFjaGluZS0kKENPTkZJR19BUkNIX05FVFgpICAgICAgIDo9IG5ldHgKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3MvYXQ5MXJtOTIwMGRrX2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3MvYXQ5MXJtOTIwMGRrX2RlZmNvbmZpZwppbmRleCA5ZTFjMWNjLi40ZjNkOGQzIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jb25maWdzL2F0OTFybTkyMDBka19kZWZjb25maWcKKysrIGIvYXJjaC9hcm0vY29uZmlncy9hdDkxcm05MjAwZGtfZGVmY29uZmlnCkBAIC0xMDMsNiArMTAzLDcgQEAKICMgQ09ORklHX0FSQ0hfSU1YIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfSDcyMFggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9BQUVDMjAwMCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9BVDkxPXkKIENPTkZJR19BUkNIX0FUOTFSTTkyMDA9eQogCiAjCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL2F0OTFybTkyMDBla19kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL2F0OTFybTkyMDBla19kZWZjb25maWcKaW5kZXggNmUwODA1YS4uMDhiNWRjMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29uZmlncy9hdDkxcm05MjAwZWtfZGVmY29uZmlnCisrKyBiL2FyY2gvYXJtL2NvbmZpZ3MvYXQ5MXJtOTIwMGVrX2RlZmNvbmZpZwpAQCAtMTAzLDYgKzEwMyw3IEBACiAjIENPTkZJR19BUkNIX0lNWCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX0g3MjBYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfQUFFQzIwMDAgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfQVQ5MT15CiBDT05GSUdfQVJDSF9BVDkxUk05MjAwPXkKIAogIwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29uZmlncy9hdGViOTIwMF9kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL2F0ZWI5MjAwX2RlZmNvbmZpZwppbmRleCA2OWMzOWUwLi5iZWU3ODEzIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jb25maWdzL2F0ZWI5MjAwX2RlZmNvbmZpZworKysgYi9hcmNoL2FybS9jb25maWdzL2F0ZWI5MjAwX2RlZmNvbmZpZwpAQCAtMTA1LDYgKzEwNSw3IEBACiAjIENPTkZJR19BUkNIX0lNWCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX0g3MjBYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfQUFFQzIwMDAgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfQVQ5MT15CiBDT05GSUdfQVJDSF9BVDkxUk05MjAwPXkKIAogIwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29uZmlncy9jYXJtZXZhX2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3MvY2FybWV2YV9kZWZjb25maWcKaW5kZXggNWNjZDI5YS4uOGEwNzVjOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29uZmlncy9jYXJtZXZhX2RlZmNvbmZpZworKysgYi9hcmNoL2FybS9jb25maWdzL2Nhcm1ldmFfZGVmY29uZmlnCkBAIC04Miw2ICs4Miw3IEBACiAjIENPTkZJR19BUkNIX1ZFUlNBVElMRSBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX0lNWCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX0g3MjBYIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX0FUOTE9eQogQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMD15CiAKICMKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3MvY3NiMzM3X2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3MvY3NiMzM3X2RlZmNvbmZpZwppbmRleCA5NGJkOTkzLi4zNTk0MTU1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9jb25maWdzL2NzYjMzN19kZWZjb25maWcKKysrIGIvYXJjaC9hcm0vY29uZmlncy9jc2IzMzdfZGVmY29uZmlnCkBAIC0xMDMsNiArMTAzLDcgQEAKICMgQ09ORklHX0FSQ0hfSU1YIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfSDcyMFggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9BQUVDMjAwMCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9BVDkxPXkKIENPTkZJR19BUkNIX0FUOTFSTTkyMDA9eQogCiAjCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL2NzYjYzN19kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL2NzYjYzN19kZWZjb25maWcKaW5kZXggMTUxOTEyNC4uNjQwZDcwYyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29uZmlncy9jc2I2MzdfZGVmY29uZmlnCisrKyBiL2FyY2gvYXJtL2NvbmZpZ3MvY3NiNjM3X2RlZmNvbmZpZwpAQCAtMTAzLDYgKzEwMyw3IEBACiAjIENPTkZJR19BUkNIX0lNWCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX0g3MjBYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfQUFFQzIwMDAgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfQVQ5MT15CiBDT05GSUdfQVJDSF9BVDkxUk05MjAwPXkKIAogIwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY29uZmlncy9rYWZhX2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3Mva2FmYV9kZWZjb25maWcKaW5kZXggNTFkZWQyMC4uMWRiNjMzZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29uZmlncy9rYWZhX2RlZmNvbmZpZworKysgYi9hcmNoL2FybS9jb25maWdzL2thZmFfZGVmY29uZmlnCkBAIC0xMDUsNiArMTA1LDcgQEAKICMgQ09ORklHX0FSQ0hfSU1YIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfSDcyMFggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9BQUVDMjAwMCBpcyBub3Qgc2V0CitDT05GSUdfQVJDSF9BVDkxPXkKIENPTkZJR19BUkNIX0FUOTFSTTkyMDA9eQogCiAjCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL2tiOTIwMl9kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL2tiOTIwMl9kZWZjb25maWcKaW5kZXggZmVlNGY1Ni4uNDUzOTZlMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29uZmlncy9rYjkyMDJfZGVmY29uZmlnCisrKyBiL2FyY2gvYXJtL2NvbmZpZ3Mva2I5MjAyX2RlZmNvbmZpZwpAQCAtODAsNiArODAsNyBAQAogIyBDT05GSUdfQVJDSF9JTVggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9INzIwWCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX0FBRUMyMDAwIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX0FUOTE9eQogQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMD15CiAKICMKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NvbmZpZ3Mvb21hcF9oMl8xNjEwX2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3Mvb21hcF9oMl8xNjEwX2RlZmNvbmZpZwppbmRleCBlZTNlY2JkLi4wNWFkYjBiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jb25maWdzL29tYXBfaDJfMTYxMF9kZWZjb25maWcKKysrIGIvYXJjaC9hcm0vY29uZmlncy9vbWFwX2gyXzE2MTBfZGVmY29uZmlnCkBAIC0xLDE5ICsxLDIwIEBACiAjCiAjIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG1ha2UgY29uZmlnOiBkb24ndCBlZGl0Ci0jIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTQKLSMgV2VkIE5vdiAgOSAxODo1Mzo0MCAyMDA1CisjIExpbnV4IGtlcm5lbCB2ZXJzaW9uOiAyLjYuMTcKKyMgVGh1IEp1biAyOSAxNToyNToxOCAyMDA2CiAjCiBDT05GSUdfQVJNPXkKIENPTkZJR19NTVU9eQotQ09ORklHX1VJRDE2PXkKIENPTkZJR19SV1NFTV9HRU5FUklDX1NQSU5MT0NLPXkKK0NPTkZJR19HRU5FUklDX0hXRUlHSFQ9eQogQ09ORklHX0dFTkVSSUNfQ0FMSUJSQVRFX0RFTEFZPXkKK0NPTkZJR19WRUNUT1JTX0JBU0U9MHhmZmZmMDAwMAorQ09ORklHX0RFRkNPTkZJR19MSVNUPSIvbGliL21vZHVsZXMvJFVOQU1FX1JFTEVBU0UvLmNvbmZpZyIKIAogIwogIyBDb2RlIG1hdHVyaXR5IGxldmVsIG9wdGlvbnMKICMKIENPTkZJR19FWFBFUklNRU5UQUw9eQotQ09ORklHX0NMRUFOX0NPTVBJTEU9eQogQ09ORklHX0JST0tFTl9PTl9TTVA9eQogQ09ORklHX0xPQ0tfS0VSTkVMPXkKIENPTkZJR19JTklUX0VOVl9BUkdfTElNSVQ9MzIKQEAgLTI5LDI2ICszMCwyNiBAQAogIyBDT05GSUdfQlNEX1BST0NFU1NfQUNDVCBpcyBub3Qgc2V0CiBDT05GSUdfU1lTQ1RMPXkKICMgQ09ORklHX0FVRElUIGlzIG5vdCBzZXQKLSMgQ09ORklHX0hPVFBMVUcgaXMgbm90IHNldAotQ09ORklHX0tPQkpFQ1RfVUVWRU5UPXkKICMgQ09ORklHX0lLQ09ORklHIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKIENPTkZJR19JTklUUkFNRlNfU09VUkNFPSIiCitDT05GSUdfVUlEMTY9eQorQ09ORklHX0NDX09QVElNSVpFX0ZPUl9TSVpFPXkKICMgQ09ORklHX0VNQkVEREVEIGlzIG5vdCBzZXQKIENPTkZJR19LQUxMU1lNUz15CiAjIENPTkZJR19LQUxMU1lNU19FWFRSQV9QQVNTIGlzIG5vdCBzZXQKK0NPTkZJR19IT1RQTFVHPXkKIENPTkZJR19QUklOVEs9eQogQ09ORklHX0JVRz15CitDT05GSUdfRUxGX0NPUkU9eQogQ09ORklHX0JBU0VfRlVMTD15CiBDT05GSUdfRlVURVg9eQogQ09ORklHX0VQT0xMPXkKLUNPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CiBDT05GSUdfU0hNRU09eQotQ09ORklHX0NDX0FMSUdOX0ZVTkNUSU9OUz0wCi1DT05GSUdfQ0NfQUxJR05fTEFCRUxTPTAKLUNPTkZJR19DQ19BTElHTl9MT09QUz0wCi1DT05GSUdfQ0NfQUxJR05fSlVNUFM9MAorQ09ORklHX1NMQUI9eQogIyBDT05GSUdfVElOWV9TSE1FTSBpcyBub3Qgc2V0CiBDT05GSUdfQkFTRV9TTUFMTD0wCisjIENPTkZJR19TTE9CIGlzIG5vdCBzZXQKIAogIwogIyBMb2FkYWJsZSBtb2R1bGUgc3VwcG9ydApAQCAtNTYsNyArNTcsNiBAQAogQ09ORklHX01PRFVMRVM9eQogQ09ORklHX01PRFVMRV9VTkxPQUQ9eQogIyBDT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRCBpcyBub3Qgc2V0Ci1DT05GSUdfT0JTT0xFVEVfTU9EUEFSTT15CiAjIENPTkZJR19NT0RWRVJTSU9OUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NT0RVTEVfU1JDVkVSU0lPTl9BTEwgaXMgbm90IHNldAogIyBDT05GSUdfS01PRCBpcyBub3Qgc2V0CkBAIC02NCw2ICs2NCw3IEBACiAjCiAjIEJsb2NrIGxheWVyCiAjCisjIENPTkZJR19CTEtfREVWX0lPX1RSQUNFIGlzIG5vdCBzZXQKIAogIwogIyBJTyBTY2hlZHVsZXJzCkBAIC04MSwxNiArODIsMjYgQEAKICMKICMgU3lzdGVtIFR5cGUKICMKKyMgQ09ORklHX0FSQ0hfQUFFQzIwMDAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JTlRFR1JBVE9SIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfUkVBTFZJRVcgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9WRVJTQVRJTEUgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9BVDkxUk05MjAwIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfQ0xQUzc1MDAgaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9DTFBTNzExWCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX0NPMjg1IGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfRUJTQTExMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0VQOTNYWCBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX0ZPT1RCUklER0UgaXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9JTlRFR1JBVE9SIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfTkVUWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0g3MjBYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSU1YIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfSU9QM1hYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfSVhQNFhYIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfSVhQMjAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lYUDIzWFggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9MNzIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1BOWDQwMDggaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9QWEEgaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9SUEMgaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9TQTExMDAgaXMgbm90IHNldApAQCAtOTgsMTEgKzEwOSw2IEBACiAjIENPTkZJR19BUkNIX1NIQVJLIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfTEg3QTQwWCBpcyBub3Qgc2V0CiBDT05GSUdfQVJDSF9PTUFQPXkKLSMgQ09ORklHX0FSQ0hfVkVSU0FUSUxFIGlzIG5vdCBzZXQKLSMgQ09ORklHX0FSQ0hfUkVBTFZJRVcgaXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9JTVggaXMgbm90IHNldAotIyBDT05GSUdfQVJDSF9INzIwWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19BUkNIX0FBRUMyMDAwIGlzIG5vdCBzZXQKIAogIwogIyBUSSBPTUFQIEltcGxlbWVudGF0aW9ucwpAQCAtMTQxLDYgKzE0Nyw3IEBACiBDT05GSUdfTUFDSF9PTUFQX0gyPXkKICMgQ09ORklHX01BQ0hfT01BUF9IMyBpcyBub3Qgc2V0CiAjIENPTkZJR19NQUNIX09NQVBfT1NLIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfTk9LSUE3NzAgaXMgbm90IHNldAogIyBDT05GSUdfTUFDSF9PTUFQX0dFTkVSSUMgaXMgbm90IHNldAogCiAjCkBAIC0xNzcsNyArMTg0LDYgQEAKICMKICMgQnVzIHN1cHBvcnQKICMKLUNPTkZJR19JU0FfRE1BX0FQST15CiAKICMKICMgUENDQVJEIChQQ01DSUEvQ2FyZEJ1cykgc3VwcG9ydApAQCAtMTg5LDYgKzE5NSw4IEBACiAjCiBDT05GSUdfUFJFRU1QVD15CiBDT05GSUdfTk9fSURMRV9IWj15CitDT05GSUdfSFo9MTI4CisjIENPTkZJR19BRUFCSSBpcyBub3Qgc2V0CiAjIENPTkZJR19BUkNIX0RJU0NPTlRJR01FTV9FTkFCTEUgaXMgbm90IHNldAogQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQogQ09ORklHX0ZMQVRNRU1fTUFOVUFMPXkKQEAgLTI0OSw2ICsyNTcsOCBAQAogIyBQb3dlciBtYW5hZ2VtZW50IG9wdGlvbnMKICMKIENPTkZJR19QTT15CitDT05GSUdfUE1fTEVHQUNZPXkKKyMgQ09ORklHX1BNX0RFQlVHIGlzIG5vdCBzZXQKICMgQ09ORklHX0FQTSBpcyBub3Qgc2V0CiAKICMKQEAgLTI1OSw5ICsyNjksMTIgQEAKICMKICMgTmV0d29ya2luZyBvcHRpb25zCiAjCisjIENPTkZJR19ORVRERUJVRyBpcyBub3Qgc2V0CiBDT05GSUdfUEFDS0VUPXkKICMgQ09ORklHX1BBQ0tFVF9NTUFQIGlzIG5vdCBzZXQKIENPTkZJR19VTklYPXkKK0NPTkZJR19YRlJNPXkKKyMgQ09ORklHX1hGUk1fVVNFUiBpcyBub3Qgc2V0CiAjIENPTkZJR19ORVRfS0VZIGlzIG5vdCBzZXQKIENPTkZJR19JTkVUPXkKICMgQ09ORklHX0lQX01VTFRJQ0FTVCBpcyBub3Qgc2V0CkBAIC0yNzgsMTIgKzI5MSwxOCBAQAogIyBDT05GSUdfSU5FVF9BSCBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkVUX0VTUCBpcyBub3Qgc2V0CiAjIENPTkZJR19JTkVUX0lQQ09NUCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUX1hGUk1fVFVOTkVMIGlzIG5vdCBzZXQKICMgQ09ORklHX0lORVRfVFVOTkVMIGlzIG5vdCBzZXQKK0NPTkZJR19JTkVUX1hGUk1fTU9ERV9UUkFOU1BPUlQ9eQorQ09ORklHX0lORVRfWEZSTV9NT0RFX1RVTk5FTD15CiBDT05GSUdfSU5FVF9ESUFHPXkKIENPTkZJR19JTkVUX1RDUF9ESUFHPXkKICMgQ09ORklHX1RDUF9DT05HX0FEVkFOQ0VEIGlzIG5vdCBzZXQKIENPTkZJR19UQ1BfQ09OR19CSUM9eQogIyBDT05GSUdfSVBWNiBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUNl9YRlJNX1RVTk5FTCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUNl9UVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfTkVUV09SS19TRUNNQVJLIGlzIG5vdCBzZXQKICMgQ09ORklHX05FVEZJTFRFUiBpcyBub3Qgc2V0CiAKICMKQEAgLTI5NSw2ICszMTQsMTEgQEAKICMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCiAjCiAjIENPTkZJR19JUF9TQ1RQIGlzIG5vdCBzZXQKKworIworIyBUSVBDIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMKKyMgQ09ORklHX1RJUEMgaXMgbm90IHNldAogIyBDT05GSUdfQVRNIGlzIG5vdCBzZXQKICMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0CiAjIENPTkZJR19WTEFOXzgwMjFRIGlzIG5vdCBzZXQKQEAgLTMxMiw3ICszMzYsNiBAQAogIyBRb1MgYW5kL29yIGZhaXIgcXVldWVpbmcKICMKICMgQ09ORklHX05FVF9TQ0hFRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19ORVRfQ0xTX1JPVVRFIGlzIG5vdCBzZXQKIAogIwogIyBOZXR3b3JrIHRlc3RpbmcKQEAgLTMzMyw2ICszNTYsMTIgQEAKIENPTkZJR19TVEFOREFMT05FPXkKIENPTkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKICMgQ09ORklHX0ZXX0xPQURFUiBpcyBub3Qgc2V0CisjIENPTkZJR19TWVNfSFlQRVJWSVNPUiBpcyBub3Qgc2V0CisKKyMKKyMgQ29ubmVjdG9yIC0gdW5pZmllZCB1c2Vyc3BhY2UgPC0+IGtlcm5lbHNwYWNlIGxpbmtlcgorIworIyBDT05GSUdfQ09OTkVDVE9SIGlzIG5vdCBzZXQKIAogIwogIyBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCkBAIC01MjYsNiArNTU1LDcgQEAKIENPTkZJR19WVD15CiBDT05GSUdfVlRfQ09OU09MRT15CiBDT05GSUdfSFdfQ09OU09MRT15CisjIENPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldAogIyBDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEIGlzIG5vdCBzZXQKIAogIwpAQCAtNTM0LDYgKzU2NCw3IEBACiBDT05GSUdfU0VSSUFMXzgyNTA9eQogQ09ORklHX1NFUklBTF84MjUwX0NPTlNPTEU9eQogQ09ORklHX1NFUklBTF84MjUwX05SX1VBUlRTPTQKK0NPTkZJR19TRVJJQUxfODI1MF9SVU5USU1FX1VBUlRTPTQKICMgQ09ORklHX1NFUklBTF84MjUwX0VYVEVOREVEIGlzIG5vdCBzZXQKIAogIwpAQCAtNTU5LDggKzU5MCw4IEBACiAjIFdhdGNoZG9nIERldmljZSBEcml2ZXJzCiAjCiAjIENPTkZJR19TT0ZUX1dBVENIRE9HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hXX1JBTkRPTSBpcyBub3Qgc2V0CiAjIENPTkZJR19OVlJBTSBpcyBub3Qgc2V0Ci0jIENPTkZJR19SVEMgaXMgbm90IHNldAogIyBDT05GSUdfRFRMSyBpcyBub3Qgc2V0CiAjIENPTkZJR19SMzk2NCBpcyBub3Qgc2V0CiAKQEAgLTU3Miw2ICs2MDMsNyBAQAogIwogIyBUUE0gZGV2aWNlcwogIworIyBDT05GSUdfVENHX1RQTSBpcyBub3Qgc2V0CiAjIENPTkZJR19URUxDTE9DSyBpcyBub3Qgc2V0CiAKICMKQEAgLTU4MCwxMCArNjEyLDIyIEBACiAjIENPTkZJR19JMkMgaXMgbm90IHNldAogCiAjCisjIFNQSSBzdXBwb3J0CisjCisjIENPTkZJR19TUEkgaXMgbm90IHNldAorIyBDT05GSUdfU1BJX01BU1RFUiBpcyBub3Qgc2V0CisKKyMKKyMgRGFsbGFzJ3MgMS13aXJlIGJ1cworIworCisjCiAjIEhhcmR3YXJlIE1vbml0b3Jpbmcgc3VwcG9ydAogIwogQ09ORklHX0hXTU9OPXkKICMgQ09ORklHX0hXTU9OX1ZJRCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FCSVRVR1VSVSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0Y3MTgwNUYgaXMgbm90IHNldAogIyBDT05GSUdfSFdNT05fREVCVUdfQ0hJUCBpcyBub3Qgc2V0CiAKICMKQEAgLTU5MSwxMyArNjM1LDIzIEBACiAjCiAKICMKLSMgTXVsdGltZWRpYSBDYXBhYmlsaXRpZXMgUG9ydCBkcml2ZXJzCisjIExFRCBkZXZpY2VzCisjCisjIENPTkZJR19ORVdfTEVEUyBpcyBub3Qgc2V0CisKKyMKKyMgTEVEIGRyaXZlcnMKKyMKKworIworIyBMRUQgVHJpZ2dlcnMKICMKIAogIwogIyBNdWx0aW1lZGlhIGRldmljZXMKICMKICMgQ09ORklHX1ZJREVPX0RFViBpcyBub3Qgc2V0CitDT05GSUdfVklERU9fVjRMMj15CiAKICMKICMgRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcwpAQCAtNjA3LDExICs2NjEsMTMgQEAKICMKICMgR3JhcGhpY3Mgc3VwcG9ydAogIworQ09ORklHX0ZJUk1XQVJFX0VESUQ9eQogQ09ORklHX0ZCPXkKICMgQ09ORklHX0ZCX0NGQl9GSUxMUkVDVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQl9DRkJfQ09QWUFSRUEgaXMgbm90IHNldAogIyBDT05GSUdfRkJfQ0ZCX0lNQUdFQkxJVCBpcyBub3Qgc2V0CiAjIENPTkZJR19GQl9NQUNNT0RFUyBpcyBub3Qgc2V0CisjIENPTkZJR19GQl9CQUNLTElHSFQgaXMgbm90IHNldAogQ09ORklHX0ZCX01PREVfSEVMUEVSUz15CiAjIENPTkZJR19GQl9USUxFQkxJVFRJTkcgaXMgbm90IHNldAogIyBDT05GSUdfRkJfUzFEMTNYWFggaXMgbm90IHNldApAQCAtNjM1LDcgKzY5MSw2IEBACiAjIENPTkZJR19GT05UX1NVTjh4MTYgaXMgbm90IHNldAogIyBDT05GSUdfRk9OVF9TVU4xMngyMiBpcyBub3Qgc2V0CiAjIENPTkZJR19GT05UXzEweDE4IGlzIG5vdCBzZXQKLSMgQ09ORklHX0ZPTlRfUkwgaXMgbm90IHNldAogCiAjCiAjIExvZ28gY29uZmlndXJhdGlvbgpAQCAtNjYwLDE2ICs3MTUsMTUgQEAKICMgT3BlbiBTb3VuZCBTeXN0ZW0KICMKIENPTkZJR19TT1VORF9QUklNRT15Ci0jIENPTkZJR19PQlNPTEVURV9PU1NfRFJJVkVSIGlzIG5vdCBzZXQKICMgQ09ORklHX1NPVU5EX01TTkRDTEFTIGlzIG5vdCBzZXQKICMgQ09ORklHX1NPVU5EX01TTkRQSU4gaXMgbm90IHNldAotIyBDT05GSUdfU09VTkRfT1NTIGlzIG5vdCBzZXQKIAogIwogIyBVU0Igc3VwcG9ydAogIwogQ09ORklHX1VTQl9BUkNIX0hBU19IQ0Q9eQogQ09ORklHX1VTQl9BUkNIX0hBU19PSENJPXkKKyMgQ09ORklHX1VTQl9BUkNIX0hBU19FSENJIGlzIG5vdCBzZXQKICMgQ09ORklHX1VTQiBpcyBub3Qgc2V0CiAKICMKQEAgLTY4MCwxNyArNzM0LDYgQEAKICMgVVNCIEdhZGdldCBTdXBwb3J0CiAjCiAjIENPTkZJR19VU0JfR0FER0VUIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9HQURHRVRfTkVUMjI4MCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfR0FER0VUX1BYQTJYWCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfR0FER0VUX0dPS1UgaXMgbm90IHNldAotIyBDT05GSUdfVVNCX0dBREdFVF9MSDdBNDBYIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9HQURHRVRfT01BUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfR0FER0VUX0RVTU1ZX0hDRCBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfWkVSTyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfRVRIIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9HQURHRVRGUyBpcyBub3Qgc2V0Ci0jIENPTkZJR19VU0JfRklMRV9TVE9SQUdFIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VTQl9HX1NFUklBTCBpcyBub3Qgc2V0CiAKICMKICMgTU1DL1NEIENhcmQgc3VwcG9ydApAQCAtNjk4LDIwICs3NDEsMjcgQEAKICMgQ09ORklHX01NQyBpcyBub3Qgc2V0CiAKICMKKyMgUmVhbCBUaW1lIENsb2NrCisjCitDT05GSUdfUlRDX0xJQj15CisjIENPTkZJR19SVENfQ0xBU1MgaXMgbm90IHNldAorCisjCiAjIEZpbGUgc3lzdGVtcwogIwogQ09ORklHX0VYVDJfRlM9eQogIyBDT05GSUdfRVhUMl9GU19YQVRUUiBpcyBub3Qgc2V0CiAjIENPTkZJR19FWFQyX0ZTX1hJUCBpcyBub3Qgc2V0CiAjIENPTkZJR19FWFQzX0ZTIGlzIG5vdCBzZXQKLSMgQ09ORklHX0pCRCBpcyBub3Qgc2V0CiAjIENPTkZJR19SRUlTRVJGU19GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAogIyBDT05GSUdfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKICMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0CiAjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiBDT05GSUdfUk9NRlNfRlM9eQogQ09ORklHX0lOT1RJRlk9eQorQ09ORklHX0lOT1RJRllfVVNFUj15CiAjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0CiBDT05GSUdfRE5PVElGWT15CiAjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldApAQCAtNzQxLDcgKzc5MSw3IEBACiAjIENPTkZJR19UTVBGUyBpcyBub3Qgc2V0CiAjIENPTkZJR19IVUdFVExCX1BBR0UgaXMgbm90IHNldAogQ09ORklHX1JBTUZTPXkKLSMgQ09ORklHX1JFTEFZRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQ09ORklHRlNfRlMgaXMgbm90IHNldAogCiAjCiAjIE1pc2NlbGxhbmVvdXMgZmlsZXN5c3RlbXMKQEAgLTg0MywxMCArODkzLDEzIEBACiAjIEtlcm5lbCBoYWNraW5nCiAjCiAjIENPTkZJR19QUklOVEtfVElNRSBpcyBub3Qgc2V0CisjIENPTkZJR19NQUdJQ19TWVNSUSBpcyBub3Qgc2V0CiAjIENPTkZJR19ERUJVR19LRVJORUwgaXMgbm90IHNldAogQ09ORklHX0xPR19CVUZfU0hJRlQ9MTQKIENPTkZJR19ERUJVR19CVUdWRVJCT1NFPXkKKyMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKIENPTkZJR19GUkFNRV9QT0lOVEVSPXkKKyMgQ09ORklHX1VOV0lORF9JTkZPIGlzIG5vdCBzZXQKICMgQ09ORklHX0RFQlVHX1VTRVIgaXMgbm90IHNldAogCiAjCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL29uZWFybV9kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL29uZWFybV9kZWZjb25maWcKaW5kZXggNTQwMWMwMS4uMmI0YTYzYiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29uZmlncy9vbmVhcm1fZGVmY29uZmlnCisrKyBiL2FyY2gvYXJtL2NvbmZpZ3Mvb25lYXJtX2RlZmNvbmZpZwpAQCAtODUsNiArODUsNyBAQAogIyBDT05GSUdfQVJDSF9JTlRFR1JBVE9SIGlzIG5vdCBzZXQKICMgQ09ORklHX0FSQ0hfUkVBTFZJRVcgaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9WRVJTQVRJTEUgaXMgbm90IHNldAorQ09ORklHX0FSQ0hfQVQ5MT15CiBDT05GSUdfQVJDSF9BVDkxUk05MjAwPXkKICMgQ09ORklHX0FSQ0hfQ0xQUzc1MDAgaXMgbm90IHNldAogIyBDT05GSUdfQVJDSF9DTFBTNzExWCBpcyBub3Qgc2V0CmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb25maWdzL3RyaXplcHM0X2RlZmNvbmZpZyBiL2FyY2gvYXJtL2NvbmZpZ3MvdHJpemVwczRfZGVmY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2Njk4ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9jb25maWdzL3RyaXplcHM0X2RlZmNvbmZpZwpAQCAtMCwwICsxLDE1NzkgQEAKKyMKKyMgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbWFrZSBjb25maWc6IGRvbid0IGVkaXQKKyMgTGludXgga2VybmVsIHZlcnNpb246IDIuNi4xNworIyBTYXQgSnVuIDI0IDIyOjQ1OjE0IDIwMDYKKyMKK0NPTkZJR19BUk09eQorQ09ORklHX01NVT15CitDT05GSUdfUldTRU1fR0VORVJJQ19TUElOTE9DSz15CitDT05GSUdfR0VORVJJQ19IV0VJR0hUPXkKK0NPTkZJR19HRU5FUklDX0NBTElCUkFURV9ERUxBWT15CitDT05GSUdfQVJDSF9NVERfWElQPXkKK0NPTkZJR19WRUNUT1JTX0JBU0U9MHhmZmZmMDAwMAorCisjCisjIENvZGUgbWF0dXJpdHkgbGV2ZWwgb3B0aW9ucworIworQ09ORklHX0VYUEVSSU1FTlRBTD15CitDT05GSUdfQlJPS0VOX09OX1NNUD15CitDT05GSUdfTE9DS19LRVJORUw9eQorQ09ORklHX0lOSVRfRU5WX0FSR19MSU1JVD0zMgorCisjCisjIEdlbmVyYWwgc2V0dXAKKyMKK0NPTkZJR19MT0NBTFZFUlNJT049IiIKK0NPTkZJR19MT0NBTFZFUlNJT05fQVVUTz15CitDT05GSUdfU1dBUD15CitDT05GSUdfU1lTVklQQz15CitDT05GSUdfUE9TSVhfTVFVRVVFPXkKK0NPTkZJR19CU0RfUFJPQ0VTU19BQ0NUPXkKK0NPTkZJR19CU0RfUFJPQ0VTU19BQ0NUX1YzPXkKK0NPTkZJR19TWVNDVEw9eQorQ09ORklHX0FVRElUPXkKK0NPTkZJR19JS0NPTkZJRz15CitDT05GSUdfSUtDT05GSUdfUFJPQz15CisjIENPTkZJR19SRUxBWSBpcyBub3Qgc2V0CitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0iIgorQ09ORklHX1VJRDE2PXkKK0NPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRT15CitDT05GSUdfRU1CRURERUQ9eQorQ09ORklHX0tBTExTWU1TPXkKK0NPTkZJR19LQUxMU1lNU19FWFRSQV9QQVNTPXkKK0NPTkZJR19IT1RQTFVHPXkKK0NPTkZJR19QUklOVEs9eQorQ09ORklHX0JVRz15CitDT05GSUdfRUxGX0NPUkU9eQorQ09ORklHX0JBU0VfRlVMTD15CitDT05GSUdfRlVURVg9eQorQ09ORklHX0VQT0xMPXkKK0NPTkZJR19TSE1FTT15CitDT05GSUdfU0xBQj15CisjIENPTkZJR19USU5ZX1NITUVNIGlzIG5vdCBzZXQKK0NPTkZJR19CQVNFX1NNQUxMPTAKKyMgQ09ORklHX1NMT0IgaXMgbm90IHNldAorQ09ORklHX09CU09MRVRFX0lOVEVSTU9EVUxFPXkKKworIworIyBMb2FkYWJsZSBtb2R1bGUgc3VwcG9ydAorIworQ09ORklHX01PRFVMRVM9eQorQ09ORklHX01PRFVMRV9VTkxPQUQ9eQorQ09ORklHX01PRFVMRV9GT1JDRV9VTkxPQUQ9eQorIyBDT05GSUdfTU9EVkVSU0lPTlMgaXMgbm90IHNldAorQ09ORklHX01PRFVMRV9TUkNWRVJTSU9OX0FMTD15CitDT05GSUdfS01PRD15CisKKyMKKyMgQmxvY2sgbGF5ZXIKKyMKKyMgQ09ORklHX0JMS19ERVZfSU9fVFJBQ0UgaXMgbm90IHNldAorCisjCisjIElPIFNjaGVkdWxlcnMKKyMKK0NPTkZJR19JT1NDSEVEX05PT1A9eQorQ09ORklHX0lPU0NIRURfQVM9eQorQ09ORklHX0lPU0NIRURfREVBRExJTkU9eQorQ09ORklHX0lPU0NIRURfQ0ZRPXkKK0NPTkZJR19ERUZBVUxUX0FTPXkKKyMgQ09ORklHX0RFRkFVTFRfREVBRExJTkUgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9DRlEgaXMgbm90IHNldAorIyBDT05GSUdfREVGQVVMVF9OT09QIGlzIG5vdCBzZXQKK0NPTkZJR19ERUZBVUxUX0lPU0NIRUQ9ImFudGljaXBhdG9yeSIKKworIworIyBTeXN0ZW0gVHlwZQorIworIyBDT05GSUdfQVJDSF9DTFBTNzUwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0NMUFM3MTFYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfQ08yODUgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9FQlNBMTEwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRVA5M1hYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRk9PVEJSSURHRSBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0lOVEVHUkFUT1IgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JT1AzWFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JWFA0WFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JWFAyMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfSVhQMjNYWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0w3MjAwIGlzIG5vdCBzZXQKK0NPTkZJR19BUkNIX1BYQT15CisjIENPTkZJR19BUkNIX1JQQyBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1NBMTEwMCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX1MzQzI0MTAgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9TSEFSSyBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0xIN0E0MFggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9PTUFQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfVkVSU0FUSUxFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfUkVBTFZJRVcgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9JTVggaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9INzIwWCBpcyBub3Qgc2V0CisjIENPTkZJR19BUkNIX0FBRUMyMDAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMCBpcyBub3Qgc2V0CisKKyMKKyMgSW50ZWwgUFhBMnh4IEltcGxlbWVudGF0aW9ucworIworIyBDT05GSUdfQVJDSF9MVUJCT0NLIGlzIG5vdCBzZXQKKyMgQ09ORklHX01BQ0hfTE9HSUNQRF9QWEEyNzAgaXMgbm90IHNldAorIyBDT05GSUdfTUFDSF9NQUlOU1RPTkUgaXMgbm90IHNldAorIyBDT05GSUdfQVJDSF9QWEFfSURQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1BYQV9TSEFSUFNMIGlzIG5vdCBzZXQKK0NPTkZJR19NQUNIX1RSSVpFUFM0PXkKK0NPTkZJR19NQUNIX1RSSVpFUFM0X0NPTlhTPXkKKyMgQ09ORklHX01BQ0hfVFJJWkVQUzRfQU5ZIGlzIG5vdCBzZXQKK0NPTkZJR19QWEEyN3g9eQorCisjCisjIFByb2Nlc3NvciBUeXBlCisjCitDT05GSUdfQ1BVXzMyPXkKK0NPTkZJR19DUFVfWFNDQUxFPXkKK0NPTkZJR19DUFVfMzJ2NT15CitDT05GSUdfQ1BVX0FCUlRfRVY1VD15CitDT05GSUdfQ1BVX0NBQ0hFX1ZJVlQ9eQorQ09ORklHX0NQVV9UTEJfVjRXQkk9eQorCisjCisjIFByb2Nlc3NvciBGZWF0dXJlcworIworQ09ORklHX0FSTV9USFVNQj15CitDT05GSUdfWFNDQUxFX1BNVT15CisKKyMKKyMgQnVzIHN1cHBvcnQKKyMKKworIworIyBQQ0NBUkQgKFBDTUNJQS9DYXJkQnVzKSBzdXBwb3J0CisjCitDT05GSUdfUENDQVJEPW0KKyMgQ09ORklHX1BDTUNJQV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfUENNQ0lBPW0KK0NPTkZJR19QQ01DSUFfTE9BRF9DSVM9eQorQ09ORklHX1BDTUNJQV9JT0NUTD15CisKKyMKKyMgUEMtY2FyZCBicmlkZ2VzCisjCitDT05GSUdfUENNQ0lBX1BYQTJYWD1tCisKKyMKKyMgS2VybmVsIEZlYXR1cmVzCisjCitDT05GSUdfUFJFRU1QVD15CisjIENPTkZJR19OT19JRExFX0haIGlzIG5vdCBzZXQKK0NPTkZJR19IWj0xMDAKKyMgQ09ORklHX0FFQUJJIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FSQ0hfRElTQ09OVElHTUVNX0VOQUJMRSBpcyBub3Qgc2V0CitDT05GSUdfU0VMRUNUX01FTU9SWV9NT0RFTD15CitDT05GSUdfRkxBVE1FTV9NQU5VQUw9eQorIyBDT05GSUdfRElTQ09OVElHTUVNX01BTlVBTCBpcyBub3Qgc2V0CisjIENPTkZJR19TUEFSU0VNRU1fTUFOVUFMIGlzIG5vdCBzZXQKK0NPTkZJR19GTEFUTUVNPXkKK0NPTkZJR19GTEFUX05PREVfTUVNX01BUD15CisjIENPTkZJR19TUEFSU0VNRU1fU1RBVElDIGlzIG5vdCBzZXQKK0NPTkZJR19TUExJVF9QVExPQ0tfQ1BVUz00MDk2CitDT05GSUdfTEVEUz15CitDT05GSUdfTEVEU19USU1FUj15CitDT05GSUdfTEVEU19DUFU9eQorQ09ORklHX0FMSUdOTUVOVF9UUkFQPXkKKworIworIyBCb290IG9wdGlvbnMKKyMKK0NPTkZJR19aQk9PVF9ST01fVEVYVD0wCitDT05GSUdfWkJPT1RfUk9NX0JTUz0wCitDT05GSUdfQ01ETElORT0icm9vdD0vZGV2L25mcyBpcD1ib290cCBjb25zb2xlPXR0eVMwLDExNTIwMG44IgorIyBDT05GSUdfWElQX0tFUk5FTCBpcyBub3Qgc2V0CisKKyMKKyMgRmxvYXRpbmcgcG9pbnQgZW11bGF0aW9uCisjCisKKyMKKyMgQXQgbGVhc3Qgb25lIGVtdWxhdGlvbiBtdXN0IGJlIHNlbGVjdGVkCisjCitDT05GSUdfRlBFX05XRlBFPXkKK0NPTkZJR19GUEVfTldGUEVfWFA9eQorIyBDT05GSUdfRlBFX0ZBU1RGUEUgaXMgbm90IHNldAorCisjCisjIFVzZXJzcGFjZSBiaW5hcnkgZm9ybWF0cworIworQ09ORklHX0JJTkZNVF9FTEY9eQorIyBDT05GSUdfQklORk1UX0FPVVQgaXMgbm90IHNldAorQ09ORklHX0JJTkZNVF9NSVNDPW0KKyMgQ09ORklHX0FSVEhVUiBpcyBub3Qgc2V0CisKKyMKKyMgUG93ZXIgbWFuYWdlbWVudCBvcHRpb25zCisjCitDT05GSUdfUE09eQorQ09ORklHX1BNX0xFR0FDWT15CisjIENPTkZJR19QTV9ERUJVRyBpcyBub3Qgc2V0CitDT05GSUdfQVBNPXkKKworIworIyBOZXR3b3JraW5nCisjCitDT05GSUdfTkVUPXkKKworIworIyBOZXR3b3JraW5nIG9wdGlvbnMKKyMKKyMgQ09ORklHX05FVERFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19QQUNLRVQ9eQorQ09ORklHX1BBQ0tFVF9NTUFQPXkKK0NPTkZJR19VTklYPXkKK0NPTkZJR19YRlJNPXkKK0NPTkZJR19YRlJNX1VTRVI9bQorQ09ORklHX05FVF9LRVk9eQorQ09ORklHX0lORVQ9eQorIyBDT05GSUdfSVBfTVVMVElDQVNUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQX0FEVkFOQ0VEX1JPVVRFUiBpcyBub3Qgc2V0CitDT05GSUdfSVBfRklCX0hBU0g9eQorQ09ORklHX0lQX1BOUD15CitDT05GSUdfSVBfUE5QX0RIQ1A9eQorQ09ORklHX0lQX1BOUF9CT09UUD15CisjIENPTkZJR19JUF9QTlBfUkFSUCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfSVBJUCBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRfSVBHUkUgaXMgbm90IHNldAorIyBDT05GSUdfQVJQRCBpcyBub3Qgc2V0CisjIENPTkZJR19TWU5fQ09PS0lFUyBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUX0FIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfRVNQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfSVBDT01QIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVRfWEZSTV9UVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVF9UVU5ORUwgaXMgbm90IHNldAorQ09ORklHX0lORVRfRElBRz15CitDT05GSUdfSU5FVF9UQ1BfRElBRz15CisjIENPTkZJR19UQ1BfQ09OR19BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfVENQX0NPTkdfQklDPXkKKworIworIyBJUDogVmlydHVhbCBTZXJ2ZXIgQ29uZmlndXJhdGlvbgorIworIyBDT05GSUdfSVBfVlMgaXMgbm90IHNldAorQ09ORklHX0lQVjY9bQorIyBDT05GSUdfSVBWNl9QUklWQUNZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lQVjZfUk9VVEVSX1BSRUYgaXMgbm90IHNldAorIyBDT05GSUdfSU5FVDZfQUggaXMgbm90IHNldAorIyBDT05GSUdfSU5FVDZfRVNQIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lORVQ2X0lQQ09NUCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUNl9YRlJNX1RVTk5FTCBpcyBub3Qgc2V0CisjIENPTkZJR19JTkVUNl9UVU5ORUwgaXMgbm90IHNldAorIyBDT05GSUdfSVBWNl9UVU5ORUwgaXMgbm90IHNldAorQ09ORklHX05FVEZJTFRFUj15CisjIENPTkZJR19ORVRGSUxURVJfREVCVUcgaXMgbm90IHNldAorCisjCisjIENvcmUgTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KKyMKKyMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVEZJTFRFUl9YVEFCTEVTIGlzIG5vdCBzZXQKKworIworIyBJUDogTmV0ZmlsdGVyIENvbmZpZ3VyYXRpb24KKyMKK0NPTkZJR19JUF9ORl9DT05OVFJBQ0s9bQorQ09ORklHX0lQX05GX0NUX0FDQ1Q9eQorQ09ORklHX0lQX05GX0NPTk5UUkFDS19NQVJLPXkKKyMgQ09ORklHX0lQX05GX0NPTk5UUkFDS19FVkVOVFMgaXMgbm90IHNldAorIyBDT05GSUdfSVBfTkZfQ1RfUFJPVE9fU0NUUCBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfRlRQPW0KK0NPTkZJR19JUF9ORl9JUkM9bQorIyBDT05GSUdfSVBfTkZfTkVUQklPU19OUyBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfVEZUUD1tCitDT05GSUdfSVBfTkZfQU1BTkRBPW0KKyMgQ09ORklHX0lQX05GX1BQVFAgaXMgbm90IHNldAorIyBDT05GSUdfSVBfTkZfSDMyMyBpcyBub3Qgc2V0CitDT05GSUdfSVBfTkZfUVVFVUU9bQorCisjCisjIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjCisjIENPTkZJR19JUDZfTkZfUVVFVUUgaXMgbm90IHNldAorCisjCisjIERDQ1AgQ29uZmlndXJhdGlvbiAoRVhQRVJJTUVOVEFMKQorIworIyBDT05GSUdfSVBfRENDUCBpcyBub3Qgc2V0CisKKyMKKyMgU0NUUCBDb25maWd1cmF0aW9uIChFWFBFUklNRU5UQUwpCisjCisjIENPTkZJR19JUF9TQ1RQIGlzIG5vdCBzZXQKKworIworIyBUSVBDIENvbmZpZ3VyYXRpb24gKEVYUEVSSU1FTlRBTCkKKyMKKyMgQ09ORklHX1RJUEMgaXMgbm90IHNldAorIyBDT05GSUdfQVRNIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0CitDT05GSUdfVkxBTl84MDIxUT1tCisjIENPTkZJR19ERUNORVQgaXMgbm90IHNldAorIyBDT05GSUdfTExDMiBpcyBub3Qgc2V0CisjIENPTkZJR19JUFggaXMgbm90IHNldAorIyBDT05GSUdfQVRBTEsgaXMgbm90IHNldAorIyBDT05GSUdfWDI1IGlzIG5vdCBzZXQKKyMgQ09ORklHX0xBUEIgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX0RJVkVSVCBpcyBub3Qgc2V0CisjIENPTkZJR19FQ09ORVQgaXMgbm90IHNldAorIyBDT05GSUdfV0FOX1JPVVRFUiBpcyBub3Qgc2V0CisKKyMKKyMgUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nCisjCisjIENPTkZJR19ORVRfU0NIRUQgaXMgbm90IHNldAorCisjCisjIE5ldHdvcmsgdGVzdGluZworIworIyBDT05GSUdfTkVUX1BLVEdFTiBpcyBub3Qgc2V0CisjIENPTkZJR19IQU1SQURJTyBpcyBub3Qgc2V0CitDT05GSUdfSVJEQT1tCisKKyMKKyMgSXJEQSBwcm90b2NvbHMKKyMKK0NPTkZJR19JUkxBTj1tCitDT05GSUdfSVJORVQ9bQorQ09ORklHX0lSQ09NTT1tCitDT05GSUdfSVJEQV9VTFRSQT15CisKKyMKKyMgSXJEQSBvcHRpb25zCisjCitDT05GSUdfSVJEQV9DQUNIRV9MQVNUX0xTQVA9eQorQ09ORklHX0lSREFfRkFTVF9SUj15CisjIENPTkZJR19JUkRBX0RFQlVHIGlzIG5vdCBzZXQKKworIworIyBJbmZyYXJlZC1wb3J0IGRldmljZSBkcml2ZXJzCisjCisKKyMKKyMgU0lSIGRldmljZSBkcml2ZXJzCisjCitDT05GSUdfSVJUVFlfU0lSPW0KKworIworIyBEb25nbGUgc3VwcG9ydAorIworIyBDT05GSUdfRE9OR0xFIGlzIG5vdCBzZXQKKworIworIyBPbGQgU0lSIGRldmljZSBkcml2ZXJzCisjCisjIENPTkZJR19JUlBPUlRfU0lSIGlzIG5vdCBzZXQKKworIworIyBPbGQgU2VyaWFsIGRvbmdsZSBzdXBwb3J0CisjCisKKyMKKyMgRklSIGRldmljZSBkcml2ZXJzCisjCisjIENPTkZJR19VU0JfSVJEQSBpcyBub3Qgc2V0CisjIENPTkZJR19TSUdNQVRFTF9GSVIgaXMgbm90IHNldAorIyBDT05GSUdfUFhBX0ZJQ1AgaXMgbm90IHNldAorQ09ORklHX0JUPW0KK0NPTkZJR19CVF9MMkNBUD1tCitDT05GSUdfQlRfU0NPPW0KK0NPTkZJR19CVF9SRkNPTU09bQorQ09ORklHX0JUX1JGQ09NTV9UVFk9eQorQ09ORklHX0JUX0JORVA9bQorQ09ORklHX0JUX0JORVBfTUNfRklMVEVSPXkKK0NPTkZJR19CVF9CTkVQX1BST1RPX0ZJTFRFUj15CitDT05GSUdfQlRfSElEUD1tCisKKyMKKyMgQmx1ZXRvb3RoIGRldmljZSBkcml2ZXJzCisjCisjIENPTkZJR19CVF9IQ0lVU0IgaXMgbm90IHNldAorIyBDT05GSUdfQlRfSENJVUFSVCBpcyBub3Qgc2V0CisjIENPTkZJR19CVF9IQ0lCQ00yMDNYIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JUX0hDSUJQQTEwWCBpcyBub3Qgc2V0CisjIENPTkZJR19CVF9IQ0lCRlVTQiBpcyBub3Qgc2V0CisjIENPTkZJR19CVF9IQ0lEVEwxIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JUX0hDSUJUM0MgaXMgbm90IHNldAorIyBDT05GSUdfQlRfSENJQkxVRUNBUkQgaXMgbm90IHNldAorIyBDT05GSUdfQlRfSENJQlRVQVJUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JUX0hDSVZIQ0kgaXMgbm90IHNldAorQ09ORklHX0lFRUU4MDIxMT1tCisjIENPTkZJR19JRUVFODAyMTFfREVCVUcgaXMgbm90IHNldAorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9XRVA9bQorQ09ORklHX0lFRUU4MDIxMV9DUllQVF9DQ01QPW0KK0NPTkZJR19JRUVFODAyMTFfQ1JZUFRfVEtJUD1tCitDT05GSUdfSUVFRTgwMjExX1NPRlRNQUM9bQorIyBDT05GSUdfSUVFRTgwMjExX1NPRlRNQUNfREVCVUcgaXMgbm90IHNldAorQ09ORklHX1dJUkVMRVNTX0VYVD15CisKKyMKKyMgRGV2aWNlIERyaXZlcnMKKyMKKworIworIyBHZW5lcmljIERyaXZlciBPcHRpb25zCisjCitDT05GSUdfU1RBTkRBTE9ORT15CitDT05GSUdfUFJFVkVOVF9GSVJNV0FSRV9CVUlMRD15CitDT05GSUdfRldfTE9BREVSPXkKKworIworIyBDb25uZWN0b3IgLSB1bmlmaWVkIHVzZXJzcGFjZSA8LT4ga2VybmVsc3BhY2UgbGlua2VyCisjCitDT05GSUdfQ09OTkVDVE9SPXkKK0NPTkZJR19QUk9DX0VWRU5UUz15CisKKyMKKyMgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlcyAoTVREKQorIworQ09ORklHX01URD15CisjIENPTkZJR19NVERfREVCVUcgaXMgbm90IHNldAorQ09ORklHX01URF9DT05DQVQ9eQorQ09ORklHX01URF9QQVJUSVRJT05TPXkKK0NPTkZJR19NVERfUkVEQk9PVF9QQVJUUz15CitDT05GSUdfTVREX1JFREJPT1RfRElSRUNUT1JZX0JMT0NLPS0xCitDT05GSUdfTVREX1JFREJPT1RfUEFSVFNfVU5BTExPQ0FURUQ9eQorQ09ORklHX01URF9SRURCT09UX1BBUlRTX1JFQURPTkxZPXkKKyMgQ09ORklHX01URF9DTURMSU5FX1BBUlRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9BRlNfUEFSVFMgaXMgbm90IHNldAorCisjCisjIFVzZXIgTW9kdWxlcyBBbmQgVHJhbnNsYXRpb24gTGF5ZXJzCisjCitDT05GSUdfTVREX0NIQVI9eQorQ09ORklHX01URF9CTE9DSz15CisjIENPTkZJR19GVEwgaXMgbm90IHNldAorQ09ORklHX05GVEw9eQorQ09ORklHX05GVExfUlc9eQorQ09ORklHX0lORlRMPXkKKyMgQ09ORklHX1JGRF9GVEwgaXMgbm90IHNldAorCisjCisjIFJBTS9ST00vRmxhc2ggY2hpcCBkcml2ZXJzCisjCitDT05GSUdfTVREX0NGST15CitDT05GSUdfTVREX0pFREVDUFJPQkU9eQorQ09ORklHX01URF9HRU5fUFJPQkU9eQorQ09ORklHX01URF9DRklfQURWX09QVElPTlM9eQorIyBDT05GSUdfTVREX0NGSV9OT1NXQVAgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0NGSV9CRV9CWVRFX1NXQVAgaXMgbm90IHNldAorQ09ORklHX01URF9DRklfTEVfQllURV9TV0FQPXkKK0NPTkZJR19NVERfQ0ZJX0dFT01FVFJZPXkKK0NPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMT15CitDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzI9eQorQ09ORklHX01URF9NQVBfQkFOS19XSURUSF80PXkKKyMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF84IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9NQVBfQkFOS19XSURUSF8xNiBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfTUFQX0JBTktfV0lEVEhfMzIgaXMgbm90IHNldAorQ09ORklHX01URF9DRklfSTE9eQorQ09ORklHX01URF9DRklfSTI9eQorIyBDT05GSUdfTVREX0NGSV9JNCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQ0ZJX0k4IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9PVFAgaXMgbm90IHNldAorQ09ORklHX01URF9DRklfSU5URUxFWFQ9eQorQ09ORklHX01URF9DRklfQU1EU1REPXkKKyMgQ09ORklHX01URF9DRklfU1RBQSBpcyBub3Qgc2V0CitDT05GSUdfTVREX0NGSV9VVElMPXkKKyMgQ09ORklHX01URF9SQU0gaXMgbm90IHNldAorIyBDT05GSUdfTVREX1JPTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQUJTRU5UIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9PQlNPTEVURV9DSElQUyBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfWElQIGlzIG5vdCBzZXQKKworIworIyBNYXBwaW5nIGRyaXZlcnMgZm9yIGNoaXAgYWNjZXNzCisjCitDT05GSUdfTVREX0NPTVBMRVhfTUFQUElOR1M9eQorQ09ORklHX01URF9QSFlTTUFQPXkKK0NPTkZJR19NVERfUEhZU01BUF9TVEFSVD0weDAKK0NPTkZJR19NVERfUEhZU01BUF9MRU49MHg0MDAwMDAwCitDT05GSUdfTVREX1BIWVNNQVBfQkFOS1dJRFRIPTIKKyMgQ09ORklHX01URF9UUklaRVBTNCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfQVJNX0lOVEVHUkFUT1IgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0lNUEE3IGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9TSEFSUF9TTCBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfUExBVFJBTSBpcyBub3Qgc2V0CisKKyMKKyMgU2VsZi1jb250YWluZWQgTVREIGRldmljZSBkcml2ZXJzCisjCisjIENPTkZJR19NVERfREFUQUZMQVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9NMjVQODAgaXMgbm90IHNldAorIyBDT05GSUdfTVREX1NMUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9QSFJBTSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfTVREUkFNIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9CTE9DSzJNVEQgaXMgbm90IHNldAorCisjCisjIERpc2stT24tQ2hpcCBEZXZpY2UgRHJpdmVycworIworIyBDT05GSUdfTVREX0RPQzIwMDAgaXMgbm90IHNldAorIyBDT05GSUdfTVREX0RPQzIwMDEgaXMgbm90IHNldAorQ09ORklHX01URF9ET0MyMDAxUExVUz15CitDT05GSUdfTVREX0RPQ1BST0JFPXkKK0NPTkZJR19NVERfRE9DRUNDPXkKKyMgQ09ORklHX01URF9ET0NQUk9CRV9BRFZBTkNFRCBpcyBub3Qgc2V0CitDT05GSUdfTVREX0RPQ1BST0JFX0FERFJFU1M9MAorCisjCisjIE5BTkQgRmxhc2ggRGV2aWNlIERyaXZlcnMKKyMKK0NPTkZJR19NVERfTkFORD15CisjIENPTkZJR19NVERfTkFORF9WRVJJRllfV1JJVEUgaXMgbm90IHNldAorIyBDT05GSUdfTVREX05BTkRfSDE5MDAgaXMgbm90IHNldAorQ09ORklHX01URF9OQU5EX0lEUz15CitDT05GSUdfTVREX05BTkRfRElTS09OQ0hJUD15CisjIENPTkZJR19NVERfTkFORF9ESVNLT05DSElQX1BST0JFX0FEVkFOQ0VEIGlzIG5vdCBzZXQKK0NPTkZJR19NVERfTkFORF9ESVNLT05DSElQX1BST0JFX0FERFJFU1M9MAorIyBDT05GSUdfTVREX05BTkRfRElTS09OQ0hJUF9CQlRXUklURSBpcyBub3Qgc2V0CisjIENPTkZJR19NVERfTkFORF9TSEFSUFNMIGlzIG5vdCBzZXQKKyMgQ09ORklHX01URF9OQU5EX05BTkRTSU0gaXMgbm90IHNldAorCisjCisjIE9uZU5BTkQgRmxhc2ggRGV2aWNlIERyaXZlcnMKKyMKKyMgQ09ORklHX01URF9PTkVOQU5EIGlzIG5vdCBzZXQKKworIworIyBQYXJhbGxlbCBwb3J0IHN1cHBvcnQKKyMKKyMgQ09ORklHX1BBUlBPUlQgaXMgbm90IHNldAorCisjCisjIFBsdWcgYW5kIFBsYXkgc3VwcG9ydAorIworCisjCisjIEJsb2NrIGRldmljZXMKKyMKKyMgQ09ORklHX0JMS19ERVZfQ09XX0NPTU1PTiBpcyBub3Qgc2V0CitDT05GSUdfQkxLX0RFVl9MT09QPXkKK0NPTkZJR19CTEtfREVWX0NSWVBUT0xPT1A9bQorQ09ORklHX0JMS19ERVZfTkJEPXkKKyMgQ09ORklHX0JMS19ERVZfVUIgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfUkFNPXkKK0NPTkZJR19CTEtfREVWX1JBTV9DT1VOVD00CitDT05GSUdfQkxLX0RFVl9SQU1fU0laRT00MDk2CitDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQorIyBDT05GSUdfQ0RST01fUEtUQ0RWRCBpcyBub3Qgc2V0CisjIENPTkZJR19BVEFfT1ZFUl9FVEggaXMgbm90IHNldAorCisjCisjIEFUQS9BVEFQSS9NRk0vUkxMIHN1cHBvcnQKKyMKK0NPTkZJR19JREU9eQorQ09ORklHX0JMS19ERVZfSURFPXkKKworIworIyBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaWRlLnR4dCBmb3IgaGVscC9pbmZvIG9uIElERSBkcml2ZXMKKyMKKyMgQ09ORklHX0JMS19ERVZfSURFX1NBVEEgaXMgbm90IHNldAorQ09ORklHX0JMS19ERVZfSURFRElTSz15CitDT05GSUdfSURFRElTS19NVUxUSV9NT0RFPXkKK0NPTkZJR19CTEtfREVWX0lERUNTPW0KKyMgQ09ORklHX0JMS19ERVZfSURFQ0QgaXMgbm90IHNldAorIyBDT05GSUdfQkxLX0RFVl9JREVUQVBFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSURFRkxPUFBZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSURFU0NTSSBpcyBub3Qgc2V0CisjIENPTkZJR19JREVfVEFTS19JT0NUTCBpcyBub3Qgc2V0CisKKyMKKyMgSURFIGNoaXBzZXQgc3VwcG9ydC9idWdmaXhlcworIworQ09ORklHX0lERV9HRU5FUklDPXkKK0NPTkZJR19JREVfUFhBX0NGPXkKK0NPTkZJR19JREVfQVJNPXkKKyMgQ09ORklHX0JMS19ERVZfSURFRE1BIGlzIG5vdCBzZXQKKyMgQ09ORklHX0lERURNQV9BVVRPIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfSEQgaXMgbm90IHNldAorCisjCisjIFNDU0kgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX1JBSURfQVRUUlMgaXMgbm90IHNldAorQ09ORklHX1NDU0k9bQorQ09ORklHX1NDU0lfUFJPQ19GUz15CisKKyMKKyMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkKKyMKK0NPTkZJR19CTEtfREVWX1NEPW0KKyMgQ09ORklHX0NIUl9ERVZfU1QgaXMgbm90IHNldAorIyBDT05GSUdfQ0hSX0RFVl9PU1NUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JMS19ERVZfU1IgaXMgbm90IHNldAorQ09ORklHX0NIUl9ERVZfU0c9bQorIyBDT05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAorCisjCisjIFNvbWUgU0NTSSBkZXZpY2VzIChlLmcuIENEIGp1a2Vib3gpIHN1cHBvcnQgbXVsdGlwbGUgTFVOcworIworQ09ORklHX1NDU0lfTVVMVElfTFVOPXkKKyMgQ09ORklHX1NDU0lfQ09OU1RBTlRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfTE9HR0lORyBpcyBub3Qgc2V0CisKKyMKKyMgU0NTSSBUcmFuc3BvcnQgQXR0cmlidXRlcworIworIyBDT05GSUdfU0NTSV9TUElfQVRUUlMgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9GQ19BVFRSUyBpcyBub3Qgc2V0CisjIENPTkZJR19TQ1NJX0lTQ1NJX0FUVFJTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfU0FTX0FUVFJTIGlzIG5vdCBzZXQKKworIworIyBTQ1NJIGxvdy1sZXZlbCBkcml2ZXJzCisjCisjIENPTkZJR19JU0NTSV9UQ1AgaXMgbm90IHNldAorIyBDT05GSUdfU0NTSV9TQVRBIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NDU0lfREVCVUcgaXMgbm90IHNldAorCisjCisjIFBDTUNJQSBTQ1NJIGFkYXB0ZXIgc3VwcG9ydAorIworIyBDT05GSUdfUENNQ0lBX0FIQTE1MlggaXMgbm90IHNldAorIyBDT05GSUdfUENNQ0lBX0ZET01BSU4gaXMgbm90IHNldAorIyBDT05GSUdfUENNQ0lBX05JTkpBX1NDU0kgaXMgbm90IHNldAorIyBDT05GSUdfUENNQ0lBX1FMT0dJQyBpcyBub3Qgc2V0CisjIENPTkZJR19QQ01DSUFfU1lNNTNDNTAwIGlzIG5vdCBzZXQKKworIworIyBNdWx0aS1kZXZpY2Ugc3VwcG9ydCAoUkFJRCBhbmQgTFZNKQorIworIyBDT05GSUdfTUQgaXMgbm90IHNldAorCisjCisjIEZ1c2lvbiBNUFQgZGV2aWNlIHN1cHBvcnQKKyMKKyMgQ09ORklHX0ZVU0lPTiBpcyBub3Qgc2V0CisKKyMKKyMgSUVFRSAxMzk0IChGaXJlV2lyZSkgc3VwcG9ydAorIworCisjCisjIEkyTyBkZXZpY2Ugc3VwcG9ydAorIworCisjCisjIE5ldHdvcmsgZGV2aWNlIHN1cHBvcnQKKyMKK0NPTkZJR19ORVRERVZJQ0VTPXkKKyMgQ09ORklHX0RVTU1ZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAorIyBDT05GSUdfRVFVQUxJWkVSIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RVTiBpcyBub3Qgc2V0CisKKyMKKyMgUEhZIGRldmljZSBzdXBwb3J0CisjCitDT05GSUdfUEhZTElCPXkKKworIworIyBNSUkgUEhZIGRldmljZSBkcml2ZXJzCisjCisjIENPTkZJR19NQVJWRUxMX1BIWSBpcyBub3Qgc2V0CitDT05GSUdfREFWSUNPTV9QSFk9eQorIyBDT05GSUdfUVNFTUlfUEhZIGlzIG5vdCBzZXQKKyMgQ09ORklHX0xYVF9QSFkgaXMgbm90IHNldAorIyBDT05GSUdfQ0lDQURBX1BIWSBpcyBub3Qgc2V0CisKKyMKKyMgRXRoZXJuZXQgKDEwIG9yIDEwME1iaXQpCisjCitDT05GSUdfTkVUX0VUSEVSTkVUPXkKK0NPTkZJR19NSUk9eQorIyBDT05GSUdfU01DOTFYIGlzIG5vdCBzZXQKK0NPTkZJR19ETTkwMDA9eQorCisjCisjIEV0aGVybmV0ICgxMDAwIE1iaXQpCisjCisKKyMKKyMgRXRoZXJuZXQgKDEwMDAwIE1iaXQpCisjCisKKyMKKyMgVG9rZW4gUmluZyBkZXZpY2VzCisjCisKKyMKKyMgV2lyZWxlc3MgTEFOIChub24taGFtcmFkaW8pCisjCitDT05GSUdfTkVUX1JBRElPPXkKKyMgQ09ORklHX05FVF9XSVJFTEVTU19SVE5FVExJTksgaXMgbm90IHNldAorCisjCisjIE9ic29sZXRlIFdpcmVsZXNzIGNhcmRzIHN1cHBvcnQgKHByZS04MDIuMTEpCisjCisjIENPTkZJR19TVFJJUCBpcyBub3Qgc2V0CisjIENPTkZJR19QQ01DSUFfV0FWRUxBTiBpcyBub3Qgc2V0CisjIENPTkZJR19QQ01DSUFfTkVUV0FWRSBpcyBub3Qgc2V0CisKKyMKKyMgV2lyZWxlc3MgODAyLjExIEZyZXF1ZW5jeSBIb3BwaW5nIGNhcmRzIHN1cHBvcnQKKyMKKyMgQ09ORklHX1BDTUNJQV9SQVlDUyBpcyBub3Qgc2V0CisKKyMKKyMgV2lyZWxlc3MgODAyLjExYiBJU0EvUENJIGNhcmRzIHN1cHBvcnQKKyMKK0NPTkZJR19IRVJNRVM9bQorIyBDT05GSUdfQVRNRUwgaXMgbm90IHNldAorCisjCisjIFdpcmVsZXNzIDgwMi4xMWIgUGNtY2lhL0NhcmRidXMgY2FyZHMgc3VwcG9ydAorIworQ09ORklHX1BDTUNJQV9IRVJNRVM9bQorIyBDT05GSUdfUENNQ0lBX1NQRUNUUlVNIGlzIG5vdCBzZXQKK0NPTkZJR19BSVJPX0NTPW0KKyMgQ09ORklHX1BDTUNJQV9XTDM1MDEgaXMgbm90IHNldAorQ09ORklHX0hPU1RBUD1tCitDT05GSUdfSE9TVEFQX0ZJUk1XQVJFPXkKK0NPTkZJR19IT1NUQVBfRklSTVdBUkVfTlZSQU09eQorQ09ORklHX0hPU1RBUF9DUz1tCitDT05GSUdfTkVUX1dJUkVMRVNTPXkKKworIworIyBQQ01DSUEgbmV0d29yayBkZXZpY2Ugc3VwcG9ydAorIworIyBDT05GSUdfTkVUX1BDTUNJQSBpcyBub3Qgc2V0CisKKyMKKyMgV2FuIGludGVyZmFjZXMKKyMKKyMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CitDT05GSUdfUFBQPW0KK0NPTkZJR19QUFBfTVVMVElMSU5LPXkKK0NPTkZJR19QUFBfRklMVEVSPXkKK0NPTkZJR19QUFBfQVNZTkM9bQorQ09ORklHX1BQUF9TWU5DX1RUWT1tCitDT05GSUdfUFBQX0RFRkxBVEU9bQorQ09ORklHX1BQUF9CU0RDT01QPW0KK0NPTkZJR19QUFBfTVBQRT1tCisjIENPTkZJR19QUFBPRSBpcyBub3Qgc2V0CisjIENPTkZJR19TTElQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NIQVBFUiBpcyBub3Qgc2V0CisjIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKKyMgQ09ORklHX05FVFBPTEwgaXMgbm90IHNldAorIyBDT05GSUdfTkVUX1BPTExfQ09OVFJPTExFUiBpcyBub3Qgc2V0CisKKyMKKyMgSVNETiBzdWJzeXN0ZW0KKyMKKyMgQ09ORklHX0lTRE4gaXMgbm90IHNldAorCisjCisjIElucHV0IGRldmljZSBzdXBwb3J0CisjCitDT05GSUdfSU5QVVQ9eQorCisjCisjIFVzZXJsYW5kIGludGVyZmFjZXMKKyMKK0NPTkZJR19JTlBVVF9NT1VTRURFVj15CitDT05GSUdfSU5QVVRfTU9VU0VERVZfUFNBVVg9eQorQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9YPTY0MAorQ09ORklHX0lOUFVUX01PVVNFREVWX1NDUkVFTl9ZPTQ4MAorIyBDT05GSUdfSU5QVVRfSk9ZREVWIGlzIG5vdCBzZXQKK0NPTkZJR19JTlBVVF9UU0RFVj15CitDT05GSUdfSU5QVVRfVFNERVZfU0NSRUVOX1g9NjQwCitDT05GSUdfSU5QVVRfVFNERVZfU0NSRUVOX1k9NDgwCitDT05GSUdfSU5QVVRfRVZERVY9eQorIyBDT05GSUdfSU5QVVRfRVZCVUcgaXMgbm90IHNldAorCisjCisjIElucHV0IERldmljZSBEcml2ZXJzCisjCitDT05GSUdfSU5QVVRfS0VZQk9BUkQ9eQorQ09ORklHX0tFWUJPQVJEX0FUS0JEPXkKKyMgQ09ORklHX0tFWUJPQVJEX1NVTktCRCBpcyBub3Qgc2V0CisjIENPTkZJR19LRVlCT0FSRF9MS0tCRCBpcyBub3Qgc2V0CisjIENPTkZJR19LRVlCT0FSRF9YVEtCRCBpcyBub3Qgc2V0CisjIENPTkZJR19LRVlCT0FSRF9ORVdUT04gaXMgbm90IHNldAorQ09ORklHX0lOUFVUX01PVVNFPXkKKyMgQ09ORklHX01PVVNFX1BTMiBpcyBub3Qgc2V0CitDT05GSUdfTU9VU0VfU0VSSUFMPXkKKyMgQ09ORklHX01PVVNFX1ZTWFhYQUEgaXMgbm90IHNldAorIyBDT05GSUdfSU5QVVRfSk9ZU1RJQ0sgaXMgbm90IHNldAorQ09ORklHX0lOUFVUX1RPVUNIU0NSRUVOPXkKKyMgQ09ORklHX1RPVUNIU0NSRUVOX0FEUzc4NDYgaXMgbm90IHNldAorIyBDT05GSUdfVE9VQ0hTQ1JFRU5fR1VOWkUgaXMgbm90IHNldAorIyBDT05GSUdfVE9VQ0hTQ1JFRU5fRUxPIGlzIG5vdCBzZXQKKyMgQ09ORklHX1RPVUNIU0NSRUVOX01UT1VDSCBpcyBub3Qgc2V0CisjIENPTkZJR19UT1VDSFNDUkVFTl9NSzcxMiBpcyBub3Qgc2V0CitDT05GSUdfSU5QVVRfTUlTQz15CitDT05GSUdfSU5QVVRfVUlOUFVUPW0KKworIworIyBIYXJkd2FyZSBJL08gcG9ydHMKKyMKK0NPTkZJR19TRVJJTz15CitDT05GSUdfU0VSSU9fU0VSUE9SVD15CitDT05GSUdfU0VSSU9fTElCUFMyPXkKKyMgQ09ORklHX1NFUklPX1JBVyBpcyBub3Qgc2V0CisjIENPTkZJR19HQU1FUE9SVCBpcyBub3Qgc2V0CisKKyMKKyMgQ2hhcmFjdGVyIGRldmljZXMKKyMKK0NPTkZJR19WVD15CitDT05GSUdfVlRfQ09OU09MRT15CitDT05GSUdfSFdfQ09OU09MRT15CisjIENPTkZJR19TRVJJQUxfTk9OU1RBTkRBUkQgaXMgbm90IHNldAorCisjCisjIFNlcmlhbCBkcml2ZXJzCisjCisjIENPTkZJR19TRVJJQUxfODI1MCBpcyBub3Qgc2V0CisKKyMKKyMgTm9uLTgyNTAgc2VyaWFsIHBvcnQgc3VwcG9ydAorIworQ09ORklHX1NFUklBTF9QWEE9eQorQ09ORklHX1NFUklBTF9QWEFfQ09OU09MRT15CitDT05GSUdfU0VSSUFMX0NPUkU9eQorQ09ORklHX1NFUklBTF9DT1JFX0NPTlNPTEU9eQorQ09ORklHX1VOSVg5OF9QVFlTPXkKK0NPTkZJR19MRUdBQ1lfUFRZUz15CitDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKKworIworIyBJUE1JCisjCisjIENPTkZJR19JUE1JX0hBTkRMRVIgaXMgbm90IHNldAorCisjCisjIFdhdGNoZG9nIENhcmRzCisjCitDT05GSUdfV0FUQ0hET0c9eQorIyBDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQgaXMgbm90IHNldAorCisjCisjIFdhdGNoZG9nIERldmljZSBEcml2ZXJzCisjCisjIENPTkZJR19TT0ZUX1dBVENIRE9HIGlzIG5vdCBzZXQKK0NPTkZJR19TQTExMDBfV0FUQ0hET0c9eQorCisjCisjIFVTQi1iYXNlZCBXYXRjaGRvZyBDYXJkcworIworIyBDT05GSUdfVVNCUENXQVRDSERPRyBpcyBub3Qgc2V0CisjIENPTkZJR19OVlJBTSBpcyBub3Qgc2V0CisjIENPTkZJR19EVExLIGlzIG5vdCBzZXQKKyMgQ09ORklHX1IzOTY0IGlzIG5vdCBzZXQKKworIworIyBGdGFwZSwgdGhlIGZsb3BweSB0YXBlIGRldmljZSBkcml2ZXIKKyMKKworIworIyBQQ01DSUEgY2hhcmFjdGVyIGRldmljZXMKKyMKKyMgQ09ORklHX1NZTkNMSU5LX0NTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NBUkRNQU5fNDAwMCBpcyBub3Qgc2V0CisjIENPTkZJR19DQVJETUFOXzQwNDAgaXMgbm90IHNldAorIyBDT05GSUdfUkFXX0RSSVZFUiBpcyBub3Qgc2V0CisKKyMKKyMgVFBNIGRldmljZXMKKyMKKyMgQ09ORklHX1RDR19UUE0gaXMgbm90IHNldAorIyBDT05GSUdfVEVMQ0xPQ0sgaXMgbm90IHNldAorCisjCisjIEkyQyBzdXBwb3J0CisjCitDT05GSUdfSTJDPXkKK0NPTkZJR19JMkNfQ0hBUkRFVj15CisKKyMKKyMgSTJDIEFsZ29yaXRobXMKKyMKKyMgQ09ORklHX0kyQ19BTEdPQklUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19BTEdPUENGIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19BTEdPUENBIGlzIG5vdCBzZXQKKworIworIyBJMkMgSGFyZHdhcmUgQnVzIHN1cHBvcnQKKyMKK0NPTkZJR19JMkNfUFhBPXkKK0NPTkZJR19JMkNfUFhBX1NMQVZFPXkKKyMgQ09ORklHX0kyQ19QQVJQT1JUX0xJR0hUIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19TVFVCIGlzIG5vdCBzZXQKKyMgQ09ORklHX0kyQ19QQ0FfSVNBIGlzIG5vdCBzZXQKKworIworIyBNaXNjZWxsYW5lb3VzIEkyQyBDaGlwIHN1cHBvcnQKKyMKKyMgQ09ORklHX1NFTlNPUlNfRFMxMzM3IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfRFMxMzc0IGlzIG5vdCBzZXQKK0NPTkZJR19TRU5TT1JTX0VFUFJPTT1tCisjIENPTkZJR19TRU5TT1JTX1BDRjg1NzQgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19QQ0E5NTM5IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfUENGODU5MSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX01BWDY4NzUgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0RFQlVHX0NPUkUgaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0RFQlVHX0FMR08gaXMgbm90IHNldAorIyBDT05GSUdfSTJDX0RFQlVHX0JVUyBpcyBub3Qgc2V0CisjIENPTkZJR19JMkNfREVCVUdfQ0hJUCBpcyBub3Qgc2V0CisKKyMKKyMgU1BJIHN1cHBvcnQKKyMKK0NPTkZJR19TUEk9eQorQ09ORklHX1NQSV9NQVNURVI9eQorCisjCisjIFNQSSBNYXN0ZXIgQ29udHJvbGxlciBEcml2ZXJzCisjCisjIENPTkZJR19TUElfQklUQkFORyBpcyBub3Qgc2V0CitDT05GSUdfU1BJX1BYQTJYWD1tCisKKyMKKyMgU1BJIFByb3RvY29sIE1hc3RlcnMKKyMKKworIworIyBEYWxsYXMncyAxLXdpcmUgYnVzCisjCisjIENPTkZJR19XMSBpcyBub3Qgc2V0CisKKyMKKyMgSGFyZHdhcmUgTW9uaXRvcmluZyBzdXBwb3J0CisjCitDT05GSUdfSFdNT049eQorIyBDT05GSUdfSFdNT05fVklEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURNMTAyMSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FETTEwMjUgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BRE0xMDI2IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfQURNMTAzMSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0FETTkyNDAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BU0IxMDAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19BVFhQMSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0RTMTYyMSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0Y3MTgwNUYgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19GU0NIRVIgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19GU0NQT1MgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19HTDUxOFNNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfR0w1MjBTTSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0lUODcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19MTTYzIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfTE03NSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0xNNzcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19MTTc4IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfTE04MCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0xNODMgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19MTTg1IGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfTE04NyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX0xNOTAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19MTTkyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfTUFYMTYxOSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1BDODczNjAgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldAorIyBDT05GSUdfU0VOU09SU19XODM3ODFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfVzgzNzkyRCBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4M0w3ODVUUyBpcyBub3Qgc2V0CisjIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAorCisjCisjIE1pc2MgZGV2aWNlcworIworCisjCisjIE11bHRpbWVkaWEgQ2FwYWJpbGl0aWVzIFBvcnQgZHJpdmVycworIworQ09ORklHX1VDQjE0MDA9eQorQ09ORklHX1VDQjE0MDBfVFM9eQorCisjCisjIExFRCBkZXZpY2VzCisjCitDT05GSUdfTkVXX0xFRFM9eQorQ09ORklHX0xFRFNfQ0xBU1M9eQorCisjCisjIExFRCBkcml2ZXJzCisjCisKKyMKKyMgTEVEIFRyaWdnZXJzCisjCitDT05GSUdfTEVEU19UUklHR0VSUz15CitDT05GSUdfTEVEU19UUklHR0VSX1RJTUVSPXkKK0NPTkZJR19MRURTX1RSSUdHRVJfSURFX0RJU0s9eQorCisjCisjIE11bHRpbWVkaWEgZGV2aWNlcworIworIyBDT05GSUdfVklERU9fREVWIGlzIG5vdCBzZXQKK0NPTkZJR19WSURFT19WNEwyPXkKKworIworIyBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzCisjCisjIENPTkZJR19EVkIgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0RBQlVTQiBpcyBub3Qgc2V0CisKKyMKKyMgR3JhcGhpY3Mgc3VwcG9ydAorIworQ09ORklHX0ZCPXkKK0NPTkZJR19GQl9DRkJfRklMTFJFQ1Q9eQorQ09ORklHX0ZCX0NGQl9DT1BZQVJFQT15CitDT05GSUdfRkJfQ0ZCX0lNQUdFQkxJVD15CisjIENPTkZJR19GQl9NQUNNT0RFUyBpcyBub3Qgc2V0CitDT05GSUdfRkJfRklSTVdBUkVfRURJRD15CisjIENPTkZJR19GQl9NT0RFX0hFTFBFUlMgaXMgbm90IHNldAorIyBDT05GSUdfRkJfVElMRUJMSVRUSU5HIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZCX1MxRDEzWFhYIGlzIG5vdCBzZXQKK0NPTkZJR19GQl9QWEE9eQorIyBDT05GSUdfRkJfUFhBX1BBUkFNRVRFUlMgaXMgbm90IHNldAorIyBDT05GSUdfRkJfVklSVFVBTCBpcyBub3Qgc2V0CisKKyMKKyMgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CisjCisjIENPTkZJR19WR0FfQ09OU09MRSBpcyBub3Qgc2V0CitDT05GSUdfRFVNTVlfQ09OU09MRT15CitDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRT15CitDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9ST1RBVElPTj15CitDT05GSUdfRk9OVFM9eQorQ09ORklHX0ZPTlRfOHg4PXkKK0NPTkZJR19GT05UXzh4MTY9eQorIyBDT05GSUdfRk9OVF82eDExIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZPTlRfN3gxNCBpcyBub3Qgc2V0CisjIENPTkZJR19GT05UX1BFQVJMXzh4OCBpcyBub3Qgc2V0CisjIENPTkZJR19GT05UX0FDT1JOXzh4OCBpcyBub3Qgc2V0CisjIENPTkZJR19GT05UX01JTklfNHg2IGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZPTlRfU1VOOHgxNiBpcyBub3Qgc2V0CisjIENPTkZJR19GT05UX1NVTjEyeDIyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZPTlRfMTB4MTggaXMgbm90IHNldAorCisjCisjIExvZ28gY29uZmlndXJhdGlvbgorIworQ09ORklHX0xPR089eQorQ09ORklHX0xPR09fTElOVVhfTU9OTz15CitDT05GSUdfTE9HT19MSU5VWF9WR0ExNj15CitDT05GSUdfTE9HT19MSU5VWF9DTFVUMjI0PXkKK0NPTkZJR19CQUNLTElHSFRfTENEX1NVUFBPUlQ9eQorQ09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0U9eQorQ09ORklHX0JBQ0tMSUdIVF9ERVZJQ0U9eQorQ09ORklHX0xDRF9DTEFTU19ERVZJQ0U9eQorQ09ORklHX0xDRF9ERVZJQ0U9eQorCisjCisjIFNvdW5kCisjCitDT05GSUdfU09VTkQ9eQorCisjCisjIEFkdmFuY2VkIExpbnV4IFNvdW5kIEFyY2hpdGVjdHVyZQorIworQ09ORklHX1NORD15CitDT05GSUdfU05EX1RJTUVSPXkKK0NPTkZJR19TTkRfUENNPXkKK0NPTkZJR19TTkRfSFdERVA9bQorQ09ORklHX1NORF9SQVdNSURJPW0KK0NPTkZJR19TTkRfU0VRVUVOQ0VSPW0KKyMgQ09ORklHX1NORF9TRVFfRFVNTVkgaXMgbm90IHNldAorQ09ORklHX1NORF9PU1NFTVVMPXkKK0NPTkZJR19TTkRfTUlYRVJfT1NTPXkKK0NPTkZJR19TTkRfUENNX09TUz15CitDT05GSUdfU05EX1BDTV9PU1NfUExVR0lOUz15CisjIENPTkZJR19TTkRfU0VRVUVOQ0VSX09TUyBpcyBub3Qgc2V0CisjIENPTkZJR19TTkRfRFlOQU1JQ19NSU5PUlMgaXMgbm90IHNldAorQ09ORklHX1NORF9TVVBQT1JUX09MRF9BUEk9eQorQ09ORklHX1NORF9WRVJCT1NFX1BST0NGUz15CitDT05GSUdfU05EX1ZFUkJPU0VfUFJJTlRLPXkKKyMgQ09ORklHX1NORF9ERUJVRyBpcyBub3Qgc2V0CisKKyMKKyMgR2VuZXJpYyBkZXZpY2VzCisjCitDT05GSUdfU05EX0FDOTdfQ09ERUM9eQorQ09ORklHX1NORF9BQzk3X0JVUz15CisjIENPTkZJR19TTkRfRFVNTVkgaXMgbm90IHNldAorIyBDT05GSUdfU05EX1ZJUk1JREkgaXMgbm90IHNldAorIyBDT05GSUdfU05EX01UUEFWIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9TRVJJQUxfVTE2NTUwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NORF9NUFU0MDEgaXMgbm90IHNldAorCisjCisjIEFMU0EgQVJNIGRldmljZXMKKyMKK0NPTkZJR19TTkRfUFhBMlhYX1BDTT15CitDT05GSUdfU05EX1BYQTJYWF9BQzk3PXkKKworIworIyBVU0IgZGV2aWNlcworIworQ09ORklHX1NORF9VU0JfQVVESU89bQorCisjCisjIFBDTUNJQSBkZXZpY2VzCisjCisjIENPTkZJR19TTkRfVlhQT0NLRVQgaXMgbm90IHNldAorIyBDT05GSUdfU05EX1BEQVVESU9DRiBpcyBub3Qgc2V0CisKKyMKKyMgT3BlbiBTb3VuZCBTeXN0ZW0KKyMKKyMgQ09ORklHX1NPVU5EX1BSSU1FIGlzIG5vdCBzZXQKKworIworIyBVU0Igc3VwcG9ydAorIworQ09ORklHX1VTQl9BUkNIX0hBU19IQ0Q9eQorQ09ORklHX1VTQl9BUkNIX0hBU19PSENJPXkKKyMgQ09ORklHX1VTQl9BUkNIX0hBU19FSENJIGlzIG5vdCBzZXQKK0NPTkZJR19VU0I9eQorIyBDT05GSUdfVVNCX0RFQlVHIGlzIG5vdCBzZXQKKworIworIyBNaXNjZWxsYW5lb3VzIFVTQiBvcHRpb25zCisjCitDT05GSUdfVVNCX0RFVklDRUZTPXkKKyMgQ09ORklHX1VTQl9CQU5EV0lEVEggaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0RZTkFNSUNfTUlOT1JTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TVVNQRU5EIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9PVEcgaXMgbm90IHNldAorCisjCisjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycworIworIyBDT05GSUdfVVNCX0lTUDExNlhfSENEIGlzIG5vdCBzZXQKK0NPTkZJR19VU0JfT0hDSV9IQ0Q9eQorIyBDT05GSUdfVVNCX09IQ0lfQklHX0VORElBTiBpcyBub3Qgc2V0CitDT05GSUdfVVNCX09IQ0lfTElUVExFX0VORElBTj15CisjIENPTkZJR19VU0JfU0w4MTFfSENEIGlzIG5vdCBzZXQKKworIworIyBVU0IgRGV2aWNlIENsYXNzIGRyaXZlcnMKKyMKKyMgQ09ORklHX1VTQl9BQ00gaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1BSSU5URVIgaXMgbm90IHNldAorCisjCisjIE5PVEU6IFVTQl9TVE9SQUdFIGVuYWJsZXMgU0NTSSwgYW5kICdTQ1NJIGRpc2sgc3VwcG9ydCcKKyMKKworIworIyBtYXkgYWxzbyBiZSBuZWVkZWQ7IHNlZSBVU0JfU1RPUkFHRSBIZWxwIGZvciBtb3JlIGluZm9ybWF0aW9uCisjCitDT05GSUdfVVNCX1NUT1JBR0U9bQorIyBDT05GSUdfVVNCX1NUT1JBR0VfREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NUT1JBR0VfREFUQUZBQiBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU1RPUkFHRV9GUkVFQ09NIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TVE9SQUdFX0lTRDIwMCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU1RPUkFHRV9EUENNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TVE9SQUdFX1VTQkFUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9TVE9SQUdFX1NERFIwOSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfU1RPUkFHRV9TRERSNTUgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NUT1JBR0VfSlVNUFNIT1QgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1NUT1JBR0VfQUxBVURBIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9MSUJVU1VBTCBpcyBub3Qgc2V0CisKKyMKKyMgVVNCIElucHV0IERldmljZXMKKyMKK0NPTkZJR19VU0JfSElEPW0KK0NPTkZJR19VU0JfSElESU5QVVQ9eQorIyBDT05GSUdfVVNCX0hJRElOUFVUX1BPV0VSQk9PSyBpcyBub3Qgc2V0CisjIENPTkZJR19ISURfRkYgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0hJRERFViBpcyBub3Qgc2V0CisKKyMKKyMgVVNCIEhJRCBCb290IFByb3RvY29sIGRyaXZlcnMKKyMKKyMgQ09ORklHX1VTQl9LQkQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX01PVVNFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BSVBURUsgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1dBQ09NIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9BQ0VDQUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0tCVEFCIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9QT1dFUk1BVEUgaXMgbm90IHNldAorQ09ORklHX1VTQl9UT1VDSFNDUkVFTj1tCisjIENPTkZJR19VU0JfVE9VQ0hTQ1JFRU5fRUdBTEFYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9UT1VDSFNDUkVFTl9QQU5KSVQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1RPVUNIU0NSRUVOXzNNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9UT1VDSFNDUkVFTl9JVE0gaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1lFQUxJTksgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1hQQUQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0FUSV9SRU1PVEUgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0FUSV9SRU1PVEUyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9LRVlTUEFOX1JFTU9URSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfQVBQTEVUT1VDSCBpcyBub3Qgc2V0CisKKyMKKyMgVVNCIEltYWdpbmcgZGV2aWNlcworIworIyBDT05GSUdfVVNCX01EQzgwMCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfTUlDUk9URUsgaXMgbm90IHNldAorCisjCisjIFVTQiBOZXR3b3JrIEFkYXB0ZXJzCisjCisjIENPTkZJR19VU0JfQ0FUQyBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfS0FXRVRIIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9QRUdBU1VTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9SVEw4MTUwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9VU0JORVQgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX1pEMTIwMSBpcyBub3Qgc2V0CitDT05GSUdfVVNCX01PTj15CisKKyMKKyMgVVNCIHBvcnQgZHJpdmVycworIworCisjCisjIFVTQiBTZXJpYWwgQ29udmVydGVyIHN1cHBvcnQKKyMKKyMgQ09ORklHX1VTQl9TRVJJQUwgaXMgbm90IHNldAorCisjCisjIFVTQiBNaXNjZWxsYW5lb3VzIGRyaXZlcnMKKyMKKyMgQ09ORklHX1VTQl9FTUk2MiBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfRU1JMjYgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0FVRVJTV0FMRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfUklPNTAwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9MRUdPVE9XRVIgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0xDRCBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfTEVEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9DWVRIRVJNIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9QSElER0VUS0lUIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9QSElER0VUU0VSVk8gaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0lETU9VU0UgaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0xEIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9URVNUIGlzIG5vdCBzZXQKKworIworIyBVU0IgRFNMIG1vZGVtIHN1cHBvcnQKKyMKKworIworIyBVU0IgR2FkZ2V0IFN1cHBvcnQKKyMKK0NPTkZJR19VU0JfR0FER0VUPXkKKyMgQ09ORklHX1VTQl9HQURHRVRfREVCVUdfRklMRVMgaXMgbm90IHNldAorQ09ORklHX1VTQl9HQURHRVRfU0VMRUNURUQ9eQorIyBDT05GSUdfVVNCX0dBREdFVF9ORVQyMjgwIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9HQURHRVRfUFhBMlhYIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9HQURHRVRfR09LVSBpcyBub3Qgc2V0CisjIENPTkZJR19VU0JfR0FER0VUX0xIN0E0MFggaXMgbm90IHNldAorIyBDT05GSUdfVVNCX0dBREdFVF9PTUFQIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VTQl9HQURHRVRfQVQ5MSBpcyBub3Qgc2V0CitDT05GSUdfVVNCX0dBREdFVF9EVU1NWV9IQ0Q9eQorQ09ORklHX1VTQl9EVU1NWV9IQ0Q9eQorQ09ORklHX1VTQl9HQURHRVRfRFVBTFNQRUVEPXkKKyMgQ09ORklHX1VTQl9aRVJPIGlzIG5vdCBzZXQKK0NPTkZJR19VU0JfRVRIPW0KK0NPTkZJR19VU0JfRVRIX1JORElTPXkKK0NPTkZJR19VU0JfR0FER0VURlM9bQorQ09ORklHX1VTQl9GSUxFX1NUT1JBR0U9bQorIyBDT05GSUdfVVNCX0ZJTEVfU1RPUkFHRV9URVNUIGlzIG5vdCBzZXQKK0NPTkZJR19VU0JfR19TRVJJQUw9bQorCisjCisjIE1NQy9TRCBDYXJkIHN1cHBvcnQKKyMKK0NPTkZJR19NTUM9eQorIyBDT05GSUdfTU1DX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19NTUNfQkxPQ0s9eQorQ09ORklHX01NQ19QWEE9eQorCisjCisjIFJlYWwgVGltZSBDbG9jaworIworQ09ORklHX1JUQ19MSUI9eQorQ09ORklHX1JUQ19DTEFTUz15CitDT05GSUdfUlRDX0hDVE9TWVM9eQorQ09ORklHX1JUQ19IQ1RPU1lTX0RFVklDRT0icnRjMCIKKworIworIyBSVEMgaW50ZXJmYWNlcworIworQ09ORklHX1JUQ19JTlRGX1NZU0ZTPXkKK0NPTkZJR19SVENfSU5URl9QUk9DPXkKK0NPTkZJR19SVENfSU5URl9ERVY9eQorCisjCisjIFJUQyBkcml2ZXJzCisjCisjIENPTkZJR19SVENfRFJWX1gxMjA1IGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfRFMxNjcyIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JUQ19EUlZfUENGODU2MyBpcyBub3Qgc2V0CisjIENPTkZJR19SVENfRFJWX1JTNUMzNzIgaXMgbm90IHNldAorIyBDT05GSUdfUlRDX0RSVl9NNDhUODYgaXMgbm90IHNldAorQ09ORklHX1JUQ19EUlZfU0ExMTAwPXkKKyMgQ09ORklHX1JUQ19EUlZfVEVTVCBpcyBub3Qgc2V0CisKKyMKKyMgRmlsZSBzeXN0ZW1zCisjCitDT05GSUdfRVhUMl9GUz15CitDT05GSUdfRVhUMl9GU19YQVRUUj15CitDT05GSUdfRVhUMl9GU19QT1NJWF9BQ0w9eQorQ09ORklHX0VYVDJfRlNfU0VDVVJJVFk9eQorIyBDT05GSUdfRVhUMl9GU19YSVAgaXMgbm90IHNldAorQ09ORklHX0VYVDNfRlM9eQorQ09ORklHX0VYVDNfRlNfWEFUVFI9eQorQ09ORklHX0VYVDNfRlNfUE9TSVhfQUNMPXkKK0NPTkZJR19FWFQzX0ZTX1NFQ1VSSVRZPXkKK0NPTkZJR19KQkQ9eQorIyBDT05GSUdfSkJEX0RFQlVHIGlzIG5vdCBzZXQKK0NPTkZJR19GU19NQkNBQ0hFPXkKKyMgQ09ORklHX1JFSVNFUkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0pGU19GUyBpcyBub3Qgc2V0CitDT05GSUdfRlNfUE9TSVhfQUNMPXkKKyMgQ09ORklHX1hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19PQ0ZTMl9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19ST01GU19GUyBpcyBub3Qgc2V0CitDT05GSUdfSU5PVElGWT15CisjIENPTkZJR19RVU9UQSBpcyBub3Qgc2V0CitDT05GSUdfRE5PVElGWT15CisjIENPTkZJR19BVVRPRlNfRlMgaXMgbm90IHNldAorQ09ORklHX0FVVE9GUzRfRlM9eQorIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CisKKyMKKyMgQ0QtUk9NL0RWRCBGaWxlc3lzdGVtcworIworIyBDT05GSUdfSVNPOTY2MF9GUyBpcyBub3Qgc2V0CisjIENPTkZJR19VREZfRlMgaXMgbm90IHNldAorCisjCisjIERPUy9GQVQvTlQgRmlsZXN5c3RlbXMKKyMKK0NPTkZJR19GQVRfRlM9bQorQ09ORklHX01TRE9TX0ZTPW0KK0NPTkZJR19WRkFUX0ZTPW0KK0NPTkZJR19GQVRfREVGQVVMVF9DT0RFUEFHRT00MzcKK0NPTkZJR19GQVRfREVGQVVMVF9JT0NIQVJTRVQ9Imlzbzg4NTktMTUiCisjIENPTkZJR19OVEZTX0ZTIGlzIG5vdCBzZXQKKworIworIyBQc2V1ZG8gZmlsZXN5c3RlbXMKKyMKK0NPTkZJR19QUk9DX0ZTPXkKK0NPTkZJR19TWVNGUz15CitDT05GSUdfVE1QRlM9eQorIyBDT05GSUdfSFVHRVRMQl9QQUdFIGlzIG5vdCBzZXQKK0NPTkZJR19SQU1GUz15CisjIENPTkZJR19DT05GSUdGU19GUyBpcyBub3Qgc2V0CisKKyMKKyMgTWlzY2VsbGFuZW91cyBmaWxlc3lzdGVtcworIworIyBDT05GSUdfQURGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19BRkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0hGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19IRlNQTFVTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0JFRlNfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQkZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VGU19GUyBpcyBub3Qgc2V0CitDT05GSUdfSkZGU19GUz15CitDT05GSUdfSkZGU19GU19WRVJCT1NFPTAKK0NPTkZJR19KRkZTX1BST0NfRlM9eQorQ09ORklHX0pGRlMyX0ZTPXkKK0NPTkZJR19KRkZTMl9GU19ERUJVRz0wCitDT05GSUdfSkZGUzJfRlNfV1JJVEVCVUZGRVI9eQorIyBDT05GSUdfSkZGUzJfU1VNTUFSWSBpcyBub3Qgc2V0CitDT05GSUdfSkZGUzJfQ09NUFJFU1NJT05fT1BUSU9OUz15CitDT05GSUdfSkZGUzJfWkxJQj15CitDT05GSUdfSkZGUzJfUlRJTUU9eQorIyBDT05GSUdfSkZGUzJfUlVCSU4gaXMgbm90IHNldAorIyBDT05GSUdfSkZGUzJfQ01PREVfTk9ORSBpcyBub3Qgc2V0CitDT05GSUdfSkZGUzJfQ01PREVfUFJJT1JJVFk9eQorIyBDT05GSUdfSkZGUzJfQ01PREVfU0laRSBpcyBub3Qgc2V0CisjIENPTkZJR19DUkFNRlMgaXMgbm90IHNldAorIyBDT05GSUdfVlhGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19IUEZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CisjIENPTkZJR19TWVNWX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VGU19GUyBpcyBub3Qgc2V0CisKKyMKKyMgTmV0d29yayBGaWxlIFN5c3RlbXMKKyMKK0NPTkZJR19ORlNfRlM9eQorQ09ORklHX05GU19WMz15CitDT05GSUdfTkZTX1YzX0FDTD15CitDT05GSUdfTkZTX1Y0PXkKKyMgQ09ORklHX05GU19ESVJFQ1RJTyBpcyBub3Qgc2V0CitDT05GSUdfTkZTRD15CitDT05GSUdfTkZTRF9WMl9BQ0w9eQorQ09ORklHX05GU0RfVjM9eQorQ09ORklHX05GU0RfVjNfQUNMPXkKK0NPTkZJR19ORlNEX1Y0PXkKK0NPTkZJR19ORlNEX1RDUD15CitDT05GSUdfUk9PVF9ORlM9eQorQ09ORklHX0xPQ0tEPXkKK0NPTkZJR19MT0NLRF9WND15CitDT05GSUdfRVhQT1JURlM9eQorQ09ORklHX05GU19BQ0xfU1VQUE9SVD15CitDT05GSUdfTkZTX0NPTU1PTj15CitDT05GSUdfU1VOUlBDPXkKK0NPTkZJR19TVU5SUENfR1NTPXkKK0NPTkZJR19SUENTRUNfR1NTX0tSQjU9eQorIyBDT05GSUdfUlBDU0VDX0dTU19TUEtNMyBpcyBub3Qgc2V0CitDT05GSUdfU01CX0ZTPW0KKyMgQ09ORklHX1NNQl9OTFNfREVGQVVMVCBpcyBub3Qgc2V0CitDT05GSUdfQ0lGUz1tCisjIENPTkZJR19DSUZTX1NUQVRTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NJRlNfWEFUVFIgaXMgbm90IHNldAorIyBDT05GSUdfQ0lGU19FWFBFUklNRU5UQUwgaXMgbm90IHNldAorIyBDT05GSUdfTkNQX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NPREFfRlMgaXMgbm90IHNldAorIyBDT05GSUdfQUZTX0ZTIGlzIG5vdCBzZXQKKyMgQ09ORklHXzlQX0ZTIGlzIG5vdCBzZXQKKworIworIyBQYXJ0aXRpb24gVHlwZXMKKyMKK0NPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eQorIyBDT05GSUdfQUNPUk5fUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX09TRl9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfQU1JR0FfUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0FUQVJJX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19NQUNfUEFSVElUSU9OIGlzIG5vdCBzZXQKK0NPTkZJR19NU0RPU19QQVJUSVRJT049eQorIyBDT05GSUdfQlNEX0RJU0tMQUJFTCBpcyBub3Qgc2V0CisjIENPTkZJR19NSU5JWF9TVUJQQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfU09MQVJJU19YODZfUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1VOSVhXQVJFX0RJU0tMQUJFTCBpcyBub3Qgc2V0CitDT05GSUdfTERNX1BBUlRJVElPTj15CisjIENPTkZJR19MRE1fREVCVUcgaXMgbm90IHNldAorIyBDT05GSUdfU0dJX1BBUlRJVElPTiBpcyBub3Qgc2V0CisjIENPTkZJR19VTFRSSVhfUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX1NVTl9QQVJUSVRJT04gaXMgbm90IHNldAorIyBDT05GSUdfS0FSTUFfUEFSVElUSU9OIGlzIG5vdCBzZXQKKyMgQ09ORklHX0VGSV9QQVJUSVRJT04gaXMgbm90IHNldAorCisjCisjIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0CisjCitDT05GSUdfTkxTPXkKK0NPTkZJR19OTFNfREVGQVVMVD0iaXNvODg1OS0xNSIKK0NPTkZJR19OTFNfQ09ERVBBR0VfNDM3PXkKKyMgQ09ORklHX05MU19DT0RFUEFHRV83MzcgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzc3NSBpcyBub3Qgc2V0CitDT05GSUdfTkxTX0NPREVQQUdFXzg1MD15CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODUyIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NTUgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1NyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODYwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjEgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2MiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODYzIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjQgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzg2NSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODY2IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV84NjkgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzkzNiBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfOTUwIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19DT0RFUEFHRV85MzIgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzk0OSBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfQ09ERVBBR0VfODc0IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzggaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzEyNTAgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0NPREVQQUdFXzEyNTEgaXMgbm90IHNldAorQ09ORklHX05MU19BU0NJST15CitDT05GSUdfTkxTX0lTTzg4NTlfMT1tCisjIENPTkZJR19OTFNfSVNPODg1OV8yIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzMgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfNCBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV81IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzYgaXMgbm90IHNldAorIyBDT05GSUdfTkxTX0lTTzg4NTlfNyBpcyBub3Qgc2V0CisjIENPTkZJR19OTFNfSVNPODg1OV85IGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzEzIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19JU084ODU5XzE0IGlzIG5vdCBzZXQKK0NPTkZJR19OTFNfSVNPODg1OV8xNT1tCisjIENPTkZJR19OTFNfS09JOF9SIGlzIG5vdCBzZXQKKyMgQ09ORklHX05MU19LT0k4X1UgaXMgbm90IHNldAorQ09ORklHX05MU19VVEY4PW0KKworIworIyBQcm9maWxpbmcgc3VwcG9ydAorIworQ09ORklHX1BST0ZJTElORz15CitDT05GSUdfT1BST0ZJTEU9eQorCisjCisjIEtlcm5lbCBoYWNraW5nCisjCisjIENPTkZJR19QUklOVEtfVElNRSBpcyBub3Qgc2V0CitDT05GSUdfTUFHSUNfU1lTUlE9eQorIyBDT05GSUdfREVCVUdfS0VSTkVMIGlzIG5vdCBzZXQKK0NPTkZJR19MT0dfQlVGX1NISUZUPTE0CisjIENPTkZJR19ERUJVR19CVUdWRVJCT1NFIGlzIG5vdCBzZXQKKyMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKK0NPTkZJR19GUkFNRV9QT0lOVEVSPXkKKyMgQ09ORklHX1VOV0lORF9JTkZPIGlzIG5vdCBzZXQKK0NPTkZJR19ERUJVR19VU0VSPXkKKworIworIyBTZWN1cml0eSBvcHRpb25zCisjCitDT05GSUdfS0VZUz15CitDT05GSUdfS0VZU19ERUJVR19QUk9DX0tFWVM9eQorQ09ORklHX1NFQ1VSSVRZPXkKKyMgQ09ORklHX1NFQ1VSSVRZX05FVFdPUksgaXMgbm90IHNldAorQ09ORklHX1NFQ1VSSVRZX0NBUEFCSUxJVElFUz15CisjIENPTkZJR19TRUNVUklUWV9ST09UUExVRyBpcyBub3Qgc2V0CisjIENPTkZJR19TRUNVUklUWV9TRUNMVkwgaXMgbm90IHNldAorCisjCisjIENyeXB0b2dyYXBoaWMgb3B0aW9ucworIworQ09ORklHX0NSWVBUTz15CisjIENPTkZJR19DUllQVE9fSE1BQyBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fTlVMTCBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX01END15CitDT05GSUdfQ1JZUFRPX01ENT15CitDT05GSUdfQ1JZUFRPX1NIQTE9bQorQ09ORklHX0NSWVBUT19TSEEyNTY9bQorQ09ORklHX0NSWVBUT19TSEE1MTI9bQorIyBDT05GSUdfQ1JZUFRPX1dQNTEyIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UR1IxOTIgaXMgbm90IHNldAorQ09ORklHX0NSWVBUT19ERVM9eQorIyBDT05GSUdfQ1JZUFRPX0JMT1dGSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19UV09GSVNIIGlzIG5vdCBzZXQKKyMgQ09ORklHX0NSWVBUT19TRVJQRU5UIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fQUVTPW0KKyMgQ09ORklHX0NSWVBUT19DQVNUNSBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQ0FTVDYgaXMgbm90IHNldAorIyBDT05GSUdfQ1JZUFRPX1RFQSBpcyBub3Qgc2V0CitDT05GSUdfQ1JZUFRPX0FSQzQ9bQorIyBDT05GSUdfQ1JZUFRPX0tIQVpBRCBpcyBub3Qgc2V0CisjIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKK0NPTkZJR19DUllQVE9fREVGTEFURT1tCitDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDPW0KK0NPTkZJR19DUllQVE9fQ1JDMzJDPXkKKyMgQ09ORklHX0NSWVBUT19URVNUIGlzIG5vdCBzZXQKKworIworIyBIYXJkd2FyZSBjcnlwdG8gZGV2aWNlcworIworCisjCisjIExpYnJhcnkgcm91dGluZXMKKyMKK0NPTkZJR19DUkNfQ0NJVFQ9eQorQ09ORklHX0NSQzE2PXkKK0NPTkZJR19DUkMzMj15CitDT05GSUdfTElCQ1JDMzJDPXkKK0NPTkZJR19aTElCX0lORkxBVEU9eQorQ09ORklHX1pMSUJfREVGTEFURT15CitDT05GSUdfUkVFRF9TT0xPTU9OPXkKK0NPTkZJR19SRUVEX1NPTE9NT05fREVDMTY9eQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL01ha2VmaWxlIGIvYXJjaC9hcm0va2VybmVsL01ha2VmaWxlCmluZGV4IDdjZmZiYWUuLmYwYzBjZGIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9rZXJuZWwvTWFrZWZpbGUKQEAgLTI1LDcgKzI1LDcgQEAKIG9iai0kKENPTkZJR19DUlVOQ0gpCQkrPSBjcnVuY2gubyBjcnVuY2gtYml0cy5vCiBBRkxBR1NfY3J1bmNoLWJpdHMubwkJOj0gLVdhLC1tY3B1PWVwOTMxMgogCi1vYmotJChDT05GSUdfSVdNTVhUKQkJKz0gaXdtbXh0Lm8KK29iai0kKENPTkZJR19JV01NWFQpCQkrPSBpd21teHQubyBpd21teHQtbm90aWZpZXIubwogQUZMQUdTX2l3bW14dC5vCQkJOj0gLVdhLC1tY3B1PWl3bW14dAogCiBpZm5lcSAoJChDT05GSUdfQVJDSF9FQlNBMTEwKSx5KQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL2FzbS1vZmZzZXRzLmMgYi9hcmNoL2FybS9rZXJuZWwvYXNtLW9mZnNldHMuYwppbmRleCA0NDdlZGU1Li5jYzJkNThkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwvYXNtLW9mZnNldHMuYworKysgYi9hcmNoL2FybS9rZXJuZWwvYXNtLW9mZnNldHMuYwpAQCAtMTA1LDYgKzEwNSw3IEBACiAgIEJMQU5LKCk7CiAgIERFRklORShQUk9DX0lORk9fU1osCQlzaXplb2Yoc3RydWN0IHByb2NfaW5mb19saXN0KSk7CiAgIERFRklORShQUk9DSU5GT19JTklURlVOQywJb2Zmc2V0b2Yoc3RydWN0IHByb2NfaW5mb19saXN0LCBfX2NwdV9mbHVzaCkpOwotICBERUZJTkUoUFJPQ0lORk9fTU1VRkxBR1MsCW9mZnNldG9mKHN0cnVjdCBwcm9jX2luZm9fbGlzdCwgX19jcHVfbW11X2ZsYWdzKSk7CisgIERFRklORShQUk9DSU5GT19NTV9NTVVGTEFHUywJb2Zmc2V0b2Yoc3RydWN0IHByb2NfaW5mb19saXN0LCBfX2NwdV9tbV9tbXVfZmxhZ3MpKTsKKyAgREVGSU5FKFBST0NJTkZPX0lPX01NVUZMQUdTLAlvZmZzZXRvZihzdHJ1Y3QgcHJvY19pbmZvX2xpc3QsIF9fY3B1X2lvX21tdV9mbGFncykpOwogICByZXR1cm4gMDsgCiB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvZW50cnktYXJtdi5TIGIvYXJjaC9hcm0va2VybmVsL2VudHJ5LWFybXYuUwppbmRleCA2NDIzYTM4Li4wZThhZWFmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwvZW50cnktYXJtdi5TCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9lbnRyeS1hcm12LlMKQEAgLTU5MCw5ICs1OTAsNyBAQAogI2lmZGVmIENPTkZJR19NTVUKIAltY3IJcDE1LCAwLCByNiwgYzMsIGMwLCAwCQlAIFNldCBkb21haW4gcmVnaXN0ZXIKICNlbmRpZgotI2lmIGRlZmluZWQoQ09ORklHX0lXTU1YVCkKLQlibAlpd21teHRfdGFza19zd2l0Y2gKLSNlbGlmIGRlZmluZWQoQ09ORklHX0NQVV9YU0NBTEUpCisjaWYgZGVmaW5lZChDT05GSUdfQ1BVX1hTQ0FMRSkgJiYgIWRlZmluZWQoQ09ORklHX0lXTU1YVCkKIAlhZGQJcjQsIHIyLCAjVElfQ1BVX0RPTUFJTiArIDQwCUAgY3B1X2NvbnRleHRfc2F2ZS0+ZXh0cmEKIAlsZG1pYglyNCwge3I0LCByNX0KIAltYXIJYWNjMCwgcjQsIHI1CmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvaGVhZC5TIGIvYXJjaC9hcm0va2VybmVsL2hlYWQuUwppbmRleCAzMzBiOTQ3Li44MWNiOTAyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9rZXJuZWwvaGVhZC5TCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9oZWFkLlMKQEAgLTIyMSw3ICsyMjEsNyBAQAogCXRlcQlyMCwgcjYKIAlibmUJMWIKIAotCWxkcglyNywgW3IxMCwgI1BST0NJTkZPX01NVUZMQUdTXQlAIG1tdWZsYWdzCisJbGRyCXI3LCBbcjEwLCAjUFJPQ0lORk9fTU1fTU1VRkxBR1NdIEAgbW1fbW11ZmxhZ3MKIAogCS8qCiAJICogQ3JlYXRlIGlkZW50aXR5IG1hcHBpbmcgZm9yIGZpcnN0IE1CIG9mIGtlcm5lbCB0bwpAQCAtMjcyLDggKzI3Miw3IEBACiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19ERUJVR19MTAotCWJpYwlyNywgcjcsICMweDBjCQkJQCB0dXJuIG9mZiBjYWNoZWFibGUKLQkJCQkJCUAgYW5kIGJ1ZmZlcmFibGUgYml0cworCWxkcglyNywgW3IxMCwgI1BST0NJTkZPX0lPX01NVUZMQUdTXSBAIGlvX21tdWZsYWdzCiAJLyoKIAkgKiBNYXAgaW4gSU8gc3BhY2UgZm9yIHNlcmlhbCBkZWJ1Z2dpbmcuCiAJICogVGhpcyBhbGxvd3MgZGVidWcgbWVzc2FnZXMgdG8gYmUgb3V0cHV0CmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvaXdtbXh0LW5vdGlmaWVyLmMgYi9hcmNoL2FybS9rZXJuZWwvaXdtbXh0LW5vdGlmaWVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRhODZjMwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9pd21teHQtbm90aWZpZXIuYwpAQCAtMCwwICsxLDY0IEBACisvKgorICogIGxpbnV4L2FyY2gvYXJtL2tlcm5lbC9pd21teHQtbm90aWZpZXIuYworICoKKyAqICBYU2NhbGUgaVdNTVh0IChDb25jYW4pIGNvbnRleHQgc3dpdGNoaW5nIGFuZCBoYW5kbGluZworICoKKyAqICBJbml0aWFsIGNvZGU6CisgKiAgQ29weXJpZ2h0IChjKSAyMDAzLCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqICBGdWxsIGxhenkgc3dpdGNoaW5nIHN1cHBvcnQsIG9wdGltaXphdGlvbnMgYW5kIG1vcmUsIGJ5IE5pY29sYXMgUGl0cmUKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNCwgTW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc2lnbmFsLmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8YXNtL3RocmVhZF9ub3RpZnkuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKworc3RhdGljIGludCBpd21teHRfZG8oc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpzZWxmLCB1bnNpZ25lZCBsb25nIGNtZCwgdm9pZCAqdCkKK3sKKwlzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCA9IHQ7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgVEhSRUFEX05PVElGWV9GTFVTSDoKKwkJLyoKKwkJICogZmx1c2hfdGhyZWFkKCkgemVyb2VzIHRocmVhZC0+ZnBzdGF0ZSwgc28gbm8gbmVlZAorCQkgKiB0byBkbyBhbnl0aGluZyBoZXJlLgorCQkgKgorCQkgKiBGQUxMVEhST1VHSDogRW5zdXJlIHdlIGRvbid0IHRyeSB0byBvdmVyd3JpdGUgb3VyIG5ld2x5CisJCSAqIGluaXRpYWxpc2VkIHN0YXRlIGluZm9ybWF0aW9uIG9uIHRoZSBmaXJzdCBmYXVsdC4KKwkJICovCisKKwljYXNlIFRIUkVBRF9OT1RJRllfUkVMRUFTRToKKwkJaXdtbXh0X3Rhc2tfcmVsZWFzZSh0aHJlYWQpOworCQlicmVhazsKKworCWNhc2UgVEhSRUFEX05PVElGWV9TV0lUQ0g6CisJCWl3bW14dF90YXNrX3N3aXRjaCh0aHJlYWQpOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gTk9USUZZX0RPTkU7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgaXdtbXh0X25vdGlmaWVyX2Jsb2NrID0geworCS5ub3RpZmllcl9jYWxsCT0gaXdtbXh0X2RvLAorfTsKKworc3RhdGljIGludCBfX2luaXQgaXdtbXh0X2luaXQodm9pZCkKK3sKKwl0aHJlYWRfcmVnaXN0ZXJfbm90aWZpZXIoJml3bW14dF9ub3RpZmllcl9ibG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworbGF0ZV9pbml0Y2FsbChpd21teHRfaW5pdCk7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9rZXJuZWwvaXdtbXh0LlMgYi9hcmNoL2FybS9rZXJuZWwvaXdtbXh0LlMKaW5kZXggYTNiYWU5NS4uYjYzYjUyOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL2l3bW14dC5TCisrKyBiL2FyY2gvYXJtL2tlcm5lbC9pd21teHQuUwpAQCAtMjcxLDMwICsyNzEsMjcgQEAKIC8qCiAgKiBDb25jYW4gaGFuZGxpbmcgb24gdGFzayBzd2l0Y2gKICAqCi0gKiByMCA9IHByZXZpb3VzIHRhc2tfc3RydWN0IHBvaW50ZXIgKG11c3QgYmUgcHJlc2VydmVkKQotICogcjEgPSBwcmV2aW91cyB0aHJlYWRfaW5mbyBwb2ludGVyCi0gKiByMiA9IG5leHQgdGhyZWFkX2luZm8gcG9pbnRlciAobXVzdCBiZSBwcmVzZXJ2ZWQpCisgKiByMCA9IG5leHQgdGhyZWFkX2luZm8gcG9pbnRlcgogICoKLSAqIENhbGxlZCBvbmx5IGZyb20gX19zd2l0Y2hfdG8gd2l0aCB0YXNrIHByZWVtcHRpb24gZGlzYWJsZWQuCi0gKiBObyBuZWVkIHRvIGNhcmUgYWJvdXQgcHJlc2VydmluZyByNCBhbmQgYWJvdmUuCisgKiBDYWxsZWQgb25seSBmcm9tIHRoZSBpd21teHQgbm90aWZpZXIgd2l0aCB0YXNrIHByZWVtcHRpb24gZGlzYWJsZWQuCiAgKi8KIEVOVFJZKGl3bW14dF90YXNrX3N3aXRjaCkKIAotCW1yYwlwMTUsIDAsIHI0LCBjMTUsIGMxLCAwCi0JdHN0CXI0LCAjMHgzCQkJQCBDUDAgYW5kIENQMSBhY2Nlc3NpYmxlPworCW1yYwlwMTUsIDAsIHIxLCBjMTUsIGMxLCAwCisJdHN0CXIxLCAjMHgzCQkJQCBDUDAgYW5kIENQMSBhY2Nlc3NpYmxlPwogCWJuZQkxZgkJCQlAIHllczogYmxvY2sgdGhlbSBmb3IgbmV4dCB0YXNrCiAKLQlsZHIJcjUsID1jb25jYW5fb3duZXIKLQlhZGQJcjYsIHIyLCAjVElfSVdNTVhUX1NUQVRFCUAgZ2V0IG5leHQgdGFzayBDb25jYW4gc2F2ZSBhcmVhCi0JbGRyCXI1LCBbcjVdCQkJQCBnZXQgY3VycmVudCBDb25jYW4gb3duZXIKLQl0ZXEJcjUsIHI2CQkJCUAgbmV4dCB0YXNrIG93bnMgaXQ/CisJbGRyCXIyLCA9Y29uY2FuX293bmVyCisJYWRkCXIzLCByMCwgI1RJX0lXTU1YVF9TVEFURQlAIGdldCBuZXh0IHRhc2sgQ29uY2FuIHNhdmUgYXJlYQorCWxkcglyMiwgW3IyXQkJCUAgZ2V0IGN1cnJlbnQgQ29uY2FuIG93bmVyCisJdGVxCXIyLCByMwkJCQlAIG5leHQgdGFzayBvd25zIGl0PwogCW1vdm5lCXBjLCBscgkJCQlAIG5vOiBsZWF2ZSBDb25jYW4gZGlzYWJsZWQKIAotMToJZW9yCXI0LCByNCwgIzMJCQlAIGZsaXAgQ29uY2FuIGFjY2VzcwotCW1jcglwMTUsIDAsIHI0LCBjMTUsIGMxLCAwCisxOgllb3IJcjEsIHIxLCAjMwkJCUAgZmxpcCBDb25jYW4gYWNjZXNzCisJbWNyCXAxNSwgMCwgcjEsIGMxNSwgYzEsIDAKIAotCW1yYwlwMTUsIDAsIHI0LCBjMiwgYzAsIDAKLQlzdWIJcGMsIGxyLCByNCwgbHNyICMzMgkJQCBjcHdhaXQgYW5kIHJldHVybgorCW1yYwlwMTUsIDAsIHIxLCBjMiwgYzAsIDAKKwlzdWIJcGMsIGxyLCByMSwgbHNyICMzMgkJQCBjcHdhaXQgYW5kIHJldHVybgogCiAvKgogICogUmVtb3ZlIENvbmNhbiBvd25lcnNoaXAgb2YgZ2l2ZW4gdGFzawpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvYXJtL2tlcm5lbC9wcm9jZXNzLmMKaW5kZXggZTFjNzdlZS4uYjU3NzNhMiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL2FybS9rZXJuZWwvcHJvY2Vzcy5jCkBAIC0zNTMsOSArMzUzLDYgQEAKIAltZW1zZXQoJnRocmVhZC0+ZnBzdGF0ZSwgMCwgc2l6ZW9mKHVuaW9uIGZwX3N0YXRlKSk7CiAKIAl0aHJlYWRfbm90aWZ5KFRIUkVBRF9OT1RJRllfRkxVU0gsIHRocmVhZCk7Ci0jaWYgZGVmaW5lZChDT05GSUdfSVdNTVhUKQotCWl3bW14dF90YXNrX3JlbGVhc2UodGhyZWFkKTsKLSNlbmRpZgogfQogCiB2b2lkIHJlbGVhc2VfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqZGVhZF90YXNrKQpAQCAtMzYzLDkgKzM2MCw2IEBACiAJc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQgPSB0YXNrX3RocmVhZF9pbmZvKGRlYWRfdGFzayk7CiAKIAl0aHJlYWRfbm90aWZ5KFRIUkVBRF9OT1RJRllfUkVMRUFTRSwgdGhyZWFkKTsKLSNpZiBkZWZpbmVkKENPTkZJR19JV01NWFQpCi0JaXdtbXh0X3Rhc2tfcmVsZWFzZSh0aHJlYWQpOwotI2VuZGlmCiB9CiAKIGFzbWxpbmthZ2Ugdm9pZCByZXRfZnJvbV9mb3JrKHZvaWQpIF9fYXNtX18oInJldF9mcm9tX2ZvcmsiKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9LY29uZmlnIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL0tjb25maWcKaW5kZXggNzBkNDAyZi4uMmY4NWU4NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL0tjb25maWcKKysrIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL0tjb25maWcKQEAgLTEsNiArMSwyMSBAQAotaWYgQVJDSF9BVDkxUk05MjAwCitpZiBBUkNIX0FUOTEKIAotbWVudSAiQVQ5MVJNOTIwMCBJbXBsZW1lbnRhdGlvbnMiCittZW51ICJBdG1lbCBBVDkxIFN5c3RlbS1vbi1DaGlwIgorCitjb21tZW50ICJBdG1lbCBBVDkxIFByb2Nlc3NvcnMiCisKK2NvbmZpZyBBUkNIX0FUOTFSTTkyMDAKKwlib29sICJBVDkxUk05MjAwIgorCitjb25maWcgQVJDSF9BVDkxU0FNOTI2MAorCWJvb2wgIkFUOTFTQU05MjYwIgorCitjb25maWcgQVJDSF9BVDkxU0FNOTI2MQorCWJvb2wgIkFUOTFTQU05MjYxIgorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaWYgQVJDSF9BVDkxUk05MjAwCiAKIGNvbW1lbnQgIkFUOTFSTTkyMDAgQm9hcmQgVHlwZSIKIApAQCAtOCw1OCArMjMsODcgQEAKIAlib29sICJBamVjbyAxQVJNIFNpbmdsZSBCb2FyZCBDb21wdXRlciIKIAlkZXBlbmRzIG9uIEFSQ0hfQVQ5MVJNOTIwMAogCWhlbHAKLQkgIFNlbGVjdCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgQWplY28ncyAxQVJNIFNpbmdsZSBCb2FyZCBDb21wdXRlcgorCSAgU2VsZWN0IHRoaXMgaWYgeW91IGFyZSB1c2luZyBBamVjbydzIDFBUk0gU2luZ2xlIEJvYXJkIENvbXB1dGVyLgorCSAgPGh0dHA6Ly93d3cuYWplY28uZmkvcHJvZHVjdHMuaHRtPgogCiBjb25maWcgQVJDSF9BVDkxUk05MjAwREsKIAlib29sICJBdG1lbCBBVDkxUk05MjAwLURLIERldmVsb3BtZW50IGJvYXJkIgogCWRlcGVuZHMgb24gQVJDSF9BVDkxUk05MjAwCiAJaGVscAotCSAgU2VsZWN0IHRoaXMgaWYgeW91IGFyZSB1c2luZyBBdG1lbCdzIEFUOTFSTTkyMDAtREsgRGV2ZWxvcG1lbnQgYm9hcmQKKwkgIFNlbGVjdCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgQXRtZWwncyBBVDkxUk05MjAwLURLIERldmVsb3BtZW50IGJvYXJkLgorCSAgKERpc2NvbnRpbnVlZCkKKwogCiBjb25maWcgTUFDSF9BVDkxUk05MjAwRUsKIAlib29sICJBdG1lbCBBVDkxUk05MjAwLUVLIEV2YWx1YXRpb24gS2l0IgogCWRlcGVuZHMgb24gQVJDSF9BVDkxUk05MjAwCiAJaGVscAotCSAgU2VsZWN0IHRoaXMgaWYgeW91IGFyZSB1c2luZyBBdG1lbCdzIEFUOTFSTTkyMDAtRUsgRXZhbHVhdGlvbiBLaXQKKwkgIFNlbGVjdCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgQXRtZWwncyBBVDkxUk05MjAwLUVLIEV2YWx1YXRpb24gS2l0LgorCSAgPGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9wcm9kdWN0cy90b29sc19jYXJkLmFzcD90b29sX2lkPTM1MDc+CiAKIGNvbmZpZyBNQUNIX0NTQjMzNwotCWJvb2wgIkNvZ2VudCBDU0IzMzcgYm9hcmQiCisJYm9vbCAiQ29nZW50IENTQjMzNyIKIAlkZXBlbmRzIG9uIEFSQ0hfQVQ5MVJNOTIwMAogCWhlbHAKLQkgIFNlbGVjdCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgQ29nZW50J3MgQ1NCMzM3IGJvYXJkCisJICBTZWxlY3QgdGhpcyBpZiB5b3UgYXJlIHVzaW5nIENvZ2VudCdzIENTQjMzNyBib2FyZC4KKwkgIDxodHRwOi8vd3d3LmNvZ2NvbXAuY29tL2NzYl9jc2IzMzcuaHRtPgogCiBjb25maWcgTUFDSF9DU0I2MzcKLQlib29sICJDb2dlbnQgQ1NCNjM3IGJvYXJkIgorCWJvb2wgIkNvZ2VudCBDU0I2MzciCiAJZGVwZW5kcyBvbiBBUkNIX0FUOTFSTTkyMDAKIAloZWxwCi0JICBTZWxlY3QgdGhpcyBpZiB5b3UgYXJlIHVzaW5nIENvZ2VudCdzIENTQjYzNyBib2FyZAorCSAgU2VsZWN0IHRoaXMgaWYgeW91IGFyZSB1c2luZyBDb2dlbnQncyBDU0I2MzcgYm9hcmQuCisJICA8aHR0cDovL3d3dy5jb2djb21wLmNvbS9jc2JfY3NiNjM3Lmh0bT4KIAogY29uZmlnIE1BQ0hfQ0FSTUVWQQotCWJvb2wgIkNvbml0ZWMncyBBUk0mRVZBIgorCWJvb2wgIkNvbml0ZWMgQVJNJkVWQSIKIAlkZXBlbmRzIG9uIEFSQ0hfQVQ5MVJNOTIwMAogCWhlbHAKLQkgIFNlbGVjdCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgQ29uaXRlYydzIEFUOTFSTTkyMDAtTUNVLU1vZHVsZQotCi1jb25maWcgTUFDSF9LQjkyMDAKLQlib29sICJLd2lrQnl0ZSdzIEtCOTIweCIKLQlkZXBlbmRzIG9uIEFSQ0hfQVQ5MVJNOTIwMAotCWhlbHAKLQkgIFNlbGVjdCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgS3dpa0J5dGUncyBLQjkyMHggYm9hcmQKKwkgIFNlbGVjdCB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgQ29uaXRlYydzIEFUOTFSTTkyMDAtTUNVLU1vZHVsZS4KKwkgIDxodHRwOi8vd3d3LmNvbml0ZWMubmV0L2VuZ2xpc2gvbGludXhib2FyZC5odG0+CiAKIGNvbmZpZyBNQUNIX0FURUI5MjAwCi0JYm9vbCAiRW1iZXN0J3MgQVRFQjkyMDAiCisJYm9vbCAiRW1iZXN0IEFURUI5MjAwIgogCWRlcGVuZHMgb24gQVJDSF9BVDkxUk05MjAwCiAJaGVscAotCSAgU2VsZWN0IHRoaXMgaWYgeW91IGFyZSB1c2luZyBFbWJlc3QncyBBVEVCOTIwMCBib2FyZAorCSAgU2VsZWN0IHRoaXMgaWYgeW91IGFyZSB1c2luZyBFbWJlc3QncyBBVEVCOTIwMCBib2FyZC4KKwkgIDxodHRwOi8vd3d3LmVtYmVkaW5mby5jb20vZW5nbGlzaC9wcm9kdWN0L0FURUI5MjAwLmFzcD4KKworY29uZmlnIE1BQ0hfS0I5MjAwCisJYm9vbCAiS3dpa0J5dGUgS0I5MjB4IgorCWRlcGVuZHMgb24gQVJDSF9BVDkxUk05MjAwCisJaGVscAorCSAgU2VsZWN0IHRoaXMgaWYgeW91IGFyZSB1c2luZyBLd2lrQnl0ZSdzIEtCOTIweCBib2FyZC4KKwkgIDxodHRwOi8va3dpa2J5dGUuY29tL0tCOTIwMl9kZXNjcmlwdGlvbl9uZXcuaHRtPgogCiBjb25maWcgTUFDSF9LQUZBCiAJYm9vbCAiU3BlcnJ5LVN1biBLQUZBIGJvYXJkIgogCWRlcGVuZHMgb24gQVJDSF9BVDkxUk05MjAwCiAJaGVscAotCSAgU2VsZWN0IHRoaXMgaWYgeW91IGFyZSB1c2luZyBTcGVycnktU3VuJ3MgS0FGQSBib2FyZAorCSAgU2VsZWN0IHRoaXMgaWYgeW91IGFyZSB1c2luZyBTcGVycnktU3VuJ3MgS0FGQSBib2FyZC4KKworZW5kaWYKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2lmIEFSQ0hfQVQ5MVNBTTkyNjAKKworY29tbWVudCAiQVQ5MVNBTTkyNjAgQm9hcmQgVHlwZSIKKworZW5kaWYKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2lmIEFSQ0hfQVQ5MVNBTTkyNjEKKworY29tbWVudCAiQVQ5MVNBTTkyNjEgQm9hcmQgVHlwZSIKKworZW5kaWYKIAogCi1jb21tZW50ICJBVDkxUk05MjAwIEZlYXR1cmUgU2VsZWN0aW9ucyIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjb21tZW50ICJBVDkxIEZlYXR1cmUgU2VsZWN0aW9ucyIKIAogY29uZmlnIEFUOTFfUFJPR1JBTU1BQkxFX0NMT0NLUwogCWJvb2wgIlByb2dyYW1tYWJsZSBDbG9ja3MiCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvTWFrZWZpbGUgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvTWFrZWZpbGUKaW5kZXggODJkYjk1Ny4uYzE3NDgwNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL01ha2VmaWxlCisrKyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9NYWtlZmlsZQpAQCAtMiwxNCArMiwxOSBAQAogIyBNYWtlZmlsZSBmb3IgdGhlIGxpbnV4IGtlcm5lbC4KICMKIAotb2JqLXkJCTo9IGNsb2NrLm8gaXJxLm8gdGltZS5vIGdwaW8ubyBjb21tb24ubyBkZXZpY2VzLm8KK29iai15CQk6PSBjbG9jay5vIGlycS5vIGdwaW8ubyBkZXZpY2VzLm8KIG9iai1tCQk6PQogb2JqLW4JCTo9CiBvYmotCQk6PQogCiBvYmotJChDT05GSUdfUE0pCQkrPSBwbS5vCiAKLSMgQm9hcmQtc3BlY2lmaWMgc3VwcG9ydAorIyBDUFUtc3BlY2lmaWMgc3VwcG9ydAorb2JqLSQoQ09ORklHX0FSQ0hfQVQ5MVJNOTIwMCkJKz0gYXQ5MXJtOTIwMC5vIGF0OTFybTkyMDBfdGltZS5vCitvYmotJChDT05GSUdfQVJDSF9BVDkxU0FNOTI2MCkJKz0KK29iai0kKENPTkZJR19BUkNIX0FUOTFTQU05MjYxKQkrPQorCisjIEFUOTFSTTkyMDAgQm9hcmQtc3BlY2lmaWMgc3VwcG9ydAogb2JqLSQoQ09ORklHX01BQ0hfT05FQVJNKQkrPSBib2FyZC0xYXJtLm8KIG9iai0kKENPTkZJR19BUkNIX0FUOTFSTTkyMDBESykJKz0gYm9hcmQtZGsubwogb2JqLSQoQ09ORklHX01BQ0hfQVQ5MVJNOTIwMEVLKQkrPSBib2FyZC1lay5vCkBAIC0yMCw2ICsyNSwxMCBAQAogb2JqLSQoQ09ORklHX01BQ0hfQVRFQjkyMDApCSs9IGJvYXJkLWViOTIwMC5vCiBvYmotJChDT05GSUdfTUFDSF9LQUZBKQkJKz0gYm9hcmQta2FmYS5vCiAKKyMgQVQ5MVNBTTkyNjAgYm9hcmQtc3BlY2lmaWMgc3VwcG9ydAorCisjIEFUOTFTQU05MjYxIGJvYXJkLXNwZWNpZmljIHN1cHBvcnQKKwogIyBMRURzIHN1cHBvcnQKIGxlZC0kKENPTkZJR19BUkNIX0FUOTFSTTkyMDBESykJKz0gbGVkcy5vCiBsZWQtJChDT05GSUdfTUFDSF9BVDkxUk05MjAwRUspCSs9IGxlZHMubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2NvbW1vbi5jIGIvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2F0OTFybTkyMDAuYwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBhcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvY29tbW9uLmMKcmVuYW1lIHRvIGFyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9hdDkxcm05MjAwLmMKaW5kZXggZTgzNmY4NS4uOTBmMDhkMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2NvbW1vbi5jCisrKyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9hdDkxcm05MjAwLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2NvbW1vbi5jCisgKiBhcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMC5jCiAgKgogICogIENvcHlyaWdodCAoQykgMjAwNSBTQU4gUGVvcGxlCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL3RpbWUuYyBiL2FyY2gvYXJtL21hY2gtYXQ5MXJtOTIwMC9hdDkxcm05MjAwX3RpbWUuYwpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBhcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvdGltZS5jCnJlbmFtZSB0byBhcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMF90aW1lLmMKaW5kZXggZmMyZDdkNS4uMTA3N2ZiOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL3RpbWUuYworKysgYi9hcmNoL2FybS9tYWNoLWF0OTFybTkyMDAvYXQ5MXJtOTIwMF90aW1lLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogbGludXgvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL3RpbWUuYworICogbGludXgvYXJjaC9hcm0vbWFjaC1hdDkxcm05MjAwL2F0OTFybTkyMDBfdGltZS5jCiAgKgogICogIENvcHlyaWdodCAoQykgMjAwMyBTQU4gUGVvcGxlCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIEFUTUVMCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWVwOTN4eC9LY29uZmlnIGIvYXJjaC9hcm0vbWFjaC1lcDkzeHgvS2NvbmZpZwppbmRleCBlMTVlNGM1Li5mMWI3NDAwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWVwOTN4eC9LY29uZmlnCisrKyBiL2FyY2gvYXJtL21hY2gtZXA5M3h4L0tjb25maWcKQEAgLTksMTIgKzksMjQgQEAKIAogY29tbWVudCAiRVA5M3h4IFBsYXRmb3JtcyIKIAorY29uZmlnIE1BQ0hfRURCOTMwMgorCWJvb2wgIlN1cHBvcnQgQ2lycnVzIExvZ2ljIEVEQjkzMDIiCisJaGVscAorCSAgU2F5ICdZJyBoZXJlIGlmIHlvdSB3YW50IHlvdXIga2VybmVsIHRvIHN1cHBvcnQgdGhlIENpcnJ1cworCSAgTG9naWMgRURCOTMwMiBFdmFsdWF0aW9uIEJvYXJkLgorCiBjb25maWcgTUFDSF9FREI5MzE1CiAJYm9vbCAiU3VwcG9ydCBDaXJydXMgTG9naWMgRURCOTMxNSIKIAloZWxwCiAJICBTYXkgJ1knIGhlcmUgaWYgeW91IHdhbnQgeW91ciBrZXJuZWwgdG8gc3VwcG9ydCB0aGUgQ2lycnVzCiAJICBMb2dpYyBFREI5MzE1IEV2YWx1YXRpb24gQm9hcmQuCiAKK2NvbmZpZyBNQUNIX0VEQjkzMTVBCisJYm9vbCAiU3VwcG9ydCBDaXJydXMgTG9naWMgRURCOTMxNUEiCisJaGVscAorCSAgU2F5ICdZJyBoZXJlIGlmIHlvdSB3YW50IHlvdXIga2VybmVsIHRvIHN1cHBvcnQgdGhlIENpcnJ1cworCSAgTG9naWMgRURCOTMxNUEgRXZhbHVhdGlvbiBCb2FyZC4KKwogY29uZmlnIE1BQ0hfR0VTQkM5MzEyCiAJYm9vbCAiU3VwcG9ydCBHbG9tYXRpb24gR0VTQkMtOTMxMi1zeCIKIAloZWxwCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWVwOTN4eC9NYWtlZmlsZSBiL2FyY2gvYXJtL21hY2gtZXA5M3h4L01ha2VmaWxlCmluZGV4IGRmYTdlMmUuLjFmNWE2YjAgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZXA5M3h4L01ha2VmaWxlCisrKyBiL2FyY2gvYXJtL21hY2gtZXA5M3h4L01ha2VmaWxlCkBAIC02LDYgKzYsOCBAQAogb2JqLW4JCQk6PQogb2JqLQkJCTo9CiAKK29iai0kKENPTkZJR19NQUNIX0VEQjkzMDIpCSs9IGVkYjkzMDIubwogb2JqLSQoQ09ORklHX01BQ0hfRURCOTMxNSkJKz0gZWRiOTMxNS5vCitvYmotJChDT05GSUdfTUFDSF9FREI5MzE1QSkJKz0gZWRiOTMxNWEubwogb2JqLSQoQ09ORklHX01BQ0hfR0VTQkM5MzEyKQkrPSBnZXNiYzkzMTIubwogb2JqLSQoQ09ORklHX01BQ0hfVFM3MlhYKQkrPSB0czcyeHgubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1lcDkzeHgvZWRiOTMwMi5jIGIvYXJjaC9hcm0vbWFjaC1lcDkzeHgvZWRiOTMwMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyYThlZmQKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC9lZGI5MzAyLmMKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIGFyY2gvYXJtL21hY2gtZXA5M3h4L2VkYjkzMDIuYworICogQ2lycnVzIExvZ2ljIEVEQjkzMDIgc3VwcG9ydC4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgR2VvcmdlIEthc2hwZXJrbyA8Z2VvcmdlQGNoYXMuY29tLnVhPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CisgKiB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisjaW5jbHVkZSA8bGludXgvbXRkL3BoeXNtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KKworc3RhdGljIHN0cnVjdCBwaHlzbWFwX2ZsYXNoX2RhdGEgZWRiOTMwMl9mbGFzaF9kYXRhID0geworCS53aWR0aAkJPSAyLAorfTsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBlZGI5MzAyX2ZsYXNoX3Jlc291cmNlID0geworCS5zdGFydAkJPSAweDYwMDAwMDAwLAorCS5lbmQJCT0gMHg2MGZmZmZmZiwKKwkuZmxhZ3MJCT0gSU9SRVNPVVJDRV9NRU0sCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBlZGI5MzAyX2ZsYXNoID0geworCS5uYW1lCQk9ICJwaHlzbWFwLWZsYXNoIiwKKwkuaWQJCT0gMCwKKwkuZGV2CQk9IHsKKwkJLnBsYXRmb3JtX2RhdGEJPSAmZWRiOTMwMl9mbGFzaF9kYXRhLAorCX0sCisJLm51bV9yZXNvdXJjZXMJPSAxLAorCS5yZXNvdXJjZQk9ICZlZGI5MzAyX2ZsYXNoX3Jlc291cmNlLAorfTsKKworc3RhdGljIHZvaWQgX19pbml0IGVkYjkzMDJfaW5pdF9tYWNoaW5lKHZvaWQpCit7CisJZXA5M3h4X2luaXRfZGV2aWNlcygpOworCXBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigmZWRiOTMwMl9mbGFzaCk7Cit9CisKK01BQ0hJTkVfU1RBUlQoRURCOTMwMiwgIkNpcnJ1cyBMb2dpYyBFREI5MzAyIEV2YWx1YXRpb24gQm9hcmQiKQorCS8qIE1haW50YWluZXI6IEdlb3JnZSBLYXNocGVya28gPGdlb3JnZUBjaGFzLmNvbS51YT4gKi8KKwkucGh5c19pbwk9IEVQOTNYWF9BUEJfUEhZU19CQVNFLAorCS5pb19wZ19vZmZzdAk9ICgoRVA5M1hYX0FQQl9WSVJUX0JBU0UpID4+IDE4KSAmIDB4ZmZmYywKKwkuYm9vdF9wYXJhbXMJPSAweDAwMDAwMTAwLAorCS5tYXBfaW8JCT0gZXA5M3h4X21hcF9pbywKKwkuaW5pdF9pcnEJPSBlcDkzeHhfaW5pdF9pcnEsCisJLnRpbWVyCQk9ICZlcDkzeHhfdGltZXIsCisJLmluaXRfbWFjaGluZQk9IGVkYjkzMDJfaW5pdF9tYWNoaW5lLAorTUFDSElORV9FTkQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZXA5M3h4L2VkYjkzMTVhLmMgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC9lZGI5MzE1YS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZWZkYWEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC9lZGI5MzE1YS5jCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBhcmNoL2FybS9tYWNoLWVwOTN4eC9lZGI5MzE1YS5jCisgKiBDaXJydXMgTG9naWMgRURCOTMxNUEgc3VwcG9ydC4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTGVubmVydCBCdXl0ZW5oZWsgPGJ1eXRlbmhAd2FudHN0b2ZseS5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKKyAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvcGh5c21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisjaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgorCitzdGF0aWMgc3RydWN0IHBoeXNtYXBfZmxhc2hfZGF0YSBlZGI5MzE1YV9mbGFzaF9kYXRhID0geworCS53aWR0aAkJPSAyLAorfTsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBlZGI5MzE1YV9mbGFzaF9yZXNvdXJjZSA9IHsKKwkuc3RhcnQJCT0gMHg2MDAwMDAwMCwKKwkuZW5kCQk9IDB4NjBmZmZmZmYsCisJLmZsYWdzCQk9IElPUkVTT1VSQ0VfTUVNLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgZWRiOTMxNWFfZmxhc2ggPSB7CisJLm5hbWUJCT0gInBoeXNtYXAtZmxhc2giLAorCS5pZAkJPSAwLAorCS5kZXYJCT0geworCQkucGxhdGZvcm1fZGF0YQk9ICZlZGI5MzE1YV9mbGFzaF9kYXRhLAorCX0sCisJLm51bV9yZXNvdXJjZXMJPSAxLAorCS5yZXNvdXJjZQk9ICZlZGI5MzE1YV9mbGFzaF9yZXNvdXJjZSwKK307CisKK3N0YXRpYyB2b2lkIF9faW5pdCBlZGI5MzE1YV9pbml0X21hY2hpbmUodm9pZCkKK3sKKwllcDkzeHhfaW5pdF9kZXZpY2VzKCk7CisJcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZlZGI5MzE1YV9mbGFzaCk7Cit9CisKK01BQ0hJTkVfU1RBUlQoRURCOTMxNUEsICJDaXJydXMgTG9naWMgRURCOTMxNUEgRXZhbHVhdGlvbiBCb2FyZCIpCisJLyogTWFpbnRhaW5lcjogTGVubmVydCBCdXl0ZW5oZWsgPGJ1eXRlbmhAd2FudHN0b2ZseS5vcmc+ICovCisJLnBoeXNfaW8JPSBFUDkzWFhfQVBCX1BIWVNfQkFTRSwKKwkuaW9fcGdfb2Zmc3QJPSAoKEVQOTNYWF9BUEJfVklSVF9CQVNFKSA+PiAxOCkgJiAweGZmZmMsCisJLmJvb3RfcGFyYW1zCT0gMHhjMDAwMDEwMCwKKwkubWFwX2lvCQk9IGVwOTN4eF9tYXBfaW8sCisJLmluaXRfaXJxCT0gZXA5M3h4X2luaXRfaXJxLAorCS50aW1lcgkJPSAmZXA5M3h4X3RpbWVyLAorCS5pbml0X21hY2hpbmUJPSBlZGI5MzE1YV9pbml0X21hY2hpbmUsCitNQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AzeHgvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtaW9wM3h4L0tjb25maWcKaW5kZXggMmJmZThjNy4uNDQyMmYyMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1pb3AzeHgvS2NvbmZpZworKysgYi9hcmNoL2FybS9tYWNoLWlvcDN4eC9LY29uZmlnCkBAIC0zMCwxMiArMzAsMTUgQEAKIAlzZWxlY3QgQVJDSF9JT1AzMzEKIAloZWxwCiAJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHJ1biB5b3VyIGtlcm5lbCBvbiB0aGUgSW50ZWwgSVE4MDMzMgotCSAgZXZhbHVhdGlvbiBraXQgZm9yIHRoZSBJT1AzMzIgY2hpcHNldAorCSAgZXZhbHVhdGlvbiBraXQgZm9yIHRoZSBJT1AzMzIgY2hpcHNldC4KIAogY29uZmlnIEFSQ0hfRVA4MDIxOQotICAgIGJvb2wgIkVuYWJsZSBzdXBwb3J0IGZvciBFUDgwMjE5IgotICAgIHNlbGVjdCBBUkNIX0lPUDMyMQotICAgIHNlbGVjdCBBUkNIX0lRMzEyNDQKKwlib29sICJFbmFibGUgc3VwcG9ydCBmb3IgRVA4MDIxOSIKKwlzZWxlY3QgQVJDSF9JT1AzMjEKKwlzZWxlY3QgQVJDSF9JUTMxMjQ0CisJaGVscAorCSAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byBydW4geW91ciBrZXJuZWwgb24gdGhlIEludGVsIEVQODAyMTkKKwkgIGV2YWx1YXRpb24ga2l0IGZvciB0aGUgSW50ZWwgODAyMTkgY2hpcHNldCAoYSBJT1AzMjEgdmFyaWFudCkuCiAKICMgV2hpY2ggSU9QIHZhcmlhbnQgYXJlIHdlIHJ1bm5pbmc/CiBjb25maWcgQVJDSF9JT1AzMjEKQEAgLTU2LDggKzU5LDggQEAKIAlib29sICJDaGlwIHN0ZXBwaW5nIEQgb2YgdGhlIElPUDgwMzMxIHByb2Nlc3NvciBvciBJT1A4MDMzMyIKIAlkZXBlbmRzIG9uIChBUkNIX0lPUDMzMSkKIAloZWxwCi0JCSAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBTdGVwRCBvZiB0aGUgSU9QODAzMzEgb3IgSU9QODAzMwotCQkgIGJhc2VkIHBsYXRmb3Jtcy4KKwkgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgU3RlcEQgb2YgdGhlIElPUDgwMzMxIG9yIElPUDgwMzMKKwkgIGJhc2VkIHBsYXRmb3Jtcy4KIAogZW5kbWVudQogZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDEvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtb21hcDEvS2NvbmZpZwppbmRleCBmOGQ3MTZjLi5kMTM1NTY4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAxL0tjb25maWcKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9LY29uZmlnCkBAIC02Miw2ICs2MiwxMyBAQAogCSAgU3VwcG9ydCBmb3IgVEkgT01BUCA3MzAgUGVyc2V1czIgYm9hcmQuIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgc3VjaAogCSAgYSBib2FyZC4KIAorY29uZmlnIE1BQ0hfT01BUF9GU0FNUExFCisJYm9vbCAiVEkgRi1TYW1wbGUiCisJZGVwZW5kcyBvbiBBUkNIX09NQVAxICYmIEFSQ0hfT01BUDczMAorICAgIAloZWxwCisJICBTdXBwb3J0IGZvciBUSSBPTUFQIDg1MCBGLVNhbXBsZSBib2FyZC4gU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBzdWNoCisJICBhIGJvYXJkLgorCiBjb25maWcgTUFDSF9WT0lDRUJMVUUKIAlib29sICJWb2ljZWJsdWUiCiAJZGVwZW5kcyBvbiBBUkNIX09NQVAxICYmIEFSQ0hfT01BUDE1WFgKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDEvTWFrZWZpbGUgYi9hcmNoL2FybS9tYWNoLW9tYXAxL01ha2VmaWxlCmluZGV4IDllYTcxOTUuLjcxNjVmNzQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDEvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9NYWtlZmlsZQpAQCAtMTcsNiArMTcsNyBAQAogb2JqLSQoQ09ORklHX01BQ0hfT01BUF9JTk5PVkFUT1IpCSs9IGJvYXJkLWlubm92YXRvci5vCiBvYmotJChDT05GSUdfTUFDSF9PTUFQX0dFTkVSSUMpCQkrPSBib2FyZC1nZW5lcmljLm8KIG9iai0kKENPTkZJR19NQUNIX09NQVBfUEVSU0VVUzIpCSs9IGJvYXJkLXBlcnNldXMyLm8KK29iai0kKENPTkZJR19NQUNIX09NQVBfRlNBTVBMRSkJCSs9IGJvYXJkLWZzYW1wbGUubwogb2JqLSQoQ09ORklHX01BQ0hfT01BUF9PU0spCQkrPSBib2FyZC1vc2subwogb2JqLSQoQ09ORklHX01BQ0hfT01BUF9IMykJCSs9IGJvYXJkLWgzLm8KIG9iai0kKENPTkZJR19NQUNIX1ZPSUNFQkxVRSkJCSs9IGJvYXJkLXZvaWNlYmx1ZS5vCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLWFtcy1kZWx0YS5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1hbXMtZGVsdGEuYwppbmRleCA3M2RmMzJhLi44NDM3ZDA2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLWFtcy1kZWx0YS5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtYW1zLWRlbHRhLmMKQEAgLTgwLDggKzgwLDE1IEBACiAJLmVuYWJsZWRfdWFydHMgPSAxLAogfTsKIAorc3RhdGljIHN0cnVjdCBvbWFwX3VzYl9jb25maWcgYW1zX2RlbHRhX3VzYl9jb25maWcgX19pbml0ZGF0YSA9IHsKKwkucmVnaXN0ZXJfaG9zdAk9IDEsCisJLmhtY19tb2RlCT0gMTYsCisJLnBpbnNbMF0JPSAyLAorfTsKKwogc3RhdGljIHN0cnVjdCBvbWFwX2JvYXJkX2NvbmZpZ19rZXJuZWwgYW1zX2RlbHRhX2NvbmZpZ1tdID0gewogCXsgT01BUF9UQUdfVUFSVCwJJmFtc19kZWx0YV91YXJ0X2NvbmZpZyB9LAorCXsgT01BUF9UQUdfVVNCLAkJJmFtc19kZWx0YV91c2JfY29uZmlnIH0sCiB9OwogCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBhbXNfZGVsdGFfbGVkX2RldmljZSA9IHsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtZnNhbXBsZS5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1mc2FtcGxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc1M2EzYwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtZnNhbXBsZS5jCkBAIC0wLDAgKzEsMzE5IEBACisvKgorICogbGludXgvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1mc2FtcGxlLmMKKyAqCisgKiBNb2RpZmllZCBmcm9tIGJvYXJkLXBlcnNldXMyLmMKKyAqCisgKiBPcmlnaW5hbCBPTUFQNzMwIHN1cHBvcnQgYnkgSmVhbiBQaWhldCA8ai1waWhldEB0aS5jb20+CisgKiBVcGRhdGVkIGZvciAyLjYgYnkgS2V2aW4gSGlsbWFuIDxramhAaGlsbWFuLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvbXRkLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL25hbmQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvcGFydGl0aW9ucy5oPgorI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CisKKyNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4KKyNpbmNsdWRlIDxhc20vbWFjaC9mbGFzaC5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5oPgorCisjaW5jbHVkZSA8YXNtL2FyY2gvdGMuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9ncGlvLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvbXV4Lmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZnBnYS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2tleXBhZC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2NvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2JvYXJkLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvYm9hcmQtZnNhbXBsZS5oPgorCitzdGF0aWMgaW50IGZzYW1wbGVfa2V5bWFwW10gPSB7CisJS0VZKDAsMCxLRVlfVVApLAorCUtFWSgwLDEsS0VZX1JJR0hUKSwKKwlLRVkoMCwyLEtFWV9MRUZUKSwKKwlLRVkoMCwzLEtFWV9ET1dOKSwKKwlLRVkoMCw0LEtFWV9DRU5URVIpLAorCUtFWSgwLDUsS0VZXzBfNSksCisJS0VZKDEsMCxLRVlfU09GVDIpLAorCUtFWSgxLDEsS0VZX1NFTkQpLAorCUtFWSgxLDIsS0VZX0VORCksCisJS0VZKDEsMyxLRVlfVk9MVU1FRE9XTiksCisJS0VZKDEsNCxLRVlfVk9MVU1FVVApLAorCUtFWSgxLDUsS0VZX1JFQ09SRCksCisJS0VZKDIsMCxLRVlfU09GVDEpLAorCUtFWSgyLDEsS0VZXzMpLAorCUtFWSgyLDIsS0VZXzYpLAorCUtFWSgyLDMsS0VZXzkpLAorCUtFWSgyLDQsS0VZX1NIQVJQKSwKKwlLRVkoMiw1LEtFWV8yXzUpLAorCUtFWSgzLDAsS0VZX0JBQ0spLAorCUtFWSgzLDEsS0VZXzIpLAorCUtFWSgzLDIsS0VZXzUpLAorCUtFWSgzLDMsS0VZXzgpLAorCUtFWSgzLDQsS0VZXzApLAorCUtFWSgzLDUsS0VZX0hFQURTRVRIT09LKSwKKwlLRVkoNCwwLEtFWV9IT01FKSwKKwlLRVkoNCwxLEtFWV8xKSwKKwlLRVkoNCwyLEtFWV80KSwKKwlLRVkoNCwzLEtFWV83KSwKKwlLRVkoNCw0LEtFWV9TVEFSKSwKKwlLRVkoNCw1LEtFWV9QT1dFUiksCisJMAorfTsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBzbWM5MXhfcmVzb3VyY2VzW10gPSB7CisJWzBdID0geworCQkuc3RhcnQJPSBIMlAyX0RCR19GUEdBX0VUSFJfU1RBUlQsCS8qIFBoeXNpY2FsICovCisJCS5lbmQJPSBIMlAyX0RCR19GUEdBX0VUSFJfU1RBUlQgKyAweGYsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAorCX0sCisJWzFdID0geworCQkuc3RhcnQJPSBJTlRfNzMwX01QVV9FWFRfTklSUSwKKwkJLmVuZAk9IDAsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IG10ZF9wYXJ0aXRpb24gbm9yX3BhcnRpdGlvbnNbXSA9IHsKKwkvKiBib290bG9hZGVyIChVLUJvb3QsIGV0YykgaW4gZmlyc3Qgc2VjdG9yICovCisJeworCSAgICAgIC5uYW1lCQk9ICJib290bG9hZGVyIiwKKwkgICAgICAub2Zmc2V0CQk9IDAsCisJICAgICAgLnNpemUJCT0gU1pfMTI4SywKKwkgICAgICAubWFza19mbGFncwk9IE1URF9XUklURUFCTEUsIC8qIGZvcmNlIHJlYWQtb25seSAqLworCX0sCisJLyogYm9vdGxvYWRlciBwYXJhbXMgaW4gdGhlIG5leHQgc2VjdG9yICovCisJeworCSAgICAgIC5uYW1lCQk9ICJwYXJhbXMiLAorCSAgICAgIC5vZmZzZXQJCT0gTVREUEFSVF9PRlNfQVBQRU5ELAorCSAgICAgIC5zaXplCQk9IFNaXzEyOEssCisJICAgICAgLm1hc2tfZmxhZ3MJPSAwLAorCX0sCisJLyoga2VybmVsICovCisJeworCSAgICAgIC5uYW1lCQk9ICJrZXJuZWwiLAorCSAgICAgIC5vZmZzZXQJCT0gTVREUEFSVF9PRlNfQVBQRU5ELAorCSAgICAgIC5zaXplCQk9IFNaXzJNLAorCSAgICAgIC5tYXNrX2ZsYWdzCT0gMAorCX0sCisJLyogcmVzdCBvZiBmbGFzaCBpcyBhIGZpbGUgc3lzdGVtICovCisJeworCSAgICAgIC5uYW1lCQk9ICJyb290ZnMiLAorCSAgICAgIC5vZmZzZXQJCT0gTVREUEFSVF9PRlNfQVBQRU5ELAorCSAgICAgIC5zaXplCQk9IE1URFBBUlRfU0laX0ZVTEwsCisJICAgICAgLm1hc2tfZmxhZ3MJPSAwCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmxhc2hfcGxhdGZvcm1fZGF0YSBub3JfZGF0YSA9IHsKKwkubWFwX25hbWUJPSAiY2ZpX3Byb2JlIiwKKwkud2lkdGgJCT0gMiwKKwkucGFydHMJCT0gbm9yX3BhcnRpdGlvbnMsCisJLm5yX3BhcnRzCT0gQVJSQVlfU0laRShub3JfcGFydGl0aW9ucyksCit9OworCitzdGF0aWMgc3RydWN0IHJlc291cmNlIG5vcl9yZXNvdXJjZSA9IHsKKwkuc3RhcnQJCT0gT01BUF9DUzBfUEhZUywKKwkuZW5kCQk9IE9NQVBfQ1MwX1BIWVMgKyBTWl8zMk0gLSAxLAorCS5mbGFncwkJPSBJT1JFU09VUkNFX01FTSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG5vcl9kZXZpY2UgPSB7CisJLm5hbWUJCT0gIm9tYXBmbGFzaCIsCisJLmlkCQk9IDAsCisJLmRldgkJPSB7CisJCS5wbGF0Zm9ybV9kYXRhCT0gJm5vcl9kYXRhLAorCX0sCisJLm51bV9yZXNvdXJjZXMJPSAxLAorCS5yZXNvdXJjZQk9ICZub3JfcmVzb3VyY2UsCit9OworCitzdGF0aWMgc3RydWN0IG5hbmRfcGxhdGZvcm1fZGF0YSBuYW5kX2RhdGEgPSB7CisJLm9wdGlvbnMJPSBOQU5EX1NBTVNVTkdfTFBfT1BUSU9OUywKK307CisKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgbmFuZF9yZXNvdXJjZSA9IHsKKwkuc3RhcnQJCT0gT01BUF9DUzNfUEhZUywKKwkuZW5kCQk9IE9NQVBfQ1MzX1BIWVMgKyBTWl80SyAtIDEsCisJLmZsYWdzCQk9IElPUkVTT1VSQ0VfTUVNLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgbmFuZF9kZXZpY2UgPSB7CisJLm5hbWUJCT0gIm9tYXBuYW5kIiwKKwkuaWQJCT0gMCwKKwkuZGV2CQk9IHsKKwkJLnBsYXRmb3JtX2RhdGEJPSAmbmFuZF9kYXRhLAorCX0sCisJLm51bV9yZXNvdXJjZXMJPSAxLAorCS5yZXNvdXJjZQk9ICZuYW5kX3Jlc291cmNlLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugc21jOTF4X2RldmljZSA9IHsKKwkubmFtZQkJPSAic21jOTF4IiwKKwkuaWQJCT0gMCwKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUoc21jOTF4X3Jlc291cmNlcyksCisJLnJlc291cmNlCT0gc21jOTF4X3Jlc291cmNlcywKK307CisKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Uga3BfcmVzb3VyY2VzW10gPSB7CisJWzBdID0geworCQkuc3RhcnQJPSBJTlRfNzMwX01QVUlPX0tFWVBBRCwKKwkJLmVuZAk9IElOVF83MzBfTVBVSU9fS0VZUEFELAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX0lSUSwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBvbWFwX2twX3BsYXRmb3JtX2RhdGEga3BfZGF0YSA9IHsKKwkucm93cwk9IDgsCisJLmNvbHMJPSA4LAorCS5rZXltYXAgPSBmc2FtcGxlX2tleW1hcCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGtwX2RldmljZSA9IHsKKwkubmFtZQkJPSAib21hcC1rZXlwYWQiLAorCS5pZAkJPSAtMSwKKwkuZGV2CQk9IHsKKwkJLnBsYXRmb3JtX2RhdGEgPSAma3BfZGF0YSwKKwl9LAorCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRShrcF9yZXNvdXJjZXMpLAorCS5yZXNvdXJjZQk9IGtwX3Jlc291cmNlcywKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGxjZF9kZXZpY2UgPSB7CisJLm5hbWUJCT0gImxjZF9wMiIsCisJLmlkCQk9IC0xLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldmljZXNbXSBfX2luaXRkYXRhID0geworCSZub3JfZGV2aWNlLAorCSZuYW5kX2RldmljZSwKKwkmc21jOTF4X2RldmljZSwKKwkma3BfZGV2aWNlLAorCSZsY2RfZGV2aWNlLAorfTsKKworI2RlZmluZSBQMl9OQU5EX1JCX0dQSU9fUElOCTYyCisKK3N0YXRpYyBpbnQgbmFuZF9kZXZfcmVhZHkoc3RydWN0IG5hbmRfcGxhdGZvcm1fZGF0YSAqZGF0YSkKK3sKKwlyZXR1cm4gb21hcF9nZXRfZ3Bpb19kYXRhaW4oUDJfTkFORF9SQl9HUElPX1BJTik7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgb21hcF91YXJ0X2NvbmZpZyBmc2FtcGxlX3VhcnRfY29uZmlnIF9faW5pdGRhdGEgPSB7CisJLmVuYWJsZWRfdWFydHMgPSAoKDEgPDwgMCkgfCAoMSA8PCAxKSksCit9OworCitzdGF0aWMgc3RydWN0IG9tYXBfbGNkX2NvbmZpZyBmc2FtcGxlX2xjZF9jb25maWcgX19pbml0ZGF0YSA9IHsKKwkuY3RybF9uYW1lCT0gImludGVybmFsIiwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgb21hcF9ib2FyZF9jb25maWdfa2VybmVsIGZzYW1wbGVfY29uZmlnW10gPSB7CisJeyBPTUFQX1RBR19VQVJULAkmZnNhbXBsZV91YXJ0X2NvbmZpZyB9LAorCXsgT01BUF9UQUdfTENELAkJJmZzYW1wbGVfbGNkX2NvbmZpZyB9LAorfTsKKworc3RhdGljIHZvaWQgX19pbml0IG9tYXBfZnNhbXBsZV9pbml0KHZvaWQpCit7CisJaWYgKCEob21hcF9yZXF1ZXN0X2dwaW8oUDJfTkFORF9SQl9HUElPX1BJTikpKQorCQluYW5kX2RhdGEuZGV2X3JlYWR5ID0gbmFuZF9kZXZfcmVhZHk7CisKKwlvbWFwX2NmZ19yZWcoTDNfMTYxMF9GTEFTSF9DUzJCX09FKTsKKwlvbWFwX2NmZ19yZWcoTThfMTYxMF9GTEFTSF9DUzJCX1dFKTsKKworCXBsYXRmb3JtX2FkZF9kZXZpY2VzKGRldmljZXMsIEFSUkFZX1NJWkUoZGV2aWNlcykpOworCisJb21hcF9ib2FyZF9jb25maWcgPSBmc2FtcGxlX2NvbmZpZzsKKwlvbWFwX2JvYXJkX2NvbmZpZ19zaXplID0gQVJSQVlfU0laRShmc2FtcGxlX2NvbmZpZyk7CisJb21hcF9zZXJpYWxfaW5pdCgpOworfQorCitzdGF0aWMgdm9pZCBfX2luaXQgZnNhbXBsZV9pbml0X3NtYzkxeCh2b2lkKQoreworCWZwZ2Ffd3JpdGUoMSwgSDJQMl9EQkdfRlBHQV9MQU5fUkVTRVQpOworCW1kZWxheSg1MCk7CisJZnBnYV93cml0ZShmcGdhX3JlYWQoSDJQMl9EQkdfRlBHQV9MQU5fUkVTRVQpICYgfjEsCisJCSAgIEgyUDJfREJHX0ZQR0FfTEFOX1JFU0VUKTsKKwltZGVsYXkoNTApOworfQorCit2b2lkIG9tYXBfZnNhbXBsZV9pbml0X2lycSh2b2lkKQoreworCW9tYXAxX2luaXRfY29tbW9uX2h3KCk7CisJb21hcF9pbml0X2lycSgpOworCW9tYXBfZ3Bpb19pbml0KCk7CisJZnNhbXBsZV9pbml0X3NtYzkxeCgpOworfQorCisvKiBPbmx5IEZQR0EgbmVlZHMgdG8gYmUgbWFwcGVkIGhlcmUuIEFsbCBvdGhlcnMgYXJlIGRvbmUgd2l0aCBpb3JlbWFwICovCitzdGF0aWMgc3RydWN0IG1hcF9kZXNjIG9tYXBfZnNhbXBsZV9pb19kZXNjW10gX19pbml0ZGF0YSA9IHsKKwl7CisJCS52aXJ0dWFsCT0gSDJQMl9EQkdfRlBHQV9CQVNFLAorCQkucGZuCQk9IF9fcGh5c190b19wZm4oSDJQMl9EQkdfRlBHQV9TVEFSVCksCisJCS5sZW5ndGgJCT0gSDJQMl9EQkdfRlBHQV9TSVpFLAorCQkudHlwZQkJPSBNVF9ERVZJQ0UKKwl9LAorCXsKKwkJLnZpcnR1YWwJPSBGU0FNUExFX0NQTERfQkFTRSwKKwkJLnBmbgkJPSBfX3BoeXNfdG9fcGZuKEZTQU1QTEVfQ1BMRF9TVEFSVCksCisJCS5sZW5ndGgJCT0gRlNBTVBMRV9DUExEX1NJWkUsCisJCS50eXBlCQk9IE1UX0RFVklDRQorCX0KK307CisKK3N0YXRpYyB2b2lkIF9faW5pdCBvbWFwX2ZzYW1wbGVfbWFwX2lvKHZvaWQpCit7CisJb21hcDFfbWFwX2NvbW1vbl9pbygpOworCWlvdGFibGVfaW5pdChvbWFwX2ZzYW1wbGVfaW9fZGVzYywKKwkJICAgICBBUlJBWV9TSVpFKG9tYXBfZnNhbXBsZV9pb19kZXNjKSk7CisKKwkvKiBFYXJseSwgYm9hcmQtZGVwZW5kZW50IGluaXQgKi8KKworCS8qCisJICogSG9sZCBHU00gUmVzZXQgdW50aWwgbmVlZGVkCisJICovCisJb21hcF93cml0ZXcob21hcF9yZWFkdyhPTUFQNzMwX0RTUF9NX0NUTCkgJiB+MSwgT01BUDczMF9EU1BfTV9DVEwpOworCisJLyoKKwkgKiBVQVJUcyAtPiBkb25lIGF1dG9tYWdpY2FsbHkgYnkgODI1MCBkcml2ZXIKKwkgKi8KKworCS8qCisJICogQ1N4IHRpbWluZ3MsIEdQSU8gTXV4IC4uLiBzZXR1cAorCSAqLworCisJLyogRmxhc2g6IENTMCB0aW1pbmdzIHNldHVwICovCisJb21hcF93cml0ZWwoMHgwMDAwZmZmMywgT01BUDczMF9GTEFTSF9DRkdfMCk7CisJb21hcF93cml0ZWwoMHgwMDAwMDA4OCwgT01BUDczMF9GTEFTSF9BQ0ZHXzApOworCisJLyoKKwkgKiBFdGhlcm5ldCBzdXBwb3J0IHRocm91Z2ggdGhlIGRlYnVnIGJvYXJkCisJICogQ1MxIHRpbWluZ3Mgc2V0dXAKKwkgKi8KKwlvbWFwX3dyaXRlbCgweDAwMDBmZmYzLCBPTUFQNzMwX0ZMQVNIX0NGR18xKTsKKwlvbWFwX3dyaXRlbCgweDAwMDAwMDAwLCBPTUFQNzMwX0ZMQVNIX0FDRkdfMSk7CisKKwkvKgorCSAqIENvbmZpZ3VyZSBNUFVfRVhUX05JUlEgSU8gaW4gSU9fQ09ORjkgcmVnaXN0ZXIsCisJICogSXQgaXMgdXNlZCBhcyB0aGUgRXRoZXJuZXQgY29udHJvbGxlciBpbnRlcnJ1cHQKKwkgKi8KKwlvbWFwX3dyaXRlbChvbWFwX3JlYWRsKE9NQVA3MzBfSU9fQ09ORl85KSAmIDB4MUZGRkZGRkYsIE9NQVA3MzBfSU9fQ09ORl85KTsKK30KKworTUFDSElORV9TVEFSVChPTUFQX0ZTQU1QTEUsICJPTUFQNzMwIEYtU2FtcGxlIikKKy8qIE1haW50YWluZXI6IEJyaWFuIFN3ZXRsYW5kIDxzd2V0bGFuZEBnb29nbGUuY29tPiAqLworCS5waHlzX2lvCT0gMHhmZmYwMDAwMCwKKwkuaW9fcGdfb2Zmc3QJPSAoKDB4ZmVmMDAwMDApID4+IDE4KSAmIDB4ZmZmYywKKwkuYm9vdF9wYXJhbXMJPSAweDEwMDAwMTAwLAorCS5tYXBfaW8JCT0gb21hcF9mc2FtcGxlX21hcF9pbywKKwkuaW5pdF9pcnEJPSBvbWFwX2ZzYW1wbGVfaW5pdF9pcnEsCisJLmluaXRfbWFjaGluZQk9IG9tYXBfZnNhbXBsZV9pbml0LAorCS50aW1lcgkJPSAmb21hcF90aW1lciwKK01BQ0hJTkVfRU5ECmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLWlubm92YXRvci5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1pbm5vdmF0b3IuYwppbmRleCBlOTBjMTM3Li40Y2JjNjJkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLWlubm92YXRvci5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtaW5ub3ZhdG9yLmMKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlIDxhc20vYXJjaC91c2IuaD4KICNpbmNsdWRlIDxhc20vYXJjaC9rZXlwYWQuaD4KICNpbmNsdWRlIDxhc20vYXJjaC9jb21tb24uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9tY2JzcC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL29tYXAtYWxzYS5oPgogCiBzdGF0aWMgaW50IGlubm92YXRvcl9rZXltYXBbXSA9IHsKIAlLRVkoMCwgMCwgS0VZX0YxKSwKQEAgLTExMiw2ICsxMTQsNDIgQEAKIAkucmVzb3VyY2UJPSAmaW5ub3ZhdG9yX2ZsYXNoX3Jlc291cmNlLAogfTsKIAorI2RlZmluZSBERUZBVUxUX0JJVFBFUlNBTVBMRSAxNgorCitzdGF0aWMgc3RydWN0IG9tYXBfbWNic3BfcmVnX2NmZyBtY2JzcF9yZWdzID0geworCS5zcGNyMiA9IEZSRUUgfCBGUlNUIHwgR1JTVCB8IFhSU1QgfCBYSU5UTSgzKSwKKwkuc3BjcjEgPSBSSU5UTSgzKSB8IFJSU1QsCisJLnJjcjIgPSBSUEhBU0UgfCBSRlJMRU4yKE9NQVBfTUNCU1BfV09SRF84KSB8CisJICAgIFJXRExFTjIoT01BUF9NQ0JTUF9XT1JEXzE2KSB8IFJEQVRETFkoMCksCisJLnJjcjEgPSBSRlJMRU4xKE9NQVBfTUNCU1BfV09SRF84KSB8IFJXRExFTjEoT01BUF9NQ0JTUF9XT1JEXzE2KSwKKwkueGNyMiA9IFhQSEFTRSB8IFhGUkxFTjIoT01BUF9NQ0JTUF9XT1JEXzgpIHwKKwkgICAgWFdETEVOMihPTUFQX01DQlNQX1dPUkRfMTYpIHwgWERBVERMWSgwKSB8IFhGSUcsCisJLnhjcjEgPSBYRlJMRU4xKE9NQVBfTUNCU1BfV09SRF84KSB8IFhXRExFTjEoT01BUF9NQ0JTUF9XT1JEXzE2KSwKKwkuc3JncjEgPSBGV0lEKERFRkFVTFRfQklUUEVSU0FNUExFIC0gMSksCisJLnNyZ3IyID0gR1NZTkMgfCBDTEtTUCB8IEZTR00gfCBGUEVSKERFRkFVTFRfQklUUEVSU0FNUExFICogMiAtIDEpLAorCS8qLnBjcjAgPSBGU1hNIHwgRlNSTSB8IENMS1hNIHwgQ0xLUk0gfCBDTEtYUCB8IENMS1JQLCovIC8qIG1jYnNwOiBtYXN0ZXIgKi8KKwkucGNyMCA9IENMS1hQIHwgQ0xLUlAsICAvKiBtY2JzcDogc2xhdmUgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3Qgb21hcF9hbHNhX2NvZGVjX2NvbmZpZyBhbHNhX2NvbmZpZyA9IHsKKwkubmFtZQkJCT0gIk9NQVAgSW5ub3ZhdG9yIEFJQzIzIiwKKwkubWNic3BfcmVnc19hbHNhCT0gJm1jYnNwX3JlZ3MsCisJLmNvZGVjX2NvbmZpZ3VyZV9kZXYJPSBOVUxMLCAvLyBhaWMyM19jb25maWd1cmUsCisJLmNvZGVjX3NldF9zYW1wbGVyYXRlCT0gTlVMTCwgLy8gYWljMjNfc2V0X3NhbXBsZXJhdGUsCisJLmNvZGVjX2Nsb2NrX3NldHVwCT0gTlVMTCwgLy8gYWljMjNfY2xvY2tfc2V0dXAsCisJLmNvZGVjX2Nsb2NrX29uCQk9IE5VTEwsIC8vIGFpYzIzX2Nsb2NrX29uLAorCS5jb2RlY19jbG9ja19vZmYJPSBOVUxMLCAvLyBhaWMyM19jbG9ja19vZmYsCisJLmdldF9kZWZhdWx0X3NhbXBsZXJhdGUJPSBOVUxMLCAvLyBhaWMyM19nZXRfZGVmYXVsdF9zYW1wbGVyYXRlLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgaW5ub3ZhdG9yX21jYnNwMV9kZXZpY2UgPSB7CisJLm5hbWUJPSAib21hcF9hbHNhX21jYnNwIiwKKyAJLmlkCT0gMSwKKwkuZGV2ID0geworCQkucGxhdGZvcm1fZGF0YQk9ICZhbHNhX2NvbmZpZywKKwl9LAorfTsKKwogc3RhdGljIHN0cnVjdCByZXNvdXJjZSBpbm5vdmF0b3Jfa3BfcmVzb3VyY2VzW10gPSB7CiAJWzBdID0gewogCQkuc3RhcnQJPSBJTlRfS0VZQk9BUkQsCkBAIC0xMzksNiArMTc3LDEwIEBACiAKICNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMTVYWAogCisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaS9hZHM3ODQ2Lmg+CisKKwogLyogT25seSBGUEdBIG5lZWRzIHRvIGJlIG1hcHBlZCBoZXJlLiBBbGwgb3RoZXJzIGFyZSBkb25lIHdpdGggaW9yZW1hcCAqLwogc3RhdGljIHN0cnVjdCBtYXBfZGVzYyBpbm5vdmF0b3IxNTEwX2lvX2Rlc2NbXSBfX2luaXRkYXRhID0gewogCXsKQEAgLTE3NCwxMyArMjE2LDQ0IEBACiAJLmlkCQk9IC0xLAogfTsKIAorc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgaW5ub3ZhdG9yMTUxMF9zcGlfZGV2aWNlID0geworCS5uYW1lCQk9ICJzcGlfaW5uMTUxMCIsCisJLmlkCQk9IC0xLAorfTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmlubm92YXRvcjE1MTBfZGV2aWNlc1tdIF9faW5pdGRhdGEgPSB7CiAJJmlubm92YXRvcl9mbGFzaF9kZXZpY2UsCiAJJmlubm92YXRvcjE1MTBfc21jOTF4X2RldmljZSwKKwkmaW5ub3ZhdG9yX21jYnNwMV9kZXZpY2UsCiAJJmlubm92YXRvcl9rcF9kZXZpY2UsCiAJJmlubm92YXRvcjE1MTBfbGNkX2RldmljZSwKKwkmaW5ub3ZhdG9yMTUxMF9zcGlfZGV2aWNlLAogfTsKIAorc3RhdGljIGludCBpbm5vdmF0b3JfZ2V0X3BlbmRvd25fc3RhdGUodm9pZCkKK3sKKwlyZXR1cm4gIShmcGdhX3JlYWQoT01BUDE1MTBfRlBHQV9UT1VDSFNDUkVFTikgJiAoMSA8PCA1KSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWRzNzg0Nl9wbGF0Zm9ybV9kYXRhIGlubm92YXRvcjE1MTBfdHNfaW5mbyA9IHsKKwkubW9kZWwJCQk9IDc4NDYsCisJLnZyZWZfZGVsYXlfdXNlY3MJPSAxMDAsCS8qIGludGVybmFsLCBubyBjYXBhY2l0b3IgKi8KKwkueF9wbGF0ZV9vaG1zCQk9IDQxOSwKKwkueV9wbGF0ZV9vaG1zCQk9IDQ4NiwKKwkuZ2V0X3BlbmRvd25fc3RhdGUJPSBpbm5vdmF0b3JfZ2V0X3BlbmRvd25fc3RhdGUsCit9OworCitzdGF0aWMgc3RydWN0IHNwaV9ib2FyZF9pbmZvIF9faW5pdGRhdGEgaW5ub3ZhdG9yMTUxMF9ib2FyZGluZm9bXSA9IHsgeworCS8qIEZQR0EgKGJ1cyAiMTAiKSBDUzAgaGFzIGFuIGFkczc4NDZlICovCisJLm1vZGFsaWFzCQk9ICJhZHM3ODQ2IiwKKwkucGxhdGZvcm1fZGF0YQkJPSAmaW5ub3ZhdG9yMTUxMF90c19pbmZvLAorCS5pcnEJCQk9IE9NQVAxNTEwX0lOVF9GUEdBX1RTLAorCS5tYXhfc3BlZWRfaHoJCT0gMTIwMDAwIC8qIG1heCBzYW1wbGUgcmF0ZSBhdCAzViAqLworCQkJCQkqIDI2IC8qIGNvbW1hbmQgKyBkYXRhICsgb3ZlcmhlYWQgKi8sCisJLmJ1c19udW0JCT0gMTAsCisJLmNoaXBfc2VsZWN0CQk9IDAsCit9IH07CisKICNlbmRpZiAvKiBDT05GSUdfQVJDSF9PTUFQMTVYWCAqLwogCiAjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDE2WFgKQEAgLTMxMSw2ICszODQsOCBAQAogI2lmZGVmIENPTkZJR19BUkNIX09NQVAxNVhYCiAJaWYgKGNwdV9pc19vbWFwMTUxMCgpKSB7CiAJCXBsYXRmb3JtX2FkZF9kZXZpY2VzKGlubm92YXRvcjE1MTBfZGV2aWNlcywgQVJSQVlfU0laRShpbm5vdmF0b3IxNTEwX2RldmljZXMpKTsKKwkJc3BpX3JlZ2lzdGVyX2JvYXJkX2luZm8oaW5ub3ZhdG9yMTUxMF9ib2FyZGluZm8sCisJCQkJQVJSQVlfU0laRShpbm5vdmF0b3IxNTEwX2JvYXJkaW5mbykpOwogCX0KICNlbmRpZgogI2lmZGVmIENPTkZJR19BUkNIX09NQVAxNlhYCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLW9zay5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1vc2suYwppbmRleCAxMTYwMDkzLi5lMDcxMWQyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLW9zay5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtb3NrLmMKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KICNpbmNsdWRlIDxsaW51eC9tdGQvcGFydGl0aW9ucy5oPgotI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CiAKICNpbmNsdWRlIDxhc20vaGFyZHdhcmUuaD4KICNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgpAQCAtNDUsMjUgKzQ0LDEwIEBACiAjaW5jbHVkZSA8YXNtL2FyY2gvdXNiLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvbXV4Lmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvdGMuaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9rZXlwYWQuaD4KICNpbmNsdWRlIDxhc20vYXJjaC9jb21tb24uaD4KICNpbmNsdWRlIDxhc20vYXJjaC9tY2JzcC5oPgogI2luY2x1ZGUgPGFzbS9hcmNoL29tYXAtYWxzYS5oPgogCi1zdGF0aWMgaW50IG9za19rZXltYXBbXSA9IHsKLQlLRVkoMCwgMCwgS0VZX0YxKSwKLQlLRVkoMCwgMywgS0VZX1VQKSwKLQlLRVkoMSwgMSwgS0VZX0xFRlRDVFJMKSwKLQlLRVkoMSwgMiwgS0VZX0xFRlQpLAotCUtFWSgyLCAwLCBLRVlfU1BBQ0UpLAotCUtFWSgyLCAxLCBLRVlfRVNDKSwKLQlLRVkoMiwgMiwgS0VZX0RPV04pLAotCUtFWSgzLCAyLCBLRVlfRU5URVIpLAotCUtFWSgzLCAzLCBLRVlfUklHSFQpLAotCTAKLX07Ci0KLQogc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIG9za19wYXJ0aXRpb25zW10gPSB7CiAJLyogYm9vdGxvYWRlciAoVS1Cb290LCBldGMpIGluIGZpcnN0IHNlY3RvciAqLwogCXsKQEAgLTE4MSw0OCArMTY1LDE3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9zazU5MTJfbWNic3AxX2RldmljZSA9IHsKIAkubmFtZQk9ICJvbWFwX2Fsc2FfbWNic3AiLAotIAkuaWQJPSAxLAorCS5pZAk9IDEsCiAJLmRldiA9IHsKIAkJLnBsYXRmb3JtX2RhdGEJPSAmYWxzYV9jb25maWcsCiAJfSwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgcmVzb3VyY2Ugb3NrNTkxMl9rcF9yZXNvdXJjZXNbXSA9IHsKLQlbMF0gPSB7Ci0JCS5zdGFydAk9IElOVF9LRVlCT0FSRCwKLQkJLmVuZAk9IElOVF9LRVlCT0FSRCwKLQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9JUlEsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qgb21hcF9rcF9wbGF0Zm9ybV9kYXRhIG9za19rcF9kYXRhID0gewotCS5yb3dzCT0gOCwKLQkuY29scwk9IDgsCi0JLmtleW1hcCA9IG9za19rZXltYXAsCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvc2s1OTEyX2twX2RldmljZSA9IHsKLQkubmFtZQkJPSAib21hcC1rZXlwYWQiLAotCS5pZAkJPSAtMSwKLQkuZGV2CQk9IHsKLQkJLnBsYXRmb3JtX2RhdGEgPSAmb3NrX2twX2RhdGEsCi0JfSwKLQkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUob3NrNTkxMl9rcF9yZXNvdXJjZXMpLAotCS5yZXNvdXJjZQk9IG9zazU5MTJfa3BfcmVzb3VyY2VzLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3NrNTkxMl9sY2RfZGV2aWNlID0gewotCS5uYW1lCQk9ICJsY2Rfb3NrIiwKLQkuaWQJCT0gLTEsCi19OwotCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3NrNTkxMl9kZXZpY2VzW10gX19pbml0ZGF0YSA9IHsKIAkmb3NrNTkxMl9mbGFzaF9kZXZpY2UsCiAJJm9zazU5MTJfc21jOTF4X2RldmljZSwKIAkmb3NrNTkxMl9jZl9kZXZpY2UsCiAJJm9zazU5MTJfbWNic3AxX2RldmljZSwKLQkmb3NrNTkxMl9rcF9kZXZpY2UsCi0JJm9zazU5MTJfbGNkX2RldmljZSwKIH07CiAKIHN0YXRpYyB2b2lkIF9faW5pdCBvc2tfaW5pdF9zbWM5MXgodm9pZCkKQEAgLTI3NiwxOCArMjI5LDEwMCBAQAogCS5lbmFibGVkX3VhcnRzID0gKDEgPDwgMCksCiB9OwogCisjaWZkZWYJQ09ORklHX09NQVBfT1NLX01JU1RSQUwKIHN0YXRpYyBzdHJ1Y3Qgb21hcF9sY2RfY29uZmlnIG9za19sY2RfY29uZmlnIF9faW5pdGRhdGEgPSB7CiAJLmN0cmxfbmFtZQk9ICJpbnRlcm5hbCIsCiB9OworI2VuZGlmCiAKIHN0YXRpYyBzdHJ1Y3Qgb21hcF9ib2FyZF9jb25maWdfa2VybmVsIG9za19jb25maWdbXSA9IHsKIAl7IE9NQVBfVEFHX1VTQiwgICAgICAgICAgICZvc2tfdXNiX2NvbmZpZyB9LAogCXsgT01BUF9UQUdfVUFSVCwJCSZvc2tfdWFydF9jb25maWcgfSwKKyNpZmRlZglDT05GSUdfT01BUF9PU0tfTUlTVFJBTAogCXsgT01BUF9UQUdfTENELAkJCSZvc2tfbGNkX2NvbmZpZyB9LAorI2VuZGlmCiB9OwogCiAjaWZkZWYJQ09ORklHX09NQVBfT1NLX01JU1RSQUwKIAorI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CisjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaS9hZHM3ODQ2Lmg+CisKKyNpbmNsdWRlIDxhc20vYXJjaC9rZXlwYWQuaD4KKworc3RhdGljIGNvbnN0IGludCBvc2tfa2V5bWFwW10gPSB7CisJLyogS0VZKGNvbCwgcm93LCBjb2RlKSAqLworCUtFWSgwLCAwLCBLRVlfRjEpLAkJLyogU1c0ICovCisJS0VZKDAsIDMsIEtFWV9VUCksCQkvKiAoc3cyL3VwKSAqLworCUtFWSgxLCAxLCBLRVlfTEVGVENUUkwpLAkvKiBTVzUgKi8KKwlLRVkoMSwgMiwgS0VZX0xFRlQpLAkJLyogKHN3Mi9sZWZ0KSAqLworCUtFWSgyLCAwLCBLRVlfU1BBQ0UpLAkJLyogU1czICovCisJS0VZKDIsIDEsIEtFWV9FU0MpLAkJLyogU1c2ICovCisJS0VZKDIsIDIsIEtFWV9ET1dOKSwJCS8qIChzdzIvZG93bikgKi8KKwlLRVkoMywgMiwgS0VZX0VOVEVSKSwJCS8qIChzdzIvc2VsZWN0KSAqLworCUtFWSgzLCAzLCBLRVlfUklHSFQpLAkJLyogKHN3Mi9yaWdodCkgKi8KKwkwCit9OworCitzdGF0aWMgc3RydWN0IG9tYXBfa3BfcGxhdGZvcm1fZGF0YSBvc2tfa3BfZGF0YSA9IHsKKwkucm93cwk9IDgsCisJLmNvbHMJPSA4LAorCS5rZXltYXAgPSAoaW50ICopIG9za19rZXltYXAsCit9OworCitzdGF0aWMgc3RydWN0IHJlc291cmNlIG9zazU5MTJfa3BfcmVzb3VyY2VzW10gPSB7CisJWzBdID0geworCQkuc3RhcnQJPSBJTlRfS0VZQk9BUkQsCisJCS5lbmQJPSBJTlRfS0VZQk9BUkQsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBvc2s1OTEyX2twX2RldmljZSA9IHsKKwkubmFtZQkJPSAib21hcC1rZXlwYWQiLAorCS5pZAkJPSAtMSwKKwkuZGV2CQk9IHsKKwkJLnBsYXRmb3JtX2RhdGEgPSAmb3NrX2twX2RhdGEsCisJfSwKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUob3NrNTkxMl9rcF9yZXNvdXJjZXMpLAorCS5yZXNvdXJjZQk9IG9zazU5MTJfa3BfcmVzb3VyY2VzLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb3NrNTkxMl9sY2RfZGV2aWNlID0geworCS5uYW1lCQk9ICJsY2Rfb3NrIiwKKwkuaWQJCT0gLTEsCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqbWlzdHJhbF9kZXZpY2VzW10gX19pbml0ZGF0YSA9IHsKKwkmb3NrNTkxMl9rcF9kZXZpY2UsCisJJm9zazU5MTJfbGNkX2RldmljZSwKK307CisKK3N0YXRpYyBpbnQgbWlzdHJhbF9nZXRfcGVuZG93bl9zdGF0ZSh2b2lkKQoreworCXJldHVybiAhb21hcF9nZXRfZ3Bpb19kYXRhaW4oNCk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWRzNzg0Nl9wbGF0Zm9ybV9kYXRhIG1pc3RyYWxfdHNfaW5mbyA9IHsKKwkubW9kZWwJCQk9IDc4NDYsCisJLnZyZWZfZGVsYXlfdXNlY3MJPSAxMDAsCS8qIGludGVybmFsLCBubyBjYXBhY2l0b3IgKi8KKwkueF9wbGF0ZV9vaG1zCQk9IDQxOSwKKwkueV9wbGF0ZV9vaG1zCQk9IDQ4NiwKKwkuZ2V0X3BlbmRvd25fc3RhdGUJPSBtaXN0cmFsX2dldF9wZW5kb3duX3N0YXRlLAorfTsKKworc3RhdGljIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyBfX2luaXRkYXRhIG1pc3RyYWxfYm9hcmRpbmZvW10gPSB7IHsKKwkvKiBNaWNyb1dpcmUgKGJ1cyAyKSBDUzAgaGFzIGFuIGFkczc4NDZlICovCisJLm1vZGFsaWFzCQk9ICJhZHM3ODQ2IiwKKwkucGxhdGZvcm1fZGF0YQkJPSAmbWlzdHJhbF90c19pbmZvLAorCS5pcnEJCQk9IE9NQVBfR1BJT19JUlEoNCksCisJLm1heF9zcGVlZF9oegkJPSAxMjAwMDAgLyogbWF4IHNhbXBsZSByYXRlIGF0IDNWICovCisJCQkJCSogMjYgLyogY29tbWFuZCArIGRhdGEgKyBvdmVyaGVhZCAqLywKKwkuYnVzX251bQkJPSAyLAorCS5jaGlwX3NlbGVjdAkJPSAwLAorfSB9OworCiAjaWZkZWYJQ09ORklHX1BNCiBzdGF0aWMgaXJxcmV0dXJuX3QKIG9za19taXN0cmFsX3dha2VfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmlnbm9yZWQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQpAQCAtMjk4LDE0ICszMzMsMTggQEAKIAogc3RhdGljIHZvaWQgX19pbml0IG9za19taXN0cmFsX2luaXQodm9pZCkKIHsKLQkvKiBGSVhNRSBoZXJlJ3Mgd2hlcmUgdG8gZmVlZCBpbiBmcmFtZWJ1ZmZlciwgdG91Y2hwYWQsIGFuZAotCSAqIGtleWJvYXJkIHNldHVwIC4uLiAgbm90IGluIHRoZSBkcml2ZXJzIGZvciB0aG9zZSBkZXZpY2VzIQotCSAqCi0JICogTk9URTogIHdlIGNvdWxkIGFjdHVhbGx5IHRlbGwgaWYgdGhlcmUncyBhIE1pc3RyYWwgYm9hcmQKKwkvKiBOT1RFOiAgd2UgY291bGQgYWN0dWFsbHkgdGVsbCBpZiB0aGVyZSdzIGEgTWlzdHJhbCBib2FyZAogCSAqIGF0dGFjaGVkLCBlLmcuIGJ5IHRyeWluZyB0byByZWFkIHNvbWV0aGluZyBmcm9tIHRoZSBhZHM3ODQ2LgotCSAqIEJ1dCB0aGlzIGlzIHRvbyBlYXJseSBmb3IgdGhhdC4uLgorCSAqIEJ1dCB0aGlzIGFyY2hfaW5pdCgpIGNvZGUgaXMgdG9vIGVhcmx5IGZvciB0aGF0LCBzaW5jZSB3ZQorCSAqIGNhbid0IHRhbGsgdG8gdGhlIGFkcyBvciBldmVuIHRoZSBpMmMgZWVwcm9tLgogCSAqLwogCisJLy8gb21hcF9jZmdfcmVnKFAxOV8xNjEwX0dQSU82KTsJLy8gQlVTWQorCW9tYXBfY2ZnX3JlZyhQMjBfMTYxMF9HUElPNCk7CS8vIFBFTklSUQorCXNldF9pcnFfdHlwZShPTUFQX0dQSU9fSVJRKDQpLCBJUlFUX0ZBTExJTkcpOworCXNwaV9yZWdpc3Rlcl9ib2FyZF9pbmZvKG1pc3RyYWxfYm9hcmRpbmZvLAorCQkJQVJSQVlfU0laRShtaXN0cmFsX2JvYXJkaW5mbykpOworCiAJLyogdGhlIHNpZGV3YXlzIGJ1dHRvbiAoU1cxKSBpcyBmb3IgdXNlIGFzIGEgIndha2V1cCIgYnV0dG9uICovCiAJb21hcF9jZmdfcmVnKE4xNV8xNjEwX01QVUlPMik7CiAJaWYgKG9tYXBfcmVxdWVzdF9ncGlvKE9NQVBfTVBVSU8oMikpID09IDApIHsKQEAgLTMyOSw2ICszNjgsOCBAQAogI2VuZGlmCiAJfSBlbHNlCiAJCXByaW50ayhLRVJOX0VSUiAiT1NLK01pc3RyYWw6IHdha2V1cCBidXR0b24gaXMgYXdvbFxuIik7CisKKwlwbGF0Zm9ybV9hZGRfZGV2aWNlcyhtaXN0cmFsX2RldmljZXMsIEFSUkFZX1NJWkUobWlzdHJhbF9kZXZpY2VzKSk7CiB9CiAjZWxzZQogc3RhdGljIHZvaWQgX19pbml0IG9za19taXN0cmFsX2luaXQodm9pZCkgeyB9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAxL2Nsb2NrLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAxL2Nsb2NrLmMKaW5kZXggNjE5ZGIxOC4uZjE5NThlOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9jbG9jay5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDEvY2xvY2suYwpAQCAtMSwzICsxLDQgQEAKKy8va2VybmVsL2xpbnV4LW9tYXAtZnNhbXBsZS9hcmNoL2FybS9tYWNoLW9tYXAxL2Nsb2NrLmMjMiAtIGVkaXQgY2hhbmdlIDM4MDggKHRleHQpCiAvKgogICogIGxpbnV4L2FyY2gvYXJtL21hY2gtb21hcDEvY2xvY2suYwogICoKQEAgLTIwLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgPGFzbS9pby5oPgogCisjaW5jbHVkZSA8YXNtL2FyY2gvY3B1Lmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvdXNiLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvY2xvY2suaD4KICNpbmNsdWRlIDxhc20vYXJjaC9zcmFtLmg+CkBAIC0yNzAsOCArMjcyLDEyIEBACiAJLyoKIAkgKiBJbiBtb3N0IGNhc2VzIHdlIHNob3VsZCBub3QgbmVlZCB0byByZXByb2dyYW0gRFBMTC4KIAkgKiBSZXByb2dyYW1taW5nIHRoZSBEUExMIGlzIHRyaWNreSwgaXQgbXVzdCBiZSBkb25lIGZyb20gU1JBTS4KKwkgKiAob24gNzMwLCBiaXQgMTMgbXVzdCBhbHdheXMgYmUgMSkKIAkgKi8KLQlvbWFwX3NyYW1fcmVwcm9ncmFtX2Nsb2NrKHB0ci0+ZHBsbGN0bF92YWwsIHB0ci0+Y2tjdGxfdmFsKTsKKwlpZiAoY3B1X2lzX29tYXA3MzAoKSkKKwkJb21hcF9zcmFtX3JlcHJvZ3JhbV9jbG9jayhwdHItPmRwbGxjdGxfdmFsLCBwdHItPmNrY3RsX3ZhbCB8IDB4MjAwMCk7CisJZWxzZQorCQlvbWFwX3NyYW1fcmVwcm9ncmFtX2Nsb2NrKHB0ci0+ZHBsbGN0bF92YWwsIHB0ci0+Y2tjdGxfdmFsKTsKIAogCWNrX2RwbGwxLnJhdGUgPSBwdHItPnBsbF9yYXRlOwogCXByb3BhZ2F0ZV9yYXRlKCZja19kcGxsMSk7CkBAIC03NDgsNyArNzU0LDcgQEAKIAkJcHJpbnRrKEtFUk5fRVJSICJTeXN0ZW0gZnJlcXVlbmNpZXMgbm90IHNldC4gQ2hlY2sgeW91ciBjb25maWcuXG4iKTsKIAkJLyogR3Vlc3Mgc2FuZSB2YWx1ZXMgKDYwTUh6KSAqLwogCQlvbWFwX3dyaXRldygweDIyOTAsIERQTExfQ1RMKTsKLQkJb21hcF93cml0ZXcoMHgxMDA1LCBBUk1fQ0tDVEwpOworCQlvbWFwX3dyaXRldyhjcHVfaXNfb21hcDczMCgpID8gMHgzMDA1IDogMHgxMDA1LCBBUk1fQ0tDVEwpOwogCQlja19kcGxsMS5yYXRlID0gNjAwMDAwMDA7CiAJCXByb3BhZ2F0ZV9yYXRlKCZja19kcGxsMSk7CiAJfQpAQCAtNzYxLDEzICs3NjcsMTcgQEAKIAkgICAgICAgY2tfZHBsbDEucmF0ZSAvIDEwMDAwMDAsIChja19kcGxsMS5yYXRlIC8gMTAwMDAwKSAlIDEwLAogCSAgICAgICBhcm1fY2sucmF0ZSAvIDEwMDAwMDAsIChhcm1fY2sucmF0ZSAvIDEwMDAwMCkgJSAxMCk7CiAKLSNpZmRlZiBDT05GSUdfTUFDSF9PTUFQX1BFUlNFVVMyCisjaWYgZGVmaW5lZChDT05GSUdfTUFDSF9PTUFQX1BFUlNFVVMyKSB8fCBkZWZpbmVkKENPTkZJR19NQUNIX09NQVBfRlNBTVBMRSkKIAkvKiBTZWxlY3Qgc2xpY2VyIG91dHB1dCBhcyBPTUFQIGlucHV0IGNsb2NrICovCiAJb21hcF93cml0ZXcob21hcF9yZWFkdyhPTUFQNzMwX1BDQ19VUExEX0NUUkwpICYgfjB4MSwgT01BUDczMF9QQ0NfVVBMRF9DVFJMKTsKICNlbmRpZgogCiAJLyogVHVybiBvZmYgRFNQIGFuZCBBUk1fVElNWE8uIE1ha2Ugc3VyZSBBUk1fSU5USENLIGlzIG5vdCBkaXZpZGVkICovCi0Jb21hcF93cml0ZXcob21hcF9yZWFkdyhBUk1fQ0tDVEwpICYgMHgwZmZmLCBBUk1fQ0tDVEwpOworCS8qIChvbiA3MzAsIGJpdCAxMyBtdXN0IG5vdCBiZSBjbGVhcmVkKSAqLworCWlmIChjcHVfaXNfb21hcDczMCgpKQorCQlvbWFwX3dyaXRldyhvbWFwX3JlYWR3KEFSTV9DS0NUTCkgJiAweDJmZmYsIEFSTV9DS0NUTCk7CisJZWxzZQorCQlvbWFwX3dyaXRldyhvbWFwX3JlYWR3KEFSTV9DS0NUTCkgJiAweDBmZmYsIEFSTV9DS0NUTCk7CiAKIAkvKiBQdXQgRFNQL01QVUkgaW50byByZXNldCB1bnRpbCBuZWVkZWQgKi8KIAlvbWFwX3dyaXRldygwLCBBUk1fUlNUQ1QxKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDEvcG0uYyBiL2FyY2gvYXJtL21hY2gtb21hcDEvcG0uYwppbmRleCBkZGY2YjA3Li4xYjRlMWQ1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAxL3BtLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9wbS5jCkBAIC0xLDMgKzEsNCBAQAorLy9rZXJuZWwvbGludXgtb21hcC1mc2FtcGxlL2FyY2gvYXJtL21hY2gtb21hcDEvcG0uYyMzIC0gaW50ZWdyYXRlIGNoYW5nZSA0NTQ1ICh0ZXh0KQogLyoKICAqIGxpbnV4L2FyY2gvYXJtL21hY2gtb21hcDEvcG0uYwogICoKQEAgLTUwLDYgKzUxLDcgQEAKICNpbmNsdWRlIDxhc20vbWFjaC9pcnEuaD4KICNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgogCisjaW5jbHVkZSA8YXNtL2FyY2gvY3B1Lmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvaXJxcy5oPgogI2luY2x1ZGUgPGFzbS9hcmNoL2Nsb2NrLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvc3JhbS5oPgpAQCAtMzI2LDggKzMyOCw5IEBACiAJLyogc3RvcCBEU1AgKi8KIAlvbWFwX3dyaXRldyhvbWFwX3JlYWR3KEFSTV9SU1RDVDEpICYgfigxIDw8IERTUF9FTiksIEFSTV9SU1RDVDEpOwogCi0JLyogc2h1dCBkb3duIGRzcF9jayAqLwotCW9tYXBfd3JpdGV3KG9tYXBfcmVhZHcoQVJNX0NLQ1RMKSAmIH4oMSA8PCBFTl9EU1BDSyksIEFSTV9DS0NUTCk7CisJCS8qIHNodXQgZG93biBkc3BfY2sgKi8KKwlpZiAoIWNwdV9pc19vbWFwNzMwKCkpCisJCW9tYXBfd3JpdGV3KG9tYXBfcmVhZHcoQVJNX0NLQ1RMKSAmIH4oMSA8PCBFTl9EU1BDSyksIEFSTV9DS0NUTCk7CiAKIAkvKiB0ZW1wb3JhcmlseSBlbmFibGluZyBhcGlfY2sgdG8gYWNjZXNzIERTUCByZWdpc3RlcnMgKi8KIAlvbWFwX3dyaXRldyhvbWFwX3JlYWR3KEFSTV9JRExFQ1QyKSB8IDEgPDwgRU5fQVBJQ0ssIEFSTV9JRExFQ1QyKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDEvdGltZS5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS90aW1lLmMKaW5kZXggYTg1ZmU2MC4uNjRjMmQ2OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMS90aW1lLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS90aW1lLmMKQEAgLTk0LDcgKzk0LDcgQEAKICAqIHdpbGwgYnJlYWsuIE9uIFAyLCB0aGUgdGltZXIgY291bnQgcmF0ZSBpcyA2LjUgTUh6IGFmdGVyIHByb2dyYW1taW5nIFBUVgogICogd2l0aCAwLiBUaGlzIGRpdmlkZXMgdGhlIDEzTUh6IGlucHV0IGJ5IDIsIGFuZCBpcyB1bmRvY3VtZW50ZWQuCiAgKi8KLSNpZmRlZiBDT05GSUdfTUFDSF9PTUFQX1BFUlNFVVMyCisjaWYgZGVmaW5lZChDT05GSUdfTUFDSF9PTUFQX1BFUlNFVVMyKSB8fCBkZWZpbmVkKENPTkZJR19NQUNIX09NQVBfRlNBTVBMRSkKIC8qIFJFVklTSVQ6IFRoaXMgaWZkZWYgY29uc3RydWN0IHNob3VsZCBiZSByZXBsYWNlZCBieSBhIHF1ZXJ5IHRvIGNsb2NrCiAgKiBmcmFtZXdvcmsgdG8gc2VlIGlmIHRpbWVyIGJhc2UgZnJlcXVlbmN5IGlzIDEyLjAsIDEzLjAgb3IgMTkuMiBNSHouCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvS2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtb21hcDIvS2NvbmZpZwppbmRleCA1MzdkZDJlLi5hYWI5N2NjIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL0tjb25maWcKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9LY29uZmlnCkBAIC04LDYgKzgsNyBAQAogY29uZmlnIEFSQ0hfT01BUDI0MjAKIAlib29sICJPTUFQMjQyMCBzdXBwb3J0IgogCWRlcGVuZHMgb24gQVJDSF9PTUFQMjRYWAorCXNlbGVjdCBPTUFQX0RNX1RJTUVSCiAKIGNvbW1lbnQgIk9NQVAgQm9hcmQgVHlwZSIKIAlkZXBlbmRzIG9uIEFSQ0hfT01BUDIKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvTWFrZWZpbGUgYi9hcmNoL2FybS9tYWNoLW9tYXAyL01ha2VmaWxlCmluZGV4IDExMWVhYTYuLjI2NmQ4OGUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9NYWtlZmlsZQpAQCAtMywxMiArMywxMyBAQAogIwogCiAjIENvbW1vbiBzdXBwb3J0Ci1vYmoteSA6PSBpcnEubyBpZC5vIGlvLm8gc3JhbS1mbi5vIG1lbW9yeS5vIHByY20ubyBjbG9jay5vIG11eC5vIGRldmljZXMubyBzZXJpYWwubworb2JqLXkgOj0gaXJxLm8gaWQubyBpby5vIHNyYW0tZm4ubyBtZW1vcnkubyBwcmNtLm8gY2xvY2subyBtdXgubyBkZXZpY2VzLm8gXAorCSBzZXJpYWwubyBncG1jLm8KIAogb2JqLSQoQ09ORklHX09NQVBfTVBVX1RJTUVSKQkJKz0gdGltZXItZ3AubwogCiAjIFBvd2VyIE1hbmFnZW1lbnQKLW9iai0kKENPTkZJR19QTSkgKz0gcG0ubyBzbGVlcC5vCitvYmotJChDT05GSUdfUE0pICs9IHBtLm8gcG0tZG9tYWluLm8gc2xlZXAubwogCiAjIFNwZWNpZmljIGJvYXJkIHN1cHBvcnQKIG9iai0kKENPTkZJR19NQUNIX09NQVBfR0VORVJJQykJCSs9IGJvYXJkLWdlbmVyaWMubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9jbG9jay5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9jbG9jay5jCmluZGV4IDcyZWI0YmYuLjY3ODlkZDQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvY2xvY2suYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2Nsb2NrLmMKQEAgLTY2MCwyNiArNjYwLDM1IEBACiAKIAkJLyogSXNvbGF0ZSBjb250cm9sIHJlZ2lzdGVyICovCiAJCWRpdl9zZWwgPSAoU1JDX1JBVEVfU0VMX01BU0sgJiBjbGstPmZsYWdzKTsKLQkJZGl2X29mZiA9IGNsay0+c3JjX29mZnNldDsKKwkJZGl2X29mZiA9IGNsay0+cmF0ZV9vZmZzZXQ7CiAKIAkJdmFsaWRyYXRlID0gb21hcDJfY2xrc2VsX3JvdW5kX3JhdGUoY2xrLCByYXRlLCAmbmV3X2Rpdik7Ci0JCWlmKHZhbGlkcmF0ZSAhPSByYXRlKQorCQlpZiAodmFsaWRyYXRlICE9IHJhdGUpCiAJCQlyZXR1cm4ocmV0KTsKIAogCQlmaWVsZF92YWwgPSBvbWFwMl9nZXRfY2xrc2VsKCZkaXZfc2VsLCAmZmllbGRfbWFzaywgY2xrKTsKIAkJaWYgKGRpdl9zZWwgPT0gMCkKIAkJCXJldHVybiByZXQ7CiAKLQkJaWYoY2xrLT5mbGFncyAmIENNX1NZU0NMS09VVF9TRUwxKXsKLQkJCXN3aXRjaChuZXdfZGl2KXsKLQkJCWNhc2UgMTY6IGZpZWxkX3ZhbCA9IDQ7IGJyZWFrOwotCQkJY2FzZSA4OiAgZmllbGRfdmFsID0gMzsgYnJlYWs7Ci0JCQljYXNlIDQ6ICBmaWVsZF92YWwgPSAyOyBicmVhazsKLQkJCWNhc2UgMjogIGZpZWxkX3ZhbCA9IDE7IGJyZWFrOwotCQkJY2FzZSAxOiAgZmllbGRfdmFsID0gMDsgYnJlYWs7CisJCWlmIChjbGstPmZsYWdzICYgQ01fU1lTQ0xLT1VUX1NFTDEpIHsKKwkJCXN3aXRjaCAobmV3X2RpdikgeworCQkJY2FzZSAxNjoKKwkJCQlmaWVsZF92YWwgPSA0OworCQkJCWJyZWFrOworCQkJY2FzZSA4OgorCQkJCWZpZWxkX3ZhbCA9IDM7CisJCQkJYnJlYWs7CisJCQljYXNlIDQ6CisJCQkJZmllbGRfdmFsID0gMjsKKwkJCQlicmVhazsKKwkJCWNhc2UgMjoKKwkJCQlmaWVsZF92YWwgPSAxOworCQkJCWJyZWFrOworCQkJY2FzZSAxOgorCQkJCWZpZWxkX3ZhbCA9IDA7CisJCQkJYnJlYWs7CiAJCQl9Ci0JCX0KLQkJZWxzZQorCQl9IGVsc2UKIAkJCWZpZWxkX3ZhbCA9IG5ld19kaXY7CiAKIAkJcmVnID0gKHZvaWQgX19pb21lbSAqKWRpdl9zZWw7CkBAIC03NDQsNyArNzUzLDcgQEAKIAkJCXZhbCA9IDB4MjsKIAkJYnJlYWs7CiAJY2FzZSBDTV9XS1VQX1NFTDE6Ci0JCXNyY19yZWdfYWRkciA9ICh1MzIpJkNNX0NMS1NFTDJfQ09SRTsKKwkJc3JjX3JlZ19hZGRyID0gKHUzMikmQ01fQ0xLU0VMX1dLVVA7CiAJCW1hc2sgPSAweDM7CiAJCWlmIChzcmNfY2xrID09ICZmdW5jXzMya19jaykKIAkJCXZhbCA9IDB4MDsKQEAgLTc4NCw5ICs3OTMsOSBAQAogCQkJdmFsID0gMDsKIAkJaWYgKHNyY19jbGsgPT0gJnN5c19jaykKIAkJCXZhbCA9IDE7Ci0JCWlmIChzcmNfY2xrID09ICZmdW5jXzU0bV9jaykKLQkJCXZhbCA9IDI7CiAJCWlmIChzcmNfY2xrID09ICZmdW5jXzk2bV9jaykKKwkJCXZhbCA9IDI7CisJCWlmIChzcmNfY2xrID09ICZmdW5jXzU0bV9jaykKIAkJCXZhbCA9IDM7CiAJCWJyZWFrOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvY2xvY2suaCBiL2FyY2gvYXJtL21hY2gtb21hcDIvY2xvY2suaAppbmRleCA2Yzc4ZDQ3Li4yNzgxZGZiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL2Nsb2NrLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9jbG9jay5oCkBAIC0xMDYyLDcgKzEwNjIsNyBAQAogCS5wYXJlbnQJCT0gJmw0X2NrLAogCS5mbGFncwkJPSBDTE9DS19JTl9PTUFQMjQyWCB8IENMT0NLX0lOX09NQVAyNDNYLAogCS5lbmFibGVfcmVnCT0gKHZvaWQgX19pb21lbSAqKSZDTV9JQ0xLRU4xX0NPUkUsCS8qIEJpdDQgKi8KLQkuZW5hYmxlX2JpdAk9IDAsCisJLmVuYWJsZV9iaXQJPSA0LAogCS5yZWNhbGMJCT0gJm9tYXAyX2ZvbGxvd3BhcmVudF9yZWNhbGMsCiB9OwogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL2RldmljZXMuYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvZGV2aWNlcy5jCmluZGV4IGZiN2Y5MWQuLjUxMzk2NzcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvZGV2aWNlcy5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvZGV2aWNlcy5jCkBAIC0xMDUsNiArMTA1LDUxIEBACiBzdGF0aWMgaW5saW5lIHZvaWQgb21hcF9pbml0X3N0aSh2b2lkKSB7fQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKENPTkZJR19TUElfT01BUDI0WFgpCisKKyNpbmNsdWRlIDxhc20vYXJjaC9tY3NwaS5oPgorCisjZGVmaW5lIE9NQVAyX01DU1BJMV9CQVNFCQkweDQ4MDk4MDAwCisjZGVmaW5lIE9NQVAyX01DU1BJMl9CQVNFCQkweDQ4MDlhMDAwCisKKy8qIEZJWE1FOiB1c2UgcmVzb3VyY2VzIGluc3RlYWQgKi8KKworc3RhdGljIHN0cnVjdCBvbWFwMl9tY3NwaV9wbGF0Zm9ybV9jb25maWcgb21hcDJfbWNzcGkxX2NvbmZpZyA9IHsKKwkuYmFzZQkJPSBpb19wMnYoT01BUDJfTUNTUEkxX0JBU0UpLAorCS5udW1fY3MJCT0gNCwKK307CisKK3N0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugb21hcDJfbWNzcGkxID0geworCS5uYW1lCQk9ICJvbWFwMl9tY3NwaSIsCisJLmlkCQk9IDEsCisJLmRldgkJPSB7CisJCS5wbGF0Zm9ybV9kYXRhID0gJm9tYXAyX21jc3BpMV9jb25maWcsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3Qgb21hcDJfbWNzcGlfcGxhdGZvcm1fY29uZmlnIG9tYXAyX21jc3BpMl9jb25maWcgPSB7CisJLmJhc2UJCT0gaW9fcDJ2KE9NQVAyX01DU1BJMl9CQVNFKSwKKwkubnVtX2NzCQk9IDIsCit9OworCitzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG9tYXAyX21jc3BpMiA9IHsKKwkubmFtZQkJPSAib21hcDJfbWNzcGkiLAorCS5pZAkJPSAyLAorCS5kZXYJCT0geworCQkucGxhdGZvcm1fZGF0YSA9ICZvbWFwMl9tY3NwaTJfY29uZmlnLAorCX0sCit9OworCitzdGF0aWMgdm9pZCBvbWFwX2luaXRfbWNzcGkodm9pZCkKK3sKKwlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm9tYXAyX21jc3BpMSk7CisJcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZvbWFwMl9tY3NwaTIpOworfQorCisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkIG9tYXBfaW5pdF9tY3NwaSh2b2lkKSB7fQorI2VuZGlmCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIHN0YXRpYyBpbnQgX19pbml0IG9tYXAyX2luaXRfZGV2aWNlcyh2b2lkKQpAQCAtMTEzLDYgKzE1OCw3IEBACiAJICogaW4gYWxwaGFiZXRpY2FsIG9yZGVyIHNvIHRoZXkncmUgZWFzaWVyIHRvIHNvcnQgdGhyb3VnaC4KIAkgKi8KIAlvbWFwX2luaXRfaTJjKCk7CisJb21hcF9pbml0X21jc3BpKCk7CiAJb21hcF9pbml0X3N0aSgpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL2dwbWMuYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvZ3BtYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YTQ4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2dwbWMuYwpAQCAtMCwwICsxLDIwOSBAQAorLyoKKyAqIEdQTUMgc3VwcG9ydCBmdW5jdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNiBOb2tpYSBDb3Jwb3JhdGlvbgorICoKKyAqIEF1dGhvcjogSnVoYSBZcmpvbGEKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorCisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZ3BtYy5oPgorCisjdW5kZWYgREVCVUcKKworI2RlZmluZSBHUE1DX0JBU0UJCTB4NjgwMGEwMDAKKyNkZWZpbmUgR1BNQ19SRVZJU0lPTgkJMHgwMAorI2RlZmluZSBHUE1DX1NZU0NPTkZJRwkJMHgxMAorI2RlZmluZSBHUE1DX1NZU1NUQVRVUwkJMHgxNAorI2RlZmluZSBHUE1DX0lSUVNUQVRVUwkJMHgxOAorI2RlZmluZSBHUE1DX0lSUUVOQUJMRQkJMHgxYworI2RlZmluZSBHUE1DX1RJTUVPVVRfQ09OVFJPTAkweDQwCisjZGVmaW5lIEdQTUNfRVJSX0FERFJFU1MJMHg0NAorI2RlZmluZSBHUE1DX0VSUl9UWVBFCQkweDQ4CisjZGVmaW5lIEdQTUNfQ09ORklHCQkweDUwCisjZGVmaW5lIEdQTUNfU1RBVFVTCQkweDU0CisjZGVmaW5lIEdQTUNfUFJFRkVUQ0hfQ09ORklHMQkweDFlMAorI2RlZmluZSBHUE1DX1BSRUZFVENIX0NPTkZJRzIJMHgxZTQKKyNkZWZpbmUgR1BNQ19QUkVGRVRDSF9DT05UUk9MCTB4MWU4CisjZGVmaW5lIEdQTUNfUFJFRkVUQ0hfU1RBVFVTCTB4MWYwCisjZGVmaW5lIEdQTUNfRUNDX0NPTkZJRwkJMHgxZjQKKyNkZWZpbmUgR1BNQ19FQ0NfQ09OVFJPTAkweDFmOAorI2RlZmluZSBHUE1DX0VDQ19TSVpFX0NPTkZJRwkweDFmYworCisjZGVmaW5lIEdQTUNfQ1MwCQkweDYwCisjZGVmaW5lIEdQTUNfQ1NfU0laRQkJMHgzMAorCitzdGF0aWMgdm9pZCBfX2lvbWVtICpncG1jX2Jhc2UgPQorCSh2b2lkIF9faW9tZW0gKikgSU9fQUREUkVTUyhHUE1DX0JBU0UpOworc3RhdGljIHZvaWQgX19pb21lbSAqZ3BtY19jc19iYXNlID0KKwkodm9pZCBfX2lvbWVtICopIElPX0FERFJFU1MoR1BNQ19CQVNFKSArIEdQTUNfQ1MwOworCitzdGF0aWMgc3RydWN0IGNsayAqZ3BtY19sM19jbGs7CisKK3N0YXRpYyB2b2lkIGdwbWNfd3JpdGVfcmVnKGludCBpZHgsIHUzMiB2YWwpCit7CisJX19yYXdfd3JpdGVsKHZhbCwgZ3BtY19iYXNlICsgaWR4KTsKK30KKworc3RhdGljIHUzMiBncG1jX3JlYWRfcmVnKGludCBpZHgpCit7CisJcmV0dXJuIF9fcmF3X3JlYWRsKGdwbWNfYmFzZSArIGlkeCk7Cit9CisKK3ZvaWQgZ3BtY19jc193cml0ZV9yZWcoaW50IGNzLCBpbnQgaWR4LCB1MzIgdmFsKQoreworCXZvaWQgX19pb21lbSAqcmVnX2FkZHI7CisKKwlyZWdfYWRkciA9IGdwbWNfY3NfYmFzZSArIChjcyAqIEdQTUNfQ1NfU0laRSkgKyBpZHg7CisJX19yYXdfd3JpdGVsKHZhbCwgcmVnX2FkZHIpOworfQorCit1MzIgZ3BtY19jc19yZWFkX3JlZyhpbnQgY3MsIGludCBpZHgpCit7CisJcmV0dXJuIF9fcmF3X3JlYWRsKGdwbWNfY3NfYmFzZSArIChjcyAqIEdQTUNfQ1NfU0laRSkgKyBpZHgpOworfQorCisvKiBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgZ3BtY19mY2sgdG8gY2xvY2sgZnJhbWV3b3JrIGFuZCB1c2UgaXQgKi8KK3N0YXRpYyB1bnNpZ25lZCBsb25nIGdwbWNfZ2V0X2ZjbGtfcGVyaW9kKHZvaWQpCit7CisJLyogSW4gcGljb3NlY29uZHMgKi8KKwlyZXR1cm4gMTAwMDAwMDAwMCAvICgoY2xrX2dldF9yYXRlKGdwbWNfbDNfY2xrKSkgLyAxMDAwKTsKK30KKwordW5zaWduZWQgaW50IGdwbWNfbnNfdG9fdGlja3ModW5zaWduZWQgaW50IHRpbWVfbnMpCit7CisJdW5zaWduZWQgbG9uZyB0aWNrX3BzOworCisJLyogQ2FsY3VsYXRlIGluIHBpY29zZWNzIHRvIHlpZWxkIG1vcmUgZXhhY3QgcmVzdWx0cyAqLworCXRpY2tfcHMgPSBncG1jX2dldF9mY2xrX3BlcmlvZCgpOworCisJcmV0dXJuICh0aW1lX25zICogMTAwMCArIHRpY2tfcHMgLSAxKSAvIHRpY2tfcHM7Cit9CisKKyNpZmRlZiBERUJVRworc3RhdGljIGludCBzZXRfZ3BtY190aW1pbmdfcmVnKGludCBjcywgaW50IHJlZywgaW50IHN0X2JpdCwgaW50IGVuZF9iaXQsCisJCQkgICAgICAgaW50IHRpbWUsIGNvbnN0IGNoYXIgKm5hbWUpCisjZWxzZQorc3RhdGljIGludCBzZXRfZ3BtY190aW1pbmdfcmVnKGludCBjcywgaW50IHJlZywgaW50IHN0X2JpdCwgaW50IGVuZF9iaXQsCisJCQkgICAgICAgaW50IHRpbWUpCisjZW5kaWYKK3sKKwl1MzIgbDsKKwlpbnQgdGlja3MsIG1hc2ssIG5yX2JpdHM7CisKKwlpZiAodGltZSA9PSAwKQorCQl0aWNrcyA9IDA7CisJZWxzZQorCQl0aWNrcyA9IGdwbWNfbnNfdG9fdGlja3ModGltZSk7CisJbnJfYml0cyA9IGVuZF9iaXQgLSBzdF9iaXQgKyAxOworCWlmICh0aWNrcyA+PSAxIDw8IG5yX2JpdHMpCisJCXJldHVybiAtMTsKKworCW1hc2sgPSAoMSA8PCBucl9iaXRzKSAtIDE7CisJbCA9IGdwbWNfY3NfcmVhZF9yZWcoY3MsIHJlZyk7CisjaWZkZWYgREVCVUcKKwlwcmludGsoS0VSTl9JTkZPICJHUE1DIENTJWQ6ICUtMTBzOiAlZCB0aWNrcywgJTNsdSBucyAod2FzICVpIHRpY2tzKVxuIiwKKwkgICAgICAgY3MsIG5hbWUsIHRpY2tzLCBncG1jX2dldF9mY2xrX3BlcmlvZCgpICogdGlja3MgLyAxMDAwLAorCSAgICAgICAobCA+PiBzdF9iaXQpICYgbWFzayk7CisjZW5kaWYKKwlsICY9IH4obWFzayA8PCBzdF9iaXQpOworCWwgfD0gdGlja3MgPDwgc3RfYml0OworCWdwbWNfY3Nfd3JpdGVfcmVnKGNzLCByZWcsIGwpOworCisJcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBERUJVRworI2RlZmluZSBHUE1DX1NFVF9PTkUocmVnLCBzdCwgZW5kLCBmaWVsZCkgXAorCWlmIChzZXRfZ3BtY190aW1pbmdfcmVnKGNzLCAocmVnKSwgKHN0KSwgKGVuZCksCQlcCisJCQl0LT5maWVsZCwgI2ZpZWxkKSA8IDApCQkJXAorCQlyZXR1cm4gLTEKKyNlbHNlCisjZGVmaW5lIEdQTUNfU0VUX09ORShyZWcsIHN0LCBlbmQsIGZpZWxkKSBcCisJaWYgKHNldF9ncG1jX3RpbWluZ19yZWcoY3MsIChyZWcpLCAoc3QpLCAoZW5kKSwgdC0+ZmllbGQpIDwgMCkgXAorCQlyZXR1cm4gLTEKKyNlbmRpZgorCitpbnQgZ3BtY19jc19jYWxjX2RpdmlkZXIoaW50IGNzLCB1bnNpZ25lZCBpbnQgc3luY19jbGspCit7CisJaW50IGRpdjsKKwl1MzIgbDsKKworCWwgPSBzeW5jX2NsayAqIDEwMDAgKyAoZ3BtY19nZXRfZmNsa19wZXJpb2QoKSAtIDEpOworCWRpdiA9IGwgLyBncG1jX2dldF9mY2xrX3BlcmlvZCgpOworCWlmIChkaXYgPiA0KQorCQlyZXR1cm4gLTE7CisJaWYgKGRpdiA8IDApCisJCWRpdiA9IDE7CisKKwlyZXR1cm4gZGl2OworfQorCitpbnQgZ3BtY19jc19zZXRfdGltaW5ncyhpbnQgY3MsIGNvbnN0IHN0cnVjdCBncG1jX3RpbWluZ3MgKnQpCit7CisJaW50IGRpdjsKKwl1MzIgbDsKKworCWRpdiA9IGdwbWNfY3NfY2FsY19kaXZpZGVyKGNzLCB0LT5zeW5jX2Nsayk7CisJaWYgKGRpdiA8IDApCisJCXJldHVybiAtMTsKKworCUdQTUNfU0VUX09ORShHUE1DX0NTX0NPTkZJRzIsICAwLCAgMywgY3Nfb24pOworCUdQTUNfU0VUX09ORShHUE1DX0NTX0NPTkZJRzIsICA4LCAxMiwgY3NfcmRfb2ZmKTsKKwlHUE1DX1NFVF9PTkUoR1BNQ19DU19DT05GSUcyLCAxNiwgMjAsIGNzX3dyX29mZik7CisKKwlHUE1DX1NFVF9PTkUoR1BNQ19DU19DT05GSUczLCAgMCwgIDMsIGFkdl9vbik7CisJR1BNQ19TRVRfT05FKEdQTUNfQ1NfQ09ORklHMywgIDgsIDEyLCBhZHZfcmRfb2ZmKTsKKwlHUE1DX1NFVF9PTkUoR1BNQ19DU19DT05GSUczLCAxNiwgMjAsIGFkdl93cl9vZmYpOworCisJR1BNQ19TRVRfT05FKEdQTUNfQ1NfQ09ORklHNCwgIDAsICAzLCBvZV9vbik7CisJR1BNQ19TRVRfT05FKEdQTUNfQ1NfQ09ORklHNCwgIDgsIDEyLCBvZV9vZmYpOworCUdQTUNfU0VUX09ORShHUE1DX0NTX0NPTkZJRzQsIDE2LCAxOSwgd2Vfb24pOworCUdQTUNfU0VUX09ORShHUE1DX0NTX0NPTkZJRzQsIDI0LCAyOCwgd2Vfb2ZmKTsKKworCUdQTUNfU0VUX09ORShHUE1DX0NTX0NPTkZJRzUsICAwLCAgNCwgcmRfY3ljbGUpOworCUdQTUNfU0VUX09ORShHUE1DX0NTX0NPTkZJRzUsICA4LCAxMiwgd3JfY3ljbGUpOworCUdQTUNfU0VUX09ORShHUE1DX0NTX0NPTkZJRzUsIDE2LCAyMCwgYWNjZXNzKTsKKworCUdQTUNfU0VUX09ORShHUE1DX0NTX0NPTkZJRzUsIDI0LCAyNywgcGFnZV9idXJzdF9hY2Nlc3MpOworCisjaWZkZWYgREVCVUcKKwlwcmludGsoS0VSTl9JTkZPICJHUE1DIENTJWQgQ0xLIHBlcmlvZCBpcyAlbHUgKGRpdiAlZClcbiIsCisJICAgICAgIGNzLCBncG1jX2dldF9mY2xrX3BlcmlvZCgpLCBkaXYpOworI2VuZGlmCisKKwlsID0gZ3BtY19jc19yZWFkX3JlZyhjcywgR1BNQ19DU19DT05GSUcxKTsKKwlsICY9IH4weDAzOworCWwgfD0gKGRpdiAtIDEpOworCisJcmV0dXJuIDA7Cit9CisKK3Vuc2lnbmVkIGxvbmcgZ3BtY19jc19nZXRfYmFzZV9hZGRyKGludCBjcykKK3sKKwlyZXR1cm4gKGdwbWNfY3NfcmVhZF9yZWcoY3MsIEdQTUNfQ1NfQ09ORklHNykgJiAweDFmKSA8PCAyNDsKK30KKwordm9pZCBfX2luaXQgZ3BtY19pbml0KHZvaWQpCit7CisJdTMyIGw7CisKKwlncG1jX2wzX2NsayA9IGNsa19nZXQoTlVMTCwgImNvcmVfbDNfY2siKTsKKwlCVUdfT04oSVNfRVJSKGdwbWNfbDNfY2xrKSk7CisKKwlsID0gZ3BtY19yZWFkX3JlZyhHUE1DX1JFVklTSU9OKTsKKwlwcmludGsoS0VSTl9JTkZPICJHUE1DIHJldmlzaW9uICVkLiVkXG4iLCAobCA+PiA0KSAmIDB4MGYsIGwgJiAweDBmKTsKKwkvKiBTZXQgc21hcnQgaWRsZSBtb2RlIGFuZCBhdXRvbWF0aWMgTDMgY2xvY2sgZ2F0aW5nICovCisJbCA9IGdwbWNfcmVhZF9yZWcoR1BNQ19TWVNDT05GSUcpOworCWwgJj0gMHgwMyA8PCAzOworCWwgfD0gKDB4MDIgPDwgMykgfCAoMSA8PCAwKTsKKwlncG1jX3dyaXRlX3JlZyhHUE1DX1NZU0NPTkZJRywgbCk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL2lvLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2lvLmMKaW5kZXggN2Q1NzExNi4uNjg0NTZiNzkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvaW8uYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2lvLmMKQEAgLTI3LDYgKzI3LDcgQEAKIGV4dGVybiB2b2lkIG9tYXBfc3JhbV9pbml0KHZvaWQpOwogZXh0ZXJuIGludCBvbWFwMl9jbGtfaW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIG9tYXAyX2NoZWNrX3JldmlzaW9uKHZvaWQpOworZXh0ZXJuIHZvaWQgZ3BtY19pbml0KHZvaWQpOwogCiAvKgogICogVGhlIG1hY2hpbmUgc3BlY2lmaWMgY29kZSBtYXkgcHJvdmlkZSB0aGUgZXh0cmEgbWFwcGluZyBiZXNpZGVzIHRoZQpAQCAtNjcsNCArNjgsNSBAQAogewogCW9tYXAyX211eF9pbml0KCk7CiAJb21hcDJfY2xrX2luaXQoKTsKKwlncG1jX2luaXQoKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvbXV4LmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL211eC5jCmluZGV4IDExOTdkYzMuLmMyYzQ4MmMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvbXV4LmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9tdXguYwpAQCAtNTMsNiArNTMsMTIgQEAKIC8qIDI0eHggY2xvY2tzICovCiBNVVhfQ0ZHXzI0WFgoIlcxNF8yNFhYX1NZU19DTEtPVVQiLAkweDEzNywJMCwJMSwJMSwJMSkKIAorLyogMjR4eCBHUE1DIHdhaXQgcGluIG1vbml0b3JpbmcgKi8KK01VWF9DRkdfMjRYWCgiTDNfR1BNQ19XQUlUMCIsCQkweDA5YSwJMCwJMSwJMSwJMSkKK01VWF9DRkdfMjRYWCgiTjdfR1BNQ19XQUlUMSIsCQkweDA5YiwJMCwJMSwJMSwJMSkKK01VWF9DRkdfMjRYWCgiTTFfR1BNQ19XQUlUMiIsCQkweDA5YywJMCwJMSwJMSwJMSkKK01VWF9DRkdfMjRYWCgiUDFfR1BNQ19XQUlUMyIsCQkweDA5ZCwJMCwJMSwJMSwJMSkKKwogLyogMjR4eCBNY0JTUCAqLwogTVVYX0NGR18yNFhYKCJZMTVfMjRYWF9NQ0JTUDJfQ0xLWCIsCTB4MTI0LAkxLAkxLAkwLAkxKQogTVVYX0NGR18yNFhYKCJSMTRfMjRYWF9NQ0JTUDJfRlNYIiwJMHgxMjUsCTEsCTEsCTAsCTEpCkBAIC02MCwxOCArNjYsMzggQEAKIE1VWF9DRkdfMjRYWCgiVjE1XzI0WFhfTUNCU1AyX0RYIiwJMHgxMjcsCTEsCTEsCTAsCTEpCiAKIC8qIDI0eHggR1BJTyAqLwotTVVYX0NGR18yNFhYKCJNMjFfMjQyWF9HUElPMTEiLAkgMHgwYzksICAzLCAgICAgIDEsICAgICAgMSwgICAgICAxKQorTVVYX0NGR18yNFhYKCJNMjFfMjQyWF9HUElPMTEiLAkJMHgwYzksICAzLCAgICAgIDEsICAgICAgMSwgICAgICAxKQogTVVYX0NGR18yNFhYKCJBQTEwXzI0MlhfR1BJTzEzIiwJMHgwZTUsICAzLCAgICAgIDAsICAgICAgMCwgICAgICAxKQotTVVYX0NGR18yNFhYKCJBQTZfMjQyWF9HUElPMTQiLAkgMHgwZTYsICAzLCAgICAgIDAsICAgICAgMCwgICAgICAxKQotTVVYX0NGR18yNFhYKCJBQTRfMjQyWF9HUElPMTUiLAkgMHgwZTcsICAzLCAgICAgIDAsICAgICAgMCwgICAgICAxKQotTVVYX0NGR18yNFhYKCJZMTFfMjQyWF9HUElPMTYiLAkgMHgwZTgsICAzLCAgICAgIDAsICAgICAgMCwgICAgICAxKQorTVVYX0NGR18yNFhYKCJBQTZfMjQyWF9HUElPMTQiLAkJMHgwZTYsICAzLCAgICAgIDAsICAgICAgMCwgICAgICAxKQorTVVYX0NGR18yNFhYKCJBQTRfMjQyWF9HUElPMTUiLAkJMHgwZTcsICAzLCAgICAgIDAsICAgICAgMCwgICAgICAxKQorTVVYX0NGR18yNFhYKCJZMTFfMjQyWF9HUElPMTYiLAkJMHgwZTgsICAzLCAgICAgIDAsICAgICAgMCwgICAgICAxKQogTVVYX0NGR18yNFhYKCJBQTEyXzI0MlhfR1BJTzE3IiwJMHgwZTksICAzLCAgICAgIDAsICAgICAgMCwgICAgICAxKQotTVVYX0NGR18yNFhYKCJBQThfMjQyWF9HUElPNTgiLAkgMHgwZWEsICAzLCAgICAgIDAsICAgICAgMCwgICAgICAxKQorTVVYX0NGR18yNFhYKCJBQThfMjQyWF9HUElPNTgiLAkJMHgwZWEsICAzLCAgICAgIDAsICAgICAgMCwgICAgICAxKQogTVVYX0NGR18yNFhYKCJZMjBfMjRYWF9HUElPNjAiLAkJMHgxMmMsCTMsCTAsCTAsCTEpCi1NVVhfQ0ZHXzI0WFgoIlc0X18yNFhYX0dQSU83NCIsCSAweDBmMiwgIDMsICAgICAgMCwgICAgICAwLCAgICAgIDEpCitNVVhfQ0ZHXzI0WFgoIlc0X18yNFhYX0dQSU83NCIsCQkweDBmMiwgIDMsICAgICAgMCwgICAgICAwLCAgICAgIDEpCiBNVVhfQ0ZHXzI0WFgoIk0xNV8yNFhYX0dQSU85MiIsCQkweDEwYSwJMywJMCwJMCwJMSkKIE1VWF9DRkdfMjRYWCgiVjE0XzI0WFhfR1BJTzExNyIsCTB4MTI4LAkzLAkxLAkwLAkxKQogCisvKiAyNDJ4IERCRyBHUElPICovCitNVVhfQ0ZHXzI0WFgoIlY0XzI0MlhfR1BJTzQ5IiwJCTB4ZDMsCTMsCTAsCTAsCTEpCitNVVhfQ0ZHXzI0WFgoIlcyXzI0MlhfR1BJTzUwIiwJCTB4ZDQsCTMsCTAsCTAsCTEpCitNVVhfQ0ZHXzI0WFgoIlU0XzI0MlhfR1BJTzUxIiwJCTB4ZDUsCTMsCTAsCTAsCTEpCitNVVhfQ0ZHXzI0WFgoIlYzXzI0MlhfR1BJTzUyIiwJCTB4ZDYsCTMsCTAsCTAsCTEpCitNVVhfQ0ZHXzI0WFgoIlYyXzI0MlhfR1BJTzUzIiwJCTB4ZDcsCTMsCTAsCTAsCTEpCitNVVhfQ0ZHXzI0WFgoIlY2XzI0MlhfR1BJTzUzIiwJCTB4Y2YsCTMsCTAsCTAsCTEpCitNVVhfQ0ZHXzI0WFgoIlQ0XzI0MlhfR1BJTzU0IiwJCTB4ZDgsCTMsCTAsCTAsCTEpCitNVVhfQ0ZHXzI0WFgoIlk0XzI0MlhfR1BJTzU0IiwJCTB4ZDAsCTMsCTAsCTAsCTEpCitNVVhfQ0ZHXzI0WFgoIlQzXzI0MlhfR1BJTzU1IiwJCTB4ZDksCTMsCTAsCTAsCTEpCitNVVhfQ0ZHXzI0WFgoIlUyXzI0MlhfR1BJTzU2IiwJCTB4ZGEsCTMsCTAsCTAsCTEpCisKKy8qIDI0eHggZXh0ZXJuYWwgRE1BIHJlcXVlc3RzICovCitNVVhfQ0ZHXzI0WFgoIkFBMTBfMjQyWF9ETUFSRVEwIiwJMHgwZTUsICAyLCAgICAgIDAsICAgICAgMCwgICAgICAxKQorTVVYX0NGR18yNFhYKCJBQTZfMjQyWF9ETUFSRVExIiwJMHgwZTYsICAyLCAgICAgIDAsICAgICAgMCwgICAgICAxKQorTVVYX0NGR18yNFhYKCJFNF8yNDJYX0RNQVJFUTIiLAkJMHgwNzQsICAyLCAgICAgIDAsICAgICAgMCwgICAgICAxKQorTVVYX0NGR18yNFhYKCJHNF8yNDJYX0RNQVJFUTMiLAkJMHgwNzMsICAyLCAgICAgIDAsICAgICAgMCwgICAgICAxKQorTVVYX0NGR18yNFhYKCJEM18yNDJYX0RNQVJFUTQiLAkJMHgwNzIsICAyLCAgICAgIDAsICAgICAgMCwgICAgICAxKQorTVVYX0NGR18yNFhYKCJFM18yNDJYX0RNQVJFUTUiLAkJMHgwNzEsICAyLCAgICAgIDAsICAgICAgMCwgICAgICAxKQorCiAvKiBUU0MgSVJRICovCiBNVVhfQ0ZHXzI0WFgoIlAyMF8yNFhYX1RTQ19JUlEiLAkweDEwOCwJMCwJMCwJMCwJMSkKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9wbS1kb21haW4uYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvcG0tZG9tYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUyMGU3NAotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvcG0tZG9tYWluLmMKQEAgLTAsMCArMSwzMDAgQEAKKy8qCisgKiBsaW51eC9hcmNoL2FybS9tYWNoLW9tYXAyL3BtLWRvbWFpbi5jCisgKgorICogUG93ZXIgZG9tYWluIGZ1bmN0aW9ucyBmb3IgT01BUDIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTm9raWEgQ29ycG9yYXRpb24KKyAqIFRvbnkgTGluZGdyZW4gPHRvbnlAYXRvbWlkZS5jb20+CisgKgorICogU29tZSBjb2RlIGJhc2VkIG9uIGVhcmxpZXIgT01BUDIgc2FtcGxlIFBNIGNvZGUKKyAqIENvcHlyaWdodCAoQykgMjAwNSBUZXhhcyBJbnN0cnVtZW50cywgSW5jLgorICogUmljaGFyZCBXb29kcnVmZiA8ci13b29kcnVmZjJAdGkuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKworI2luY2x1ZGUgPGFzbS9pby5oPgorCisjaW5jbHVkZSAicHJjbS1yZWdzLmgiCisKKy8qIFBvd2VyIGRvbWFpbiBvZmZzZXRzICovCisjZGVmaW5lIFBNX01QVV9PRkZTRVQJCQkweDEwMAorI2RlZmluZSBQTV9DT1JFX09GRlNFVAkJCTB4MjAwCisjZGVmaW5lIFBNX0dGWF9PRkZTRVQJCQkweDMwMAorI2RlZmluZSBQTV9XS1VQX09GRlNFVAkJCTB4NDAwCQkvKiBBdXRvaWRsZSBvbmx5ICovCisjZGVmaW5lIFBNX1BMTF9PRkZTRVQJCQkweDUwMAkJLyogQXV0b2lkbGUgb25seSAqLworI2RlZmluZSBQTV9EU1BfT0ZGU0VUCQkJMHg4MDAKKyNkZWZpbmUgUE1fTURNX09GRlNFVAkJCTB4YzAwCisKKy8qIFBvd2VyIGRvbWFpbiB3YWtlLXVwIGRlcGVuZGVuY3kgY29udHJvbCByZWdpc3RlciAqLworI2RlZmluZSBQTV9XS0RFUF9PRkZTRVQJCQkweGM4CisjZGVmaW5lCQlFTl9NRE0JCQkoMSA8PCA1KQorI2RlZmluZQkJRU5fV0tVUAkJCSgxIDw8IDQpCisjZGVmaW5lCQlFTl9HRlgJCQkoMSA8PCAzKQorI2RlZmluZQkJRU5fRFNQCQkJKDEgPDwgMikKKyNkZWZpbmUJCUVOX01QVQkJCSgxIDw8IDEpCisjZGVmaW5lCQlFTl9DT1JFCQkJKDEgPDwgMCkKKworLyogQ29yZSBwb3dlciBkb21haW4gc3RhdGUgdHJhbnNpdGlvbiBjb250cm9sIHJlZ2lzdGVyICovCisjZGVmaW5lIFBNX1BXU1RDVFJMX09GRlNFVAkJMHhlMAorI2RlZmluZQkJRk9SQ0VTVEFURQkJKDEgPDwgMTgpCS8qIE9ubHkgZm9yIERTUCAmIEdGWCAqLworI2RlZmluZQkJTUVNNFJFVFNUQVRFCQkoMSA8PCA2KQorI2RlZmluZQkJTUVNM1JFVFNUQVRFCQkoMSA8PCA1KQorI2RlZmluZQkJTUVNMlJFVFNUQVRFCQkoMSA8PCA0KQorI2RlZmluZQkJTUVNMVJFVFNUQVRFCQkoMSA8PCAzKQorI2RlZmluZQkJTE9HSUNSRVRTVEFURQkJKDEgPDwgMikJLyogTG9naWMgaXMgcmV0YWluZWQgKi8KKyNkZWZpbmUJCVBPV0VSU1RBVEVfT0ZGCQkweDMKKyNkZWZpbmUJCVBPV0VSU1RBVEVfUkVURU5USU9OCTB4MQorI2RlZmluZQkJUE9XRVJTVEFURV9PTgkJMHgwCisKKy8qIFBvd2VyIGRvbWFpbiBzdGF0ZSByZWdpc3RlciAqLworI2RlZmluZSBQTV9QV1NUU1RfT0ZGU0VUCQkweGU0CisKKy8qIEhhcmR3YXJlIHN1cGVydmlzZWQgc3RhdGUgdHJhbnNpdGlvbiBjb250cm9sIHJlZ2lzdGVyICovCisjZGVmaW5lIENNX0NMS1NUQ1RSTF9PRkZTRVQJCTB4NDgKKyNkZWZpbmUJCUFVVE9TVEFUX01QVQkJKDEgPDwgMCkJLyogTVBVICovCisjZGVmaW5lCQlBVVRPU1RBVF9EU1MJCSgxIDw8IDIpCS8qIENvcmUgKi8KKyNkZWZpbmUJCUFVVE9TVEFUX0w0CQkoMSA8PCAxKQkvKiBDb3JlICovCisjZGVmaW5lCQlBVVRPU1RBVF9MMwkJKDEgPDwgMCkJLyogQ29yZSAqLworI2RlZmluZQkJQVVUT1NUQVRfR0ZYCQkoMSA8PCAwKQkvKiBHRlggKi8KKyNkZWZpbmUJCUFVVE9TVEFUX0lWQQkJKDEgPDwgOCkJLyogMjQyMCBJVkEgaW4gRFNQIGRvbWFpbiAqLworI2RlZmluZQkJQVVUT1NUQVRfRFNQCQkoMSA8PCAwKQkvKiBEU1AgKi8KKyNkZWZpbmUJCUFVVE9TVEFUX01ETQkJKDEgPDwgMCkJLyogTURNICovCisKKy8qIEF1dG9tYXRpYyBjb250cm9sIG9mIGludGVyZmFjZSBjbG9jayBpZGxpbmcgKi8KKyNkZWZpbmUgQ01fQVVUT0lETEUxX09GRlNFVAkJMHgzMAorI2RlZmluZSBDTV9BVVRPSURMRTJfT0ZGU0VUCQkweDM0CQkvKiBDb3JlIG9ubHkgKi8KKyNkZWZpbmUgQ01fQVVUT0lETEUzX09GRlNFVAkJMHgzOAkJLyogQ29yZSBvbmx5ICovCisjZGVmaW5lIENNX0FVVE9JRExFNF9PRkZTRVQJCTB4M2MJCS8qIENvcmUgb25seSAqLworI2RlZmluZQkJQVVUT181NE0oeCkJCSgoKHgpICYgMHgzKSA8PCA2KQorI2RlZmluZQkJQVVUT185Nk0oeCkJCSgoKHgpICYgMHgzKSA8PCAyKQorI2RlZmluZQkJQVVUT19EUExMKHgpCQkoKCh4KSAmIDB4MykgPDwgMCkKKyNkZWZpbmUJCUFVVE9fU1RPUFBFRAkJMHgzCisjZGVmaW5lCQlBVVRPX0JZUEFTU19GQVNUCTB4MgkJLyogRFBMTCBvbmx5ICovCisjZGVmaW5lCQlBVVRPX0JZUEFTU19MT1dfUE9XRVIJMHgxCQkvKiBEUExMIG9ubHkgKi8KKyNkZWZpbmUJCUFVVE9fRElTQUJMRUQJCTB4MAorCisvKiBWb2x0YWdlIGNvbnRyb2wgUFJDTV9WT0xUQ1RSTCBiaXRzICovCisjZGVmaW5lCQlBVVRPX0VYVFZPTFQJCSgxIDw8IDE1KQorI2RlZmluZQkJRk9SQ0VfRVhUVk9MVAkJKDEgPDwgMTQpCisjZGVmaW5lCQlTRVRPRkZfTEVWRUwoeCkJCSgoKHgpICYgMHgzKSA8PCAxMikKKyNkZWZpbmUJCU1FTVJFVENUUkwJCSgxIDw8IDgpCisjZGVmaW5lCQlTRVRSRVRfTEVWRUwoeCkJCSgoKHgpICYgMHgzKSA8PCA2KQorI2RlZmluZQkJVk9MVF9MRVZFTCh4KQkJKCgoeCkgJiAweDMpIDw8IDApCisKKyNkZWZpbmUgT01BUDI0WFhfUFJDTV9WQkFTRQlJT19BRERSRVNTKE9NQVAyNFhYX1BSQ01fQkFTRSkKKyNkZWZpbmUgcHJjbV9yZWFkbChyKQkJX19yYXdfcmVhZGwoT01BUDI0WFhfUFJDTV9WQkFTRSArIChyKSkKKyNkZWZpbmUgcHJjbV93cml0ZWwodiwgcikJX19yYXdfd3JpdGVsKCh2KSwgT01BUDI0WFhfUFJDTV9WQkFTRSArIChyKSkKKworc3RhdGljIHUzMiBwbWRvbWFpbl9nZXRfd2FrZXVwX2RlcGVuZGVuY2llcyhpbnQgZG9tYWluX29mZnNldCkKK3sKKwlyZXR1cm4gcHJjbV9yZWFkbChkb21haW5fb2Zmc2V0ICsgUE1fV0tERVBfT0ZGU0VUKTsKK30KKworc3RhdGljIHZvaWQgcG1kb21haW5fc2V0X3dha2V1cF9kZXBlbmRlbmNpZXModTMyIHN0YXRlLCBpbnQgZG9tYWluX29mZnNldCkKK3sKKwlwcmNtX3dyaXRlbChzdGF0ZSwgZG9tYWluX29mZnNldCArIFBNX1dLREVQX09GRlNFVCk7Cit9CisKK3N0YXRpYyB1MzIgcG1kb21haW5fZ2V0X3Bvd2Vyc3RhdGUoaW50IGRvbWFpbl9vZmZzZXQpCit7CisJcmV0dXJuIHByY21fcmVhZGwoZG9tYWluX29mZnNldCArIFBNX1BXU1RDVFJMX09GRlNFVCk7Cit9CisKK3N0YXRpYyB2b2lkIHBtZG9tYWluX3NldF9wb3dlcnN0YXRlKHUzMiBzdGF0ZSwgaW50IGRvbWFpbl9vZmZzZXQpCit7CisJcHJjbV93cml0ZWwoc3RhdGUsIGRvbWFpbl9vZmZzZXQgKyBQTV9QV1NUQ1RSTF9PRkZTRVQpOworfQorCitzdGF0aWMgdTMyIHBtZG9tYWluX2dldF9jbG9ja19hdXRvY29udHJvbChpbnQgZG9tYWluX29mZnNldCkKK3sKKwlyZXR1cm4gcHJjbV9yZWFkbChkb21haW5fb2Zmc2V0ICsgQ01fQ0xLU1RDVFJMX09GRlNFVCk7Cit9CisKK3N0YXRpYyB2b2lkIHBtZG9tYWluX3NldF9jbG9ja19hdXRvY29udHJvbCh1MzIgc3RhdGUsIGludCBkb21haW5fb2Zmc2V0KQoreworCXByY21fd3JpdGVsKHN0YXRlLCBkb21haW5fb2Zmc2V0ICsgQ01fQ0xLU1RDVFJMX09GRlNFVCk7Cit9CisKK3N0YXRpYyB1MzIgcG1kb21haW5fZ2V0X2Nsb2NrX2F1dG9pZGxlMShpbnQgZG9tYWluX29mZnNldCkKK3sKKwlyZXR1cm4gcHJjbV9yZWFkbChkb21haW5fb2Zmc2V0ICsgQ01fQVVUT0lETEUxX09GRlNFVCk7Cit9CisKKy8qIENvcmUgZG9tYWluIG9ubHkgKi8KK3N0YXRpYyB1MzIgcG1kb21haW5fZ2V0X2Nsb2NrX2F1dG9pZGxlMihpbnQgZG9tYWluX29mZnNldCkKK3sKKwlyZXR1cm4gcHJjbV9yZWFkbChkb21haW5fb2Zmc2V0ICsgQ01fQVVUT0lETEUyX09GRlNFVCk7Cit9CisKKy8qIENvcmUgZG9tYWluIG9ubHkgKi8KK3N0YXRpYyB1MzIgcG1kb21haW5fZ2V0X2Nsb2NrX2F1dG9pZGxlMyhpbnQgZG9tYWluX29mZnNldCkKK3sKKwlyZXR1cm4gcHJjbV9yZWFkbChkb21haW5fb2Zmc2V0ICsgQ01fQVVUT0lETEUzX09GRlNFVCk7Cit9CisKKy8qIENvcmUgZG9tYWluIG9ubHkgKi8KK3N0YXRpYyB1MzIgcG1kb21haW5fZ2V0X2Nsb2NrX2F1dG9pZGxlNChpbnQgZG9tYWluX29mZnNldCkKK3sKKwlyZXR1cm4gcHJjbV9yZWFkbChkb21haW5fb2Zmc2V0ICsgQ01fQVVUT0lETEU0X09GRlNFVCk7Cit9CisKK3N0YXRpYyB2b2lkIHBtZG9tYWluX3NldF9jbG9ja19hdXRvaWRsZTEodTMyIHN0YXRlLCBpbnQgZG9tYWluX29mZnNldCkKK3sKKwlwcmNtX3dyaXRlbChzdGF0ZSwgQ01fQVVUT0lETEUxX09GRlNFVCArIGRvbWFpbl9vZmZzZXQpOworfQorCisvKiBDb3JlIGRvbWFpbiBvbmx5ICovCitzdGF0aWMgdm9pZCBwbWRvbWFpbl9zZXRfY2xvY2tfYXV0b2lkbGUyKHUzMiBzdGF0ZSwgaW50IGRvbWFpbl9vZmZzZXQpCit7CisJcHJjbV93cml0ZWwoc3RhdGUsIENNX0FVVE9JRExFMl9PRkZTRVQgKyBkb21haW5fb2Zmc2V0KTsKK30KKworLyogQ29yZSBkb21haW4gb25seSAqLworc3RhdGljIHZvaWQgcG1kb21haW5fc2V0X2Nsb2NrX2F1dG9pZGxlMyh1MzIgc3RhdGUsIGludCBkb21haW5fb2Zmc2V0KQoreworCXByY21fd3JpdGVsKHN0YXRlLCBDTV9BVVRPSURMRTNfT0ZGU0VUICsgZG9tYWluX29mZnNldCk7Cit9CisKKy8qIENvcmUgZG9tYWluIG9ubHkgKi8KK3N0YXRpYyB2b2lkIHBtZG9tYWluX3NldF9jbG9ja19hdXRvaWRsZTQodTMyIHN0YXRlLCBpbnQgZG9tYWluX29mZnNldCkKK3sKKwlwcmNtX3dyaXRlbChzdGF0ZSwgQ01fQVVUT0lETEU0X09GRlNFVCArIGRvbWFpbl9vZmZzZXQpOworfQorCisvKgorICogQ29uZmlndXJlcyBwb3dlciBtYW5hZ2VtZW50IGRvbWFpbnMgdG8gaWRsZSBjbG9ja3MgYXV0b21hdGljYWxseS4KKyAqLwordm9pZCBwbWRvbWFpbl9zZXRfYXV0b2lkbGUodm9pZCkKK3sKKwl1MzIgdmFsOworCisJLyogU2V0IFBMTCBhdXRvIHN0b3AgZm9yIDU0TSwgOTZNICYgRFBMTCAqLworCXBtZG9tYWluX3NldF9jbG9ja19hdXRvaWRsZTEoQVVUT181NE0oQVVUT19TVE9QUEVEKSB8CisJCQkJICAgICBBVVRPXzk2TShBVVRPX1NUT1BQRUQpIHwKKwkJCQkgICAgIEFVVE9fRFBMTChBVVRPX1NUT1BQRUQpLCBQTV9QTExfT0ZGU0VUKTsKKworCS8qIEV4dGVybmFsIGNsb2NrIGlucHV0IGNvbnRyb2wKKwkgKiBSRVZJU0lUOiBTaG91bGQgdGhpcyBiZSBpbiBjbG9jayBmcmFtZXdvcms/CisJICovCisJUFJDTV9DTEtTUkNfQ1RSTCB8PSAoMHgzIDw8IDMpOworCisJLyogQ29uZmlndXJlIG51bWJlciBvZiAzMktIeiBjbG9jayBjeWNsZXMgZm9yIHN5c19jbGsgKi8KKwlQUkNNX0NMS1NTRVRVUCA9IDB4MDBmZjsKKworCS8qIENvbmZpZ3VyZSBhdXRvbWF0aWMgdm9sdGFnZSB0cmFuc2l0aW9uICovCisJUFJDTV9WT0xUU0VUVVAgPSAwOworCXZhbCA9IFBSQ01fVk9MVENUUkw7CisJdmFsICY9IH4oU0VUT0ZGX0xFVkVMKDB4MykgfCBWT0xUX0xFVkVMKDB4MykpOworCXZhbCB8PSBTRVRPRkZfTEVWRUwoMSkgfCBWT0xUX0xFVkVMKDEpIHwgQVVUT19FWFRWT0xUOworCVBSQ01fVk9MVENUUkwgPSB2YWw7CisKKwkvKiBEaXNhYmxlIGVtdWxhdGlvbiB0b29scyBmdW5jdGlvbmFsIGNsb2NrICovCisJUFJDTV9DTEtFTVVMX0NUUkwgPSAweDA7CisKKwkvKiBTZXQgY29yZSBtZW1vcnkgcmV0ZW50aW9uIHN0YXRlICovCisJdmFsID0gcG1kb21haW5fZ2V0X3Bvd2Vyc3RhdGUoUE1fQ09SRV9PRkZTRVQpOworCWlmIChjcHVfaXNfb21hcDI0MjAoKSkgeworCQl2YWwgJj0gfigweDcgPDwgMyk7CisJCXZhbCB8PSAoTUVNM1JFVFNUQVRFIHwgTUVNMlJFVFNUQVRFIHwgTUVNMVJFVFNUQVRFKTsKKwl9IGVsc2UgeworCQl2YWwgJj0gfigweGYgPDwgMyk7CisJCXZhbCB8PSAoTUVNNFJFVFNUQVRFIHwgTUVNM1JFVFNUQVRFIHwgTUVNMlJFVFNUQVRFIHwKKwkJCU1FTTFSRVRTVEFURSk7CisJfQorCXBtZG9tYWluX3NldF9wb3dlcnN0YXRlKHZhbCwgUE1fQ09SRV9PRkZTRVQpOworCisJLyogT0NQIGludGVyZmFjZSBzbWFydCBpZGxlLiBSRVZJU0lUOiBFbmFibGUgYXV0b2lkbGUgYml0MCA/ICovCisJdmFsID0gU01TX1NZU0NPTkZJRzsKKwl2YWwgJj0gfigweDMgPDwgMyk7CisJdmFsIHw9ICgweDIgPDwgMykgfCAoMSA8PCAwKTsKKwlTTVNfU1lTQ09ORklHIHw9IHZhbDsKKworCXZhbCA9IFNEUkNfU1lTQ09ORklHOworCXZhbCAmPSB+KDB4MyA8PCAzKTsKKwl2YWwgfD0gKDB4MiA8PCAzKTsKKwlTRFJDX1NZU0NPTkZJRyA9IHZhbDsKKworCS8qIENvbmZpZ3VyZSBMMyBpbnRlcmZhY2UgZm9yIHNtYXJ0IGlkbGUuCisJICogUkVWSVNJVDogRW5hYmxlIGF1dG9pZGxlIGJpdDAgPworCSAqLworCXZhbCA9IEdQTUNfU1lTQ09ORklHOworCXZhbCAmPSB+KDB4MyA8PCAzKTsKKwl2YWwgfD0gKDB4MiA8PCAzKSB8ICgxIDw8IDApOworCUdQTUNfU1lTQ09ORklHID0gdmFsOworCisJcG1kb21haW5fc2V0X3Bvd2Vyc3RhdGUoTE9HSUNSRVRTVEFURSB8IFBPV0VSU1RBVEVfUkVURU5USU9OLAorCQkJCVBNX01QVV9PRkZTRVQpOworCXBtZG9tYWluX3NldF9wb3dlcnN0YXRlKFBPV0VSU1RBVEVfUkVURU5USU9OLCBQTV9DT1JFX09GRlNFVCk7CisJaWYgKCFjcHVfaXNfb21hcDI0MjAoKSkKKwkJcG1kb21haW5fc2V0X3Bvd2Vyc3RhdGUoUE9XRVJTVEFURV9SRVRFTlRJT04sIFBNX01ETV9PRkZTRVQpOworCisJLyogQXNzdW1lIHN1c3BlbmQgZnVuY3Rpb24gaGFzIHNhdmVkIHRoZSBzdGF0ZSBmb3IgRFNQIGFuZCBHRlggKi8KKwlwbWRvbWFpbl9zZXRfcG93ZXJzdGF0ZShGT1JDRVNUQVRFIHwgUE9XRVJTVEFURV9PRkYsIFBNX0RTUF9PRkZTRVQpOworCXBtZG9tYWluX3NldF9wb3dlcnN0YXRlKEZPUkNFU1RBVEUgfCBQT1dFUlNUQVRFX09GRiwgUE1fR0ZYX09GRlNFVCk7CisKKyNpZiAwCisJLyogUkVWSVNJVDogSW50ZXJuYWwgVVNCIG5lZWRzIHNwZWNpYWwgaGFuZGxpbmcgKi8KKwlmb3JjZV9zdGFuZGJ5X3VzYigpOworCWlmIChjcHVfaXNfb21hcDI0MzAoKSkKKwkJZm9yY2VfaHNtbWMoKTsKKwlzZHJhbV9zZWxmX3JlZnJlc2hfb25faWRsZV9yZXEoMSk7CisjZW5kaWYKKworCS8qIEVuYWJsZSBjbG9jayBhdXRvIGNvbnRyb2wgZm9yIGFsbCBkb21haW5zLgorCSAqIE5vdGUgdGhhdCBDT1JFIGRvbWFpbiBpbmNsdWRlcyBhbHNvIERTUywgTDQgJiBMMy4KKwkgKi8KKwlwbWRvbWFpbl9zZXRfY2xvY2tfYXV0b2NvbnRyb2woQVVUT1NUQVRfTVBVLCBQTV9NUFVfT0ZGU0VUKTsKKwlwbWRvbWFpbl9zZXRfY2xvY2tfYXV0b2NvbnRyb2woQVVUT1NUQVRfR0ZYLCBQTV9HRlhfT0ZGU0VUKTsKKwlwbWRvbWFpbl9zZXRfY2xvY2tfYXV0b2NvbnRyb2woQVVUT1NUQVRfRFNTIHwgQVVUT1NUQVRfTDQgfCBBVVRPU1RBVF9MMywKKwkJCQkgICAgICAgUE1fQ09SRV9PRkZTRVQpOworCWlmIChjcHVfaXNfb21hcDI0MjAoKSkKKwkJcG1kb21haW5fc2V0X2Nsb2NrX2F1dG9jb250cm9sKEFVVE9TVEFUX0lWQSB8IEFVVE9TVEFUX0RTUCwKKwkJCQkJICAgICAgIFBNX0RTUF9PRkZTRVQpOworCWVsc2UgeworCQlwbWRvbWFpbl9zZXRfY2xvY2tfYXV0b2NvbnRyb2woQVVUT1NUQVRfRFNQLCBQTV9EU1BfT0ZGU0VUKTsKKwkJcG1kb21haW5fc2V0X2Nsb2NrX2F1dG9jb250cm9sKEFVVE9TVEFUX01ETSwgUE1fTURNX09GRlNFVCk7CisJfQorCisJLyogRW5hYmxlIGNsb2NrIGF1dG9pZGxlIGZvciBhbGwgZG9tYWlucyAqLworCXBtZG9tYWluX3NldF9jbG9ja19hdXRvaWRsZTEoMHgyLCBQTV9EU1BfT0ZGU0VUKTsKKwlpZiAoY3B1X2lzX29tYXAyNDIwKCkpIHsKKwkJcG1kb21haW5fc2V0X2Nsb2NrX2F1dG9pZGxlMSgweGZmZmZmZmY5LCBQTV9DT1JFX09GRlNFVCk7CisJCXBtZG9tYWluX3NldF9jbG9ja19hdXRvaWRsZTIoMHg3LCBQTV9DT1JFX09GRlNFVCk7CisJCXBtZG9tYWluX3NldF9jbG9ja19hdXRvaWRsZTEoMHgzZiwgUE1fV0tVUF9PRkZTRVQpOworCX0gZWxzZSB7CisJCXBtZG9tYWluX3NldF9jbG9ja19hdXRvaWRsZTEoMHhlYWZmZmZmMSwgUE1fQ09SRV9PRkZTRVQpOworCQlwbWRvbWFpbl9zZXRfY2xvY2tfYXV0b2lkbGUyKDB4ZmZmLCBQTV9DT1JFX09GRlNFVCk7CisJCXBtZG9tYWluX3NldF9jbG9ja19hdXRvaWRsZTEoMHg3ZiwgUE1fV0tVUF9PRkZTRVQpOworCQlwbWRvbWFpbl9zZXRfY2xvY2tfYXV0b2lkbGUxKDB4MywgUE1fTURNX09GRlNFVCk7CisJfQorCXBtZG9tYWluX3NldF9jbG9ja19hdXRvaWRsZTMoMHg3LCBQTV9DT1JFX09GRlNFVCk7CisJcG1kb21haW5fc2V0X2Nsb2NrX2F1dG9pZGxlNCgweDFmLCBQTV9DT1JFX09GRlNFVCk7Cit9CisKKy8qCisgKiBJbml0aWFsaXplcyBwb3dlciBkb21haW5zIGJ5IHJlbW92aW5nIHdha2UtdXAgZGVwZW5kZW5jaWVzIGFuZCBwb3dlcmluZworICogZG93biBEU1AgYW5kIEdGWC4gR2V0cyBjYWxsZWQgZnJvbSBQTSBpbml0LiBOb3RlIHRoYXQgRFNQIGFuZCBJVkEgY29kZQorICogbXVzdCByZS1lbmFibGUgRFNQIGFuZCBHRlggd2hlbiB1c2VkLgorICovCit2b2lkIF9faW5pdCBwbWRvbWFpbl9pbml0KHZvaWQpCit7CisJLyogUmVtb3ZlIGFsbCBkb21haW4gd2FrZXVwIGRlcGVuZGVuY2llcyAqLworCXBtZG9tYWluX3NldF93YWtldXBfZGVwZW5kZW5jaWVzKEVOX1dLVVAgfCBFTl9DT1JFLCBQTV9NUFVfT0ZGU0VUKTsKKwlwbWRvbWFpbl9zZXRfd2FrZXVwX2RlcGVuZGVuY2llcygwLCBQTV9EU1BfT0ZGU0VUKTsKKwlwbWRvbWFpbl9zZXRfd2FrZXVwX2RlcGVuZGVuY2llcygwLCBQTV9HRlhfT0ZGU0VUKTsKKwlwbWRvbWFpbl9zZXRfd2FrZXVwX2RlcGVuZGVuY2llcyhFTl9XS1VQIHwgRU5fTVBVLCBQTV9DT1JFX09GRlNFVCk7CisJaWYgKGNwdV9pc19vbWFwMjQzMCgpKQorCQlwbWRvbWFpbl9zZXRfd2FrZXVwX2RlcGVuZGVuY2llcygwLCBQTV9NRE1fT0ZGU0VUKTsKKworCS8qIFBvd2VyIGRvd24gRFNQIGFuZCBHRlggKi8KKwlwbWRvbWFpbl9zZXRfcG93ZXJzdGF0ZShQT1dFUlNUQVRFX09GRiB8IEZPUkNFU1RBVEUsIFBNX0RTUF9PRkZTRVQpOworCXBtZG9tYWluX3NldF9wb3dlcnN0YXRlKFBPV0VSU1RBVEVfT0ZGIHwgRk9SQ0VTVEFURSwgUE1fR0ZYX09GRlNFVCk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL3BtLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL3BtLmMKaW5kZXggNTYyMTY4Zi4uZDdlZWU5OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9wbS5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvcG0uYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgogI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KIAogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9pcnEuaD4KQEAgLTM2LDExICszNywxOCBAQAogI2luY2x1ZGUgPGFzbS9hcmNoL3NyYW0uaD4KICNpbmNsdWRlIDxhc20vYXJjaC9wbS5oPgogCisjaW5jbHVkZSAicHJjbS1yZWdzLmgiCisKIHN0YXRpYyBzdHJ1Y3QgY2xrICp2Y2xrOwogc3RhdGljIHZvaWQgKCpvbWFwMl9zcmFtX2lkbGUpKHZvaWQpOwogc3RhdGljIHZvaWQgKCpvbWFwMl9zcmFtX3N1c3BlbmQpKGludCBkbGxjdHJsLCBpbnQgY3B1X3Jldik7CiBzdGF0aWMgdm9pZCAoKnNhdmVkX2lkbGUpKHZvaWQpOwogCitleHRlcm4gdm9pZCBfX2luaXQgcG1kb21haW5faW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIHBtZG9tYWluX3NldF9hdXRvaWRsZSh2b2lkKTsKKworc3RhdGljIHVuc2lnbmVkIGludCBvbWFwMjR4eF9zbGVlcF9zYXZlW09NQVAyNFhYX1NMRUVQX1NBVkVfU0laRV07CisKIHZvaWQgb21hcDJfcG1faWRsZSh2b2lkKQogewogCWxvY2FsX2lycV9kaXNhYmxlKCk7CkBAIC04NywyMyArOTUsMjcyIEBACiAJcmV0dXJuIGVycm9yOwogfQogCisjZGVmaW5lIElOVDBfV0FLRV9NQVNLCShPTUFQX0lSUV9CSVQoSU5UXzI0WFhfR1BJT19CQU5LMSkgfAlcCisJCQlPTUFQX0lSUV9CSVQoSU5UXzI0WFhfR1BJT19CQU5LMikgfAlcCisJCQlPTUFQX0lSUV9CSVQoSU5UXzI0WFhfR1BJT19CQU5LMykpCisKKyNkZWZpbmUgSU5UMV9XQUtFX01BU0sJKE9NQVBfSVJRX0JJVChJTlRfMjRYWF9HUElPX0JBTks0KSkKKworI2RlZmluZSBJTlQyX1dBS0VfTUFTSwkoT01BUF9JUlFfQklUKElOVF8yNFhYX1VBUlQxX0lSUSkgfAlcCisJCQlPTUFQX0lSUV9CSVQoSU5UXzI0WFhfVUFSVDJfSVJRKSB8CVwKKwkJCU9NQVBfSVJRX0JJVChJTlRfMjRYWF9VQVJUM19JUlEpKQorCisjZGVmaW5lIHByZWcocmVnKQlwcmludGsoIiVzXHQoMHglcCk6XHQweCUwOHhcbiIsICNyZWcsICZyZWcsIHJlZyk7CisKK3N0YXRpYyB2b2lkIG9tYXAyX3BtX2RlYnVnKGNoYXIgKiBkZXNjKQoreworCXByaW50aygiJXM6XG4iLCBkZXNjKTsKKworCXByZWcoQ01fQ0xLU1RDVFJMX01QVSk7CisJcHJlZyhDTV9DTEtTVENUUkxfQ09SRSk7CisJcHJlZyhDTV9DTEtTVENUUkxfR0ZYKTsKKwlwcmVnKENNX0NMS1NUQ1RSTF9EU1ApOworCXByZWcoQ01fQ0xLU1RDVFJMX01ETSk7CisKKwlwcmVnKFBNX1BXU1RDVFJMX01QVSk7CisJcHJlZyhQTV9QV1NUQ1RSTF9DT1JFKTsKKwlwcmVnKFBNX1BXU1RDVFJMX0dGWCk7CisJcHJlZyhQTV9QV1NUQ1RSTF9EU1ApOworCXByZWcoUE1fUFdTVENUUkxfTURNKTsKKworCXByZWcoUE1fUFdTVFNUX01QVSk7CisJcHJlZyhQTV9QV1NUU1RfQ09SRSk7CisJcHJlZyhQTV9QV1NUU1RfR0ZYKTsKKwlwcmVnKFBNX1BXU1RTVF9EU1ApOworCXByZWcoUE1fUFdTVFNUX01ETSk7CisKKwlwcmVnKENNX0FVVE9JRExFMV9DT1JFKTsKKwlwcmVnKENNX0FVVE9JRExFMl9DT1JFKTsKKwlwcmVnKENNX0FVVE9JRExFM19DT1JFKTsKKwlwcmVnKENNX0FVVE9JRExFNF9DT1JFKTsKKwlwcmVnKENNX0FVVE9JRExFX1dLVVApOworCXByZWcoQ01fQVVUT0lETEVfUExMKTsKKwlwcmVnKENNX0FVVE9JRExFX0RTUCk7CisJcHJlZyhDTV9BVVRPSURMRV9NRE0pOworCisJcHJlZyhDTV9JQ0xLRU4xX0NPUkUpOworCXByZWcoQ01fSUNMS0VOMl9DT1JFKTsKKwlwcmVnKENNX0lDTEtFTjNfQ09SRSk7CisJcHJlZyhDTV9JQ0xLRU40X0NPUkUpOworCXByZWcoQ01fSUNMS0VOX0dGWCk7CisJcHJlZyhDTV9JQ0xLRU5fV0tVUCk7CisJcHJlZyhDTV9JQ0xLRU5fRFNQKTsKKwlwcmVnKENNX0lDTEtFTl9NRE0pOworCisJcHJlZyhDTV9JRExFU1QxX0NPUkUpOworCXByZWcoQ01fSURMRVNUMl9DT1JFKTsKKwlwcmVnKENNX0lETEVTVDNfQ09SRSk7CisJcHJlZyhDTV9JRExFU1Q0X0NPUkUpOworCXByZWcoQ01fSURMRVNUX0dGWCk7CisJcHJlZyhDTV9JRExFU1RfV0tVUCk7CisJcHJlZyhDTV9JRExFU1RfQ0tHRU4pOworCXByZWcoQ01fSURMRVNUX0RTUCk7CisJcHJlZyhDTV9JRExFU1RfTURNKTsKKworCXByZWcoUk1fUlNUU1RfTVBVKTsKKwlwcmVnKFJNX1JTVFNUX0dGWCk7CisJcHJlZyhSTV9SU1RTVF9XS1VQKTsKKwlwcmVnKFJNX1JTVFNUX0RTUCk7CisJcHJlZyhSTV9SU1RTVF9NRE0pOworCisJcHJlZyhQTV9XS0RFUF9NUFUpOworCXByZWcoUE1fV0tERVBfQ09SRSk7CisJcHJlZyhQTV9XS0RFUF9HRlgpOworCXByZWcoUE1fV0tERVBfRFNQKTsKKwlwcmVnKFBNX1dLREVQX01ETSk7CisKKwlwcmVnKENNX0ZDTEtFTl9XS1VQKTsKKwlwcmVnKENNX0lDTEtFTl9XS1VQKTsKKwlwcmVnKENNX0lETEVTVF9XS1VQKTsKKwlwcmVnKENNX0FVVE9JRExFX1dLVVApOworCXByZWcoQ01fQ0xLU0VMX1dLVVApOworCisJcHJlZyhQTV9XS0VOX1dLVVApOworCXByZWcoUE1fV0tTVF9XS1VQKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIG9tYXAyX3BtX3NhdmVfcmVnaXN0ZXJzKHZvaWQpCit7CisJLyogU2F2ZSBpbnRlcnJ1cHQgcmVnaXN0ZXJzICovCisJT01BUDI0WFhfU0FWRShJTlRDX01JUjApOworCU9NQVAyNFhYX1NBVkUoSU5UQ19NSVIxKTsKKwlPTUFQMjRYWF9TQVZFKElOVENfTUlSMik7CisKKwkvKiBTYXZlIHBvd2VyIGNvbnRyb2wgcmVnaXN0ZXJzICovCisJT01BUDI0WFhfU0FWRShDTV9DTEtTVENUUkxfTVBVKTsKKwlPTUFQMjRYWF9TQVZFKENNX0NMS1NUQ1RSTF9DT1JFKTsKKwlPTUFQMjRYWF9TQVZFKENNX0NMS1NUQ1RSTF9HRlgpOworCU9NQVAyNFhYX1NBVkUoQ01fQ0xLU1RDVFJMX0RTUCk7CisJT01BUDI0WFhfU0FWRShDTV9DTEtTVENUUkxfTURNKTsKKworCS8qIFNhdmUgcG93ZXIgc3RhdGUgcmVnaXN0ZXJzICovCisJT01BUDI0WFhfU0FWRShQTV9QV1NUQ1RSTF9NUFUpOworCU9NQVAyNFhYX1NBVkUoUE1fUFdTVENUUkxfQ09SRSk7CisJT01BUDI0WFhfU0FWRShQTV9QV1NUQ1RSTF9HRlgpOworCU9NQVAyNFhYX1NBVkUoUE1fUFdTVENUUkxfRFNQKTsKKwlPTUFQMjRYWF9TQVZFKFBNX1BXU1RDVFJMX01ETSk7CisKKwkvKiBTYXZlIGF1dG9pZGxlIHJlZ2lzdGVycyAqLworCU9NQVAyNFhYX1NBVkUoQ01fQVVUT0lETEUxX0NPUkUpOworCU9NQVAyNFhYX1NBVkUoQ01fQVVUT0lETEUyX0NPUkUpOworCU9NQVAyNFhYX1NBVkUoQ01fQVVUT0lETEUzX0NPUkUpOworCU9NQVAyNFhYX1NBVkUoQ01fQVVUT0lETEU0X0NPUkUpOworCU9NQVAyNFhYX1NBVkUoQ01fQVVUT0lETEVfV0tVUCk7CisJT01BUDI0WFhfU0FWRShDTV9BVVRPSURMRV9QTEwpOworCU9NQVAyNFhYX1NBVkUoQ01fQVVUT0lETEVfRFNQKTsKKwlPTUFQMjRYWF9TQVZFKENNX0FVVE9JRExFX01ETSk7CisKKwkvKiBTYXZlIGlkbGUgc3RhdGUgcmVnaXN0ZXJzICovCisJT01BUDI0WFhfU0FWRShDTV9JRExFU1QxX0NPUkUpOworCU9NQVAyNFhYX1NBVkUoQ01fSURMRVNUMl9DT1JFKTsKKwlPTUFQMjRYWF9TQVZFKENNX0lETEVTVDNfQ09SRSk7CisJT01BUDI0WFhfU0FWRShDTV9JRExFU1Q0X0NPUkUpOworCU9NQVAyNFhYX1NBVkUoQ01fSURMRVNUX0dGWCk7CisJT01BUDI0WFhfU0FWRShDTV9JRExFU1RfV0tVUCk7CisJT01BUDI0WFhfU0FWRShDTV9JRExFU1RfQ0tHRU4pOworCU9NQVAyNFhYX1NBVkUoQ01fSURMRVNUX0RTUCk7CisJT01BUDI0WFhfU0FWRShDTV9JRExFU1RfTURNKTsKKworCS8qIFNhdmUgY2xvY2sgcmVnaXN0ZXJzICovCisJT01BUDI0WFhfU0FWRShDTV9GQ0xLRU4xX0NPUkUpOworCU9NQVAyNFhYX1NBVkUoQ01fRkNMS0VOMl9DT1JFKTsKKwlPTUFQMjRYWF9TQVZFKENNX0lDTEtFTjFfQ09SRSk7CisJT01BUDI0WFhfU0FWRShDTV9JQ0xLRU4yX0NPUkUpOworCU9NQVAyNFhYX1NBVkUoQ01fSUNMS0VOM19DT1JFKTsKKwlPTUFQMjRYWF9TQVZFKENNX0lDTEtFTjRfQ09SRSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBvbWFwMl9wbV9yZXN0b3JlX3JlZ2lzdGVycyh2b2lkKQoreworCS8qIFJlc3RvcmUgY2xvY2sgc3RhdGUgcmVnaXN0ZXJzICovCisJT01BUDI0WFhfUkVTVE9SRShDTV9DTEtTVENUUkxfTVBVKTsKKwlPTUFQMjRYWF9SRVNUT1JFKENNX0NMS1NUQ1RSTF9DT1JFKTsKKwlPTUFQMjRYWF9SRVNUT1JFKENNX0NMS1NUQ1RSTF9HRlgpOworCU9NQVAyNFhYX1JFU1RPUkUoQ01fQ0xLU1RDVFJMX0RTUCk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9DTEtTVENUUkxfTURNKTsKKworCS8qIFJlc3RvcmUgcG93ZXIgc3RhdGUgcmVnaXN0ZXJzICovCisJT01BUDI0WFhfUkVTVE9SRShQTV9QV1NUQ1RSTF9NUFUpOworCU9NQVAyNFhYX1JFU1RPUkUoUE1fUFdTVENUUkxfQ09SRSk7CisJT01BUDI0WFhfUkVTVE9SRShQTV9QV1NUQ1RSTF9HRlgpOworCU9NQVAyNFhYX1JFU1RPUkUoUE1fUFdTVENUUkxfRFNQKTsKKwlPTUFQMjRYWF9SRVNUT1JFKFBNX1BXU1RDVFJMX01ETSk7CisKKwkvKiBSZXN0b3JlIGlkbGUgc3RhdGUgcmVnaXN0ZXJzICovCisJT01BUDI0WFhfUkVTVE9SRShDTV9JRExFU1QxX0NPUkUpOworCU9NQVAyNFhYX1JFU1RPUkUoQ01fSURMRVNUMl9DT1JFKTsKKwlPTUFQMjRYWF9SRVNUT1JFKENNX0lETEVTVDNfQ09SRSk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9JRExFU1Q0X0NPUkUpOworCU9NQVAyNFhYX1JFU1RPUkUoQ01fSURMRVNUX0dGWCk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9JRExFU1RfV0tVUCk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9JRExFU1RfQ0tHRU4pOworCU9NQVAyNFhYX1JFU1RPUkUoQ01fSURMRVNUX0RTUCk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9JRExFU1RfTURNKTsKKworCS8qIFJlc3RvcmUgYXV0b2lkbGUgcmVnaXN0ZXJzICovCisJT01BUDI0WFhfUkVTVE9SRShDTV9BVVRPSURMRTFfQ09SRSk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9BVVRPSURMRTJfQ09SRSk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9BVVRPSURMRTNfQ09SRSk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9BVVRPSURMRTRfQ09SRSk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9BVVRPSURMRV9XS1VQKTsKKwlPTUFQMjRYWF9SRVNUT1JFKENNX0FVVE9JRExFX1BMTCk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9BVVRPSURMRV9EU1ApOworCU9NQVAyNFhYX1JFU1RPUkUoQ01fQVVUT0lETEVfTURNKTsKKworCS8qIFJlc3RvcmUgY2xvY2sgcmVnaXN0ZXJzICovCisJT01BUDI0WFhfUkVTVE9SRShDTV9GQ0xLRU4xX0NPUkUpOworCU9NQVAyNFhYX1JFU1RPUkUoQ01fRkNMS0VOMl9DT1JFKTsKKwlPTUFQMjRYWF9SRVNUT1JFKENNX0lDTEtFTjFfQ09SRSk7CisJT01BUDI0WFhfUkVTVE9SRShDTV9JQ0xLRU4yX0NPUkUpOworCU9NQVAyNFhYX1JFU1RPUkUoQ01fSUNMS0VOM19DT1JFKTsKKwlPTUFQMjRYWF9SRVNUT1JFKENNX0lDTEtFTjRfQ09SRSk7CisKKwkvKiBSRVZJU0lUOiBDbGVhciBpbnRlcnJ1cHRzIGhlcmUgKi8KKworCS8qIFJlc3RvcmUgaW50ZXJydXB0IHJlZ2lzdGVycyAqLworCU9NQVAyNFhYX1JFU1RPUkUoSU5UQ19NSVIwKTsKKwlPTUFQMjRYWF9SRVNUT1JFKElOVENfTUlSMSk7CisJT01BUDI0WFhfUkVTVE9SRShJTlRDX01JUjIpOworfQorCitzdGF0aWMgaW50IG9tYXAyX3BtX3N1c3BlbmQodm9pZCkKK3sKKwlpbnQgcHJvY2Vzc29yX3R5cGUgPSAwOworCisJLyogUkVWSVNJVDogMHgyMSBvciAweDI2PyAqLworCWlmIChjcHVfaXNfb21hcDI0MjAoKSkKKwkJcHJvY2Vzc29yX3R5cGUgPSAweDIxOworCisJaWYgKCFwcm9jZXNzb3JfdHlwZSkKKwkJcmV0dXJuIC1FTk9UU1VQUDsKKworCWxvY2FsX2lycV9kaXNhYmxlKCk7CisJbG9jYWxfZmlxX2Rpc2FibGUoKTsKKworCW9tYXAyX3BtX3NhdmVfcmVnaXN0ZXJzKCk7CisKKwkvKiBEaXNhYmxlIGludGVycnVwdHMgZXhjZXB0IGZvciB0aGUgd2FrZSBldmVudHMgKi8KKwlJTlRDX01JUl9TRVQwID0gMHhmZmZmZmZmZiAmIH5JTlQwX1dBS0VfTUFTSzsKKwlJTlRDX01JUl9TRVQxID0gMHhmZmZmZmZmZiAmIH5JTlQxX1dBS0VfTUFTSzsKKwlJTlRDX01JUl9TRVQyID0gMHhmZmZmZmZmZiAmIH5JTlQyX1dBS0VfTUFTSzsKKworCXBtZG9tYWluX3NldF9hdXRvaWRsZSgpOworCisJLyogQ2xlYXIgb2xkIHdha2UtdXAgZXZlbnRzICovCisJUE1fV0tTVDFfQ09SRSA9IDA7CisJUE1fV0tTVDJfQ09SRSA9IDA7CisJUE1fV0tTVF9XS1VQID0gMDsKKworCS8qIEVuYWJsZSB3YWtlLXVwIGV2ZW50cyAqLworCVBNX1dLRU4xX0NPUkUgPSAoMSA8PCAyMikgfCAoMSA8PCAyMSk7CS8qIFVBUlQxICYgMiAqLworCVBNX1dLRU4yX0NPUkUgPSAoMSA8PCAyKTsJCS8qIFVBUlQzICovCisJUE1fV0tFTl9XS1VQID0gKDEgPDwgMikgfCAoMSA8PCAwKTsJLyogR1BJTyAmIEdQVDEgKi8KKworCS8qIERpc2FibGUgY2xvY2tzIGV4Y2VwdCBmb3IgQ01fSUNMS0VOMl9DT1JFLiBJdCBnZXRzIGRpc2FibGVkCisJICogaW4gdGhlIFNSQU0gc3VzcGVuZCBjb2RlICovCisJQ01fRkNMS0VOMV9DT1JFID0gMDsKKwlDTV9GQ0xLRU4yX0NPUkUgPSAwOworCUNNX0lDTEtFTjFfQ09SRSA9IDA7CisJQ01fSUNMS0VOM19DT1JFID0gMDsKKwlDTV9JQ0xLRU40X0NPUkUgPSAwOworCisJb21hcDJfcG1fZGVidWcoIlN0YXR1cyBiZWZvcmUgc3VzcGVuZCIpOworCisJLyogTXVzdCB3YWl0IGZvciBzZXJpYWwgYnVmZmVycyB0byBjbGVhciAqLworCW1kZWxheSgyMDApOworCisJLyogSnVtcCB0byBTUkFNIHN1c3BlbmQgY29kZQorCSAqIFJFVklTSVQ6IFdoZW4gaXMgdGhpcyBTRFJDX0RMTEJfQ1RSTD8KKwkgKi8KKwlvbWFwMl9zcmFtX3N1c3BlbmQoU0RSQ19ETExBX0NUUkwsIHByb2Nlc3Nvcl90eXBlKTsKKworCS8qIEJhY2sgZnJvbSBzbGVlcCAqLworCW9tYXAyX3BtX3Jlc3RvcmVfcmVnaXN0ZXJzKCk7CisKKwlsb2NhbF9maXFfZW5hYmxlKCk7CisJbG9jYWxfaXJxX2VuYWJsZSgpOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgb21hcDJfcG1fZW50ZXIoc3VzcGVuZF9zdGF0ZV90IHN0YXRlKQogeworCWludCByZXQgPSAwOworCiAJc3dpdGNoIChzdGF0ZSkKIAl7CiAJY2FzZSBQTV9TVVNQRU5EX1NUQU5EQlk6CiAJY2FzZSBQTV9TVVNQRU5EX01FTToKLQkJLyogRklYTUU6IEFkZCBzdXNwZW5kICovCisJCXJldCA9IG9tYXAyX3BtX3N1c3BlbmQoKTsKIAkJYnJlYWs7Ci0KIAljYXNlIFBNX1NVU1BFTkRfRElTSzoKLQkJcmV0dXJuIC1FTk9UU1VQUDsKLQorCQlyZXQgPSAtRU5PVFNVUFA7CisJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCXJldHVybiAtRUlOVkFMOworCQlyZXQgPSAtRUlOVkFMOwogCX0KIAotCXJldHVybiAwOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgb21hcDJfcG1fZmluaXNoKHN1c3BlbmRfc3RhdGVfdCBzdGF0ZSkKQEAgLTE0Myw2ICs0MDAsOCBAQAogCXBtX3NldF9vcHMoJm9tYXBfcG1fb3BzKTsKIAlwbV9pZGxlID0gb21hcDJfcG1faWRsZTsKIAorCXBtZG9tYWluX2luaXQoKTsKKwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL3RpbWVyLWdwLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL3RpbWVyLWdwLmMKaW5kZXggMWQyZjVhYy4uY2Y3OGU2YyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi90aW1lci1ncC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvdGltZXItZ3AuYwpAQCAtNiw2ICs2LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNSBOb2tpYSBDb3Jwb3JhdGlvbgogICogQXV0aG9yOiBQYXVsIE11bmR0IDxwYXVsLm11bmR0QG5va2lhLmNvbT4KICAqICAgICAgICAgSnVoYSBZcmr2bOQgPGp1aGEueXJqb2xhQG5va2lhLmNvbT4KKyAqIE9NQVAgRHVhbC1tb2RlIHRpbWVyIGZyYW1ld29yayBzdXBwb3J0IGJ5IFRpbW8gVGVyYXMKICAqCiAgKiBTb21lIHBhcnRzIGJhc2VkIG9mZiBvZiBUSSdzIDI0eHggY29kZToKICAqCkBAIC0yMiw1NCArMjMsMTggQEAKICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KICNpbmNsdWRlIDxsaW51eC9lcnIuaD4KICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogCiAjaW5jbHVkZSA8YXNtL21hY2gvdGltZS5oPgotI2luY2x1ZGUgPGFzbS9kZWxheS5oPgotI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2RtdGltZXIuaD4KIAotI2RlZmluZSBPTUFQMl9HUF9USU1FUjFfQkFTRQkweDQ4MDI4MDAwCi0jZGVmaW5lIE9NQVAyX0dQX1RJTUVSMl9CQVNFCTB4NDgwMmEwMDAKLSNkZWZpbmUgT01BUDJfR1BfVElNRVIzX0JBU0UJMHg0ODA3ODAwMAotI2RlZmluZSBPTUFQMl9HUF9USU1FUjRfQkFTRQkweDQ4MDdhMDAwCitzdGF0aWMgc3RydWN0IG9tYXBfZG1fdGltZXIgKmdwdGltZXI7CiAKLSNkZWZpbmUgR1BfVElNRVJfVElEUgkJMHgwMAotI2RlZmluZSBHUF9USU1FUl9USVNSCQkweDE4Ci0jZGVmaW5lIEdQX1RJTUVSX1RJRVIJCTB4MWMKLSNkZWZpbmUgR1BfVElNRVJfVENMUgkJMHgyNAotI2RlZmluZSBHUF9USU1FUl9UQ1JSCQkweDI4Ci0jZGVmaW5lIEdQX1RJTUVSX1RMRFIJCTB4MmMKLSNkZWZpbmUgR1BfVElNRVJfVFNJQ1IJCTB4NDAKLQotI2RlZmluZSBPU19USU1FUl9OUgkJMSAgLyogR1AgdGltZXIgMiAqLwotCi1zdGF0aWMgdW5zaWduZWQgbG9uZyB0aW1lcl9iYXNlW10gPSB7Ci0JSU9fQUREUkVTUyhPTUFQMl9HUF9USU1FUjFfQkFTRSksCi0JSU9fQUREUkVTUyhPTUFQMl9HUF9USU1FUjJfQkFTRSksCi0JSU9fQUREUkVTUyhPTUFQMl9HUF9USU1FUjNfQkFTRSksCi0JSU9fQUREUkVTUyhPTUFQMl9HUF9USU1FUjRfQkFTRSksCi19OwotCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCB0aW1lcl9yZWFkX3JlZyhpbnQgbnIsIHVuc2lnbmVkIGludCByZWcpCitzdGF0aWMgaW5saW5lIHZvaWQgb21hcDJfZ3BfdGltZXJfc3RhcnQodW5zaWduZWQgbG9uZyBsb2FkX3ZhbCkKIHsKLQlyZXR1cm4gX19yYXdfcmVhZGwodGltZXJfYmFzZVtucl0gKyByZWcpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgdGltZXJfd3JpdGVfcmVnKGludCBuciwgdW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgaW50IHZhbCkKLXsKLQlfX3Jhd193cml0ZWwodmFsLCB0aW1lcl9iYXNlW25yXSArIHJlZyk7Ci19Ci0KLS8qIE5vdGUgdGhhdCB3ZSBhbHdheXMgZW5hYmxlIHRoZSBjbG9jayBwcmVzY2FsZSBkaXZpZGVyIGJpdCAqLwotc3RhdGljIGlubGluZSB2b2lkIG9tYXAyX2dwX3RpbWVyX3N0YXJ0KGludCBuciwgdW5zaWduZWQgbG9uZyBsb2FkX3ZhbCkKLXsKLQl1bnNpZ25lZCBpbnQgdG1wOwotCi0JdG1wID0gMHhmZmZmZmZmZiAtIGxvYWRfdmFsOwotCi0JdGltZXJfd3JpdGVfcmVnKG5yLCBHUF9USU1FUl9UTERSLCB0bXApOwotCXRpbWVyX3dyaXRlX3JlZyhuciwgR1BfVElNRVJfVENSUiwgdG1wKTsKLQl0aW1lcl93cml0ZV9yZWcobnIsIEdQX1RJTUVSX1RJRVIsIDEgPDwgMSk7Ci0JdGltZXJfd3JpdGVfcmVnKG5yLCBHUF9USU1FUl9UQ0xSLCAoMSA8PCA1KSB8ICgxIDw8IDEpIHwgMSk7CisJb21hcF9kbV90aW1lcl9zZXRfbG9hZChncHRpbWVyLCAxLCAweGZmZmZmZmZmIC0gbG9hZF92YWwpOworCW9tYXBfZG1fdGltZXJfc2V0X2ludF9lbmFibGUoZ3B0aW1lciwgT01BUF9USU1FUl9JTlRfT1ZFUkZMT1cpOworCW9tYXBfZG1fdGltZXJfc3RhcnQoZ3B0aW1lcik7CiB9CiAKIHN0YXRpYyBpcnFyZXR1cm5fdCBvbWFwMl9ncF90aW1lcl9pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqZGV2X2lkLApAQCAtNzcsNyArNDIsNyBAQAogewogCXdyaXRlX3NlcWxvY2soJnh0aW1lX2xvY2spOwogCi0JdGltZXJfd3JpdGVfcmVnKE9TX1RJTUVSX05SLCBHUF9USU1FUl9USVNSLCAxIDw8IDEpOworCW9tYXBfZG1fdGltZXJfd3JpdGVfc3RhdHVzKGdwdGltZXIsIE9NQVBfVElNRVJfSU5UX09WRVJGTE9XKTsKIAl0aW1lcl90aWNrKHJlZ3MpOwogCiAJd3JpdGVfc2VxdW5sb2NrKCZ4dGltZV9sb2NrKTsKQEAgLTg3LDQxICs1MiwyNiBAQAogCiBzdGF0aWMgc3RydWN0IGlycWFjdGlvbiBvbWFwMl9ncF90aW1lcl9pcnEgPSB7CiAJLm5hbWUJCT0gImdwIHRpbWVyIiwKLQkuZmxhZ3MJCT0gU0FfSU5URVJSVVBULAorCS5mbGFncwkJPSBTQV9JTlRFUlJVUFQgfCBTQV9USU1FUiwKIAkuaGFuZGxlcgk9IG9tYXAyX2dwX3RpbWVyX2ludGVycnVwdCwKIH07CiAKIHN0YXRpYyB2b2lkIF9faW5pdCBvbWFwMl9ncF90aW1lcl9pbml0KHZvaWQpCiB7Ci0Jc3RydWN0IGNsayAqIHN5c19jazsKLQl1MzIgdGlja19wZXJpb2QgPSAxMjAwMDA7Ci0JdTMyIGw7CisJdTMyIHRpY2tfcGVyaW9kOwogCi0JLyogUmVzZXQgY2xvY2sgYW5kIHByZXNjYWxlIHZhbHVlICovCi0JdGltZXJfd3JpdGVfcmVnKE9TX1RJTUVSX05SLCBHUF9USU1FUl9UQ0xSLCAwKTsKKwlvbWFwX2RtX3RpbWVyX2luaXQoKTsKKwlncHRpbWVyID0gb21hcF9kbV90aW1lcl9yZXF1ZXN0X3NwZWNpZmljKDEpOworCUJVR19PTihncHRpbWVyID09IE5VTEwpOwogCi0Jc3lzX2NrID0gY2xrX2dldChOVUxMLCAic3lzX2NrIik7Ci0JaWYgKElTX0VSUihzeXNfY2spKQotCQlwcmludGsoS0VSTl9FUlIgIkNvdWxkIG5vdCBnZXQgc3lzX2NrXG4iKTsKLQllbHNlIHsKLQkJY2xrX2VuYWJsZShzeXNfY2spOwotCQl0aWNrX3BlcmlvZCA9IGNsa19nZXRfcmF0ZShzeXNfY2spIC8gMTAwOwotCQljbGtfcHV0KHN5c19jayk7Ci0JfQotCi0JdGlja19wZXJpb2QgLz0gMjsJLyogTWluaW11bSBwcmVzY2FsZSBkaXZpZGVyIGlzIDIgKi8KKwlvbWFwX2RtX3RpbWVyX3NldF9zb3VyY2UoZ3B0aW1lciwgT01BUF9USU1FUl9TUkNfU1lTX0NMSyk7CisJdGlja19wZXJpb2QgPSBjbGtfZ2V0X3JhdGUob21hcF9kbV90aW1lcl9nZXRfZmNsayhncHRpbWVyKSkgLyAxMDA7CiAJdGlja19wZXJpb2QgLT0gMTsKIAotCWwgPSB0aW1lcl9yZWFkX3JlZyhPU19USU1FUl9OUiwgR1BfVElNRVJfVElEUik7Ci0JcHJpbnRrKEtFUk5fSU5GTyAiT01BUDIgR1AgdGltZXIgKEhXIHZlcnNpb24gJWQuJWQpXG4iLAotCSAgICAgICAobCA+PiA0KSAmIDB4MGYsIGwgJiAweDBmKTsKLQotCXNldHVwX2lycSgzOCwgJm9tYXAyX2dwX3RpbWVyX2lycSk7Ci0KLQlvbWFwMl9ncF90aW1lcl9zdGFydChPU19USU1FUl9OUiwgdGlja19wZXJpb2QpOworCXNldHVwX2lycShvbWFwX2RtX3RpbWVyX2dldF9pcnEoZ3B0aW1lciksICZvbWFwMl9ncF90aW1lcl9pcnEpOworCW9tYXAyX2dwX3RpbWVyX3N0YXJ0KHRpY2tfcGVyaW9kKTsKIH0KIAogc3RydWN0IHN5c190aW1lciBvbWFwX3RpbWVyID0gewogCS5pbml0CT0gb21hcDJfZ3BfdGltZXJfaW5pdCwKIH07Ci0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL0tjb25maWcgYi9hcmNoL2FybS9tYWNoLXB4YS9LY29uZmlnCmluZGV4IGVhNTEzN2YuLjAzZDA3Y2EgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtcHhhL0tjb25maWcKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvS2NvbmZpZwpAQCAtMzUsNiArMzUsMTAgQEAKIAkgIFNMLUMzMDAwIChTcGl0eiksIFNMLUMzMTAwIChCb3J6b2kpIG9yIFNMLUM2MDAweCAoVG9zYSkKIAkgIGhhbmRoZWxkIGNvbXB1dGVyLgogCitjb25maWcgTUFDSF9UUklaRVBTNAorCWJvb2wgIktlaXRoIHVuZCBLb2VwIFRyaXplcHM0IERJTU0tTW9kdWxlIgorCXNlbGVjdCBQWEEyN3gKKwogZW5kY2hvaWNlCiAKIGlmIFBYQV9TSEFSUFNMCkBAIC01NSw2ICs1OSwyMSBAQAogCiBlbmRpZgogCitpZiBNQUNIX1RSSVpFUFM0CisKK2Nob2ljZQorCXByb21wdCAiU2VsZWN0IGJhc2UgYm9hcmQgZm9yIFRyaXplcHMgNCBtb2R1bGUiCisKK2NvbmZpZyBNQUNIX1RSSVpFUFM0X0NPTlhTCisJYm9vbCAiQ29uWFMgRXZhbCBCb2FyZCIKKworY29uZmlnIE1BQ0hfVFJJWkVQUzRfQU5ZCisJYm9vbCAiYW5vdGhlciBCb2FyZCIKKworZW5kY2hvaWNlCisKK2VuZGlmCisKIGVuZG1lbnUKIAogY29uZmlnIE1BQ0hfUE9PRExFCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXB4YS9NYWtlZmlsZSBiL2FyY2gvYXJtL21hY2gtcHhhL01ha2VmaWxlCmluZGV4IDE2MTA2OTAuLjkwOTNlYjFjOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvTWFrZWZpbGUKQEAgLTEyLDYgKzEyLDcgQEAKIG9iai0kKENPTkZJR19NQUNIX0xPR0lDUERfUFhBMjcwKSArPSBscGQyNzAubwogb2JqLSQoQ09ORklHX01BQ0hfTUFJTlNUT05FKSArPSBtYWluc3RvbmUubwogb2JqLSQoQ09ORklHX0FSQ0hfUFhBX0lEUCkgKz0gaWRwLm8KK29iai0kKENPTkZJR19NQUNIX1RSSVpFUFM0KQkrPSB0cml6ZXBzNC5vCiBvYmotJChDT05GSUdfUFhBX1NIQVJQX0M3eHgpCSs9IGNvcmdpLm8gY29yZ2lfc3NwLm8gY29yZ2lfbGNkLm8gc2hhcnBzbF9wbS5vIGNvcmdpX3BtLm8KIG9iai0kKENPTkZJR19QWEFfU0hBUlBfQ3h4MDApCSs9IHNwaXR6Lm8gY29yZ2lfc3NwLm8gY29yZ2lfbGNkLm8gc2hhcnBzbF9wbS5vIHNwaXR6X3BtLm8KIG9iai0kKENPTkZJR19NQUNIX0FLSVRBKQkrPSBha2l0YS1pb2V4cC5vCkBAIC0yMyw2ICsyNCw3IEBACiBsZWQtJChDT05GSUdfQVJDSF9MVUJCT0NLKSArPSBsZWRzLWx1YmJvY2subwogbGVkLSQoQ09ORklHX01BQ0hfTUFJTlNUT05FKSArPSBsZWRzLW1haW5zdG9uZS5vCiBsZWQtJChDT05GSUdfQVJDSF9QWEFfSURQKSArPSBsZWRzLWlkcC5vCitsZWQtJChDT05GSUdfTUFDSF9UUklaRVBTNCkgKz0gbGVkcy10cml6ZXBzNC5vCiAKIG9iai0kKENPTkZJR19MRURTKSArPSAkKGxlZC15KQogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXB4YS9sZWRzLXRyaXplcHM0LmMgYi9hcmNoL2FybS9tYWNoLXB4YS9sZWRzLXRyaXplcHM0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRjZmM4NQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvYXJtL21hY2gtcHhhL2xlZHMtdHJpemVwczQuYwpAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIGxpbnV4L2FyY2gvYXJtL21hY2gtcHhhL2xlZHMtdHJpemVwczQuYworICoKKyAqICBBdXRob3I6CUrDvHJnZW4gU2NoaW5kZWxlCisgKiAgQ3JlYXRlZDoJMjAgMDIsIDIwMDYKKyAqICBDb3B5cmlnaHQ6CUrDvHJnZW4gU2NoaW5kZWxlCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorCisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS9sZWRzLmg+CisKKyNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL3RyaXplcHM0Lmg+CisKKyNpbmNsdWRlICJsZWRzLmgiCisKKyNkZWZpbmUgTEVEX1NUQVRFX0VOQUJMRUQJMQorI2RlZmluZSBMRURfU1RBVEVfQ0xBSU1FRAkyCisKKyNkZWZpbmUgU1lTX0JVU1kJCTB4MDEKKyNkZWZpbmUgSEVBUlRCRUFUCQkweDAyCisjZGVmaW5lIEJMSU5LCQkJMHgwNAorCitzdGF0aWMgdW5zaWduZWQgaW50IGxlZF9zdGF0ZTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgaHdfbGVkX3N0YXRlOworCit2b2lkIHRyaXplcHM0X2xlZHNfZXZlbnQobGVkX2V2ZW50X3QgZXZ0KQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisKKwlzd2l0Y2ggKGV2dCkgeworCWNhc2UgbGVkX3N0YXJ0OgorCQlod19sZWRfc3RhdGUgPSAwOworCQlweGFfZ3Bpb19tb2RlKCBHUElPX1NZU19CVVNZX0xFRCAgfCBHUElPX09VVCk7CQkvKiBMRUQxICovCisJCXB4YV9ncGlvX21vZGUoIEdQSU9fSEVBUlRCRUFUX0xFRCB8IEdQSU9fT1VUKTsJCS8qIExFRDIgKi8KKwkJbGVkX3N0YXRlID0gTEVEX1NUQVRFX0VOQUJMRUQ7CisJCWJyZWFrOworCisJY2FzZSBsZWRfc3RvcDoKKwkJbGVkX3N0YXRlICY9IH5MRURfU1RBVEVfRU5BQkxFRDsKKwkJYnJlYWs7CisKKwljYXNlIGxlZF9jbGFpbToKKwkJbGVkX3N0YXRlIHw9IExFRF9TVEFURV9DTEFJTUVEOworCQlod19sZWRfc3RhdGUgPSAwOworCQlicmVhazsKKworCWNhc2UgbGVkX3JlbGVhc2U6CisJCWxlZF9zdGF0ZSAmPSB+TEVEX1NUQVRFX0NMQUlNRUQ7CisJCWh3X2xlZF9zdGF0ZSA9IDA7CisJCWJyZWFrOworCisjaWZkZWYgQ09ORklHX0xFRFNfVElNRVIKKwljYXNlIGxlZF90aW1lcjoKKwkJaHdfbGVkX3N0YXRlIF49IEhFQVJUQkVBVDsKKwkJYnJlYWs7CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19MRURTX0NQVQorCWNhc2UgbGVkX2lkbGVfc3RhcnQ6CisJCWh3X2xlZF9zdGF0ZSAmPSB+U1lTX0JVU1k7CisJCWJyZWFrOworCisJY2FzZSBsZWRfaWRsZV9lbmQ6CisJCWh3X2xlZF9zdGF0ZSB8PSBTWVNfQlVTWTsKKwkJYnJlYWs7CisjZW5kaWYKKworCWNhc2UgbGVkX2hhbHRlZDoKKwkJYnJlYWs7CisKKwljYXNlIGxlZF9ncmVlbl9vbjoKKwkJaHdfbGVkX3N0YXRlIHw9IEJMSU5LOworCQlicmVhazsKKworCWNhc2UgbGVkX2dyZWVuX29mZjoKKwkJaHdfbGVkX3N0YXRlICY9IH5CTElOSzsKKwkJYnJlYWs7CisKKwljYXNlIGxlZF9hbWJlcl9vbjoKKwkJYnJlYWs7CisKKwljYXNlIGxlZF9hbWJlcl9vZmY6CisJCWJyZWFrOworCisJY2FzZSBsZWRfcmVkX29uOgorCQlicmVhazsKKworCWNhc2UgbGVkX3JlZF9vZmY6CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCisJaWYgIChsZWRfc3RhdGUgJiBMRURfU1RBVEVfRU5BQkxFRCkgeworCQlzd2l0Y2ggKGh3X2xlZF9zdGF0ZSkgeworCQkJY2FzZSAwOgorCQkJCUdQU1IoR1BJT19TWVNfQlVTWV9MRUQpICB8PSBHUElPX2JpdChHUElPX1NZU19CVVNZX0xFRCk7CisJCQkJR1BTUihHUElPX0hFQVJUQkVBVF9MRUQpIHw9IEdQSU9fYml0KEdQSU9fSEVBUlRCRUFUX0xFRCk7CisJCQkJYnJlYWs7CisJCQljYXNlIDE6CisJCQkJR1BDUihHUElPX1NZU19CVVNZX0xFRCkgIHw9IEdQSU9fYml0KEdQSU9fU1lTX0JVU1lfTEVEKTsKKwkJCQlHUFNSKEdQSU9fSEVBUlRCRUFUX0xFRCkgfD0gR1BJT19iaXQoR1BJT19IRUFSVEJFQVRfTEVEKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgMjoKKwkJCQlHUFNSKEdQSU9fU1lTX0JVU1lfTEVEKSAgfD0gR1BJT19iaXQoR1BJT19TWVNfQlVTWV9MRUQpOworCQkJCUdQQ1IoR1BJT19IRUFSVEJFQVRfTEVEKSB8PSBHUElPX2JpdChHUElPX0hFQVJUQkVBVF9MRUQpOworCQkJCWJyZWFrOworCQkJY2FzZSAzOgorCQkJCUdQQ1IoR1BJT19TWVNfQlVTWV9MRUQpICB8PSBHUElPX2JpdChHUElPX1NZU19CVVNZX0xFRCk7CisJCQkJR1BDUihHUElPX0hFQVJUQkVBVF9MRUQpIHw9IEdQSU9fYml0KEdQSU9fSEVBUlRCRUFUX0xFRCk7CisJCQkJYnJlYWs7CisJCX0KKwl9CisJZWxzZSB7CisJCS8qIHR1cm4gYWxsIG9mZiAqLworCQlHUFNSKEdQSU9fU1lTX0JVU1lfTEVEKSAgfD0gR1BJT19iaXQoR1BJT19TWVNfQlVTWV9MRUQpOworCQlHUFNSKEdQSU9fSEVBUlRCRUFUX0xFRCkgfD0gR1BJT19iaXQoR1BJT19IRUFSVEJFQVRfTEVEKTsKKwl9CisKKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Cit9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXB4YS9sZWRzLmMgYi9hcmNoL2FybS9tYWNoLXB4YS9sZWRzLmMKaW5kZXggYmJlNGQ1Zi4uZTEzZWI4NCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvbGVkcy5jCisrKyBiL2FyY2gvYXJtL21hY2gtcHhhL2xlZHMuYwpAQCAtMjQsNiArMjQsOCBAQAogCQlsZWRzX2V2ZW50ID0gbWFpbnN0b25lX2xlZHNfZXZlbnQ7CiAJaWYgKG1hY2hpbmVfaXNfcHhhX2lkcCgpKQogCQlsZWRzX2V2ZW50ID0gaWRwX2xlZHNfZXZlbnQ7CisJaWYgKG1hY2hpbmVfaXNfdHJpemVwczQoKSkKKwkJbGVkc19ldmVudCA9IHRyaXplcHM0X2xlZHNfZXZlbnQ7CiAKIAlsZWRzX2V2ZW50KGxlZF9zdGFydCk7CiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXB4YS9sZWRzLmggYi9hcmNoL2FybS9tYWNoLXB4YS9sZWRzLmgKaW5kZXggZDk4ZjZlOS4uNGY4MjliOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvbGVkcy5oCisrKyBiL2FyY2gvYXJtL21hY2gtcHhhL2xlZHMuaApAQCAtMTAsMyArMTAsNCBAQAogZXh0ZXJuIHZvaWQgaWRwX2xlZHNfZXZlbnQobGVkX2V2ZW50X3QgZXZ0KTsKIGV4dGVybiB2b2lkIGx1YmJvY2tfbGVkc19ldmVudChsZWRfZXZlbnRfdCBldnQpOwogZXh0ZXJuIHZvaWQgbWFpbnN0b25lX2xlZHNfZXZlbnQobGVkX2V2ZW50X3QgZXZ0KTsKK2V4dGVybiB2b2lkIHRyaXplcHM0X2xlZHNfZXZlbnQobGVkX2V2ZW50X3QgZXZ0KTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL2xwZDI3MC5jIGIvYXJjaC9hcm0vbWFjaC1weGEvbHBkMjcwLmMKaW5kZXggZWMwZjQzYS4uMWE1ZjVjMiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvbHBkMjcwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1weGEvbHBkMjcwLmMKQEAgLTI0OCw1OCArMjQ4LDEzNyBAQAogCiAvKiA1LjciIFRGVCBRVkdBIChMb0xvIGRpc3BsYXkgbnVtYmVyIDEpICovCiBzdGF0aWMgc3RydWN0IHB4YWZiX21hY2hfaW5mbyBzaGFycF9scTA1N3EzZGMwMiBfX2luaXRkYXRhID0gewotCS5waXhjbG9jawkJPSAxMDAwMDAsCi0JLnhyZXMJCQk9IDI0MCwKLQkueXJlcwkJCT0gMzIwLAorCS5waXhjbG9jawkJPSAxNTAwMDAsCisJLnhyZXMJCQk9IDMyMCwKKwkueXJlcwkJCT0gMjQwLAogCS5icHAJCQk9IDE2LAotCS5oc3luY19sZW4JCT0gNjQsCi0JLmxlZnRfbWFyZ2luCQk9IDB4MjcsCi0JLnJpZ2h0X21hcmdpbgkJPSAweDA5LAotCS52c3luY19sZW4JCT0gMHgwNCwKKwkuaHN5bmNfbGVuCQk9IDB4MTQsCisJLmxlZnRfbWFyZ2luCQk9IDB4MjgsCisJLnJpZ2h0X21hcmdpbgkJPSAweDBhLAorCS52c3luY19sZW4JCT0gMHgwMiwKIAkudXBwZXJfbWFyZ2luCQk9IDB4MDgsCiAJLmxvd2VyX21hcmdpbgkJPSAweDE0LAotCS5zeW5jCQkJPSAwLAorCS5zeW5jCQkJPSBGQl9TWU5DX0hPUl9ISUdIX0FDVCB8IEZCX1NZTkNfVkVSVF9ISUdIX0FDVCwKIAkubGNjcjAJCQk9IDB4MDc4MDAwODAsCi0JLmxjY3IzCQkJPSAweDA0NDAwMDA3LAorCS5sY2NyMwkJCT0gMHgwMDQwMDAwMCwKKwkucHhhZmJfYmFja2xpZ2h0X3Bvd2VyCT0gbHBkMjcwX2JhY2tsaWdodF9wb3dlciwKK307CisKKy8qIDEyLjEiIFRGVCBTVkdBIChMb0xvIGRpc3BsYXkgbnVtYmVyIDIpICovCitzdGF0aWMgc3RydWN0IHB4YWZiX21hY2hfaW5mbyBzaGFycF9scTEyMXMxZGczMSBfX2luaXRkYXRhID0geworCS5waXhjbG9jawkJPSA1MDAwMCwKKwkueHJlcwkJCT0gODAwLAorCS55cmVzCQkJPSA2MDAsCisJLmJwcAkJCT0gMTYsCisJLmhzeW5jX2xlbgkJPSAweDA1LAorCS5sZWZ0X21hcmdpbgkJPSAweDUyLAorCS5yaWdodF9tYXJnaW4JCT0gMHgwNSwKKwkudnN5bmNfbGVuCQk9IDB4MDQsCisJLnVwcGVyX21hcmdpbgkJPSAweDE0LAorCS5sb3dlcl9tYXJnaW4JCT0gMHgwYSwKKwkuc3luYwkJCT0gRkJfU1lOQ19IT1JfSElHSF9BQ1QgfCBGQl9TWU5DX1ZFUlRfSElHSF9BQ1QsCisJLmxjY3IwCQkJPSAweDA3ODAwMDgwLAorCS5sY2NyMwkJCT0gMHgwMDQwMDAwMCwKKwkucHhhZmJfYmFja2xpZ2h0X3Bvd2VyCT0gbHBkMjcwX2JhY2tsaWdodF9wb3dlciwKK307CisKKy8qIDMuNiIgVEZUIFFWR0EgKExvTG8gZGlzcGxheSBudW1iZXIgMykgKi8KK3N0YXRpYyBzdHJ1Y3QgcHhhZmJfbWFjaF9pbmZvIHNoYXJwX2xxMDM2cTFkYTAxIF9faW5pdGRhdGEgPSB7CisJLnBpeGNsb2NrCQk9IDE1MDAwMCwKKwkueHJlcwkJCT0gMzIwLAorCS55cmVzCQkJPSAyNDAsCisJLmJwcAkJCT0gMTYsCisJLmhzeW5jX2xlbgkJPSAweDBlLAorCS5sZWZ0X21hcmdpbgkJPSAweDA0LAorCS5yaWdodF9tYXJnaW4JCT0gMHgwYSwKKwkudnN5bmNfbGVuCQk9IDB4MDMsCisJLnVwcGVyX21hcmdpbgkJPSAweDAzLAorCS5sb3dlcl9tYXJnaW4JCT0gMHgwMywKKwkuc3luYwkJCT0gRkJfU1lOQ19IT1JfSElHSF9BQ1QgfCBGQl9TWU5DX1ZFUlRfSElHSF9BQ1QsCisJLmxjY3IwCQkJPSAweDA3ODAwMDgwLAorCS5sY2NyMwkJCT0gMHgwMDQwMDAwMCwKIAkucHhhZmJfYmFja2xpZ2h0X3Bvd2VyCT0gbHBkMjcwX2JhY2tsaWdodF9wb3dlciwKIH07CiAKIC8qIDYuNCIgVEZUIFZHQSAoTG9MbyBkaXNwbGF5IG51bWJlciA1KSAqLwogc3RhdGljIHN0cnVjdCBweGFmYl9tYWNoX2luZm8gc2hhcnBfbHE2NGQzNDMgX19pbml0ZGF0YSA9IHsKLQkucGl4Y2xvY2sJCT0gMjAwMDAsCisJLnBpeGNsb2NrCQk9IDI1MDAwLAogCS54cmVzCQkJPSA2NDAsCiAJLnlyZXMJCQk9IDQ4MCwKIAkuYnBwCQkJPSAxNiwKLQkuaHN5bmNfbGVuCQk9IDQ5LAorCS5oc3luY19sZW4JCT0gMHgzMSwKIAkubGVmdF9tYXJnaW4JCT0gMHg4OSwKIAkucmlnaHRfbWFyZ2luCQk9IDB4MTksCi0JLnZzeW5jX2xlbgkJPSAxOCwKKwkudnN5bmNfbGVuCQk9IDB4MTIsCiAJLnVwcGVyX21hcmdpbgkJPSAweDIyLAotCS5sb3dlcl9tYXJnaW4JCT0gMCwKKwkubG93ZXJfbWFyZ2luCQk9IDB4MDAsCiAJLnN5bmMJCQk9IEZCX1NZTkNfSE9SX0hJR0hfQUNUIHwgRkJfU1lOQ19WRVJUX0hJR0hfQUNULAogCS5sY2NyMAkJCT0gMHgwNzgwMDA4MCwKLQkubGNjcjMJCQk9IDB4MDQ0MDAwMDEsCisJLmxjY3IzCQkJPSAweDAwNDAwMDAwLAorCS5weGFmYl9iYWNrbGlnaHRfcG93ZXIJPSBscGQyNzBfYmFja2xpZ2h0X3Bvd2VyLAorfTsKKworLyogMTAuNCIgVEZUIFZHQSAoTG9MbyBkaXNwbGF5IG51bWJlciA3KSAqLworc3RhdGljIHN0cnVjdCBweGFmYl9tYWNoX2luZm8gc2hhcnBfbHExMGQzNjggX19pbml0ZGF0YSA9IHsKKwkucGl4Y2xvY2sJCT0gMjUwMDAsCisJLnhyZXMJCQk9IDY0MCwKKwkueXJlcwkJCT0gNDgwLAorCS5icHAJCQk9IDE2LAorCS5oc3luY19sZW4JCT0gMHgzMSwKKwkubGVmdF9tYXJnaW4JCT0gMHg4OSwKKwkucmlnaHRfbWFyZ2luCQk9IDB4MTksCisJLnZzeW5jX2xlbgkJPSAweDEyLAorCS51cHBlcl9tYXJnaW4JCT0gMHgyMiwKKwkubG93ZXJfbWFyZ2luCQk9IDB4MDAsCisJLnN5bmMJCQk9IEZCX1NZTkNfSE9SX0hJR0hfQUNUIHwgRkJfU1lOQ19WRVJUX0hJR0hfQUNULAorCS5sY2NyMAkJCT0gMHgwNzgwMDA4MCwKKwkubGNjcjMJCQk9IDB4MDA0MDAwMDAsCiAJLnB4YWZiX2JhY2tsaWdodF9wb3dlcgk9IGxwZDI3MF9iYWNrbGlnaHRfcG93ZXIsCiB9OwogCiAvKiAzLjUiIFRGVCBRVkdBIChMb0xvIGRpc3BsYXkgbnVtYmVyIDgpICovCiBzdGF0aWMgc3RydWN0IHB4YWZiX21hY2hfaW5mbyBzaGFycF9scTAzNXE3ZGIwMl8yMCBfX2luaXRkYXRhID0gewotCS5waXhjbG9jawkJPSAxMDAwMDAsCisJLnBpeGNsb2NrCQk9IDE1MDAwMCwKIAkueHJlcwkJCT0gMjQwLAogCS55cmVzCQkJPSAzMjAsCiAJLmJwcAkJCT0gMTYsCi0JLmhzeW5jX2xlbgkJPSAweDM0LAotCS5sZWZ0X21hcmdpbgkJPSAweDA5LAotCS5yaWdodF9tYXJnaW4JCT0gMHgwOSwKLQkudnN5bmNfbGVuCQk9IDB4MDgsCisJLmhzeW5jX2xlbgkJPSAweDBlLAorCS5sZWZ0X21hcmdpbgkJPSAweDBhLAorCS5yaWdodF9tYXJnaW4JCT0gMHgwYSwKKwkudnN5bmNfbGVuCQk9IDB4MDMsCiAJLnVwcGVyX21hcmdpbgkJPSAweDA1LAogCS5sb3dlcl9tYXJnaW4JCT0gMHgxNCwKLQkuc3luYwkJCT0gMCwKKwkuc3luYwkJCT0gRkJfU1lOQ19IT1JfSElHSF9BQ1QgfCBGQl9TWU5DX1ZFUlRfSElHSF9BQ1QsCiAJLmxjY3IwCQkJPSAweDA3ODAwMDgwLAotCS5sY2NyMwkJCT0gMHgwNDQwMDAwNywKKwkubGNjcjMJCQk9IDB4MDA0MDAwMDAsCiAJLnB4YWZiX2JhY2tsaWdodF9wb3dlcgk9IGxwZDI3MF9iYWNrbGlnaHRfcG93ZXIsCiB9OwogCitzdGF0aWMgc3RydWN0IHB4YWZiX21hY2hfaW5mbyAqbHBkMjcwX2xjZF90b191c2U7CisKK3N0YXRpYyBpbnQgX19pbml0IGxwZDI3MF9zZXRfbGNkKGNoYXIgKnN0cikKK3sKKwlpZiAoIXN0cm5pY21wKHN0ciwgImxxMDU3cTNkYzAyIiwgMTEpKSB7CisJCWxwZDI3MF9sY2RfdG9fdXNlID0gJnNoYXJwX2xxMDU3cTNkYzAyOworCX0gZWxzZSBpZiAoIXN0cm5pY21wKHN0ciwgImxxMTIxczFkZzMxIiwgMTEpKSB7CisJCWxwZDI3MF9sY2RfdG9fdXNlID0gJnNoYXJwX2xxMTIxczFkZzMxOworCX0gZWxzZSBpZiAoIXN0cm5pY21wKHN0ciwgImxxMDM2cTFkYTAxIiwgMTEpKSB7CisJCWxwZDI3MF9sY2RfdG9fdXNlID0gJnNoYXJwX2xxMDM2cTFkYTAxOworCX0gZWxzZSBpZiAoIXN0cm5pY21wKHN0ciwgImxxNjRkMzQzIiwgOCkpIHsKKwkJbHBkMjcwX2xjZF90b191c2UgPSAmc2hhcnBfbHE2NGQzNDM7CisJfSBlbHNlIGlmICghc3RybmljbXAoc3RyLCAibHExMGQzNjgiLCA4KSkgeworCQlscGQyNzBfbGNkX3RvX3VzZSA9ICZzaGFycF9scTEwZDM2ODsKKwl9IGVsc2UgaWYgKCFzdHJuaWNtcChzdHIsICJscTAzNXE3ZGIwMi0yMCIsIDE0KSkgeworCQlscGQyNzBfbGNkX3RvX3VzZSA9ICZzaGFycF9scTAzNXE3ZGIwMl8yMDsKKwl9IGVsc2UgeworCQlwcmludGsoS0VSTl9JTkZPICJscGQyNzA6IHVua25vd24gbGNkIHBhbmVsIFslc11cbiIsIHN0cik7CisJfQorCisJcmV0dXJuIDE7Cit9CisKK19fc2V0dXAoImxjZD0iLCBscGQyNzBfc2V0X2xjZCk7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwbGF0Zm9ybV9kZXZpY2VzW10gX19pbml0ZGF0YSA9IHsKIAkmc21jOTF4X2RldmljZSwKIAkmbHBkMjcwX2F1ZGlvX2RldmljZSwKQEAgLTM0NSw5ICs0MjQsOCBAQAogCiAJcGxhdGZvcm1fYWRkX2RldmljZXMocGxhdGZvcm1fZGV2aWNlcywgQVJSQVlfU0laRShwbGF0Zm9ybV9kZXZpY2VzKSk7CiAKLQkvLyBzZXRfcHhhX2ZiX2luZm8oJnNoYXJwX2xxMDU3cTNkYzAyKTsKLQlzZXRfcHhhX2ZiX2luZm8oJnNoYXJwX2xxNjRkMzQzKTsKLQkvLyBzZXRfcHhhX2ZiX2luZm8oJnNoYXJwX2xxMDM1cTdkYjAyXzIwKTsKKwlpZiAobHBkMjcwX2xjZF90b191c2UgIT0gTlVMTCkKKwkJc2V0X3B4YV9mYl9pbmZvKGxwZDI3MF9sY2RfdG9fdXNlKTsKIAogCXB4YV9zZXRfb2hjaV9pbmZvKCZscGQyNzBfb2hjaV9wbGF0Zm9ybV9kYXRhKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtcHhhL3RyaXplcHM0LmMgYi9hcmNoL2FybS9tYWNoLXB4YS90cml6ZXBzNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZmZmOWUKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9tYWNoLXB4YS90cml6ZXBzNC5jCkBAIC0wLDAgKzEsNDcxIEBACisvKgorICogIGxpbnV4L2FyY2gvYXJtL21hY2gtcHhhL3RyaXplcHM0LmMKKyAqCisgKiAgU3VwcG9ydCBmb3IgdGhlIEtlaXRoIHVuZCBLb2VwIFRyaXplcHM0IE1vZHVsZSBQbGF0Zm9ybS4KKyAqCisgKiAgQXV0aG9yOglKw7xyZ2VuIFNjaGluZGVsZQorICogIENyZWF0ZWQ6CTIwIDAyLCAyMDA2CisgKiAgQ29weXJpZ2h0OglKw7xyZ2VuIFNjaGluZGVsZQorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zeXNkZXYuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgorI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgorI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+CisjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KKyNpbmNsdWRlIDxsaW51eC9zZXJpYWxfODI1MC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9tdGQuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvcGFydGl0aW9ucy5oPgorCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisjaW5jbHVkZSA8YXNtL3NldHVwLmg+CisjaW5jbHVkZSA8YXNtL21lbW9yeS5oPgorI2luY2x1ZGUgPGFzbS9tYWNoLXR5cGVzLmg+CisjaW5jbHVkZSA8YXNtL2hhcmR3YXJlLmg+CisjaW5jbHVkZSA8YXNtL2lycS5oPgorI2luY2x1ZGUgPGFzbS9zaXplcy5oPgorCisjaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL21hcC5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL2lycS5oPgorI2luY2x1ZGUgPGFzbS9tYWNoL2ZsYXNoLmg+CisKKyNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL3RyaXplcHM0Lmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvYXVkaW8uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9weGFmYi5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL21tYy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2lyZGEuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9vaGNpLmg+CisKKyNpbmNsdWRlICJnZW5lcmljLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogT05CT0FSRCBGTEFTSAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIHRyaXplcHM0X3BhcnRpdGlvbnNbXSA9IHsKKwl7CisJCS5uYW1lID0JCSJCb290bG9hZGVyIiwKKwkJLnNpemUgPQkJMHgwMDA0MDAwMCwKKwkJLm9mZnNldCA9CTAsCisJCS5tYXNrX2ZsYWdzID0JTVREX1dSSVRFQUJMRSAgLyogZm9yY2UgcmVhZC1vbmx5ICovCisJfSx7CisJCS5uYW1lID0JCSJLZXJuZWwiLAorCQkuc2l6ZSA9CQkweDAwNDAwMDAwLAorCQkub2Zmc2V0ID0JMHgwMDA0MDAwMAorCX0seworCQkubmFtZSA9CQkiRmlsZXN5c3RlbSIsCisJCS5zaXplID0JCU1URFBBUlRfU0laX0ZVTEwsCisJCS5vZmZzZXQgPQkweDAwNDQwMDAwCisJfQorfTsKKworc3RhdGljIHN0cnVjdCBmbGFzaF9wbGF0Zm9ybV9kYXRhIHRyaXplcHM0X2ZsYXNoX2RhdGFbXSA9IHsKKwl7CisJCS5tYXBfbmFtZQk9ICJjZmlfcHJvYmUiLAorCQkucGFydHMJCT0gdHJpemVwczRfcGFydGl0aW9ucywKKwkJLm5yX3BhcnRzCT0gQVJSQVlfU0laRSh0cml6ZXBzNF9wYXJ0aXRpb25zKQorCX0KK307CisKK3N0YXRpYyBzdHJ1Y3QgcmVzb3VyY2UgZmxhc2hfcmVzb3VyY2UgPSB7CisJLnN0YXJ0CT0gUFhBX0NTMF9QSFlTLAorCS5lbmQJPSBQWEFfQ1MwX1BIWVMgKyBTWl82NE0gLSAxLAorCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgZmxhc2hfZGV2aWNlID0geworCS5uYW1lCQk9ICJweGEyeHgtZmxhc2giLAorCS5pZAkJPSAwLAorCS5kZXYgPSB7CisJCS5wbGF0Zm9ybV9kYXRhID0gJnRyaXplcHM0X2ZsYXNoX2RhdGEsCisJfSwKKwkucmVzb3VyY2UgPSAmZmxhc2hfcmVzb3VyY2UsCisJLm51bV9yZXNvdXJjZXMgPSAxLAorfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBEQVZJQ09NIERNOTAwMCBFdGhlcm5ldAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBkbTkwMDBfcmVzb3VyY2VzW10gPSB7CisJWzBdID0geworCQkuc3RhcnQJPSBUUklaRVBTNF9FVEhfUEhZUysweDMwMCwKKwkJLmVuZAk9IFRSSVpFUFM0X0VUSF9QSFlTKzB4NDAwLTEsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfTUVNLAorCX0sCisJWzFdID0geworCQkuc3RhcnQJPSBUUklaRVBTNF9FVEhfUEhZUysweDgzMDAsCisJCS5lbmQJPSBUUklaRVBTNF9FVEhfUEhZUysweDg0MDAtMSwKKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCisJfSwKKwlbMl0gPSB7CisJCS5zdGFydAk9IFRSSVpFUFM0X0VUSF9JUlEsCisJCS5lbmQJPSBUUklaRVBTNF9FVEhfSVJRLAorCQkuZmxhZ3MJPSAoSU9SRVNPVVJDRV9JUlEgfCBJUlFUX1JJU0lORyksCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGRtOTAwMF9kZXZpY2UgPSB7CisJLm5hbWUJCT0gImRtOTAwMCIsCisJLmlkCQk9IC0xLAorCS5udW1fcmVzb3VyY2VzCT0gQVJSQVlfU0laRShkbTkwMDBfcmVzb3VyY2VzKSwKKwkucmVzb3VyY2UJPSBkbTkwMDBfcmVzb3VyY2VzLAorfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBQWEEyNzAgc2VyaWFsIHBvcnRzCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgc3RydWN0IHBsYXRfc2VyaWFsODI1MF9wb3J0IHRyaV9zZXJpYWxfcG9ydHNbXSA9IHsKKyNpZmRlZiBDT05GSUdfU0VSSUFMX1BYQQorCS8qIHRoaXMgdXNlcyB0aGUgb3duIFBYQSBkcml2ZXIgKi8KKwl7CisJCTAsCisJfSwKKyNlbHNlCisJLyogdGhpcyB1c2VzIHRoZSBnZW5lcmljIDg1MjAgZHJpdmVyICovCisJWzBdID0geworCQkubWVtYmFzZQk9ICh2b2lkICopJkZGVUFSVCwKKwkJLmlycQkJPSBJUlFfRkZVQVJULAorCQkuZmxhZ3MJCT0gVVBGX0JPT1RfQVVUT0NPTkYsCisJCS5pb3R5cGUJCT0gVVBJT19NRU0zMiwKKwkJLnJlZ3NoaWZ0CT0gMiwKKwkJLnVhcnRjbGsJPSAoOTIxNjAwKjE2KSwKKwl9LAorCVsxXSA9IHsKKwkJLm1lbWJhc2UJPSAodm9pZCAqKSZCVFVBUlQsCisJCS5pcnEJCT0gSVJRX0JUVUFSVCwKKwkJLmZsYWdzCQk9IFVQRl9CT09UX0FVVE9DT05GLAorCQkuaW90eXBlCQk9IFVQSU9fTUVNMzIsCisJCS5yZWdzaGlmdAk9IDIsCisJCS51YXJ0Y2xrCT0gKDkyMTYwMCoxNiksCisJfSwKKwl7CisJCTAsCisJfSwKKyNlbmRpZgorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgdWFydF9kZXZpY2VzID0geworCS5uYW1lCQk9ICJzZXJpYWw4MjUwIiwKKwkuaWQJCT0gMCwKKwkuZGV2CQk9IHsKKwkJLnBsYXRmb3JtX2RhdGEJPSB0cmlfc2VyaWFsX3BvcnRzLAorCX0sCisJLm51bV9yZXNvdXJjZXMJPSAwLAorCS5yZXNvdXJjZQk9IE5VTEwsCit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIFBYQTI3MCBhYzk3IHNvdW5kIGNvZGVjCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBhYzk3X2F1ZGlvX2RldmljZSA9IHsKKwkubmFtZQkJPSAicHhhMnh4LWFjOTciLAorCS5pZAkJPSAtMSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICogdHJpemVwczRfZGV2aWNlc1tdIF9faW5pdGRhdGEgPSB7CisJJmZsYXNoX2RldmljZSwKKwkmdWFydF9kZXZpY2VzLAorCSZkbTkwMDBfZGV2aWNlLAorCSZhYzk3X2F1ZGlvX2RldmljZSwKK307CisKKyNpZmRlZiBDT05GSUdfTUFDSF9UUklaRVBTNF9DT05YUworc3RhdGljIHNob3J0IHRyaXplcHNfY29ueHNfYmNyOworCisvKiBQQ0NBUkQgcG93ZXIgc3dpdGNoaW5nIHN1cHBvcnRzIG9ubHkgMywzViAqLwordm9pZCBib2FyZF9wY21jaWFfcG93ZXIoaW50IHBvd2VyKQoreworCWlmIChwb3dlcikgeworCQkvKiBzd2l0Y2ggcG93ZXIgb24sIHB1dCBpbiByZXNldCBhbmQgZW5hYmxlIGJ1ZmZlcnMgKi8KKwkJdHJpemVwc19jb254c19iY3IgfD0gcG93ZXI7CisJCXRyaXplcHNfY29ueHNfYmNyIHw9IENvblhTX0JDUl9DRl9SRVNFVDsKKwkJdHJpemVwc19jb254c19iY3IgJj0gfihDb25YU19CQ1JfQ0ZfQlVGX0VOKTsKKwkJQ29uWFNfQkNSID0gdHJpemVwc19jb254c19iY3I7CisJCS8qIHdhaXQgYSBsaXR0bGUgKi8KKwkJdWRlbGF5KDIwMDApOworCQkvKiB0YWtlIHJlc2V0IGF3YXkgKi8KKwkJdHJpemVwc19jb254c19iY3IgJj0gfihDb25YU19CQ1JfQ0ZfUkVTRVQpOworCQlDb25YU19CQ1IgPSB0cml6ZXBzX2NvbnhzX2JjcjsKKwkJdWRlbGF5KDIwMDApOworCX0gZWxzZSB7CisJCS8qIHB1dCBpbiByZXNldCAqLworCQl0cml6ZXBzX2NvbnhzX2JjciB8PSBDb25YU19CQ1JfQ0ZfUkVTRVQ7CisJCUNvblhTX0JDUiA9IHRyaXplcHNfY29ueHNfYmNyOworCQl1ZGVsYXkoMTAwMCk7CisJCS8qIHN3aXRjaCBwb3dlciBvZmYgKi8KKwkJdHJpemVwc19jb254c19iY3IgJj0gfigweGYpOworCQlDb25YU19CQ1IgPSB0cml6ZXBzX2NvbnhzX2JjcjsKKworCX0KKwlwcl9kZWJ1ZygiJXM6IG8lcyAweCV4XG4iLCBfX0ZVTkNUSU9OX18sIHBvd2VyID8gIm4iOiAiZmYiLCB0cml6ZXBzX2NvbnhzX2Jjcik7Cit9CisKKy8qIGJhY2tsaWdodCBwb3dlciBzd2l0Y2hpbmcgZm9yIExDRCBwYW5lbCAqLworc3RhdGljIHZvaWQgYm9hcmRfYmFja2xpZ2h0X3Bvd2VyKGludCBvbikKK3sKKwlpZiAob24pIHsKKwkJdHJpemVwc19jb254c19iY3IgfD0gQ29uWFNfQkNSX0xfRElTUDsKKwl9IGVsc2UgeworCQl0cml6ZXBzX2NvbnhzX2JjciAmPSB+Q29uWFNfQkNSX0xfRElTUDsKKwl9CisJcHJfZGVidWcoIiVzOiBvJXMgMHgleFxuIiwgX19GVU5DVElPTl9fLCBvbiA/ICJuIiA6ICJmZiIsIHRyaXplcHNfY29ueHNfYmNyKTsKKwlDb25YU19CQ1IgPSB0cml6ZXBzX2NvbnhzX2JjcjsKK30KKworLyogUG93ZXJzdXBwbHkgZm9yIE1NQy9TRCBjYXJkc2xvdCAqLworc3RhdGljIHZvaWQgYm9hcmRfbWNpX3Bvd2VyKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHZkZCkKK3sKKwlzdHJ1Y3QgcHhhbWNpX3BsYXRmb3JtX2RhdGEqIHBfZCA9IGRldi0+cGxhdGZvcm1fZGF0YTsKKworCWlmICgoIDEgPDwgdmRkKSAmIHBfZC0+b2NyX21hc2spIHsKKwkJcHJfZGVidWcoIiVzOiBvblxuIiwgX19GVU5DVElPTl9fKTsKKwkJLyogRklYTUUgZmlsbCBpbiB2YWx1ZXMgaGVyZSAqLworCX0gZWxzZSB7CisJCXByX2RlYnVnKCIlczogb2ZmXG4iLCBfX0ZVTkNUSU9OX18pOworCQkvKiBGSVhNRSBmaWxsIGluIHZhbHVlcyBoZXJlICovCisJfQorfQorCitzdGF0aWMgc2hvcnQgdHJpemVwc19jb254c19pcmNyOworCisvKiBTd2l0Y2ggbW9kZXMgYW5kIFBvd2VyIGZvciBJUkRBIHJlY2VpdmVyICovCitzdGF0aWMgdm9pZCBib2FyZF9pcmRhX21vZGUoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgbW9kZSkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCWlmIChtb2RlICYgSVJfU0lSTU9ERSkgeworCQkvKiBTbG93IG1vZGUgKi8KKwkJdHJpemVwc19jb254c19pcmNyICY9IH5Db25YU19JUkNSX01PREU7CisJfSBlbHNlIGlmIChtb2RlICYgSVJfRklSTU9ERSkgeworCQkvKiBGYXN0IG1vZGUgKi8KKwkJdHJpemVwc19jb254c19pcmNyIHw9IENvblhTX0lSQ1JfTU9ERTsKKwl9CisJaWYgKG1vZGUgJiBJUl9PRkYpIHsKKwkJdHJpemVwc19jb254c19pcmNyIHw9IENvblhTX0lSQ1JfU0Q7CisJfSBlbHNlIHsKKwkJdHJpemVwc19jb254c19pcmNyICY9IH5Db25YU19JUkNSX1NEOworCX0KKwkvKiBGSVhNRSB3cml0ZSB2YWx1ZXMgdG8gcmVnaXN0ZXIgKi8KKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Cit9CisKKyNlbHNlCisvKiBmb3Igb3RoZXIgYmFzZWJvYXJkcyBkZWZpbmUgZHVtbWllcyAqLwordm9pZCBib2FyZF9wY21jaWFfcG93ZXIoaW50IHBvd2VyKQl7O30KKyNkZWZpbmUgYm9hcmRfYmFja2xpZ2h0X3Bvd2VyCQlOVUxMCisjZGVmaW5lIGJvYXJkX21jaV9wb3dlcgkJCU5VTEwKKyNkZWZpbmUgYm9hcmRfaXJkYV9tb2RlCQkJTlVMTAorCisjZW5kaWYJCS8qIENPTkZJR19NQUNIX1RSSVpFUFM0X0NPTlhTICovCitFWFBPUlRfU1lNQk9MKGJvYXJkX3BjbWNpYV9wb3dlcik7CisKK3N0YXRpYyBpbnQgdHJpemVwczRfbWNpX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCBpcnFyZXR1cm5fdCAoKm1jaV9kZXRlY3RfaW50KShpbnQsIHZvaWQgKiwgc3RydWN0IHB0X3JlZ3MgKiksIHZvaWQgKmRhdGEpCit7CisJaW50IGVycjsKKwkvKiBzZXR1cCBHUElPIGZvciBQWEEyN3ggTU1DIGNvbnRyb2xsZXIgKi8KKwlweGFfZ3Bpb19tb2RlKEdQSU8zMl9NTUNDTEtfTUQpOworCXB4YV9ncGlvX21vZGUoR1BJTzExMl9NTUNDTURfTUQpOworCXB4YV9ncGlvX21vZGUoR1BJTzkyX01NQ0RBVDBfTUQpOworCXB4YV9ncGlvX21vZGUoR1BJTzEwOV9NTUNEQVQxX01EKTsKKwlweGFfZ3Bpb19tb2RlKEdQSU8xMTBfTU1DREFUMl9NRCk7CisJcHhhX2dwaW9fbW9kZShHUElPMTExX01NQ0RBVDNfTUQpOworCisJcHhhX2dwaW9fbW9kZShHUElPX01NQ19ERVQgfCBHUElPX0lOKTsKKworCWVyciA9IHJlcXVlc3RfaXJxKFRSSVpFUFM0X01NQ19JUlEsIG1jaV9kZXRlY3RfaW50LCBTQV9JTlRFUlJVUFQgfCBTQV9UUklHR0VSX1JJU0lORywgIk1NQyBjYXJkIGRldGVjdCIsIGRhdGEpOworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJ0cml6ZXBzNF9tY2lfaW5pdDogTU1DL1NEOiBjYW4ndCByZXF1ZXN0IE1NQyBjYXJkIGRldGVjdCBJUlFcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB0cml6ZXBzNF9tY2lfZXhpdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpCit7CisJZnJlZV9pcnEoVFJJWkVQUzRfTU1DX0lSUSwgZGF0YSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcHhhbWNpX3BsYXRmb3JtX2RhdGEgdHJpemVwczRfbWNpX3BsYXRmb3JtX2RhdGEgPSB7CisJLm9jcl9tYXNrCT0gTU1DX1ZERF8zMl8zM3xNTUNfVkREXzMzXzM0LAorCS5pbml0IAkJPSB0cml6ZXBzNF9tY2lfaW5pdCwKKwkuZXhpdAkJPSB0cml6ZXBzNF9tY2lfZXhpdCwKKwkuc2V0cG93ZXIgCT0gYm9hcmRfbWNpX3Bvd2VyLAorfTsKKworc3RhdGljIHN0cnVjdCBweGFmaWNwX3BsYXRmb3JtX2RhdGEgdHJpemVwczRfZmljcF9wbGF0Zm9ybV9kYXRhID0geworCS50cmFuc2NlaXZlcl9jYXAgID0gSVJfU0lSTU9ERSB8IElSX0ZJUk1PREUgfCBJUl9PRkYsCisJLnRyYW5zY2VpdmVyX21vZGUgPSBib2FyZF9pcmRhX21vZGUsCit9OworCitzdGF0aWMgaW50IHRyaXplcHM0X29oY2lfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJLyogc2V0dXAgUG9ydDEgR1BJTyBwaW4uICovCisJcHhhX2dwaW9fbW9kZSggODggfCBHUElPX0FMVF9GTl8xX0lOKTsJLyogVVNCSFBXUjEgKi8KKwlweGFfZ3Bpb19tb2RlKCA4OSB8IEdQSU9fQUxUX0ZOXzJfT1VUKTsJLyogVVNCSFBFTjEgKi8KKworCS8qIFNldCB0aGUgUG93ZXIgQ29udHJvbCBQb2xhcml0eSBMb3cgYW5kIFBvd2VyIFNlbnNlCisJICAgUG9sYXJpdHkgTG93IHRvIGFjdGl2ZSBsb3cuICovCisJVUhDSFIgPSAoVUhDSFIgfCBVSENIUl9QQ1BMIHwgVUhDSFJfUFNQTCkgJgorCQl+KFVIQ0hSX1NTRVAxIHwgVUhDSFJfU1NFUDIgfCBVSENIUl9TU0VQMyB8IFVIQ0hSX1NTRSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdHJpemVwczRfb2hjaV9leGl0KHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcHhhb2hjaV9wbGF0Zm9ybV9kYXRhIHRyaXplcHM0X29oY2lfcGxhdGZvcm1fZGF0YSA9IHsKKwkucG9ydF9tb2RlCT0gUE1NX1BFUlBPUlRfTU9ERSwKKwkuaW5pdAkJPSB0cml6ZXBzNF9vaGNpX2luaXQsCisJLmV4aXQJCT0gdHJpemVwczRfb2hjaV9leGl0LAorfTsKKworc3RhdGljIHN0cnVjdCBtYXBfZGVzYyB0cml6ZXBzNF9pb19kZXNjW10gX19pbml0ZGF0YSA9IHsKKwl7IAkvKiBDb25YUyBDRlNSICovCisJCS52aXJ0dWFsCT0gVFJJWkVQUzRfQ0ZTUl9WSVJULAorCQkucGZuCQk9IF9fcGh5c190b19wZm4oVFJJWkVQUzRfQ0ZTUl9QSFlTKSwKKwkJLmxlbmd0aAkJPSAweDAwMDAxMDAwLAorCQkudHlwZQkJPSBNVF9ERVZJQ0UKKwl9LAorCXsJLyogQ29uWFMgQkNSICovCisJCS52aXJ0dWFsCT0gVFJJWkVQUzRfQk9DUl9WSVJULAorCQkucGZuCQk9IF9fcGh5c190b19wZm4oVFJJWkVQUzRfQk9DUl9QSFlTKSwKKwkJLmxlbmd0aAkJPSAweDAwMDAxMDAwLAorCQkudHlwZQkJPSBNVF9ERVZJQ0UKKwl9LAorCXsgCS8qIENvblhTIElSQ1IgKi8KKwkJLnZpcnR1YWwJPSBUUklaRVBTNF9JUkNSX1ZJUlQsCisJCS5wZm4JCT0gX19waHlzX3RvX3BmbihUUklaRVBTNF9JUkNSX1BIWVMpLAorCQkubGVuZ3RoCQk9IDB4MDAwMDEwMDAsCisJCS50eXBlCQk9IE1UX0RFVklDRQorCX0sCisJewkvKiBDb25YUyBEQ1IgKi8KKwkJLnZpcnR1YWwJPSBUUklaRVBTNF9ESUNSX1ZJUlQsCisJCS5wZm4JCT0gX19waHlzX3RvX3BmbihUUklaRVBTNF9ESUNSX1BIWVMpLAorCQkubGVuZ3RoCQk9IDB4MDAwMDEwMDAsCisJCS50eXBlCQk9IE1UX0RFVklDRQorCX0sCisJewkvKiBDb25YUyBVUFNSICovCisJCS52aXJ0dWFsCT0gVFJJWkVQUzRfVVBTUl9WSVJULAorCQkucGZuCQk9IF9fcGh5c190b19wZm4oVFJJWkVQUzRfVVBTUl9QSFlTKSwKKwkJLmxlbmd0aAkJPSAweDAwMDAxMDAwLAorCQkudHlwZQkJPSBNVF9ERVZJQ0UKKwl9Cit9OworCitzdGF0aWMgc3RydWN0IHB4YWZiX21hY2hfaW5mbyBzaGFycF9sY2QgX19pbml0ZGF0YSA9IHsKKyAgICAucGl4Y2xvY2sJCT0gNzgwMDAsCisgICAgLnhyZXMJCT0gNjQwLAorICAgIC55cmVzCQk9IDQ4MCwKKyAgICAuYnBwCQk9IDgsCisgICAgLmhzeW5jX2xlbgkJPSA0LAorICAgIC5sZWZ0X21hcmdpbgk9IDQsCisgICAgLnJpZ2h0X21hcmdpbgk9IDQsCisgICAgLnZzeW5jX2xlbgkJPSAyLAorICAgIC51cHBlcl9tYXJnaW4JPSAwLAorICAgIC5sb3dlcl9tYXJnaW4JPSAwLAorICAgIC5zeW5jCQk9IEZCX1NZTkNfSE9SX0hJR0hfQUNUIHwgRkJfU1lOQ19WRVJUX0hJR0hfQUNULAorICAgIC5jbWFwX2dyZXlzY2FsZQk9IDAsCisgICAgLmNtYXBfaW52ZXJzZQk9IDAsCisgICAgLmNtYXBfc3RhdGljCT0gMCwKKyAgICAubGNjcjAJCT0gTENDUjBfQ29sb3IgfCBMQ0NSMF9QYXMgfCBMQ0NSMF9EdWFsLAorICAgIC5sY2NyMwkJPSAweDAzNDBmZjAyLAorICAgIC5weGFmYl9iYWNrbGlnaHRfcG93ZXIgPSBib2FyZF9iYWNrbGlnaHRfcG93ZXIsCit9OworCitzdGF0aWMgdm9pZCBfX2luaXQgdHJpemVwczRfZml4dXAoc3RydWN0IG1hY2hpbmVfZGVzYyAqZGVzYywgc3RydWN0IHRhZyAqdGFncywgY2hhciAqKmNtZGxpbmUsIHN0cnVjdCBtZW1pbmZvICptaSkKK3sKK30KKworc3RhdGljIHZvaWQgX19pbml0IHRyaXplcHM0X2luaXQodm9pZCkKK3sKKwlwbGF0Zm9ybV9hZGRfZGV2aWNlcyh0cml6ZXBzNF9kZXZpY2VzLCBBUlJBWV9TSVpFKHRyaXplcHM0X2RldmljZXMpKTsKKworCXNldF9weGFfZmJfaW5mbygmc2hhcnBfbGNkKTsKKworCXB4YV9zZXRfbWNpX2luZm8oJnRyaXplcHM0X21jaV9wbGF0Zm9ybV9kYXRhKTsKKwlweGFfc2V0X2ZpY3BfaW5mbygmdHJpemVwczRfZmljcF9wbGF0Zm9ybV9kYXRhKTsKKwlweGFfc2V0X29oY2lfaW5mbygmdHJpemVwczRfb2hjaV9wbGF0Zm9ybV9kYXRhKTsKK30KKworc3RhdGljIHZvaWQgX19pbml0IHRyaXplcHM0X21hcF9pbyh2b2lkKQoreworCXB4YV9tYXBfaW8oKTsKKwlpb3RhYmxlX2luaXQodHJpemVwczRfaW9fZGVzYywgQVJSQVlfU0laRSh0cml6ZXBzNF9pb19kZXNjKSk7CisKKwkvKiBmb3IgRGlza09uQ2hpcCAqLworCXB4YV9ncGlvX21vZGUoR1BJTzE1X25DU18xX01EKTsKKworCS8qIGZvciBvZmYtbW9kdWxlIFBJQyBvbiBDb25YUyBib2FyZCAqLworCXB4YV9ncGlvX21vZGUoR1BJT19QSUMgfCBHUElPX0lOKTsKKworCS8qIFVDQjE0MDAgaXJxICovCisJcHhhX2dwaW9fbW9kZShHUElPX1VDQjE0MDAgfCBHUElPX0lOKTsKKworCS8qIGZvciBETTkwMDAgTEFOICovCisJcHhhX2dwaW9fbW9kZShHUElPNzhfbkNTXzJfTUQpOworCXB4YV9ncGlvX21vZGUoR1BJT19ETTkwMDAgfCBHUElPX0lOKTsKKworCS8qIGZvciBQQ01DSUEgZGV2aWNlICovCisJcHhhX2dwaW9fbW9kZShHUElPX1BDRCB8IEdQSU9fSU4pOworCXB4YV9ncGlvX21vZGUoR1BJT19QUkRZIHwgR1BJT19JTik7CisKKwkvKiBmb3IgSTJDIGFkYXB0ZXIgKi8KKwlweGFfZ3Bpb19tb2RlKEdQSU8xMTdfSTJDU0NMX01EKTsKKwlweGFfZ3Bpb19tb2RlKEdQSU8xMThfSTJDU0RBX01EKTsKKworCS8qIE1NQ19ERVQgcy5vLiAqLworCXB4YV9ncGlvX21vZGUoR1BJT19NTUNfREVUIHwgR1BJT19JTik7CisKKwkvKiB3aGF0cyB0aGF0IGZvciA/Pz8gKi8KKwlweGFfZ3Bpb19tb2RlKEdQSU83OV9uQ1NfM19NRCk7CisKKwlweGFfZ3Bpb19tb2RlKCBHUElPX1NZU19CVVNZX0xFRCAgfCBHUElPX09VVCk7CQkvKiBMRUQxICovCisJcHhhX2dwaW9fbW9kZSggR1BJT19IRUFSVEJFQVRfTEVEIHwgR1BJT19PVVQpOwkJLyogTEVEMiAqLworCisjaWZkZWYgQ09ORklHX01BQ0hfVFJJWkVQUzRfQ09OWFMKKyNpZmRlZiBDT05GSUdfSURFX1BYQV9DRgorCS8qIGlmIGJvb3QgZGlyZWN0IGZyb20gY29tcGFjdCBmbGFzaCBkb250IGRpc2FibGUgcG93ZXIgKi8KKwl0cml6ZXBzX2NvbnhzX2JjciA9IDB4MDAwOTsKKyNlbHNlCisJLyogdGhpcyBpcyB0aGUgcmVzZXQgdmFsdWUgKi8KKwl0cml6ZXBzX2NvbnhzX2JjciA9IDB4MDBBMDsKKyNlbmRpZgorCUNvblhTX0JDUiA9IHRyaXplcHNfY29ueHNfYmNyOworI2VuZGlmCisKKwlQV0VSICA9IDB4MDAwMDAwMDI7CisJUEZFUiAgPSAweDAwMDAwMDAwOworCVBSRVIgID0gMHgwMDAwMDAwMjsKKwlQR1NSMCA9IDB4MDE1OEMwMDA7CisJUEdTUjEgPSAweDAwRkYwMDgwOworCVBHU1IyID0gMHgwMDAxQzAwNDsKKwkvKiBTdG9wIDMuNk1IeiBhbmQgZHJpdmUgSElHSCB0byBQQ01DSUEgYW5kIENTICovCisJUENGUiB8PSBQQ0ZSX09QREU7Cit9CisKK01BQ0hJTkVfU1RBUlQoVFJJWkVQUzQsICJLZWl0aCB1bmQgS29lcCBUcml6ZXBzIElWIG1vZHVsZSIpCisJLyogTUFJTlRBSU5FUigiSsO8cmdlbiBTY2hpbmRlbGUiKSAqLworCS5waHlzX2lvCT0gMHg0MDAwMDAwMCwKKwkuaW9fcGdfb2Zmc3QJPSAoaW9fcDJ2KDB4NDAwMDAwMDApID4+IDE4KSAmIDB4ZmZmYywKKwkuYm9vdF9wYXJhbXMJPSBUUklaRVBTNF9TRFJBTV9CQVNFICsgMHgxMDAsCisJLmZpeHVwCQk9IHRyaXplcHM0X2ZpeHVwLAorCS5pbml0X21hY2hpbmUJPSB0cml6ZXBzNF9pbml0LAorCS5tYXBfaW8JCT0gdHJpemVwczRfbWFwX2lvLAorCS5pbml0X2lycQk9IHB4YV9pbml0X2lycSwKKwkudGltZXIJCT0gJnB4YV90aW1lciwKK01BQ0hJTkVfRU5ECisKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtc2ExMTAwL2NwdS1zYTExMTAuYyBiL2FyY2gvYXJtL21hY2gtc2ExMTAwL2NwdS1zYTExMTAuYwppbmRleCAwNGM5NGFiLi42Mzk1OTc3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9jcHUtc2ExMTEwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1zYTExMDAvY3B1LXNhMTExMC5jCkBAIC0xNSw3ICsxNSwxMCBAQAogICogICAgICBTRFJBTSByZWFkcyAocmV2IEEwLCBCMCwgQjEpCiAgKgogICogV2UgaWdub3JlIHJldi4gQTAgYW5kIEIwIGRldmljZXM7IEkgZG9uJ3QgdGhpbmsgdGhleSdyZSB3b3J0aCBzdXBwb3J0aW5nLgorICoKKyAqIFRoZSBTRFJBTSB0eXBlIGNhbiBiZSBwYXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZSBhcyBjcHVfc2ExMTEwLnNkcmFtPXR5cGUKICAqLworI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgpAQCAtMzUsNiArMzgsNyBAQAogc3RhdGljIHN0cnVjdCBjcHVmcmVxX2RyaXZlciBzYTExMTBfZHJpdmVyOwogCiBzdHJ1Y3Qgc2RyYW1fcGFyYW1zIHsKKwljb25zdCBjaGFyIG5hbWVbMTZdOwogCXVfY2hhciAgcm93czsJCS8qIGJpdHMJCQkJICovCiAJdV9jaGFyICBjYXNfbGF0ZW5jeTsJLyogY3ljbGVzCQkJICovCiAJdV9jaGFyICB0Y2s7CQkvKiBjbG9jayBjeWNsZSB0aW1lIChucykJICovCkBAIC01MCw1NCArNTQsNTMgQEAKIAl1X2ludAltZGNhc1szXTsKIH07CiAKLXN0YXRpYyBzdHJ1Y3Qgc2RyYW1fcGFyYW1zIHRjNTlzbTcxNl9jbDJfcGFyYW1zIF9faW5pdGRhdGEgPSB7Ci0JLnJvd3MJCQk9IDEyLAotCS50Y2sJCQk9IDEwLAotCS50cmNkCQkJPSAyMCwKLQkudHJwCQkJPSAyMCwKLQkudHdyCQkJPSAxMCwKLQkucmVmcmVzaAkJPSA2NDAwMCwKLQkuY2FzX2xhdGVuY3kJCT0gMiwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qgc2RyYW1fcGFyYW1zIHRjNTlzbTcxNl9jbDNfcGFyYW1zIF9faW5pdGRhdGEgPSB7Ci0JLnJvd3MJCQk9IDEyLAotCS50Y2sJCQk9IDgsCi0JLnRyY2QJCQk9IDIwLAotCS50cnAJCQk9IDIwLAotCS50d3IJCQk9IDgsCi0JLnJlZnJlc2gJCT0gNjQwMDAsCi0JLmNhc19sYXRlbmN5CQk9IDMsCi19OwotCi1zdGF0aWMgc3RydWN0IHNkcmFtX3BhcmFtcyBzYW1zdW5nX2s0czY0MTYzMmRfdGM3NSBfX2luaXRkYXRhID0gewotCS5yb3dzCQkJPSAxNCwKLQkudGNrCQkJPSA5LAotCS50cmNkCQkJPSAyNywKLQkudHJwCQkJPSAyMCwKLQkudHdyCQkJPSA5LAotCS5yZWZyZXNoCQk9IDY0MDAwLAotCS5jYXNfbGF0ZW5jeQkJPSAzLAotfTsKLQotc3RhdGljIHN0cnVjdCBzZHJhbV9wYXJhbXMgc2Ftc3VuZ19rbTQxNnM0MDMwY3QgX19pbml0ZGF0YSA9IHsKLQkucm93cwkJCT0gMTMsCi0JLnRjawkJCT0gOCwKLQkudHJjZAkJCT0gMjQsCS8qIDMgQ0xLcyAqLwotCS50cnAJCQk9IDI0LAkvKiAzIENMS3MgKi8KLQkudHdyCQkJPSAxNiwJLyogVHJkbDogMiBDTEtzICovCi0JLnJlZnJlc2gJCT0gNjQwMDAsCi0JLmNhc19sYXRlbmN5CQk9IDMsCi19OwotCi1zdGF0aWMgc3RydWN0IHNkcmFtX3BhcmFtcyB3Ym9uZF93OTgyNTE2YWg3NWxfY2wzX3BhcmFtcyBfX2luaXRkYXRhID0gewotCS5yb3dzCQkJPSAxNiwKLQkudGNrCQkJPSA4LAotCS50cmNkCQkJPSAyMCwKLQkudHJwCQkJPSAyMCwKLQkudHdyCQkJPSA4LAotCS5yZWZyZXNoCQk9IDY0MDAwLAotCS5jYXNfbGF0ZW5jeQkJPSAzLAorc3RhdGljIHN0cnVjdCBzZHJhbV9wYXJhbXMgc2RyYW1fdGJsW10gX19pbml0ZGF0YSA9IHsKKwl7CS8qIFRvc2hpYmEgVEM1OVNNNzE2IENMMiAqLworCQkubmFtZQkJPSAiVEM1OVNNNzE2LUNMMiIsCisJCS5yb3dzCQk9IDEyLAorCQkudGNrCQk9IDEwLAorCQkudHJjZAkJPSAyMCwKKwkJLnRycAkJPSAyMCwKKwkJLnR3cgkJPSAxMCwKKwkJLnJlZnJlc2gJPSA2NDAwMCwKKwkJLmNhc19sYXRlbmN5CT0gMiwKKwl9LCB7CS8qIFRvc2hpYmEgVEM1OVNNNzE2IENMMyAqLworCQkubmFtZQkJPSAiVEM1OVNNNzE2LUNMMyIsCisJCS5yb3dzCQk9IDEyLAorCQkudGNrCQk9IDgsCisJCS50cmNkCQk9IDIwLAorCQkudHJwCQk9IDIwLAorCQkudHdyCQk9IDgsCisJCS5yZWZyZXNoCT0gNjQwMDAsCisJCS5jYXNfbGF0ZW5jeQk9IDMsCisJfSwgewkvKiBTYW1zdW5nIEs0UzY0MTYzMkQgVEM3NSAqLworCQkubmFtZQkJPSAiSzRTNjQxNjMyRCIsCisJCS5yb3dzCQk9IDE0LAorCQkudGNrCQk9IDksCisJCS50cmNkCQk9IDI3LAorCQkudHJwCQk9IDIwLAorCQkudHdyCQk9IDksCisJCS5yZWZyZXNoCT0gNjQwMDAsCisJCS5jYXNfbGF0ZW5jeQk9IDMsCisJfSwgewkvKiBTYW1zdW5nIEtNNDE2UzQwMzBDVCAqLworCQkubmFtZQkJPSAiS000MTZTNDAzMENUIiwKKwkJLnJvd3MJCT0gMTMsCisJCS50Y2sJCT0gOCwKKwkJLnRyY2QJCT0gMjQsCS8qIDMgQ0xLcyAqLworCQkudHJwCQk9IDI0LAkvKiAzIENMS3MgKi8KKwkJLnR3cgkJPSAxNiwJLyogVHJkbDogMiBDTEtzICovCisJCS5yZWZyZXNoCT0gNjQwMDAsCisJCS5jYXNfbGF0ZW5jeQk9IDMsCisJfSwgewkvKiBXaW5ib25kIFc5ODI1MTZBSDc1TCBDTDMgKi8KKwkJLm5hbWUJCT0gIlc5ODI1MTZBSDc1TCIsCisJCS5yb3dzCQk9IDE2LAorCQkudGNrCQk9IDgsCisJCS50cmNkCQk9IDIwLAorCQkudHJwCQk9IDIwLAorCQkudHdyCQk9IDgsCisJCS5yZWZyZXNoCT0gNjQwMDAsCisJCS5jYXNfbGF0ZW5jeQk9IDMsCisJfSwKIH07CiAKIHN0YXRpYyBzdHJ1Y3Qgc2RyYW1fcGFyYW1zIHNkcmFtX3BhcmFtczsKQEAgLTMzNiwxOSArMzM5LDM2IEBACiAJLm5hbWUJCT0gInNhMTExMCIsCiB9OwogCitzdGF0aWMgc3RydWN0IHNkcmFtX3BhcmFtcyAqc2ExMTEwX2ZpbmRfc2RyYW0oY29uc3QgY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3Qgc2RyYW1fcGFyYW1zICpzZHJhbTsKKworCWZvciAoc2RyYW0gPSBzZHJhbV90Ymw7IHNkcmFtIDwgc2RyYW1fdGJsICsgQVJSQVlfU0laRShzZHJhbV90YmwpOyBzZHJhbSsrKQorCQlpZiAoc3RyY21wKG5hbWUsIHNkcmFtLT5uYW1lKSA9PSAwKQorCQkJcmV0dXJuIHNkcmFtOworCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjaGFyIHNkcmFtX25hbWVbMTZdOworCiBzdGF0aWMgaW50IF9faW5pdCBzYTExMTBfY2xrX2luaXQodm9pZCkKIHsKLQlzdHJ1Y3Qgc2RyYW1fcGFyYW1zICpzZHJhbSA9IE5VTEw7CisJc3RydWN0IHNkcmFtX3BhcmFtcyAqc2RyYW07CisJY29uc3QgY2hhciAqbmFtZSA9IHNkcmFtX25hbWU7CiAKLQlpZiAobWFjaGluZV9pc19hc3NhYmV0KCkpCi0JCXNkcmFtID0gJnRjNTlzbTcxNl9jbDNfcGFyYW1zOworCWlmICghbmFtZVswXSkgeworCQlpZiAobWFjaGluZV9pc19hc3NhYmV0KCkpCisJCQluYW1lID0gIlRDNTlTTTcxNi1DTDMiOwogCi0JaWYgKG1hY2hpbmVfaXNfcHRfc3lzdGVtMygpKQotCQlzZHJhbSA9ICZzYW1zdW5nX2s0czY0MTYzMmRfdGM3NTsKKwkJaWYgKG1hY2hpbmVfaXNfcHRfc3lzdGVtMygpKQorCQkJbmFtZSA9ICJLNFM2NDE2MzJEIjsKIAotCWlmIChtYWNoaW5lX2lzX2gzMTAwKCkpCi0JCXNkcmFtID0gJnNhbXN1bmdfa200MTZzNDAzMGN0OworCQlpZiAobWFjaGluZV9pc19oMzEwMCgpKQorCQkJbmFtZSA9ICJLTTQxNlM0MDMwQ1QiOworCX0KIAorCXNkcmFtID0gc2ExMTEwX2ZpbmRfc2RyYW0obmFtZSk7CiAJaWYgKHNkcmFtKSB7CiAJCXByaW50ayhLRVJOX0RFQlVHICJTRFJBTTogdGNrOiAlZCB0cmNkOiAlZCB0cnA6ICVkIgogCQkJIiB0d3I6ICVkIHJlZnJlc2g6ICVkIGNhc19sYXRlbmN5OiAlZFxuIiwKQEAgLTM2Myw0ICszODMsNSBAQAogCXJldHVybiAwOwogfQogCittb2R1bGVfcGFyYW1fc3RyaW5nKHNkcmFtLCBzZHJhbV9uYW1lLCBzaXplb2Yoc2RyYW1fbmFtZSksIDApOwogYXJjaF9pbml0Y2FsbChzYTExMTBfY2xrX2luaXQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vS2NvbmZpZyBiL2FyY2gvYXJtL21tL0tjb25maWcKaW5kZXggYzRiY2E3NS4uNWY4MGYxOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vS2NvbmZpZworKysgYi9hcmNoL2FybS9tbS9LY29uZmlnCkBAIC0xMjEsOCArMTIxLDggQEAKICMgQVJNOTI2VAogY29uZmlnIENQVV9BUk05MjZUCiAJYm9vbCAiU3VwcG9ydCBBUk05MjZUIHByb2Nlc3NvciIKLQlkZXBlbmRzIG9uIEFSQ0hfSU5URUdSQVRPUiB8fCBBUkNIX1ZFUlNBVElMRV9QQiB8fCBNQUNIX1ZFUlNBVElMRV9BQiB8fCBBUkNIX09NQVA3MzAgfHwgQVJDSF9PTUFQMTZYWCB8fCBNQUNIX1JFQUxWSUVXX0VCIHx8IEFSQ0hfUE5YNDAwOCB8fCBBUkNIX05FVFggfHwgQ1BVX1MzQzI0MTIKLQlkZWZhdWx0IHkgaWYgQVJDSF9WRVJTQVRJTEVfUEIgfHwgTUFDSF9WRVJTQVRJTEVfQUIgfHwgQVJDSF9PTUFQNzMwIHx8IEFSQ0hfT01BUDE2WFggfHwgQVJDSF9QTlg0MDA4IHx8IEFSQ0hfTkVUWCB8fCBDUFVfUzNDMjQxMgorCWRlcGVuZHMgb24gQVJDSF9JTlRFR1JBVE9SIHx8IEFSQ0hfVkVSU0FUSUxFX1BCIHx8IE1BQ0hfVkVSU0FUSUxFX0FCIHx8IEFSQ0hfT01BUDczMCB8fCBBUkNIX09NQVAxNlhYIHx8IE1BQ0hfUkVBTFZJRVdfRUIgfHwgQVJDSF9QTlg0MDA4IHx8IEFSQ0hfTkVUWCB8fCBDUFVfUzNDMjQxMiB8fCBBUkNIX0FUOTFTQU05MjYwIHx8IEFSQ0hfQVQ5MVNBTTkyNjEKKwlkZWZhdWx0IHkgaWYgQVJDSF9WRVJTQVRJTEVfUEIgfHwgTUFDSF9WRVJTQVRJTEVfQUIgfHwgQVJDSF9PTUFQNzMwIHx8IEFSQ0hfT01BUDE2WFggfHwgQVJDSF9QTlg0MDA4IHx8IEFSQ0hfTkVUWCB8fCBDUFVfUzNDMjQxMiB8fCBBUkNIX0FUOTFTQU05MjYwIHx8IEFSQ0hfQVQ5MVNBTTkyNjEKIAlzZWxlY3QgQ1BVXzMydjUKIAlzZWxlY3QgQ1BVX0FCUlRfRVY1VEoKIAlzZWxlY3QgQ1BVX0NBQ0hFX1ZJVlQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL2lvcmVtYXAuYyBiL2FyY2gvYXJtL21tL2lvcmVtYXAuYwppbmRleCA3NjkxY2ZkLi43ZWFjODdmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9pb3JlbWFwLmMKKysrIGIvYXJjaC9hcm0vbW0vaW9yZW1hcC5jCkBAIC0yNyw3ICsyNywxNiBAQAogCiAjaW5jbHVkZSA8YXNtL2NhY2hlZmx1c2guaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vbW11X2NvbnRleHQuaD4KKyNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPgogI2luY2x1ZGUgPGFzbS90bGJmbHVzaC5oPgorI2luY2x1ZGUgPGFzbS9zaXplcy5oPgorCisvKgorICogVXNlZCBieSBpb3JlbWFwKCkgYW5kIGlvdW5tYXAoKSBjb2RlIHRvIG1hcmsgKHN1cGVyKXNlY3Rpb24tbWFwcGVkCisgKiBJL08gcmVnaW9ucyBpbiB2bV9zdHJ1Y3QtPmZsYWdzIGZpZWxkLgorICovCisjZGVmaW5lIFZNX0FSTV9TRUNUSU9OX01BUFBJTkcJMHg4MDAwMDAwMAogCiBzdGF0aWMgaW5saW5lIHZvaWQKIHJlbWFwX2FyZWFfcHRlKHB0ZV90ICogcHRlLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKQEAgLTExMywxMCArMTIyLDE2OCBAQAogCQlkaXIrKzsKIAl9IHdoaWxlIChhZGRyZXNzICYmIChhZGRyZXNzIDwgZW5kKSk7CiAKLQlmbHVzaF9jYWNoZV92bWFwKHN0YXJ0LCBlbmQpOwogCXJldHVybiBlcnI7CiB9CiAKKwordm9pZCBfX2NoZWNrX2t2bV9zZXEoc3RydWN0IG1tX3N0cnVjdCAqbW0pCit7CisJdW5zaWduZWQgaW50IHNlcTsKKworCWRvIHsKKwkJc2VxID0gaW5pdF9tbS5jb250ZXh0Lmt2bV9zZXE7CisJCW1lbWNweShwZ2Rfb2Zmc2V0KG1tLCBWTUFMTE9DX1NUQVJUKSwKKwkJICAgICAgIHBnZF9vZmZzZXRfayhWTUFMTE9DX1NUQVJUKSwKKwkJICAgICAgIHNpemVvZihwZ2RfdCkgKiAocGdkX2luZGV4KFZNQUxMT0NfRU5EKSAtCisJCQkJCXBnZF9pbmRleChWTUFMTE9DX1NUQVJUKSkpOworCQltbS0+Y29udGV4dC5rdm1fc2VxID0gc2VxOworCX0gd2hpbGUgKHNlcSAhPSBpbml0X21tLmNvbnRleHQua3ZtX3NlcSk7Cit9CisKKyNpZm5kZWYgQ09ORklHX1NNUAorLyoKKyAqIFNlY3Rpb24gc3VwcG9ydCBpcyB1bnNhZmUgb24gU01QIC0gSWYgeW91IGlvdW5tYXAgYW5kIGlvcmVtYXAgYSByZWdpb24sCisgKiB0aGUgb3RoZXIgQ1BVcyB3aWxsIG5vdCBzZWUgdGhpcyBjaGFuZ2UgdW50aWwgdGhlaXIgbmV4dCBjb250ZXh0IHN3aXRjaC4KKyAqIE1lYW53aGlsZSwgKGVnKSBpZiBhbiBpbnRlcnJ1cHQgY29tZXMgaW4gb24gb25lIG9mIHRob3NlIG90aGVyIENQVXMKKyAqIHdoaWNoIHJlcXVpcmVzIHRoZSBuZXcgaW9yZW1hcCdkIHJlZ2lvbiB0byBiZSByZWZlcmVuY2VkLCB0aGUgQ1BVIHdpbGwKKyAqIHJlZmVyZW5jZSB0aGUgX29sZF8gcmVnaW9uLgorICoKKyAqIE5vdGUgdGhhdCBnZXRfdm1fYXJlYSgpIGFsbG9jYXRlcyBhIGd1YXJkIDRLIHBhZ2UsIHNvIHdlIG5lZWQgdG8gbWFzaworICogdGhlIHNpemUgYmFjayB0byAxTUIgYWxpZ25lZCBvciB3ZSB3aWxsIG92ZXJmbG93IGluIHRoZSBsb29wIGJlbG93LgorICovCitzdGF0aWMgdm9pZCB1bm1hcF9hcmVhX3NlY3Rpb25zKHVuc2lnbmVkIGxvbmcgdmlydCwgdW5zaWduZWQgbG9uZyBzaXplKQoreworCXVuc2lnbmVkIGxvbmcgYWRkciA9IHZpcnQsIGVuZCA9IHZpcnQgKyAoc2l6ZSAmIH5TWl8xTSk7CisJcGdkX3QgKnBnZDsKKworCWZsdXNoX2NhY2hlX3Z1bm1hcChhZGRyLCBlbmQpOworCXBnZCA9IHBnZF9vZmZzZXRfayhhZGRyKTsKKwlkbyB7CisJCXBtZF90IHBtZCwgKnBtZHAgPSBwbWRfb2Zmc2V0KHBnZCwgYWRkcik7CisKKwkJcG1kID0gKnBtZHA7CisJCWlmICghcG1kX25vbmUocG1kKSkgeworCQkJLyoKKwkJCSAqIENsZWFyIHRoZSBQTUQgZnJvbSB0aGUgcGFnZSB0YWJsZSwgYW5kCisJCQkgKiBpbmNyZW1lbnQgdGhlIGt2bSBzZXF1ZW5jZSBzbyBvdGhlcnMKKwkJCSAqIG5vdGljZSB0aGlzIGNoYW5nZS4KKwkJCSAqCisJCQkgKiBOb3RlOiB0aGlzIGlzIHN0aWxsIHJhY3kgb24gU01QIG1hY2hpbmVzLgorCQkJICovCisJCQlwbWRfY2xlYXIocG1kcCk7CisJCQlpbml0X21tLmNvbnRleHQua3ZtX3NlcSsrOworCisJCQkvKgorCQkJICogRnJlZSB0aGUgcGFnZSB0YWJsZSwgaWYgdGhlcmUgd2FzIG9uZS4KKwkJCSAqLworCQkJaWYgKChwbWRfdmFsKHBtZCkgJiBQTURfVFlQRV9NQVNLKSA9PSBQTURfVFlQRV9UQUJMRSkKKwkJCQlwdGVfZnJlZV9rZXJuZWwocG1kX3BhZ2Vfa2VybmVsKHBtZCkpOworCQl9CisKKwkJYWRkciArPSBQR0RJUl9TSVpFOworCQlwZ2QrKzsKKwl9IHdoaWxlIChhZGRyIDwgZW5kKTsKKworCS8qCisJICogRW5zdXJlIHRoYXQgdGhlIGFjdGl2ZV9tbSBpcyB1cCB0byBkYXRlIC0gd2Ugd2FudCB0bworCSAqIGNhdGNoIGFueSB1c2UtYWZ0ZXItaW91bm1hcCBjYXNlcy4KKwkgKi8KKwlpZiAoY3VycmVudC0+YWN0aXZlX21tLT5jb250ZXh0Lmt2bV9zZXEgIT0gaW5pdF9tbS5jb250ZXh0Lmt2bV9zZXEpCisJCV9fY2hlY2tfa3ZtX3NlcShjdXJyZW50LT5hY3RpdmVfbW0pOworCisJZmx1c2hfdGxiX2tlcm5lbF9yYW5nZSh2aXJ0LCBlbmQpOworfQorCitzdGF0aWMgaW50CityZW1hcF9hcmVhX3NlY3Rpb25zKHVuc2lnbmVkIGxvbmcgdmlydCwgdW5zaWduZWQgbG9uZyBwZm4sCisJCSAgICB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCit7CisJdW5zaWduZWQgbG9uZyBwcm90LCBhZGRyID0gdmlydCwgZW5kID0gdmlydCArIHNpemU7CisJcGdkX3QgKnBnZDsKKworCS8qCisJICogUmVtb3ZlIGFuZCBmcmVlIGFueSBQVEUtYmFzZWQgbWFwcGluZywgYW5kCisJICogc3luYyB0aGUgY3VycmVudCBrZXJuZWwgbWFwcGluZy4KKwkgKi8KKwl1bm1hcF9hcmVhX3NlY3Rpb25zKHZpcnQsIHNpemUpOworCisJcHJvdCA9IFBNRF9UWVBFX1NFQ1QgfCBQTURfU0VDVF9BUF9XUklURSB8IFBNRF9ET01BSU4oRE9NQUlOX0lPKSB8CisJICAgICAgIChmbGFncyAmIChMX1BURV9DQUNIRUFCTEUgfCBMX1BURV9CVUZGRVJBQkxFKSk7CisKKwkvKgorCSAqIEFSTXY2IGFuZCBhYm92ZSBuZWVkIFhOIHNldCB0byBwcmV2ZW50IHNwZWN1bGF0aXZlIHByZWZldGNoZXMKKwkgKiBoaXR0aW5nIElPLgorCSAqLworCWlmIChjcHVfYXJjaGl0ZWN0dXJlKCkgPj0gQ1BVX0FSQ0hfQVJNdjYpCisJCXByb3QgfD0gUE1EX1NFQ1RfWE47CisKKwlwZ2QgPSBwZ2Rfb2Zmc2V0X2soYWRkcik7CisJZG8geworCQlwbWRfdCAqcG1kID0gcG1kX29mZnNldChwZ2QsIGFkZHIpOworCisJCXBtZFswXSA9IF9fcG1kKF9fcGZuX3RvX3BoeXMocGZuKSB8IHByb3QpOworCQlwZm4gKz0gU1pfMU0gPj4gUEFHRV9TSElGVDsKKwkJcG1kWzFdID0gX19wbWQoX19wZm5fdG9fcGh5cyhwZm4pIHwgcHJvdCk7CisJCXBmbiArPSBTWl8xTSA+PiBQQUdFX1NISUZUOworCQlmbHVzaF9wbWRfZW50cnkocG1kKTsKKworCQlhZGRyICs9IFBHRElSX1NJWkU7CisJCXBnZCsrOworCX0gd2hpbGUgKGFkZHIgPCBlbmQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3JlbWFwX2FyZWFfc3VwZXJzZWN0aW9ucyh1bnNpZ25lZCBsb25nIHZpcnQsIHVuc2lnbmVkIGxvbmcgcGZuLAorCQkJIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwl1bnNpZ25lZCBsb25nIHByb3QsIGFkZHIgPSB2aXJ0LCBlbmQgPSB2aXJ0ICsgc2l6ZTsKKwlwZ2RfdCAqcGdkOworCisJLyoKKwkgKiBSZW1vdmUgYW5kIGZyZWUgYW55IFBURS1iYXNlZCBtYXBwaW5nLCBhbmQKKwkgKiBzeW5jIHRoZSBjdXJyZW50IGtlcm5lbCBtYXBwaW5nLgorCSAqLworCXVubWFwX2FyZWFfc2VjdGlvbnModmlydCwgc2l6ZSk7CisKKwlwcm90ID0gUE1EX1RZUEVfU0VDVCB8IFBNRF9TRUNUX1NVUEVSIHwgUE1EX1NFQ1RfQVBfV1JJVEUgfAorCQkJUE1EX0RPTUFJTihET01BSU5fSU8pIHwKKwkJCShmbGFncyAmIChMX1BURV9DQUNIRUFCTEUgfCBMX1BURV9CVUZGRVJBQkxFKSk7CisKKwkvKgorCSAqIEFSTXY2IGFuZCBhYm92ZSBuZWVkIFhOIHNldCB0byBwcmV2ZW50IHNwZWN1bGF0aXZlIHByZWZldGNoZXMKKwkgKiBoaXR0aW5nIElPLgorCSAqLworCWlmIChjcHVfYXJjaGl0ZWN0dXJlKCkgPj0gQ1BVX0FSQ0hfQVJNdjYpCisJCXByb3QgfD0gUE1EX1NFQ1RfWE47CisKKwlwZ2QgPSBwZ2Rfb2Zmc2V0X2sodmlydCk7CisJZG8geworCQl1bnNpZ25lZCBsb25nIHN1cGVyX3BtZF92YWwsIGk7CisKKwkJc3VwZXJfcG1kX3ZhbCA9IF9fcGZuX3RvX3BoeXMocGZuKSB8IHByb3Q7CisJCXN1cGVyX3BtZF92YWwgfD0gKChwZm4gPj4gKDMyIC0gUEFHRV9TSElGVCkpICYgMHhmKSA8PCAyMDsKKworCQlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCQlwbWRfdCAqcG1kID0gcG1kX29mZnNldChwZ2QsIGFkZHIpOworCisJCQlwbWRbMF0gPSBfX3BtZChzdXBlcl9wbWRfdmFsKTsKKwkJCXBtZFsxXSA9IF9fcG1kKHN1cGVyX3BtZF92YWwpOworCQkJZmx1c2hfcG1kX2VudHJ5KHBtZCk7CisKKwkJCWFkZHIgKz0gUEdESVJfU0laRTsKKwkJCXBnZCsrOworCQl9CisKKwkJcGZuICs9IFNVUEVSU0VDVElPTl9TSVpFID4+IFBBR0VfU0hJRlQ7CisJfSB3aGlsZSAoYWRkciA8IGVuZCk7CisKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCisKIC8qCiAgKiBSZW1hcCBhbiBhcmJpdHJhcnkgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSBpbnRvIHRoZSBrZXJuZWwgdmlydHVhbAogICogYWRkcmVzcyBzcGFjZS4gTmVlZGVkIHdoZW4gdGhlIGtlcm5lbCB3YW50cyB0byBhY2Nlc3MgaGlnaCBhZGRyZXNzZXMKQEAgLTEzMywxOCArMzAwLDQyIEBACiBfX2lvcmVtYXBfcGZuKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG9mZnNldCwgc2l6ZV90IHNpemUsCiAJICAgICAgdW5zaWduZWQgbG9uZyBmbGFncykKIHsKKwlpbnQgZXJyOwogCXVuc2lnbmVkIGxvbmcgYWRkcjsKICAJc3RydWN0IHZtX3N0cnVjdCAqIGFyZWE7CisJdW5zaWduZWQgaW50IGNyID0gZ2V0X2NyKCk7CisKKwkvKgorCSAqIEhpZ2ggbWFwcGluZ3MgbXVzdCBiZSBzdXBlcnNlY3Rpb24gYWxpZ25lZAorCSAqLworCWlmIChwZm4gPj0gMHgxMDAwMDAgJiYgKF9fcGZuX3RvX3BoeXMocGZuKSAmIH5TVVBFUlNFQ1RJT05fTUFTSykpCisJCXJldHVybiBOVUxMOwogCiAgCWFyZWEgPSBnZXRfdm1fYXJlYShzaXplLCBWTV9JT1JFTUFQKTsKICAJaWYgKCFhcmVhKQogIAkJcmV0dXJuIE5VTEw7CiAgCWFkZHIgPSAodW5zaWduZWQgbG9uZylhcmVhLT5hZGRyOwotIAlpZiAocmVtYXBfYXJlYV9wYWdlcyhhZGRyLCBwZm4sIHNpemUsIGZsYWdzKSkgeworCisjaWZuZGVmIENPTkZJR19TTVAKKwlpZiAoKCgoY3B1X2FyY2hpdGVjdHVyZSgpID49IENQVV9BUkNIX0FSTXY2KSAmJiAoY3IgJiBDUl9YUCkpIHx8CisJICAgICAgIGNwdV9pc194c2MzKCkpICYmCisJICAgICAgICEoKF9fcGZuX3RvX3BoeXMocGZuKSB8IHNpemUgfCBhZGRyKSAmIH5TVVBFUlNFQ1RJT05fTUFTSykpIHsKKwkJYXJlYS0+ZmxhZ3MgfD0gVk1fQVJNX1NFQ1RJT05fTUFQUElORzsKKwkJZXJyID0gcmVtYXBfYXJlYV9zdXBlcnNlY3Rpb25zKGFkZHIsIHBmbiwgc2l6ZSwgZmxhZ3MpOworCX0gZWxzZSBpZiAoISgoX19wZm5fdG9fcGh5cyhwZm4pIHwgc2l6ZSB8IGFkZHIpICYgflBNRF9NQVNLKSkgeworCQlhcmVhLT5mbGFncyB8PSBWTV9BUk1fU0VDVElPTl9NQVBQSU5HOworCQllcnIgPSByZW1hcF9hcmVhX3NlY3Rpb25zKGFkZHIsIHBmbiwgc2l6ZSwgZmxhZ3MpOworCX0gZWxzZQorI2VuZGlmCisJCWVyciA9IHJlbWFwX2FyZWFfcGFnZXMoYWRkciwgcGZuLCBzaXplLCBmbGFncyk7CisKKwlpZiAoZXJyKSB7CiAgCQl2dW5tYXAoKHZvaWQgKilhZGRyKTsKICAJCXJldHVybiBOVUxMOwogIAl9Ci0gCXJldHVybiAodm9pZCBfX2lvbWVtICopIChvZmZzZXQgKyAoY2hhciAqKWFkZHIpOworCisJZmx1c2hfY2FjaGVfdm1hcChhZGRyLCBhZGRyICsgc2l6ZSk7CisJcmV0dXJuICh2b2lkIF9faW9tZW0gKikgKG9mZnNldCArIGFkZHIpOwogfQogRVhQT1JUX1NZTUJPTChfX2lvcmVtYXBfcGZuKTsKIApAQCAtMTczLDYgKzM2NCwzNCBAQAogCiB2b2lkIF9faW91bm1hcCh2b2lkIF9faW9tZW0gKmFkZHIpCiB7Ci0JdnVubWFwKCh2b2lkICopKFBBR0VfTUFTSyAmICh1bnNpZ25lZCBsb25nKWFkZHIpKTsKKwlzdHJ1Y3Qgdm1fc3RydWN0ICoqcCwgKnRtcDsKKwl1bnNpZ25lZCBpbnQgc2VjdGlvbl9tYXBwaW5nID0gMDsKKworCWFkZHIgPSAodm9pZCBfX2lvbWVtICopKFBBR0VfTUFTSyAmICh1bnNpZ25lZCBsb25nKWFkZHIpOworCisJLyoKKwkgKiBJZiB0aGlzIGlzIGEgc2VjdGlvbiBiYXNlZCBtYXBwaW5nIHdlIG5lZWQgdG8gaGFuZGxlIGl0CisJICogc3BlY2lhbGx5IGFzIHRoZSBWTSBzdWJ5c3lzdGVtIGRvZXMgbm90IGtub3cgaG93IHRvIGhhbmRsZQorCSAqIHN1Y2ggYSBiZWFzdC4gV2UgbmVlZCB0aGUgbG9jayBoZXJlIGIvYyB3ZSBuZWVkIHRvIGNsZWFyCisJICogYWxsIHRoZSBtYXBwaW5ncyBiZWZvcmUgdGhlIGFyZWEgY2FuIGJlIHJlY2xhaW1lZAorCSAqIGJ5IHNvbWVvbmUgZWxzZS4KKwkgKi8KKwl3cml0ZV9sb2NrKCZ2bWxpc3RfbG9jayk7CisJZm9yIChwID0gJnZtbGlzdCA7ICh0bXAgPSAqcCkgOyBwID0gJnRtcC0+bmV4dCkgeworCQlpZigodG1wLT5mbGFncyAmIFZNX0lPUkVNQVApICYmICh0bXAtPmFkZHIgPT0gYWRkcikpIHsKKwkJCWlmICh0bXAtPmZsYWdzICYgVk1fQVJNX1NFQ1RJT05fTUFQUElORykgeworCQkJCSpwID0gdG1wLT5uZXh0OworCQkJCXVubWFwX2FyZWFfc2VjdGlvbnMoKHVuc2lnbmVkIGxvbmcpdG1wLT5hZGRyLAorCQkJCQkJICAgIHRtcC0+c2l6ZSk7CisJCQkJa2ZyZWUodG1wKTsKKwkJCQlzZWN0aW9uX21hcHBpbmcgPSAxOworCQkJfQorCQkJYnJlYWs7CisJCX0KKwl9CisJd3JpdGVfdW5sb2NrKCZ2bWxpc3RfbG9jayk7CisKKwlpZiAoIXNlY3Rpb25fbWFwcGluZykKKwkJdnVubWFwKGFkZHIpOwogfQogRVhQT1JUX1NZTUJPTChfX2lvdW5tYXApOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vbW0tYXJtdi5jIGIvYXJjaC9hcm0vbW0vbW0tYXJtdi5jCmluZGV4IDk1MjczZGUuLmQwNjQ0MGMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL21tLWFybXYuYworKysgYi9hcmNoL2FybS9tbS9tbS1hcm12LmMKQEAgLTMwMywxNiArMzAzLDE2IEBACiAJCS5wcm90X3B0ZSAgPSBMX1BURV9QUkVTRU5UIHwgTF9QVEVfWU9VTkcgfCBMX1BURV9ESVJUWSB8CiAJCQkJTF9QVEVfV1JJVEUsCiAJCS5wcm90X2wxICAgPSBQTURfVFlQRV9UQUJMRSwKLQkJLnByb3Rfc2VjdCA9IFBNRF9UWVBFX1NFQ1QgfCBQTURfU0VDVF9VTkNBQ0hFRCB8CisJCS5wcm90X3NlY3QgPSBQTURfVFlQRV9TRUNUIHwgUE1EX0JJVDQgfCBQTURfU0VDVF9VTkNBQ0hFRCB8CiAJCQkJUE1EX1NFQ1RfQVBfV1JJVEUsCiAJCS5kb21haW4gICAgPSBET01BSU5fSU8sCiAJfSwKIAlbTVRfQ0FDSEVDTEVBTl0gPSB7Ci0JCS5wcm90X3NlY3QgPSBQTURfVFlQRV9TRUNULAorCQkucHJvdF9zZWN0ID0gUE1EX1RZUEVfU0VDVCB8IFBNRF9CSVQ0LAogCQkuZG9tYWluICAgID0gRE9NQUlOX0tFUk5FTCwKIAl9LAogCVtNVF9NSU5JQ0xFQU5dID0gewotCQkucHJvdF9zZWN0ID0gUE1EX1RZUEVfU0VDVCB8IFBNRF9TRUNUX01JTklDQUNIRSwKKwkJLnByb3Rfc2VjdCA9IFBNRF9UWVBFX1NFQ1QgfCBQTURfQklUNCB8IFBNRF9TRUNUX01JTklDQUNIRSwKIAkJLmRvbWFpbiAgICA9IERPTUFJTl9LRVJORUwsCiAJfSwKIAlbTVRfTE9XX1ZFQ1RPUlNdID0gewpAQCAtMzI4LDI1ICszMjgsMjUgQEAKIAkJLmRvbWFpbiAgICA9IERPTUFJTl9VU0VSLAogCX0sCiAJW01UX01FTU9SWV0gPSB7Ci0JCS5wcm90X3NlY3QgPSBQTURfVFlQRV9TRUNUIHwgUE1EX1NFQ1RfQVBfV1JJVEUsCisJCS5wcm90X3NlY3QgPSBQTURfVFlQRV9TRUNUIHwgUE1EX0JJVDQgfCBQTURfU0VDVF9BUF9XUklURSwKIAkJLmRvbWFpbiAgICA9IERPTUFJTl9LRVJORUwsCiAJfSwKIAlbTVRfUk9NXSA9IHsKLQkJLnByb3Rfc2VjdCA9IFBNRF9UWVBFX1NFQ1QsCisJCS5wcm90X3NlY3QgPSBQTURfVFlQRV9TRUNUIHwgUE1EX0JJVDQsCiAJCS5kb21haW4gICAgPSBET01BSU5fS0VSTkVMLAogCX0sCiAJW01UX0lYUDIwMDBfREVWSUNFXSA9IHsgLyogSVhQMjQwMCByZXF1aXJlcyBYQ0I9MTAxIGZvciBvbi1jaGlwIEkvTyAqLwogCQkucHJvdF9wdGUgID0gTF9QVEVfUFJFU0VOVCB8IExfUFRFX1lPVU5HIHwgTF9QVEVfRElSVFkgfAogCQkJCUxfUFRFX1dSSVRFLAogCQkucHJvdF9sMSAgID0gUE1EX1RZUEVfVEFCTEUsCi0JCS5wcm90X3NlY3QgPSBQTURfVFlQRV9TRUNUIHwgUE1EX1NFQ1RfVU5DQUNIRUQgfAorCQkucHJvdF9zZWN0ID0gUE1EX1RZUEVfU0VDVCB8IFBNRF9CSVQ0IHwgUE1EX1NFQ1RfVU5DQUNIRUQgfAogCQkJCVBNRF9TRUNUX0FQX1dSSVRFIHwgUE1EX1NFQ1RfQlVGRkVSQUJMRSB8CiAJCQkJUE1EX1NFQ1RfVEVYKDEpLAogCQkuZG9tYWluICAgID0gRE9NQUlOX0lPLAogCX0sCiAJW01UX05PTlNIQVJFRF9ERVZJQ0VdID0gewogCQkucHJvdF9sMSAgID0gUE1EX1RZUEVfVEFCTEUsCi0JCS5wcm90X3NlY3QgPSBQTURfVFlQRV9TRUNUIHwgUE1EX1NFQ1RfTk9OU0hBUkVEX0RFViB8CisJCS5wcm90X3NlY3QgPSBQTURfVFlQRV9TRUNUIHwgUE1EX0JJVDQgfCBQTURfU0VDVF9OT05TSEFSRURfREVWIHwKIAkJCQlQTURfU0VDVF9BUF9XUklURSwKIAkJLmRvbWFpbiAgICA9IERPTUFJTl9JTywKIAl9CkBAIC0zNzYsMTQgKzM3NiwyMSBAQAogCQllY2NfbWFzayA9IDA7CiAJfQogCi0JaWYgKGNwdV9hcmNoIDw9IENQVV9BUkNIX0FSTXY1VEVKICYmICFjcHVfaXNfeHNjYWxlKCkpIHsKLQkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobWVtX3R5cGVzKTsgaSsrKSB7CisJLyoKKwkgKiBYc2NhbGUgbXVzdCBub3QgaGF2ZSBQTUQgYml0IDQgc2V0IGZvciBzZWN0aW9uIG1hcHBpbmdzLgorCSAqLworCWlmIChjcHVfaXNfeHNjYWxlKCkpCisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG1lbV90eXBlcyk7IGkrKykKKwkJCW1lbV90eXBlc1tpXS5wcm90X3NlY3QgJj0gflBNRF9CSVQ0OworCisJLyoKKwkgKiBBUk12NSBhbmQgbG93ZXIsIGV4Y2x1ZGluZyBYc2NhbGUsIGJpdCA0IG11c3QgYmUgc2V0IGZvcgorCSAqIHBhZ2UgdGFibGVzLgorCSAqLworCWlmIChjcHVfYXJjaCA8IENQVV9BUkNIX0FSTXY2ICYmICFjcHVfaXNfeHNjYWxlKCkpCisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG1lbV90eXBlcyk7IGkrKykKIAkJCWlmIChtZW1fdHlwZXNbaV0ucHJvdF9sMSkKIAkJCQltZW1fdHlwZXNbaV0ucHJvdF9sMSB8PSBQTURfQklUNDsKLQkJCWlmIChtZW1fdHlwZXNbaV0ucHJvdF9zZWN0KQotCQkJCW1lbV90eXBlc1tpXS5wcm90X3NlY3QgfD0gUE1EX0JJVDQ7Ci0JCX0KLQl9CiAKIAljcCA9ICZjYWNoZV9wb2xpY2llc1tjYWNoZXBvbGljeV07CiAJa2Vybl9wZ3Byb3QgPSB1c2VyX3BncHJvdCA9IGNwLT5wdGU7CkBAIC00MDcsOCArNDE0LDggQEAKIAkJICogYml0IDQgYmVjb21lcyBYTiB3aGljaCB3ZSBtdXN0IGNsZWFyIGZvciB0aGUKIAkJICoga2VybmVsIG1lbW9yeSBtYXBwaW5nLgogCQkgKi8KLQkJbWVtX3R5cGVzW01UX01FTU9SWV0ucHJvdF9zZWN0ICY9IH5QTURfQklUNDsKLQkJbWVtX3R5cGVzW01UX1JPTV0ucHJvdF9zZWN0ICY9IH5QTURfQklUNDsKKwkJbWVtX3R5cGVzW01UX01FTU9SWV0ucHJvdF9zZWN0ICY9IH5QTURfU0VDVF9YTjsKKwkJbWVtX3R5cGVzW01UX1JPTV0ucHJvdF9zZWN0ICY9IH5QTURfU0VDVF9YTjsKIAogCQkvKgogCQkgKiBNYXJrIGNhY2hlIGNsZWFuIGFyZWFzIGFuZCBYSVAgUk9NIHJlYWQgb25seQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIwLlMgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjAuUwppbmRleCBhMWI4NWQ5Li42YzczMWE0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjAuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjAuUwpAQCAtNTI1LDYgKzUyNSw5IEBACiAJLmxvbmcgICBQTURfVFlQRV9TRUNUIHwgXAogCQlQTURfU0VDVF9BUF9XUklURSB8IFwKIAkJUE1EX1NFQ1RfQVBfUkVBRAorCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCVBNRF9TRUNUX0FQX1JFQUQKIAliCV9fYXJtMTAyMF9zZXR1cAogCS5sb25nCWNwdV9hcmNoX25hbWUKIAkubG9uZwljcHVfZWxmX25hbWUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyMGUuUyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyMGUuUwppbmRleCA2MTMwOTMwLi4yNjlmNDg1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjBlLlMKKysrIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIwZS5TCkBAIC00ODksNiArNDg5LDEwIEBACiAJCVBNRF9CSVQ0IHwgXAogCQlQTURfU0VDVF9BUF9XUklURSB8IFwKIAkJUE1EX1NFQ1RfQVBfUkVBRAorCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJUE1EX0JJVDQgfCBcCisJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAorCQlQTURfU0VDVF9BUF9SRUFECiAJYglfX2FybTEwMjBlX3NldHVwCiAJLmxvbmcJY3B1X2FyY2hfbmFtZQogCS5sb25nCWNwdV9lbGZfbmFtZQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIyLlMgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjIuUwppbmRleCBlNDM1OTc0Li4wNjQzYmQ0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjIuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjIuUwpAQCAtNDcyLDYgKzQ3MiwxMCBAQAogCQlQTURfQklUNCB8IFwKIAkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCiAJCVBNRF9TRUNUX0FQX1JFQUQKKwkubG9uZyAgIFBNRF9UWVBFX1NFQ1QgfCBcCisJCVBNRF9CSVQ0IHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAogCWIJX19hcm0xMDIyX3NldHVwCiAJLmxvbmcJY3B1X2FyY2hfbmFtZQogCS5sb25nCWNwdV9lbGZfbmFtZQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDI2LlMgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjYuUwppbmRleCA4NWQ4ZmIwLi4wNjY4YmZiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjYuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjYuUwpAQCAtNDY4LDYgKzQ2OCwxMCBAQAogCQlQTURfQklUNCB8IFwKIAkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCiAJCVBNRF9TRUNUX0FQX1JFQUQKKwkubG9uZyAgIFBNRF9UWVBFX1NFQ1QgfCBcCisJCVBNRF9CSVQ0IHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAogCWIJX19hcm0xMDI2X3NldHVwCiAJLmxvbmcJY3B1X2FyY2hfbmFtZQogCS5sb25nCWNwdV9lbGZfbmFtZQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm02XzcuUyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtNl83LlMKaW5kZXggN2E3MDVlZC4uMDQzMmU0OCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm02XzcuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTZfNy5TCkBAIC0zNTUsNiArMzU1LDEwIEBACiAJCS5sb25nCTB4NDE1NjA2MDAKIAkJLmxvbmcJMHhmZmZmZmZmMAogCQkubG9uZwkweDAwMDAwYzFlCisJCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJCVBNRF9CSVQ0IHwgXAorCQkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCQlQTURfU0VDVF9BUF9SRUFECiAJCWIJX19hcm02X3NldHVwCiAJCS5sb25nCWNwdV9hcmNoX25hbWUKIAkJLmxvbmcJY3B1X2VsZl9uYW1lCkBAIC0zNzEsNiArMzc1LDEwIEBACiAJCS5sb25nCTB4NDE1NjA2MTAKIAkJLmxvbmcJMHhmZmZmZmZmMAogCQkubG9uZwkweDAwMDAwYzFlCisJCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJCVBNRF9CSVQ0IHwgXAorCQkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCQlQTURfU0VDVF9BUF9SRUFECiAJCWIJX19hcm02X3NldHVwCiAJCS5sb25nCWNwdV9hcmNoX25hbWUKIAkJLmxvbmcJY3B1X2VsZl9uYW1lCkBAIC0zODcsNiArMzk1LDEwIEBACiAJCS5sb25nCTB4NDEwMDcwMDAKIAkJLmxvbmcJMHhmZmZmZmYwMAogCQkubG9uZwkweDAwMDAwYzFlCisJCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJCVBNRF9CSVQ0IHwgXAorCQkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCQlQTURfU0VDVF9BUF9SRUFECiAJCWIJX19hcm03X3NldHVwCiAJCS5sb25nCWNwdV9hcmNoX25hbWUKIAkJLmxvbmcJY3B1X2VsZl9uYW1lCkBAIC00MDgsNiArNDIwLDEwIEBACiAJCQlQTURfQklUNCB8IFwKIAkJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQkJUE1EX1NFQ1RfQVBfUkVBRAorCQkubG9uZyAgIFBNRF9UWVBFX1NFQ1QgfCBcCisJCQlQTURfQklUNCB8IFwKKwkJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAorCQkJUE1EX1NFQ1RfQVBfUkVBRAogCQliCV9fYXJtN19zZXR1cAogCQkubG9uZwljcHVfYXJjaF9uYW1lCiAJCS5sb25nCWNwdV9lbGZfbmFtZQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm03MjAuUyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtNzIwLlMKaW5kZXggYjIyYmMzYS4uMGU2OTQ2YSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm03MjAuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTcyMC5TCkBAIC0yNDMsNiArMjQzLDEwIEBACiAJCQlQTURfQklUNCB8IFwKIAkJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQkJUE1EX1NFQ1RfQVBfUkVBRAorCQkubG9uZyAgIFBNRF9UWVBFX1NFQ1QgfCBcCisJCQlQTURfQklUNCB8IFwKKwkJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAorCQkJUE1EX1NFQ1RfQVBfUkVBRAogCQliCV9fYXJtNzEwX3NldHVwCQkJCUAgY3B1X2ZsdXNoCiAJCS5sb25nCWNwdV9hcmNoX25hbWUJCQkJQCBhcmNoX25hbWUKIAkJLmxvbmcJY3B1X2VsZl9uYW1lCQkJCUAgZWxmX25hbWUKQEAgLTI2NCw2ICsyNjgsMTAgQEAKIAkJCVBNRF9CSVQ0IHwgXAogCQkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCiAJCQlQTURfU0VDVF9BUF9SRUFECisJCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJCVBNRF9CSVQ0IHwgXAorCQkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCQlQTURfU0VDVF9BUF9SRUFECiAJCWIJX19hcm03MjBfc2V0dXAJCQkJQCBjcHVfZmx1c2gKIAkJLmxvbmcJY3B1X2FyY2hfbmFtZQkJCQlAIGFyY2hfbmFtZQogCQkubG9uZwljcHVfZWxmX25hbWUJCQkJQCBlbGZfbmFtZQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjAuUyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtOTIwLlMKaW5kZXggZTY0N2MzYS4uNDUyOTJmNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjAuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTkyMC5TCkBAIC00NTgsNiArNDU4LDEwIEBACiAJCVBNRF9CSVQ0IHwgXAogCQlQTURfU0VDVF9BUF9XUklURSB8IFwKIAkJUE1EX1NFQ1RfQVBfUkVBRAorCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJUE1EX0JJVDQgfCBcCisJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAorCQlQTURfU0VDVF9BUF9SRUFECiAJYglfX2FybTkyMF9zZXR1cAogCS5sb25nCWNwdV9hcmNoX25hbWUKIAkubG9uZwljcHVfZWxmX25hbWUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL3Byb2MtYXJtOTIyLlMgYi9hcmNoL2FybS9tbS9wcm9jLWFybTkyMi5TCmluZGV4IDBkMjM3NjkuLjNjNTc1MTkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL3Byb2MtYXJtOTIyLlMKKysrIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjIuUwpAQCAtNDYyLDYgKzQ2MiwxMCBAQAogCQlQTURfQklUNCB8IFwKIAkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCiAJCVBNRF9TRUNUX0FQX1JFQUQKKwkubG9uZyAgIFBNRF9UWVBFX1NFQ1QgfCBcCisJCVBNRF9CSVQ0IHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAogCWIJX19hcm05MjJfc2V0dXAKIAkubG9uZwljcHVfYXJjaF9uYW1lCiAJLmxvbmcJY3B1X2VsZl9uYW1lCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLWFybTkyNS5TIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjUuUwppbmRleCAwN2YyYTg4Li42NmQ1YTMyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTkyNS5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtOTI1LlMKQEAgLTUyMiw2ICs1MjIsMTAgQEAKIAkJUE1EX0JJVDQgfCBcCiAJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQlQTURfU0VDVF9BUF9SRUFECisJLmxvbmcgICBQTURfVFlQRV9TRUNUIHwgXAorCQlQTURfQklUNCB8IFwKKwkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCVBNRF9TRUNUX0FQX1JFQUQKIAliCV9fYXJtOTI1X3NldHVwCiAJLmxvbmcJY3B1X2FyY2hfbmFtZQogCS5sb25nCWNwdV9lbGZfbmFtZQpAQCAtNTQxLDYgKzU0NSwxMCBAQAogCQlQTURfQklUNCB8IFwKIAkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCiAJCVBNRF9TRUNUX0FQX1JFQUQKKwkubG9uZyAgIFBNRF9UWVBFX1NFQ1QgfCBcCisJCVBNRF9CSVQ0IHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAogCWIJX19hcm05MjVfc2V0dXAKIAkubG9uZwljcHVfYXJjaF9uYW1lCiAJLmxvbmcJY3B1X2VsZl9uYW1lCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLWFybTkyNi5TIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjYuUwppbmRleCA3N2U1ODM3Li4xODk4MjBlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLWFybTkyNi5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtOTI2LlMKQEAgLTQ3NCw2ICs0NzQsMTAgQEAKIAkJUE1EX0JJVDQgfCBcCiAJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQlQTURfU0VDVF9BUF9SRUFECisJLmxvbmcgICBQTURfVFlQRV9TRUNUIHwgXAorCQlQTURfQklUNCB8IFwKKwkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCVBNRF9TRUNUX0FQX1JFQUQKIAliCV9fYXJtOTI2X3NldHVwCiAJLmxvbmcJY3B1X2FyY2hfbmFtZQogCS5sb25nCWNwdV9lbGZfbmFtZQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1zYTExMC5TIGIvYXJjaC9hcm0vbW0vcHJvYy1zYTExMC5TCmluZGV4IGVlYWNmNjAuLmU4MTIyNDYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL3Byb2Mtc2ExMTAuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLXNhMTEwLlMKQEAgLTI1Myw2ICsyNTMsOSBAQAogCQlQTURfU0VDVF9DQUNIRUFCTEUgfCBcCiAJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQlQTURfU0VDVF9BUF9SRUFECisJLmxvbmcgICBQTURfVFlQRV9TRUNUIHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAogCWIJX19zYTExMF9zZXR1cAogCS5sb25nCWNwdV9hcmNoX25hbWUKIAkubG9uZwljcHVfZWxmX25hbWUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL3Byb2Mtc2ExMTAwLlMgYi9hcmNoL2FybS9tbS9wcm9jLXNhMTEwMC5TCmluZGV4IGI0MzY5NmMuLmJhMzJjYzYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL3Byb2Mtc2ExMTAwLlMKKysrIGIvYXJjaC9hcm0vbW0vcHJvYy1zYTExMDAuUwpAQCAtMjczLDYgKzI3Myw5IEBACiAJCVBNRF9TRUNUX0NBQ0hFQUJMRSB8IFwKIAkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCiAJCVBNRF9TRUNUX0FQX1JFQUQKKwkubG9uZyAgIFBNRF9UWVBFX1NFQ1QgfCBcCisJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAorCQlQTURfU0VDVF9BUF9SRUFECiAJYglfX3NhMTEwMF9zZXR1cAogCS5sb25nCWNwdV9hcmNoX25hbWUKIAkubG9uZwljcHVfZWxmX25hbWUKQEAgLTI5Myw2ICsyOTYsOSBAQAogCQlQTURfU0VDVF9DQUNIRUFCTEUgfCBcCiAJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQlQTURfU0VDVF9BUF9SRUFECisJLmxvbmcgICBQTURfVFlQRV9TRUNUIHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAogCWIJX19zYTExMDBfc2V0dXAKIAkubG9uZwljcHVfYXJjaF9uYW1lCiAJLmxvbmcJY3B1X2VsZl9uYW1lCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLXY2LlMgYi9hcmNoL2FybS9tbS9wcm9jLXY2LlMKaW5kZXggZjAwNzVmMS4uNmY3MjU0OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy12Ni5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtdjYuUwpAQCAtMjY2LDYgKzI2NiwxMCBAQAogCQlQTURfU0VDVF9DQUNIRUFCTEUgfCBcCiAJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQlQTURfU0VDVF9BUF9SRUFECisJLmxvbmcgICBQTURfVFlQRV9TRUNUIHwgXAorCQlQTURfU0VDVF9YTiB8IFwKKwkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCVBNRF9TRUNUX0FQX1JFQUQKIAliCV9fdjZfc2V0dXAKIAkubG9uZwljcHVfYXJjaF9uYW1lCiAJLmxvbmcJY3B1X2VsZl9uYW1lCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLXhzYzMuUyBiL2FyY2gvYXJtL21tL3Byb2MteHNjMy5TCmluZGV4IDIzMDM3OTAuLjRhY2UyZDggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL3Byb2MteHNjMy5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MteHNjMy5TCkBAIC00OTAsNyArNDkwLDE0IEBACiBfX3hzYzNfcHJvY19pbmZvOgogCS5sb25nCTB4NjkwNTYwMDAKIAkubG9uZwkweGZmZmZlMDAwCi0JLmxvbmcJMHgwMDAwMGMwZQorCS5sb25nCVBNRF9UWVBFX1NFQ1QgfCBcCisJCVBNRF9TRUNUX0JVRkZFUkFCTEUgfCBcCisJCVBNRF9TRUNUX0NBQ0hFQUJMRSB8IFwKKwkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCVBNRF9TRUNUX0FQX1JFQUQKKwkubG9uZyAgIFBNRF9UWVBFX1NFQ1QgfCBcCisJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAorCQlQTURfU0VDVF9BUF9SRUFECiAJYglfX3hzYzNfc2V0dXAKIAkubG9uZwljcHVfYXJjaF9uYW1lCiAJLmxvbmcJY3B1X2VsZl9uYW1lCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLXhzY2FsZS5TIGIvYXJjaC9hcm0vbW0vcHJvYy14c2NhbGUuUwppbmRleCAxYWQwYzg4Li41MzUzOTVlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLXhzY2FsZS5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MteHNjYWxlLlMKQEAgLTU5Myw2ICs1OTMsOSBAQAogCQlQTURfU0VDVF9DQUNIRUFCTEUgfCBcCiAJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQlQTURfU0VDVF9BUF9SRUFECisJLmxvbmcgICBQTURfVFlQRV9TRUNUIHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAogCWIJX194c2NhbGVfc2V0dXAKIAkubG9uZwljcHVfYXJjaF9uYW1lCiAJLmxvbmcJY3B1X2VsZl9uYW1lCkBAIC02MTMsNiArNjE2LDkgQEAKIAkJUE1EX1NFQ1RfQ0FDSEVBQkxFIHwgXAogCQlQTURfU0VDVF9BUF9XUklURSB8IFwKIAkJUE1EX1NFQ1RfQVBfUkVBRAorCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCVBNRF9TRUNUX0FQX1JFQUQKIAliCV9feHNjYWxlX3NldHVwCiAJLmxvbmcJY3B1X2FyY2hfbmFtZQogCS5sb25nCWNwdV9lbGZfbmFtZQpAQCAtNjMzLDYgKzYzOSw5IEBACiAJCVBNRF9TRUNUX0NBQ0hFQUJMRSB8IFwKIAkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCiAJCVBNRF9TRUNUX0FQX1JFQUQKKwkubG9uZyAgIFBNRF9UWVBFX1NFQ1QgfCBcCisJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAorCQlQTURfU0VDVF9BUF9SRUFECiAJYglfX3hzY2FsZV9zZXR1cAogCS5sb25nCWNwdV9hcmNoX25hbWUKIAkubG9uZwljcHVfZWxmX25hbWUKQEAgLTY1Myw2ICs2NjIsOSBAQAogCQlQTURfU0VDVF9DQUNIRUFCTEUgfCBcCiAJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQlQTURfU0VDVF9BUF9SRUFECisJLmxvbmcgICBQTURfVFlQRV9TRUNUIHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAogCWIJX194c2NhbGVfc2V0dXAKIAkubG9uZwljcHVfYXJjaF9uYW1lCiAJLmxvbmcJY3B1X2VsZl9uYW1lCkBAIC02NzMsNiArNjg1LDkgQEAKIAkJUE1EX1NFQ1RfQ0FDSEVBQkxFIHwgXAogCQlQTURfU0VDVF9BUF9XUklURSB8IFwKIAkJUE1EX1NFQ1RfQVBfUkVBRAorCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCVBNRF9TRUNUX0FQX1JFQUQKIAliCV9feHNjYWxlX3NldHVwCiAJLmxvbmcJY3B1X2FyY2hfbmFtZQogCS5sb25nCWNwdV9lbGZfbmFtZQpAQCAtNjkzLDYgKzcwOCw5IEBACiAJCVBNRF9TRUNUX0NBQ0hFQUJMRSB8IFwKIAkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCiAJCVBNRF9TRUNUX0FQX1JFQUQKKwkubG9uZyAgIFBNRF9UWVBFX1NFQ1QgfCBcCisJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAorCQlQTURfU0VDVF9BUF9SRUFECiAJYiAgICAgICBfX3hzY2FsZV9zZXR1cAogCS5sb25nICAgY3B1X2FyY2hfbmFtZQogCS5sb25nICAgY3B1X2VsZl9uYW1lCkBAIC03MTMsNiArNzMxLDkgQEAKIAkJUE1EX1NFQ1RfQ0FDSEVBQkxFIHwgXAogCQlQTURfU0VDVF9BUF9XUklURSB8IFwKIAkJUE1EX1NFQ1RfQVBfUkVBRAorCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCVBNRF9TRUNUX0FQX1JFQUQKIAliICAgICAgIF9feHNjYWxlX3NldHVwCiAJLmxvbmcgICBjcHVfYXJjaF9uYW1lCiAJLmxvbmcgICBjcHVfZWxmX25hbWUKQEAgLTczMyw2ICs3NTQsOSBAQAogCQlQTURfU0VDVF9DQUNIRUFCTEUgfCBcCiAJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQlQTURfU0VDVF9BUF9SRUFECisJLmxvbmcgICBQTURfVFlQRV9TRUNUIHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAogCWIgICAgICAgX194c2NhbGVfc2V0dXAKIAkubG9uZyAgIGNwdV9hcmNoX25hbWUKIAkubG9uZyAgIGNwdV9lbGZfbmFtZQpAQCAtNzQ4LDcgKzc3MiwxNCBAQAogX19peHA0NnhfcHJvY19pbmZvOgogCS5sb25nICAgMHg2OTA1NDIwMAogCS5sb25nICAgMHhmZmZmZmYwMAotCS5sb25nICAgMHgwMDAwMGMwZQorCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJUE1EX1NFQ1RfQlVGRkVSQUJMRSB8IFwKKwkJUE1EX1NFQ1RfQ0FDSEVBQkxFIHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAorCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCVBNRF9TRUNUX0FQX1JFQUQKIAliICAgICAgIF9feHNjYWxlX3NldHVwCiAJLmxvbmcgICBjcHVfYXJjaF9uYW1lCiAJLmxvbmcgICBjcHVfZWxmX25hbWUKQEAgLTc2OSw2ICs4MDAsOSBAQAogCQlQTURfU0VDVF9DQUNIRUFCTEUgfCBcCiAJCVBNRF9TRUNUX0FQX1dSSVRFIHwgXAogCQlQTURfU0VDVF9BUF9SRUFECisJLmxvbmcgICBQTURfVFlQRV9TRUNUIHwgXAorCQlQTURfU0VDVF9BUF9XUklURSB8IFwKKwkJUE1EX1NFQ1RfQVBfUkVBRAogCWIJX194c2NhbGVfc2V0dXAKIAkubG9uZwljcHVfYXJjaF9uYW1lCiAJLmxvbmcJY3B1X2VsZl9uYW1lCkBAIC03ODksNiArODIzLDkgQEAKIAkJUE1EX1NFQ1RfQ0FDSEVBQkxFIHwgXAogCQlQTURfU0VDVF9BUF9XUklURSB8IFwKIAkJUE1EX1NFQ1RfQVBfUkVBRAorCS5sb25nICAgUE1EX1RZUEVfU0VDVCB8IFwKKwkJUE1EX1NFQ1RfQVBfV1JJVEUgfCBcCisJCVBNRF9TRUNUX0FQX1JFQUQKIAliCV9feHNjYWxlX3NldHVwCiAJLmxvbmcJY3B1X2FyY2hfbmFtZQogCS5sb25nCWNwdV9lbGZfbmFtZQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vbWFwL0tjb25maWcgYi9hcmNoL2FybS9wbGF0LW9tYXAvS2NvbmZpZwppbmRleCBlYzQ5NDk1Li5lYzc1MmUxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvS2NvbmZpZworKysgYi9hcmNoL2FybS9wbGF0LW9tYXAvS2NvbmZpZwpAQCAtOTEsNyArOTEsNyBAQAogCiBjb25maWcgT01BUF9ETV9USU1FUgogCWJvb2wgIlVzZSBkdWFsLW1vZGUgdGltZXIiCi0JZGVwZW5kcyBvbiBBUkNIX09NQVAxNlhYCisJZGVwZW5kcyBvbiBBUkNIX09NQVAxNlhYIHx8IEFSQ0hfT01BUDI0WFgKIAloZWxwCiAJIFNlbGVjdCB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byB1c2UgT01BUCBEdWFsLU1vZGUgdGltZXJzLgogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvY2xvY2suYyBiL2FyY2gvYXJtL3BsYXQtb21hcC9jbG9jay5jCmluZGV4IDMyZWMwNGMuLmRjZDlkODEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC9jbG9jay5jCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC9jbG9jay5jCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRlIDxhc20vYXJjaC9jbG9jay5oPgogCi1MSVNUX0hFQUQoY2xvY2tzKTsKK3N0YXRpYyBMSVNUX0hFQUQoY2xvY2tzKTsKIHN0YXRpYyBERUZJTkVfTVVURVgoY2xvY2tzX211dGV4KTsKLURFRklORV9TUElOTE9DSyhjbG9ja2Z3X2xvY2spOworc3RhdGljIERFRklORV9TUElOTE9DSyhjbG9ja2Z3X2xvY2spOwogCiBzdGF0aWMgc3RydWN0IGNsa19mdW5jdGlvbnMgKmFyY2hfY2xvY2s7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb21hcC9jcHUtb21hcC5jIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2NwdS1vbWFwLmMKaW5kZXggOThlZGM5Zi4uYTBjNzFkYyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1vbWFwL2NwdS1vbWFwLmMKKysrIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2NwdS1vbWFwLmMKQEAgLTI1LDYgKzI1LDE0IEBACiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL3N5c3RlbS5oPgogCisjZGVmaW5lIFZFUllfSElfUkFURQk5MDAwMDAwMDAKKworI2lmZGVmIENPTkZJR19BUkNIX09NQVAxCisjZGVmaW5lIE1QVV9DTEsJCSJtcHUiCisjZWxzZQorI2RlZmluZSBNUFVfQ0xLCQkidmlydF9wcmNtX3NldCIKKyNlbmRpZgorCiAvKiBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgU0RSQU0gdGltaW5nIGNoYW5nZXMgKi8KIAogaW50IG9tYXBfdmVyaWZ5X3NwZWVkKHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KQpAQCAtMzYsNyArNDQsNyBAQAogCiAJY3B1ZnJlcV92ZXJpZnlfd2l0aGluX2xpbWl0cyhwb2xpY3ksIHBvbGljeS0+Y3B1aW5mby5taW5fZnJlcSwKIAkJCQkgICAgIHBvbGljeS0+Y3B1aW5mby5tYXhfZnJlcSk7Ci0JbXB1X2NsayA9IGNsa19nZXQoTlVMTCwgIm1wdSIpOworCW1wdV9jbGsgPSBjbGtfZ2V0KE5VTEwsIE1QVV9DTEspOwogCWlmIChJU19FUlIobXB1X2NsaykpCiAJCXJldHVybiBQVFJfRVJSKG1wdV9jbGspOwogCXBvbGljeS0+bWluID0gY2xrX3JvdW5kX3JhdGUobXB1X2NsaywgcG9saWN5LT5taW4gKiAxMDAwKSAvIDEwMDA7CkBAIC01Niw3ICs2NCw3IEBACiAJaWYgKGNwdSkKIAkJcmV0dXJuIDA7CiAKLQltcHVfY2xrID0gY2xrX2dldChOVUxMLCAibXB1Iik7CisJbXB1X2NsayA9IGNsa19nZXQoTlVMTCwgTVBVX0NMSyk7CiAJaWYgKElTX0VSUihtcHVfY2xrKSkKIAkJcmV0dXJuIDA7CiAJcmF0ZSA9IGNsa19nZXRfcmF0ZShtcHVfY2xrKSAvIDEwMDA7CkBAIC03Myw3ICs4MSw3IEBACiAJc3RydWN0IGNwdWZyZXFfZnJlcXMgZnJlcXM7CiAJaW50IHJldCA9IDA7CiAKLQltcHVfY2xrID0gY2xrX2dldChOVUxMLCAibXB1Iik7CisJbXB1X2NsayA9IGNsa19nZXQoTlVMTCwgTVBVX0NMSyk7CiAJaWYgKElTX0VSUihtcHVfY2xrKSkKIAkJcmV0dXJuIFBUUl9FUlIobXB1X2Nsayk7CiAKQEAgLTkzLDcgKzEwMSw3IEBACiB7CiAJc3RydWN0IGNsayAqIG1wdV9jbGs7CiAKLQltcHVfY2xrID0gY2xrX2dldChOVUxMLCAibXB1Iik7CisJbXB1X2NsayA9IGNsa19nZXQoTlVMTCwgTVBVX0NMSyk7CiAJaWYgKElTX0VSUihtcHVfY2xrKSkKIAkJcmV0dXJuIFBUUl9FUlIobXB1X2Nsayk7CiAKQEAgLTEwMiw3ICsxMTAsNyBAQAogCXBvbGljeS0+Y3VyID0gcG9saWN5LT5taW4gPSBwb2xpY3ktPm1heCA9IG9tYXBfZ2V0c3BlZWQoMCk7CiAJcG9saWN5LT5nb3Zlcm5vciA9IENQVUZSRVFfREVGQVVMVF9HT1ZFUk5PUjsKIAlwb2xpY3ktPmNwdWluZm8ubWluX2ZyZXEgPSBjbGtfcm91bmRfcmF0ZShtcHVfY2xrLCAwKSAvIDEwMDA7Ci0JcG9saWN5LT5jcHVpbmZvLm1heF9mcmVxID0gY2xrX3JvdW5kX3JhdGUobXB1X2NsaywgMjE2MDAwMDAwKSAvIDEwMDA7CisJcG9saWN5LT5jcHVpbmZvLm1heF9mcmVxID0gY2xrX3JvdW5kX3JhdGUobXB1X2NsaywgVkVSWV9ISV9SQVRFKSAvIDEwMDA7CiAJcG9saWN5LT5jcHVpbmZvLnRyYW5zaXRpb25fbGF0ZW5jeSA9IENQVUZSRVFfRVRFUk5BTDsKIAljbGtfcHV0KG1wdV9jbGspOwogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvZGV2aWNlcy5jIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2RldmljZXMuYwppbmRleCA1ZDVkNmViLi44YmZmNTY2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvZGV2aWNlcy5jCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC9kZXZpY2VzLmMKQEAgLTEwNSw3ICsxMDUsNyBAQAogCQlvbWFwX2NmZ19yZWcoRTIwXzE2MTBfS0JSMyk7CiAJCW9tYXBfY2ZnX3JlZyhFMTlfMTYxMF9LQlI0KTsKIAkJb21hcF9jZmdfcmVnKE4xOV8xNjEwX0tCUjUpOwotCX0gZWxzZSBpZiAobWFjaGluZV9pc19vbWFwX3BlcnNldXMyKCkpIHsKKwl9IGVsc2UgaWYgKG1hY2hpbmVfaXNfb21hcF9wZXJzZXVzMigpIHx8IG1hY2hpbmVfaXNfb21hcF9mc2FtcGxlKCkpIHsKIAkJb21hcF9jZmdfcmVnKEUyXzczMF9LQlIwKTsKIAkJb21hcF9jZmdfcmVnKEo3XzczMF9LQlIxKTsKIAkJb21hcF9jZmdfcmVnKEUxXzczMF9LQlIyKTsKQEAgLTE2Miw4ICsxNjIsOCBAQAogCiBzdGF0aWMgc3RydWN0IHJlc291cmNlIG1tYzFfcmVzb3VyY2VzW10gPSB7CiAJewotCQkuc3RhcnQJCT0gSU9fQUREUkVTUyhPTUFQX01NQzFfQkFTRSksCi0JCS5lbmQJCT0gSU9fQUREUkVTUyhPTUFQX01NQzFfQkFTRSkgKyAweDdmLAorCQkuc3RhcnQJCT0gT01BUF9NTUMxX0JBU0UsCisJCS5lbmQJCT0gT01BUF9NTUMxX0JBU0UgKyAweDdmLAogCQkuZmxhZ3MJCT0gSU9SRVNPVVJDRV9NRU0sCiAJfSwKIAl7CkBAIC0xOTEsOCArMTkxLDggQEAKIAogc3RhdGljIHN0cnVjdCByZXNvdXJjZSBtbWMyX3Jlc291cmNlc1tdID0gewogCXsKLQkJLnN0YXJ0CQk9IElPX0FERFJFU1MoT01BUF9NTUMyX0JBU0UpLAotCQkuZW5kCQk9IElPX0FERFJFU1MoT01BUF9NTUMyX0JBU0UpICsgMHg3ZiwKKwkJLnN0YXJ0CQk9IE9NQVBfTU1DMl9CQVNFLAorCQkuZW5kCQk9IE9NQVBfTU1DMl9CQVNFICsgMHg3ZiwKIAkJLmZsYWdzCQk9IElPUkVTT1VSQ0VfTUVNLAogCX0sCiAJewpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vbWFwL2RtYS5jIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2RtYS5jCmluZGV4IDVkYWM0MjMuLmM1ZDAyMTQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC9kbWEuYworKysgYi9hcmNoL2FybS9wbGF0LW9tYXAvZG1hLmMKQEAgLTQzLDYgKzQzLDcgQEAKIAogI2RlZmluZSBPTUFQX0RNQV9BQ1RJVkUJCTB4MDEKICNkZWZpbmUgT01BUF9ETUFfQ0NSX0VOCQkoMSA8PCA3KQorI2RlZmluZSBPTUFQMl9ETUFfQ1NSX0NMRUFSX01BU0sJMHhmZmUKIAogI2RlZmluZSBPTUFQX0ZVTkNfTVVYX0FSTV9CQVNFCSgweGZmZmUxMDAwICsgMHhlYykKIApAQCAtMTY2LDE4ICsxNjcsMjQgQEAKIAlpZiAoY3B1X2lzX29tYXAyNHh4KCkgJiYgZG1hX3RyaWdnZXIpIHsKIAkJdTMyIHZhbCA9IE9NQVBfRE1BX0NDUl9SRUcobGNoKTsKIAorCQl2YWwgJj0gfigzIDw8IDE5KTsKIAkJaWYgKGRtYV90cmlnZ2VyID4gNjMpCiAJCQl2YWwgfD0gMSA8PCAyMDsKIAkJaWYgKGRtYV90cmlnZ2VyID4gMzEpCiAJCQl2YWwgfD0gMSA8PCAxOTsKIAorCQl2YWwgJj0gfigweDFmKTsKIAkJdmFsIHw9IChkbWFfdHJpZ2dlciAmIDB4MWYpOwogCiAJCWlmIChzeW5jX21vZGUgJiBPTUFQX0RNQV9TWU5DX0ZSQU1FKQogCQkJdmFsIHw9IDEgPDwgNTsKKwkJZWxzZQorCQkJdmFsICY9IH4oMSA8PCA1KTsKIAogCQlpZiAoc3luY19tb2RlICYgT01BUF9ETUFfU1lOQ19CTE9DSykKIAkJCXZhbCB8PSAxIDw8IDE4OworCQllbHNlCisJCQl2YWwgJj0gfigxIDw8IDE4KTsKIAogCQlpZiAoc3JjX29yX2RzdF9zeW5jaCkKIAkJCXZhbCB8PSAxIDw8IDI0OwkJLyogc291cmNlIHN5bmNoICovCkBAIC0yODYsMjIgKzI5MywzOSBAQAogCiB2b2lkIG9tYXBfc2V0X2RtYV9zcmNfYnVyc3RfbW9kZShpbnQgbGNoLCBlbnVtIG9tYXBfZG1hX2J1cnN0X21vZGUgYnVyc3RfbW9kZSkKIHsKKwl1bnNpZ25lZCBpbnQgYnVyc3QgPSAwOwogCU9NQVBfRE1BX0NTRFBfUkVHKGxjaCkgJj0gfigweDAzIDw8IDcpOwogCiAJc3dpdGNoIChidXJzdF9tb2RlKSB7CiAJY2FzZSBPTUFQX0RNQV9EQVRBX0JVUlNUX0RJUzoKIAkJYnJlYWs7CiAJY2FzZSBPTUFQX0RNQV9EQVRBX0JVUlNUXzQ6Ci0JCU9NQVBfRE1BX0NTRFBfUkVHKGxjaCkgfD0gKDB4MDIgPDwgNyk7CisJCWlmIChjcHVfaXNfb21hcDI0eHgoKSkKKwkJCWJ1cnN0ID0gMHgxOworCQllbHNlCisJCQlidXJzdCA9IDB4MjsKIAkJYnJlYWs7CiAJY2FzZSBPTUFQX0RNQV9EQVRBX0JVUlNUXzg6Ci0JCS8qIG5vdCBzdXBwb3J0ZWQgYnkgY3VycmVudCBoYXJkd2FyZQorCQlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKKwkJCWJ1cnN0ID0gMHgyOworCQkJYnJlYWs7CisJCX0KKwkJLyogbm90IHN1cHBvcnRlZCBieSBjdXJyZW50IGhhcmR3YXJlIG9uIE9NQVAxCiAJCSAqIHcgfD0gKDB4MDMgPDwgNyk7CiAJCSAqIGZhbGwgdGhyb3VnaAogCQkgKi8KKwljYXNlIE9NQVBfRE1BX0RBVEFfQlVSU1RfMTY6CisJCWlmIChjcHVfaXNfb21hcDI0eHgoKSkgeworCQkJYnVyc3QgPSAweDM7CisJCQlicmVhazsKKwkJfQorCQkvKiBPTUFQMSBkb24ndCBzdXBwb3J0IGJ1cnN0IDE2CisJCSAqIGZhbGwgdGhyb3VnaAorCQkgKi8KIAlkZWZhdWx0OgogCQlCVUcoKTsKIAl9CisJT01BUF9ETUFfQ1NEUF9SRUcobGNoKSB8PSAoYnVyc3QgPDwgNyk7CiB9CiAKIC8qIE5vdGUgdGhhdCBkZXN0X3BvcnQgaXMgb25seSBmb3IgT01BUDEgKi8KQEAgLTM0OCwzMCArMzcyLDQ5IEBACiAKIHZvaWQgb21hcF9zZXRfZG1hX2Rlc3RfYnVyc3RfbW9kZShpbnQgbGNoLCBlbnVtIG9tYXBfZG1hX2J1cnN0X21vZGUgYnVyc3RfbW9kZSkKIHsKKwl1bnNpZ25lZCBpbnQgYnVyc3QgPSAwOwogCU9NQVBfRE1BX0NTRFBfUkVHKGxjaCkgJj0gfigweDAzIDw8IDE0KTsKIAogCXN3aXRjaCAoYnVyc3RfbW9kZSkgewogCWNhc2UgT01BUF9ETUFfREFUQV9CVVJTVF9ESVM6CiAJCWJyZWFrOwogCWNhc2UgT01BUF9ETUFfREFUQV9CVVJTVF80OgotCQlPTUFQX0RNQV9DU0RQX1JFRyhsY2gpIHw9ICgweDAyIDw8IDE0KTsKKwkJaWYgKGNwdV9pc19vbWFwMjR4eCgpKQorCQkJYnVyc3QgPSAweDE7CisJCWVsc2UKKwkJCWJ1cnN0ID0gMHgyOwogCQlicmVhazsKIAljYXNlIE9NQVBfRE1BX0RBVEFfQlVSU1RfODoKLQkJT01BUF9ETUFfQ1NEUF9SRUcobGNoKSB8PSAoMHgwMyA8PCAxNCk7CisJCWlmIChjcHVfaXNfb21hcDI0eHgoKSkKKwkJCWJ1cnN0ID0gMHgyOworCQllbHNlCisJCQlidXJzdCA9IDB4MzsKIAkJYnJlYWs7CisJY2FzZSBPTUFQX0RNQV9EQVRBX0JVUlNUXzE2OgorCQlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKKwkJCWJ1cnN0ID0gMHgzOworCQkJYnJlYWs7CisJCX0KKwkJLyogT01BUDEgZG9uJ3Qgc3VwcG9ydCBidXJzdCAxNgorCQkgKiBmYWxsIHRocm91Z2gKKwkJICovCiAJZGVmYXVsdDoKIAkJcHJpbnRrKEtFUk5fRVJSICJJbnZhbGlkIERNQSBidXJzdCBtb2RlXG4iKTsKIAkJQlVHKCk7CiAJCXJldHVybjsKIAl9CisJT01BUF9ETUFfQ1NEUF9SRUcobGNoKSB8PSAoYnVyc3QgPDwgMTQpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgb21hcF9lbmFibGVfY2hhbm5lbF9pcnEoaW50IGxjaCkKIHsKIAl1MzIgc3RhdHVzOwogCi0JLyogUmVhZCBDU1IgdG8gbWFrZSBzdXJlIGl0J3MgY2xlYXJlZC4gKi8KLQlzdGF0dXMgPSBPTUFQX0RNQV9DU1JfUkVHKGxjaCk7CisJLyogQ2xlYXIgQ1NSICovCisJaWYgKGNwdV9jbGFzc19pc19vbWFwMSgpKQorCQlzdGF0dXMgPSBPTUFQX0RNQV9DU1JfUkVHKGxjaCk7CisJZWxzZSBpZiAoY3B1X2lzX29tYXAyNHh4KCkpCisJCU9NQVBfRE1BX0NTUl9SRUcobGNoKSA9IE9NQVAyX0RNQV9DU1JfQ0xFQVJfTUFTSzsKIAogCS8qIEVuYWJsZSBzb21lIG5pY2UgaW50ZXJydXB0cy4gKi8KIAlPTUFQX0RNQV9DSUNSX1JFRyhsY2gpID0gZG1hX2NoYW5bbGNoXS5lbmFibGVkX2lycXM7CkBAIC00NzAsMTEgKzUxMywxMyBAQAogCWNoYW4tPmRldl9uYW1lID0gZGV2X25hbWU7CiAJY2hhbi0+Y2FsbGJhY2sgPSBjYWxsYmFjazsKIAljaGFuLT5kYXRhID0gZGF0YTsKLQljaGFuLT5lbmFibGVkX2lycXMgPSBPTUFQX0RNQV9UT1VUX0lSUSB8IE9NQVBfRE1BX0RST1BfSVJRIHwKLQkJCQlPTUFQX0RNQV9CTE9DS19JUlE7CisJY2hhbi0+ZW5hYmxlZF9pcnFzID0gT01BUF9ETUFfRFJPUF9JUlEgfCBPTUFQX0RNQV9CTE9DS19JUlE7CiAKLQlpZiAoY3B1X2lzX29tYXAyNHh4KCkpCi0JCWNoYW4tPmVuYWJsZWRfaXJxcyB8PSBPTUFQMl9ETUFfVFJBTlNfRVJSX0lSUTsKKwlpZiAoY3B1X2NsYXNzX2lzX29tYXAxKCkpCisJCWNoYW4tPmVuYWJsZWRfaXJxcyB8PSBPTUFQMV9ETUFfVE9VVF9JUlE7CisJZWxzZSBpZiAoY3B1X2lzX29tYXAyNHh4KCkpCisJCWNoYW4tPmVuYWJsZWRfaXJxcyB8PSBPTUFQMl9ETUFfTUlTQUxJR05FRF9FUlJfSVJRIHwKKwkJCU9NQVAyX0RNQV9UUkFOU19FUlJfSVJROwogCiAJaWYgKGNwdV9pc19vbWFwMTZ4eCgpKSB7CiAJCS8qIElmIHRoZSBzeW5jIGRldmljZSBpcyBzZXQsIGNvbmZpZ3VyZSBpdCBkeW5hbWljYWxseS4gKi8KQEAgLTQ5NCw3ICs1MzksNyBAQAogCiAJCW9tYXBfZW5hYmxlX2NoYW5uZWxfaXJxKGZyZWVfY2gpOwogCQkvKiBDbGVhciB0aGUgQ1NSIHJlZ2lzdGVyIGFuZCBJUlEgc3RhdHVzIHJlZ2lzdGVyICovCi0JCU9NQVBfRE1BX0NTUl9SRUcoZnJlZV9jaCkgPSAweDA7CisJCU9NQVBfRE1BX0NTUl9SRUcoZnJlZV9jaCkgPSBPTUFQMl9ETUFfQ1NSX0NMRUFSX01BU0s7CiAJCW9tYXBfd3JpdGVsKH4weDAsIE9NQVBfRE1BNF9JUlFTVEFUVVNfTDApOwogCX0KIApAQCAtNTM0LDcgKzU3OSw3IEBACiAJCW9tYXBfd3JpdGVsKHZhbCwgT01BUF9ETUE0X0lSUUVOQUJMRV9MMCk7CiAKIAkJLyogQ2xlYXIgdGhlIENTUiByZWdpc3RlciBhbmQgSVJRIHN0YXR1cyByZWdpc3RlciAqLwotCQlPTUFQX0RNQV9DU1JfUkVHKGxjaCkgPSAweDA7CisJCU9NQVBfRE1BX0NTUl9SRUcobGNoKSA9IE9NQVAyX0RNQV9DU1JfQ0xFQVJfTUFTSzsKIAogCQl2YWwgPSBvbWFwX3JlYWRsKE9NQVBfRE1BNF9JUlFTVEFUVVNfTDApOwogCQl2YWwgfD0gMSA8PCBsY2g7CkBAIC03OTgsNyArODQzLDcgQEAKIAkJICAgICAgICIlZCAoQ1NSICUwNHgpXG4iLCBjaCwgY3NyKTsKIAkJcmV0dXJuIDA7CiAJfQotCWlmICh1bmxpa2VseShjc3IgJiBPTUFQX0RNQV9UT1VUX0lSUSkpCisJaWYgKHVubGlrZWx5KGNzciAmIE9NQVAxX0RNQV9UT1VUX0lSUSkpCiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIkRNQSB0aW1lb3V0IHdpdGggZGV2aWNlICVkXG4iLAogCQkgICAgICAgZG1hX2NoYW5bY2hdLmRldl9pZCk7CiAJaWYgKHVubGlrZWx5KGNzciAmIE9NQVBfRE1BX0RST1BfSVJRKSkKQEAgLTg0NiwyMCArODkxLDIxIEBACiAJCXJldHVybiAwOwogCWlmICh1bmxpa2VseShkbWFfY2hhbltjaF0uZGV2X2lkID09IC0xKSkKIAkJcmV0dXJuIDA7Ci0JLyogUkVWSVNJVDogQWNjb3JkaW5nIHRvIDI0eHggVFJNLCB0aGVyZSdzIG5vIFRPVVRfSUUgKi8KLQlpZiAodW5saWtlbHkoc3RhdHVzICYgT01BUF9ETUFfVE9VVF9JUlEpKQotCQlwcmludGsoS0VSTl9JTkZPICJETUEgdGltZW91dCB3aXRoIGRldmljZSAlZFxuIiwKLQkJICAgICAgIGRtYV9jaGFuW2NoXS5kZXZfaWQpOwogCWlmICh1bmxpa2VseShzdGF0dXMgJiBPTUFQX0RNQV9EUk9QX0lSUSkpCiAJCXByaW50ayhLRVJOX0lORk8KIAkJICAgICAgICJETUEgc3luY2hyb25pemF0aW9uIGV2ZW50IGRyb3Agb2NjdXJyZWQgd2l0aCBkZXZpY2UgIgogCQkgICAgICAgIiVkXG4iLCBkbWFfY2hhbltjaF0uZGV2X2lkKTsKLQogCWlmICh1bmxpa2VseShzdGF0dXMgJiBPTUFQMl9ETUFfVFJBTlNfRVJSX0lSUSkpCiAJCXByaW50ayhLRVJOX0lORk8gIkRNQSB0cmFuc2FjdGlvbiBlcnJvciB3aXRoIGRldmljZSAlZFxuIiwKIAkJICAgICAgIGRtYV9jaGFuW2NoXS5kZXZfaWQpOworCWlmICh1bmxpa2VseShzdGF0dXMgJiBPTUFQMl9ETUFfU0VDVVJFX0VSUl9JUlEpKQorCQlwcmludGsoS0VSTl9JTkZPICJETUEgc2VjdXJlIGVycm9yIHdpdGggZGV2aWNlICVkXG4iLAorCQkgICAgICAgZG1hX2NoYW5bY2hdLmRldl9pZCk7CisJaWYgKHVubGlrZWx5KHN0YXR1cyAmIE9NQVAyX0RNQV9NSVNBTElHTkVEX0VSUl9JUlEpKQorCQlwcmludGsoS0VSTl9JTkZPICJETUEgbWlzYWxpZ25lZCBlcnJvciB3aXRoIGRldmljZSAlZFxuIiwKKwkJICAgICAgIGRtYV9jaGFuW2NoXS5kZXZfaWQpOwogCi0JT01BUF9ETUFfQ1NSX1JFRyhjaCkgPSAweDIwOworCU9NQVBfRE1BX0NTUl9SRUcoY2gpID0gT01BUDJfRE1BX0NTUl9DTEVBUl9NQVNLOwogCiAJdmFsID0gb21hcF9yZWFkbChPTUFQX0RNQTRfSVJRU1RBVFVTX0wwKTsKIAkvKiBjaCBpbiB0aGlzIGZ1bmN0aW9uIGlzIGZyb20gMC0zMSB3aGlsZSBpbiByZWdpc3RlciBpdCBpcyAxLTMyICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvZG10aW1lci5jIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2RtdGltZXIuYwppbmRleCBlYmEzY2I1Li41MDUyNDQzIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvZG10aW1lci5jCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC9kbXRpbWVyLmMKQEAgLTQsNyArNCw4IEBACiAgKiBPTUFQIER1YWwtTW9kZSBUaW1lcnMKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEgQ29ycG9yYXRpb24KLSAqIEF1dGhvcjogTGF1cmkgTGV1a2t1bmVuIDxsYXVyaS5sZXVra3VuZW5Abm9raWEuY29tPgorICogT01BUDIgc3VwcG9ydCBieSBKdWhhIFlyam9sYQorICogQVBJIGltcHJvdmVtZW50cyBhbmQgT01BUDIgY2xvY2sgZnJhbWV3b3JrIHN1cHBvcnQgYnkgVGltbyBUZXJhcwogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKQEAgLTI2LDE1ICsyNywxNyBAQAogICovCiAKICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGFzbS9oYXJkd2FyZS5oPgogI2luY2x1ZGUgPGFzbS9hcmNoL2RtdGltZXIuaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vYXJjaC9pcnFzLmg+Ci0jaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KLSNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CiAKLSNkZWZpbmUgT01BUF9USU1FUl9DT1VOVAkJOAotCisvKiByZWdpc3RlciBvZmZzZXRzICovCiAjZGVmaW5lIE9NQVBfVElNRVJfSURfUkVHCQkweDAwCiAjZGVmaW5lIE9NQVBfVElNRVJfT0NQX0NGR19SRUcJCTB4MTAKICNkZWZpbmUgT01BUF9USU1FUl9TWVNfU1RBVF9SRUcJCTB4MTQKQEAgLTUwLDUyICs1MywxOTYgQEAKICNkZWZpbmUgT01BUF9USU1FUl9DQVBUVVJFX1JFRwkJMHgzYwogI2RlZmluZSBPTUFQX1RJTUVSX0lGX0NUUkxfUkVHCQkweDQwCiAKKy8qIHRpbWVyIGNvbnRyb2wgcmVnIGJpdHMgKi8KKyNkZWZpbmUgT01BUF9USU1FUl9DVFJMX0dQT0NGRwkJKDEgPDwgMTQpCisjZGVmaW5lIE9NQVBfVElNRVJfQ1RSTF9DQVBUTU9ERQkoMSA8PCAxMykKKyNkZWZpbmUgT01BUF9USU1FUl9DVFJMX1BUCQkoMSA8PCAxMikKKyNkZWZpbmUgT01BUF9USU1FUl9DVFJMX1RDTV9MT1dUT0hJR0gJKDB4MSA8PCA4KQorI2RlZmluZSBPTUFQX1RJTUVSX0NUUkxfVENNX0hJR0hUT0xPVwkoMHgyIDw8IDgpCisjZGVmaW5lIE9NQVBfVElNRVJfQ1RSTF9UQ01fQk9USEVER0VTCSgweDMgPDwgOCkKKyNkZWZpbmUgT01BUF9USU1FUl9DVFJMX1NDUFdNCQkoMSA8PCA3KQorI2RlZmluZSBPTUFQX1RJTUVSX0NUUkxfQ0UJCSgxIDw8IDYpCS8qIGNvbXBhcmUgZW5hYmxlICovCisjZGVmaW5lIE9NQVBfVElNRVJfQ1RSTF9QUkUJCSgxIDw8IDUpCS8qIHByZXNjYWxlciBlbmFibGUgKi8KKyNkZWZpbmUgT01BUF9USU1FUl9DVFJMX1BUVl9TSElGVAkyCQkvKiBob3cgbXVjaCB0byBzaGlmdCB0aGUgcHJlc2NhbGVyIHZhbHVlICovCisjZGVmaW5lIE9NQVBfVElNRVJfQ1RSTF9BUgkJKDEgPDwgMSkJLyogYXV0by1yZWxvYWQgZW5hYmxlICovCisjZGVmaW5lIE9NQVBfVElNRVJfQ1RSTF9TVAkJKDEgPDwgMCkJLyogc3RhcnQgdGltZXIgKi8KIAotc3RhdGljIHN0cnVjdCBkbXRpbWVyX2luZm9fc3RydWN0IHsKLQlzdHJ1Y3QgbGlzdF9oZWFkCXVudXNlZF90aW1lcnM7Ci0Jc3RydWN0IGxpc3RfaGVhZAlyZXNlcnZlZF90aW1lcnM7Ci19IGRtX3RpbWVyX2luZm87Ci0KLXN0YXRpYyBzdHJ1Y3Qgb21hcF9kbV90aW1lciBkbV90aW1lcnNbXSA9IHsKLQl7IC5iYXNlPTB4ZmZmYjE0MDAsIC5pcnE9SU5UXzE2MTBfR1BUSU1FUjEgfSwKLQl7IC5iYXNlPTB4ZmZmYjFjMDAsIC5pcnE9SU5UXzE2MTBfR1BUSU1FUjIgfSwKLQl7IC5iYXNlPTB4ZmZmYjI0MDAsIC5pcnE9SU5UXzE2MTBfR1BUSU1FUjMgfSwKLQl7IC5iYXNlPTB4ZmZmYjJjMDAsIC5pcnE9SU5UXzE2MTBfR1BUSU1FUjQgfSwKLQl7IC5iYXNlPTB4ZmZmYjM0MDAsIC5pcnE9SU5UXzE2MTBfR1BUSU1FUjUgfSwKLQl7IC5iYXNlPTB4ZmZmYjNjMDAsIC5pcnE9SU5UXzE2MTBfR1BUSU1FUjYgfSwKLQl7IC5iYXNlPTB4ZmZmYjQ0MDAsIC5pcnE9SU5UXzE2MTBfR1BUSU1FUjcgfSwKLQl7IC5iYXNlPTB4ZmZmYjRjMDAsIC5pcnE9SU5UXzE2MTBfR1BUSU1FUjggfSwKLQl7IC5iYXNlPTB4MCB9LAorc3RydWN0IG9tYXBfZG1fdGltZXIgeworCXVuc2lnbmVkIGxvbmcgcGh5c19iYXNlOworCWludCBpcnE7CisjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDIKKwlzdHJ1Y3QgY2xrICppY2xrLCAqZmNsazsKKyNlbmRpZgorCXZvaWQgX19pb21lbSAqaW9fYmFzZTsKKwl1bnNpZ25lZCByZXNlcnZlZDoxOwogfTsKIAorI2lmZGVmIENPTkZJR19BUkNIX09NQVAxCiAKK3N0YXRpYyBzdHJ1Y3Qgb21hcF9kbV90aW1lciBkbV90aW1lcnNbXSA9IHsKKwl7IC5waHlzX2Jhc2UgPSAweGZmZmIxNDAwLCAuaXJxID0gSU5UXzE2MTBfR1BUSU1FUjEgfSwKKwl7IC5waHlzX2Jhc2UgPSAweGZmZmIxYzAwLCAuaXJxID0gSU5UXzE2MTBfR1BUSU1FUjIgfSwKKwl7IC5waHlzX2Jhc2UgPSAweGZmZmIyNDAwLCAuaXJxID0gSU5UXzE2MTBfR1BUSU1FUjMgfSwKKwl7IC5waHlzX2Jhc2UgPSAweGZmZmIyYzAwLCAuaXJxID0gSU5UXzE2MTBfR1BUSU1FUjQgfSwKKwl7IC5waHlzX2Jhc2UgPSAweGZmZmIzNDAwLCAuaXJxID0gSU5UXzE2MTBfR1BUSU1FUjUgfSwKKwl7IC5waHlzX2Jhc2UgPSAweGZmZmIzYzAwLCAuaXJxID0gSU5UXzE2MTBfR1BUSU1FUjYgfSwKKwl7IC5waHlzX2Jhc2UgPSAweGZmZmI0NDAwLCAuaXJxID0gSU5UXzE2MTBfR1BUSU1FUjcgfSwKKwl7IC5waHlzX2Jhc2UgPSAweGZmZmI0YzAwLCAuaXJxID0gSU5UXzE2MTBfR1BUSU1FUjggfSwKK307CisKKyNlbGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDIpCisKK3N0YXRpYyBzdHJ1Y3Qgb21hcF9kbV90aW1lciBkbV90aW1lcnNbXSA9IHsKKwl7IC5waHlzX2Jhc2UgPSAweDQ4MDI4MDAwLCAuaXJxID0gSU5UXzI0WFhfR1BUSU1FUjEgfSwKKwl7IC5waHlzX2Jhc2UgPSAweDQ4MDJhMDAwLCAuaXJxID0gSU5UXzI0WFhfR1BUSU1FUjIgfSwKKwl7IC5waHlzX2Jhc2UgPSAweDQ4MDc4MDAwLCAuaXJxID0gSU5UXzI0WFhfR1BUSU1FUjMgfSwKKwl7IC5waHlzX2Jhc2UgPSAweDQ4MDdhMDAwLCAuaXJxID0gSU5UXzI0WFhfR1BUSU1FUjQgfSwKKwl7IC5waHlzX2Jhc2UgPSAweDQ4MDdjMDAwLCAuaXJxID0gSU5UXzI0WFhfR1BUSU1FUjUgfSwKKwl7IC5waHlzX2Jhc2UgPSAweDQ4MDdlMDAwLCAuaXJxID0gSU5UXzI0WFhfR1BUSU1FUjYgfSwKKwl7IC5waHlzX2Jhc2UgPSAweDQ4MDgwMDAwLCAuaXJxID0gSU5UXzI0WFhfR1BUSU1FUjcgfSwKKwl7IC5waHlzX2Jhc2UgPSAweDQ4MDgyMDAwLCAuaXJxID0gSU5UXzI0WFhfR1BUSU1FUjggfSwKKwl7IC5waHlzX2Jhc2UgPSAweDQ4MDg0MDAwLCAuaXJxID0gSU5UXzI0WFhfR1BUSU1FUjkgfSwKKwl7IC5waHlzX2Jhc2UgPSAweDQ4MDg2MDAwLCAuaXJxID0gSU5UXzI0WFhfR1BUSU1FUjEwIH0sCisJeyAucGh5c19iYXNlID0gMHg0ODA4ODAwMCwgLmlycSA9IElOVF8yNFhYX0dQVElNRVIxMSB9LAorCXsgLnBoeXNfYmFzZSA9IDB4NDgwOGEwMDAsIC5pcnEgPSBJTlRfMjRYWF9HUFRJTUVSMTIgfSwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICpkbV9zb3VyY2VfbmFtZXNbXSA9IHsKKwkic3lzX2NrIiwKKwkiZnVuY18zMmtfY2siLAorCSJhbHRfY2siCit9OworCitzdGF0aWMgc3RydWN0IGNsayAqZG1fc291cmNlX2Nsb2Nrc1szXTsKKworI2Vsc2UKKworI2Vycm9yIE9NQVAgYXJjaGl0ZWN0dXJlIG5vdCBzdXBwb3J0ZWQhCisKKyNlbmRpZgorCitzdGF0aWMgY29uc3QgaW50IGRtX3RpbWVyX2NvdW50ID0gQVJSQVlfU0laRShkbV90aW1lcnMpOwogc3RhdGljIHNwaW5sb2NrX3QgZG1fdGltZXJfbG9jazsKIAotCi1pbmxpbmUgdm9pZCBvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyhzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIsIGludCByZWcsIHUzMiB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgdTMyIG9tYXBfZG1fdGltZXJfcmVhZF9yZWcoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCBpbnQgcmVnKQogewotCW9tYXBfd3JpdGVsKHZhbHVlLCB0aW1lci0+YmFzZSArIHJlZyk7CisJcmV0dXJuIHJlYWRsKHRpbWVyLT5pb19iYXNlICsgcmVnKTsKK30KKworc3RhdGljIHZvaWQgb21hcF9kbV90aW1lcl93cml0ZV9yZWcoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCBpbnQgcmVnLCB1MzIgdmFsdWUpCit7CisJd3JpdGVsKHZhbHVlLCB0aW1lci0+aW9fYmFzZSArIHJlZyk7CiAJd2hpbGUgKG9tYXBfZG1fdGltZXJfcmVhZF9yZWcodGltZXIsIE9NQVBfVElNRVJfV1JJVEVfUEVORF9SRUcpKQogCQk7CiB9CiAKLXUzMiBvbWFwX2RtX3RpbWVyX3JlYWRfcmVnKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lciwgaW50IHJlZykKK3N0YXRpYyB2b2lkIG9tYXBfZG1fdGltZXJfd2FpdF9mb3JfcmVzZXQoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKQogewotCXJldHVybiBvbWFwX3JlYWRsKHRpbWVyLT5iYXNlICsgcmVnKTsKKwlpbnQgYzsKKworCWMgPSAwOworCXdoaWxlICghKG9tYXBfZG1fdGltZXJfcmVhZF9yZWcodGltZXIsIE9NQVBfVElNRVJfU1lTX1NUQVRfUkVHKSAmIDEpKSB7CisJCWMrKzsKKwkJaWYgKGMgPiAxMDAwMDApIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiVGltZXIgZmFpbGVkIHRvIHJlc2V0XG4iKTsKKwkJCXJldHVybjsKKwkJfQorCX0KIH0KIAotaW50IG9tYXBfZG1fdGltZXJzX2FjdGl2ZSh2b2lkKQorc3RhdGljIHZvaWQgb21hcF9kbV90aW1lcl9yZXNldChzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpCit7CisJdTMyIGw7CisKKwlpZiAodGltZXIgIT0gJmRtX3RpbWVyc1swXSkgeworCQlvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyh0aW1lciwgT01BUF9USU1FUl9JRl9DVFJMX1JFRywgMHgwNik7CisJCW9tYXBfZG1fdGltZXJfd2FpdF9mb3JfcmVzZXQodGltZXIpOworCX0KKwlvbWFwX2RtX3RpbWVyX3NldF9zb3VyY2UodGltZXIsIE9NQVBfVElNRVJfU1JDX1NZU19DTEspOworCisJLyogU2V0IHRvIHNtYXJ0LWlkbGUgbW9kZSAqLworCWwgPSBvbWFwX2RtX3RpbWVyX3JlYWRfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX09DUF9DRkdfUkVHKTsKKwlsIHw9IDB4MDIgPDwgMzsKKwlvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyh0aW1lciwgT01BUF9USU1FUl9PQ1BfQ0ZHX1JFRywgbCk7Cit9CisKK3N0YXRpYyB2b2lkIG9tYXBfZG1fdGltZXJfcHJlcGFyZShzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpCit7CisjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDIKKwljbGtfZW5hYmxlKHRpbWVyLT5pY2xrKTsKKwljbGtfZW5hYmxlKHRpbWVyLT5mY2xrKTsKKyNlbmRpZgorCW9tYXBfZG1fdGltZXJfcmVzZXQodGltZXIpOworfQorCitzdHJ1Y3Qgb21hcF9kbV90aW1lciAqb21hcF9kbV90aW1lcl9yZXF1ZXN0KHZvaWQpCit7CisJc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyID0gTlVMTDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCBpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmRtX3RpbWVyX2xvY2ssIGZsYWdzKTsKKwlmb3IgKGkgPSAwOyBpIDwgZG1fdGltZXJfY291bnQ7IGkrKykgeworCQlpZiAoZG1fdGltZXJzW2ldLnJlc2VydmVkKQorCQkJY29udGludWU7CisKKwkJdGltZXIgPSAmZG1fdGltZXJzW2ldOworCQl0aW1lci0+cmVzZXJ2ZWQgPSAxOworCQlicmVhazsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZG1fdGltZXJfbG9jaywgZmxhZ3MpOworCisJaWYgKHRpbWVyICE9IE5VTEwpCisJCW9tYXBfZG1fdGltZXJfcHJlcGFyZSh0aW1lcik7CisKKwlyZXR1cm4gdGltZXI7Cit9CisKK3N0cnVjdCBvbWFwX2RtX3RpbWVyICpvbWFwX2RtX3RpbWVyX3JlcXVlc3Rfc3BlY2lmaWMoaW50IGlkKQogewogCXN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lcjsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JZm9yICh0aW1lciA9ICZkbV90aW1lcnNbMF07IHRpbWVyLT5iYXNlOyArK3RpbWVyKQotCQlpZiAob21hcF9kbV90aW1lcl9yZWFkX3JlZyh0aW1lciwgT01BUF9USU1FUl9DVFJMX1JFRykgJgotCQkgICAgT01BUF9USU1FUl9DVFJMX1NUKQotCQkJcmV0dXJuIDE7CisJc3Bpbl9sb2NrX2lycXNhdmUoJmRtX3RpbWVyX2xvY2ssIGZsYWdzKTsKKwlpZiAoaWQgPD0gMCB8fCBpZCA+IGRtX3RpbWVyX2NvdW50IHx8IGRtX3RpbWVyc1tpZC0xXS5yZXNlcnZlZCkgeworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkbV90aW1lcl9sb2NrLCBmbGFncyk7CisJCXByaW50aygiQlVHOiB3YXJuaW5nIGF0ICVzOiVkLyVzKCk6IHVuYWJsZSB0byBnZXQgdGltZXIgJWRcbiIsCisJCSAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXywgaWQpOworCQlkdW1wX3N0YWNrKCk7CisJCXJldHVybiBOVUxMOworCX0KIAotCXJldHVybiAwOworCXRpbWVyID0gJmRtX3RpbWVyc1tpZC0xXTsKKwl0aW1lci0+cmVzZXJ2ZWQgPSAxOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRtX3RpbWVyX2xvY2ssIGZsYWdzKTsKKworCW9tYXBfZG1fdGltZXJfcHJlcGFyZSh0aW1lcik7CisKKwlyZXR1cm4gdGltZXI7CiB9CiAKK3ZvaWQgb21hcF9kbV90aW1lcl9mcmVlKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lcikKK3sKKwlvbWFwX2RtX3RpbWVyX3Jlc2V0KHRpbWVyKTsKKyNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMgorCWNsa19kaXNhYmxlKHRpbWVyLT5pY2xrKTsKKwljbGtfZGlzYWJsZSh0aW1lci0+ZmNsayk7CisjZW5kaWYKKwlXQVJOX09OKCF0aW1lci0+cmVzZXJ2ZWQpOworCXRpbWVyLT5yZXNlcnZlZCA9IDA7Cit9CisKK2ludCBvbWFwX2RtX3RpbWVyX2dldF9pcnEoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKQoreworCXJldHVybiB0aW1lci0+aXJxOworfQorCisjaWYgZGVmaW5lZChDT05GSUdfQVJDSF9PTUFQMSkKKworc3RydWN0IGNsayAqb21hcF9kbV90aW1lcl9nZXRfZmNsayhzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpCit7CisJQlVHKCk7Cit9CiAKIC8qKgogICogb21hcF9kbV90aW1lcl9tb2RpZnlfaWRsZWN0X21hc2sgLSBDaGVjayBpZiBhbnkgcnVubmluZyB0aW1lcnMgdXNlIEFSTVhPUgpAQCAtMTAzLDI1ICsyNTAsNzAgQEAKICAqLwogX191MzIgb21hcF9kbV90aW1lcl9tb2RpZnlfaWRsZWN0X21hc2soX191MzIgaW5wdXRtYXNrKQogewotCWludCBuOworCWludCBpOwogCiAJLyogSWYgQVJNWE9SIGNhbm5vdCBiZSBpZGxlZCB0aGlzIGZ1bmN0aW9uIGNhbGwgaXMgdW5uZWNlc3NhcnkgKi8KIAlpZiAoIShpbnB1dG1hc2sgJiAoMSA8PCAxKSkpCiAJCXJldHVybiBpbnB1dG1hc2s7CiAKIAkvKiBJZiBhbnkgYWN0aXZlIHRpbWVyIGlzIHVzaW5nIEFSTVhPUiByZXR1cm4gbW9kaWZpZWQgbWFzayAqLwotCWZvciAobiA9IDA7IGRtX3RpbWVyc1tuXS5iYXNlOyArK24pCi0JCWlmIChvbWFwX2RtX3RpbWVyX3JlYWRfcmVnKCZkbV90aW1lcnNbbl0sIE9NQVBfVElNRVJfQ1RSTF9SRUcpJgotCQkgICAgT01BUF9USU1FUl9DVFJMX1NUKSB7Ci0JCQlpZiAoKChvbWFwX3JlYWRsKE1PRF9DT05GX0NUUkxfMSk+PihuKjIpKSAmIDB4MDMpID09IDApCisJZm9yIChpID0gMDsgaSA8IGRtX3RpbWVyX2NvdW50OyBpKyspIHsKKwkJdTMyIGw7CisKKwkJbCA9IG9tYXBfZG1fdGltZXJfcmVhZF9yZWcoJmRtX3RpbWVyc1tpXSwgT01BUF9USU1FUl9DVFJMX1JFRyk7CisJCWlmIChsICYgT01BUF9USU1FUl9DVFJMX1NUKSB7CisJCQlpZiAoKChvbWFwX3JlYWRsKE1PRF9DT05GX0NUUkxfMSkgPj4gKGkgKiAyKSkgJiAweDAzKSA9PSAwKQogCQkJCWlucHV0bWFzayAmPSB+KDEgPDwgMSk7CiAJCQllbHNlCiAJCQkJaW5wdXRtYXNrICY9IH4oMSA8PCAyKTsKIAkJfQorCX0KIAogCXJldHVybiBpbnB1dG1hc2s7CiB9CiAKKyNlbGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDIpCisKK3N0cnVjdCBjbGsgKm9tYXBfZG1fdGltZXJfZ2V0X2ZjbGsoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKQoreworICAgICAgICByZXR1cm4gdGltZXItPmZjbGs7Cit9CisKK19fdTMyIG9tYXBfZG1fdGltZXJfbW9kaWZ5X2lkbGVjdF9tYXNrKF9fdTMyIGlucHV0bWFzaykKK3sKKwlCVUcoKTsKK30KKworI2VuZGlmCisKK3ZvaWQgb21hcF9kbV90aW1lcl90cmlnZ2VyKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lcikKK3sKKwlvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyh0aW1lciwgT01BUF9USU1FUl9UUklHR0VSX1JFRywgMCk7Cit9CisKK3ZvaWQgb21hcF9kbV90aW1lcl9zdGFydChzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpCit7CisJdTMyIGw7CisKKwlsID0gb21hcF9kbV90aW1lcl9yZWFkX3JlZyh0aW1lciwgT01BUF9USU1FUl9DVFJMX1JFRyk7CisJaWYgKCEobCAmIE9NQVBfVElNRVJfQ1RSTF9TVCkpIHsKKwkJbCB8PSBPTUFQX1RJTUVSX0NUUkxfU1Q7CisJCW9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX0NUUkxfUkVHLCBsKTsKKwl9Cit9CisKK3ZvaWQgb21hcF9kbV90aW1lcl9zdG9wKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lcikKK3sKKwl1MzIgbDsKKworCWwgPSBvbWFwX2RtX3RpbWVyX3JlYWRfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX0NUUkxfUkVHKTsKKwlpZiAobCAmIE9NQVBfVElNRVJfQ1RSTF9TVCkgeworCQlsICY9IH4weDE7CisJCW9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX0NUUkxfUkVHLCBsKTsKKwl9Cit9CisKKyNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMQogCiB2b2lkIG9tYXBfZG1fdGltZXJfc2V0X3NvdXJjZShzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIsIGludCBzb3VyY2UpCiB7CkBAIC0xMzMsNDkgKzMyNSw4NSBAQAogCW9tYXBfd3JpdGVsKGwsIE1PRF9DT05GX0NUUkxfMSk7CiB9CiAKKyNlbHNlCiAKLXN0YXRpYyB2b2lkIG9tYXBfZG1fdGltZXJfcmVzZXQoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKQordm9pZCBvbWFwX2RtX3RpbWVyX3NldF9zb3VyY2Uoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCBpbnQgc291cmNlKQogewotCS8qIFJlc2V0IGFuZCBzZXQgcG9zdGVkIG1vZGUgKi8KLQlvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyh0aW1lciwgT01BUF9USU1FUl9JRl9DVFJMX1JFRywgMHgwNik7Ci0Jb21hcF9kbV90aW1lcl93cml0ZV9yZWcodGltZXIsIE9NQVBfVElNRVJfT0NQX0NGR19SRUcsIDB4MDIpOworCWlmIChzb3VyY2UgPCAwIHx8IHNvdXJjZSA+PSAzKQorCQlyZXR1cm47CiAKLQlvbWFwX2RtX3RpbWVyX3NldF9zb3VyY2UodGltZXIsIE9NQVBfVElNRVJfU1JDX0FSTVhPUik7CisJY2xrX2Rpc2FibGUodGltZXItPmZjbGspOworCWNsa19zZXRfcGFyZW50KHRpbWVyLT5mY2xrLCBkbV9zb3VyY2VfY2xvY2tzW3NvdXJjZV0pOworCWNsa19lbmFibGUodGltZXItPmZjbGspOworCisJLyogV2hlbiB0aGUgZnVuY3Rpb25hbCBjbG9jayBkaXNhcHBlYXJzLCB0b28gcXVpY2sgd3JpdGVzIHNlZW0gdG8KKwkgKiBjYXVzZSBhbiBhYm9ydC4gKi8KKwlfX2RlbGF5KDE1MDAwKTsKK30KKworI2VuZGlmCisKK3ZvaWQgb21hcF9kbV90aW1lcl9zZXRfbG9hZChzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIsIGludCBhdXRvcmVsb2FkLAorCQkJICAgIHVuc2lnbmVkIGludCBsb2FkKQoreworCXUzMiBsOworCisJbCA9IG9tYXBfZG1fdGltZXJfcmVhZF9yZWcodGltZXIsIE9NQVBfVElNRVJfQ1RSTF9SRUcpOworCWlmIChhdXRvcmVsb2FkKQorCQlsIHw9IE9NQVBfVElNRVJfQ1RSTF9BUjsKKwllbHNlCisJCWwgJj0gfk9NQVBfVElNRVJfQ1RSTF9BUjsKKwlvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyh0aW1lciwgT01BUF9USU1FUl9DVFJMX1JFRywgbCk7CisJb21hcF9kbV90aW1lcl93cml0ZV9yZWcodGltZXIsIE9NQVBfVElNRVJfTE9BRF9SRUcsIGxvYWQpOworCW9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX1RSSUdHRVJfUkVHLCAwKTsKK30KKwordm9pZCBvbWFwX2RtX3RpbWVyX3NldF9tYXRjaChzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIsIGludCBlbmFibGUsCisJCQkgICAgIHVuc2lnbmVkIGludCBtYXRjaCkKK3sKKwl1MzIgbDsKKworCWwgPSBvbWFwX2RtX3RpbWVyX3JlYWRfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX0NUUkxfUkVHKTsKKwlpZiAoZW5hYmxlKQorCQlsIHw9IE9NQVBfVElNRVJfQ1RSTF9DRTsKKwllbHNlCisJCWwgJj0gfk9NQVBfVElNRVJfQ1RSTF9DRTsKKwlvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyh0aW1lciwgT01BUF9USU1FUl9DVFJMX1JFRywgbCk7CisJb21hcF9kbV90aW1lcl93cml0ZV9yZWcodGltZXIsIE9NQVBfVElNRVJfTUFUQ0hfUkVHLCBtYXRjaCk7CiB9CiAKIAotCi1zdHJ1Y3Qgb21hcF9kbV90aW1lciAqIG9tYXBfZG1fdGltZXJfcmVxdWVzdCh2b2lkKQordm9pZCBvbWFwX2RtX3RpbWVyX3NldF9wd20oc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCBpbnQgZGVmX29uLAorCQkJICAgaW50IHRvZ2dsZSwgaW50IHRyaWdnZXIpCiB7Ci0Jc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyID0gTlVMTDsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOworCXUzMiBsOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRtX3RpbWVyX2xvY2ssIGZsYWdzKTsKLQlpZiAoIWxpc3RfZW1wdHkoJmRtX3RpbWVyX2luZm8udW51c2VkX3RpbWVycykpIHsKLQkJdGltZXIgPSAoc3RydWN0IG9tYXBfZG1fdGltZXIgKikKLQkJCQlkbV90aW1lcl9pbmZvLnVudXNlZF90aW1lcnMubmV4dDsKLQkJbGlzdF9tb3ZlX3RhaWwoKHN0cnVjdCBsaXN0X2hlYWQgKil0aW1lciwKLQkJCQkmZG1fdGltZXJfaW5mby5yZXNlcnZlZF90aW1lcnMpOworCWwgPSBvbWFwX2RtX3RpbWVyX3JlYWRfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX0NUUkxfUkVHKTsKKwlsICY9IH4oT01BUF9USU1FUl9DVFJMX0dQT0NGRyB8IE9NQVBfVElNRVJfQ1RSTF9TQ1BXTSB8CisJICAgICAgIE9NQVBfVElNRVJfQ1RSTF9QVCB8ICgweDAzIDw8IDEwKSk7CisJaWYgKGRlZl9vbikKKwkJbCB8PSBPTUFQX1RJTUVSX0NUUkxfU0NQV007CisJaWYgKHRvZ2dsZSkKKwkJbCB8PSBPTUFQX1RJTUVSX0NUUkxfUFQ7CisJbCB8PSB0cmlnZ2VyIDw8IDEwOworCW9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX0NUUkxfUkVHLCBsKTsKK30KKwordm9pZCBvbWFwX2RtX3RpbWVyX3NldF9wcmVzY2FsZXIoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCBpbnQgcHJlc2NhbGVyKQoreworCXUzMiBsOworCisJbCA9IG9tYXBfZG1fdGltZXJfcmVhZF9yZWcodGltZXIsIE9NQVBfVElNRVJfQ1RSTF9SRUcpOworCWwgJj0gfihPTUFQX1RJTUVSX0NUUkxfUFJFIHwgKDB4MDcgPDwgMikpOworCWlmIChwcmVzY2FsZXIgPj0gMHgwMCAmJiBwcmVzY2FsZXIgPD0gMHgwNykgeworCQlsIHw9IE9NQVBfVElNRVJfQ1RSTF9QUkU7CisJCWwgfD0gcHJlc2NhbGVyIDw8IDI7CiAJfQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRtX3RpbWVyX2xvY2ssIGZsYWdzKTsKLQotCXJldHVybiB0aW1lcjsKLX0KLQotCi12b2lkIG9tYXBfZG1fdGltZXJfZnJlZShzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpCi17Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQotCW9tYXBfZG1fdGltZXJfcmVzZXQodGltZXIpOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRtX3RpbWVyX2xvY2ssIGZsYWdzKTsKLQlsaXN0X21vdmVfdGFpbCgoc3RydWN0IGxpc3RfaGVhZCAqKXRpbWVyLCAmZG1fdGltZXJfaW5mby51bnVzZWRfdGltZXJzKTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkbV90aW1lcl9sb2NrLCBmbGFncyk7CisJb21hcF9kbV90aW1lcl93cml0ZV9yZWcodGltZXIsIE9NQVBfVElNRVJfQ1RSTF9SRUcsIGwpOwogfQogCiB2b2lkIG9tYXBfZG1fdGltZXJfc2V0X2ludF9lbmFibGUoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLAotCQkJCXVuc2lnbmVkIGludCB2YWx1ZSkKKwkJCQkgIHVuc2lnbmVkIGludCB2YWx1ZSkKIHsKIAlvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyh0aW1lciwgT01BUF9USU1FUl9JTlRfRU5fUkVHLCB2YWx1ZSk7CiB9CkBAIC0xOTAsOTcgKzQxOCw2MSBAQAogCW9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX1NUQVRfUkVHLCB2YWx1ZSk7CiB9CiAKLXZvaWQgb21hcF9kbV90aW1lcl9lbmFibGVfYXV0b3JlbG9hZChzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpCi17Ci0JdTMyIGw7Ci0JbCA9IG9tYXBfZG1fdGltZXJfcmVhZF9yZWcodGltZXIsIE9NQVBfVElNRVJfQ1RSTF9SRUcpOwotCWwgfD0gT01BUF9USU1FUl9DVFJMX0FSOwotCW9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX0NUUkxfUkVHLCBsKTsKLX0KLQotdm9pZCBvbWFwX2RtX3RpbWVyX3RyaWdnZXIoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKQotewotCW9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX1RSSUdHRVJfUkVHLCAxKTsKLX0KLQotdm9pZCBvbWFwX2RtX3RpbWVyX3NldF90cmlnZ2VyKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lciwgdW5zaWduZWQgaW50IHZhbHVlKQotewotCXUzMiBsOwotCi0JbCA9IG9tYXBfZG1fdGltZXJfcmVhZF9yZWcodGltZXIsIE9NQVBfVElNRVJfQ1RSTF9SRUcpOwotCWwgfD0gdmFsdWUgJiAweDM7Ci0Jb21hcF9kbV90aW1lcl93cml0ZV9yZWcodGltZXIsIE9NQVBfVElNRVJfQ1RSTF9SRUcsIGwpOwotfQotCi12b2lkIG9tYXBfZG1fdGltZXJfc3RhcnQoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKQotewotCXUzMiBsOwotCi0JbCA9IG9tYXBfZG1fdGltZXJfcmVhZF9yZWcodGltZXIsIE9NQVBfVElNRVJfQ1RSTF9SRUcpOwotCWwgfD0gT01BUF9USU1FUl9DVFJMX1NUOwotCW9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX0NUUkxfUkVHLCBsKTsKLX0KLQotdm9pZCBvbWFwX2RtX3RpbWVyX3N0b3Aoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKQotewotCXUzMiBsOwotCi0JbCA9IG9tYXBfZG1fdGltZXJfcmVhZF9yZWcodGltZXIsIE9NQVBfVElNRVJfQ1RSTF9SRUcpOwotCWwgJj0gfjB4MTsKLQlvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyh0aW1lciwgT01BUF9USU1FUl9DVFJMX1JFRywgbCk7Ci19Ci0KIHVuc2lnbmVkIGludCBvbWFwX2RtX3RpbWVyX3JlYWRfY291bnRlcihzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpCiB7CiAJcmV0dXJuIG9tYXBfZG1fdGltZXJfcmVhZF9yZWcodGltZXIsIE9NQVBfVElNRVJfQ09VTlRFUl9SRUcpOwogfQogCi12b2lkIG9tYXBfZG1fdGltZXJfcmVzZXRfY291bnRlcihzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpCit2b2lkIG9tYXBfZG1fdGltZXJfd3JpdGVfY291bnRlcihzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIsIHVuc2lnbmVkIGludCB2YWx1ZSkKIHsKLQlvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyh0aW1lciwgT01BUF9USU1FUl9DT1VOVEVSX1JFRywgMCk7CisJcmV0dXJuIG9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX0NPVU5URVJfUkVHLCB2YWx1ZSk7CiB9CiAKLXZvaWQgb21hcF9kbV90aW1lcl9zZXRfbG9hZChzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIsIHVuc2lnbmVkIGludCBsb2FkKQoraW50IG9tYXBfZG1fdGltZXJzX2FjdGl2ZSh2b2lkKQogewotCW9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHRpbWVyLCBPTUFQX1RJTUVSX0xPQURfUkVHLCBsb2FkKTsKLX0KKwlpbnQgaTsKIAotdm9pZCBvbWFwX2RtX3RpbWVyX3NldF9tYXRjaChzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIsIHVuc2lnbmVkIGludCBtYXRjaCkKLXsKLQlvbWFwX2RtX3RpbWVyX3dyaXRlX3JlZyh0aW1lciwgT01BUF9USU1FUl9NQVRDSF9SRUcsIG1hdGNoKTsKLX0KKwlmb3IgKGkgPSAwOyBpIDwgZG1fdGltZXJfY291bnQ7IGkrKykgeworCQlzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXI7CiAKLXZvaWQgb21hcF9kbV90aW1lcl9lbmFibGVfY29tcGFyZShzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpCi17Ci0JdTMyIGw7Ci0KLQlsID0gb21hcF9kbV90aW1lcl9yZWFkX3JlZyh0aW1lciwgT01BUF9USU1FUl9DVFJMX1JFRyk7Ci0JbCB8PSBPTUFQX1RJTUVSX0NUUkxfQ0U7Ci0Jb21hcF9kbV90aW1lcl93cml0ZV9yZWcodGltZXIsIE9NQVBfVElNRVJfQ1RSTF9SRUcsIGwpOwotfQotCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCBfX2RtX3RpbWVyX2luaXQodm9pZCkKLXsKLQlzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXI7Ci0KLQlzcGluX2xvY2tfaW5pdCgmZG1fdGltZXJfbG9jayk7Ci0JSU5JVF9MSVNUX0hFQUQoJmRtX3RpbWVyX2luZm8udW51c2VkX3RpbWVycyk7Ci0JSU5JVF9MSVNUX0hFQUQoJmRtX3RpbWVyX2luZm8ucmVzZXJ2ZWRfdGltZXJzKTsKLQotCXRpbWVyID0gJmRtX3RpbWVyc1swXTsKLQl3aGlsZSAodGltZXItPmJhc2UpIHsKLQkJbGlzdF9hZGRfdGFpbCgoc3RydWN0IGxpc3RfaGVhZCAqKXRpbWVyLCAmZG1fdGltZXJfaW5mby51bnVzZWRfdGltZXJzKTsKLQkJb21hcF9kbV90aW1lcl9yZXNldCh0aW1lcik7Ci0JCXRpbWVyKys7CisJCXRpbWVyID0gJmRtX3RpbWVyc1tpXTsKKwkJaWYgKG9tYXBfZG1fdGltZXJfcmVhZF9yZWcodGltZXIsIE9NQVBfVElNRVJfQ1RSTF9SRUcpICYKKwkJICAgIE9NQVBfVElNRVJfQ1RSTF9TVCkKKwkJCXJldHVybiAxOwogCX0KLX0KLQotc3RhdGljIGludCBfX2luaXQgb21hcF9kbV90aW1lcl9pbml0KHZvaWQpCi17Ci0JaWYgKGNwdV9pc19vbWFwMTZ4eCgpKQotCQlfX2RtX3RpbWVyX2luaXQoKTsKIAlyZXR1cm4gMDsKIH0KIAotYXJjaF9pbml0Y2FsbChvbWFwX2RtX3RpbWVyX2luaXQpOworaW50IG9tYXBfZG1fdGltZXJfaW5pdCh2b2lkKQoreworCXN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lcjsKKwlpbnQgaTsKKworCWlmICghKGNwdV9pc19vbWFwMTZ4eCgpIHx8IGNwdV9pc19vbWFwMjR4eCgpKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlzcGluX2xvY2tfaW5pdCgmZG1fdGltZXJfbG9jayk7CisjaWZkZWYgQ09ORklHX0FSQ0hfT01BUDIKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkbV9zb3VyY2VfbmFtZXMpOyBpKyspIHsKKwkJZG1fc291cmNlX2Nsb2Nrc1tpXSA9IGNsa19nZXQoTlVMTCwgZG1fc291cmNlX25hbWVzW2ldKTsKKwkJQlVHX09OKGRtX3NvdXJjZV9jbG9ja3NbaV0gPT0gTlVMTCk7CisJfQorI2VuZGlmCisKKwlmb3IgKGkgPSAwOyBpIDwgZG1fdGltZXJfY291bnQ7IGkrKykgeworI2lmZGVmIENPTkZJR19BUkNIX09NQVAyCisJCWNoYXIgY2xrX25hbWVbMTZdOworI2VuZGlmCisKKwkJdGltZXIgPSAmZG1fdGltZXJzW2ldOworCQl0aW1lci0+aW9fYmFzZSA9ICh2b2lkIF9faW9tZW0gKikgaW9fcDJ2KHRpbWVyLT5waHlzX2Jhc2UpOworI2lmZGVmIENPTkZJR19BUkNIX09NQVAyCisJCXNwcmludGYoY2xrX25hbWUsICJncHQlZF9pY2siLCBpICsgMSk7CisJCXRpbWVyLT5pY2xrID0gY2xrX2dldChOVUxMLCBjbGtfbmFtZSk7CisJCXNwcmludGYoY2xrX25hbWUsICJncHQlZF9mY2siLCBpICsgMSk7CisJCXRpbWVyLT5mY2xrID0gY2xrX2dldChOVUxMLCBjbGtfbmFtZSk7CisjZW5kaWYKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb21hcC9ncGlvLmMgYi9hcmNoL2FybS9wbGF0LW9tYXAvZ3Bpby5jCmluZGV4IGQzYzhlYTcuLmU3NWEyY2EgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC9ncGlvLmMKKysrIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2dwaW8uYwpAQCAtNTM3LDYgKzUzNyw0OSBAQAogCV9jbGVhcl9ncGlvX2lycWJhbmsoYmFuaywgMSA8PCBnZXRfZ3Bpb19pbmRleChncGlvKSk7CiB9CiAKK3N0YXRpYyB1MzIgX2dldF9ncGlvX2lycWJhbmtfbWFzayhzdHJ1Y3QgZ3Bpb19iYW5rICpiYW5rKQoreworCXZvaWQgX19pb21lbSAqcmVnID0gYmFuay0+YmFzZTsKKwlpbnQgaW52ID0gMDsKKwl1MzIgbDsKKwl1MzIgbWFzazsKKworCXN3aXRjaCAoYmFuay0+bWV0aG9kKSB7CisJY2FzZSBNRVRIT0RfTVBVSU86CisJCXJlZyArPSBPTUFQX01QVUlPX0dQSU9fTUFTS0lUOworCQltYXNrID0gMHhmZmZmOworCQlpbnYgPSAxOworCQlicmVhazsKKwljYXNlIE1FVEhPRF9HUElPXzE1MTA6CisJCXJlZyArPSBPTUFQMTUxMF9HUElPX0lOVF9NQVNLOworCQltYXNrID0gMHhmZmZmOworCQlpbnYgPSAxOworCQlicmVhazsKKwljYXNlIE1FVEhPRF9HUElPXzE2MTA6CisJCXJlZyArPSBPTUFQMTYxMF9HUElPX0lSUUVOQUJMRTE7CisJCW1hc2sgPSAweGZmZmY7CisJCWJyZWFrOworCWNhc2UgTUVUSE9EX0dQSU9fNzMwOgorCQlyZWcgKz0gT01BUDczMF9HUElPX0lOVF9NQVNLOworCQltYXNrID0gMHhmZmZmZmZmZjsKKwkJaW52ID0gMTsKKwkJYnJlYWs7CisJY2FzZSBNRVRIT0RfR1BJT18yNFhYOgorCQlyZWcgKz0gT01BUDI0WFhfR1BJT19JUlFFTkFCTEUxOworCQltYXNrID0gMHhmZmZmZmZmZjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJQlVHKCk7CisJCXJldHVybiAwOworCX0KKworCWwgPSBfX3Jhd19yZWFkbChyZWcpOworCWlmIChpbnYpCisJCWwgPSB+bDsKKwlsICY9IG1hc2s7CisJcmV0dXJuIGw7Cit9CisKIHN0YXRpYyB2b2lkIF9lbmFibGVfZ3Bpb19pcnFiYW5rKHN0cnVjdCBncGlvX2JhbmsgKmJhbmssIGludCBncGlvX21hc2ssIGludCBlbmFibGUpCiB7CiAJdm9pZCBfX2lvbWVtICpyZWcgPSBiYW5rLT5iYXNlOwpAQCAtNzM2LDYgKzc3OSw4IEBACiAJdTMyIGlzcjsKIAl1bnNpZ25lZCBpbnQgZ3Bpb19pcnE7CiAJc3RydWN0IGdwaW9fYmFuayAqYmFuazsKKwl1MzIgcmV0cmlnZ2VyID0gMDsKKwlpbnQgdW5tYXNrZWQgPSAwOwogCiAJZGVzYy0+Y2hpcC0+YWNrKGlycSk7CiAKQEAgLTc2MCwxOCArODA1LDIyIEBACiAjZW5kaWYKIAl3aGlsZSgxKSB7CiAJCXUzMiBpc3Jfc2F2ZWQsIGxldmVsX21hc2sgPSAwOworCQl1MzIgZW5hYmxlZDsKIAotCQlpc3Jfc2F2ZWQgPSBpc3IgPSBfX3Jhd19yZWFkbChpc3JfcmVnKTsKKwkJZW5hYmxlZCA9IF9nZXRfZ3Bpb19pcnFiYW5rX21hc2soYmFuayk7CisJCWlzcl9zYXZlZCA9IGlzciA9IF9fcmF3X3JlYWRsKGlzcl9yZWcpICYgZW5hYmxlZDsKIAogCQlpZiAoY3B1X2lzX29tYXAxNXh4KCkgJiYgKGJhbmstPm1ldGhvZCA9PSBNRVRIT0RfTVBVSU8pKQogCQkJaXNyICY9IDB4MDAwMGZmZmY7CiAKLQkJaWYgKGNwdV9pc19vbWFwMjR4eCgpKQorCQlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKIAkJCWxldmVsX21hc2sgPQogCQkJCV9fcmF3X3JlYWRsKGJhbmstPmJhc2UgKwogCQkJCQlPTUFQMjRYWF9HUElPX0xFVkVMREVURUNUMCkgfAogCQkJCV9fcmF3X3JlYWRsKGJhbmstPmJhc2UgKwogCQkJCQlPTUFQMjRYWF9HUElPX0xFVkVMREVURUNUMSk7CisJCQlsZXZlbF9tYXNrICY9IGVuYWJsZWQ7CisJCX0KIAogCQkvKiBjbGVhciBlZGdlIHNlbnNpdGl2ZSBpbnRlcnJ1cHRzIGJlZm9yZSBoYW5kbGVyKHMpIGFyZQogCQljYWxsZWQgc28gdGhhdCB3ZSBkb24ndCBtaXNzIGFueSBpbnRlcnJ1cHQgb2NjdXJyZWQgd2hpbGUKQEAgLTc4MiwxOSArODMxLDU0IEBACiAKIAkJLyogaWYgdGhlcmUgaXMgb25seSBlZGdlIHNlbnNpdGl2ZSBHUElPIHBpbiBpbnRlcnJ1cHRzCiAJCWNvbmZpZ3VyZWQsIHdlIGNvdWxkIHVubWFzayBHUElPIGJhbmsgaW50ZXJydXB0IGltbWVkaWF0ZWx5ICovCi0JCWlmICghbGV2ZWxfbWFzaykKKwkJaWYgKCFsZXZlbF9tYXNrICYmICF1bm1hc2tlZCkgeworCQkJdW5tYXNrZWQgPSAxOwogCQkJZGVzYy0+Y2hpcC0+dW5tYXNrKGlycSk7CisJCX0KIAorCQlpc3IgfD0gcmV0cmlnZ2VyOworCQlyZXRyaWdnZXIgPSAwOwogCQlpZiAoIWlzcikKIAkJCWJyZWFrOwogCiAJCWdwaW9faXJxID0gYmFuay0+dmlydHVhbF9pcnFfc3RhcnQ7CiAJCWZvciAoOyBpc3IgIT0gMDsgaXNyID4+PSAxLCBncGlvX2lycSsrKSB7CiAJCQlzdHJ1Y3QgaXJxZGVzYyAqZDsKKwkJCWludCBpcnFfbWFzazsKIAkJCWlmICghKGlzciAmIDEpKQogCQkJCWNvbnRpbnVlOwogCQkJZCA9IGlycV9kZXNjICsgZ3Bpb19pcnE7CisJCQkvKiBEb24ndCBydW4gdGhlIGhhbmRsZXIgaWYgaXQncyBhbHJlYWR5IHJ1bm5pbmcKKwkJCSAqIG9yIHdhcyBkaXNhYmxlZCBsYXplbHkuCisJCQkgKi8KKwkJCWlmICh1bmxpa2VseSgoZC0+ZGlzYWJsZV9kZXB0aCB8fCBkLT5ydW5uaW5nKSkpIHsKKwkJCQlpcnFfbWFzayA9IDEgPDwKKwkJCQkJKGdwaW9faXJxIC0gYmFuay0+dmlydHVhbF9pcnFfc3RhcnQpOworCQkJCS8qIFRoZSB1bm1hc2tpbmcgd2lsbCBiZSBkb25lIGJ5CisJCQkJICogZW5hYmxlX2lycSBpbiBjYXNlIGl0IGlzIGRpc2FibGVkIG9yCisJCQkJICogYWZ0ZXIgcmV0dXJuaW5nIGZyb20gdGhlIGhhbmRsZXIgaWYKKwkJCQkgKiBpdCdzIGFscmVhZHkgcnVubmluZy4KKwkJCQkgKi8KKwkJCQlfZW5hYmxlX2dwaW9faXJxYmFuayhiYW5rLCBpcnFfbWFzaywgMCk7CisJCQkJaWYgKCFkLT5kaXNhYmxlX2RlcHRoKSB7CisJCQkJCS8qIExldmVsIHRyaWdnZXJlZCBpbnRlcnJ1cHRzCisJCQkJCSAqIHdvbid0IGV2ZXIgYmUgcmVlbnRlcmVkCisJCQkJCSAqLworCQkJCQlCVUdfT04obGV2ZWxfbWFzayAmIGlycV9tYXNrKTsKKwkJCQkJZC0+cGVuZGluZyA9IDE7CisJCQkJfQorCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZC0+cnVubmluZyA9IDE7CiAJCQlkZXNjX2hhbmRsZV9pcnEoZ3Bpb19pcnEsIGQsIHJlZ3MpOworCQkJZC0+cnVubmluZyA9IDA7CisJCQlpZiAodW5saWtlbHkoZC0+cGVuZGluZyAmJiAhZC0+ZGlzYWJsZV9kZXB0aCkpIHsKKwkJCQlpcnFfbWFzayA9IDEgPDwKKwkJCQkJKGdwaW9faXJxIC0gYmFuay0+dmlydHVhbF9pcnFfc3RhcnQpOworCQkJCWQtPnBlbmRpbmcgPSAwOworCQkJCV9lbmFibGVfZ3Bpb19pcnFiYW5rKGJhbmssIGlycV9tYXNrLCAxKTsKKwkJCQlyZXRyaWdnZXIgfD0gaXJxX21hc2s7CisJCQl9CiAJCX0KIAogCQlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKQEAgLTgwNCwxMyArODg4LDE0IEBACiAJCQlfZW5hYmxlX2dwaW9faXJxYmFuayhiYW5rLCBpc3Jfc2F2ZWQgJiBsZXZlbF9tYXNrLCAxKTsKIAkJfQogCi0JCS8qIGlmIGJhbmsgaGFzIGFueSBsZXZlbCBzZW5zaXRpdmUgR1BJTyBwaW4gaW50ZXJydXB0Ci0JCWNvbmZpZ3VyZWQsIHdlIG11c3QgdW5tYXNrIHRoZSBiYW5rIGludGVycnVwdCBvbmx5IGFmdGVyCi0JCWhhbmRsZXIocykgYXJlIGV4ZWN1dGVkIGluIG9yZGVyIHRvIGF2b2lkIHNwdXJpb3VzIGJhbmsKLQkJaW50ZXJydXB0ICovCi0JCWlmIChsZXZlbF9tYXNrKQotCQkJZGVzYy0+Y2hpcC0+dW5tYXNrKGlycSk7CiAJfQorCS8qIGlmIGJhbmsgaGFzIGFueSBsZXZlbCBzZW5zaXRpdmUgR1BJTyBwaW4gaW50ZXJydXB0CisJY29uZmlndXJlZCwgd2UgbXVzdCB1bm1hc2sgdGhlIGJhbmsgaW50ZXJydXB0IG9ubHkgYWZ0ZXIKKwloYW5kbGVyKHMpIGFyZSBleGVjdXRlZCBpbiBvcmRlciB0byBhdm9pZCBzcHVyaW91cyBiYW5rCisJaW50ZXJydXB0ICovCisJaWYgKCF1bm1hc2tlZCkKKwkJZGVzYy0+Y2hpcC0+dW5tYXNrKGlycSk7CisKIH0KIAogc3RhdGljIHZvaWQgZ3Bpb19hY2tfaXJxKHVuc2lnbmVkIGludCBpcnEpCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvc3JhbS5jIGIvYXJjaC9hcm0vcGxhdC1vbWFwL3NyYW0uYwppbmRleCBiN2JmMDliLi5hZWJkMDZmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvc3JhbS5jCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC9zcmFtLmMKQEAgLTE1OCwxNCArMTU4LDEyIEBACiAJewkvKiAubGVuZ3RoIGdldHMgZmlsbGVkIGluIGF0IHJ1bnRpbWUgKi8KIAkJLnZpcnR1YWwJPSBPTUFQMV9TUkFNX1ZBLAogCQkucGZuCQk9IF9fcGh5c190b19wZm4oT01BUDFfU1JBTV9QQSksCi0JCS50eXBlCQk9IE1UX0RFVklDRQorCQkudHlwZQkJPSBNVF9NRU1PUlkKIAl9CiB9OwogCiAvKgotICogSW4gb3JkZXIgdG8gdXNlIGxhc3QgMmtCIG9mIFNSQU0gb24gMTYxMWIsIHdlIG11c3Qgcm91bmQgdGhlIHNpemUKLSAqIHVwIHRvIG11bHRpcGxlIG9mIFBBR0VfU0laRS4gV2UgY2Fubm90IHVzZSBpb3JlbWFwIGZvciBTUkFNLCBhcwotICogY2xvY2sgaW5pdCBuZWVkcyBTUkFNIGVhcmx5LgorICogTm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgaW9yZW1hcCBmb3IgU1JBTSwgYXMgY2xvY2sgaW5pdCBuZWVkcyBTUkFNIGVhcmx5LgogICovCiB2b2lkIF9faW5pdCBvbWFwX21hcF9zcmFtKHZvaWQpCiB7CkBAIC0xODUsOCArMTgzLDcgQEAKIAkJb21hcF9zcmFtX2lvX2Rlc2NbMF0ucGZuID0gX19waHlzX3RvX3BmbihiYXNlKTsKIAl9CiAKLQlvbWFwX3NyYW1faW9fZGVzY1swXS5sZW5ndGggPSAob21hcF9zcmFtX3NpemUgKyBQQUdFX1NJWkUtMSkvUEFHRV9TSVpFOwotCW9tYXBfc3JhbV9pb19kZXNjWzBdLmxlbmd0aCAqPSBQQUdFX1NJWkU7CisJb21hcF9zcmFtX2lvX2Rlc2NbMF0ubGVuZ3RoID0gMTAyNCAqIDEwMjQ7CS8qIFVzZSBzZWN0aW9uIGRlc2MgKi8KIAlpb3RhYmxlX2luaXQob21hcF9zcmFtX2lvX2Rlc2MsIEFSUkFZX1NJWkUob21hcF9zcmFtX2lvX2Rlc2MpKTsKIAogCXByaW50ayhLRVJOX0lORk8gIlNSQU06IE1hcHBlZCBwYSAweCUwOGx4IHRvIHZhIDB4JTA4bHggc2l6ZTogMHglbHhcbiIsCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvdGltZXIzMmsuYyBiL2FyY2gvYXJtL3BsYXQtb21hcC90aW1lcjMyay5jCmluZGV4IDM0NjFhNmMuLmVhOWYzNzMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC90aW1lcjMyay5jCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC90aW1lcjMyay5jCkBAIC03LDYgKzcsNyBAQAogICogUGFydGlhbCB0aW1lciByZXdyaXRlIGFuZCBhZGRpdGlvbmFsIGR5bmFtaWMgdGljayB0aW1lciBzdXBwb3J0IGJ5CiAgKiBUb255IExpbmRnZW4gPHRvbnlAYXRvbWlkZS5jb20+IGFuZAogICogVHV1a2thIFRpa2thbmVuIDx0dXVra2EudGlra2FuZW5AZWxla3Ryb2JpdC5jb20+CisgKiBPTUFQIER1YWwtbW9kZSB0aW1lciBmcmFtZXdvcmsgc3VwcG9ydCBieSBUaW1vIFRlcmFzCiAgKgogICogTVBVIHRpbWVyIGNvZGUgYmFzZWQgb24gdGhlIG9sZGVyIE1QVSB0aW1lciBjb2RlIGZvciBPTUFQCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgUmlkZ2VSdW4sIEluYy4KQEAgLTUwLDYgKzUxLDcgQEAKICNpbmNsdWRlIDxhc20vaXJxLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gvaXJxLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gvdGltZS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2RtdGltZXIuaD4KIAogc3RydWN0IHN5c190aW1lciBvbWFwX3RpbWVyOwogCkBAIC03OSwxOCArODEsNiBAQAogI2RlZmluZSBPTUFQMV8zMktfVElNRVJfVFZSCQkweDAwCiAjZGVmaW5lIE9NQVAxXzMyS19USU1FUl9UQ1IJCTB4MDQKIAotLyogMjR4eCBzcGVjaWZpYyBkZWZpbmVzICovCi0jZGVmaW5lIE9NQVAyX0dQX1RJTUVSX0JBU0UJCTB4NDgwMjgwMDAKLSNkZWZpbmUgQ01fQ0xLU0VMX1dLVVAJCQkweDQ4MDA4NDQwCi0jZGVmaW5lIEdQX1RJTUVSX1RJRFIJCQkweDAwCi0jZGVmaW5lIEdQX1RJTUVSX1RJU1IJCQkweDE4Ci0jZGVmaW5lIEdQX1RJTUVSX1RJRVIJCQkweDFjCi0jZGVmaW5lIEdQX1RJTUVSX1RDTFIJCQkweDI0Ci0jZGVmaW5lIEdQX1RJTUVSX1RDUlIJCQkweDI4Ci0jZGVmaW5lIEdQX1RJTUVSX1RMRFIJCQkweDJjCi0jZGVmaW5lIEdQX1RJTUVSX1RUR1IJCQkweDMwCi0jZGVmaW5lIEdQX1RJTUVSX1RTSUNSCQkJMHg0MAotCiAjZGVmaW5lIE9NQVBfMzJLX1RJQ0tTX1BFUl9IWgkJKDMyNzY4IC8gSFopCiAKIC8qCkBAIC0xMDIsMjQgKzkyLDU1IEBACiAjZGVmaW5lIEpJRkZJRVNfVE9fSFdfVElDS1MobnJfamlmZmllcywgY2xvY2tfcmF0ZSkJCQlcCiAJCQkJKCgobnJfamlmZmllcykgKiAoY2xvY2tfcmF0ZSkpIC8gSFopCiAKKyNpZiBkZWZpbmVkKENPTkZJR19BUkNIX09NQVAxKQorCiBzdGF0aWMgaW5saW5lIHZvaWQgb21hcF8zMmtfdGltZXJfd3JpdGUoaW50IHZhbCwgaW50IHJlZykKIHsKLQlpZiAoY3B1X2NsYXNzX2lzX29tYXAxKCkpCi0JCW9tYXBfd3JpdGV3KHZhbCwgT01BUDFfMzJLX1RJTUVSX0JBU0UgKyByZWcpOwotCi0JaWYgKGNwdV9pc19vbWFwMjR4eCgpKQotCQlvbWFwX3dyaXRlbCh2YWwsIE9NQVAyX0dQX1RJTUVSX0JBU0UgKyByZWcpOworCW9tYXBfd3JpdGV3KHZhbCwgT01BUDFfMzJLX1RJTUVSX0JBU0UgKyByZWcpOwogfQogCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgb21hcF8zMmtfdGltZXJfcmVhZChpbnQgcmVnKQogewotCWlmIChjcHVfY2xhc3NfaXNfb21hcDEoKSkKLQkJcmV0dXJuIG9tYXBfcmVhZGwoT01BUDFfMzJLX1RJTUVSX0JBU0UgKyByZWcpICYgMHhmZmZmZmY7Ci0KLQlpZiAoY3B1X2lzX29tYXAyNHh4KCkpCi0JCXJldHVybiBvbWFwX3JlYWRsKE9NQVAyX0dQX1RJTUVSX0JBU0UgKyByZWcpOworCXJldHVybiBvbWFwX3JlYWRsKE9NQVAxXzMyS19USU1FUl9CQVNFICsgcmVnKSAmIDB4ZmZmZmZmOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgb21hcF8zMmtfdGltZXJfc3RhcnQodW5zaWduZWQgbG9uZyBsb2FkX3ZhbCkKK3sKKwlvbWFwXzMya190aW1lcl93cml0ZShsb2FkX3ZhbCwgT01BUDFfMzJLX1RJTUVSX1RWUik7CisJb21hcF8zMmtfdGltZXJfd3JpdGUoMHgwZiwgT01BUDFfMzJLX1RJTUVSX0NSKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIG9tYXBfMzJrX3RpbWVyX3N0b3Aodm9pZCkKK3sKKwlvbWFwXzMya190aW1lcl93cml0ZSgweDAsIE9NQVAxXzMyS19USU1FUl9DUik7Cit9CisKKyNkZWZpbmUgb21hcF8zMmtfdGltZXJfYWNrX2lycSgpCisKKyNlbGlmIGRlZmluZWQoQ09ORklHX0FSQ0hfT01BUDIpCisKK3N0YXRpYyBzdHJ1Y3Qgb21hcF9kbV90aW1lciAqZ3B0aW1lcjsKKworc3RhdGljIGlubGluZSB2b2lkIG9tYXBfMzJrX3RpbWVyX3N0YXJ0KHVuc2lnbmVkIGxvbmcgbG9hZF92YWwpCit7CisJb21hcF9kbV90aW1lcl9zZXRfbG9hZChncHRpbWVyLCAxLCAweGZmZmZmZmZmIC0gbG9hZF92YWwpOworCW9tYXBfZG1fdGltZXJfc2V0X2ludF9lbmFibGUoZ3B0aW1lciwgT01BUF9USU1FUl9JTlRfT1ZFUkZMT1cpOworCW9tYXBfZG1fdGltZXJfc3RhcnQoZ3B0aW1lcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBvbWFwXzMya190aW1lcl9zdG9wKHZvaWQpCit7CisJb21hcF9kbV90aW1lcl9zdG9wKGdwdGltZXIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgb21hcF8zMmtfdGltZXJfYWNrX2lycSh2b2lkKQoreworCXUzMiBzdGF0dXMgPSBvbWFwX2RtX3RpbWVyX3JlYWRfc3RhdHVzKGdwdGltZXIpOworCW9tYXBfZG1fdGltZXJfd3JpdGVfc3RhdHVzKGdwdGltZXIsIHN0YXR1cyk7Cit9CisKKyNlbmRpZgorCiAvKgogICogVGhlIDMyS0h6IHN5bmNocm9uaXplZCB0aW1lciBpcyBhbiBhZGRpdGlvbmFsIHRpbWVyIG9uIDE2eHguCiAgKiBJdCBpcyBhbHdheXMgcnVubmluZy4KQEAgLTEyOSwyOSArMTUwLDYgQEAKIAlyZXR1cm4gb21hcF9yZWFkbChUSU1FUl8zMktfU1lOQ0hST05JWkVEKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIG9tYXBfMzJrX3RpbWVyX3N0YXJ0KHVuc2lnbmVkIGxvbmcgbG9hZF92YWwpCi17Ci0JaWYgKGNwdV9jbGFzc19pc19vbWFwMSgpKSB7Ci0JCW9tYXBfMzJrX3RpbWVyX3dyaXRlKGxvYWRfdmFsLCBPTUFQMV8zMktfVElNRVJfVFZSKTsKLQkJb21hcF8zMmtfdGltZXJfd3JpdGUoMHgwZiwgT01BUDFfMzJLX1RJTUVSX0NSKTsKLQl9Ci0KLQlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKLQkJb21hcF8zMmtfdGltZXJfd3JpdGUoMHhmZmZmZmZmZiAtIGxvYWRfdmFsLCBHUF9USU1FUl9UQ1JSKTsKLQkJb21hcF8zMmtfdGltZXJfd3JpdGUoKDEgPDwgMSksIEdQX1RJTUVSX1RJRVIpOwotCQlvbWFwXzMya190aW1lcl93cml0ZSgoMSA8PCAxKSB8IDEsIEdQX1RJTUVSX1RDTFIpOwotCX0KLX0KLQotc3RhdGljIGlubGluZSB2b2lkIG9tYXBfMzJrX3RpbWVyX3N0b3Aodm9pZCkKLXsKLQlpZiAoY3B1X2NsYXNzX2lzX29tYXAxKCkpCi0JCW9tYXBfMzJrX3RpbWVyX3dyaXRlKDB4MCwgT01BUDFfMzJLX1RJTUVSX0NSKTsKLQotCWlmIChjcHVfaXNfb21hcDI0eHgoKSkKLQkJb21hcF8zMmtfdGltZXJfd3JpdGUoMHgwLCBHUF9USU1FUl9UQ0xSKTsKLX0KLQogLyoKICAqIFJvdW5kcyBkb3duIHRvIG5lYXJlc3QgdXNlYy4gTm90ZSB0aGF0IHRoaXMgd2lsbCBvdmVyZmxvdyBmb3IgbGFyZ2VyIHZhbHVlcy4KICAqLwpAQCAtMjAzLDExICsyMDEsNyBAQAogCiAJd3JpdGVfc2VxbG9ja19pcnFzYXZlKCZ4dGltZV9sb2NrLCBmbGFncyk7CiAKLQlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKLQkJdTMyIHN0YXR1cyA9IG9tYXBfMzJrX3RpbWVyX3JlYWQoR1BfVElNRVJfVElTUik7Ci0JCW9tYXBfMzJrX3RpbWVyX3dyaXRlKHN0YXR1cywgR1BfVElNRVJfVElTUik7Ci0JfQotCisJb21hcF8zMmtfdGltZXJfYWNrX2lycSgpOwogCW5vdyA9IG9tYXBfMzJrX3N5bmNfdGltZXJfcmVhZCgpOwogCiAJd2hpbGUgKChzaWduZWQgbG9uZykobm93IC0gb21hcF8zMmtfbGFzdF90aWNrKQpAQCAtMjY5LDkgKzI2Myw2IEBACiAJLmhhbmRsZXIJPSBvbWFwXzMya190aW1lcl9pbnRlcnJ1cHQsCiB9OwogCi1zdGF0aWMgc3RydWN0IGNsayAqIGdwdDFfaWNrOwotc3RhdGljIHN0cnVjdCBjbGsgKiBncHQxX2ZjazsKLQogc3RhdGljIF9faW5pdCB2b2lkIG9tYXBfaW5pdF8zMmtfdGltZXIodm9pZCkKIHsKICNpZmRlZiBDT05GSUdfTk9fSURMRV9IWgpAQCAtMjgwLDMyICsyNzEsMjIgQEAKIAogCWlmIChjcHVfY2xhc3NfaXNfb21hcDEoKSkKIAkJc2V0dXBfaXJxKElOVF9PU19USU1FUiwgJm9tYXBfMzJrX3RpbWVyX2lycSk7Ci0JaWYgKGNwdV9pc19vbWFwMjR4eCgpKQotCQlzZXR1cF9pcnEoMzcsICZvbWFwXzMya190aW1lcl9pcnEpOwogCW9tYXBfdGltZXIub2Zmc2V0ICA9IG9tYXBfMzJrX3RpbWVyX2dldHRpbWVvZmZzZXQ7CiAJb21hcF8zMmtfbGFzdF90aWNrID0gb21hcF8zMmtfc3luY190aW1lcl9yZWFkKCk7CiAKKyNpZmRlZiBDT05GSUdfQVJDSF9PTUFQMgogCS8qIFJFVklTSVQ6IENoZWNrIDI0eHggVElPQ1BfQ0ZHIHNldHRpbmdzIGFmdGVyIGlkbGUgd29ya3MgKi8KIAlpZiAoY3B1X2lzX29tYXAyNHh4KCkpIHsKLQkJb21hcF8zMmtfdGltZXJfd3JpdGUoMCwgR1BfVElNRVJfVENMUik7Ci0JCW9tYXBfd3JpdGVsKDAsIENNX0NMS1NFTF9XS1VQKTsJCS8qIDMyS0h6IGNsb2NrIHNvdXJjZSAqLworCQlncHRpbWVyID0gb21hcF9kbV90aW1lcl9yZXF1ZXN0X3NwZWNpZmljKDEpOworCQlCVUdfT04oZ3B0aW1lciA9PSBOVUxMKTsKIAotCQlncHQxX2ljayA9IGNsa19nZXQoTlVMTCwgImdwdDFfaWNrIik7Ci0JCWlmIChJU19FUlIoZ3B0MV9pY2spKQotCQkJcHJpbnRrKEtFUk5fRVJSICJDb3VsZCBub3QgZ2V0IGdwdDFfaWNrXG4iKTsKLQkJZWxzZQotCQkJY2xrX2VuYWJsZShncHQxX2ljayk7Ci0KLQkJZ3B0MV9mY2sgPSBjbGtfZ2V0KE5VTEwsICJncHQxX2ZjayIpOwotCQlpZiAoSVNfRVJSKGdwdDFfZmNrKSkKLQkJCXByaW50ayhLRVJOX0VSUiAiQ291bGQgbm90IGdldCBncHQxX2Zja1xuIik7Ci0JCWVsc2UKLQkJCWNsa19lbmFibGUoZ3B0MV9mY2spOwotCi0JCW1kZWxheSgxMDApOwkJLyogV2FpdCBmb3IgY2xvY2tzIHRvIHN0YWJpbGl6ZSAqLwotCi0JCW9tYXBfMzJrX3RpbWVyX3dyaXRlKDB4NywgR1BfVElNRVJfVElTUik7CisJCW9tYXBfZG1fdGltZXJfc2V0X3NvdXJjZShncHRpbWVyLCBPTUFQX1RJTUVSX1NSQ18zMl9LSFopOworCQlzZXR1cF9pcnEob21hcF9kbV90aW1lcl9nZXRfaXJxKGdwdGltZXIpLCAmb21hcF8zMmtfdGltZXJfaXJxKTsKKwkJb21hcF9kbV90aW1lcl9zZXRfaW50X2VuYWJsZShncHRpbWVyLAorCQkJT01BUF9USU1FUl9JTlRfQ0FQVFVSRSB8IE9NQVBfVElNRVJfSU5UX09WRVJGTE9XIHwKKwkJCU9NQVBfVElNRVJfSU5UX01BVENIKTsKIAl9CisjZW5kaWYKIAogCW9tYXBfMzJrX3RpbWVyX3N0YXJ0KE9NQVBfMzJLX1RJTUVSX1RJQ0tfUEVSSU9EKTsKIH0KQEAgLTMxNyw2ICsyOTgsOSBAQAogICovCiBzdGF0aWMgdm9pZCBfX2luaXQgb21hcF90aW1lcl9pbml0KHZvaWQpCiB7CisjaWZkZWYgQ09ORklHX09NQVBfRE1fVElNRVIKKwlvbWFwX2RtX3RpbWVyX2luaXQoKTsKKyNlbmRpZgogCW9tYXBfaW5pdF8zMmtfdGltZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvb21hcC5jIGIvZHJpdmVycy9tbWMvb21hcC5jCmluZGV4IGMyNTI0NGIuLjJiNzk5NmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL29tYXAuYworKysgYi9kcml2ZXJzL21tYy9vbWFwLmMKQEAgLTYxLDYgKzYxLDcgQEAKIAl1bnNpZ25lZCBjaGFyCQlpZDsgLyogMTZ4eCBjaGlwcyBoYXZlIDIgTU1DIGJsb2NrcyAqLwogCXN0cnVjdCBjbGsgKgkJaWNsazsKIAlzdHJ1Y3QgY2xrICoJCWZjbGs7CisJc3RydWN0IHJlc291cmNlCQkqcmVzOwogCXZvaWQgX19pb21lbQkJKmJhc2U7CiAJaW50CQkJaXJxOwogCXVuc2lnbmVkIGNoYXIJCWJ1c19tb2RlOwpAQCAtMzQwLDggKzM0MSw2IEBACiBtbWNfb21hcF94ZmVyX2RhdGEoc3RydWN0IG1tY19vbWFwX2hvc3QgKmhvc3QsIGludCB3cml0ZSkKIHsKIAlpbnQgbjsKLQl2b2lkIF9faW9tZW0gKnJlZzsKLQl1MTYgKnA7CiAKIAlpZiAoaG9zdC0+YnVmZmVyX2J5dGVzX2xlZnQgPT0gMCkgewogCQlob3N0LT5zZ19pZHgrKzsKQEAgLTY1OCwxMiArNjU3LDEyIEBACiAJc3RydWN0IG1tY19kYXRhICptbWNkYXQgPSBob3N0LT5kYXRhOwogCiAJaWYgKHVubGlrZWx5KGhvc3QtPmRtYV9jaCA8IDApKSB7Ci0JCWRldl9lcnIobW1jX2Rldihob3N0LT5tbWMpLCAiRE1BIGNhbGxiYWNrIHdoaWxlIERNQSBub3QKLQkJCQllbmFibGVkXG4iKTsKKwkJZGV2X2VycihtbWNfZGV2KGhvc3QtPm1tYyksCisJCQkiRE1BIGNhbGxiYWNrIHdoaWxlIERNQSBub3QgZW5hYmxlZFxuIik7CiAJCXJldHVybjsKIAl9CiAJLyogRklYTUU6IFdlIHJlYWxseSBzaG91bGQgZG8gc29tZXRoaW5nIHRvIF9oYW5kbGVfIHRoZSBlcnJvcnMgKi8KLQlpZiAoY2hfc3RhdHVzICYgT01BUF9ETUFfVE9VVF9JUlEpIHsKKwlpZiAoY2hfc3RhdHVzICYgT01BUDFfRE1BX1RPVVRfSVJRKSB7CiAJCWRldl9lcnIobW1jX2Rldihob3N0LT5tbWMpLCJETUEgdGltZW91dFxuIik7CiAJCXJldHVybjsKIAl9CkBAIC05NzMsMjAgKzk3MiwyMCBAQAogCXN0cnVjdCBvbWFwX21tY19jb25mICptaW5mbyA9IHBkZXYtPmRldi5wbGF0Zm9ybV9kYXRhOwogCXN0cnVjdCBtbWNfaG9zdCAqbW1jOwogCXN0cnVjdCBtbWNfb21hcF9ob3N0ICpob3N0ID0gTlVMTDsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnI7CiAJaW50IHJldCA9IDA7CisJaW50IGlycTsKIAkKLQlpZiAocGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKSB8fAotCQkJcGxhdGZvcm1fZ2V0X2lycShwZGV2LCBJT1JFU09VUkNFX0lSUSwgMCkpIHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAibW1jX29tYXBfcHJvYmU6IGludmFsaWQgcmVzb3VyY2UgdHlwZVxuIik7Ci0JCXJldHVybiAtRU5PREVWOwotCX0KKwlyID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOworCWlmICghciB8fCBpcnEgPCAwKQorCQlyZXR1cm4gLUVOWElPOwogCi0JaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24ocGRldi0+cmVzb3VyY2VbMF0uc3RhcnQsCisJciA9IHJlcXVlc3RfbWVtX3JlZ2lvbihwZGV2LT5yZXNvdXJjZVswXS5zdGFydCwKIAkJCQlwZGV2LT5yZXNvdXJjZVswXS5lbmQgLSBwZGV2LT5yZXNvdXJjZVswXS5zdGFydCArIDEsCi0JCQkJcGRldi0+bmFtZSkpIHsKLQkJZGV2X2RiZygmcGRldi0+ZGV2LCAicmVxdWVzdF9tZW1fcmVnaW9uIGZhaWxlZFxuIik7CisJCQkgICAgICAgcGRldi0+bmFtZSk7CisJaWYgKCFyKQogCQlyZXR1cm4gLUVCVVNZOwotCX0KIAogCW1tYyA9IG1tY19hbGxvY19ob3N0KHNpemVvZihzdHJ1Y3QgbW1jX29tYXBfaG9zdCksICZwZGV2LT5kZXYpOwogCWlmICghbW1jKSB7CkBAIC0xMDAzLDYgKzEwMDIsOCBAQAogCWhvc3QtPmRtYV90aW1lci5kYXRhID0gKHVuc2lnbmVkIGxvbmcpIGhvc3Q7CiAKIAlob3N0LT5pZCA9IHBkZXYtPmlkOworCWhvc3QtPnJlcyA9IHI7CisJaG9zdC0+aXJxID0gaXJxOwogCiAJaWYgKGNwdV9pc19vbWFwMjR4eCgpKSB7CiAJCWhvc3QtPmljbGsgPSBjbGtfZ2V0KCZwZGV2LT5kZXYsICJtbWNfaWNrIik7CkBAIC0xMDMyLDEzICsxMDMzLDkgQEAKIAlob3N0LT5kbWFfY2ggPSAtMTsKIAogCWhvc3QtPmlycSA9IHBkZXYtPnJlc291cmNlWzFdLnN0YXJ0OwotCWhvc3QtPmJhc2UgPSBpb3JlbWFwKHBkZXYtPnJlcy5zdGFydCwgU1pfNEspOwotCWlmICghaG9zdC0+YmFzZSkgewotCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIG91dDsKLQl9CisJaG9zdC0+YmFzZSA9ICh2b2lkIF9faW9tZW0qKUlPX0FERFJFU1Moci0+c3RhcnQpOwogCi0JIGlmIChtaW5mby0+d2lyZTQpCisJaWYgKG1pbmZvLT53aXJlNCkKIAkJIG1tYy0+Y2FwcyB8PSBNTUNfQ0FQXzRfQklUX0RBVEE7CiAKIAltbWMtPm9wcyA9ICZtbWNfb21hcF9vcHM7CkBAIC0xMDU3LDggKzEwNTQsOCBAQAogCiAJaWYgKGhvc3QtPnBvd2VyX3BpbiA+PSAwKSB7CiAJCWlmICgocmV0ID0gb21hcF9yZXF1ZXN0X2dwaW8oaG9zdC0+cG93ZXJfcGluKSkgIT0gMCkgewotCQkJZGV2X2VycihtbWNfZGV2KGhvc3QtPm1tYyksICJVbmFibGUgdG8gZ2V0IEdQSU8KLQkJCQkJcGluIGZvciBNTUMgcG93ZXJcbiIpOworCQkJZGV2X2VycihtbWNfZGV2KGhvc3QtPm1tYyksCisJCQkJIlVuYWJsZSB0byBnZXQgR1BJTyBwaW4gZm9yIE1NQyBwb3dlclxuIik7CiAJCQlnb3RvIG91dDsKIAkJfQogCQlvbWFwX3NldF9ncGlvX2RpcmVjdGlvbihob3N0LT5wb3dlcl9waW4sIDApOwpAQCAtMTEwMCw3ICsxMDk3LDcgQEAKIAkJCQlkZXZpY2VfcmVtb3ZlX2ZpbGUoJnBkZXYtPmRldiwgJmRldl9hdHRyX2NvdmVyX3N3aXRjaCk7CiAJCX0KIAkJaWYgKHJldCkgewotCQkJZGV2X3dhbihtbWNfZGV2KGhvc3QtPm1tYyksICJVbmFibGUgdG8gY3JlYXRlIHN5c2ZzIGF0dHJpYnV0ZXNcbiIpOworCQkJZGV2X3dhcm4obW1jX2Rldihob3N0LT5tbWMpLCAiVW5hYmxlIHRvIGNyZWF0ZSBzeXNmcyBhdHRyaWJ1dGVzXG4iKTsKIAkJCWZyZWVfaXJxKE9NQVBfR1BJT19JUlEoaG9zdC0+c3dpdGNoX3BpbiksIGhvc3QpOwogCQkJb21hcF9mcmVlX2dwaW8oaG9zdC0+c3dpdGNoX3Bpbik7CiAJCQlob3N0LT5zd2l0Y2hfcGluID0gLTE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvb21hcF91ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9vbWFwX3VkYy5jCmluZGV4IGZiZWE1MTQuLjM2MzM2NDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9vbWFwX3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9vbWFwX3VkYy5jCkBAIC03NzMsNyArNzczLDcgQEAKIAlzdHJ1Y3Qgb21hcF9lcAkqZXAgPSBkYXRhOwogCiAJLyogaWYgY2hfc3RhdHVzICYgT01BUF9ETUFfRFJPUF9JUlEgLi4uICovCi0JLyogaWYgY2hfc3RhdHVzICYgT01BUF9ETUFfVE9VVF9JUlEgLi4uICovCisJLyogaWYgY2hfc3RhdHVzICYgT01BUDFfRE1BX1RPVVRfSVJRIC4uLiAqLwogCUVSUigiJXMgZG1hIGVycm9yLCBsY2ggJWQgc3RhdHVzICUwMnhcbiIsIGVwLT5lcC5uYW1lLCBsY2gsIGNoX3N0YXR1cyk7CiAKIAkvKiBjb21wbGV0ZSBjdXJyZW50IHRyYW5zZmVyIC4uLiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1mc2FtcGxlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLWZzYW1wbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWExZTUyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC1mc2FtcGxlLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQtZnNhbXBsZS5oCisgKgorICogQm9hcmQtc3BlY2lmaWMgZ29vZGllcyBmb3IgVEkgRi1TYW1wbGUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEdvb2dsZSwgSW5jLgorICogQXV0aG9yOiBCcmlhbiBTd2V0bGFuZCA8c3dldGxhbmRAZ29vZ2xlLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgX19BU01fQVJDSF9PTUFQX0ZTQU1QTEVfSAorI2RlZmluZSBfX0FTTV9BUkNIX09NQVBfRlNBTVBMRV9ICisKKy8qIGZzYW1wbGUgaXMgcHJldHR5IGNsb3NlIHRvIHAyLXNhbXBsZSAqLworI2luY2x1ZGUgPGFzbS9hcmNoL2JvYXJkLXBlcnNldXMyLmg+CisKKyNkZWZpbmUgZnNhbXBsZV9jcGxkX3JlYWQocmVnKSBfX3Jhd19yZWFkYihyZWcpCisjZGVmaW5lIGZzYW1wbGVfY3BsZF93cml0ZSh2YWwsIHJlZykgX19yYXdfd3JpdGViKHZhbCwgcmVnKQorCisjZGVmaW5lIEZTQU1QTEVfQ1BMRF9CQVNFICAgIDB4RTgxMDAwMDAKKyNkZWZpbmUgRlNBTVBMRV9DUExEX1NJWkUgICAgU1pfNEsKKyNkZWZpbmUgRlNBTVBMRV9DUExEX1NUQVJUICAgMHgwNTA4MDAwMAorCisjZGVmaW5lIEZTQU1QTEVfQ1BMRF9SRUdfQSAgIChGU0FNUExFX0NQTERfQkFTRSArIDB4MDApCisjZGVmaW5lIEZTQU1QTEVfQ1BMRF9TV0lUQ0ggIChGU0FNUExFX0NQTERfQkFTRSArIDB4MDIpCisjZGVmaW5lIEZTQU1QTEVfQ1BMRF9VQVJUICAgIChGU0FNUExFX0NQTERfQkFTRSArIDB4MDIpCisjZGVmaW5lIEZTQU1QTEVfQ1BMRF9SRUdfQiAgIChGU0FNUExFX0NQTERfQkFTRSArIDB4MDQpCisjZGVmaW5lIEZTQU1QTEVfQ1BMRF9WRVJTSU9OIChGU0FNUExFX0NQTERfQkFTRSArIDB4MDYpCisjZGVmaW5lIEZTQU1QTEVfQ1BMRF9TRVRfQ0xSIChGU0FNUExFX0NQTERfQkFTRSArIDB4MDYpCisKKyNkZWZpbmUgRlNBTVBMRV9DUExEX0JJVF9CVF9SRVNFVCAgICAgICAgIDAKKyNkZWZpbmUgRlNBTVBMRV9DUExEX0JJVF9MQ0RfUkVTRVQgICAgICAgIDEKKyNkZWZpbmUgRlNBTVBMRV9DUExEX0JJVF9DQU1fUFdETiAgICAgICAgIDIKKyNkZWZpbmUgRlNBTVBMRV9DUExEX0JJVF9DSEFSR0VSX0VOQUJMRSAgIDMKKyNkZWZpbmUgRlNBTVBMRV9DUExEX0JJVF9TRF9NTUNfRU4gICAgICAgIDQKKyNkZWZpbmUgRlNBTVBMRV9DUExEX0JJVF9hR1BTX1BXUkVOICAgICAgIDUKKyNkZWZpbmUgRlNBTVBMRV9DUExEX0JJVF9CQUNLTElHSFQgICAgICAgIDYKKyNkZWZpbmUgRlNBTVBMRV9DUExEX0JJVF9hR1BTX0VOX1JFU0VUICAgIDcKKyNkZWZpbmUgRlNBTVBMRV9DUExEX0JJVF9hR1BTX1NMRUVQeF9OICAgIDgKKyNkZWZpbmUgRlNBTVBMRV9DUExEX0JJVF9PVEdfUkVTRVQgICAgICAgIDkKKworI2RlZmluZSBmc2FtcGxlX2NwbGRfc2V0KGJpdCkgXAorICAgIGZzYW1wbGVfY3BsZF93cml0ZSgoKChiaXQpICYgMTUpIDw8IDQpIHwgMHgwZiwgRlNBTVBMRV9DUExEX1NFVF9DTFIpCisKKyNkZWZpbmUgZnNhbXBsZV9jcGxkX2NsZWFyKGJpdCkgXAorICAgIGZzYW1wbGVfY3BsZF93cml0ZSgweGYwIHwgKChiaXQpICYgMTUpLCBGU0FNUExFX0NQTERfU0VUX0NMUikKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2JvYXJkLmgKaW5kZXggZGZkYmYwNi4uZWRmMWRjNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ib2FyZC5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvYm9hcmQuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBPTUFQX1RBR19VQVJUCQkweDRmMDcKICNkZWZpbmUgT01BUF9UQUdfRkJNRU0JCTB4NGYwOAogI2RlZmluZSBPTUFQX1RBR19TVElfQ09OU09MRQkweDRmMDkKKyNkZWZpbmUgT01BUF9UQUdfQ0FNRVJBX1NFTlNPUgkweDRmMGEKIAogI2RlZmluZSBPTUFQX1RBR19CT09UX1JFQVNPTiAgICAweDRmODAKICNkZWZpbmUgT01BUF9UQUdfRkxBU0hfUEFSVAkweDRmODEKQEAgLTYxLDYgKzYyLDEyIEBACiAJdTggY2hhbm5lbDsKIH07CiAKK3N0cnVjdCBvbWFwX2NhbWVyYV9zZW5zb3JfY29uZmlnIHsKKwl1MTYgcmVzZXRfZ3BpbzsKKwlpbnQgKCpwb3dlcl9vbikodm9pZCAqIGRhdGEpOworCWludCAoKnBvd2VyX29mZikodm9pZCAqIGRhdGEpOworfTsKKwogc3RydWN0IG9tYXBfdXNiX2NvbmZpZyB7CiAJLyogQ29uZmlndXJlIGRyaXZlcnMgYWNjb3JkaW5nIHRvIHRoZSBjb25uZWN0b3JzIG9uIHlvdXIgYm9hcmQ6CiAJICogIC0gIkEiIGNvbm5lY3RvciAocmVjdGFndWxhcikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZG1hLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2RtYS5oCmluZGV4IGNhMTIwMjMuLjFiMWIwMjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZG1hLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9kbWEuaApAQCAtMTg1LDggKzE4NSw4IEBACiAvKiBETUEgY2hhbm5lbHMgZm9yIDI0eHggKi8KICNkZWZpbmUgT01BUDI0WFhfRE1BX05PX0RFVklDRQkJMAogI2RlZmluZSBPTUFQMjRYWF9ETUFfWFRJX0RNQQkJMQkvKiBTX0RNQV8wICovCi0jZGVmaW5lIE9NQVAyNFhYX0RNQV9FWFRfTkRNQV9SRVEwCTIJLyogU19ETUFfMSAqLwotI2RlZmluZSBPTUFQMjRYWF9ETUFfRVhUX05ETUFfUkVRMQkzCS8qIFNfRE1BXzIgKi8KKyNkZWZpbmUgT01BUDI0WFhfRE1BX0VYVF9ETUFSRVEwCTIJLyogU19ETUFfMSAqLworI2RlZmluZSBPTUFQMjRYWF9ETUFfRVhUX0RNQVJFUTEJMwkvKiBTX0RNQV8yICovCiAjZGVmaW5lIE9NQVAyNFhYX0RNQV9HUE1DCQk0CS8qIFNfRE1BXzMgKi8KICNkZWZpbmUgT01BUDI0WFhfRE1BX0dGWAkJNQkvKiBTX0RNQV80ICovCiAjZGVmaW5lIE9NQVAyNFhYX0RNQV9EU1MJCTYJLyogU19ETUFfNSAqLwpAQCAtMTk3LDcgKzE5Nyw5IEBACiAjZGVmaW5lIE9NQVAyNFhYX0RNQV9ERVNfVFgJCTExCS8qIFNfRE1BXzEwICovCiAjZGVmaW5lIE9NQVAyNFhYX0RNQV9ERVNfUlgJCTEyCS8qIFNfRE1BXzExICovCiAjZGVmaW5lIE9NQVAyNFhYX0RNQV9TSEExTUQ1X1JYCQkxMwkvKiBTX0RNQV8xMiAqLwotCisjZGVmaW5lIE9NQVAyNFhYX0RNQV9FWFRfRE1BUkVRMgkxNAkvKiBTX0RNQV8xMyAqLworI2RlZmluZSBPTUFQMjRYWF9ETUFfRVhUX0RNQVJFUTMJMTUJLyogU19ETUFfMTQgKi8KKyNkZWZpbmUgT01BUDI0WFhfRE1BX0VYVF9ETUFSRVE0CTE2CS8qIFNfRE1BXzE1ICovCiAjZGVmaW5lIE9NQVAyNFhYX0RNQV9FQUNfQUNfUkQJCTE3CS8qIFNfRE1BXzE2ICovCiAjZGVmaW5lIE9NQVAyNFhYX0RNQV9FQUNfQUNfV1IJCTE4CS8qIFNfRE1BXzE3ICovCiAjZGVmaW5lIE9NQVAyNFhYX0RNQV9FQUNfTURfVUxfUkQJMTkJLyogU19ETUFfMTggKi8KQEAgLTI0NCw2ICsyNDYsNyBAQAogI2RlZmluZSBPTUFQMjRYWF9ETUFfTU1DMV9UWAkJNjEJLyogU0RNQV82MCAqLwogI2RlZmluZSBPTUFQMjRYWF9ETUFfTU1DMV9SWAkJNjIJLyogU0RNQV82MSAqLwogI2RlZmluZSBPTUFQMjRYWF9ETUFfTVMJCQk2MwkvKiBTRE1BXzYyICovCisjZGVmaW5lIE9NQVAyNFhYX0RNQV9FWFRfRE1BUkVRNQk2NAkvKiBTX0RNQV82MyAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCkBAIC0yNzQsNyArMjc3LDcgQEAKICNkZWZpbmUgT01BUDE2MTBfRE1BX0xDRF9MQ0hfQ1RSTAkoT01BUDE2MTBfRE1BX0xDRF9CQVNFICsgMHhlYSkKICNkZWZpbmUgT01BUDE2MTBfRE1BX0xDRF9TUkNfRklfQjFfVQkoT01BUDE2MTBfRE1BX0xDRF9CQVNFICsgMHhmNCkKIAotI2RlZmluZSBPTUFQX0RNQV9UT1VUX0lSUQkJKDEgPDwgMCkJLyogT25seSBvbiBvbWFwMSAqLworI2RlZmluZSBPTUFQMV9ETUFfVE9VVF9JUlEJCSgxIDw8IDApCiAjZGVmaW5lIE9NQVBfRE1BX0RST1BfSVJRCQkoMSA8PCAxKQogI2RlZmluZSBPTUFQX0RNQV9IQUxGX0lSUQkJKDEgPDwgMikKICNkZWZpbmUgT01BUF9ETUFfRlJBTUVfSVJRCQkoMSA8PCAzKQpAQCAtMzE1LDExICszMTgsMTEgQEAKIAlPTUFQX0xDRF9ETUFfQjJfQk9UVE9NCiB9OwogCi0vKiBSRVZJU0lUOiBDaGVjayBpZiBCVVJTVF80IGlzIHJlYWxseSAxIChvciAyKSAqLwogZW51bSBvbWFwX2RtYV9idXJzdF9tb2RlIHsKIAlPTUFQX0RNQV9EQVRBX0JVUlNUX0RJUyA9IDAsCiAJT01BUF9ETUFfREFUQV9CVVJTVF80LAotCU9NQVBfRE1BX0RBVEFfQlVSU1RfOAorCU9NQVBfRE1BX0RBVEFfQlVSU1RfOCwKKwlPTUFQX0RNQV9EQVRBX0JVUlNUXzE2LAogfTsKIAogZW51bSBvbWFwX2RtYV9jb2xvcl9tb2RlIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZG10aW1lci5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9kbXRpbWVyLmgKaW5kZXggZTY1MjJlNi4uN2EyODlmZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9kbXRpbWVyLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9kbXRpbWVyLmgKQEAgLTUsNiArNSw3IEBACiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA1IE5va2lhIENvcnBvcmF0aW9uCiAgKiBBdXRob3I6IExhdXJpIExldWtrdW5lbiA8bGF1cmkubGV1a2t1bmVuQG5va2lhLmNvbT4KKyAqIFBXTSBhbmQgY2xvY2sgZnJhbXdvcmsgc3VwcG9ydCBieSBUaW1vIFRlcmFzLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKQEAgLTI1LDY5ICsyNiw1NiBAQAogICogNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBfX0FTTV9BUkNIX1RJTUVSX0gKLSNkZWZpbmUgX19BU01fQVJDSF9USU1FUl9ICisjaWZuZGVmIF9fQVNNX0FSQ0hfRE1USU1FUl9ICisjZGVmaW5lIF9fQVNNX0FSQ0hfRE1USU1FUl9ICiAKLSNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Ci0KLSNkZWZpbmUgT01BUF9USU1FUl9TUkNfQVJNWE9SCQkweDAwCi0jZGVmaW5lIE9NQVBfVElNRVJfU1JDXzMyX0tIWgkJMHgwMQotI2RlZmluZSBPTUFQX1RJTUVSX1NSQ19FWFRfQ0xLCQkweDAyCi0KLS8qIHRpbWVyIGNvbnRyb2wgcmVnIGJpdHMgKi8KLSNkZWZpbmUgT01BUF9USU1FUl9DVFJMX0NBUFRNT0RFCSgxIDw8IDEzKQotI2RlZmluZSBPTUFQX1RJTUVSX0NUUkxfUFQJCSgxIDw8IDEyKQotI2RlZmluZSBPTUFQX1RJTUVSX0NUUkxfVFJHX09WRVJGTE9XCSgweDEgPDwgMTApCi0jZGVmaW5lIE9NQVBfVElNRVJfQ1RSTF9UUkdfT0ZBTkRNQVRDSAkoMHgyIDw8IDEwKQotI2RlZmluZSBPTUFQX1RJTUVSX0NUUkxfVENNX0xPV1RPSElHSAkoMHgxIDw8IDgpCi0jZGVmaW5lIE9NQVBfVElNRVJfQ1RSTF9UQ01fSElHSFRPTE9XCSgweDIgPDwgOCkKLSNkZWZpbmUgT01BUF9USU1FUl9DVFJMX1RDTV9CT1RIRURHRVMJKDB4MyA8PCA4KQotI2RlZmluZSBPTUFQX1RJTUVSX0NUUkxfU0NQV00JCSgxIDw8IDcpCi0jZGVmaW5lIE9NQVBfVElNRVJfQ1RSTF9DRQkJKDEgPDwgNikJLyogY29tcGFyZSBlbmFibGUgKi8KLSNkZWZpbmUgT01BUF9USU1FUl9DVFJMX1BSRQkJKDEgPDwgNSkJLyogcHJlc2NhbGVyIGVuYWJsZSAqLwotI2RlZmluZSBPTUFQX1RJTUVSX0NUUkxfUFRWX1NISUZUCTIJCS8qIGhvdyBtdWNoIHRvIHNoaWZ0IHRoZSBwcmVzY2FsZXIgdmFsdWUgKi8KLSNkZWZpbmUgT01BUF9USU1FUl9DVFJMX0FSCQkoMSA8PCAxKQkvKiBhdXRvLXJlbG9hZCBlbmFibGUgKi8KLSNkZWZpbmUgT01BUF9USU1FUl9DVFJMX1NUCQkoMSA8PCAwKQkvKiBzdGFydCB0aW1lciAqLworLyogY2xvY2sgc291cmNlcyAqLworI2RlZmluZSBPTUFQX1RJTUVSX1NSQ19TWVNfQ0xLCQkJMHgwMAorI2RlZmluZSBPTUFQX1RJTUVSX1NSQ18zMl9LSFoJCQkweDAxCisjZGVmaW5lIE9NQVBfVElNRVJfU1JDX0VYVF9DTEsJCQkweDAyCiAKIC8qIHRpbWVyIGludGVycnVwdCBlbmFibGUgYml0cyAqLwotI2RlZmluZSBPTUFQX1RJTUVSX0lOVF9DQVBUVVJFCQkoMSA8PCAyKQotI2RlZmluZSBPTUFQX1RJTUVSX0lOVF9PVkVSRkxPVwkJKDEgPDwgMSkKLSNkZWZpbmUgT01BUF9USU1FUl9JTlRfTUFUQ0gJCSgxIDw8IDApCisjZGVmaW5lIE9NQVBfVElNRVJfSU5UX0NBUFRVUkUJCQkoMSA8PCAyKQorI2RlZmluZSBPTUFQX1RJTUVSX0lOVF9PVkVSRkxPVwkJCSgxIDw8IDEpCisjZGVmaW5lIE9NQVBfVElNRVJfSU5UX01BVENICQkJKDEgPDwgMCkKIAorLyogdHJpZ2dlciB0eXBlcyAqLworI2RlZmluZSBPTUFQX1RJTUVSX1RSSUdHRVJfTk9ORQkJCTB4MDAKKyNkZWZpbmUgT01BUF9USU1FUl9UUklHR0VSX09WRVJGTE9XCQkweDAxCisjZGVmaW5lIE9NQVBfVElNRVJfVFJJR0dFUl9PVkVSRkxPV19BTkRfQ09NUEFSRQkweDAyCiAKLXN0cnVjdCBvbWFwX2RtX3RpbWVyIHsKLQlzdHJ1Y3QgbGlzdF9oZWFkIHRpbWVyX2xpc3Q7CitzdHJ1Y3Qgb21hcF9kbV90aW1lcjsKK3N0cnVjdCBjbGs7CiAKLQl1MzIgYmFzZTsKLQl1bnNpZ25lZCBpbnQgaXJxOwotfTsKK2ludCBvbWFwX2RtX3RpbWVyX2luaXQodm9pZCk7CiAKLXUzMiBvbWFwX2RtX3RpbWVyX3JlYWRfcmVnKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lciwgaW50IHJlZyk7Ci12b2lkIG9tYXBfZG1fdGltZXJfd3JpdGVfcmVnKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lciwgaW50IHJlZywgdTMyIHZhbHVlKTsKLQotc3RydWN0IG9tYXBfZG1fdGltZXIgKiBvbWFwX2RtX3RpbWVyX3JlcXVlc3Qodm9pZCk7CitzdHJ1Y3Qgb21hcF9kbV90aW1lciAqb21hcF9kbV90aW1lcl9yZXF1ZXN0KHZvaWQpOworc3RydWN0IG9tYXBfZG1fdGltZXIgKm9tYXBfZG1fdGltZXJfcmVxdWVzdF9zcGVjaWZpYyhpbnQgdGltZXJfaWQpOwogdm9pZCBvbWFwX2RtX3RpbWVyX2ZyZWUoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKTsKLXZvaWQgb21hcF9kbV90aW1lcl9zZXRfc291cmNlKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lciwgaW50IHNvdXJjZSk7CiAKLXZvaWQgb21hcF9kbV90aW1lcl9zZXRfaW50X2VuYWJsZShzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIsIHVuc2lnbmVkIGludCB2YWx1ZSk7Ci12b2lkIG9tYXBfZG1fdGltZXJfc2V0X3RyaWdnZXIoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCB1bnNpZ25lZCBpbnQgdmFsdWUpOwotdm9pZCBvbWFwX2RtX3RpbWVyX2VuYWJsZV9jb21wYXJlKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lcik7Ci12b2lkIG9tYXBfZG1fdGltZXJfZW5hYmxlX2F1dG9yZWxvYWQoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKTsKK2ludCBvbWFwX2RtX3RpbWVyX2dldF9pcnEoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKTsKKwordTMyIG9tYXBfZG1fdGltZXJfbW9kaWZ5X2lkbGVjdF9tYXNrKHUzMiBpbnB1dG1hc2spOworc3RydWN0IGNsayAqb21hcF9kbV90aW1lcl9nZXRfZmNsayhzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpOwogCiB2b2lkIG9tYXBfZG1fdGltZXJfdHJpZ2dlcihzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpOwogdm9pZCBvbWFwX2RtX3RpbWVyX3N0YXJ0KHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lcik7CiB2b2lkIG9tYXBfZG1fdGltZXJfc3RvcChzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpOwogCi12b2lkIG9tYXBfZG1fdGltZXJfc2V0X2xvYWQoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCB1bnNpZ25lZCBpbnQgbG9hZCk7Ci12b2lkIG9tYXBfZG1fdGltZXJfc2V0X21hdGNoKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lciwgdW5zaWduZWQgaW50IG1hdGNoKTsKK3ZvaWQgb21hcF9kbV90aW1lcl9zZXRfc291cmNlKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lciwgaW50IHNvdXJjZSk7Cit2b2lkIG9tYXBfZG1fdGltZXJfc2V0X2xvYWQoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCBpbnQgYXV0b3JlbG9hZCwgdW5zaWduZWQgaW50IHZhbHVlKTsKK3ZvaWQgb21hcF9kbV90aW1lcl9zZXRfbWF0Y2goc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCBpbnQgZW5hYmxlLCB1bnNpZ25lZCBpbnQgbWF0Y2gpOwordm9pZCBvbWFwX2RtX3RpbWVyX3NldF9wd20oc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCBpbnQgZGVmX29uLCBpbnQgdG9nZ2xlLCBpbnQgdHJpZ2dlcik7Cit2b2lkIG9tYXBfZG1fdGltZXJfc2V0X3ByZXNjYWxlcihzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIsIGludCBwcmVzY2FsZXIpOworCit2b2lkIG9tYXBfZG1fdGltZXJfc2V0X2ludF9lbmFibGUoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyLCB1bnNpZ25lZCBpbnQgdmFsdWUpOwogCiB1bnNpZ25lZCBpbnQgb21hcF9kbV90aW1lcl9yZWFkX3N0YXR1cyhzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpOwogdm9pZCBvbWFwX2RtX3RpbWVyX3dyaXRlX3N0YXR1cyhzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIsIHVuc2lnbmVkIGludCB2YWx1ZSk7Ci0KIHVuc2lnbmVkIGludCBvbWFwX2RtX3RpbWVyX3JlYWRfY291bnRlcihzdHJ1Y3Qgb21hcF9kbV90aW1lciAqdGltZXIpOwotdm9pZCBvbWFwX2RtX3RpbWVyX3Jlc2V0X2NvdW50ZXIoc3RydWN0IG9tYXBfZG1fdGltZXIgKnRpbWVyKTsKK3ZvaWQgb21hcF9kbV90aW1lcl93cml0ZV9jb3VudGVyKHN0cnVjdCBvbWFwX2RtX3RpbWVyICp0aW1lciwgdW5zaWduZWQgaW50IHZhbHVlKTsKIAogaW50IG9tYXBfZG1fdGltZXJzX2FjdGl2ZSh2b2lkKTsKLXUzMiBvbWFwX2RtX3RpbWVyX21vZGlmeV9pZGxlY3RfbWFzayh1MzIgaW5wdXRtYXNrKTsKIAotI2VuZGlmIC8qIF9fQVNNX0FSQ0hfVElNRVJfSCAqLworCisjZW5kaWYgLyogX19BU01fQVJDSF9ETVRJTUVSX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZ3BtYy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9ncG1jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEwYTUyMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvZ3BtYy5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBHZW5lcmFsLVB1cnBvc2UgTWVtb3J5IENvbnRyb2xsZXIgZm9yIE9NQVAyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMDYgTm9raWEgQ29ycG9yYXRpb24KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpZm5kZWYgX19PTUFQMl9HUE1DX0gKKyNkZWZpbmUgX19PTUFQMl9HUE1DX0gKKworI2RlZmluZSBHUE1DX0NTX0NPTkZJRzEJCTB4MDAKKyNkZWZpbmUgR1BNQ19DU19DT05GSUcyCQkweDA0CisjZGVmaW5lIEdQTUNfQ1NfQ09ORklHMwkJMHgwOAorI2RlZmluZSBHUE1DX0NTX0NPTkZJRzQJCTB4MGMKKyNkZWZpbmUgR1BNQ19DU19DT05GSUc1CQkweDEwCisjZGVmaW5lIEdQTUNfQ1NfQ09ORklHNgkJMHgxNAorI2RlZmluZSBHUE1DX0NTX0NPTkZJRzcJCTB4MTgKKyNkZWZpbmUgR1BNQ19DU19OQU5EX0NPTU1BTkQJMHgxYworI2RlZmluZSBHUE1DX0NTX05BTkRfQUREUkVTUwkweDIwCisjZGVmaW5lIEdQTUNfQ1NfTkFORF9EQVRBCTB4MjQKKworI2RlZmluZSBHUE1DX0NPTkZJRzFfV1JBUEJVUlNUX1NVUFAgICAgICgxIDw8IDMxKQorI2RlZmluZSBHUE1DX0NPTkZJRzFfUkVBRE1VTFRJUExFX1NVUFAgICgxIDw8IDIwKQorI2RlZmluZSBHUE1DX0NPTkZJRzFfUkVBRFRZUEVfQVNZTkMgICAgICgwIDw8IDI5KQorI2RlZmluZSBHUE1DX0NPTkZJRzFfUkVBRFRZUEVfU1lOQyAgICAgICgxIDw8IDI5KQorI2RlZmluZSBHUE1DX0NPTkZJRzFfV1JJVEVUWVBFX0FTWU5DICAgICgwIDw8IDI3KQorI2RlZmluZSBHUE1DX0NPTkZJRzFfV1JJVEVUWVBFX1NZTkMgICAgICgxIDw8IDI3KQorI2RlZmluZSBHUE1DX0NPTkZJRzFfQ0xLQUNUSVZBVElPTlRJTUUodmFsKSAoKHZhbCAmIDMpIDw8IDI1KQorI2RlZmluZSBHUE1DX0NPTkZJRzFfUEFHRV9MRU4odmFsKSAgICAgICgodmFsICYgMykgPDwgMjMpCisjZGVmaW5lIEdQTUNfQ09ORklHMV9XQUlUX1JFQURfTU9OICAgICAgKDEgPDwgMjIpCisjZGVmaW5lIEdQTUNfQ09ORklHMV9XQUlUX1dSSVRFX01PTiAgICAgKDEgPDwgMjEpCisjZGVmaW5lIEdQTUNfQ09ORklHMV9XQUlUX01PTl9JSU1FKHZhbCkgKCh2YWwgJiAzKSA8PCAxOCkKKyNkZWZpbmUgR1BNQ19DT05GSUcxX1dBSVRfUElOX1NFTCh2YWwpICAoKHZhbCAmIDMpIDw8IDE2KQorI2RlZmluZSBHUE1DX0NPTkZJRzFfREVWSUNFU0laRSh2YWwpICAgICgodmFsICYgMykgPDwgMTIpCisjZGVmaW5lIEdQTUNfQ09ORklHMV9ERVZJQ0VTSVpFXzE2ICAgICAgR1BNQ19DT05GSUcxX0RFVklDRVNJWkUoMSkKKyNkZWZpbmUgR1BNQ19DT05GSUcxX0RFVklDRVRZUEUodmFsKSAgICAoKHZhbCAmIDMpIDw8IDEwKQorI2RlZmluZSBHUE1DX0NPTkZJRzFfREVWSUNFVFlQRV9OT1IgICAgIEdQTUNfQ09ORklHMV9ERVZJQ0VUWVBFKDApCisjZGVmaW5lIEdQTUNfQ09ORklHMV9ERVZJQ0VUWVBFX05BTkQgICAgR1BNQ19DT05GSUcxX0RFVklDRVRZUEUoMSkKKyNkZWZpbmUgR1BNQ19DT05GSUcxX01VWEFERERBVEEgICAgICAgICAoMSA8PCA5KQorI2RlZmluZSBHUE1DX0NPTkZJRzFfVElNRV9QQVJBX0dSQU4gICAgICgxIDw8IDQpCisjZGVmaW5lIEdQTUNfQ09ORklHMV9GQ0xLX0RJVih2YWwpICAgICAgKHZhbCAmIDMpCisjZGVmaW5lIEdQTUNfQ09ORklHMV9GQ0xLX0RJVjIgICAgICAgICAgKEdQTUNfQ09ORklHMV9GQ0xLX0RJVigxKSkKKyNkZWZpbmUgR1BNQ19DT05GSUcxX0ZDTEtfRElWMyAgICAgICAgICAoR1BNQ19DT05GSUcxX0ZDTEtfRElWKDIpKQorI2RlZmluZSBHUE1DX0NPTkZJRzFfRkNMS19ESVY0ICAgICAgICAgIChHUE1DX0NPTkZJRzFfRkNMS19ESVYoMykpCisKKy8qCisgKiBOb3RlIHRoYXQgYWxsIHZhbHVlcyBpbiB0aGlzIHN0cnVjdCBhcmUgaW4gbmFub3NlY29uZHMsIHdoaWxlCisgKiB0aGUgcmVnaXN0ZXIgdmFsdWVzIGFyZSBpbiBncG1jX2ZjayBjeWNsZXMuCisgKi8KK3N0cnVjdCBncG1jX3RpbWluZ3MgeworCS8qIE1pbmltdW0gY2xvY2sgcGVyaW9kIGZvciBzeW5jaHJvbm91cyBtb2RlICovCisJdTE2IHN5bmNfY2xrOworCisJLyogQ2hpcC1zZWxlY3Qgc2lnbmFsIHRpbWluZ3MgY29ycmVzcG9uZGluZyB0byBHUE1DX0NTX0NPTkZJRzIgKi8KKwl1MTYgY3Nfb247CQkvKiBBc3NlcnRpb24gdGltZSAqLworCXUxNiBjc19yZF9vZmY7CQkvKiBSZWFkIGRlYXNzZXJ0aW9uIHRpbWUgKi8KKwl1MTYgY3Nfd3Jfb2ZmOwkJLyogV3JpdGUgZGVhc3NlcnRpb24gdGltZSAqLworCisJLyogQURWIHNpZ25hbCB0aW1pbmdzIGNvcnJlc3BvbmRpbmcgdG8gR1BNQ19DT05GSUczICovCisJdTE2IGFkdl9vbjsJCS8qIEFzc2VydGlvbiB0aW1lICovCisJdTE2IGFkdl9yZF9vZmY7CQkvKiBSZWFkIGRlYXNzZXJ0aW9uIHRpbWUgKi8KKwl1MTYgYWR2X3dyX29mZjsJCS8qIFdyaXRlIGRlYXNzZXJ0aW9uIHRpbWUgKi8KKworCS8qIFdFIHNpZ25hbHMgdGltaW5ncyBjb3JyZXNwb25kaW5nIHRvIEdQTUNfQ09ORklHNCAqLworCXUxNiB3ZV9vbjsJCS8qIFdFIGFzc2VydGlvbiB0aW1lICovCisJdTE2IHdlX29mZjsJCS8qIFdFIGRlYXNzZXJ0aW9uIHRpbWUgKi8KKworCS8qIE9FIHNpZ25hbHMgdGltaW5ncyBjb3JyZXNwb25kaW5nIHRvIEdQTUNfQ09ORklHNCAqLworCXUxNiBvZV9vbjsJCS8qIE9FIGFzc2VydGlvbiB0aW1lICovCisJdTE2IG9lX29mZjsJCS8qIE9FIGRlYXNzZXJ0aW9uIHRpbWUgKi8KKworCS8qIEFjY2VzcyB0aW1lIGFuZCBjeWNsZSB0aW1lIHRpbWluZ3MgY29ycmVzcG9uZGluZyB0byBHUE1DX0NPTkZJRzUgKi8KKwl1MTYgcGFnZV9idXJzdF9hY2Nlc3M7CS8qIE11bHRpcGxlIGFjY2VzcyB3b3JkIGRlbGF5ICovCisJdTE2IGFjY2VzczsJCS8qIFN0YXJ0LWN5Y2xlIHRvIGZpcnN0IGRhdGEgdmFsaWQgZGVsYXkgKi8KKwl1MTYgcmRfY3ljbGU7CQkvKiBUb3RhbCByZWFkIGN5Y2xlIHRpbWUgKi8KKwl1MTYgd3JfY3ljbGU7CQkvKiBUb3RhbCB3cml0ZSBjeWNsZSB0aW1lICovCit9OworCitleHRlcm4gdW5zaWduZWQgaW50IGdwbWNfbnNfdG9fdGlja3ModW5zaWduZWQgaW50IHRpbWVfbnMpOworCitleHRlcm4gdm9pZCBncG1jX2NzX3dyaXRlX3JlZyhpbnQgY3MsIGludCBpZHgsIHUzMiB2YWwpOworZXh0ZXJuIHUzMiBncG1jX2NzX3JlYWRfcmVnKGludCBjcywgaW50IGlkeCk7CitleHRlcm4gaW50IGdwbWNfY3NfY2FsY19kaXZpZGVyKGludCBjcywgdW5zaWduZWQgaW50IHN5bmNfY2xrKTsKK2V4dGVybiBpbnQgZ3BtY19jc19zZXRfdGltaW5ncyhpbnQgY3MsIGNvbnN0IHN0cnVjdCBncG1jX3RpbWluZ3MgKnQpOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ3BtY19jc19nZXRfYmFzZV9hZGRyKGludCBjcyk7CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL2hhcmR3YXJlLmgKaW5kZXggYzdkOWU4NS4uNDgxMDQ4ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9oYXJkd2FyZS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvaGFyZHdhcmUuaApAQCAtMjk3LDYgKzI5NywxMCBAQAogI2luY2x1ZGUgImJvYXJkLXBlcnNldXMyLmgiCiAjZW5kaWYKIAorI2lmZGVmIENPTkZJR19NQUNIX09NQVBfRlNBTVBMRQorI2luY2x1ZGUgImJvYXJkLWZzYW1wbGUuaCIKKyNlbmRpZgorCiAjaWZkZWYgQ09ORklHX01BQ0hfT01BUF9IMwogI2luY2x1ZGUgImJvYXJkLWgzLmgiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvaXJxcy5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9pcnFzLmgKaW5kZXggNDIwOThkOS4uMjU0MjQ5NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9pcnFzLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9pcnFzLmgKQEAgLTI0MiwxMCArMjQyLDI0IEBACiAjZGVmaW5lIElOVF8yNFhYX0dQSU9fQkFOSzIJMzAKICNkZWZpbmUgSU5UXzI0WFhfR1BJT19CQU5LMwkzMQogI2RlZmluZSBJTlRfMjRYWF9HUElPX0JBTks0CTMyCisjZGVmaW5lIElOVF8yNFhYX0dQVElNRVIxCTM3CisjZGVmaW5lIElOVF8yNFhYX0dQVElNRVIyCTM4CisjZGVmaW5lIElOVF8yNFhYX0dQVElNRVIzCTM5CisjZGVmaW5lIElOVF8yNFhYX0dQVElNRVI0CTQwCisjZGVmaW5lIElOVF8yNFhYX0dQVElNRVI1CTQxCisjZGVmaW5lIElOVF8yNFhYX0dQVElNRVI2CTQyCisjZGVmaW5lIElOVF8yNFhYX0dQVElNRVI3CTQzCisjZGVmaW5lIElOVF8yNFhYX0dQVElNRVI4CTQ0CisjZGVmaW5lIElOVF8yNFhYX0dQVElNRVI5CTQ1CisjZGVmaW5lIElOVF8yNFhYX0dQVElNRVIxMAk0NgorI2RlZmluZSBJTlRfMjRYWF9HUFRJTUVSMTEJNDcKKyNkZWZpbmUgSU5UXzI0WFhfR1BUSU1FUjEyCTQ4CiAjZGVmaW5lIElOVF8yNFhYX01DQlNQMV9JUlFfVFgJNTkKICNkZWZpbmUgSU5UXzI0WFhfTUNCU1AxX0lSUV9SWAk2MAogI2RlZmluZSBJTlRfMjRYWF9NQ0JTUDJfSVJRX1RYCTYyCiAjZGVmaW5lIElOVF8yNFhYX01DQlNQMl9JUlFfUlgJNjMKKyNkZWZpbmUgSU5UXzI0WFhfVUFSVDFfSVJRCTcyCisjZGVmaW5lIElOVF8yNFhYX1VBUlQyX0lSUQk3MwogI2RlZmluZSBJTlRfMjRYWF9VQVJUM19JUlEJNzQKIAogLyogTWF4LiAxMjggbGV2ZWwgMiBJUlFzIChPTUFQMTYxMCksIDE5MiBHUElPcyAoT01BUDczMCkgYW5kCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL211eC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9tdXguaAppbmRleCAwZGMyNGQ0Li42Nzk4NjljIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL211eC5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvbXV4LmgKQEAgLTQxMCw2ICs0MTAsMTIgQEAKIAkvKiAyNHh4IGNsb2NrICovCiAJVzE0XzI0WFhfU1lTX0NMS09VVCwKIAorCS8qIDI0eHggR1BNQyB3YWl0IHBpbiBtb25pdG9yaW5nICovCisJTDNfR1BNQ19XQUlUMCwKKwlON19HUE1DX1dBSVQxLAorCU0xX0dQTUNfV0FJVDIsCisJUDFfR1BNQ19XQUlUMywKKwogCS8qIDI0MlggTWNCU1AgKi8KIAlZMTVfMjRYWF9NQ0JTUDJfQ0xLWCwKIAlSMTRfMjRYWF9NQ0JTUDJfRlNYLApAQCAtNDI5LDYgKzQzNSwyNiBAQAogCU0xNV8yNFhYX0dQSU85MiwKIAlWMTRfMjRYWF9HUElPMTE3LAogCisJLyogMjQyeCBEQkcgR1BJTyAqLworCVY0XzI0MlhfR1BJTzQ5LAorCVcyXzI0MlhfR1BJTzUwLAorCVU0XzI0MlhfR1BJTzUxLAorCVYzXzI0MlhfR1BJTzUyLAorCVYyXzI0MlhfR1BJTzUzLAorCVY2XzI0MlhfR1BJTzUzLAorCVQ0XzI0MlhfR1BJTzU0LAorCVk0XzI0MlhfR1BJTzU0LAorCVQzXzI0MlhfR1BJTzU1LAorCVUyXzI0MlhfR1BJTzU2LAorCisJLyogMjR4eCBleHRlcm5hbCBETUEgcmVxdWVzdHMgKi8KKwlBQTEwXzI0MlhfRE1BUkVRMCwKKwlBQTZfMjQyWF9ETUFSRVExLAorCUU0XzI0MlhfRE1BUkVRMiwKKwlHNF8yNDJYX0RNQVJFUTMsCisJRDNfMjQyWF9ETUFSRVE0LAorCUUzXzI0MlhfRE1BUkVRNSwKKwogCVAyMF8yNFhYX1RTQ19JUlEsCiAKIAkvKiBVQVJUMyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9wbS5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcC9wbS5oCmluZGV4IDA1YjAwM2YuLmU0NjYyM2MgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLW9tYXAvcG0uaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1vbWFwL3BtLmgKQEAgLTI5OSwxMCArMjk5LDQzIEBACiAJT01BUDI0WFhfU0xFRVBfU0FWRV9JTlRDX01JUjAsCiAJT01BUDI0WFhfU0xFRVBfU0FWRV9JTlRDX01JUjEsCiAJT01BUDI0WFhfU0xFRVBfU0FWRV9JTlRDX01JUjIsCisKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX0NNX0NMS1NUQ1RSTF9NUFUsCisJT01BUDI0WFhfU0xFRVBfU0FWRV9DTV9DTEtTVENUUkxfQ09SRSwKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX0NNX0NMS1NUQ1RSTF9HRlgsCisJT01BUDI0WFhfU0xFRVBfU0FWRV9DTV9DTEtTVENUUkxfRFNQLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fQ0xLU1RDVFJMX01ETSwKKworCU9NQVAyNFhYX1NMRUVQX1NBVkVfUE1fUFdTVENUUkxfTVBVLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfUE1fUFdTVENUUkxfQ09SRSwKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX1BNX1BXU1RDVFJMX0dGWCwKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX1BNX1BXU1RDVFJMX0RTUCwKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX1BNX1BXU1RDVFJMX01ETSwKKworCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSURMRVNUMV9DT1JFLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSURMRVNUMl9DT1JFLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSURMRVNUM19DT1JFLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSURMRVNUNF9DT1JFLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSURMRVNUX0dGWCwKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX0NNX0lETEVTVF9XS1VQLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSURMRVNUX0NLR0VOLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSURMRVNUX0RTUCwKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX0NNX0lETEVTVF9NRE0sCisKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX0NNX0FVVE9JRExFMV9DT1JFLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fQVVUT0lETEUyX0NPUkUsCisJT01BUDI0WFhfU0xFRVBfU0FWRV9DTV9BVVRPSURMRTNfQ09SRSwKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX0NNX0FVVE9JRExFNF9DT1JFLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fQVVUT0lETEVfV0tVUCwKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX0NNX0FVVE9JRExFX1BMTCwKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX0NNX0FVVE9JRExFX0RTUCwKKwlPTUFQMjRYWF9TTEVFUF9TQVZFX0NNX0FVVE9JRExFX01ETSwKKwogCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fRkNMS0VOMV9DT1JFLAogCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fRkNMS0VOMl9DT1JFLAogCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSUNMS0VOMV9DT1JFLAogCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSUNMS0VOMl9DT1JFLAorCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSUNMS0VOM19DT1JFLAogCU9NQVAyNFhYX1NMRUVQX1NBVkVfQ01fSUNMS0VONF9DT1JFLAogCU9NQVAyNFhYX1NMRUVQX1NBVkVfR1BJTzFfSVJRRU5BQkxFMSwKIAlPTUFQMjRYWF9TTEVFUF9TQVZFX0dQSU8yX0lSUUVOQUJMRTEsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1weGEvcHhhLXJlZ3MuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGEtcmVncy5oCmluZGV4IDlmODNmNGEuLmY1Y2M2NWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGEtcmVncy5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS9weGEtcmVncy5oCkBAIC0xMzI5LDYgKzEzMjksNyBAQAogI2RlZmluZSBHUElPODRfTlNSWEQJCTg0CS8qIE5TU1AgcmVjZWl2ZSAqLwogI2RlZmluZSBHUElPODVfblBDRV8xCQk4NQkvKiBDYXJkIEVuYWJsZSBmb3IgQ2FyZCBTcGFjZSAoUFhBMjd4KSAqLwogI2RlZmluZSBHUElPOTJfTU1DREFUMAkJOTIJLyogTU1DIERBVDAgKFBYQTI3eCkgKi8KKyNkZWZpbmUgR1BJTzEwMl9uUENFXzEJCTEwMgkvKiBQQ01DSUEgKFBYQTI3eCkgKi8KICNkZWZpbmUgR1BJTzEwOV9NTUNEQVQxCQkxMDkJLyogTU1DIERBVDEgKFBYQTI3eCkgKi8KICNkZWZpbmUgR1BJTzExMF9NTUNEQVQyCQkxMTAJLyogTU1DIERBVDIgKFBYQTI3eCkgKi8KICNkZWZpbmUgR1BJTzExMF9NTUNDUzAJCTExMAkvKiBNTUMgQ2hpcCBTZWxlY3QgMCAoUFhBMjd4KSAqLwpAQCAtMTQ3MSw2ICsxNDcyLDcgQEAKICNkZWZpbmUgR1BJTzg0X05TU1BfUlggICAgICAJKDg0IHwgR1BJT19BTFRfRk5fMl9JTikKICNkZWZpbmUgR1BJTzg1X25QQ0VfMV9NRAkoODUgfCBHUElPX0FMVF9GTl8xX09VVCkKICNkZWZpbmUgR1BJTzkyX01NQ0RBVDBfTUQJKDkyIHwgR1BJT19BTFRfRk5fMV9PVVQpCisjZGVmaW5lIEdQSU8xMDJfblBDRV8xX01ECSgxMDIgfCBHUElPX0FMVF9GTl8xX09VVCkKICNkZWZpbmUgR1BJTzEwNF9wU0tUU0VMX01ECSgxMDQgfCBHUElPX0FMVF9GTl8xX09VVCkKICNkZWZpbmUgR1BJTzEwOV9NTUNEQVQxX01ECSgxMDkgfCBHUElPX0FMVF9GTl8xX09VVCkKICNkZWZpbmUgR1BJTzExMF9NTUNEQVQyX01ECSgxMTAgfCBHUElPX0FMVF9GTl8xX09VVCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS90cml6ZXBzNC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL3RyaXplcHM0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQxZDBlYwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLXB4YS90cml6ZXBzNC5oCkBAIC0wLDAgKzEsMTA2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBJbmNsdWRlIGZpbGUgZm9yIFRSSVpFUFM0IFNvTSBhbmQgQ29uWFMgZXZhbC1ib2FyZAorICogQ29weXJpZ2h0IChjKSBKw7xyZ2VuIFNjaGluZGVsZQorICogMjAwNgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEluY2x1ZGVzL0RlZmluZXMKKyAqLworI2lmbmRlZiBfVFJJUEVQUzRfSF8KKyNkZWZpbmUgX1RSSVBFUFM0X0hfCisKKy8qIHBoeXNpY2FsIG1lbW9yeSByZWdpb25zICovCisjZGVmaW5lIFRSSVpFUFM0X0ZMQVNIX1BIWVMJKFBYQV9DUzBfUEhZUykgIC8qIEZsYXNoIHJlZ2lvbiAqLworI2RlZmluZSBUUklaRVBTNF9ESVNLX1BIWVMJKFBYQV9DUzFfUEhZUykgIC8qIERpc2sgT24gQ2hpcCByZWdpb24gKi8KKyNkZWZpbmUgVFJJWkVQUzRfRVRIX1BIWVMJKFBYQV9DUzJfUEhZUykgIC8qIEV0aGVybmV0IERNOTAwMCByZWdpb24gKi8KKyNkZWZpbmUgVFJJWkVQUzRfUElDX1BIWVMJKFBYQV9DUzNfUEhZUykJLyogTG9naWMgY2hpcCBvbiBDb25YUy1Cb2FyZCAqLworI2RlZmluZSBUUklaRVBTNF9TRFJBTV9CQVNFCTB4YTAwMDAwMDAgICAgICAvKiBTRFJBTSByZWdpb24gKi8KKworI2RlZmluZSBUUklaRVBTNF9DRlNSX1BIWVMJKFBYQV9DUzNfUEhZUykJCQkvKiBMb2dpYyBjaGlwIG9uIENvblhTLUJvYXJkIENTRlIgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgVFJJWkVQUzRfQk9DUl9QSFlTCShQWEFfQ1MzX1BIWVMrMHgwMjAwMDAwMCkJLyogTG9naWMgY2hpcCBvbiBDb25YUy1Cb2FyZCBCT0NSIHJlZ2lzdGVyICovCisjZGVmaW5lIFRSSVpFUFM0X0lSQ1JfUEhZUwkoUFhBX0NTM19QSFlTKzB4MDI0MDAwMDApCS8qIExvZ2ljIGNoaXAgb24gQ29uWFMtQm9hcmQgSVJDUiByZWdpc3RlciovCisjZGVmaW5lIFRSSVpFUFM0X1VQU1JfUEhZUwkoUFhBX0NTM19QSFlTKzB4MDI4MDAwMDApCS8qIExvZ2ljIGNoaXAgb24gQ29uWFMtQm9hcmQgVVBTUiByZWdpc3RlciovCisjZGVmaW5lIFRSSVpFUFM0X0RJQ1JfUEhZUwkoUFhBX0NTM19QSFlTKzB4MDM4MDAwMDApCS8qIExvZ2ljIGNoaXAgb24gQ29uWFMtQm9hcmQgRElDUiByZWdpc3RlciovCisKKy8qIHZpcnR1YWwgbWVtb3J5IHJlZ2lvbnMgKi8KKyNkZWZpbmUgVFJJWkVQUzRfRElTS19WSVJUCTB4RjAwMDAwMDAJLyogRGlzayBPbiBDaGlwIHJlZ2lvbiAqLworCisjZGVmaW5lIFRSSVpFUFM0X1BJQ19WSVJUCTB4RjAxMDAwMDAJLyogbm90IHVzZWQgKi8KKyNkZWZpbmUgVFJJWkVQUzRfQ0ZTUl9WSVJUCTB4RjAxMDAwMDAKKyNkZWZpbmUgVFJJWkVQUzRfQk9DUl9WSVJUCTB4RjAyMDAwMDAKKyNkZWZpbmUgVFJJWkVQUzRfRElDUl9WSVJUCTB4RjAzMDAwMDAKKyNkZWZpbmUgVFJJWkVQUzRfSVJDUl9WSVJUCTB4RjA0MDAwMDAKKyNkZWZpbmUgVFJJWkVQUzRfVVBTUl9WSVJUCTB4RjA1MDAwMDAKKworLyogc2l6ZSBvZiBmbGFzaCAqLworI2RlZmluZSBUUklaRVBTNF9GTEFTSF9TSVpFCTB4MDIwMDAwMDAJLyogRmxhc2ggc2l6ZSAzMiBNQiAqLworCisvKiBFdGhlcm5ldCBDb250cm9sbGVyIERhdmljb20gRE05MDAwICovCisjZGVmaW5lIEdQSU9fRE05MDAwCQkxMDEKKyNkZWZpbmUgVFJJWkVQUzRfRVRIX0lSUQlJUlFfR1BJTyhHUElPX0RNOTAwMCkKKworLyogVUNCMTQwMCBhdWRpbyAvIFRTLWNvbnRyb2xsZXIgKi8KKyNkZWZpbmUgR1BJT19VQ0IxNDAwCQkxCisjZGVmaW5lIFRSSVpFUFM0X1VDQjE0MDBfSVJRCUlSUV9HUElPKEdQSU9fVUNCMTQwMCkKKworLyogUENNQ0lBIHNvY2tldCBDb21wYWN0IEZsYXNoICovCisjZGVmaW5lIEdQSU9fUENECQkxMQkJLyogUENNQ0lBIENhcmQgRGV0ZWN0ICovCisjZGVmaW5lIFRSSVpFUFM0X0NEX0lSUQkJSVJRX0dQSU8oR1BJT19QQ0QpCisjZGVmaW5lIEdQSU9fUFJEWQkJMTMJCS8qIFJFQURZIC8gbklOVCAqLworI2RlZmluZSBUUklaRVBTNF9SRUFEWV9OSU5UCUlSUV9HUElPKEdQSU9fUFJEWSkKKworLyogTU1DIHNvY2tldCAqLworI2RlZmluZSBHUElPX01NQ19ERVQJCTEyCisjZGVmaW5lIFRSSVpFUFM0X01NQ19JUlEJSVJRX0dQSU8oR1BJT19NTUNfREVUKQorCisvKiBMRURTIHVzaW5nIHR4MiAvIHJ4MiAqLworI2RlZmluZSBHUElPX1NZU19CVVNZX0xFRAk0NgorI2RlZmluZSBHUElPX0hFQVJUQkVBVF9MRUQJNDcKKworLyogT2ZmLW1vZHVsZSBQSUMgb24gQ29uWFMgYm9hcmQgKi8KKyNkZWZpbmUgR1BJT19QSUMJCTAKKyNkZWZpbmUgVFJJWkVQUzRfUElDX0lSUQlJUlFfR1BJTyhHUElPX1BJQykKKworI2RlZmluZSBDRlNSX1AyVih4KQkJKCh4KSAtIFRSSVpFUFM0X0NGU1JfUEhZUyArIFRSSVpFUFM0X0NGU1JfVklSVCkKKyNkZWZpbmUgQ0ZTUl9WMlAoeCkJCSgoeCkgLSBUUklaRVBTNF9DRlNSX1ZJUlQgKyBUUklaRVBTNF9DRlNSX1BIWVMpCisKKyNkZWZpbmUgQkNSX1AyVih4KQkJKCh4KSAtIFRSSVpFUFM0X0JPQ1JfUEhZUyArIFRSSVpFUFM0X0JPQ1JfVklSVCkKKyNkZWZpbmUgQkNSX1YyUCh4KQkJKCh4KSAtIFRSSVpFUFM0X0JPQ1JfVklSVCArIFRSSVpFUFM0X0JPQ1JfUEhZUykKKworI2RlZmluZSBEQ1JfUDJWKHgpCQkoKHgpIC0gVFJJWkVQUzRfRElDUl9QSFlTICsgVFJJWkVQUzRfRElDUl9WSVJUKQorI2RlZmluZSBEQ1JfVjJQKHgpCQkoKHgpIC0gVFJJWkVQUzRfRElDUl9WSVJUICsgVFJJWkVQUzRfRElDUl9QSFlTKQorCisjaWZuZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBDb25YU19DRlNSCQkoKigodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKilDRlNSX1AyVigweDBDMDAwMDAwKSkpCisjZGVmaW5lIENvblhTX0JDUgkJKCooKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopQkNSX1AyVigweDBFMDAwMDAwKSkpCisjZGVmaW5lIENvblhTX0RDUgkJKCooKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopRENSX1AyVigweDBGODAwMDAwKSkpCisjZWxzZQorI2RlZmluZSBDb25YU19DRlNSCQlDRlNSX1AyVigweDBDMDAwMDAwKQorI2RlZmluZSBDb25YU19CQ1IJCUJDUl9QMlYoMHgwRTAwMDAwMCkKKyNkZWZpbmUgQ29uWFNfRENSCQlEQ1JfUDJWKDB4MEY4MDAwMDApCisjZW5kaWYKKworI2RlZmluZSBDb25YU19DRlNSX0JWRF9NQVNLCTB4MDAwMworI2RlZmluZSBDb25YU19DRlNSX0JWRDEJCSgxIDw8IDApCisjZGVmaW5lIENvblhTX0NGU1JfQlZEMgkJKDEgPDwgMSkKKyNkZWZpbmUgQ29uWFNfQ0ZTUl9WU19NQVNLCTB4MDAwQworI2RlZmluZSBDb25YU19DRlNSX1ZTMQkJKDEgPDwgMikKKyNkZWZpbmUgQ29uWFNfQ0ZTUl9WUzIJCSgxIDw8IDMpCisjZGVmaW5lIENvblhTX0NGU1JfVlNfNVYJKDB4MyA8PCAyKQorI2RlZmluZSBDb25YU19DRlNSX1ZTXzNWMwkweDAKKworI2RlZmluZSBDb25YU19CQ1JfUzBfUE9XX0VOMAkoMSA8PCAwKQorI2RlZmluZSBDb25YU19CQ1JfUzBfUE9XX0VOMQkoMSA8PCAxKQorI2RlZmluZSBDb25YU19CQ1JfTF9ESVNQCSgxIDw8IDQpCisjZGVmaW5lIENvblhTX0JDUl9DRl9CVUZfRU4JKDEgPDwgNSkKKyNkZWZpbmUgQ29uWFNfQkNSX0NGX1JFU0VUCSgxIDw8IDcpCisjZGVmaW5lIENvblhTX0JDUl9TMF9WQ0NfM1YzCTB4MQorI2RlZmluZSBDb25YU19CQ1JfUzBfVkNDXzVWMAkweDIKKyNkZWZpbmUgQ29uWFNfQkNSX1MwX1ZQUF8xMlYJMHg0CisjZGVmaW5lIENvblhTX0JDUl9TMF9WUFBfM1YzCTB4OAorCisjZGVmaW5lIENvblhTX0lSQ1JfTU9ERQkJKDEgPDwgMCkKKyNkZWZpbmUgQ29uWFNfSVJDUl9TRAkJKDEgPDwgMSkKKworI2VuZGlmIC8qIF9UUklQRVBTNF9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL21lbW9yeS5oIGIvaW5jbHVkZS9hc20tYXJtL21lbW9yeS5oCmluZGV4IDk0Zjk3M2I3Li45MWQ1MzZjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vbWVtb3J5LmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL21lbW9yeS5oCkBAIC02OCw2ICs2OCwxMSBAQAogICovCiAjZGVmaW5lIFhJUF9WSVJUX0FERFIocGh5c2FkZHIpICAoTU9EVUxFX1NUQVJUICsgKChwaHlzYWRkcikgJiAweDAwMGZmZmZmKSkKIAorLyoKKyAqIEFsbG93IDE2TUItYWxpZ25lZCBpb3JlbWFwIHBhZ2VzCisgKi8KKyNkZWZpbmUgSU9SRU1BUF9NQVhfT1JERVIJMjQKKwogI2Vsc2UgLyogQ09ORklHX01NVSAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL21tdS5oIGIvaW5jbHVkZS9hc20tYXJtL21tdS5oCmluZGV4IDIzZGRlNTIuLmZlMmEyM2IgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9tbXUuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vbW11LmgKQEAgLTcsNiArNyw3IEBACiAjaWYgX19MSU5VWF9BUk1fQVJDSF9fID49IDYKIAl1bnNpZ25lZCBpbnQgaWQ7CiAjZW5kaWYKKwl1bnNpZ25lZCBpbnQga3ZtX3NlcTsKIH0gbW1fY29udGV4dF90OwogCiAjaWYgX19MSU5VWF9BUk1fQVJDSF9fID49IDYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9tbXVfY29udGV4dC5oIGIvaW5jbHVkZS9hc20tYXJtL21tdV9jb250ZXh0LmgKaW5kZXggOWZhZGIwMS4uZDFhNjViMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL21tdV9jb250ZXh0LmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL21tdV9jb250ZXh0LmgKQEAgLTE3LDYgKzE3LDggQEAKICNpbmNsdWRlIDxhc20vY2FjaGVmbHVzaC5oPgogI2luY2x1ZGUgPGFzbS9wcm9jLWZucy5oPgogCit2b2lkIF9fY2hlY2tfa3ZtX3NlcShzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CisKICNpZiBfX0xJTlVYX0FSTV9BUkNIX18gPj0gNgogCiAvKgpAQCAtNDUsMTMgKzQ3LDIxIEBACiB7CiAJaWYgKHVubGlrZWx5KChtbS0+Y29udGV4dC5pZCBeIGNwdV9sYXN0X2FzaWQpID4+IEFTSURfQklUUykpCiAJCV9fbmV3X2NvbnRleHQobW0pOworCisJaWYgKHVubGlrZWx5KG1tLT5jb250ZXh0Lmt2bV9zZXEgIT0gaW5pdF9tbS5jb250ZXh0Lmt2bV9zZXEpKQorCQlfX2NoZWNrX2t2bV9zZXEobW0pOwogfQogCiAjZGVmaW5lIGluaXRfbmV3X2NvbnRleHQodHNrLG1tKQkoX19pbml0X25ld19jb250ZXh0KHRzayxtbSksMCkKIAogI2Vsc2UKIAotI2RlZmluZSBjaGVja19jb250ZXh0KG1tKQkJZG8geyB9IHdoaWxlICgwKQorc3RhdGljIGlubGluZSB2b2lkIGNoZWNrX2NvbnRleHQoc3RydWN0IG1tX3N0cnVjdCAqbW0pCit7CisJaWYgKHVubGlrZWx5KG1tLT5jb250ZXh0Lmt2bV9zZXEgIT0gaW5pdF9tbS5jb250ZXh0Lmt2bV9zZXEpKQorCQlfX2NoZWNrX2t2bV9zZXEobW0pOworfQorCiAjZGVmaW5lIGluaXRfbmV3X2NvbnRleHQodHNrLG1tKQkwCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tYXJtL3BndGFibGUtaHdkZWYuaCBiL2luY2x1ZGUvYXNtLWFybS9wZ3RhYmxlLWh3ZGVmLmgKaW5kZXggMWJjMWY5OS4uZjNiNTEyMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL3BndGFibGUtaHdkZWYuaAorKysgYi9pbmNsdWRlL2FzbS1hcm0vcGd0YWJsZS1od2RlZi5oCkBAIC0yOCw2ICsyOCw3IEBACiAgKi8KICNkZWZpbmUgUE1EX1NFQ1RfQlVGRkVSQUJMRQkoMSA8PCAyKQogI2RlZmluZSBQTURfU0VDVF9DQUNIRUFCTEUJKDEgPDwgMykKKyNkZWZpbmUgUE1EX1NFQ1RfWE4JCSgxIDw8IDQpCS8qIHY2ICovCiAjZGVmaW5lIFBNRF9TRUNUX0FQX1dSSVRFCSgxIDw8IDEwKQogI2RlZmluZSBQTURfU0VDVF9BUF9SRUFECSgxIDw8IDExKQogI2RlZmluZSBQTURfU0VDVF9URVgoeCkJCSgoeCkgPDwgMTIpCS8qIHY1ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vcHJvY2luZm8uaCBiL2luY2x1ZGUvYXNtLWFybS9wcm9jaW5mby5oCmluZGV4IDg0MjUyNjAuLmVkYjdiNjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9wcm9jaW5mby5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9wcm9jaW5mby5oCkBAIC0yOSw3ICsyOSw4IEBACiBzdHJ1Y3QgcHJvY19pbmZvX2xpc3QgewogCXVuc2lnbmVkIGludAkJY3B1X3ZhbDsKIAl1bnNpZ25lZCBpbnQJCWNwdV9tYXNrOwotCXVuc2lnbmVkIGxvbmcJCV9fY3B1X21tdV9mbGFnczsJLyogdXNlZCBieSBoZWFkLlMgKi8KKwl1bnNpZ25lZCBsb25nCQlfX2NwdV9tbV9tbXVfZmxhZ3M7CS8qIHVzZWQgYnkgaGVhZC5TICovCisJdW5zaWduZWQgbG9uZwkJX19jcHVfaW9fbW11X2ZsYWdzOwkvKiB1c2VkIGJ5IGhlYWQuUyAqLwogCXVuc2lnbmVkIGxvbmcJCV9fY3B1X2ZsdXNoOwkJLyogdXNlZCBieSBoZWFkLlMgKi8KIAljb25zdCBjaGFyCQkqYXJjaF9uYW1lOwogCWNvbnN0IGNoYXIJCSplbGZfbmFtZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS90aHJlYWRfaW5mby5oIGIvaW5jbHVkZS9hc20tYXJtL3RocmVhZF9pbmZvLmgKaW5kZXggYzQ2YjVjOC4uYzUyZTBiZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL3RocmVhZF9pbmZvLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL3RocmVhZF9pbmZvLmgKQEAgLTExMSw2ICsxMTEsNyBAQAogZXh0ZXJuIHZvaWQgaXdtbXh0X3Rhc2tfY29weShzdHJ1Y3QgdGhyZWFkX2luZm8gKiwgdm9pZCAqKTsKIGV4dGVybiB2b2lkIGl3bW14dF90YXNrX3Jlc3RvcmUoc3RydWN0IHRocmVhZF9pbmZvICosIHZvaWQgKik7CiBleHRlcm4gdm9pZCBpd21teHRfdGFza19yZWxlYXNlKHN0cnVjdCB0aHJlYWRfaW5mbyAqKTsKK2V4dGVybiB2b2lkIGl3bW14dF90YXNrX3N3aXRjaChzdHJ1Y3QgdGhyZWFkX2luZm8gKik7CiAKICNlbmRpZgogCg==