From mboxrd@z Thu Jan 1 00:00:00 1970 From: Timur Karaldin Subject: Re: ASoC: TLV320AIC3x: Adding additional functionality for 3106 with [Patch] for discuss Date: Wed, 23 Mar 2016 18:21:47 +0300 Message-ID: <56F2B48B.9030903@mcsplus.ru> References: <56E69B3F.8090306@mcsplus.ru> <56E6CEE9.5030802@ti.com> <56E7FC3C.1030503@mcsplus.ru> <56E802D9.4040501@ti.com> <56E834B0.5010808@mcsplus.ru> <56E91FEE.4070604@ti.com> <56E934CB.4040209@mcsplus.ru> <56E97A75.7030700@ti.com> <56E98F99.2060100@mcsplus.ru> <56EA7833.7080302@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from smtp33.i.mail.ru (smtp33.i.mail.ru [94.100.177.93]) by alsa0.perex.cz (Postfix) with ESMTP id 5B5472667E3 for ; Wed, 23 Mar 2016 16:21:51 +0100 (CET) In-Reply-To: <56EA7833.7080302@ti.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Peter Ujfalusi , alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org SGkgUGV0ZXIhCkhlcmUgaXMgbXkgcGF0Y2ggdjIuIEl0IHdvcmtzIG9ubHkgZm9yIGFpYzMxMDYs IGJ1dCBJIGRvbid0IGhhdmUgYW55IApvdGhlcnMuIEFsc28gcGF0Y2ggY29udGFpbnMgc29tZSBk ZWJ1ZyBvdXRwdXQsIEkgd291bGQgY2xlYW4gaXQuIEkgbGlrZSAKYmVoYXZpb3VyIG9mIHRoaXMg aW1wcm92ZW1lbnRzIGFuZCBJIGRpZG4ndCBrbm93IGFueSBpc3N1ZSByaWdodCBub3cgZm9yIAp0 aGVzZSBhZGQtb25zIGV4Y2VwdCBkZWJ1ZyBvdXRwdXQgYW5kIHRoYXQgaXQncyBjb3JyZWN0IG9u bHkgZm9yIGFpYzMxMDYgCihkaWRuJ3QgY2hlY2sgZm9yIG90aGVycyBldmVuIG9uIGRhdGFzaGVl dCBsZXZlbCkuIFRoYW5rIHlvdSBmb3IgYWxsIAp5b3VyIGhlbHAhCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp ZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzN4LmMgYi9zb3VuZC9zb2MvY29k ZWNzL3RsdjMyMGFpYzN4LmMKaW5kZXggZDczNDliYy4uMmMwNmUyMSAxMDA2NDQKLS0tIGEvc291 bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzeC5jCisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIw YWljM3guYwpAQCAtODksNiArODksNyBAQCBzdHJ1Y3QgYWljM3hfcHJpdiB7CgogICAgICAgICAv KiBTZWxlY3RzIHRoZSBtaWNiaWFzIHZvbHRhZ2UgKi8KICAgICAgICAgZW51bSBhaWMzeF9taWNi aWFzX3ZvbHRhZ2UgbWljYmlhc192ZzsKKyAgICAgICB1bnNpZ25lZCBjaGFyIGNhY2hlZF9nYWlu W0xJTkUxTF8yX1JBRENfQ1RSTC1NSUMzTFJfMl9MQURDX0NUUkwrMV07CiAgfTsKCiAgc3RhdGlj IGNvbnN0IHN0cnVjdCByZWdfZGVmYXVsdCBhaWMzeF9yZWdbXSA9IHsKQEAgLTEzNCwxNiArMTM1 LDE3NSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgYWljM3hfcmVnbWFwID0g ewoKICAjZGVmaW5lIFNPQ19EQVBNX1NJTkdMRV9BSUMzWCh4bmFtZSwgcmVnLCBzaGlmdCwgbWFz aywgaW52ZXJ0KSBcCiAgICAgICAgIFNPQ19TSU5HTEVfRVhUKHhuYW1lLCByZWcsIHNoaWZ0LCBt YXNrLCBpbnZlcnQsIFwKLSAgICAgICAgICAgICAgIHNuZF9zb2NfZGFwbV9nZXRfdm9sc3csIHNu ZF9zb2NfZGFwbV9wdXRfdm9sc3dfYWljM3gpCisgICAgICAgICAgICAgICBzbmRfc29jX2RhcG1f Z2V0X3ZvbHN3X2FpYzN4LCBzbmRfc29jX2RhcG1fcHV0X3ZvbHN3X2FpYzN4KQorCisjZGVmaW5l IFNPQ19ET1VCTEVfUl9BSUMzWF9UTFYoeG5hbWUsIHJlZywgcnJlZywgc2hpZnQsIG1hc2ssIGlu dmVydCkgXAorICAgICAgIFNPQ19ET1VCTEVfUl9FWFRfVExWKHhuYW1lLCByZWcsIHJyZWcsIHNo aWZ0LCBtYXNrLCBpbnZlcnQsIFwKKyAgICAgICBzbmRfc29jX2dldF9nYWluX2FpYzN4LCBzbmRf c29jX3B1dF9nYWluX2FpYzN4LCBnYWluX3N0YWdlX3RsdikKKworI2RlZmluZSBTT0NfU0lOR0xF X0FJQzNYX1RMVih4bmFtZSwgcmVnLCBzaGlmdCwgbWFzaywgaW52ZXJ0KSBcCisgICAgICAgU09D X1NJTkdMRV9FWFRfVExWKHhuYW1lLCByZWcsIHNoaWZ0LCBtYXNrLCBpbnZlcnQsIFwKKyAgICAg ICBzbmRfc29jX2dldF9nYWluX2FpYzN4LCBzbmRfc29jX3B1dF9nYWluX2FpYzN4LCBnYWluX3N0 YWdlX3RsdikKKworI2RlZmluZSAgICAgICAgU09DX1NJTkdMRV9FWFRfVk9MKHhuYW1lLCByZWcs IHNoaWZ0LCBtYXNrLCBpbnZlcnQpIFwKKyAgICAgICBTT0NfU0lOR0xFX0VYVCh4bmFtZSwgcmVn LCBzaGlmdCwgbWFzaywgaW52ZXJ0LCBcCisgICAgICAgICAgICAgICBzbmRfc29jX2dldF92b2xz d191bmNhY2hlZCwgc25kX3NvY19wdXRfdm9sc3cpCisKKy8qCisgKiBIZWFkc2V0IGRldGVjdCBm bGFnLCBidXR0b24gcHJlc3MgZGV0ZWN0IGZsYWcgYW5kIGhlYWRzZXQgdHlwZSBmbGFnIAppcyBy ZWFkIG9ubHkgcmVnaXN0ZXIsCisgKiBidXQgd2UgY291bGQgbm90IGRlY2xhcmUgdGhlc2UgcmVn cyBhcyB2b2xhdGlsZSBiZWNhdXNlIG90aGVyIGJpdHMgCmFyZSBSVywgc28gd2UgdXNlCisgKiB1 bmNoYWNoZWQgZ2V0IGhhbmxlciBmb3IgdGhlc2UgcmVncy4KKyovCitzdGF0aWMgaW50IHNuZF9z b2NfZ2V0X3ZvbHN3X3VuY2FjaGVkKCBzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKyAg ICAgICAgICAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgKiB1Y29udHJvbCkKK3sKKyAg ICAgICBpbnQgcmV0OworICAgICAgIHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IHNuZF9r Y29udHJvbF9jaGlwKGtjb250cm9sKTsKKyAgICAgICBzdHJ1Y3QgYWljM3hfcHJpdiAqYWljM3gg PSBzbmRfc29jX2NvZGVjX2dldF9kcnZkYXRhKGNvZGVjKTsKKworICAgICAgIHJlZ2NhY2hlX2Nh Y2hlX2J5cGFzcyhhaWMzeC0+cmVnbWFwLCB0cnVlKTsKKyAgICAgICByZXQgPSBzbmRfc29jX2dl dF92b2xzdyhrY29udHJvbCwgdWNvbnRyb2wpOworICAgICAgIHJlZ2NhY2hlX2NhY2hlX2J5cGFz cyhhaWMzeC0+cmVnbWFwLCBmYWxzZSk7CisgICAgICAgcmV0dXJuIHJldDsKK30KKworLyoKKyAq IEFsbCBpbnB1dCBsaW5lcyBoYXZlIGFkZGl0aW9uYWwgZ2FpbiBjb250cm9scyB3aGljaCBjYW4g YmUgY29udHJvbGVkIApieSB2b2x1bWUgY29udHJvbC4KKyAqIDB4MCAtIG1lYW5zIDBkQiBhbmQg MHg4IC0gbWVhbnMgLTEyIGRCLiBJdCdzIGEgbGl0bGxlIGJpdCB0cmlja3kgCmJlY2F1c2UgdmFs dWUgMHhGIG1lYW5zIG11dGUuCisgKiAgdmFsdWUgMHg5LTB4RSByZXNlcnZlcmQsIHNvIGluIGNh c2Ugb2Ygc3dpdGNoIG11dGVkIHdlIHNob3VsZCBzdG9yZSAKdmFsdWUgaW4gY2FjaGUgYW5kIHNo b3VsZAorICogbm90IHNldCB1cCBpdCB0byByZWdpc3RlcgorKi8KK3N0YXRpYyBpbnQgc25kX3Nv Y19wdXRfZ2Fpbl9haWMzeChzdHJ1Y3Qgc25kX2tjb250cm9sKiBrY29udHJvbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUq IHVjb250cm9sKQoreworICAgICAgIHN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IHNuZF9r Y29udHJvbF9jaGlwKGtjb250cm9sKTsKKyAgICAgICBzdHJ1Y3QgYWljM3hfcHJpdiAqYWljM3gg PSBzbmRfc29jX2NvZGVjX2dldF9kcnZkYXRhKGNvZGVjKTsKKyAgICAgICBzdHJ1Y3Qgc29jX21p eGVyX2NvbnRyb2wgKm1jID0gKHN0cnVjdCBzb2NfbWl4ZXJfY29udHJvbCAKKilrY29udHJvbC0+ cHJpdmF0ZV92YWx1ZTsKKyAgICAgICB1bnNpZ25lZCBpbnQgcmVnOworICAgICAgIHVuc2lnbmVk IGludCBzaGlmdCA9IG1jLT5zaGlmdDsKKyAgICAgICBpbnQgbWF4ID0gbWMtPm1heDsKKyAgICAg ICB1bnNpZ25lZCBpbnQgbWFzayA9ICgxPDxmbHMobWF4KSktMTsKKyAgICAgICB1bnNpZ25lZCBp bnQgaW52ZXJ0ID0gbWMtPmludmVydDsKKworICAgICAgIHU4IHJlZ2RhdGEsIG5ld3ZhbCwgcmVn dmFsOworICAgICAgICB1OCBsb29wID0gMDsKKworICAgICAgIC8vRmlyc3Qgb2YgYWxsIHdlIG5l ZWQgdG8gY2FjaGUgdmFsdWUuIFRoZW4gd2UgbmVlZCB0byB0ZXN0IGVhY2ggCnZhbHVlIG9uIG11 dGUgaW4gcmVnaXN0ZXIKKyAgICAgICAvL0lmIG5vdCBtdXRlZCwgd2Ugc2hvdWxkIHNldHVwIG5l dyB2YWx1ZQorICAgICAgIHJlZyA9IG1jLT5yZWc7CisgICAgICAgIG5ld3ZhbCA9ICggdWNvbnRy b2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gJiBtYXNrICk7CisgICAgICAgcHJpbnRrKEtFUk5f SU5GTyAic2V0IGdhaW4gY29udHJvbCByZWc6JWQgdmFsOiUwWCBtYXNrOiUwWCAKc2hpZnQ6JTBY IGludmVydCAlZFxuIiwgcmVnLG5ld3ZhbCwgbWFzaywgc2hpZnQsaW52ZXJ0KTsKKyAgICAgICAg ZG8KKyAgICAgICAgeworICAgICAgICAgICAgICAgaWYoaW52ZXJ0KQorICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgICBuZXd2YWwgPSAoIDggLSBuZXd2YWwgKSAmIG1hc2s7 CisgICAgICAgICAgICAgICAgICAgICAgIHByaW50ayhLRVJOX0lORk8gImludmVydGVkIHZhbCAl MFhcbiIsIG5ld3ZhbCk7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAvL3JlYWQs IHRlc3QgYW5kIHVwZGF0ZSBpZiBmaXJzdCByZWcgaWYgbmVlZHMKKyAgICAgICAgICAgICAgIHJl Z2RhdGEgPSBzbmRfc29jX3JlYWQoY29kZWMsIHJlZyk7CisgICAgICAgICAgICAgICByZWd2YWwg PSAoIHJlZ2RhdGEgPj4gc2hpZnQpICYgbWFzazsKKworICAgICAgICAgICAgICAgaWYoIHJlZyA+ PSBNSUMzTFJfMl9MQURDX0NUUkwgJiYgcmVnIDw9IExJTkUxTF8yX1JBRENfQ1RSTCApCisgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgIHByaW50ayhLRVJOX0lORk8gImNh Y2hlZF9nYWluIGJlZm9yZSAKJTBYXG4iLGFpYzN4LT5jYWNoZWRfZ2FpbltyZWctTUlDM0xSXzJf TEFEQ19DVFJMXSk7CisgYWljM3gtPmNhY2hlZF9nYWluW3JlZy1NSUMzTFJfMl9MQURDX0NUUkxd Jj1+KG1hc2s8PHNoaWZ0KTsKKyBhaWMzeC0+Y2FjaGVkX2dhaW5bcmVnLU1JQzNMUl8yX0xBRENf Q1RSTF18PShuZXd2YWw8PHNoaWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKEtF Uk5fSU5GTyAiY2FjaGVkX2dhaW4gYWZ0ZXIgCiUwWFxuIixhaWMzeC0+Y2FjaGVkX2dhaW5bcmVn LU1JQzNMUl8yX0xBRENfQ1RSTF0pOworICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg ICBpZiAoIHJlZ3ZhbCE9MHhmICYmIHJlZ3ZhbCE9bmV3dmFsICkKKyAgICAgICAgICAgICAgICAg ICAgICAgc25kX3NvY191cGRhdGVfYml0cyggY29kZWMsIHJlZywgbWFzazw8c2hpZnQsIApuZXd2 YWw8PHNoaWZ0ICk7CisKKyAgICAgICAgICAgICAgICBpZihzbmRfc29jX3ZvbHN3X2lzX3N0ZXJl byhtYykpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD0h bG9vcDsgICAgIC8vc3dpdGNoIGxvb3AsIHNvIGZvciBmaXJzdCAKdGltZSBsb29wIHdpbGwgYmUg dHJ1ZSBhZnRlciBhbmQgZm9yIHNlY29uZCB0aW1lIGl0IHdpbGwgYmUgZmFsc2UsIHNvIHdlIAp3 aWxsIGZpbmlzaCBsb29wCisgICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wKSAvL2lmIGZp cnN0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVnPW1jLT5ycmVnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuZXd2YWwgPSAKKHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzFdICYgbWFzayk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fSU5GTyAiY29udHJvbCBp cyBzdGVyZW8gCnNlY29uZCByZWc6JWQgdmFsOiUwWFxuIiwgcmVnLG5ld3ZhbCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICB9d2hpbGUobG9vcCk7CisgICAgICAg cmV0dXJuIDA7Cit9CisKKy8qCisgKiBBbGwgaW5wdXQgbGluZXMgaGF2ZSBhZGRpdGlvbmFsIGdh aW4gY29udHJvbHMgd2hpY2ggY2FuIGJlIGNvbnRyb2xlZCAKYnkgdm9sdW1lIGNvbnRyb2wuCisg KiAweDAgLSBtZWFucyAwZEIgYW5kIDB4OCAtIG1lYW5zIC0xMiBkQi4gSXQncyBhIGxpdGxsZSBi aXQgdHJpY2t5IApiZWNhdXNlIHZhbHVlIDB4RiBtZWFucyBtdXRlLgorICogdmFsdWUgMHg5LTB4 RSByZXNlcnZlcmQsIHNvIGluIGNhc2Ugb2Ygc3dpdGNoIG11dGVkIHdlIHNob3VsZCByZWFkIAp2 YWx1ZSBmcm9tIGNhY2hlIGluIGFpYzN4X3ByaXYKKyAqIGFuZCBzaG91bGQgbm90IHJlYWQgaXQg ZnJvbSByZWdjYWNoZSBvciByZWdpc3RlcgorKi8KK3N0YXRpYyBpbnQgc25kX3NvY19nZXRfZ2Fp bl9haWMzeCggc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCit7 CisgICAgICAgc3RydWN0IHNuZF9zb2NfY29kZWMgKmNvZGVjID0gc25kX2tjb250cm9sX2NoaXAo a2NvbnRyb2wpOworICAgICAgIHN0cnVjdCBhaWMzeF9wcml2ICphaWMzeCA9IHNuZF9zb2NfY29k ZWNfZ2V0X2RydmRhdGEoY29kZWMpOworICAgICAgIHN0cnVjdCBzb2NfbWl4ZXJfY29udHJvbCAq bWMgPSAoc3RydWN0IHNvY19taXhlcl9jb250cm9sIAoqKWtjb250cm9sLT5wcml2YXRlX3ZhbHVl OworICAgICAgIHVuc2lnbmVkIGludCByZWc7CisgICAgICAgdW5zaWduZWQgaW50IHNoaWZ0ID0g bWMtPnNoaWZ0OworICAgICAgIGludCBtYXggPSBtYy0+bWF4OworICAgICAgIHVuc2lnbmVkIGlu dCBtYXNrID0gKDE8PGZscyhtYXgpKS0xOworICAgICAgIHVuc2lnbmVkIGludCBpbnZlcnQgPSBt Yy0+aW52ZXJ0OworCisgICAgICAgdTggcmVnZGF0YSwgcmVndmFsOworICAgICAgICB1OCBsb29w ID0gMDsKKworICAgICAgIC8vRmlyc3Qgb2YgYWxsIHdlIG5lZWQgdG8gY2FjaGUgdmFsdWUuIFRo ZW4gd2UgbmVlZCB0byB0ZXN0IGVhY2ggCnZhbHVlIG9uIG11dGUgaW4gcmVnaXN0ZXIKKyAgICAg ICAvL0lmIG5vdCBtdXRlZCwgd2Ugc2hvdWxkIHNldCB1cCBuZXcgdmFsdWUKKyAgICAgICByZWcg PSBtYy0+cmVnOworCisgICAgICAgcHJpbnRrKEtFUk5fSU5GTyAiZ2V0IGdhaW4gY29udHJvbCBy ZWc6JWQgbWFzazolMFggc2hpZnQ6JTBYIAppbnZlcnQgJWRcbiIsIHJlZywgbWFzaywgc2hpZnQs aW52ZXJ0KTsKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgICAgICAgcmVnZGF0YSA9 IHNuZF9zb2NfcmVhZChjb2RlYywgcmVnKTsKKyAgICAgICAgICAgICAgIHJlZ3ZhbCA9ICggcmVn ZGF0YSA+PiBzaGlmdCkgJiBtYXNrOworICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fSU5GTyAi cmVndmFsOiUwWFxuIiwgcmVndmFsKTsKKworICAgICAgICAgICAgICAgLy9jaGVjayBpZiByZWdp c3RlciBpcyBtdXRlZCB0aGVuIHJldHVybiBjYWNoZWQgdmFsdWUKKyAgICAgICAgICAgICAgIGlm KCByZWd2YWwgPT0gMHhmICkKKyAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgaWYoIHJlZyA+PU1JQzNMUl8yX0xBRENfQ1RSTCAmJiByZWcgPD0gCkxJTkUxTF8yX1JBRENf Q1RSTCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVndmFsID0gCihhaWMzeC0+ Y2FjaGVkX2dhaW5bcmVnLU1JQzNMUl8yX0xBRENfQ1RSTF0+PnNoaWZ0KSAmIG1hc2s7CisgICAg ICAgICAgICAgICAgICAgICAgIHByaW50ayhLRVJOX0lORk8gInJlZ3ZhbCBmcm9tIGNhY2hlOiUw WFxuIiwgcmVndmFsKTsKKworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgaWYoIGlu dmVydCApCisgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgIHJlZ3ZhbCA9 ICg4IC0gcmVndmFsKSAmIG1hc2s7CisgICAgICAgICAgICAgICAgICAgICAgIHByaW50ayhLRVJO X0lORk8gInJlZ3ZhbCBhZnRlciBpbnZlcnQ6JTBYXG4iLCAKcmVndmFsKTsKKyAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgIHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlW2xvb3Bd ID0gcmVndmFsOworCisgICAgICAgICAgICAgICAgaWYoc25kX3NvY192b2xzd19pc19zdGVyZW8o bWMpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9bG9v cD8wOjE7IC8vc3dpdGNoIGxvb3AsIHNvIGZvciBmaXJzdCB0aW1lIApsb29wIHdpbGwgYmUgMSBh ZnRlciBhbmQgZm9yIHNlY29uZCB0aW1lIGl0IHdpbGwgYmUgMCwgc28gd2Ugd2lsbCBleGl0IApm cm9tIHdoaWxlLWxvb3AKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKGxvb3ApIC8vaWYgZmly c3QgdGltZQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZWc9bWMtPnJyZWc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJpbnRrKEtFUk5fSU5GTyAiY29udHJvbCBpcyBzdGVyZW8gCnNlY29uZCByZWc6JWRcbiIsIHJl Zyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICB9d2hpbGUobG9v cCk7CisgICAgICAgcmV0dXJuIDA7Cit9CgogIC8qCiAgICogQWxsIGlucHV0IGxpbmVzIGFyZSBj b25uZWN0ZWQgd2hlbiAhMHhmIGFuZCBkaXNjb25uZWN0ZWQgd2l0aCAweGYgCmJpdCBmaWVsZCwK LSAqIHNvIHdlIGhhdmUgdG8gdXNlIHNwZWNpZmljIGRhcG1fcHV0IGNhbGwgZm9yIGlucHV0IG1p eGVyCisgKiBzbyB3ZSBoYXZlIHRvIHVzZSBzcGVjaWZpYyBkYXBtX3B1dCBjYWxsIGZvciBpbnB1 dCBtaXhlci4gSW4gY2FzZSBvZiAKdW5tdXRlCisgKiB3ZSBzaG91bGQgc2V0IHVwIHJlZ2lzdGVy IHZhbHVlIGZyb20gY2FjaGVkIHZhbHVlcyBmcm9tIGFpYzN4X3ByaXYgCnN0cnVjdC4KICAgKi8K ICBzdGF0aWMgaW50IHNuZF9zb2NfZGFwbV9wdXRfdm9sc3dfYWljM3goc3RydWN0IHNuZF9rY29u dHJvbCAqa2NvbnRyb2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAKKnVjb250cm9sKQogIHsKICAgICAgICAgc3RydWN0 IHNuZF9zb2NfY29kZWMgKmNvZGVjID0gCnNuZF9zb2NfZGFwbV9rY29udHJvbF9jb2RlYyhrY29u dHJvbCk7CisgICAgICAgc3RydWN0IGFpYzN4X3ByaXYgKmFpYzN4ID0gc25kX3NvY19jb2RlY19n ZXRfZHJ2ZGF0YShjb2RlYyk7CisKICAgICAgICAgc3RydWN0IHNvY19taXhlcl9jb250cm9sICpt YyA9CiAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NfbWl4ZXJfY29udHJvbCAqKWtjb250cm9s LT5wcml2YXRlX3ZhbHVlOwogICAgICAgICB1bnNpZ25lZCBpbnQgcmVnID0gbWMtPnJlZzsKQEAg LTE1MSwyMCArMzExLDMyIEBAIHN0YXRpYyBpbnQgc25kX3NvY19kYXBtX3B1dF92b2xzd19haWMz eChzdHJ1Y3QgCnNuZF9rY29udHJvbCAqa2NvbnRyb2wsCiAgICAgICAgIGludCBtYXggPSBtYy0+ bWF4OwogICAgICAgICB1bnNpZ25lZCBpbnQgbWFzayA9ICgxIDw8IGZscyhtYXgpKSAtIDE7CiAg ICAgICAgIHVuc2lnbmVkIGludCBpbnZlcnQgPSBtYy0+aW52ZXJ0OwotICAgICAgIHVuc2lnbmVk IHNob3J0IHZhbDsKKyAgICAgICB1bnNpZ25lZCBpbnQgdmFsOwogICAgICAgICBzdHJ1Y3Qgc25k X3NvY19kYXBtX3VwZGF0ZSB1cGRhdGU7CiAgICAgICAgIGludCBjb25uZWN0LCBjaGFuZ2U7Cgog ICAgICAgICB2YWwgPSAodWNvbnRyb2wtPnZhbHVlLmludGVnZXIudmFsdWVbMF0gJiBtYXNrKTsK KyAgICAgICBwcmludGsoS0VSTl9JTkZPICJkYXBtIHB1dCB2b2xzdyB2YWw6JVggcmVnOiVYIG1h c2s6JVggc2hpZnQ6JVggCmludmVydDolWFxuIiwgdmFsLCByZWcsIG1hc2ssIHNoaWZ0LCBpbnZl cnQpOwoKICAgICAgICAgbWFzayA9IDB4ZjsKICAgICAgICAgaWYgKHZhbCkKKyAgICAgICB7CiAg ICAgICAgICAgICAgICAgdmFsID0gbWFzazsKLQorICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5f SU5GTyAibmV3IHZhbDolWFxuIiwgdmFsKTsKKyAgICAgICB9CiAgICAgICAgIGNvbm5lY3QgPSAh IXZhbDsKCiAgICAgICAgIGlmIChpbnZlcnQpCisgICAgICAgewogICAgICAgICAgICAgICAgIHZh bCA9IG1hc2sgLSB2YWw7CisgICAgICAgICAgICAgICBwcmludGsoS0VSTl9JTkZPICJ2YWwgYWZ0 ZXIgaW52ZXJ0OiVYXG4iLCB2YWwpOworICAgICAgIH0KKyAgICAgICBpZiAoIXZhbCkKKyAgICAg ICB7CisgICAgICAgICAgICAgICBpZiggcmVnPj1NSUMzTFJfMl9MQURDX0NUUkwgJiYgcmVnPD1M SU5FMUxfMl9SQURDX0NUUkwgKQorICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSAKKGFpYzN4 LT5jYWNoZWRfZ2FpbltyZWctTUlDM0xSXzJfTEFEQ19DVFJMXT4+c2hpZnQpICYgbWFzazsKKyAg ICAgICAgICAgICAgIHByaW50ayhLRVJOX0lORk8gImNhY2hlZCB2YWw6JVhcbiIsIHZhbCk7Cisg ICAgICAgfQoKICAgICAgICAgbWFzayA8PD0gc2hpZnQ7CiAgICAgICAgIHZhbCA8PD0gc2hpZnQ7 CkBAIC0xODMsNiArMzU1LDM2IEBAIHN0YXRpYyBpbnQgc25kX3NvY19kYXBtX3B1dF92b2xzd19h aWMzeChzdHJ1Y3QgCnNuZF9rY29udHJvbCAqa2NvbnRyb2wsCiAgICAgICAgIHJldHVybiBjaGFu Z2U7CiAgfQoKKy8qCisgKiBCYXNlZCBvbiBzdGFuZGFydCBoYW5kbGVyIHNuZF9zb2NfZGFwbV9n ZXRfdm9sc3csIGJ1dCBjaGFuZ2luZyBtYXNrIAp0byAweEYKKyAqCisgKi8KK3N0YXRpYyBpbnQg c25kX3NvY19kYXBtX2dldF92b2xzd19haWMzeChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJv bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfY3Rs X2VsZW1fdmFsdWUgKnVjb250cm9sKQoreworICAgICAgIHN0cnVjdCBzb2NfbWl4ZXJfY29udHJv bCAqbWMgPQorICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NfbWl4ZXJfY29udHJvbCAqKWtjb250 cm9sLT5wcml2YXRlX3ZhbHVlOworICAgICAgIHVuc2lnbmVkIGludCByZWcgPSBtYy0+cmVnOwor ICAgICAgIHVuc2lnbmVkIGludCBzaGlmdCA9IG1jLT5zaGlmdDsKKyAgICAgICBpbnQgbWF4ID0g bWMtPm1heDsKKyAgICAgICB1bnNpZ25lZCBpbnQgbWFzayA9ICgxIDw8IGZscyhtYXgpKSAtIDE7 CisgICAgICAgaW50IHJldDsKKworICAgICAgIC8vcmVnaXN0ZXIgY29udGFpbnMgNCBiaXRzLCBz byB3ZSBjaGFuZ2UgbWF4IHRlbW9wcmFsbHkgdG8gcmVhZCAKcmVnaXN0ZXIgYnkgb3JpZ2luYWwg aGFuZGxlciwgdGhlbiByZXR1cm4gaXQgYmFjaworICAgICAgIG1jLT5tYXggPSAxNTsKKyAgICAg ICByZXQgPSBzbmRfc29jX2RhcG1fZ2V0X3ZvbHN3KCBrY29udHJvbCwgdWNvbnRyb2wpOworICAg ICAgIHByaW50ayhLRVJOX0lORk8gInNvY19kYXBtX2dldF92b2xzd19haWMzeDolbGQgcmVnOiVY IHNoaWZ0OiVYIAptYXg6JVggbmV3bWF4OiVYXG4iLCB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52 YWx1ZVswXSwgcmVnLCBzaGlmdCwgbWF4LCAKbWMtPm1heCApOworICAgICAgIG1jLT5tYXggPSBt YXg7CisKKyAgICAgICAvL2FsbCBnYWlucyBleGNlcHQgbXV0ZSAoMHhmKSBhZnRlciBpbnZlcnRp b24gaXMgbm90IGVxdWwgdG8gMCwgCnNvIHdlIG5lZWQgdG8gc2V0IDEob24pCisgICAgICAgLy9m b3IgYWxsIHZhbHVlcyBleGNlcHQgMC4gMCBpcyBtdXRlLCBzbyB3ZSBkbyBub3QgbmVlZCB0byBj aGFuZ2UgaXQKKyAgICAgICBpZih1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSE9MCkK KyAgICAgICAgICAgICAgIHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdPTE7CisgICAg ICAgcHJpbnRrKEtFUk5fSU5GTyAibmV3IHZhbHVlOiVsZFxuIiwgCnVjb250cm9sLT52YWx1ZS5p bnRlZ2VyLnZhbHVlWzBdKTsKKworICAgICAgIHJldHVybiByZXQ7Cit9CisKICAvKgogICAqIG1p YyBiaWFzIHBvd2VyIG9uL29mZiBzaGFyZSB0aGUgc2FtZSByZWdpc3RlciBiaXRzIHdpdGgKICAg KiBvdXRwdXQgdm9sdGFnZSBvZiBtaWMgYmlhcy4gd2hlbiBwb3dlciBvbiBtaWMgYmlhcywgd2UK QEAgLTI3MCw2ICs0NzIsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzb2NfZW51bSBhaWMzeF9h Z2NfZGVjYXlfZW51bVtdID0gewogICAgICAgICBTT0NfRU5VTV9TSU5HTEUoUkFHQ19DVFJMX0Es IDAsIDQsIGFpYzN4X2FnY19kZWNheSksCiAgfTsKCitzdGF0aWMgY29uc3QgY2hhciAqYWljM3hf aGVhZHNldF9kZWJvdW5jZVtdID0geyAiMTZtcyIsICIzMm1zIiwgIjY0bXMiLCAKIjEyOG1zIiwg IjI1Nm1zIiwgIjUxMm1zIiB9Oworc3RhdGljIGNvbnN0IHN0cnVjdCBzb2NfZW51bSBhaWMzeF9o ZWFkc2V0X2RlYm91bmNlX2VudW0gPQorU09DX0VOVU1fU0lOR0xFKCBBSUMzWF9IRUFEU0VUX0RF VEVDVF9DVFJMX0EsIDIsIDYsIAphaWMzeF9oZWFkc2V0X2RlYm91bmNlKTsKKworc3RhdGljIGNv bnN0IGNoYXIgKmFpYzN4X2J1dHRvbl9kZWJvdW5jZVtdID0geyAiMG1zIiwgIjhtcyIsICIxNm1z IiwgCiIzMm1zIiB9Oworc3RhdGljIGNvbnN0IHN0cnVjdCBzb2NfZW51bSBhaWMzeF9idXR0b25f ZGVib3VuY2VfZW51bSA9CitTT0NfRU5VTV9TSU5HTEUoIEFJQzNYX0hFQURTRVRfREVURUNUX0NU UkxfQSwgMCwgNCwgYWljM3hfYnV0dG9uX2RlYm91bmNlKTsKKwogIC8qCiAgICogREFDIGRpZ2l0 YWwgdm9sdW1lcy4gRnJvbSAtNjMuNSB0byAwIGRCIGluIDAuNSBkQiBzdGVwcwogICAqLwpAQCAt Mjg3LDYgKzQ5Nyw5IEBAIHN0YXRpYyBERUNMQVJFX1RMVl9EQl9TQ0FMRShhZGNfdGx2LCAwLCA1 MCwgMCk7CiAgICovCiAgc3RhdGljIERFQ0xBUkVfVExWX0RCX1NDQUxFKG91dHB1dF9zdGFnZV90 bHYsIC01OTAwLCA1MCwgMSk7Cgorc3RhdGljIERFQ0xBUkVfVExWX0RCX1NDQUxFKGdhaW5fc3Rh Z2VfdGx2LCAtMTIwMCwgMTUwLCAwKTsKKworCiAgc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2Nv bnRyb2xfbmV3IGFpYzN4X3NuZF9jb250cm9sc1tdID0gewogICAgICAgICAvKiBPdXRwdXQgKi8K ICAgICAgICAgU09DX0RPVUJMRV9SX1RMVigiUENNIFBsYXliYWNrIFZvbHVtZSIsCkBAIC0zOTks NiArNjEyLDI0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyAKYWljM3hf c25kX2NvbnRyb2xzW10gPSB7CiAgICAgICAgIFNPQ19ET1VCTEVfUigiUEdBIENhcHR1cmUgU3dp dGNoIiwgTEFEQ19WT0wsIFJBRENfVk9MLCA3LCAweDAxLCAxKSwKCiAgICAgICAgIFNPQ19FTlVN KCJBREMgSFBGIEN1dC1vZmYiLCBhaWMzeF9lbnVtW0FEQ19IUEZfRU5VTV0pLAorICAgICAgIC8q IEFkZGl0aW9uYWwgY29udHJvbHMgKi8KKyAgICAgICBTT0NfRE9VQkxFX1JfQUlDM1hfVExWKCJN aWMzTCBWb2x1bWUiLCBNSUMzTFJfMl9MQURDX0NUUkwsIApNSUMzTFJfMl9SQURDX0NUUkwsIDQs IDgsIDEpLAorICAgICAgIFNPQ19ET1VCTEVfUl9BSUMzWF9UTFYoIk1pYzNSIFZvbHVtZSIsIE1J QzNMUl8yX0xBRENfQ1RSTCwgCk1JQzNMUl8yX1JBRENfQ1RSTCwgMCwgOCwgMSksCisgICAgICAg U09DX0RPVUJMRV9SX0FJQzNYX1RMVigiTGluZTFMIFZvbHVtZSIsIExJTkUxTF8yX0xBRENfQ1RS TCwgCkxJTkUxTF8yX1JBRENfQ1RSTCwgMywgOCwgMSksCisgICAgICAgU09DX0RPVUJMRV9SX0FJ QzNYX1RMVigiTGluZTFSIFZvbHVtZSIsIExJTkUxUl8yX0xBRENfQ1RSTCwgCkxJTkUxUl8yX1JB RENfQ1RSTCwgMywgOCwgMSksCisgICAgICAgU09DX1NJTkdMRV9BSUMzWF9UTFYoIkxpbmUyTCBW b2x1bWUiLCBMSU5FMkxfMl9MQURDX0NUUkwsIDMsIDgsIDEpLAorICAgICAgIFNPQ19TSU5HTEVf QUlDM1hfVExWKCJMaW5lMlIgVm9sdW1lIiwgTElORTJSXzJfUkFEQ19DVFJMLCAzLCA4LCAxKSwK KyAgICAgICBTT0NfRU5VTSgiSGVhZHNldCBKYWNrIERlYm91bmNlIiwgYWljM3hfaGVhZHNldF9k ZWJvdW5jZV9lbnVtICksCisgICAgICAgU09DX0VOVU0oIkJ1dHRvbiBQcmVzcyBEZWJvdW5jZSIs IGFpYzN4X2J1dHRvbl9kZWJvdW5jZV9lbnVtICksCisgICAgICAgU09DX1NJTkdMRSgiSGVhZHNl dCBEZXRlY3QgRW5hYmxlIiwgQUlDM1hfSEVBRFNFVF9ERVRFQ1RfQ1RSTF9BLCAKNywgMSwgMCks CisgICAgICAgU09DX1NJTkdMRV9FWFRfVk9MKCJIZWFkc2V0IERldGVjdCBUeXBlIiwgCkFJQzNY X0hFQURTRVRfREVURUNUX0NUUkxfQSwKKyAgICAgICAgICAgICAgIEFJQzNYX0hFQURTRVRfREVU RUNUX0FfU0hJRlQsIApBSUMzWF9IRUFEU0VUX0RFVEVDVF9BX01BU0ssIDApLAorICAgICAgIFNP Q19TSU5HTEVfRVhUX1ZPTCgiQnV0dG9uIERldGVjdCBGbGFnIiwgCkFJQzNYX0hFQURTRVRfREVU RUNUX0NUUkxfQiwKKyAgICAgICAgICAgICAgIEFJQzNYX0JVVFRPTl9ERVRFQ1RfU0hJRlQsIEFJ QzNYX0JVVFRPTl9ERVRFQ1RfTUFTSywgMCksCisgICAgICAgU09DX1NJTkdMRV9FWFRfVk9MKCJI ZWFkc2V0IERldGVjdCBGbGFnIiwgCkFJQzNYX0hFQURTRVRfREVURUNUX0NUUkxfQiwKKyAgICAg ICAgICAgICAgIEFJQzNYX0hFQURTRVRfREVURUNUX0JfU0hJRlQsIApBSUMzWF9IRUFEU0VUX0RF VEVDVF9CX01BU0ssIDApLAorICAgICAgIFNPQ19TSU5HTEUoIkhpZ2ggcG93ZXIgb3V0cHV0IEFj LWNvdXBsZWQiLCAKQUlDM1hfSEVBRFNFVF9ERVRFQ1RfQ1RSTF9CLCA3LCAxLCAwKSwKKyAgICAg ICBTT0NfU0lOR0xFKCJTdGVyZW8gcHNldWRvZGlmZmVyZW50aWFsIG91dHB1dCIsIApBSUMzWF9I RUFEU0VUX0RFVEVDVF9DVFJMX0IsIDMsIDEsIDApLAogIH07CgogIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgc25kX2tjb250cm9sX25ldyBhaWMzeF9tb25vX2NvbnRyb2xzW10gPSB7Ci0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNz L3RsdjMyMGFpYzN4LmggYi9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzN4LmgKaW5kZXggZTUy MWFjMy4uYmNhYzg3ZiAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzeC5o CisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljM3guaApAQCAtMjcxLDkgKzI3MSwyMCBA QCBlbnVtIHsKICAgICAgICAgQUlDM1hfQlVUVE9OX0RFQk9VTkNFXzMyTVMgICAgICA9IDMKICB9 OwoKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlKiBwZGV2Owor ICAgIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqcHJvY192YWx1ZTsKKyAgICBzdHJ1Y3Qgc25kX3Nv Y19jb2RlYyAqY29kZWM7Cit9IGFpYzMxMDZfZGV0ZWN0X3Q7CisKICAjZGVmaW5lIEFJQzNYX0hF QURTRVRfREVURUNUX0VOQUJMRUQgICAweDgwCi0jZGVmaW5lIEFJQzNYX0hFQURTRVRfREVURUNU X1NISUZUICAgICA1Ci0jZGVmaW5lIEFJQzNYX0hFQURTRVRfREVURUNUX01BU0sgICAgICAzCisj ZGVmaW5lIEFJQzNYX0hFQURTRVRfREVURUNUX0FfU0hJRlQgICA1CisjZGVmaW5lIEFJQzNYX0hF QURTRVRfREVURUNUX0FfTUFTSyAgICAzCisKKyNkZWZpbmUgQUlDM1hfQlVUVE9OX0RFVEVDVF9T SElGVCAgICAgIDUKKyNkZWZpbmUgQUlDM1hfQlVUVE9OX0RFVEVDVF9NQVNLICAgICAgIDEKKyNk ZWZpbmUgQUlDM1hfSEVBRFNFVF9ERVRFQ1RfQl9TSElGVCAgIDQKKyNkZWZpbmUgQUlDM1hfSEVB RFNFVF9ERVRFQ1RfQl9NQVNLICAgIDEKICAjZGVmaW5lIEFJQzNYX0hFQURTRVRfREVCT1VOQ0Vf U0hJRlQgICAyCiAgI2RlZmluZSBBSUMzWF9IRUFEU0VUX0RFQk9VTkNFX01BU0sgICAgNwogICNk ZWZpbmUgQUlDM1hfQlVUVE9OX0RFQk9VTkNFX1NISUZUICAgIDAKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCjE3LjAzLjIwMTYgMTI6MjYsIFBldGVyIFVqZmFsdXNpINC/ 0LjRiNC10YI6Cj4gT24gMDMvMTYvMTYgMTg6NTMsIFRpbXVyIEthcmFsZGluIHdyb3RlOgo+Pj4g eW91ciBtYWlsIGNsaWVudCBkb2VzIG5vdCBzZWVtIHRvIHdyYXAgdGhlIGxpbmVzIGNvcnJlY3Rs eSwgY2FuIHlvdSBjaGVjayB0aGF0Lgo+PiBJIGhhdmUgbm8gaWRlYSBob3cgdGhlc2UgbGluZXMg c2hvdWxkIGxvb2tzLCBzbyBpdCdzIHZlcnkgaGFyZCBmb3IgbWUgdG8gc2VlCj4+IHdoYXQncyB3 cm9uZy4gQ291bGQgeW91IHBvaW50IG1lIGhvdyBpdCBsb29rcyBpbiBvcmlnaW5hbD8KPiBUaGV5 IGFyZSBsb29vbmcuCj4KPiBzZWU6IGh0dHBzOi8vd2lraS5vcGVuc3RhY2sub3JnL3dpa2kvTWFp bGluZ0xpc3RFdGlxdWV0dGUKPgo+PiBPaywgbm93IGl0J3MgbXVjaCBtb3JlIGNsZWFyIGZvciBt ZS4KPj4gQW5vdGhlciBxdWVzdGlvbiBpcyByZWdpc3RlciBiZWhhdmlvdXIgZHVyaW5nIHNvZnQg cmVzZXQuIFRoZXJlIGlzCj4+ICJhaWMzeF9zZXRfcG93ZXIiIGhhbmRsZS4gSW4gdGhpcyBoYW5k bGUga2VybmVsIG1ha2VzIFNPRlRfUkVTRVQsIG1hcmtlcyBjYWNoZQo+PiBhcyBkaXJ0eSwgdGhl biBwb3dlciBkb3duIHRoZSBjb2RlYyBmb3IgaGFuZGxlIHBvd2VyIGRvd24gcmVxdWVzdC4KPj4g QnV0IGFzIEkgY291bGQgc2VlIG1haW4gdm9sdW1lcyBsaWtlICJIUCBEQUMiIGFuZCAiUENNIiBz dG9yZXMgdmFsdWVzIGJldHdlZW4KPj4gY2xvc2UgYW5kIG9wZW4gaW4gbWl4ZXIgYW5kIEkgY291 bGQgbm90IHNlZSBhbnkgY29kZSB0byBoYW5kbGUgaXQuIE9uIHRoZQo+PiBvdGhlciBoYW5kIG15 IGNvbnRyb2xzIGRvIG5vdCBzYXZlIHN0YXRlcywgYXMgeW91IG1lbnRpb25lZCBiZWNhdXNlIG9m Cj4+IFNPRlRfUkVTRVQsIGNvdWxkIHlvdSBleHBsYWluIHN1Y2ggZGlmZmVyZW50IGJlaGF2aW91 cj8KPiBBbGwgY2FjaGVkIHJlZ2lzdGVycyBhcmUgZ29pbmcgdG8gYmUgcmVzdG9yZWQgYWZ0ZXIg cG93ZXIgb24gd2l0aCBleGNlcHRpb24gb2YKPiB2b2xhdGlsZSByZWdpc3RlcnMuIFlvdSBuZWVk IHRvIHJlc3RvcmUgdGhlIGJpdHMgaW4gYSB2b2xhdGlsZSByZWdpc3RlcnMgaW4KPiB0aGUgZHJp dmVyLgo+CgoKLS0gCtChINGD0LLQsNC20LXQvdC40LXQvCwK0KDRg9C60L7QstC+0LTQuNGC0LXQ u9GMINC/0YDQvtC10LrRgtC+0LIK0JzQvtGA0YHQutC40LUg0LrQvtC80L/Qu9C10LrRgdGLINC4 INGB0LjRgdGC0LXQvNGLINC/0LvRjtGBCtCa0LDRgNCw0LvQtNC40L0g0KIu0JwuCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KQmVzdCByZWdhcmRzLApQcm9qZWN0cyBkaXJlY3RvcgpNYXJpbmUg Y29tcGxleGVzIGFuZCBzeXN0ZW1zIHBsdXMKVGltdXIgS2FyYWxkaW4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0 CkFsc2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZwpodHRwOi8vbWFpbG1hbi5hbHNhLXByb2plY3Qu b3JnL21haWxtYW4vbGlzdGluZm8vYWxzYS1kZXZlbAo=