From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Pan, Xiuli" Subject: Re: [PATCH v2] ASoC: topology: Fix bclk and fsync inversion in set_link_hw_format() Date: Thu, 15 Mar 2018 11:01:24 +0800 Message-ID: <2617665f-f1eb-1129-d067-65a4551284e2@linux.intel.com> References: <20180301064556.5387-1-k.marinushkin@gmail.com> <20180301064812.5463-1-k.marinushkin@gmail.com> <0ffee89d-ea0b-2454-d1f2-d5056c85a253@linux.intel.com> <4e0ebb1a-7926-b3ad-2e08-f14d6b8beb54@linux.intel.com> <2f8b5ee2-78f4-8f2e-34cd-78b22c9ab2e8@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by alsa0.perex.cz (Postfix) with ESMTP id A874A267172 for ; Thu, 15 Mar 2018 04:01:28 +0100 (CET) In-Reply-To: <2f8b5ee2-78f4-8f2e-34cd-78b22c9ab2e8@linux.intel.com> Content-Language: en-US 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: Pierre-Louis Bossart , Kirill Marinushkin , Mark Brown , Takashi Iwai Cc: Liam Girdwood , alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org CgpPbiAzLzE1LzIwMTggMDI6MzcsIFBpZXJyZS1Mb3VpcyBCb3NzYXJ0IHdyb3RlOgo+Cj4KPiBP biAwMy8xNC8yMDE4IDA0OjQyIEFNLCBQYW4sIFhpdWxpIHdyb3RlOgo+Pgo+Pgo+PiBPbiAzLzE0 LzIwMTggMDM6NTIsIEtpcmlsbCBNYXJpbnVzaGtpbiB3cm90ZToKPj4+IE9uIDAzLzEzLzE4IDA3 OjU3LCBQYW4sIFhpdWxpIHdyb3RlOgo+Pj4+Cj4+Pj4gT24gMy8xLzIwMTggMTQ6NTMsIEtpcmls bCBNYXJpbnVzaGtpbiB3cm90ZToKPj4+Pj4gVGhpcyBwYXRjaCBpcyBmb3IgYWxzYS1saWIuIEkg Zm9yZ290IHRvIG1lbnRpb24gaXQgaW4gdGhlIHN1YmplY3QuCj4+Pj4+Cj4+Pj4+Cj4+Pj4+IE9u IDAzLzAxLzE4IDA3OjQ4LCBLaXJpbGwgTWFyaW51c2hraW4gd3JvdGU6Cj4+Pj4+PiBUaGUgdmFs dWVzIG9mIGJjbGsgYW5kIGZzeW5jIGFyZSBpbnZlcnRlZCBXUlQgdGhlIGNvZGVjLiBCdXQgdGhl IAo+Pj4+Pj4gZXhpc3RpbmcKPj4+Pj4+IHNvbHV0aW9uIGFscmVhZHkgd29ya3MgZm9yIEJyb2Fk d2VsbCwgc2VlIHRoZSBhbHNhLWxpYiBjb25maWc6Cj4+Pj4+Pgo+Pj4+Pj4gYGFsc2EtbGliL3Ny Yy9jb25mL3RvcG9sb2d5L2Jyb2Fkd2VsbC9icm9hZHdlbGwuY29uZmAKPj4+Pj4+Cj4+Pj4+PiBU aGlzIGNvbW1pdCBwcm92aWRlcyB0aGUgYmFja3dhcmRzLWNvbXBhdGlibGUgc29sdXRpb24gdG8g Zml4IAo+Pj4+Pj4gdGhpcyBtaXN1c2UuCj4+Pj4+PiBUaGlzIGNvbW1pdCBnb2VzIGluIHBhaXIg d2l0aCB0aGUgY29ycmVzcG9uZGluZyBwYXRjaCBmb3IgbGludXguCj4+Pj4+Pgo+Pj4+Pj4gU2ln bmVkLW9mZi1ieTogS2lyaWxsIE1hcmludXNoa2luIDxrLm1hcmludXNoa2luQGdtYWlsLmNvbT4K Pj4+Pj4+IENjOiBNYXJrIEJyb3duIDxicm9vbmllQGtlcm5lbC5vcmc+Cj4+Pj4+PiBDYzogVGFr YXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgo+Pj4+Pj4gQ2M6IEphcm9zbGF2IEt5c2VsYSA8cGVy ZXhAcGVyZXguY3o+Cj4+Pj4+PiBDYzogUGllcnJlLUxvdWlzIEJvc3NhcnQgPHBpZXJyZS1sb3Vp cy5ib3NzYXJ0QGxpbnV4LmludGVsLmNvbT4KPj4+Pj4+IENjOiBQYW4gWGl1bGkgPHhpdWxpLnBh bkBsaW51eC5pbnRlbC5jb20+Cj4+Pj4+PiBDYzogTGlhbSBHaXJkd29vZCA8bGlhbS5yLmdpcmR3 b29kQGxpbnV4LmludGVsLmNvbT4KPj4+Pj4+IENjOiBhbHNhLWRldmVsQGFsc2EtcHJvamVjdC5v cmcKPj4+Pj4+IC0tLQo+Pj4+Pj4gwqDCoCBpbmNsdWRlL3NvdW5kL2Fzb2MuaMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTYgKysrKysrKysrKysrKystLQo+ Pj4+Pj4gwqDCoCBpbmNsdWRlL3RvcG9sb2d5LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQgKystLQo+Pj4+Pj4gwqDCoCBzcmMvY29uZi90b3Bv bG9neS9icm9hZHdlbGwvYnJvYWR3ZWxsLmNvbmYgfMKgIDQgKystLQo+Pj4+Pj4gwqDCoCBzcmMv dG9wb2xvZ3kvcGNtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCAzMCAKPj4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+Pj4+Pj4g wqDCoCA0IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQo+ Pj4+Pj4KPj4+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2Fzb2MuaCBiL2luY2x1ZGUv c291bmQvYXNvYy5oCj4+Pj4+PiBpbmRleCAwZjVkOWY5YS4uODliMDA3MDMgMTAwNjQ0Cj4+Pj4+ PiAtLS0gYS9pbmNsdWRlL3NvdW5kL2Fzb2MuaAo+Pj4+Pj4gKysrIGIvaW5jbHVkZS9zb3VuZC9h c29jLmgKPj4+Pj4+IEBAIC0xNTYsNiArMTU2LDE4IEBACj4+Pj4+PiDCoMKgICNkZWZpbmUgU05E X1NPQ19UUExHX0xOS19GTEdCSVRfU1lNTUVUUklDX1NBTVBMRUJJVFMgKDEgPDwgMikKPj4+Pj4+ IMKgwqAgI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9WT0lDRV9XQUtFVVAgKDEgPDwg MykKPj4+Pj4+IMKgwqAgKy8qIERBSSB0b3BvbG9neSBCQ0xLIHBhcmFtZXRlcgo+Pj4+Pj4gKyAq IEZvciB0aGUgYmFja3dhcmRzIGNhcGFiaWxpdHksIGJ5IGRlZmF1bHQgY29kZWMgaXMgYmNsayBt YXN0ZXIKPj4+Pj4+ICsgKi8KPj4+Pj4+ICsjZGVmaW5lIFNORF9TT0NfVFBMR19CQ0xLX0NNwqDC oMKgwqDCoMKgwqDCoCAwIC8qIGNvZGVjIGlzIGJjbGsgbWFzdGVyICovCj4+Pj4+PiArI2RlZmlu ZSBTTkRfU09DX1RQTEdfQkNMS19DU8KgwqDCoMKgwqDCoMKgwqAgMSAvKiBjb2RlYyBpcyBiY2xr IHNsYXZlICovCj4+Pj4+PiArCj4+Pj4+PiArLyogREFJIHRvcG9sb2d5IEZTWU5DIHBhcmFtZXRl cgo+Pj4+Pj4gKyAqIEZvciB0aGUgYmFja3dhcmRzIGNhcGFiaWxpdHksIGJ5IGRlZmF1bHQgY29k ZWMgaXMgZnN5bmMgbWFzdGVyCj4+Pj4+PiArICovCj4+Pj4+PiArI2RlZmluZSBTTkRfU09DX1RQ TEdfRlNZTkNfQ03CoMKgwqDCoMKgwqDCoMKgIDAgLyogY29kZWMgaXMgZnN5bmMgbWFzdGVyICov Cj4+Pj4+PiArI2RlZmluZSBTTkRfU09DX1RQTEdfRlNZTkNfQ1PCoMKgwqDCoMKgwqDCoMKgIDEg LyogY29kZWMgaXMgZnN5bmMgc2xhdmUgKi8KPj4+Pj4+ICsKPj4+Pj4+IMKgwqAgLyoKPj4+PiBD b3VsZCB3ZSBrZWVwIHRoaXMgYWxpZ24gd2l0aCB0aGUgb2xkIHZhbHVlcy4KPj4+Pgo+Pj4+IDEg Zm9yIG1hc3RlciBvZiBCQ0xLLCAwIGZvciBzbGF2ZQo+Pj4+IDEgZm9yIG1hc3RlciBvZiBGU1lO QywgMCBmb3Igc2xhdmUKPj4+IFdlIGNhbm5vdCBrZWVwIGl0IGFsaWduZWQgd2l0aCB0aGUgb2xk ICpjb21tZW50IGRlc2NyaXB0aW9ucyosIAo+Pj4gYmVjYXVzZSB3ZSBrZWVwIGl0IGFsaWduZWQg d2l0aCB0aGUgb2xkICppbXBsZW1lbnRhdGlvbiouCj4+PiBBcyB5b3UgcmVtZW1iZXIsIHRoZSB3 aG9sZSBpc3N1ZSB3YXMgd2l0aCB0aGUgcmV2ZXJ0ZWQgdmFsdWVzLgo+Pj4gV2UgZXhhY3RseSBr ZWVwIG91ciBuZXcgc29sdXRpb24gYWxpZ25lZCB0byB0aGUgb2xkIHNvbHV0aW9uIGJ5IAo+Pj4g ZG9pbmcgdGhpczoKPj4KPj4gWWVzLCBidXQgd2hhdCBJIHN1Z2dlc3QgaXMgdGhhdCBpZiB3ZSBj YW4gbm90IG1vZGlmeSB0aGUga2VybmVsIHBhcnQuIAo+PiBCdXQganVzdCB1c2UgdGhlIHZhbHVl IGluIGFsc2F0cGxnIHRvIGZpeCB0aGlzIHByb2JsZW0uIFdlIGFjdHVhbGx5IAo+PiBub3QgcGFz c2VkIGFueSBzdHJpbmcgaW4gdGhlIHRwbGcgZmlsZSwgYnV0IG9ubHkgc29tZSBwYXJzZWQgdmFs dWUuCj4+IENvdWxkIHdlIGFsaWduIHRoZSBzdHJpbmcgJiB2YWx1ZSBtYXBwaW5nIHRvIG1ha2Ug dGhpcyBtb3JlIGVhc2llci4KPj4KPj4gVGhvdWdoIEkga25vdyB0aGF0IHRoZSB2YWx1ZSBmb3Ig YmNsa19tYXN0ZXIgYW5zIGZzeW5jX21hc3RlciBpcyB2ZXJ5IAo+PiBjb25mdXNpbmcuCj4KPiBY aXVsaSwgSSB3YXMgbm90IGFibGUgdG8gdW5kZXJzdGFuZCBhbnkgb2YgeW91ciBwb2ludHMuLi4K PiBSdWxlICMxIGlzIHdlIGRvbid0IGJyZWFrIHVzZXJzcGFjZS4gSWYgcGVvcGxlIGdlbmVyYXRl ZCBhIC50cGxnIGZpbGUgCj4gd2l0aCBhbiBvbGQgdmVyc2lvbiBvZiBhbHNhdHBsZyBvciBhbiBp bnZlcnNpb24gaW4gdGhlIC5jb25mIGZpbGUsIAo+IHRoZW4gd2UgaGF2ZSB0byBwcm92aWRlIGEg YmFja3dhcmRzLWNvbXBhdGlibGUgc29sdXRpb24uCj4KCk9LLCBJIGdvdCB0aGUgcG9pbnQuIFdl IG11c3QgbWFrZSBlbm91Z2ggY2hhbmdlcyBmb3IgdGhlIG9sZCB2ZXJzaW9uIApmaWxlcyB0byBi ZSBhY2NlcHRlZC4KVGhlIFNPRiBuZWVkIHNvbWUgcGF0Y2hlcyB0byB3b3JrIHdpdGggdGhlc2Ug cGF0Y2hlcy4gSSB3aWxsIHNlbmQgdGhlbSAKb25jZSB0aGVzZSBhcmUgbWVyZ2VkIGluLgoKVGhh bmtzClhpdWxpCgo+Pgo+Pj4gfn5+fgo+Pj4gI2RlZmluZSBTTkRfU09DX1RQTEdfRlNZTkNfQ03C oMKgwqDCoMKgwqDCoMKgIDAgLyogY29kZWMgaXMgZnN5bmMgbWFzdGVyICovCj4+PiAjZGVmaW5l IFNORF9TT0NfVFBMR19GU1lOQ19DU8KgwqDCoMKgwqDCoMKgwqAgMSAvKiBjb2RlYyBpcyBmc3lu YyBzbGF2ZSAqLwo+Pj4gfn5+fgo+Pj4KPj4+PiBUaGlzIHdpbGwgc2F2ZSBzb21lIGNoYW5nZSBm b3IgU09GIHRvcG9sb2d5IGxvYWQgcGFyc2UgdG8gRFNQLgo+Pj4+IE5vdyB3ZSBuZWVkIHRvIG1v ZGlmeSBhIGZldyBjb2RlcyB0b28gZml0IHRoaXMgY2hhbmdpbmcuCj4+Pj4KPj4+IFNlZSBhYm92 ZSB3aHkgd2UgY2FuJ3QgZm9sbG93IHRoaXMgcHJvcG9zYWwuCj4+Pgo+Pj4+IEFuZCB0byBtYWtl IHRoaW5ncyBtb3JlIGVhc2llci4gV2UgY2FuIGp1c3Qga2VlcCB0aGUgb2xkIHZhbHVlcyBhbmQg Cj4+Pj4gb25seSBtb2RpZnkgYWxzYS1saWIgdG8gbGV0ICJtYXN0ZXIiID09ICJjb2RlY19zbGF2 ZSIuCj4+Pj4gSGVyZSB3ZSBvbmx5IG5lZWQgdG8gY2hhbmdlIGhvdyB3ZSB3cml0ZSB0cGxnIGFu ZCBubyBtb3JlIGtlcm5lbCAKPj4+PiBwYXRjaGVzIGFyZSBuZWVkLgo+Pj4+Cj4+Pj4+PiDCoMKg wqAgKiBCbG9jayBIZWFkZXIuCj4+Pj4+PiDCoMKgwqAgKiBUaGlzIGhlYWRlciBwcmVjZWRlcyBh bGwgb2JqZWN0IGFuZCBvYmplY3QgYXJyYXlzIGJlbG93Lgo+Pj4+Pj4gQEAgLTMxMSw4ICszMjMs OCBAQCBzdHJ1Y3Qgc25kX3NvY190cGxnX2h3X2NvbmZpZyB7Cj4+Pj4+PiDCoMKgwqDCoMKgwqAg X191OCBjbG9ja19nYXRlZDvCoMKgwqAgLyogMSBpZiBjbG9jayBjYW4gYmUgZ2F0ZWQgdG8gc2F2 ZSAKPj4+Pj4+IHBvd2VyICovCj4+Pj4+PiDCoMKgwqDCoMKgwqAgX191OCBpbnZlcnRfYmNsazvC oMKgwqAgLyogMSBmb3IgaW52ZXJ0ZWQgQkNMSywgMCBmb3Igbm9ybWFsICovCj4+Pj4+PiDCoMKg wqDCoMKgwqAgX191OCBpbnZlcnRfZnN5bmM7wqDCoMKgIC8qIDEgZm9yIGludmVydGVkIGZyYW1l IGNsb2NrLCAwIGZvciAKPj4+Pj4+IG5vcm1hbCAqLwo+Pj4+Pj4gLcKgwqDCoCBfX3U4IGJjbGtf bWFzdGVyO8KgwqDCoCAvKiAxIGZvciBtYXN0ZXIgb2YgQkNMSywgMCBmb3Igc2xhdmUgKi8KPj4+ Pj4+IC3CoMKgwqAgX191OCBmc3luY19tYXN0ZXI7wqDCoMKgIC8qIDEgZm9yIG1hc3RlciBvZiBG U1lOQywgMCBmb3Igc2xhdmUgKi8KPj4+Pj4+ICvCoMKgwqAgX191OCBiY2xrX21hc3RlcjvCoMKg wqAgLyogU05EX1NPQ19UUExHX0JDTEtfIHZhbHVlICovCj4+Pj4+PiArwqDCoMKgIF9fdTggZnN5 bmNfbWFzdGVyO8KgwqDCoCAvKiBTTkRfU09DX1RQTEdfRlNZTkNfIHZhbHVlICovCj4+Pj4+PiDC oMKgwqDCoMKgwqAgX191OCBtY2xrX2RpcmVjdGlvbjvCoMKgwqAgLyogMCBmb3IgaW5wdXQsIDEg Zm9yIG91dHB1dCAqLwo+Pj4+Pj4gwqDCoMKgwqDCoMKgIF9fbGUxNiByZXNlcnZlZDvCoMKgwqAg LyogZm9yIDMyYml0IGFsaWdubWVudCAqLwo+Pj4+Pj4gwqDCoMKgwqDCoMKgIF9fbGUzMiBtY2xr X3JhdGU7wqDCoMKgIC8qIE1DTEsgb3IgU1lTQ0xLIGZyZXFlbmN5IGluIEh6ICovCj4+Pj4+PiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS90b3BvbG9neS5oIGIvaW5jbHVkZS90b3BvbG9neS5oCj4+Pj4+ PiBpbmRleCA4Nzc5ZGE0ZC4uNWQ3YjQ2ZGYgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9pbmNsdWRlL3Rv cG9sb2d5LmgKPj4+Pj4+ICsrKyBiL2luY2x1ZGUvdG9wb2xvZ3kuaAo+Pj4+Pj4gQEAgLTEwMDAs OCArMTAwMCw4IEBAIHN0cnVjdCBzbmRfdHBsZ19od19jb25maWdfdGVtcGxhdGUgewo+Pj4+Pj4g wqDCoMKgwqDCoMKgIHVuc2lnbmVkIGNoYXIgY2xvY2tfZ2F0ZWQ7wqDCoMKgwqDCoCAvKiAxIGlm IGNsb2NrIGNhbiBiZSBnYXRlZCAKPj4+Pj4+IHRvIHNhdmUgcG93ZXIgKi8KPj4+Pj4+IMKgwqDC oMKgwqDCoCB1bnNpZ25lZCBjaGFywqAgaW52ZXJ0X2JjbGs7wqDCoMKgwqAgLyogMSBmb3IgaW52 ZXJ0ZWQgQkNMSywgMCAKPj4+Pj4+IGZvciBub3JtYWwgKi8KPj4+Pj4+IMKgwqDCoMKgwqDCoCB1 bnNpZ25lZCBjaGFywqAgaW52ZXJ0X2ZzeW5jO8KgwqDCoCAvKiAxIGZvciBpbnZlcnRlZCBmcmFt ZSAKPj4+Pj4+IGNsb2NrLCAwIGZvciBub3JtYWwgKi8KPj4+Pj4+IC3CoMKgwqAgdW5zaWduZWQg Y2hhcsKgIGJjbGtfbWFzdGVyO8KgwqDCoMKgIC8qIDEgZm9yIG1hc3RlciBvZiBCQ0xLLCAwIAo+ Pj4+Pj4gZm9yIHNsYXZlICovCj4+Pj4+PiAtwqDCoMKgIHVuc2lnbmVkIGNoYXLCoCBmc3luY19t YXN0ZXI7wqDCoMKgIC8qIDEgZm9yIG1hc3RlciBvZiBGU1lOQywgMCAKPj4+Pj4+IGZvciBzbGF2 ZSAqLwo+Pj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBjaGFywqAgYmNsa19tYXN0ZXI7wqDCoMKgwqAg LyogU05EX1NPQ19UUExHX0JDTEtfIHZhbHVlICovCj4+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGNo YXLCoCBmc3luY19tYXN0ZXI7wqDCoMKgIC8qIFNORF9TT0NfVFBMR19GU1lOQ18gdmFsdWUgKi8K Pj4+Pj4+IMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBjaGFywqAgbWNsa19kaXJlY3Rpb247wqAgLyog MCBmb3IgaW5wdXQsIDEgZm9yIAo+Pj4+Pj4gb3V0cHV0ICovCj4+Pj4+PiDCoMKgwqDCoMKgwqAg dW5zaWduZWQgc2hvcnQgcmVzZXJ2ZWQ7wqDCoMKgwqDCoMKgwqAgLyogZm9yIDMyYml0IGFsaWdu bWVudCAqLwo+Pj4+Pj4gwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBtY2xrX3JhdGU7wqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAvKiBNQ0xLIG9yIFNZU0NMSyAKPj4+Pj4+IGZyZXFlbmN5IGluIEh6 ICovCj4+Pj4+PiBkaWZmIC0tZ2l0IGEvc3JjL2NvbmYvdG9wb2xvZ3kvYnJvYWR3ZWxsL2Jyb2Fk d2VsbC5jb25mIAo+Pj4+Pj4gYi9zcmMvY29uZi90b3BvbG9neS9icm9hZHdlbGwvYnJvYWR3ZWxs LmNvbmYKPj4+Pj4+IGluZGV4IGI4NDA1ZDkzLi4wOWZjNGRhYSAxMDA2NDQKPj4+Pj4+IC0tLSBh L3NyYy9jb25mL3RvcG9sb2d5L2Jyb2Fkd2VsbC9icm9hZHdlbGwuY29uZgo+Pj4+Pj4gKysrIGIv c3JjL2NvbmYvdG9wb2xvZ3kvYnJvYWR3ZWxsL2Jyb2Fkd2VsbC5jb25mCj4+Pj4+PiBAQCAtMzkz LDggKzM5Myw4IEBAIFNlY3Rpb25HcmFwaC4iZHNwIiB7Cj4+Pj4+PiDCoMKgIFNlY3Rpb25IV0Nv bmZpZy4iQ29kZWNIV0NvbmZpZyIgewo+Pj4+Pj4gwqDCoMKgwqDCoMKgIGlkICIxIgo+Pj4+Pj4g wqDCoMKgwqDCoMKgIGZvcm1hdCAiSTJTIsKgwqDCoMKgwqDCoMKgICMgcGh5c2ljYWwgYXVkaW8g Zm9ybWF0Lgo+Pj4+Pj4gLcKgwqDCoCBiY2xrwqDCoCAibWFzdGVyIsKgwqDCoMKgwqDCoMKgICMg UGxhdGZvcm0gaXMgbWFzdGVyIG9mIGJpdCBjbG9jawo+Pj4+Pj4gLcKgwqDCoCBmc3luY8KgICJt YXN0ZXIiwqDCoMKgwqDCoMKgwqAgIyBwbGF0Zm9ybSBpcyBtYXN0ZXIgb2YgZnN5bmMKPj4+Pj4+ ICvCoMKgwqAgYmNsa8KgwqAgImNvZGVjX3NsYXZlIsKgwqDCoCAjIHBsYXRmb3JtIGlzIG1hc3Rl ciBvZiBiaXQgY2xvY2sgCj4+Pj4+PiAoY29kZWMgaXMgc2xhdmUpCj4+Pj4+PiArwqDCoMKgIGZz eW5jwqAgImNvZGVjX3NsYXZlIsKgwqDCoCAjIHBsYXRmb3JtIGlzIG1hc3RlciBvZiBmc3luYyAo Y29kZWMgCj4+Pj4+PiBpcyBzbGF2ZSkKPj4+Pj4+IMKgwqAgfQo+Pj4+Pj4gwqDCoCDCoCBTZWN0 aW9uTGluay4iQ29kZWMiIHsKPj4+Pj4+IGRpZmYgLS1naXQgYS9zcmMvdG9wb2xvZ3kvcGNtLmMg Yi9zcmMvdG9wb2xvZ3kvcGNtLmMKPj4+Pj4+IGluZGV4IDU4Y2VlMzFkLi5iZGFiOGVlZiAxMDA2 NDQKPj4+Pj4+IC0tLSBhL3NyYy90b3BvbG9neS9wY20uYwo+Pj4+Pj4gKysrIGIvc3JjL3RvcG9s b2d5L3BjbS5jCj4+Pj4+PiBAQCAtMTEzNyw4ICsxMTM3LDE5IEBAIGludCB0cGxnX3BhcnNlX2h3 X2NvbmZpZyhzbmRfdHBsZ190ICp0cGxnLCAKPj4+Pj4+IHNuZF9jb25maWdfdCAqY2ZnLAo+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoc25kX2NvbmZpZ19nZXRfc3RyaW5n KG4sICZ2YWwpIDwgMCkKPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCByZXR1cm4gLUVJTlZBTDsKPj4+Pj4+IMKgwqAgLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KCFzdHJjbXAodmFsLCAibWFzdGVyIikpCj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGh3X2NmZy0+YmNsa19tYXN0ZXIgPSB0cnVlOwo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWYgKCFzdHJjbXAodmFsLCAibWFzdGVyIikpIHsKPj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogRm9yIGJhY2t3YXJkcyBjYXBhYmlsaXR5LAo+Pj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogIm1hc3RlciIgPT0gImNvZGVjIGlz IHNsYXZlIgo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNOREVSUigid2FybmluZzogZGVwcmVj YXRlZCBiY2xrIHZhbHVlICclcydcbiIsCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsKTsKPj4+Pj4+ICsKPj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaHdfY2ZnLT5iY2xrX21hc3RlciA9IFNORF9TT0NfVFBMR19CQ0xL X0NTOwo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlmICghc3RyY21wKHZh bCwgImNvZGVjX3NsYXZlIikpIHsKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgaHdfY2ZnLT5iY2xrX21hc3RlciA9IFNORF9TT0NfVFBMR19CQ0xLX0NTOwo+Pj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBlbHNlIGlmICghc3RyY21wKHZhbCwgImNvZGVjX21hc3Rl ciIpKSB7Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3X2NmZy0+YmNs a19tYXN0ZXIgPSBTTkRfU09DX1RQTEdfQkNMS19DTTsKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIH0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7Cj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4gwqDCoFdoYXQgaWYgc29tZSBvbGQgdHBs ZyB1c2VkICJzbGF2ZSI/IFdoYXQgc2hvdWxkIHdlIGRvIHRvIHRob3NlIAo+Pj4+IHZhbHVlcy4K Pj4+Pgo+Pj4gT2xkIGJlaGF2aW9yOiAic2xhdmUiID0+IG5vdCBtb2RpZmllZCAoaHdfY2ZnLT5i Y2xrX21hc3RlciA9IDApCj4+PiBOZXcgYmVoYXZpb3I6ICJzbGF2ZSIgPT4gbm90IG1vZGlmaWVk IChod19jZmctPmJjbGtfbWFzdGVyID0gMCkKPj4+Cj4+PiBTbywgd2Uga2VlcCB0aGlzIHVzZS1j YXNlIHVuY2hhbmdlZC4KPj4KPj4gV2hhdCBJIHdvcnJ5IGFib3V0IGlzIHRoYXQgd2UgaGF2ZSBt YWtlIGh3X2NmZy0+YmNsa19tYXN0ZXIgdXNhZ2UgCj4+IGRpZmZlcmVudCBpbiBrZXJuZWwgcGFy dC4KPj4gSSB0aGluayB3ZSBzaG91bGQga2VlcCB0aGlzIHRoZSBzYW1lIG5vdywgdGhlIHNhbWUg MCBoYXZlIGRpZmZlcmVudCAKPj4gbWVhbmluZ3MuCj4+IE90aGVyd2lzZSwgd2h5IHNob3VsZCB3 ZSBjaGVjayBjb2RlY19tYXN0ZXI/Cj4+Pj4+PiDCoMKgIEBAIC0xMTYzLDggKzExNzQsMTkgQEAg aW50IHRwbGdfcGFyc2VfaHdfY29uZmlnKHNuZF90cGxnX3QgCj4+Pj4+PiAqdHBsZywgc25kX2Nv bmZpZ190ICpjZmcsCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzbmRf Y29uZmlnX2dldF9zdHJpbmcobiwgJnZhbCkgPCAwKQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4+Pj4gwqDCoCAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoIXN0cmNtcCh2YWwsICJtYXN0ZXIiKSkKPj4+Pj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaHdfY2ZnLT5mc3luY19tYXN0ZXIgPSB0cnVlOwo+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFzdHJjbXAodmFsLCAibWFzdGVyIikpIHsK Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogRm9yIGJhY2t3YXJkcyBj YXBhYmlsaXR5LAo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogIm1h c3RlciIgPT0gImNvZGVjIGlzIHNsYXZlIgo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICovCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFNOREVS Uigid2FybmluZzogZGVwcmVjYXRlZCBmc3luYyB2YWx1ZSAnJXMnXG4iLAo+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZhbCk7Cj4+Pj4+PiArCj4+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3X2NmZy0+ZnN5bmNfbWFzdGVy ID0gU05EX1NPQ19UUExHX0ZTWU5DX0NTOwo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fSBlbHNlIGlmICghc3RyY21wKHZhbCwgImNvZGVjX3NsYXZlIikpIHsKPj4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaHdfY2ZnLT5mc3luY19tYXN0ZXIgPSBTTkRfU09DX1RQ TEdfRlNZTkNfQ1M7Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9IGVsc2UgaWYgKCFz dHJjbXAodmFsLCAiY29kZWNfbWFzdGVyIikpIHsKPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaHdfY2ZnLT5mc3luY19tYXN0ZXIgPSBTTkRfU09DX1RQTEdfRlNZTkNfQ007 Cj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4+ IFRlc3Qgd2l0aCBvdXIgU09GIHRvcG9sb2d5IGFuZCBmb3VuZCBhIG1pc3NpbmcgcGFydCBtY2xr Lgo+Pj4+IFdlIGFsc28gdXNlIG1jbGsgbm93LCBhbmQgSSB0aGluayB0aGVzZSBLRVkgV09SRFMg c2hvdWxkIGFsaWduIHdpdGggCj4+Pj4gdGhlIG5ldyBjaGFuZ2VzLCB0b28uCj4+Pj4KPj4+IG1j bGsgaXMgbm90IHJlbGF0ZWQgdG8gdGhpcyBwYXRjaCBzZXJpZXMuIEZlZWwgZnJlZSB0byBhZGQg aXQgaW4gYSAKPj4+IHNlcGFyYXRlIHBhdGNoLgo+Pgo+PiBPSywgd2UgbWF5IGFkZCB0aGlzIHN1 cHBvcnQgbGF0ZXIuCj4+Cj4+IFRoYW5rcwo+PiBYaXVsaQo+Pgo+Pj4gQmVzdCBSZWdhcmRzLAo+ Pj4gS2lyaWxsCj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+Pj4gQWxzYS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4+IEFsc2EtZGV2ZWxAYWxzYS1wcm9q ZWN0Lm9yZwo+Pj4gaHR0cDovL21haWxtYW4uYWxzYS1wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2Fsc2EtZGV2ZWwKPj4KPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KQWxzYS1kZXZlbCBtYWlsaW5nIGxpc3QKQWxzYS1kZXZlbEBhbHNhLXByb2pl Y3Qub3JnCmh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bHNhLWRldmVsCg==