Re: [PATCH 3/3] platform: generic: spacemit: k3: add platform support
Bo Gan <[email protected]> Mon, 3 Aug 2026 16:44:09 -0700
| Newsgroups | org.infradead.lists.opensbi |
|---|---|
| Message-ID | <[email protected]> |
SGkgVHJveSwKClNlZSBteSBjb21tZW50cyBiZWxvdzoKCk9uIDcvMjQvMjYgMDI6MjcsIFRyb3kg TWl0Y2hlbGwgd3JvdGU6Cj4gRnJvbTogWGlhbmJpbiBaaHUgPHhpYW5iaW4uemh1QGxpbnV4LnNw YWNlbWl0LmNvbT4KPiAKPiBBZGQgaW5pdGlhbCBPcGVuU0JJIHBsYXRmb3JtIHN1cHBvcnQgZm9y IHRoZSBTcGFjZW1pVCBLMyBTb0MsIHdoaWNoCj4gaGFzIDE2IGhhcnRzICg4IFgxMDAgaGFydHMg aW4gY2x1c3RlcnMgQzAvQzEsIDggQTEwMCBoYXJ0cyBpbiBDMi9DMykuCj4gCj4gRHVyaW5nIGNv bGQgYm9vdCwgdGhlIGJvb3QgaGFydCBzZXRzIHdhcm0tYm9vdCBlbnRyeSB2ZWN0b3JzIGZvciBh bGwKPiBmb3VyIGNsdXN0ZXJzLCBlbmFibGVzIENDSSBzbm9vcGluZywgY2xlYXJzIFBNVSBwb3dl ci1kb3duIHZvdGUgYml0cwo+IGZvciBhbGwgaGFydHMgc28gV0ZJIGRvZXMgbm90IHRyaWdnZXIg cG93ZXItZG93biwgYW5kIHdha2VzIGFsbAo+IG5vbi1ib290IGhhcnRzICgxLTE1KSBzbyB0aGV5 IGVudGVyIFdGSSB3YWl0aW5nIGZvciB0aGUga2VybmVsLgo+IAo+IFBlci1oYXJ0IGluaXRpYWxp emF0aW9uIHByb2dyYW1zIFBNQSBhdHRyaWJ1dGVzLCBlbmFibGVzIGRjYWNoZS9pY2FjaGUKPiB2 aWEgTVNFVFVQLCBzZXRzIHNtcGVuW3hdIGluIE1MMlNFVFVQIHRvIGVuYWJsZSBMMSBELWNhY2hl IHNub29waW5nCj4gYW5kIHByZWZldGNoIGZvciB0aGlzIGNvcmUgKGhhcmR3YXJlIHRoZW4gbWFp bnRhaW5zIGNvaGVyZW5jeSBiZXR3ZWVuCj4gdGhpcyBjb3JlJ3MgTDEgRC1jYWNoZSBhbmQgYWxs IG90aGVyIGNhY2hlcyBpbiB0aGUgc3lzdGVtKSwgYW5kIGVuYWJsZXMKPiB0aGUgSCBleHRlbnNp b24gaW4gTUlTQSBmb3IgWDEwMCBoYXJ0cyAoTUlTQS5IIGlzIHdyaXRhYmxlIG9uIEszIFgxMDAK PiBjb3JlczsgTS1tb2RlIG11c3Qgc2V0IGl0IGV4cGxpY2l0bHkgdG8gYWN0aXZhdGUgaHlwZXJ2 aXNvciBzdXBwb3J0KS4KPiAKPiBrM19hc20uUyBwcm92aWRlcyB0aGUgd2FybS1ib290IGVudHJ5 IHN0dWIgdGhhdCBlbmFibGVzIGNhY2hlcyBhbmQKPiBzZXRzIHNtcGVuW3hdIHRvIGVuYWJsZSBM MSBELWNhY2hlIHNub29waW5nIGJlZm9yZSBqdW1waW5nIHRvIEMgY29kZS4KPiBUaGlzIGVuc3Vy ZXMgdGhhdCB3aGVuIHRoZSBib290IGhhcnQgd2FrZXMgdGhlIG90aGVyIGNvcmVzLCB0aG9zZSBj b3Jlcwo+IGVudGVyIHdpdGggdGhlaXIgbG9jYWwgY2FjaGVzIGFjdGl2ZSBhbmQgTDEgRC1jYWNo ZSBjb2hlcmVuY3kgZW5hYmxlZAo+IHNvIHRoZXkgY2FuIG9ic2VydmUgYW55IHNoYXJlZC1kYXRh IHdyaXRlcyBtYWRlIGJ5IHRoZSBib290IGhhcnQgZHVyaW5nCj4gY29sZC1ib290IGluaXRpYWxp emF0aW9uLiBUaGUgYm9vdCBoYXJ0IGVuYWJsZXMgZ2xvYmFsIENDSS01NTAKPiBzbm9vcC9EVk0g cmVxdWVzdHMgc2VwYXJhdGVseSBiZWZvcmUgd2FraW5nIHRoZSBzZWNvbmRhcnkgaGFydHMuCj4g Cj4gTmV3IGZpbGVzOgo+IC0gcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2szLmg6 IEszLXNwZWNpZmljIHJlZ2lzdGVyIGRlZmluaXRpb25zCj4gLSBwbGF0Zm9ybS9nZW5lcmljL2lu Y2x1ZGUvc3BhY2VtaXQvazNfYXNtLmg6Cj4gICAgd2FybS1ib290IGVudHJ5IHN5bWJvbCBkZWNs YXJhdGlvbgo+IC0gcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9rMy5jOiBLMyBwbGF0Zm9ybSBk cml2ZXIKPiAtIHBsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvazNfYXNtLlM6IHdhcm0tYm9vdCBh c3NlbWJseSBlbnRyeSBzdHViCj4gCj4gU2lnbmVkLW9mZi1ieTogWGlhbmJpbiBaaHUgPHhpYW5i aW4uemh1QGxpbnV4LnNwYWNlbWl0LmNvbT4KPiBDby1kZXZlbG9wZWQtYnk6IFRyb3kgTWl0Y2hl bGwgPHRyb3kubWl0Y2hlbGxAbGludXguc3BhY2VtaXQuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFRy b3kgTWl0Y2hlbGwgPHRyb3kubWl0Y2hlbGxAbGludXguc3BhY2VtaXQuY29tPgo+IC0tLQo+ICAg cGxhdGZvcm0vZ2VuZXJpYy9LY29uZmlnICAgICAgICAgICAgICAgICAgIHwgICA1ICsKPiAgIHBs YXRmb3JtL2dlbmVyaWMvY29uZmlncy9kZWZjb25maWcgICAgICAgICB8ICAgMSArCj4gICBwbGF0 Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvY29tbW9uLmggfCAgIDQgKy0KPiAgIHBsYXRm b3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9rMy5oICAgICB8IDE0NCArKysrKysrKysrKysr KysrCj4gICBwbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazNfYXNtLmggfCAgMTYg KysKPiAgIHBsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvazMuYyAgICAgICAgICAgICB8IDI2NCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1p dC9rM19hc20uUyAgICAgICAgIHwgIDMzICsrKysKPiAgIHBsYXRmb3JtL2dlbmVyaWMvc3BhY2Vt aXQvb2JqZWN0cy5tayAgICAgICB8ICAgMiArCj4gICA4IGZpbGVzIGNoYW5nZWQsIDQ2OCBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3BsYXRmb3JtL2dlbmVy aWMvS2NvbmZpZyBiL3BsYXRmb3JtL2dlbmVyaWMvS2NvbmZpZwo+IGluZGV4IDk1ODYxMGQzLi4w MzAyZWRhNiAxMDA2NDQKPiAtLS0gYS9wbGF0Zm9ybS9nZW5lcmljL0tjb25maWcKPiArKysgYi9w bGF0Zm9ybS9nZW5lcmljL0tjb25maWcKPiBAQCAtMTA5LDYgKzEwOSwxMSBAQCBjb25maWcgUExB VEZPUk1fU1BBQ0VNSVRfSzEKPiAgIAlzZWxlY3QgUExBVEZPUk1fU1BBQ0VNSVQKPiAgIAlkZWZh dWx0IG4KPiAgIAo+ICtjb25maWcgUExBVEZPUk1fU1BBQ0VNSVRfSzMKPiArCWJvb2wgIlNwYWNl bWl0IEszIHN1cHBvcnQiCj4gKwlzZWxlY3QgUExBVEZPUk1fU1BBQ0VNSVQKPiArCWRlZmF1bHQg bgo+ICsKPiAgIGNvbmZpZyBDUFVfTUlQU19QODcwMAo+ICAgCWJvb2wKPiAgIAlkZWZhdWx0IG4K PiBkaWZmIC0tZ2l0IGEvcGxhdGZvcm0vZ2VuZXJpYy9jb25maWdzL2RlZmNvbmZpZyBiL3BsYXRm b3JtL2dlbmVyaWMvY29uZmlncy9kZWZjb25maWcKPiBpbmRleCAzNDFmNmIyNS4uNThkNDA4OTgg MTAwNjQ0Cj4gLS0tIGEvcGxhdGZvcm0vZ2VuZXJpYy9jb25maWdzL2RlZmNvbmZpZwo+ICsrKyBi L3BsYXRmb3JtL2dlbmVyaWMvY29uZmlncy9kZWZjb25maWcKPiBAQCAtMTUsNiArMTUsNyBAQCBD T05GSUdfUExBVEZPUk1fVEhFQUQ9eQo+ICAgQ09ORklHX1BMQVRGT1JNX01JUFNfUDg3MDBfRVlF UTdIPXkKPiAgIENPTkZJR19QTEFURk9STV9NSVBTX1A4NzAwX0JPU1RPTj15Cj4gICBDT05GSUdf UExBVEZPUk1fU1BBQ0VNSVRfSzE9eQo+ICtDT05GSUdfUExBVEZPUk1fU1BBQ0VNSVRfSzM9eQo+ ICAgQ09ORklHX0ZEVF9DQUNIRT15Cj4gICBDT05GSUdfRkRUX0NBQ0hFX0FOREVTX0xMQ0FDSEU9 eQo+ICAgQ09ORklHX0ZEVF9DQUNIRV9TSUZJVkVfQ0NBQ0hFPXkKPiBkaWZmIC0tZ2l0IGEvcGxh dGZvcm0vZ2VuZXJpYy9pbmNsdWRlL3NwYWNlbWl0L2NvbW1vbi5oIGIvcGxhdGZvcm0vZ2VuZXJp Yy9pbmNsdWRlL3NwYWNlbWl0L2NvbW1vbi5oCj4gaW5kZXggMzE3YmIzZTkuLjdiNTBjYzRmIDEw MDY0NAo+IC0tLSBhL3BsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9jb21tb24uaAo+ ICsrKyBiL3BsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9jb21tb24uaAo+IEBAIC05 LDcgKzksOSBAQAo+ICAgI2lmbmRlZiBfX1JJU0NWX1NQQUNFTUlUX0NPTU1PTl9IX18KPiAgICNk ZWZpbmUgX19SSVNDVl9TUEFDRU1JVF9DT01NT05fSF9fCj4gICAKPiArI2lmbmRlZiBfX0FTU0VN QkxZX18KPiAgICNpbmNsdWRlIDxzYmkvc2JpX2JpdG9wcy5oPgo+ICsjZW5kaWYKPiAgIAo+ICAg I2RlZmluZSBDU1JfTVNFVFVQCQkJCTB4N2MwCj4gICAjZGVmaW5lIENTUl9NTDJTRVRVUAkJCQkw eDdmMAo+IEBAIC03NCw3ICs3Niw3IEBACj4gICAjZGVmaW5lIFBNVV9BUF9JRExFX0NPUkVfSURM RQkJCUJJVCgwKQo+ICAgLyogYml0IDE6IENPUkVfUFdSRFdOIC0gcG93ZXIgb2ZmIGNvcmUgb24g V0ZJIChyZXF1aXJlcyBDT1JFX0lETEUgc2V0KSAqLwo+ICAgI2RlZmluZSBQTVVfQVBfSURMRV9D T1JFX1BXUkRXTgkJCUJJVCgxKQo+IC0vKiBiaXQgMjogQ29yZSBMMSBTUkFNIFBvd2VyIERvd24g LSByZXNlcnZlZC9ub3QgdXNlZCBpbiBLMSBhbmQgSzMgKi8KPiArLyogYml0IDI6IENvcmUgTDEg U1JBTSBQb3dlciBEb3duIC0gcmVzZXJ2ZWQgaW4gSzEsIHVzZWQgaW4gSzMgKi8KPiAgICNkZWZp bmUgUE1VX0FQX0lETEVfQ09SRV9MMV9TUkFNX1BXUkRXTgkJQklUKDIpCj4gICAvKiBiaXQgMzog TUFTS19HSUNfTklSUV9UT19DT1JFIC0gbWFzayBuSVJRIGZyb20gR0lDLCBhdXRvLWNsZWFyZWQg YnkgSFcgb24gcG93ZXItZG93biBlbnRyeSAqLwo+ICAgI2RlZmluZSBQTVVfQVBfSURMRV9NQVNL X0dJQ19OSVJRCQlCSVQoMykKPiBkaWZmIC0tZ2l0IGEvcGxhdGZvcm0vZ2VuZXJpYy9pbmNsdWRl L3NwYWNlbWl0L2szLmggYi9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazMuaAo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLmE4NGQ5ZWQ4Cj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL3BsYXRmb3JtL2dlbmVyaWMvaW5jbHVkZS9zcGFjZW1pdC9rMy5oCj4g QEAgLTAsMCArMSwxNDQgQEAKPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZSAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjYgU3BhY2VtaVQKPiArICogQXV0 aG9yczoKPiArICogICBYaWFuYmluIFpodSA8eGlhbmJpbi56aHVAbGludXguc3BhY2VtaXQuY29t Pgo+ICsgKiAgIFRyb3kgTWl0Y2hlbGwgPHRyb3kubWl0Y2hlbGxAbGludXguc3BhY2VtaXQuY29t Pgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19SSVNDVl9TUEFDRU1JVF9LM19IX18KPiArI2RlZmlu ZSBfX1JJU0NWX1NQQUNFTUlUX0szX0hfXwo+ICsKPiArI2luY2x1ZGUgPHNwYWNlbWl0L2NvbW1v bi5oPgo+ICsKPiArLyogUE1BIGNvbmZpZ3VyYXRpb24gQ1NSICovCj4gKyNkZWZpbmUgQ1NSX1BN QUNGRzAJCQkJMHhiYzAKPiArCj4gKy8qCj4gKyAqIFBNQUNGRzAgYXVkaW8gYnVmZmVyIHJlZ2lv biBmaWVsZDogYml0cyBbNTU6NDhdLgo+ICsgKiBNYXNrIGFuZCBhdHRyaWJ1dGUgYXJlIGFwcGxp ZWQgYWZ0ZXIgYSA0OC1iaXQgc2hpZnQgYmVjYXVzZQo+ICsgKiBjc3JjL2NzcnMgb25seSBhY2Nl cHQgYSAxMi1iaXQgaW1tZWRpYXRlIG9yIGEgcmVnaXN0ZXIuCj4gKyAqLwo+ICsjZGVmaW5lIFBN QUNGRzBfQVVESU9fQlVGX0ZJRUxEX01BU0sJCTB4ZmYKPiArI2RlZmluZSBQTUFDRkcwX0FVRElP X0JVRl9GSUVMRF9TSElGVAkJNDgKPiArI2RlZmluZSBQTUFDRkcwX0FVRElPX0JVRl9BVFRSX0NB Q0hFQUJMRQkweDIwCj4gKwo+ICsvKgo+ICsgKiBQTUFDRkcwIFhJUCByZWdpb24gZmllbGQ6IGJp dHMgWzIzOjE2XS4KPiArICogTG93ZXIgMTIgYml0cyBhcmUgemVybyBzbyBHQVMgZW1pdHMgYSBz aW5nbGUgbHVpIGluc3RydWN0aW9uLgo+ICsgKi8KPiArI2RlZmluZSBQTUFDRkcwX1hJUF9GSUVM RF9DTEVBUgkJCTB4MDBmZjAwMDBVTAo+ICsjZGVmaW5lIFBNQUNGRzBfWElQX0FUVFJfSU8JCQkw eDAwMjIwMDAwVUwKPiArCj4gKyNkZWZpbmUgQ1NSX01MMkhJTlQJCQkJMHg3ZjcKPiArCj4gKy8q IEVuYWJsZSBpbnN0cnVjdGlvbiBwcmVmZXRjaCBpbiBMMiBjYWNoZSBvbiBtaXNzICovCj4gKyNk ZWZpbmUgTUwyU0VUVVBfSVBSRgkJCQlCSVQoMTYpCj4gKy8qIEVuYWJsZSBUTEIgcHJlZmV0Y2gg aW4gTDIgY2FjaGUgKi8KPiArI2RlZmluZSBNTDJTRVRVUF9UUFJGCQkJCUJJVCgxOCkKPiArLyog RW5hYmxlIHRvcC1vZi1jbGsgb2YgdHJhY2UgKi8KPiArI2RlZmluZSBNTDJISU5UX1RSQUNFX1RP UF9JQ0dFTgkJCUJJVCgyNikKPiArCj4gKy8qCj4gKyAqIENvbWJpbmVkIE1TRVRVUCBmbGFncyBl bmFibGVkIGF0IGJvb3QgdGltZTogREV8SUV8QlBFfFBGRXxNTUV8RUNDRS4KPiArICogRXhwcmVz c2VkIGFzIGEgcGxhaW4gaGV4IGNvbnN0YW50IHNvIGl0IGNhbiBiZSB1c2VkIGluIGFzc2VtYmx5 IChCSVQoKQo+ICsgKiBleHBhbmRzIHRvIDFVTDw8biB3aGljaCBHQVMgY2Fubm90IGV2YWx1YXRl KS4KPiArICovCj4gKyNkZWZpbmUgTVNFVFVQX0JPT1RfRkxBR1MJCQkweDEwMDczCj4gKwo+ICsv KiBBMTAwIGNvcmVzOiBoYXJ0IDgtMTEgYmVsb25nIHRvIEMyIGNsdXN0ZXIsIGhhcnQgMTItMTUg dG8gQzMgY2x1c3RlciAqLwo+ICsjZGVmaW5lIFBNVV9DQVBfQ09SRThfV0FLRVVQCQkJKFBNVV9B UF9CQVNFICsgMHgzNjApCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JFOV9XQUtFVVAJCQkoUE1VX0FQ X0JBU0UgKyAweDM2NCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxMF9XQUtFVVAJCQkoUE1VX0FQ X0JBU0UgKyAweDM2OCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxMV9XQUtFVVAJCQkoUE1VX0FQ X0JBU0UgKyAweDM2YykKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxMl9XQUtFVVAJCQkoUE1VX0FQ X0JBU0UgKyAweDIyYykKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxM19XQUtFVVAJCQkoUE1VX0FQ X0JBU0UgKyAweDIzMCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxNF9XQUtFVVAJCQkoUE1VX0FQ X0JBU0UgKyAweDIzNCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxNV9XQUtFVVAJCQkoUE1VX0FQ X0JBU0UgKyAweDIzOCkKPiArCj4gKy8qIEExMDAgcGVyLWNvcmUgaWRsZSBjb25maWcgcmVnaXN0 ZXJzIChoYXJ0cyA4LTE1KSAqLwo+ICsjZGVmaW5lIFBNVV9DQVBfQ09SRThfSURMRV9DRkcJCQko UE1VX0FQX0JBU0UgKyAweDM0MCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkU5X0lETEVfQ0ZHCQkJ KFBNVV9BUF9CQVNFICsgMHgzNDQpCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JFMTBfSURMRV9DRkcJ CQkoUE1VX0FQX0JBU0UgKyAweDM0OCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxMV9JRExFX0NG RwkJCShQTVVfQVBfQkFTRSArIDB4MzRjKQo+ICsjZGVmaW5lIFBNVV9DQVBfQ09SRTEyX0lETEVf Q0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgyMGMpCj4gKyNkZWZpbmUgUE1VX0NBUF9DT1JFMTNfSURM RV9DRkcJCQkoUE1VX0FQX0JBU0UgKyAweDIxMCkKPiArI2RlZmluZSBQTVVfQ0FQX0NPUkUxNF9J RExFX0NGRwkJCShQTVVfQVBfQkFTRSArIDB4MjE0KQo+ICsjZGVmaW5lIFBNVV9DQVBfQ09SRTE1 X0lETEVfQ0ZHCQkJKFBNVV9BUF9CQVNFICsgMHgyMTgpCj4gKwo+ICsvKiBDWCBDQVBNUCBjbHVz dGVyIGlkbGUgY29uZmlnIHJlZ2lzdGVycyAqLwo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzAJCShQTVVfQVBfQkFTRSArIDB4MTIwKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzEJCShQTVVfQVBfQkFTRSArIDB4MGU0KQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzIJCShQTVVfQVBfQkFTRSArIDB4MTUwKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzMJCShQTVVfQVBfQkFTRSArIDB4MTU0KQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzQJCShQTVVfQVBfQkFTRSArIDB4MzE0KQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzUJCShQTVVfQVBfQkFTRSArIDB4MzE4KQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzYJCShQTVVfQVBfQkFTRSArIDB4MzFjKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzcJCShQTVVfQVBfQkFTRSArIDB4MzIwKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzgJCShQTVVfQVBfQkFTRSArIDB4MzUwKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzkJCShQTVVfQVBfQkFTRSArIDB4MzU0KQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9JRExF X0NGRzEwCQkoUE1VX0FQX0JBU0UgKyAweDM1OCkKPiArI2RlZmluZSBQTVVfQ1hfQ0FQTVBfSURM RV9DRkcxMQkJKFBNVV9BUF9CQVNFICsgMHgzNWMpCj4gKyNkZWZpbmUgUE1VX0NYX0NBUE1QX0lE TEVfQ0ZHMTIJCShQTVVfQVBfQkFTRSArIDB4MjFjKQo+ICsjZGVmaW5lIFBNVV9DWF9DQVBNUF9J RExFX0NGRzEzCQkoUE1VX0FQX0JBU0UgKyAweDIyMCkKPiArI2RlZmluZSBQTVVfQ1hfQ0FQTVBf SURMRV9DRkcxNAkJKFBNVV9BUF9CQVNFICsgMHgyMjQpCj4gKyNkZWZpbmUgUE1VX0NYX0NBUE1Q X0lETEVfQ0ZHMTUJCShQTVVfQVBfQkFTRSArIDB4MjI4KQo+ICsKPiArI2RlZmluZSBQTVVfQVBf SURMRV9QV1JET1dOX0szX01BU0sJCShQTVVfQVBfSURMRV9DT1JFX0lETEUgfAkJXAo+ICsJCQkJ CQkgUE1VX0FQX0lETEVfQ09SRV9QV1JEV04gfAkJXAo+ICsJCQkJCQkgUE1VX0FQX0lETEVfQ09S RV9MMV9TUkFNX1BXUkRXTiB8CVwKPiArCQkJCQkJIFBNVV9BUF9JRExFX01BU0tfR0lDX05JUlEg fAkJXAo+ICsJCQkJCQkgUE1VX0FQX0lETEVfTUFTS19HSUNfTkZJUSkKPiArCj4gKy8qCj4gKyAq IFBNVSBDWCBwZXItY2x1c3RlciBpZGxlIGNvbnRyb2wgYml0cyAoUE1VX0NYX0NBUE1Qbl9JRExF X0NGRykuCj4gKyAqLwo+ICsvKiBiaXQgMDogTVAgSWRsZSAtIGdhdGUgY2x1c3RlciBjbG9ja3Mg ZXh0ZXJuYWxseSBvbiBXRkkgKi8KPiArI2RlZmluZSBQTVVfQ1hfSURMRV9NUF9JRExFCQkJQklU KDApCj4gKy8qIGJpdCAxOiBNUCBQb3dlciBEb3duIC0gcG93ZXIgb2ZmIGNsdXN0ZXIgbG9naWMg d2hlbiBpZGxlICovCj4gKyNkZWZpbmUgUE1VX0NYX0lETEVfTVBfUFdSRFdOCQkJQklUKDEpCj4g Ky8qIGJpdCAyOiBMMiBDYWNoZSBTUkFNIFBvd2VyIERvd24gKi8KPiArI2RlZmluZSBQTVVfQ1hf SURMRV9MMl9TUkFNX1BXUkRXTgkJQklUKDIpCj4gKy8qIGJpdCAzOiBTQ1UgU1JBTSBQb3dlciBE b3duIC0gbm90IHVzZWQsIFNDVSBTUkFNIGRvZXMgbm90IHN1cHBvcnQgcmV0ZW50aW9uICovCj4g KyNkZWZpbmUgUE1VX0NYX0lETEVfTVBfU0NVX1NSQU1fUFdSRFdOCQlCSVQoMykKPiArLyogYml0 IDc6IEFDTkFDVE0gSGFyZHdhcmUgQ29udHJvbCAtIEhXIGNvbnRyb2xzIEFDTkFDVE0gcG9ydCBv biBNUCBsb3cgcG93ZXIgZW50cnkgKi8KPiArI2RlZmluZSBQTVVfQ1hfSURMRV9BQ05BQ1RNX0hX X0NUUkwJCUJJVCg3KQo+ICsKPiArI2RlZmluZSBDTFVTVEVSX1BXUl9ET1dOX1ZBTFVFCQkJKFBN VV9DWF9JRExFX01QX0lETEUgfAkJXAo+ICsJCQkJCQkgUE1VX0NYX0lETEVfTVBfUFdSRFdOIHwJ XAo+ICsJCQkJCQkgUE1VX0NYX0lETEVfTDJfU1JBTV9QV1JEV04gfAlcCj4gKwkJCQkJCSBQTVVf Q1hfSURMRV9NUF9TQ1VfU1JBTV9QV1JEV04gfCBcCj4gKwkJCQkJCSBQTVVfQ1hfSURMRV9BQ05B Q1RNX0hXX0NUUkwpCj4gKwo+ICsvKiBib290IGVudHJ5IGZvciBBMTAwIGNsdXN0ZXJzICovCj4g KyNkZWZpbmUgQzJfUlZCQUREUl9MT19BRERSCQkJKDB4ZDQyODJjMDAgKyAweDNlOCkKPiArI2Rl ZmluZSBDMl9SVkJBRERSX0hJX0FERFIJCQkoMHhkNDI4MmMwMCArIDB4M2VjKQo+ICsjZGVmaW5l IEMzX1JWQkFERFJfTE9fQUREUgkJCSgweGQ0MjgyYzAwICsgMHgyNjApCj4gKyNkZWZpbmUgQzNf UlZCQUREUl9ISV9BRERSCQkJKDB4ZDQyODJjMDAgKyAweDI2NCkKPiArCj4gKy8qCj4gKyAqIFBN VSBBUCBjb3JlIFdGSSBzdGF0dXMgcmVnaXN0ZXJzLiAgRWFjaCBiaXQgaW5kaWNhdGVzIHRoZSBj b3JyZXNwb25kaW5nCj4gKyAqIGNvcmUgaGFzIGVudGVyZWQgV0ZJIGlkbGUgc3RhdGUuCj4gKyAq Cj4gKyAqIFgxMDAgaGFydHMgKDAtNyk6IFBNVV9BUF9YMTAwX0lETEVfU1RBVFVTCj4gKyAqICAg Y2x1c3RlciAwIChoYXJ0cyAwLTMpOiBiaXRzIDQsIDcsIDEwLCAxMwo+ICsgKiAgIGNsdXN0ZXIg MSAoaGFydHMgNC03KTogYml0cyAyMCwgMjMsIDI2LCAyOQo+ICsgKiBBMTAwIGhhcnRzICg4LTE1 KTogUE1VX0FQX0ExMDBfSURMRV9TVEFUVVMKPiArICogICBjbHVzdGVyIDIgKGhhcnRzIDgtMTEp OiAgYml0cyA0LCA3LCAxMCwgMTMKPiArICogICBjbHVzdGVyIDMgKGhhcnRzIDEyLTE1KTogYml0 cyAyMCwgMjMsIDI2LCAyOQo+ICsgKi8KPiArI2RlZmluZSBQTVVfQVBfWDEwMF9JRExFX1NUQVRV UwkJCTB4ZDQyODI4OTAKPiArI2RlZmluZSBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUwkJCTB4ZDQy ODI4ODAKPiArCj4gKyNkZWZpbmUgUExBVEZPUk1fQTEwMF9GSVJTVF9JRAkJCTgKPiArI2RlZmlu ZSBQTEFURk9STV9BMTAwX0xBU1RfSUQJCQkxNQo+ICsKPiArI2RlZmluZSBQTEFUX0NDSV9LM19B SURNQV9JRkFDRV9JWAkJMAo+ICsjZGVmaW5lIFBMQVRfQ0NJX0szX0NMVVNURVIwX0lGQUNFX0lY CQkxCj4gKyNkZWZpbmUgUExBVF9DQ0lfSzNfQ0xVU1RFUjFfSUZBQ0VfSVgJCTIKPiArI2RlZmlu ZSBQTEFUX0NDSV9LM19DTFVTVEVSMl8wX0lGQUNFX0lYCTMKPiArI2RlZmluZSBQTEFUX0NDSV9L M19DTFVTVEVSMl8xX0lGQUNFX0lYCTQKPiArI2RlZmluZSBQTEFUX0NDSV9LM19DTFVTVEVSM18w X0lGQUNFX0lYCTUKPiArI2RlZmluZSBQTEFUX0NDSV9LM19DTFVTVEVSM18xX0lGQUNFX0lYCTYK PiArCj4gKyNlbmRpZiAvKiBfX1JJU0NWX1NQQUNFTUlUX0szX0hfXyAqLwo+IGRpZmYgLS1naXQg YS9wbGF0Zm9ybS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazNfYXNtLmggYi9wbGF0Zm9ybS9n ZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazNfYXNtLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAwLi43MGMwMDQ3OAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wbGF0Zm9y bS9nZW5lcmljL2luY2x1ZGUvc3BhY2VtaXQvazNfYXNtLmgKPiBAQCAtMCwwICsxLDE2IEBACj4g Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UgKi8KPiArLyoKPiArICog Q29weXJpZ2h0IChjKSAyMDI2IFNwYWNlbWlUCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICAgWGlhbmJp biBaaHUgPHhpYW5iaW4uemh1QGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICogICBUcm95IE1pdGNo ZWxsIDx0cm95Lm1pdGNoZWxsQGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICovCj4gKwo+ICsjaWZu ZGVmIF9fUklTQ1ZfU1BBQ0VNSVRfSzNfQVNNX0hfXwo+ICsjZGVmaW5lIF9fUklTQ1ZfU1BBQ0VN SVRfSzNfQVNNX0hfXwo+ICsKPiArI2lmbmRlZiBfX0FTU0VNQkxZX18KPiArdm9pZCBfc3BhY2Vt aXRfazNfd2FybV9zdGFydCh2b2lkKTsKPiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyogX19SSVND Vl9TUEFDRU1JVF9LM19BU01fSF9fICovCj4gZGlmZiAtLWdpdCBhL3BsYXRmb3JtL2dlbmVyaWMv c3BhY2VtaXQvazMuYyBiL3BsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvazMuYwo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAuLjMxOGFhOWU3Cj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL3BsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvazMuYwo+IEBAIC0wLDAgKzEsMjY0IEBA Cj4gKy8qCj4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UKPiArICoK PiArICogQ29weXJpZ2h0IChjKSAyMDI2IFNwYWNlbWlUCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICAg WGlhbmJpbiBaaHUgPHhpYW5iaW4uemh1QGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICogICBUcm95 IE1pdGNoZWxsIDx0cm95Lm1pdGNoZWxsQGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICovCj4gKwo+ ICsjaW5jbHVkZSA8cGxhdGZvcm1fb3ZlcnJpZGUuaD4KPiArI2luY2x1ZGUgPHNiaS9yaXNjdl9p by5oPgo+ICsjaW5jbHVkZSA8c2JpL3NiaV9jb25zb2xlLmg+Cj4gKyNpbmNsdWRlIDxzYmkvc2Jp X3RpbWVyLmg+Cj4gKyNpbmNsdWRlIDxzcGFjZW1pdC9rMy5oPgo+ICsjaW5jbHVkZSA8c3BhY2Vt aXQvazNfYXNtLmg+Cj4gKyNpbmNsdWRlIDxzcGFjZW1pdC9zcGFjZW1pdC5oPgo+ICsKPiArI2Rl ZmluZSBQTEFURk9STV9NQVhfQ1BVUwkJCTE2Cj4gKwo+ICsvKgo+ICsgKiBNYXhpbXVtIHRpbWUg dG8gd2FpdCBmb3IgZWFjaCBzZWNvbmRhcnkgaGFydCB0byBlbnRlciBXRkkgYWZ0ZXIgaXQgaXMK PiArICogd29rZW4gZHVyaW5nIGNvbGQgYm9vdC4gVXNlIHRoZSBwbGF0Zm9ybSB0aW1lciBzbyB0 aGUgdGltZW91dCBkb2VzIG5vdAo+ICsgKiBkZXBlbmQgb24gQ1BVIGZyZXF1ZW5jeSBvciBNTUlP IGxhdGVuY3kuCj4gKyAqLwo+ICsjZGVmaW5lIEhBUlRfV0ZJX1RJTUVPVVRfTVMJCQkxMDAKPiAr Cj4gK3N0YXRpYyBjb25zdCBpbnQgY2NpX21hcFtdID0gewo+ICsJUExBVF9DQ0lfSzNfQUlETUFf SUZBQ0VfSVgsCj4gKwlQTEFUX0NDSV9LM19DTFVTVEVSMF9JRkFDRV9JWCwKPiArCVBMQVRfQ0NJ X0szX0NMVVNURVIxX0lGQUNFX0lYLAo+ICsJUExBVF9DQ0lfSzNfQ0xVU1RFUjJfMF9JRkFDRV9J WCwKPiArCVBMQVRfQ0NJX0szX0NMVVNURVIyXzFfSUZBQ0VfSVgsCj4gKwlQTEFUX0NDSV9LM19D TFVTVEVSM18wX0lGQUNFX0lYLAo+ICsJUExBVF9DQ0lfSzNfQ0xVU1RFUjNfMV9JRkFDRV9JWCwK PiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGN4X2NhcG1wX2lkbGVfY2Zn W10gPSB7Cj4gKwlQTVVfQ1hfQ0FQTVBfSURMRV9DRkcwLCAgUE1VX0NYX0NBUE1QX0lETEVfQ0ZH MSwKPiArCVBNVV9DWF9DQVBNUF9JRExFX0NGRzIsICBQTVVfQ1hfQ0FQTVBfSURMRV9DRkczLAo+ ICsJUE1VX0NYX0NBUE1QX0lETEVfQ0ZHNCwgIFBNVV9DWF9DQVBNUF9JRExFX0NGRzUsCj4gKwlQ TVVfQ1hfQ0FQTVBfSURMRV9DRkc2LCAgUE1VX0NYX0NBUE1QX0lETEVfQ0ZHNywKPiArCVBNVV9D WF9DQVBNUF9JRExFX0NGRzgsICBQTVVfQ1hfQ0FQTVBfSURMRV9DRkc5LAo+ICsJUE1VX0NYX0NB UE1QX0lETEVfQ0ZHMTAsIFBNVV9DWF9DQVBNUF9JRExFX0NGRzExLAo+ICsJUE1VX0NYX0NBUE1Q X0lETEVfQ0ZHMTIsIFBNVV9DWF9DQVBNUF9JRExFX0NGRzEzLAo+ICsJUE1VX0NYX0NBUE1QX0lE TEVfQ0ZHMTQsIFBNVV9DWF9DQVBNUF9JRExFX0NGRzE1LAo+ICt9Owo+ICsKPiArc3RhdGljIGNv bnN0IHVuc2lnbmVkIGxvbmcgY29yZV9wd3Jkb3duX3JlZ1tdID0gewo+ICsJUE1VX0FQX0NPUkUw X0lETEVfQ0ZHLCAgIFBNVV9BUF9DT1JFMV9JRExFX0NGRywKPiArCVBNVV9BUF9DT1JFMl9JRExF X0NGRywgICBQTVVfQVBfQ09SRTNfSURMRV9DRkcsCj4gKwlQTVVfQVBfQ09SRTRfSURMRV9DRkcs ICAgUE1VX0FQX0NPUkU1X0lETEVfQ0ZHLAo+ICsJUE1VX0FQX0NPUkU2X0lETEVfQ0ZHLCAgIFBN VV9BUF9DT1JFN19JRExFX0NGRywKPiArCVBNVV9DQVBfQ09SRThfSURMRV9DRkcsICBQTVVfQ0FQ X0NPUkU5X0lETEVfQ0ZHLAo+ICsJUE1VX0NBUF9DT1JFMTBfSURMRV9DRkcsIFBNVV9DQVBfQ09S RTExX0lETEVfQ0ZHLAo+ICsJUE1VX0NBUF9DT1JFMTJfSURMRV9DRkcsIFBNVV9DQVBfQ09SRTEz X0lETEVfQ0ZHLAo+ICsJUE1VX0NBUF9DT1JFMTRfSURMRV9DRkcsIFBNVV9DQVBfQ09SRTE1X0lE TEVfQ0ZHLAo+ICt9Owo+ICsKPiArLyogV2FrZXVwIHJlZ2lzdGVycyBpbmRleGVkIGJ5IGhhcnQg SUQgKDAtMTUpLiAqLwo+ICtzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBjb3JlX3dha2V1cF9y ZWdbXSA9IHsKPiArCVBNVV9BUF9DT1JFMF9XQUtFVVAsICAgICBQTVVfQVBfQ09SRTFfV0FLRVVQ LAo+ICsJUE1VX0FQX0NPUkUyX1dBS0VVUCwgICAgIFBNVV9BUF9DT1JFM19XQUtFVVAsCj4gKwlQ TVVfQVBfQ09SRTRfV0FLRVVQLCAgICAgUE1VX0FQX0NPUkU1X1dBS0VVUCwKPiArCVBNVV9BUF9D T1JFNl9XQUtFVVAsICAgICBQTVVfQVBfQ09SRTdfV0FLRVVQLAo+ICsJUE1VX0NBUF9DT1JFOF9X QUtFVVAsICAgIFBNVV9DQVBfQ09SRTlfV0FLRVVQLAo+ICsJUE1VX0NBUF9DT1JFMTBfV0FLRVVQ LCAgIFBNVV9DQVBfQ09SRTExX1dBS0VVUCwKPiArCVBNVV9DQVBfQ09SRTEyX1dBS0VVUCwgICBQ TVVfQ0FQX0NPUkUxM19XQUtFVVAsCj4gKwlQTVVfQ0FQX0NPUkUxNF9XQUtFVVAsICAgUE1VX0NB UF9DT1JFMTVfV0FLRVVQLAo+ICt9Owo+ICsKPiArLyoKPiArICogV0ZJIGlkbGUgc3RhdHVzIHJl Z2lzdGVycyBhbmQgcGVyLWhhcnQgbWFzayBiaXRzLiAgRWFjaCBoYXJ0IGhhcyBhCj4gKyAqIGRl ZGljYXRlZCBiaXQgaW4gb25lIG9mIHR3byBzdGF0dXMgcmVnaXN0ZXJzIChYMTAwIGhhcnRzIDAt NyBpbgo+ICsgKiBQTVVfQVBfWDEwMF9JRExFX1NUQVRVUywgQTEwMCBoYXJ0cyA4LTE1IGluIFBN VV9BUF9BMTAwX0lETEVfU1RBVFVTKS4KPiArICogSW5kZXggMCBpcyB1bnVzZWQg4oCUIHRoZSBi b290IGhhcnQgbmV2ZXIgd2FpdHMgb24gaXRzZWxmLgo+ICsgKi8KPiArc3RhdGljIGNvbnN0IHVu c2lnbmVkIGxvbmcgd2ZpX3N0YXR1c19yZWdbXSA9IHsKPiArCTAsCj4gKwlQTVVfQVBfWDEwMF9J RExFX1NUQVRVUywgUE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsCj4gKwlQTVVfQVBfWDEwMF9JRExF X1NUQVRVUywgUE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsCj4gKwlQTVVfQVBfWDEwMF9JRExFX1NU QVRVUywgUE1VX0FQX1gxMDBfSURMRV9TVEFUVVMsCj4gKwlQTVVfQVBfWDEwMF9JRExFX1NUQVRV UywKPiArCVBNVV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywK PiArCVBNVV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKPiAr CVBNVV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKPiArCVBN VV9BUF9BMTAwX0lETEVfU1RBVFVTLCBQTVVfQVBfQTEwMF9JRExFX1NUQVRVUywKPiArfTsKPiAr c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgd2ZpX3N0YXR1c19tYXNrW10gPSB7Cj4gKwkwLAo+ ICsJQklUKDcpLCAgQklUKDEwKSwgQklUKDEzKSwgQklUKDIwKSwKPiArCUJJVCgyMyksIEJJVCgy NiksIEJJVCgyOSksCj4gKwlCSVQoNCksICBCSVQoNyksICBCSVQoMTApLCBCSVQoMTMpLAo+ICsJ QklUKDIwKSwgQklUKDIzKSwgQklUKDI2KSwgQklUKDI5KSwKPiArfTsKPiArCj4gKy8qCj4gKyAq IENsZWFyIHRoZSBwb3dlci1kb3duIGJpdHMgZm9yIGJvdGggdGhlIGNvcmUgYW5kIGl0cyBjbHVz dGVyIHNvIHRoYXQKPiArICogdGhlIGhhcnQgZG9lcyBub3QgdHJpZ2dlciBhIHBvd2VyLWRvd24g c2VxdWVuY2Ugb24gV0ZJLiAgQ2FsbGVkIGR1cmluZwo+ICsgKiBjb2xkIGJvb3QgdG8gZW5zdXJl IGNvcmVzIGFuZCBjbHVzdGVycyBzdGF5IHBvd2VyZWQgd2hpbGUgU0JJIGluaXRpYWxpemVzLgo+ ICsgKi8KPiArc3RhdGljIHZvaWQgc3BhY2VtaXRfZGlzYWJsZV9wd3Jkb3duX2NvcmUodTMyIGhh cnRpZCkKPiArewo+ICsJdW5zaWduZWQgaW50IHZhbHVlOwo+ICsKPiArCWlmIChoYXJ0aWQgPj0g YXJyYXlfc2l6ZShjeF9jYXBtcF9pZGxlX2NmZykpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXZhbHVl ID0gcmVhZGwoKHZvaWQgKikodW5zaWduZWQgbG9uZyljeF9jYXBtcF9pZGxlX2NmZ1toYXJ0aWRd KTsKPiArCXZhbHVlICY9IH5DTFVTVEVSX1BXUl9ET1dOX1ZBTFVFOwo+ICsJd3JpdGVsKHZhbHVl LCAodm9pZCAqKSh1bnNpZ25lZCBsb25nKWN4X2NhcG1wX2lkbGVfY2ZnW2hhcnRpZF0pOwo+ICsK PiArCXZhbHVlID0gcmVhZGwoKHZvaWQgKikodW5zaWduZWQgbG9uZyljb3JlX3B3cmRvd25fcmVn W2hhcnRpZF0pOwo+ICsJdmFsdWUgJj0gflBNVV9BUF9JRExFX1BXUkRPV05fSzNfTUFTSzsKPiAr CXdyaXRlbCh2YWx1ZSwgKHZvaWQgKikodW5zaWduZWQgbG9uZyljb3JlX3B3cmRvd25fcmVnW2hh cnRpZF0pOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBQZXItaGFydCBoYXJkd2FyZSBpbml0aWFsaXph dGlvbiwgbWlycm9yaW5nIHdoYXQgd2FybS1ib290IGhhcnRzIHByZXZpb3VzbHkKPiArICogZGlk IGluIGFzc2VtYmx5IGJlZm9yZSBlbnRlcmluZyBDIGNvZGUuICBDYWxsZWQgb24gZXZlcnkgaGFy dCBvbiBib3RoIGNvbGQKPiArICogYW5kIHdhcm0gYm9vdCBwYXRocy4KPiArICoKPiArICogMS4g UE1BOiBzZXQgYXVkaW8gYnVmZmVyIChiaXRzIFs1NTo0OF0pIGNhY2hlYWJsZSBhbmQgWElQCj4g KyAqICAgIHJlZ2lvbiAoYml0cyBbMjM6MTZdKSBhcyBJTyBiZWZvcmUgZW5hYmxpbmcgZGNhY2hl Lgo+ICsgKiAyLiBFbmFibGUgZGNhY2hlL2ljYWNoZSBhbmQgb3RoZXIgQ1BVIGZlYXR1cmVzIChN U0VUVVApLgo+ICsgKiAzLiBTZXQgc21wZW5beF0gaW4gTUwyU0VUVVAgdG8gZW5hYmxlIEwxIEQt Y2FjaGUgc25vb3BpbmcgYW5kIHByZWZldGNoLgo+ICsgKiA0LiBFbmFibGUgSCBleHRlbnNpb24g aW4gTUlTQSAoWDEwMCBvbmx5OyBub3QgaW1wbGVtZW50ZWQgb24gQTEwMCkuCj4gKyAqLwo+ICtz dGF0aWMgdm9pZCBzcGFjZW1pdF9rM19oYXJ0X2luaXQodTMyIGhhcnRpZCkKPiArewo+ICsJY3Ny X2NsZWFyKENTUl9QTUFDRkcwLAo+ICsJCSAgKHVuc2lnbmVkIGxvbmcpUE1BQ0ZHMF9BVURJT19C VUZfRklFTERfTUFTSwo+ICsJCSAgPDwgUE1BQ0ZHMF9BVURJT19CVUZfRklFTERfU0hJRlQpOwo+ ICsJY3NyX3NldChDU1JfUE1BQ0ZHMCwKPiArCQkodW5zaWduZWQgbG9uZylQTUFDRkcwX0FVRElP X0JVRl9BVFRSX0NBQ0hFQUJMRQo+ICsJCTw8IFBNQUNGRzBfQVVESU9fQlVGX0ZJRUxEX1NISUZU KTsKPiArCWNzcl9jbGVhcihDU1JfUE1BQ0ZHMCwgUE1BQ0ZHMF9YSVBfRklFTERfQ0xFQVIpOwo+ ICsJY3NyX3NldChDU1JfUE1BQ0ZHMCwgUE1BQ0ZHMF9YSVBfQVRUUl9JTyk7Cj4gKwlhc20gdm9s YXRpbGUoInNmZW5jZS52bWEiIDogOiA6ICJtZW1vcnkiKTsKPiArCj4gKwljc3Jfc2V0KENTUl9N U0VUVVAsIE1TRVRVUF9ERSB8IE1TRVRVUF9JRSB8IE1TRVRVUF9CUEUgfAo+ICsJCU1TRVRVUF9Q RkUgfCBNU0VUVVBfTU1FIHwgTVNFVFVQX0VDQ0UpOwo+ICsJY3NyX3NldChDU1JfTUwyU0VUVVAs IDEgPDwgKGhhcnRpZCAlIFBMQVRGT1JNX01BWF9DUFVTX1BFUl9DTFVTVEVSKSk7Cj4gKwljc3Jf c2V0KENTUl9NTDJTRVRVUCwgTUwyU0VUVVBfSVBSRiB8IE1MMlNFVFVQX1RQUkYpOwo+ICsJY3Ny X3NldChDU1JfTUwySElOVCwgTUwySElOVF9UUkFDRV9UT1BfSUNHRU4pOwo+ICsKPiArCWlmICho YXJ0aWQgPCBQTEFURk9STV9BMTAwX0ZJUlNUX0lEKSB7Cj4gKwkJdW5zaWduZWQgbG9uZyBtaXNh ID0gY3NyX3JlYWQoQ1NSX01JU0EpOwo+ICsKPiArCQkvKgo+ICsJCSAqIE1JU0EuSCBpcyB3cml0 YWJsZSBvbiBLMyBYMTAwIGNvcmVzOiB0aGUgSCBleHRlbnNpb24gaXMKPiArCQkgKiBpbXBsZW1l bnRlZCBidXQgZGlzYWJsZWQgb3V0IG9mIHJlc2V0LCBhbmQgTS1tb2RlIG11c3QKPiArCQkgKiBl eHBsaWNpdGx5IHNldCB0aGlzIGJpdCB0byBlbmFibGUgaHlwZXJ2aXNvciBzdXBwb3J0Lgo+ICsJ CSAqIEExMDAgY29yZXMgZG8gbm90IGltcGxlbWVudCBILCBzbyB0aGlzIHdyaXRlIGlzIFgxMDAt b25seS4KPiArCQkgKi8KPiArCQltaXNhIHw9IDFVTCA8PCAoJ0gnIC0gJ0EnKTsKPiArCQljc3Jf d3JpdGUoQ1NSX01JU0EsIG1pc2EpOwo+ICsJfQo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBPbmUtdGlt ZSBwbGF0Zm9ybSBzZXR1cCBydW4gYnkgdGhlIGJvb3QgaGFydCBkdXJpbmcgY29sZCBib290Ogo+ ICsgKiBzZXQgd2FybS1ib290IGVudHJ5IGZvciBhbGwgZm91ciBjbHVzdGVycywgZW5hYmxlIEND SSBzbm9vcGluZywKPiArICogYW5kIHdha2UgYWxsIG5vbi1ib290IGhhcnRzICgxLTE1KSBzbyB0 aGV5IGVudGVyIFdGSSBhbmQgd2FpdAo+ICsgKiBmb3IgdGhlIGtlcm5lbCB0byBicmluZyB0aGVt IG9ubGluZS4KPiArICovCj4gK3N0YXRpYyB2b2lkIHNwYWNlbWl0X2szX3ByZV9pbml0KHZvaWQp Cj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgZW50cnkgPSAodW5zaWduZWQgbG9uZykmX3NwYWNlbWl0 X2szX3dhcm1fc3RhcnQ7Cj4gKwlpbnQgaTsKPiArCj4gKwl3cml0ZWwoKHUzMillbnRyeSwgKHZv aWQgKikodW5zaWduZWQgbG9uZylDMF9SVkJBRERSX0xPX0FERFIpOwo+ICsJd3JpdGVsKCh1MzIp KGVudHJ5ID4+IDMyKSwgKHZvaWQgKikodW5zaWduZWQgbG9uZylDMF9SVkJBRERSX0hJX0FERFIp Owo+ICsKPiArCXdyaXRlbCgodTMyKWVudHJ5LCAodm9pZCAqKSh1bnNpZ25lZCBsb25nKUMxX1JW QkFERFJfTE9fQUREUik7Cj4gKwl3cml0ZWwoKHUzMikoZW50cnkgPj4gMzIpLCAodm9pZCAqKSh1 bnNpZ25lZCBsb25nKUMxX1JWQkFERFJfSElfQUREUik7Cj4gKwo+ICsJd3JpdGVsKCh1MzIpZW50 cnksICh2b2lkICopKHVuc2lnbmVkIGxvbmcpQzJfUlZCQUREUl9MT19BRERSKTsKPiArCXdyaXRl bCgodTMyKShlbnRyeSA+PiAzMiksICh2b2lkICopKHVuc2lnbmVkIGxvbmcpQzJfUlZCQUREUl9I SV9BRERSKTsKPiArCj4gKwl3cml0ZWwoKHUzMillbnRyeSwgKHZvaWQgKikodW5zaWduZWQgbG9u ZylDM19SVkJBRERSX0xPX0FERFIpOwo+ICsJd3JpdGVsKCh1MzIpKGVudHJ5ID4+IDMyKSwgKHZv aWQgKikodW5zaWduZWQgbG9uZylDM19SVkJBRERSX0hJX0FERFIpOwo+ICsKPiArCWZvciAoaSA9 IDA7IGkgPCBhcnJheV9zaXplKGNjaV9tYXApOyBpKyspCj4gKwkJY2NpX2VuYWJsZV9zbm9vcF9k dm1fcmVxcyhjY2lfbWFwLCBpKTsKPiArCj4gKwkvKiBDbGVhciBjb3JlIGFuZCBjbHVzdGVyIHBv d2VyLWRvd24gdm90ZXMgc28gV0ZJIGRvZXMgbm90IHRyaWdnZXIgcG93ZXItZG93bi4gKi8KPiAr CWZvciAoaSA9IDA7IGkgPCBQTEFURk9STV9NQVhfQ1BVUzsgaSsrKQo+ICsJCXNwYWNlbWl0X2Rp c2FibGVfcHdyZG93bl9jb3JlKGkpOwo+ICsKPiArCS8qCj4gKwkgKiBXYWtlIHVwIGFsbCBub24t Ym9vdCBoYXJ0cyAoMS0xNSkuICBFYWNoIGhhcnQgTiBoYXMgYSBkZWRpY2F0ZWQgUE1VCj4gKwkg KiB3YWtldXAgcmVnaXN0ZXIgKFBNVV9BUC9DQVBfQ09SRW5fV0FLRVVQKS4gIFdyaXRpbmcgQklU KE4pIHRvIGhhcnQgTidzCj4gKwkgKiByZWdpc3RlciB0cmlnZ2VycyB0aGUgd2FrZXVwIHB1bHNl IGZvciB0aGF0IGhhcnQuICBUaGlzIGlzIGNvbmZpcm1lZCBieQo+ICsJICogaGFyZHdhcmU6IHRo ZSByZWdpc3RlciBhZGRyZXNzIHNlbGVjdHMgdGhlIHRhcmdldCBoYXJ0LCBhbmQgdGhlIHZhbHVl Cj4gKwkgKiB3cml0dGVuIG11c3QgaGF2ZSBiaXQgTiBzZXQgKG5vdCBhIGZpeGVkIHRyaWdnZXIg Yml0KS4KPiArCSAqIFNlZSBLMyBVc2VyIE1hbnVhbCwgIjE2IFBlcmlwaGVyYWxzIC8gUG93ZXIg TWFuYWdlbWVudCAvIFdha2V1cCBDb3JlIi4KPiArCSAqLwo+ICsJZm9yIChpID0gMTsgaSA8IGFy cmF5X3NpemUoY29yZV93YWtldXBfcmVnKTsgaSsrKQo+ICsJCXdyaXRlbCgxIDw8IGksICh2b2lk ICopKHVuc2lnbmVkIGxvbmcpY29yZV93YWtldXBfcmVnW2ldKTsKPiArCj4gKwkvKgo+ICsJICog V2FpdCBmb3IgZWFjaCBub24tYm9vdCBoYXJ0IHRvIGVudGVyIFdGSS4gIFN0YXR1cyBiaXQgcG9z aXRpb25zIGFyZQo+ICsJICogbm9uLXVuaWZvcm0gKHNlZSBrMy5oKSwgc28gdXNlIHRoZSBmaWxl LXNjb3BlIGxvb2t1cCB0YWJsZXMuCj4gKwkgKi8KPiArCWZvciAoaSA9IDE7IGkgPCBQTEFURk9S TV9NQVhfQ1BVUzsgaSsrKSB7Cj4gKwkJdTY0IGRlYWRsaW5lID0gc2JpX3RpbWVyX3ZhbHVlX2Fm dGVyX21zZWNzKEhBUlRfV0ZJX1RJTUVPVVRfTVMpOwo+ICsKPiArCQl3aGlsZSAoIShyZWFkbCgo dm9pZCAqKSh1bnNpZ25lZCBsb25nKXdmaV9zdGF0dXNfcmVnW2ldKSAmIHdmaV9zdGF0dXNfbWFz a1tpXSkpIHsKPiArCQkJaWYgKHNiaV90aW1lcl92YWx1ZSgpID49IGRlYWRsaW5lKSB7Cj4gKwkJ CQlzYmlfcHJpbnRmKCJ3YXJuOiBoYXJ0ICVkIGRpZCBub3QgZW50ZXIgV0ZJXG4iLCBpKTsKPiAr CQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwkJfQo+ICsJfQo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBQbGF0 Zm9ybSBlYXJseSBpbml0aWFsaXphdGlvbi4KPiArICovCj4gK3N0YXRpYyBpbnQgc3BhY2VtaXRf azNfZWFybHlfaW5pdChib29sIGNvbGRfYm9vdCkKPiArewo+ICsJaW50IHJjOwo+ICsKPiArCWlm IChjb2xkX2Jvb3QpCj4gKwkJc3BhY2VtaXRfazNfcHJlX2luaXQoKTsKPiArCj4gKwlyYyA9IGdl bmVyaWNfZWFybHlfaW5pdChjb2xkX2Jvb3QpOwo+ICsJaWYgKHJjKQo+ICsJCXJldHVybiByYzsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgc3BhY2VtaXRfY29sZF9i b290X2FsbG93ZWQodTMyIGhhcnRpZCkKPiArewo+ICsJLyoKPiArCSAqIFJ1biBwZXItaGFydCBo YXJkd2FyZSBpbml0IChQTUEsIGRjYWNoZS9pY2FjaGUsIGFuZCBMMSBELWNhY2hlCj4gKwkgKiBz bm9vcCBlbmFibGUpIGhlcmUgc28gaXQgZXhlY3V0ZXMgb24gZXZlcnkgaGFydCBiZWZvcmUgYW55 IFNCSQo+ICsJICogY29kZSBydW5zLiAgY29sZF9ib290X2FsbG93ZWQgaXMgdGhlIGVhcmxpZXN0 IHBlci1oYXJ0IGhvb2sKPiArCSAqIGF2YWlsYWJsZSBpbiB0aGUgZ2VuZXJpYyBwbGF0Zm9ybS4K PiArCSAqLwo+ICsJc3BhY2VtaXRfazNfaGFydF9pbml0KGhhcnRpZCk7CgpNdXN0IG5vdCBydW4g YW55dGhpbmcgd2l0aCBzaWRlLWVmZmVjdHMuIFB1dCB0aGlzIGluaXQgc29tZXdoZXJlIGVsc2Uu IFRoZQpmdW5jdGlvbiBzaG91bGQgYmUgInB1cmUiIGFzIGl0cyBwcm90b3R5cGUgc2F5cy4gTG9v a3MgbGlrZSBLMSBjb2RlIGhhcwp0aGUgc2FtZSBpc3N1ZS4gTmVlZCB0byBmaXggdGhhdCBhcyB3 ZWxsLgoKPiArCj4gKwlyZXR1cm4gIWhhcnRpZDsKPiArfQo+ICsKPiArc3RhdGljIGludCBzcGFj ZW1pdF9rM19wbGF0Zm9ybV9pbml0KGNvbnN0IHZvaWQgKmZkdCwgaW50IG5vZGVvZmYsCj4gKwkJ CQkgICAgIGNvbnN0IHN0cnVjdCBmZHRfbWF0Y2ggKm1hdGNoKQo+ICt7Cj4gKwlnZW5lcmljX3Bs YXRmb3JtX29wcy5lYXJseV9pbml0ID0gc3BhY2VtaXRfazNfZWFybHlfaW5pdDsKPiArCWdlbmVy aWNfcGxhdGZvcm1fb3BzLmNvbGRfYm9vdF9hbGxvd2VkID0gc3BhY2VtaXRfY29sZF9ib290X2Fs bG93ZWQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZmR0X21hdGNoIHNwYWNlbWl0X2szX21hdGNoW10gPSB7Cj4gKwl7IC5jb21wYXRpYmxlID0gInNw YWNlbWl0LGszIiB9LAo+ICsJeyAvKiBzZW50aW5lbCAqLyB9Cj4gK307Cj4gKwo+ICtjb25zdCBz dHJ1Y3QgZmR0X2RyaXZlciBzcGFjZW1pdF9rMyA9IHsKPiArCS5tYXRjaF90YWJsZSA9IHNwYWNl bWl0X2szX21hdGNoLAo+ICsJLmluaXQgPSBzcGFjZW1pdF9rM19wbGF0Zm9ybV9pbml0LAo+ICt9 Owo+IGRpZmYgLS1naXQgYS9wbGF0Zm9ybS9nZW5lcmljL3NwYWNlbWl0L2szX2FzbS5TIGIvcGxh dGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9rM19hc20uUwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMDAuLmZlNDVjY2E2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BsYXRmb3Jt L2dlbmVyaWMvc3BhY2VtaXQvazNfYXNtLlMKPiBAQCAtMCwwICsxLDMzIEBACj4gKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UgKi8KPiArLyoKPiArICogQ29weXJpZ2h0 IChjKSAyMDI2IFNwYWNlbWlUCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICAgWGlhbmJpbiBaaHUgPHhp YW5iaW4uemh1QGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICogICBUcm95IE1pdGNoZWxsIDx0cm95 Lm1pdGNoZWxsQGxpbnV4LnNwYWNlbWl0LmNvbT4KPiArICovCj4gKwo+ICsjZGVmaW5lIF9fQVNT RU1CTFlfXwo+ICsjaW5jbHVkZSA8c3BhY2VtaXQvY29tbW9uLmg+Cj4gKyNpbmNsdWRlIDxzcGFj ZW1pdC9rMy5oPgo+ICsKPiArCS5zZWN0aW9uIC5lbnRyeSwgImF4IiwgJXByb2diaXRzCj4gKwku YWxpZ24gMwo+ICsJLmdsb2JsIF9zcGFjZW1pdF9rM193YXJtX3N0YXJ0Cj4gK19zcGFjZW1pdF9r M193YXJtX3N0YXJ0Ogo+ICsJLyogRW5hYmxlIGRjYWNoZSwgaWNhY2hlLCBhbmQgQ1BVIGZlYXR1 cmVzICovCj4gKwlsaQl0MCwgTVNFVFVQX0JPT1RfRkxBR1MKPiArCWNzcnMJQ1NSX01TRVRVUCwg dDAKPiArCj4gKwkvKgo+ICsJICogU2V0IHNtcGVuW3hdIGluIE1MMlNFVFVQIHRvIGVuYWJsZSBM MSBELWNhY2hlIHNub29waW5nIGZvciB0aGlzCj4gKwkgKiBjb3JlLCBzbyB0aGUgaGFyZHdhcmUg bWFpbnRhaW5zIGNvaGVyZW5jeSBiZXR3ZWVuIHRoaXMgY29yZSdzIEwxCj4gKwkgKiBELWNhY2hl IGFuZCBhbGwgb3RoZXIgY2FjaGVzIGluIHRoZSBzeXN0ZW0uCj4gKwkgKiBUaGUgYml0IHBvc2l0 aW9uIGlzIDEgPDwgKGhhcnRpZCAlIFBMQVRGT1JNX01BWF9DUFVTX1BFUl9DTFVTVEVSKS4KPiAr CSAqLwo+ICsJY3Nycgl0MCwgbWhhcnRpZAo+ICsJYW5kaQl0MCwgdDAsIChQTEFURk9STV9NQVhf Q1BVU19QRVJfQ0xVU1RFUiAtIDEpCj4gKwlsaQl0MSwgMQo+ICsJc2xsCXQxLCB0MSwgdDAKPiAr CWNzcnMJQ1NSX01MMlNFVFVQLCB0MQo+ICsKPiArCWoJX3N0YXJ0X3dhcm0KPiBkaWZmIC0tZ2l0 IGEvcGxhdGZvcm0vZ2VuZXJpYy9zcGFjZW1pdC9vYmplY3RzLm1rIGIvcGxhdGZvcm0vZ2VuZXJp Yy9zcGFjZW1pdC9vYmplY3RzLm1rCj4gaW5kZXggODMwOWFkMWYuLjI4MjU0M2I1IDEwMDY0NAo+ IC0tLSBhL3BsYXRmb3JtL2dlbmVyaWMvc3BhY2VtaXQvb2JqZWN0cy5tawo+ICsrKyBiL3BsYXRm b3JtL2dlbmVyaWMvc3BhY2VtaXQvb2JqZWN0cy5tawo+IEBAIC01LDMgKzUsNSBAQAo+ICAgcGxh dGZvcm0tb2Jqcy0kKENPTkZJR19QTEFURk9STV9TUEFDRU1JVCkgKz0gc3BhY2VtaXQvc3BhY2Vt aXQubwo+ICAgY2FycmF5LXBsYXRmb3JtX292ZXJyaWRlX21vZHVsZXMtJChDT05GSUdfUExBVEZP Uk1fU1BBQ0VNSVRfSzEpICs9IHNwYWNlbWl0X2sxCj4gICBwbGF0Zm9ybS1vYmpzLSQoQ09ORklH X1BMQVRGT1JNX1NQQUNFTUlUX0sxKSArPSBzcGFjZW1pdC9rMS5vCj4gK2NhcnJheS1wbGF0Zm9y bV9vdmVycmlkZV9tb2R1bGVzLSQoQ09ORklHX1BMQVRGT1JNX1NQQUNFTUlUX0szKSArPSBzcGFj ZW1pdF9rMwo+ICtwbGF0Zm9ybS1vYmpzLSQoQ09ORklHX1BMQVRGT1JNX1NQQUNFTUlUX0szKSAr PSBzcGFjZW1pdC9rMy5vIHNwYWNlbWl0L2szX2FzbS5vCj4gCgpCbwoKLS0gCm9wZW5zYmkgbWFp bGluZyBsaXN0Cm9wZW5zYmlAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL29wZW5zYmkK