From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pierre-Louis Bossart Subject: Re: [alsa-devel] [PATCH v2 11/11] ALSA: x86: Register multiple PCM devices for the LPE audio card Date: Fri, 28 Apr 2017 14:46:51 -0500 Message-ID: <5f554a74-02ea-5760-747b-89579862b0a2@linux.intel.com> References: <20170427160231.13337-1-ville.syrjala@linux.intel.com> <20170427160231.13337-12-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE6F46E814 for ; Fri, 28 Apr 2017 19:46:56 +0000 (UTC) In-Reply-To: <20170427160231.13337-12-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org Cc: Takashi Iwai , alsa-devel@alsa-project.org List-Id: intel-gfx@lists.freedesktop.org QSBxdWljayBiaXNlY3QgdGVsbHMgbWUgdGhpcyBsYXN0IHBhdGNoIGxvb2tzIHByb2JsZW1hdGlj LiBJIGRvbid0IGhhdmUgCnRpbWUgdG8gbG9vayBmdXJ0aGVyIGludG8gaXQgdG9kYXksIGhvcGUg dGhpcyBoZWxwcyBwcm9ncmVzcyBpbiBmaW5kaW5nIAp0aGUgaXNzdWUuIFRoaXMgaXMgb24gYSBD SFQgZGV2aWNlIHdpdGggSERNSSBwbHVnZ2VkIGluIGFuZCBEUCBsZWZ0IG91dCAKdW5jb25uZWN0 ZWQgZm9yIG5vdy4KCiQgZ2l0IGJpc2VjdCBnb29kCjlhZjViNTczMjM2NWI4ZWEyOTAwMGQxYWQx NDgwMGJiMDkxYTA3MjQgaXMgdGhlIGZpcnN0IGJhZCBjb21taXQKY29tbWl0IDlhZjViNTczMjM2 NWI4ZWEyOTAwMGQxYWQxNDgwMGJiMDkxYTA3MjQKQXV0aG9yOiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpEYXRlOiAgIFR1ZSBBcHIgMjUgMjA6NDI6NDAg MjAxNyArMDMwMAoKICAgICBBTFNBOiB4ODY6IFJlZ2lzdGVyIG11bHRpcGxlIFBDTSBkZXZpY2Vz IGZvciB0aGUgTFBFIGF1ZGlvIGNhcmQKCiAgICAgTm93IHRoYXQgZXZlcnl0aGluZyBpcyBpbiBw bGFjZSBsZXQncyByZWdpc3RlciBhIFBDTSBkZXZpY2UgZm9yCiAgICAgZWFjaCBwb3J0IG9mIHRo ZSBkaXNwbGF5IGVuZ2luZS4gVGhpcyB3aWxsIG1ha2UgaXQgcG9zc2libGUgdG8KICAgICBhY3R1 YWxseSBvdXRwdXQgYXVkaW8gdG8gbXVsdGlwbGUgZGlzcGxheXMgYXQgdGhlIHNhbWUgdGltZS4g QW5kCiAgICAgaXQgYXZvaWRzIG1vZGVzZXRzIG9uIHVucmVsYXRlZCBkaXNwbGF5cyBmcm9tIGNs b2JiZXJpbmcgdXAgdGhlCiAgICAgRUxEIGFuZCB3aGF0bm90IGZvciB0aGUgZGlzcGxheSBjdXJy ZW50bHkgZG9pbmcgdGhlIHBsYXliYWNrLgoKICAgICB2MjogQWRkIGEgUENNIHBlciBwb3J0IGlu c3RlYWQgb2YgcGVyIHBpcGUKCiAgICAgQ2M6IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4K ICAgICBDYzogUGllcnJlLUxvdWlzIEJvc3NhcnQgPHBpZXJyZS1sb3Vpcy5ib3NzYXJ0QGxpbnV4 LmludGVsLmNvbT4KICAgICBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPgoKOjA0MDAwMCAwNDAwMDAgMTdmOTRlZWNkNTk3Yjk3Y2Nj MDAzZTJkMjdjMDNlYWRjZWIyNzlmNSAKMjcxZDRjMzEzMGY5Y2MxMzM0ZTc5YmY2MGI3ZmRjNzMz NzE5MjY1NSBNICAgIGRyaXZlcnMKOjA0MDAwMCAwNDAwMDAgNjgwNmJhOTQyZjNjMDg0NGRjZjZm ZmRmZGQ3NTFjMjAwN2U1NjgwZiAKOGI5ZTFkMWY4MmExMmZlYmU3MDVhNzcxNjU0ZmFkYzA4YzAy YzkwZiBNICAgIGluY2x1ZGUKOjA0MDAwMCAwNDAwMDAgZTFmNDZhMjFlMWJlYWY5NTM1YjNlODA3 ZjRjZmVlYTVhZDdkYmU0NyAKYWZkODY2MjEyMTQzODBjODY3NjljMzBkNjQwNWQ5MzM1MTQzY2Y2 YiBNICAgIHNvdW5kCgokIGdpdCBiaXNlY3QgbG9nCmdpdCBiaXNlY3Qgc3RhcnQKIyBiYWQ6IFs5 YWY1YjU3MzIzNjViOGVhMjkwMDBkMWFkMTQ4MDBiYjA5MWEwNzI0XSBBTFNBOiB4ODY6IFJlZ2lz dGVyIAptdWx0aXBsZSBQQ00gZGV2aWNlcyBmb3IgdGhlIExQRSBhdWRpbyBjYXJkCmdpdCBiaXNl Y3QgYmFkIDlhZjViNTczMjM2NWI4ZWEyOTAwMGQxYWQxNDgwMGJiMDkxYTA3MjQKIyBnb29kOiBb OGI1YTQxYmJkMjcwYzNhOGRiNmQ0OGJjMWQ2ZDZiYWZiNTllNjc1M10gZHJtLXRpcDogCjIwMTd5 LTA0bS0yN2QtMTNoLTEwbS01OXMgVVRDIGludGVncmF0aW9uIG1hbmlmZXN0CmdpdCBiaXNlY3Qg Z29vZCA4YjVhNDFiYmQyNzBjM2E4ZGI2ZDQ4YmMxZDZkNmJhZmI1OWU2NzUzCiMgZ29vZDogWzYz ZTM0ZTVkMmU4YWFmODVkZmU0ODA4NWU1ZGJiYjcyMTVkYTgwYmFdIGRybS9pOTE1OiBSZXBsYWNl IAp0bWRzX2Nsb2NrX3NwZWVkIGFuZCBsaW5rX3JhdGUgd2l0aCBqdXN0IGxzX2Nsb2NrCmdpdCBi aXNlY3QgZ29vZCA2M2UzNGU1ZDJlOGFhZjg1ZGZlNDgwODVlNWRiYmI3MjE1ZGE4MGJhCiMgZ29v ZDogW2RjMGFlOGU5YzJmMzk1YjI0Y2JhN2E0MDRmMmZmNDllNzI3MmJmNGJdIGRybS9pOTE1OiBD bGVhbiB1cCAKdGhlIExQRSBhdWRpbyBwbGF0Zm9ybSBkYXRhCmdpdCBiaXNlY3QgZ29vZCBkYzBh ZThlOWMyZjM5NWIyNGNiYTdhNDA0ZjJmZjQ5ZTcyNzJiZjRiCiMgZ29vZDogWzdkODBjZmU2Zjdl YWZlNmNkZGYzNmNkNmUyMjdkNTRhNDVjNmYxNzVdIEFMU0E6IHg4NjogU3BsaXQgCnNuZF9pbnRl bGhhZCBpbnRvIGNhcmQgYW5kIFBDTSBzcGVjaWZpYyBzdHJ1Y3R1cmVzCmdpdCBiaXNlY3QgZ29v ZCA3ZDgwY2ZlNmY3ZWFmZTZjZGRmMzZjZDZlMjI3ZDU0YTQ1YzZmMTc1CiMgZmlyc3QgYmFkIGNv bW1pdDogWzlhZjViNTczMjM2NWI4ZWEyOTAwMGQxYWQxNDgwMGJiMDkxYTA3MjRdIEFMU0E6IAp4 ODY6IFJlZ2lzdGVyIG11bHRpcGxlIFBDTSBkZXZpY2VzIGZvciB0aGUgTFBFIGF1ZGlvIGNhcmQK CgoKT24gMDQvMjcvMjAxNyAxMTowMiBBTSwgdmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20g d3JvdGU6Cj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KPgo+IE5vdyB0aGF0IGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgbGV0J3MgcmVnaXN0ZXIg YSBQQ00gZGV2aWNlIGZvcgo+IGVhY2ggcG9ydCBvZiB0aGUgZGlzcGxheSBlbmdpbmUuIFRoaXMg d2lsbCBtYWtlIGl0IHBvc3NpYmxlIHRvCj4gYWN0dWFsbHkgb3V0cHV0IGF1ZGlvIHRvIG11bHRp cGxlIGRpc3BsYXlzIGF0IHRoZSBzYW1lIHRpbWUuIEFuZAo+IGl0IGF2b2lkcyBtb2Rlc2V0cyBv biB1bnJlbGF0ZWQgZGlzcGxheXMgZnJvbSBjbG9iYmVyaW5nIHVwIHRoZQo+IEVMRCBhbmQgd2hh dG5vdCBmb3IgdGhlIGRpc3BsYXkgY3VycmVudGx5IGRvaW5nIHRoZSBwbGF5YmFjay4KPgo+IHYy OiBBZGQgYSBQQ00gcGVyIHBvcnQgaW5zdGVhZCBvZiBwZXIgcGlwZQo+Cj4gQ2M6IFRha2FzaGkg SXdhaSA8dGl3YWlAc3VzZS5kZT4KPiBDYzogUGllcnJlLUxvdWlzIEJvc3NhcnQgPHBpZXJyZS1s b3Vpcy5ib3NzYXJ0QGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHBlX2F1ZGlvLmMgfCAgMTkgKystLS0KPiAgIGluY2x1ZGUvZHJt L2ludGVsX2xwZV9hdWRpby5oICAgICAgICAgIHwgICA2ICstCj4gICBzb3VuZC94ODYvaW50ZWxf aGRtaV9hdWRpby5jICAgICAgICAgICB8IDEyNiArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0KPiAgIHNvdW5kL3g4Ni9pbnRlbF9oZG1pX2F1ZGlvLmggICAgICAgICAgIHwgICA3ICst Cj4gICA0IGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9ucygtKQo+ Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xwZV9hdWRpby5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHBlX2F1ZGlvLmMKPiBpbmRleCBiZGJjMjM1MTQx YjUuLmZhNzI4ZWQyMWQxZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scGVfYXVkaW8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xwZV9hdWRp by5jCj4gQEAgLTExMSw3ICsxMTEsMTEgQEAgbHBlX2F1ZGlvX3BsYXRkZXZfY3JlYXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlwaW5mby5zaXplX2RhdGEgPSBzaXpl b2YoKnBkYXRhKTsKPiAgIAlwaW5mby5kbWFfbWFzayA9IERNQV9CSVRfTUFTSygzMik7Cj4gICAK PiAtCXBkYXRhLT5wb3J0LnBpcGUgPSAtMTsKPiArCXBkYXRhLT5udW1fcGlwZXMgPSBJTlRFTF9J TkZPKGRldl9wcml2KS0+bnVtX3BpcGVzOwo+ICsJcGRhdGEtPm51bV9wb3J0cyA9IElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpID8gMyA6IDI7IC8qIEIsQyxEIG9yIEIsQyAqLwo+ICsJcGRhdGEtPnBv cnRbMF0ucGlwZSA9IC0xOwo+ICsJcGRhdGEtPnBvcnRbMV0ucGlwZSA9IC0xOwo+ICsJcGRhdGEt PnBvcnRbMl0ucGlwZSA9IC0xOwo+ICAgCXNwaW5fbG9ja19pbml0KCZwZGF0YS0+bHBlX2F1ZGlv X3Nsb2NrKTsKPiAgIAo+ICAgCXBsYXRkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVs bCgmcGluZm8pOwo+IEBAIC0zMTksNyArMzIzLDcgQEAgdm9pZCBpbnRlbF9scGVfYXVkaW9fbm90 aWZ5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCSAgICBlbnVtIHBp cGUgcGlwZSwgZW51bSBwb3J0IHBvcnQsCj4gICAJCQkgICAgY29uc3Qgdm9pZCAqZWxkLCBpbnQg bHNfY2xvY2ssIGJvb2wgZHBfb3V0cHV0KQo+ICAgewo+IC0JdW5zaWduZWQgbG9uZyBpcnFfZmxh Z3M7Cj4gKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ICAgCXN0cnVjdCBpbnRlbF9oZG1pX2xw ZV9hdWRpb19wZGF0YSAqcGRhdGE7Cj4gICAJc3RydWN0IGludGVsX2hkbWlfbHBlX2F1ZGlvX3Bv cnRfcGRhdGEgKnBwZGF0YTsKPiAgIAl1MzIgYXVkaW9fZW5hYmxlOwo+IEBAIC0zMjgsMTQgKzMz MiwxMiBAQCB2b2lkIGludGVsX2xwZV9hdWRpb19ub3RpZnkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAgCQlyZXR1cm47Cj4gICAKPiAgIAlwZGF0YSA9IGRldl9nZXRfcGxh dGRhdGEoJmRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRldi0+ZGV2KTsKPiAtCXBwZGF0YSA9ICZw ZGF0YS0+cG9ydDsKPiArCXBwZGF0YSA9ICZwZGF0YS0+cG9ydFtwb3J0XTsKPiAgIAo+IC0Jc3Bp bl9sb2NrX2lycXNhdmUoJnBkYXRhLT5scGVfYXVkaW9fc2xvY2ssIGlycV9mbGFncyk7Cj4gKwlz cGluX2xvY2tfaXJxc2F2ZSgmcGRhdGEtPmxwZV9hdWRpb19zbG9jaywgaXJxZmxhZ3MpOwo+ICAg Cj4gICAJYXVkaW9fZW5hYmxlID0gSTkxNV9SRUFEKFZMVl9BVURfUE9SVF9FTl9EQkcocG9ydCkp Owo+ICAgCj4gLQlwcGRhdGEtPnBvcnQgPSBwb3J0Owo+IC0KPiAgIAlpZiAoZWxkICE9IE5VTEwp IHsKPiAgIAkJbWVtY3B5KHBwZGF0YS0+ZWxkLCBlbGQsIEhETUlfTUFYX0VMRF9CWVRFUyk7Cj4g ICAJCXBwZGF0YS0+cGlwZSA9IHBpcGU7Cj4gQEAgLTM1Nyw4ICszNTksNyBAQCB2b2lkIGludGVs X2xwZV9hdWRpb19ub3RpZnkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAg CX0KPiAgIAo+ICAgCWlmIChwZGF0YS0+bm90aWZ5X2F1ZGlvX2xwZSkKPiAtCQlwZGF0YS0+bm90 aWZ5X2F1ZGlvX2xwZShkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYpOwo+ICsJCXBkYXRhLT5u b3RpZnlfYXVkaW9fbHBlKGRldl9wcml2LT5scGVfYXVkaW8ucGxhdGRldiwgcG9ydCk7Cj4gICAK PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBkYXRhLT5scGVfYXVkaW9fc2xvY2ssCj4gLQkJ CWlycV9mbGFncyk7Cj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwZGF0YS0+bHBlX2F1ZGlv X3Nsb2NrLCBpcnFmbGFncyk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2ludGVs X2xwZV9hdWRpby5oIGIvaW5jbHVkZS9kcm0vaW50ZWxfbHBlX2F1ZGlvLmgKPiBpbmRleCAyMTFm MWNkNjExNTMuLmE5MTE1MzBjMDEyZSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9pbnRlbF9s cGVfYXVkaW8uaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2ludGVsX2xwZV9hdWRpby5oCj4gQEAgLTQw LDkgKzQwLDExIEBAIHN0cnVjdCBpbnRlbF9oZG1pX2xwZV9hdWRpb19wb3J0X3BkYXRhIHsKPiAg IH07Cj4gICAKPiAgIHN0cnVjdCBpbnRlbF9oZG1pX2xwZV9hdWRpb19wZGF0YSB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfaGRtaV9scGVfYXVkaW9fcG9ydF9wZGF0YSBwb3J0Owo+ICsJc3RydWN0IGludGVs X2hkbWlfbHBlX2F1ZGlvX3BvcnRfcGRhdGEgcG9ydFszXTsgLyogcG9ydHMgQixDLEQgKi8KPiAr CWludCBudW1fcG9ydHM7Cj4gKwlpbnQgbnVtX3BpcGVzOwo+ICAgCj4gLQl2b2lkICgqbm90aWZ5 X2F1ZGlvX2xwZSkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7Cj4gKwl2b2lkICgqbm90 aWZ5X2F1ZGlvX2xwZSkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IHBpcGUpOwo+ ICAgCXNwaW5sb2NrX3QgbHBlX2F1ZGlvX3Nsb2NrOwo+ICAgfTsKPiAgIAo+IGRpZmYgLS1naXQg YS9zb3VuZC94ODYvaW50ZWxfaGRtaV9hdWRpby5jIGIvc291bmQveDg2L2ludGVsX2hkbWlfYXVk aW8uYwo+IGluZGV4IDEyZmFlMjZlNzBiYi4uOTA5MzkxZDUyNzBjIDEwMDY0NAo+IC0tLSBhL3Nv dW5kL3g4Ni9pbnRlbF9oZG1pX2F1ZGlvLmMKPiArKysgYi9zb3VuZC94ODYvaW50ZWxfaGRtaV9h dWRpby5jCj4gQEAgLTQyLDYgKzQyLDggQEAKPiAgICNpbmNsdWRlIDxkcm0vaW50ZWxfbHBlX2F1 ZGlvLmg+Cj4gICAjaW5jbHVkZSAiaW50ZWxfaGRtaV9hdWRpby5oIgo+ICAgCj4gKyNkZWZpbmUg Zm9yX2VhY2hfcGlwZShjYXJkX2N0eCwgcGlwZSkgXAo+ICsJZm9yICgocGlwZSkgPSAwOyAocGlw ZSkgPCAoY2FyZF9jdHgpLT5udW1fcGlwZXM7IChwaXBlKSsrKQo+ICAgI2RlZmluZSBmb3JfZWFj aF9wb3J0KGNhcmRfY3R4LCBwb3J0KSBcCj4gICAJZm9yICgocG9ydCkgPSAwOyAocG9ydCkgPCAo Y2FyZF9jdHgpLT5udW1fcG9ydHM7IChwb3J0KSsrKQo+ICAgCj4gQEAgLTE5MiwxNSArMTk0LDMw IEBAIHN0YXRpYyB2b2lkIGhhZF9zdWJzdHJlYW1fcHV0KHN0cnVjdCBzbmRfaW50ZWxoYWQgKmlu dGVsaGFkZGF0YSkKPiAgIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpbnRlbGhhZGRhdGEtPmhh ZF9zcGlubG9jaywgZmxhZ3MpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB1MzIgaGFkX2NvbmZpZ19v ZmZzZXQoaW50IHBpcGUpCj4gK3sKPiArCXN3aXRjaCAocGlwZSkgewo+ICsJZGVmYXVsdDoKPiAr CWNhc2UgMDoKPiArCQlyZXR1cm4gQVVESU9fSERNSV9DT05GSUdfQTsKPiArCWNhc2UgMToKPiAr CQlyZXR1cm4gQVVESU9fSERNSV9DT05GSUdfQjsKPiArCWNhc2UgMjoKPiArCQlyZXR1cm4gQVVE SU9fSERNSV9DT05GSUdfQzsKPiArCX0KPiArfQo+ICsKPiAgIC8qIFJlZ2lzdGVyIGFjY2VzcyBm dW5jdGlvbnMgKi8KPiAtc3RhdGljIHUzMiBoYWRfcmVhZF9yZWdpc3Rlcl9yYXcoc3RydWN0IHNu ZF9pbnRlbGhhZCAqY3R4LCB1MzIgcmVnKQo+ICtzdGF0aWMgdTMyIGhhZF9yZWFkX3JlZ2lzdGVy X3JhdyhzdHJ1Y3Qgc25kX2ludGVsaGFkX2NhcmQgKmNhcmRfY3R4LAo+ICsJCQkJIGludCBwaXBl LCB1MzIgcmVnKQo+ICAgewo+IC0JcmV0dXJuIGlvcmVhZDMyKGN0eC0+Y2FyZF9jdHgtPm1taW9f c3RhcnQgKyBjdHgtPmhhZF9jb25maWdfb2Zmc2V0ICsgcmVnKTsKPiArCXJldHVybiBpb3JlYWQz MihjYXJkX2N0eC0+bW1pb19zdGFydCArIGhhZF9jb25maWdfb2Zmc2V0KHBpcGUpICsgcmVnKTsK PiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBoYWRfd3JpdGVfcmVnaXN0ZXJfcmF3KHN0cnVjdCBz bmRfaW50ZWxoYWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbCkKPiArc3RhdGljIHZvaWQgaGFkX3dy aXRlX3JlZ2lzdGVyX3JhdyhzdHJ1Y3Qgc25kX2ludGVsaGFkX2NhcmQgKmNhcmRfY3R4LAo+ICsJ CQkJICAgaW50IHBpcGUsIHUzMiByZWcsIHUzMiB2YWwpCj4gICB7Cj4gLQlpb3dyaXRlMzIodmFs LCBjdHgtPmNhcmRfY3R4LT5tbWlvX3N0YXJ0ICsgY3R4LT5oYWRfY29uZmlnX29mZnNldCArIHJl Zyk7Cj4gKwlpb3dyaXRlMzIodmFsLCBjYXJkX2N0eC0+bW1pb19zdGFydCArIGhhZF9jb25maWdf b2Zmc2V0KHBpcGUpICsgcmVnKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgaGFkX3JlYWRf cmVnaXN0ZXIoc3RydWN0IHNuZF9pbnRlbGhhZCAqY3R4LCB1MzIgcmVnLCB1MzIgKnZhbCkKPiBA QCAtMjA4LDEzICsyMjUsMTMgQEAgc3RhdGljIHZvaWQgaGFkX3JlYWRfcmVnaXN0ZXIoc3RydWN0 IHNuZF9pbnRlbGhhZCAqY3R4LCB1MzIgcmVnLCB1MzIgKnZhbCkKPiAgIAlpZiAoIWN0eC0+Y29u bmVjdGVkKQo+ICAgCQkqdmFsID0gMDsKPiAgIAllbHNlCj4gLQkJKnZhbCA9IGhhZF9yZWFkX3Jl Z2lzdGVyX3JhdyhjdHgsIHJlZyk7Cj4gKwkJKnZhbCA9IGhhZF9yZWFkX3JlZ2lzdGVyX3Jhdyhj dHgtPmNhcmRfY3R4LCBjdHgtPnBpcGUsIHJlZyk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lk IGhhZF93cml0ZV9yZWdpc3RlcihzdHJ1Y3Qgc25kX2ludGVsaGFkICpjdHgsIHUzMiByZWcsIHUz MiB2YWwpCj4gICB7Cj4gICAJaWYgKGN0eC0+Y29ubmVjdGVkKQo+IC0JCWhhZF93cml0ZV9yZWdp c3Rlcl9yYXcoY3R4LCByZWcsIHZhbCk7Cj4gKwkJaGFkX3dyaXRlX3JlZ2lzdGVyX3JhdyhjdHgt PmNhcmRfY3R4LCBjdHgtPnBpcGUsIHJlZywgdmFsKTsKPiAgIH0KPiAgIAo+ICAgLyoKPiBAQCAt MTM2MSw2ICsxMzc4LDkgQEAgc3RhdGljIHZvaWQgaGFkX3Byb2Nlc3NfaG90X3BsdWcoc3RydWN0 IHNuZF9pbnRlbGhhZCAqaW50ZWxoYWRkYXRhKQo+ICAgCQlyZXR1cm47Cj4gICAJfQo+ICAgCj4g KwkvKiBEaXNhYmxlIEF1ZGlvICovCj4gKwloYWRfZW5hYmxlX2F1ZGlvKGludGVsaGFkZGF0YSwg ZmFsc2UpOwo+ICsKPiAgIAlpbnRlbGhhZGRhdGEtPmNvbm5lY3RlZCA9IHRydWU7Cj4gICAJZGV2 X2RiZyhpbnRlbGhhZGRhdGEtPmRldiwKPiAgIAkJIiVzIEAgJWQ6REVCVUcgUExVRy9VTlBMVUcg OiBIQURfRFJWX0NPTk5FQ1RFRFxuIiwKPiBAQCAtMTUyMywyNiArMTU0MywzMSBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9uZXcgaGFkX2NvbnRyb2xzW10gPSB7Cj4gICBzdGF0 aWMgaXJxcmV0dXJuX3QgZGlzcGxheV9waXBlX2ludGVycnVwdF9oYW5kbGVyKGludCBpcnEsIHZv aWQgKmRldl9pZCkKPiAgIHsKPiAgIAlzdHJ1Y3Qgc25kX2ludGVsaGFkX2NhcmQgKmNhcmRfY3R4 ID0gZGV2X2lkOwo+IC0JaW50IHBvcnQ7Cj4gKwl1MzIgYXVkaW9fc3RhdFszXSA9IHt9Owo+ICsJ aW50IHBpcGUsIHBvcnQ7Cj4gKwo+ICsJZm9yX2VhY2hfcGlwZShjYXJkX2N0eCwgcGlwZSkgewo+ ICsJCS8qIHVzZSByYXcgcmVnaXN0ZXIgYWNjZXNzIHRvIGFjayBJUlFzIGV2ZW4gd2hpbGUgZGlz Y29ubmVjdGVkICovCj4gKwkJYXVkaW9fc3RhdFtwaXBlXSA9IGhhZF9yZWFkX3JlZ2lzdGVyX3Jh dyhjYXJkX2N0eCwgcGlwZSwKPiArCQkJCQkJCSBBVURfSERNSV9TVEFUVVMpICYKPiArCQkJKEhE TUlfQVVESU9fVU5ERVJSVU4gfCBIRE1JX0FVRElPX0JVRkZFUl9ET05FKTsKPiArCj4gKwkJaWYg KGF1ZGlvX3N0YXRbcGlwZV0pCj4gKwkJCWhhZF93cml0ZV9yZWdpc3Rlcl9yYXcoY2FyZF9jdHgs IHBpcGUsCj4gKwkJCQkJICAgICAgIEFVRF9IRE1JX1NUQVRVUywgYXVkaW9fc3RhdFtwaXBlXSk7 Cj4gKwl9Cj4gICAKPiAgIAlmb3JfZWFjaF9wb3J0KGNhcmRfY3R4LCBwb3J0KSB7Cj4gICAJCXN0 cnVjdCBzbmRfaW50ZWxoYWQgKmN0eCA9ICZjYXJkX2N0eC0+cGNtX2N0eFtwb3J0XTsKPiAtCQl1 MzIgYXVkaW9fc3RhdDsKPiArCQlpbnQgcGlwZSA9IGN0eC0+cGlwZTsKPiAgIAo+IC0JCS8qIHVz ZSByYXcgcmVnaXN0ZXIgYWNjZXNzIHRvIGFjayBJUlFzIGV2ZW4gd2hpbGUgZGlzY29ubmVjdGVk ICovCj4gLQkJYXVkaW9fc3RhdCA9IGhhZF9yZWFkX3JlZ2lzdGVyX3JhdyhjdHgsIEFVRF9IRE1J X1NUQVRVUyk7Cj4gLQo+IC0JCWlmIChhdWRpb19zdGF0ICYgSERNSV9BVURJT19VTkRFUlJVTikg ewo+IC0JCQloYWRfd3JpdGVfcmVnaXN0ZXJfcmF3KGN0eCwgQVVEX0hETUlfU1RBVFVTLAo+IC0J CQkJCSAgICAgICBIRE1JX0FVRElPX1VOREVSUlVOKTsKPiAtCQkJaGFkX3Byb2Nlc3NfYnVmZmVy X3VuZGVycnVuKGN0eCk7Cj4gLQkJfQo+ICsJCWlmIChwaXBlIDwgMCkKPiArCQkJY29udGludWU7 Cj4gICAKPiAtCQlpZiAoYXVkaW9fc3RhdCAmIEhETUlfQVVESU9fQlVGRkVSX0RPTkUpIHsKPiAt CQkJaGFkX3dyaXRlX3JlZ2lzdGVyX3JhdyhjdHgsIEFVRF9IRE1JX1NUQVRVUywKPiAtCQkJCQkg ICAgICAgSERNSV9BVURJT19CVUZGRVJfRE9ORSk7Cj4gKwkJaWYgKGF1ZGlvX3N0YXRbcGlwZV0g JiBIRE1JX0FVRElPX0JVRkZFUl9ET05FKQo+ICAgCQkJaGFkX3Byb2Nlc3NfYnVmZmVyX2RvbmUo Y3R4KTsKPiAtCQl9Cj4gKwkJaWYgKGF1ZGlvX3N0YXRbcGlwZV0gJiBIRE1JX0FVRElPX1VOREVS UlVOKQo+ICsJCQloYWRfcHJvY2Vzc19idWZmZXJfdW5kZXJydW4oY3R4KTsKPiAgIAl9Cj4gICAK PiAgIAlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gQEAgLTE1NTEsMTYgKzE1NzYsMTIgQEAgc3RhdGlj IGlycXJldHVybl90IGRpc3BsYXlfcGlwZV9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lk ICpkZXZfaWQpCj4gICAvKgo+ICAgICogbW9uaXRvciBwbHVnL3VucGx1ZyBub3RpZmljYXRpb24g ZnJvbSBpOTE1OyBqdXN0IGtpY2sgb2ZmIHRoZSB3b3JrCj4gICAgKi8KPiAtc3RhdGljIHZvaWQg bm90aWZ5X2F1ZGlvX2xwZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICtzdGF0aWMg dm9pZCBub3RpZnlfYXVkaW9fbHBlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBw b3J0KQo+ICAgewo+ICAgCXN0cnVjdCBzbmRfaW50ZWxoYWRfY2FyZCAqY2FyZF9jdHggPSBwbGF0 Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKPiAtCWludCBwb3J0Owo+ICsJc3RydWN0IHNuZF9pbnRl bGhhZCAqY3R4ID0gJmNhcmRfY3R4LT5wY21fY3R4W3BvcnRdOwo+ICAgCj4gLQlmb3JfZWFjaF9w b3J0KGNhcmRfY3R4LCBwb3J0KSB7Cj4gLQkJc3RydWN0IHNuZF9pbnRlbGhhZCAqY3R4ID0gJmNh cmRfY3R4LT5wY21fY3R4W3BvcnRdOwo+IC0KPiAtCQlzY2hlZHVsZV93b3JrKCZjdHgtPmhkbWlf YXVkaW9fd3EpOwo+IC0JfQo+ICsJc2NoZWR1bGVfd29yaygmY3R4LT5oZG1pX2F1ZGlvX3dxKTsK PiAgIH0KPiAgIAo+ICAgLyogdGhlIHdvcmsgdG8gaGFuZGxlIG1vbml0b3IgaG90IHBsdWcvdW5w bHVnICovCj4gQEAgLTE1NjksMzQgKzE1OTAsMjcgQEAgc3RhdGljIHZvaWQgaGFkX2F1ZGlvX3dx KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgIAlzdHJ1Y3Qgc25kX2ludGVsaGFkICpjdHgg PQo+ICAgCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IHNuZF9pbnRlbGhhZCwgaGRtaV9hdWRp b193cSk7Cj4gICAJc3RydWN0IGludGVsX2hkbWlfbHBlX2F1ZGlvX3BkYXRhICpwZGF0YSA9IGN0 eC0+ZGV2LT5wbGF0Zm9ybV9kYXRhOwo+IC0Jc3RydWN0IGludGVsX2hkbWlfbHBlX2F1ZGlvX3Bv cnRfcGRhdGEgKnBwZGF0YSA9ICZwZGF0YS0+cG9ydDsKPiArCXN0cnVjdCBpbnRlbF9oZG1pX2xw ZV9hdWRpb19wb3J0X3BkYXRhICpwcGRhdGEgPSAmcGRhdGEtPnBvcnRbY3R4LT5wb3J0XTsKPiAg IAo+ICAgCXBtX3J1bnRpbWVfZ2V0X3N5bmMoY3R4LT5kZXYpOwo+ICAgCW11dGV4X2xvY2soJmN0 eC0+bXV0ZXgpOwo+ICAgCWlmIChwcGRhdGEtPnBpcGUgPCAwKSB7Cj4gLQkJZGV2X2RiZyhjdHgt PmRldiwgIiVzOiBFdmVudDogSEFEX05PVElGWV9IT1RfVU5QTFVHXG4iLAo+IC0JCQlfX2Z1bmNf Xyk7Cj4gKwkJZGV2X2RiZyhjdHgtPmRldiwgIiVzOiBFdmVudDogSEFEX05PVElGWV9IT1RfVU5Q TFVHIDogcG9ydCA9ICVkXG4iLAo+ICsJCQlfX2Z1bmNfXywgY3R4LT5wb3J0KTsKPiArCj4gICAJ CW1lbXNldChjdHgtPmVsZCwgMCwgc2l6ZW9mKGN0eC0+ZWxkKSk7IC8qIGNsZWFyIHRoZSBvbGQg RUxEICovCj4gKwo+ICsJCWN0eC0+ZHBfb3V0cHV0ID0gZmFsc2U7Cj4gKwkJY3R4LT50bWRzX2Ns b2NrX3NwZWVkID0gMDsKPiArCQljdHgtPmxpbmtfcmF0ZSA9IDA7Cj4gKwo+ICsJCS8qIFNodXQg ZG93biB0aGUgc3RyZWFtICovCj4gICAJCWhhZF9wcm9jZXNzX2hvdF91bnBsdWcoY3R4KTsKPiAr Cj4gKwkJY3R4LT5waXBlID0gLTE7Cj4gICAJfSBlbHNlIHsKPiAgIAkJZGV2X2RiZyhjdHgtPmRl diwgIiVzOiBIQURfTk9USUZZX0VMRCA6IHBvcnQgPSAlZCwgdG1kcyA9ICVkXG4iLAo+IC0JCQlf X2Z1bmNfXywgcHBkYXRhLT5wb3J0LCBwcGRhdGEtPmxzX2Nsb2NrKTsKPiAtCj4gLQkJc3dpdGNo IChwcGRhdGEtPnBpcGUpIHsKPiAtCQljYXNlIDA6Cj4gLQkJCWN0eC0+aGFkX2NvbmZpZ19vZmZz ZXQgPSBBVURJT19IRE1JX0NPTkZJR19BOwo+IC0JCQlicmVhazsKPiAtCQljYXNlIDE6Cj4gLQkJ CWN0eC0+aGFkX2NvbmZpZ19vZmZzZXQgPSBBVURJT19IRE1JX0NPTkZJR19COwo+IC0JCQlicmVh azsKPiAtCQljYXNlIDI6Cj4gLQkJCWN0eC0+aGFkX2NvbmZpZ19vZmZzZXQgPSBBVURJT19IRE1J X0NPTkZJR19DOwo+IC0JCQlicmVhazsKPiAtCQlkZWZhdWx0Ogo+IC0JCQlkZXZfZGJnKGN0eC0+ ZGV2LCAiSW52YWxpZCBwaXBlICVkXG4iLAo+IC0JCQkJcHBkYXRhLT5waXBlKTsKPiAtCQkJYnJl YWs7Cj4gLQkJfQo+ICsJCQlfX2Z1bmNfXywgY3R4LT5wb3J0LCBwcGRhdGEtPmxzX2Nsb2NrKTsK PiAgIAo+ICAgCQltZW1jcHkoY3R4LT5lbGQsIHBwZGF0YS0+ZWxkLCBzaXplb2YoY3R4LT5lbGQp KTsKPiAgIAo+IEBAIC0xNjA5LDExICsxNjIzLDE4IEBAIHN0YXRpYyB2b2lkIGhhZF9hdWRpb193 cShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICAJCQljdHgtPmxpbmtfcmF0ZSA9IDA7Cj4g ICAJCX0KPiAgIAo+ICsJCS8qCj4gKwkJICogU2h1dCBkb3duIHRoZSBzdHJlYW0gYmVmb3JlIHdl IGNoYW5nZQo+ICsJCSAqIHRoZSBwaXBlIGFzc2lnbm1lbnQgZm9yIHRoaXMgcGNtIGRldmljZQo+ ICsJCSAqLwo+ICAgCQloYWRfcHJvY2Vzc19ob3RfcGx1ZyhjdHgpOwo+ICAgCj4gLQkJLyogUHJv Y2VzcyBtb2RlIGNoYW5nZSBpZiBzdHJlYW0gaXMgYWN0aXZlICovCj4gKwkJY3R4LT5waXBlID0g cHBkYXRhLT5waXBlOwo+ICsKPiArCQkvKiBSZXN0YXJ0IHRoZSBzdHJlYW0gaWYgbmVjZXNzYXJ5 ICovCj4gICAJCWhhZF9wcm9jZXNzX21vZGVfY2hhbmdlKGN0eCk7Cj4gICAJfQo+ICsKPiAgIAlt dXRleF91bmxvY2soJmN0eC0+bXV0ZXgpOwo+ICAgCXBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3ko Y3R4LT5kZXYpOwo+ICAgCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGN0eC0+ZGV2KTsKPiBA QCAtMTc5NCw3ICsxODE1LDggQEAgc3RhdGljIGludCBoZG1pX2xwZV9hdWRpb19wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAgCj4gICAJaW5pdF9jaGFubmVsX2FsbG9jYXRp b25zKCk7Cj4gICAKPiAtCWNhcmRfY3R4LT5udW1fcG9ydHMgPSAxOwo+ICsJY2FyZF9jdHgtPm51 bV9waXBlcyA9IHBkYXRhLT5udW1fcGlwZXM7Cj4gKwljYXJkX2N0eC0+bnVtX3BvcnRzID0gcGRh dGEtPm51bV9wb3J0czsKPiAgIAo+ICAgCWZvcl9lYWNoX3BvcnQoY2FyZF9jdHgsIHBvcnQpIHsK PiAgIAkJc3RydWN0IHNuZF9pbnRlbGhhZCAqY3R4ID0gJmNhcmRfY3R4LT5wY21fY3R4W3BvcnRd Owo+IEBAIC0xODAyLDEyICsxODI0LDEyIEBAIHN0YXRpYyBpbnQgaGRtaV9scGVfYXVkaW9fcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgIAo+ICAgCQljdHgtPmNhcmRfY3R4 ID0gY2FyZF9jdHg7Cj4gICAJCWN0eC0+ZGV2ID0gY2FyZF9jdHgtPmRldjsKPiArCQljdHgtPnBv cnQgPSBwb3J0Owo+ICsJCWN0eC0+cGlwZSA9IC0xOwo+ICAgCj4gICAJCUlOSVRfV09SSygmY3R4 LT5oZG1pX2F1ZGlvX3dxLCBoYWRfYXVkaW9fd3EpOwo+ICAgCj4gLQkJY3R4LT5oYWRfY29uZmln X29mZnNldCA9IEFVRElPX0hETUlfQ09ORklHX0E7Cj4gLQo+IC0JCXJldCA9IHNuZF9wY21fbmV3 KGNhcmQsIElOVEVMX0hBRCwgUENNX0lOREVYLCBNQVhfUEJfU1RSRUFNUywKPiArCQlyZXQgPSBz bmRfcGNtX25ldyhjYXJkLCBJTlRFTF9IQUQsIHBvcnQsIE1BWF9QQl9TVFJFQU1TLAo+ICAgCQkJ CSAgTUFYX0NBUF9TVFJFQU1TLCAmcGNtKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJCWdvdG8gZXJy Owo+IGRpZmYgLS1naXQgYS9zb3VuZC94ODYvaW50ZWxfaGRtaV9hdWRpby5oIGIvc291bmQveDg2 L2ludGVsX2hkbWlfYXVkaW8uaAo+IGluZGV4IDI3MjU5NjRlYmM0Ni4uMGQ5MWJiNWRiYWI3IDEw MDY0NAo+IC0tLSBhL3NvdW5kL3g4Ni9pbnRlbF9oZG1pX2F1ZGlvLmgKPiArKysgYi9zb3VuZC94 ODYvaW50ZWxfaGRtaV9hdWRpby5oCj4gQEAgLTMyLDcgKzMyLDYgQEAKPiAgIAo+ICAgI2luY2x1 ZGUgImludGVsX2hkbWlfbHBlX2F1ZGlvLmgiCj4gICAKPiAtI2RlZmluZSBQQ01fSU5ERVgJCTAK PiAgICNkZWZpbmUgTUFYX1BCX1NUUkVBTVMJCTEKPiAgICNkZWZpbmUgTUFYX0NBUF9TVFJFQU1T CQkwCj4gICAjZGVmaW5lIEJZVEVTX1BFUl9XT1JECQkweDQKPiBAQCAtMTEyLDYgKzExMSw4IEBA IHN0cnVjdCBzbmRfaW50ZWxoYWQgewo+ICAgCXN0cnVjdCBzbmRfcGNtX2NobWFwICpjaG1hcDsK PiAgIAlpbnQgdG1kc19jbG9ja19zcGVlZDsKPiAgIAlpbnQgbGlua19yYXRlOwo+ICsJaW50IHBv cnQ7IC8qIGZpeGVkICovCj4gKwlpbnQgcGlwZTsgLyogY2FuIGNoYW5nZSBkeW5hbWljYWxseSAq Lwo+ICAgCj4gICAJLyogcmluZyBidWZmZXIgKEJEKSBwb3NpdGlvbiBpbmRleCAqLwo+ICAgCXVu c2lnbmVkIGludCBiZF9oZWFkOwo+IEBAIC0xMjMsNyArMTI0LDYgQEAgc3RydWN0IHNuZF9pbnRl bGhhZCB7Cj4gICAJdW5zaWduZWQgaW50IHBlcmlvZF9ieXRlczsJLyogUENNIHBlcmlvZCBzaXpl IGluIGJ5dGVzICovCj4gICAKPiAgIAkvKiBpbnRlcm5hbCBzdHVmZiAqLwo+IC0JdW5zaWduZWQg aW50IGhhZF9jb25maWdfb2Zmc2V0Owo+ICAgCXVuaW9uIGF1ZF9jZmcgYXVkX2NvbmZpZzsJLyog QVVEX0NPTkZJRyByZWcgdmFsdWUgY2FjaGUgKi8KPiAgIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgaGRt aV9hdWRpb193cTsKPiAgIAlzdHJ1Y3QgbXV0ZXggbXV0ZXg7IC8qIGZvciBwcm90ZWN0aW5nIGNo bWFwIGFuZCBlbGQgKi8KPiBAQCAtMTM4LDggKzEzOCw5IEBAIHN0cnVjdCBzbmRfaW50ZWxoYWRf Y2FyZCB7Cj4gICAJLyogaW50ZXJuYWwgc3R1ZmYgKi8KPiAgIAlpbnQgaXJxOwo+ICAgCXZvaWQg X19pb21lbSAqbW1pb19zdGFydDsKPiArCWludCBudW1fcGlwZXM7Cj4gICAJaW50IG51bV9wb3J0 czsKPiAtCXN0cnVjdCBzbmRfaW50ZWxoYWQgcGNtX2N0eFszXTsKPiArCXN0cnVjdCBzbmRfaW50 ZWxoYWQgcGNtX2N0eFszXTsgLyogb25lIGZvciBlYWNoIHBvcnQgKi8KPiAgIH07Cj4gICAKPiAg ICNlbmRpZiAvKiBfSU5URUxfSERNSV9BVURJT18gKi8KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=