From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mga04.intel.com ([192.55.52.120]:7304 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729303AbeKVFVA (ORCPT ); Thu, 22 Nov 2018 00:21:00 -0500 From: "Zhi, Yong" To: 'Hans Verkuil' , "linux-media@vger.kernel.org" , "sakari.ailus@linux.intel.com" CC: "tfiga@chromium.org" , "mchehab@kernel.org" , "hans.verkuil@cisco.com" , "laurent.pinchart@ideasonboard.com" , "Mani, Rajmohan" , "Zheng, Jian Xu" , "Hu, Jerry W" , "Toivonen, Tuukka" , "Qiu, Tian Shu" , "Cao, Bingbu" , "Li, Chao C" Subject: RE: [PATCH v7 03/16] v4l: Add Intel IPU3 meta data uAPI Date: Wed, 21 Nov 2018 18:45:14 +0000 Message-ID: References: <1540851790-1777-1-git-send-email-yong.zhi@intel.com> <1540851790-1777-4-git-send-email-yong.zhi@intel.com> <5a50f882-b370-4b87-0a11-3e472e8d1deb@xs4all.nl> In-Reply-To: <5a50f882-b370-4b87-0a11-3e472e8d1deb@xs4all.nl> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org List-ID: SGksIEhhbnMsDQoNClRoYW5rcyBmb3IgdGhlIHJldmlldy4NCg0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiBGcm9tOiBIYW5zIFZlcmt1aWwgW21haWx0bzpodmVya3VpbEB4czRhbGwu bmxdDQo+IFNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAxNSwgMjAxOCA2OjUxIEFNDQo+IFRvOiBa aGksIFlvbmcgPHlvbmcuemhpQGludGVsLmNvbT47IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y ZzsNCj4gc2FrYXJpLmFpbHVzQGxpbnV4LmludGVsLmNvbQ0KPiBDYzogdGZpZ2FAY2hyb21pdW0u b3JnOyBtY2hlaGFiQGtlcm5lbC5vcmc7IGhhbnMudmVya3VpbEBjaXNjby5jb207DQo+IGxhdXJl bnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbTsgTWFuaSwgUmFqbW9oYW4NCj4gPHJham1vaGFu Lm1hbmlAaW50ZWwuY29tPjsgWmhlbmcsIEppYW4gWHUgPGppYW4ueHUuemhlbmdAaW50ZWwuY29t PjsgSHUsDQo+IEplcnJ5IFcgPGplcnJ5LncuaHVAaW50ZWwuY29tPjsgVG9pdm9uZW4sIFR1dWtr YQ0KPiA8dHV1a2thLnRvaXZvbmVuQGludGVsLmNvbT47IFFpdSwgVGlhbiBTaHUgPHRpYW4uc2h1 LnFpdUBpbnRlbC5jb20+OyBDYW8sDQo+IEJpbmdidSA8YmluZ2J1LmNhb0BpbnRlbC5jb20+OyBM aSwgQ2hhbyBDIDxjaGFvLmMubGlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY3 IDAzLzE2XSB2NGw6IEFkZCBJbnRlbCBJUFUzIG1ldGEgZGF0YSB1QVBJDQo+IA0KPiBPbiAxMC8y OS8xOCAyMzoyMiwgWW9uZyBaaGkgd3JvdGU6DQo+ID4gVGhlc2UgbWV0YSBmb3JtYXRzIGFyZSB1 c2VkIG9uIEludGVsIElQVTMgSW1nVSB2aWRlbyBxdWV1ZXMNCj4gPiB0byBjYXJyeSAzQSBzdGF0 aXN0aWNzIGFuZCBJU1AgcGlwZWxpbmUgcGFyYW1ldGVycy4NCj4gPg0KPiA+IFY0TDJfTUVUQV9G TVRfSVBVM18zQQ0KPiA+IFY0TDJfTUVUQV9GTVRfSVBVM19QQVJBTVMNCj4gPg0KPiA+IFNpZ25l ZC1vZmYtYnk6IFlvbmcgWmhpIDx5b25nLnpoaUBpbnRlbC5jb20+DQo+ID4gU2lnbmVkLW9mZi1i eTogQ2hhbyBDIExpIDxjaGFvLmMubGlAaW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFJh am1vaGFuIE1hbmkgPHJham1vaGFuLm1hbmlAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBEb2N1 bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL21ldGEtZm9ybWF0cy5yc3QgICAgICB8ICAgIDEgKw0K PiA+ICAuLi4vbWVkaWEvdWFwaS92NGwvcGl4Zm10LW1ldGEtaW50ZWwtaXB1My5yc3QgICAgICB8 ICAxODEgKysNCj4gPiAgaW5jbHVkZS91YXBpL2xpbnV4L2ludGVsLWlwdTMuaCAgICAgICAgICAg ICAgICAgICAgfCAyODE5ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gIDMgZmlsZXMgY2hhbmdl ZCwgMzAwMSBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0 aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tZXRhLWludGVsLQ0KPiBpcHUzLnJzdA0KPiA+ICBj cmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xpbnV4L2ludGVsLWlwdTMuaA0KPiA+DQo+ ID4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvbWV0YS1mb3JtYXRz LnJzdA0KPiBiL0RvY3VtZW50YXRpb24vbWVkaWEvdWFwaS92NGwvbWV0YS1mb3JtYXRzLnJzdA0K PiA+IGluZGV4IGNmOTcxZDUuLmVhZmM1MzQgMTAwNjQ0DQo+ID4gLS0tIGEvRG9jdW1lbnRhdGlv bi9tZWRpYS91YXBpL3Y0bC9tZXRhLWZvcm1hdHMucnN0DQo+ID4gKysrIGIvRG9jdW1lbnRhdGlv bi9tZWRpYS91YXBpL3Y0bC9tZXRhLWZvcm1hdHMucnN0DQo+ID4gQEAgLTEyLDYgKzEyLDcgQEAg VGhlc2UgZm9ybWF0cyBhcmUgdXNlZCBmb3IgdGhlIDpyZWY6YG1ldGFkYXRhYA0KPiBpbnRlcmZh Y2Ugb25seS4NCj4gPiAgLi4gdG9jdHJlZTo6DQo+ID4gICAgICA6bWF4ZGVwdGg6IDENCj4gPg0K PiA+ICsgICAgcGl4Zm10LW1ldGEtaW50ZWwtaXB1Mw0KPiA+ICAgICAgcGl4Zm10LW1ldGEtZDR4 eA0KPiA+ICAgICAgcGl4Zm10LW1ldGEtdXZjDQo+ID4gICAgICBwaXhmbXQtbWV0YS12c3AxLWhn bw0KPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1t ZXRhLWludGVsLWlwdTMucnN0DQo+IGIvRG9jdW1lbnRhdGlvbi9tZWRpYS91YXBpL3Y0bC9waXhm bXQtbWV0YS1pbnRlbC1pcHUzLnJzdA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5k ZXggMDAwMDAwMC4uMjNiOTQ1Yg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9Eb2N1bWVu dGF0aW9uL21lZGlhL3VhcGkvdjRsL3BpeGZtdC1tZXRhLWludGVsLWlwdTMucnN0DQo+ID4gQEAg LTAsMCArMSwxODEgQEANCj4gPiArLi4gLSotIGNvZGluZzogdXRmLTg7IG1vZGU6IHJzdCAtKi0N Cj4gPiArDQo+ID4gKy4uIF9pbnRlbC1pcHUzOg0KPiA+ICsNCj4gPg0KPiArKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoq Kg0KPiA+ICtWNEwyX01FVEFfRk1UX0lQVTNfUEFSQU1TICgnaXAzcCcpLCBWNEwyX01FVEFfRk1U X0lQVTNfM0ENCj4gKCdpcDNzJykNCj4gPg0KPiArKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoqKg0KPiA+ICsNCj4gPiAr Li4gYzp0eXBlOjogaXB1M191YXBpX3N0YXRzXzNhDQo+ID4gKw0KPiA+ICszQSBzdGF0aXN0aWNz DQo+ID4gKz09PT09PT09PT09PT0NCj4gPiArDQo+ID4gK0ZvciBJUFUzIEltZ1UsIHRoZSAzQSBz dGF0aXN0aWNzIGFjY2VsZXJhdG9ycyBjb2xsZWN0IGRpZmZlcmVudCBzdGF0aXN0aWNzIG92ZXIN Cj4gPiArYW4gaW5wdXQgYmF5ZXIgZnJhbWUuIFRob3NlIHN0YXRpc3RpY3MsIGRlZmluZWQgaW4g ZGF0YSBzdHJ1Y3QNCj4gPiArOmM6dHlwZTpgaXB1M191YXBpX3N0YXRzXzNhYCwgYXJlIG1ldGEg b3V0cHV0IG9idGFpbmVkIGZyb20gImlwdTMtaW1ndQ0KPiAzYSBzdGF0Ig0KPiANCj4gSSdkIHJl cGhyYXNlIHRoaXM6DQo+IA0KPiBhcmUgb2J0YWluZWQgZnJvbSB0aGUgImlwdTMtaW1ndSAzYSBz dGF0IiBtZXRhZGF0YSBjYXB0dXJlIHZpZGVvIG5vZGUsDQo+IA0KDQpBY2ssIHRoYXQncyBtb3Jl IGNsZWFyIGFuZCBuYXR1cmFsLiANCg0KPiA+ICt2aWRlbyBub2RlLCB3aGljaCBhcmUgdGhlbiBw YXNzZWQgdG8gdXNlciBzcGFjZSBmb3Igc3RhdGlzdGljcyBhbmFseXNpcw0KPiA+ICt1c2luZyA6 Yzp0eXBlOmB2NGwyX21ldGFfZm9ybWF0YCBpbnRlcmZhY2UuDQo+ID4gKw0KPiA+ICtUaGUgc3Rh dGlzdGljcyBjb2xsZWN0ZWQgYXJlIEFXQiAoQXV0by13aGl0ZSBiYWxhbmNlKSBSR0JTIChSZWQs IEdyZWVuLA0KPiBCbHVlIGFuZA0KPiA+ICtTYXR1cmF0aW9uIG1lYXN1cmUpIGNlbGxzLCBBV0Ig ZmlsdGVyIHJlc3BvbnNlLCBBRiAoQXV0by1mb2N1cykgZmlsdGVyDQo+IHJlc3BvbnNlLA0KPiA+ ICthbmQgQUUgKEF1dG8tZXhwb3N1cmUpIGhpc3RvZ3JhbS4NCj4gPiArDQo+ID4gK3N0cnVjdCA6 Yzp0eXBlOmBpcHUzX3VhcGlfNGFfY29uZmlnYCBzYXZlcyBjb25maWd1cmFibGUgcGFyYW1ldGVy cyBmb3IgYWxsDQo+IGFib3ZlLg0KPiA+ICsNCj4gPiArDQo+ID4gKy4uIGNvZGUtYmxvY2s6OiBj DQo+ID4gKw0KPiA+ICsNCj4gPiArICAgICBzdHJ1Y3QgaXB1M191YXBpX3N0YXRzXzNhIHsNCj4g PiArCXN0cnVjdCBpcHUzX3VhcGlfYXdiX3Jhd19idWZmZXIgYXdiX3Jhd19idWZmZXINCj4gPiAr CQkgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlf YWVfcmF3X2J1ZmZlcl9hbGlnbmVkDQo+ID4gKwkJCWFlX3Jhd19idWZmZXJbSVBVM19VQVBJX01B WF9TVFJJUEVTXTsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfYWZfcmF3X2J1ZmZlciBhZl9yYXdf YnVmZmVyOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9hd2JfZnJfcmF3X2J1ZmZlciBhd2JfZnJf cmF3X2J1ZmZlcjsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfNGFfY29uZmlnIHN0YXRzXzRhX2Nv bmZpZzsNCj4gPiArCV9fdTMyIGFlX2pvaW5fYnVmZmVyczsNCj4gPiArCV9fdTggcGFkZGluZ1sy OF07DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3N0YXRzXzNhX2J1YmJsZV9pbmZvX3Blcl9zdHJp cGUNCj4gPiArCQkJc3RhdHNfM2FfYnViYmxlX3Blcl9zdHJpcGU7DQo+ID4gKwlzdHJ1Y3QgaXB1 M191YXBpX2ZmX3N0YXR1cyBzdGF0c18zYV9zdGF0dXM7DQo+ID4gKyAgICAgfSBfX3BhY2tlZDsN Cj4gPiArDQo+ID4gKw0KPiA+ICsuLiBjOnR5cGU6OiBpcHUzX3VhcGlfcGFyYW1zDQo+ID4gKw0K PiA+ICtQaXBlbGluZSBwYXJhbWV0ZXJzDQo+ID4gKz09PT09PT09PT09PT09PT09PT0NCj4gPiAr DQo+ID4gK0lQVTMgcGlwZWxpbmUgaGFzIGEgbnVtYmVyIG9mIGltYWdlIHByb2Nlc3Npbmcgc3Rh Z2VzLCBlYWNoIG9mIHdoaWNoDQo+IHRha2VzIGENCj4gPiArc2V0IG9mIHBhcmFtZXRlcnMgYXMg aW5wdXQuIFRoZSBtYWpvciBzdGFnZXMgb2YgcGlwZWxpbmVzIGFyZSBzaG93biBoZXJlOg0KPiA+ ICsNCj4gPiArUmF3IHBpeGVscyAtPiBCYXllciBEb3duc2NhbGluZyAtPiBPcHRpY2FsIEJsYWNr IENvcnJlY3Rpb24gLT4NCj4gPiArDQo+ID4gK0xpbmVhcml6YXRpb24gLT4gTGVucyBTaGFkaW5n IENvcnJlY3Rpb24gLT4gV2hpdGUgQmFsYW5jZSAvIEV4cG9zdXJlIC8NCj4gPiArDQo+ID4gK0Zv Y3VzIEFwcGx5IC0+IEJheWVyIE5vaXNlIFJlZHVjdGlvbiAtPiBBTlIgLT4gRGVtb3NhaWNpbmcg LT4gQ29sb3INCj4gPiArDQo+ID4gK0NvcnJlY3Rpb24gTWF0cml4IC0+IEdhbW1hIGNvcnJlY3Rp b24gLT4gQ29sb3IgU3BhY2UgQ29udmVyc2lvbiAtPg0KPiA+ICsNCj4gPiArQ2hyb21hIERvd24g U2NhbGluZyAtPiBDaHJvbWF0aWMgTm9pc2UgUmVkdWN0aW9uIC0+IFRvdGFsIENvbG9yDQo+ID4g Kw0KPiA+ICtDb3JyZWN0aW9uIC0+IFhOUjMgLT4gVE5SIC0+IEREUg0KPiA+ICsNCj4gPiArVGhl IHRhYmxlIGJlbG93IHByZXNlbnRzIGEgZGVzY3JpcHRpb24gb2YgdGhlIGFib3ZlIGFsZ29yaXRo bXMuDQo+ID4gKw0KPiA+ICs9PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ICtOYW1lCQkJ IERlc2NyaXB0aW9uDQo+ID4gKz09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gK09wdGlj YWwgQmxhY2sgQ29ycmVjdGlvbiBPcHRpY2FsIEJsYWNrIENvcnJlY3Rpb24gYmxvY2sgc3VidHJh Y3RzIGEgcHJlLQ0KPiBkZWZpbmVkDQo+ID4gKwkJCSB2YWx1ZSBmcm9tIHRoZSByZXNwZWN0aXZl IHBpeGVsIHZhbHVlcyB0byBvYnRhaW4NCj4gYmV0dGVyDQo+ID4gKwkJCSBpbWFnZSBxdWFsaXR5 Lg0KPiA+ICsJCQkgRGVmaW5lZCBpbiA6Yzp0eXBlOmBpcHUzX3VhcGlfb2JncmlkX3BhcmFtYC4N Cj4gPiArTGluZWFyaXphdGlvbgkJIFRoaXMgYWxnbyBibG9jayB1c2VzIGxpbmVhcml6YXRpb24g cGFyYW1ldGVycw0KPiB0bw0KPiA+ICsJCQkgYWRkcmVzcyBub24tbGluZWFyaXR5IHNlbnNvciBl ZmZlY3RzLiBUaGUgTG9va3VwDQo+IHRhYmxlDQo+ID4gKwkJCSB0YWJsZSBpcyBkZWZpbmVkIGlu DQo+ID4gKwkJCSA6Yzp0eXBlOmBpcHUzX3VhcGlfaXNwX2xpbl92bWVtX3BhcmFtc2AuDQo+ID4g K1NIRAkJCSBMZW5zIHNoYWRpbmcgY29ycmVjdGlvbiBpcyB1c2VkIHRvIGNvcnJlY3Qgc3BhdGlh bA0KPiA+ICsJCQkgbm9uLXVuaWZvcm1pdHkgb2YgdGhlIHBpeGVsIHJlc3BvbnNlIGR1ZSB0byBv cHRpY2FsDQo+ID4gKwkJCSBsZW5zIHNoYWRpbmcuIFRoaXMgaXMgZG9uZSBieSBhcHBseWluZyBh IGRpZmZlcmVudA0KPiBnYWluDQo+ID4gKwkJCSBmb3IgZWFjaCBwaXhlbC4gVGhlIGdhaW4sIGJs YWNrIGxldmVsIGV0YyBhcmUNCj4gPiArCQkJIGNvbmZpZ3VyZWQgaW4gOmM6dHlwZTpgaXB1M191 YXBpX3NoZF9jb25maWdfc3RhdGljYC4NCj4gPiArQk5SCQkJIEJheWVyIG5vaXNlIHJlZHVjdGlv biBibG9jayByZW1vdmVzIGltYWdlIG5vaXNlIGJ5DQo+ID4gKwkJCSBhcHBseWluZyBhIGJpbGF0 ZXJhbCBmaWx0ZXIuDQo+ID4gKwkJCSBTZWUgOmM6dHlwZTpgaXB1M191YXBpX2Jucl9zdGF0aWNf Y29uZmlnYCBmb3IgZGV0YWlscy4NCj4gPiArQU5SCQkJIEFkdmFuY2VkIE5vaXNlIFJlZHVjdGlv biBpcyBhIGJsb2NrIGJhc2VkIGFsZ29yaXRobQ0KPiA+ICsJCQkgdGhhdCBwZXJmb3JtcyBub2lz ZSByZWR1Y3Rpb24gaW4gdGhlIEJheWVyIGRvbWFpbi4NCj4gVGhlDQo+ID4gKwkJCSBjb252b2x1 dGlvbiBtYXRyaXggZXRjIGNhbiBiZSBmb3VuZCBpbg0KPiA+ICsJCQkgOmM6dHlwZTpgaXB1M191 YXBpX2Fucl9jb25maWdgLg0KPiA+ICtEZW1vc2FpY2luZwkJIERlbW9zYWljaW5nIGNvbnZlcnRz IHJhdyBzZW5zb3IgZGF0YSBpbg0KPiBCYXllciBmb3JtYXQNCj4gPiArCQkJIGludG8gUkdCIChS ZWQsIEdyZWVuLCBCbHVlKSBwcmVzZW50YXRpb24uIFRoZW4gYWRkDQo+ID4gKwkJCSBvdXRwdXRz IG9mIGVzdGltYXRpb24gb2YgWSBjaGFubmVsIGZvciBmb2xsb3dpbmcNCj4gc3RyZWFtDQo+IA0K PiAiVGhlbiBhZGQgb3V0cHV0cyBvZiBlc3RpbWF0aW9uLi4uIg0KPiANCj4gU2VlbXMgYSBiaXQg Z2FyYmxlZCwgSSdtIG5vdCBxdWl0ZSBzdXJlIHdoYXQgaXMgbWVhbnQgaGVyZS4NCj4gDQoNCldp bGwgcmV3b3JrIHRoZSBhYm92ZSBkZXNjcmlwdGlvbi4NCg0KPiA+ICsJCQkgcHJvY2Vzc2luZyBi eSBGaXJtd2FyZS4gVGhlIHN0cnVjdCBpcyBkZWZpbmVkIGFzDQo+ID4gKwkJCSA6Yzp0eXBlOmBp cHUzX3VhcGlfZG1fY29uZmlnYC4NCj4gPiArQ29sb3IgQ29ycmVjdGlvbgkgQ29sb3IgQ29ycmVj dGlvbiBhbGdvIHRyYW5zZm9ybXMgc2Vuc29yIHNwZWNpZmljDQo+IGNvbG9yDQo+ID4gKwkJCSBz cGFjZSB0byB0aGUgc3RhbmRhcmQgInNSR0IiIGNvbG9yIHNwYWNlLiBUaGlzIGlzDQo+IGRvbmUN Cj4gPiArCQkJIGJ5IGFwcGx5aW5nIDN4MyBtYXRyaXggZGVmaW5lZCBpbg0KPiA+ICsJCQkgOmM6 dHlwZTpgaXB1M191YXBpX2NjbV9tYXRfY29uZmlnYC4NCj4gPiArR2FtbWEgY29ycmVjdGlvbgkg R2FtbWENCj4gY29ycmVjdGlvbiA6Yzp0eXBlOmBpcHUzX3VhcGlfZ2FtbWFfY29uZmlnYCBpcyBh DQo+ID4gKwkJCSBiYXNpYyBub24tbGluZWFyIHRvbmUgbWFwcGluZyBjb3JyZWN0aW9uIHRoYXQg aXMNCj4gPiArCQkJIGFwcGxpZWQgcGVyIHBpeGVsIGZvciBlYWNoIHBpeGVsIGNvbXBvbmVudC4N Cj4gPiArQ1NDCQkJIENvbG9yIHNwYWNlIGNvbnZlcnNpb24gdHJhbnNmb3JtcyBlYWNoIHBpeGVs IGZyb20NCj4gdGhlDQo+ID4gKwkJCSBSR0IgcHJpbWFyeSBwcmVzZW50YXRpb24gdG8gWVVWIChZ IC0gYnJpZ2h0bmVzcywNCj4gPiArCQkJIFVWIC0gTHVtaW5hbmNlKSBwcmVzZW50YXRpb24uIFRo aXMgaXMgZG9uZSBieQ0KPiBhcHBseWluZw0KPiANCj4gVXNlIFk6IGFuZCBVVjogaW5zdGVhZCBv ZiAnLScgdG8gYXZvaWQgaW50ZXJwcmV0aW5nIHRoaXMgYXMgc3Vic3RyYWN0aW9uLg0KPiANCj4g PiArCQkJIGEgM3gzIG1hdHJpeCBkZWZpbmVkIGluDQo+ID4gKwkJCSA6Yzp0eXBlOmBpcHUzX3Vh cGlfY3NjX21hdF9jb25maWdgDQo+ID4gK0NEUwkJCSBDaHJvbWEgZG93biBzYW1wbGluZw0KPiA+ ICsJCQkgQWZ0ZXIgdGhlIENTQyBpcyBwZXJmb3JtZWQsIHRoZSBDaHJvbWEgRG93bg0KPiBTYW1w bGluZw0KPiA+ICsJCQkgaXMgYXBwbGllZCBmb3IgYSBVViBwbGFuZSBkb3duIHNhbXBsaW5nIGJ5 IGEgZmFjdG9yDQo+ID4gKwkJCSBvZiAyIGluIGVhY2ggZGlyZWN0aW9uIGZvciBZVVYgNDoyOjAg dXNpbmcgYSA0eDINCj4gPiArCQkJIGNvbmZpZ3VyYWJsZSBmaWx0ZXIgOmM6dHlwZTpgaXB1M191 YXBpX2Nkc19wYXJhbXNgLg0KPiA+ICtDSE5SCQkJIENocm9tYSBub2lzZSByZWR1Y3Rpb24NCj4g PiArCQkJIFRoaXMgYmxvY2sgcHJvY2Vzc2VzIG9ubHkgdGhlIGNocm9taW5hbmNlIHBpeGVscw0K PiBhbmQNCj4gPiArCQkJIHBlcmZvcm1zIG5vaXNlIHJlZHVjdGlvbiBieSBjbGVhbmluZyB0aGUg aGlnaA0KPiA+ICsJCQkgZnJlcXVlbmN5IG5vaXNlLg0KPiA+ICsJCQkgU2VlIHN0cnVjdCA6Yzp0 eXBlOmBpcHUzX3VhcGlfeXV2cDFfY2hucl9jb25maWdgLg0KPiA+ICtUQ0MJCQkgVG90YWwgY29s b3IgY29ycmVjdGlvbiBhcyBkZWZpbmVkIGluIHN0cnVjdA0KPiA+ICsJCQkgOmM6dHlwZTpgaXB1 M191YXBpX3l1dnAyX3RjY19zdGF0aWNfY29uZmlnYC4NCj4gPiArWE5SMwkJCSBlWHRyZW1lIE5v aXNlIFJlZHVjdGlvbiBWMyBpcyB0aGUgdGhpcmQNCj4gcmV2aXNpb24gb2YNCj4gPiArCQkJIG5v aXNlIHJlZHVjdGlvbiBhbGdvcml0aG0gdXNlZCB0byBpbXByb3ZlIGltYWdlDQo+ID4gKwkJCSBx dWFsaXR5LiBUaGlzIHJlbW92ZXMgdGhlIGxvdyBmcmVxdWVuY3kgbm9pc2UgaW4gdGhlDQo+ID4g KwkJCSBjYXB0dXJlZCBpbWFnZS4gVHdvIHJlbGF0ZWQgc3RydWN0cyBhcmUgIGJlaW5nDQo+IGRl ZmluZWQsDQo+ID4gKwkJCSA6Yzp0eXBlOmBpcHUzX3VhcGlfaXNwX3hucjNfcGFyYW1zYCBmb3Ig SVNQIGRhdGENCj4gbWVtb3J5DQo+ID4gKwkJCSBhbmQgOmM6dHlwZTpgaXB1M191YXBpX2lzcF94 bnIzX3ZtZW1fcGFyYW1zYCBmb3INCj4gdmVjdG9yDQo+ID4gKwkJCSBtZW1vcnkuDQo+ID4gK1RO UgkJCSBUZW1wb3JhbCBOb2lzZSBSZWR1Y3Rpb24gYmxvY2sgY29tcGFyZXMNCj4gc3VjY2Vzc2l2 ZQ0KPiA+ICsJCQkgZnJhbWVzIGluIHRpbWUgdG8gcmVtb3ZlIGFub21hbGllcyAvIG5vaXNlIGlu IHBpeGVsDQo+ID4gKwkJCSB2YWx1ZXMuIDpjOnR5cGU6YGlwdTNfdWFwaV9pc3BfdG5yM192bWVt X3BhcmFtc2ANCj4gYW5kDQo+ID4gKwkJCSA6Yzp0eXBlOmBpcHUzX3VhcGlfaXNwX3RucjNfcGFy YW1zYCBhcmUgZGVmaW5lZCBmb3INCj4gSVNQDQo+ID4gKwkJCSB2ZWN0b3IgYW5kIGRhdGEgbWVt b3J5IHJlc3BlY3RpdmVseS4NCj4gPiArPT09PT09PT09PT09PT09PT09PT09PT09DQo+ID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiAr DQo+ID4gK0EgZmV3IHN0YWdlcyBvZiB0aGUgcGlwZWxpbmUgd2lsbCBiZSBleGVjdXRlZCBieSBm aXJtd2FyZSBydW5uaW5nIG9uIHRoZQ0KPiBJU1ANCj4gPiArcHJvY2Vzc29yLCB3aGlsZSBtYW55 IG90aGVycyB3aWxsIHVzZSBhIHNldCBvZiBmaXhlZCBoYXJkd2FyZSBibG9ja3MgYWxzbw0KPiA+ ICtjYWxsZWQgYWNjZWxlcmF0b3IgY2x1c3RlciAoQUNDKSB0byBjcnVuY2ggcGl4ZWwgZGF0YSBh bmQgcHJvZHVjZSBzdGF0aXN0aWNzLg0KPiA+ICsNCj4gPiArQUNDIHBhcmFtZXRlcnMgYXMgZGVm aW5lZCBieSA6Yzp0eXBlOmBpcHUzX3VhcGlfYWNjX3BhcmFtYCwgY2FuIGJlDQo+IHNlbGVjdGl2 ZWx5DQo+ID4gK2VuYWJsZWQgLyBkaXNhYmxlZCBieSB0aGUgdXNlciBzcGFjZSB0aHJvdWdoDQo+ IHN0cnVjdCA6Yzp0eXBlOmBpcHUzX3VhcGlfZmxhZ3NgDQo+ID4gK2VtYmVkZGVkIGluIDpjOnR5 cGU6YGlwdTNfdWFwaV9wYXJhbXNgIHN0cnVjdHVyZS4gRm9yIHBhcmFtZXRlcnMgdGhhdA0KPiBh cmUgbm90DQo+ID4gK2VuYWJsZWQgYnkgdGhlIHVzZXIgc3BhY2UsIGNvcnJlc3BvbmRpbmcgc3Ry dWN0cyBhcmUgaWdub3JlZCBieSB0aGUgSVNQLg0KPiA+ICsNCj4gPiArQm90aCAzQSBzdGF0aXN0 aWNzIGFuZCBwaXBlbGluZSBwYXJhbWV0ZXJzIGRlc2NyaWJlZCBoZXJlIGFyZSBjbG9zZWx5IHRp ZWQNCj4gdG8NCj4gPiArdGhlIHVuZGVybHlpbmcgY2FtZXJhIHN1Yi1zeXN0ZW0gKENTUykgQVBJ cy4gVGhleSBhcmUgdXN1YWxseSBjb25zdW1lZA0KPiBhbmQNCj4gPiArcHJvZHVjZWQgYnkgZGVk aWNhdGVkIHVzZXIgc3BhY2UgbGlicmFyaWVzIHRoYXQgY29tcHJpc2UgdGhlIGltcG9ydGFudA0K PiB0dW5pbmcNCj4gPiArdG9vbHMsIHRodXMgZnJlZWluZyB0aGUgZGV2ZWxvcGVycyBmcm9tIGJl aW5nIGJvdGhlcmVkIHdpdGggdGhlIGxvdyBsZXZlbA0KPiA+ICtoYXJkd2FyZSBhbmQgYWxnb3Jp dGhtIGRldGFpbHMuDQo+ID4gKw0KPiA+ICtJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBJUFUzIERN QSBvcGVyYXRpb25zIHJlcXVpcmUgdGhlIGFkZHJlc3NlcyBvZiBhbGwNCj4gZGF0YQ0KPiA+ICtz dHJ1Y3R1cmVzICh0aGF0IGluY2x1ZGVzIGJvdGggaW5wdXQgYW5kIG91dHB1dCkgdG8gYmUgYWxp Z25lZCBvbiAzMiBieXRlDQo+ID4gK2JvdW5kYXJpZXMuDQo+ID4gKw0KPiA+ICtUaGUgbWV0YSBk YXRhIDpjOnR5cGU6YGlwdTNfdWFwaV9wYXJhbXNgIHdpbGwgYmUgc2VudCB0byAiaXB1My1pbWd1 DQo+IHBhcmFtZXRlcnMiDQo+ID4gK3ZpZGVvIG5vZGUgaW4gYGBWNEwyX0JVRl9UWVBFX01FVEFf Q0FQVFVSRWBgIGZvcm1hdC4NCj4gPiArDQo+ID4gKy4uIGNvZGUtYmxvY2s6OiBjDQo+ID4gKw0K PiA+ICsgICAgc3RydWN0IGlwdTNfdWFwaV9wYXJhbXMgew0KPiA+ICsJLyogRmxhZ3Mgd2hpY2gg b2YgdGhlIHNldHRpbmdzIGJlbG93IGFyZSB0byBiZSBhcHBsaWVkICovDQo+ID4gKwlzdHJ1Y3Qg aXB1M191YXBpX2ZsYWdzIHVzZSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDMyKSkpOw0KPiA+ICsN Cj4gPiArCS8qIEFjY2VsZXJhdG9yIGNsdXN0ZXIgcGFyYW1ldGVycyAqLw0KPiA+ICsJc3RydWN0 IGlwdTNfdWFwaV9hY2NfcGFyYW0gYWNjX3BhcmFtOw0KPiA+ICsNCj4gPiArCS8qIElTUCB2ZWN0 b3IgYWRkcmVzcyBzcGFjZSBwYXJhbWV0ZXJzICovDQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2lz cF9saW5fdm1lbV9wYXJhbXMgbGluX3ZtZW1fcGFyYW1zOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFw aV9pc3BfdG5yM192bWVtX3BhcmFtcyB0bnIzX3ZtZW1fcGFyYW1zOw0KPiA+ICsJc3RydWN0IGlw dTNfdWFwaV9pc3BfeG5yM192bWVtX3BhcmFtcyB4bnIzX3ZtZW1fcGFyYW1zOw0KPiA+ICsNCj4g PiArCS8qIElTUCBkYXRhIG1lbW9yeSAoRE1FTSkgcGFyYW1ldGVycyAqLw0KPiA+ICsJc3RydWN0 IGlwdTNfdWFwaV9pc3BfdG5yM19wYXJhbXMgdG5yM19kbWVtX3BhcmFtczsNCj4gPiArCXN0cnVj dCBpcHUzX3VhcGlfaXNwX3hucjNfcGFyYW1zIHhucjNfZG1lbV9wYXJhbXM7DQo+ID4gKw0KPiA+ ICsJLyogT3B0aWNhbCBibGFjayBsZXZlbCBjb21wZW5zYXRpb24gKi8NCj4gPiArCXN0cnVjdCBp cHUzX3VhcGlfb2JncmlkX3BhcmFtIG9iZ3JpZF9wYXJhbTsNCj4gPiArICAgIH0gX19wYWNrZWQ7 DQo+ID4gKw0KPiA+ICtJbnRlbCBJUFUzIEltZ1UgdUFQSSBkYXRhIHR5cGVzDQo+ID4gKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gPiArDQo+ID4gKy4uIGtlcm5lbC1kb2M6OiBp bmNsdWRlL3VhcGkvbGludXgvaW50ZWwtaXB1My5oDQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv dWFwaS9saW51eC9pbnRlbC1pcHUzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvaW50ZWwtaXB1My5o DQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi5jMjYwOGI2DQo+ ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9pbnRlbC1pcHUz LmgNCj4gPiBAQCAtMCwwICsxLDI4MTkgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAgKi8NCj4gPiArLyogQ29weXJpZ2h0IChDKSAyMDE3IC0gMjAxOCBJbnRlbCBD b3Jwb3JhdGlvbiAqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfX0lQVTNfVUFQSV9IDQo+ID4gKyNk ZWZpbmUgX19JUFUzX1VBUElfSA0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ DQo+ID4gKw0KPiA+ICsvKioqKioqKioqKioqKioqKioqKioqIEtleSBBY3JvbnltcyAqKioqKioq KioqKioqKioqKioqKioqKioqLw0KPiA+ICsvKg0KPiA+ICsgKiBBQ0MgLSBBY2NlbGVyYXRvciBj bHVzdGVyDQo+ID4gKyAqIEFOUiAtIEFkYXB0aXZlIG5vaXNlIHJlZHVjdGlvbg0KPiA+ICsgKiBB V0JfRlItIEF1dG8gd2hpdGUgYmFsYW5jZSBmaWx0ZXIgcmVzcG9uc2Ugc3RhdGlzdGljcw0KPiA+ ICsgKiBCTlIgLSBCYXllciBub2lzZSByZWR1Y3Rpb24gcGFyYW1ldGVycw0KPiA+ICsgKiBCRFMg LSBCYXllciBkb3duc2NhbGVyIHBhcmFtZXRlcnMNCj4gPiArICogQ0NNIC0gQ29sb3IgY29ycmVj dGlvbiBtYXRyaXggY29lZmZpY2llbnRzDQo+ID4gKyAqIENEUyAtIENocm9tYSBkb3duIHNhbXBs ZQ0KPiA+ICsgKiBDSE5SIC0gQ2hyb21hIG5vaXNlIHJlZHVjdGlvbg0KPiA+ICsgKiBDU0MgLSBD b2xvciBzcGFjZSBjb252ZXJzaW9uDQo+ID4gKyAqIERNIC0gRGUtbW9zYWljDQo+ID4gKyAqIElF RmQgLSBJbWFnZSBlbmhhbmNlbWVudCBmaWx0ZXIgZGlyZWN0ZWQNCj4gPiArICogT2JncmlkIC0g T3B0aWNhbCBibGFjayBsZXZlbCBjb21wZW5zYXRpb24NCj4gPiArICogT1NZUyAtIE91dHB1dCBz eXN0ZW0gY29uZmlndXJhdGlvbg0KPiA+ICsgKiBST0kgLSBSZWdpb24gb2YgaW50ZXJlc3QNCj4g PiArICogU0hEIC0gTGVucyBzaGFkaW5nIGNvcnJlY3Rpb24gdGFibGUNCj4gPiArICogVENDIC0g VG90YWwgY29sb3IgY29ycmVjdGlvbg0KPiA+ICsgKiBZRFMgLSBZIGRvd24gc2FtcGxpbmcNCj4g PiArICogWVRNIC0gWS10b25lIG1hcHBpbmcNCj4gPiArICovDQo+ID4gKw0KPiA+ICsvKg0KPiA+ ICsgKiBJUFUzIERNQSBvcGVyYXRpb25zIHJlcXVpcmUgYnVmZmVycyB0byBiZSBhbGlnbmVkIGF0 DQo+ID4gKyAqIDMyIGJ5dGUgYm91bmRhcmllcw0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKy8qKioq KioqKioqKioqKioqKioqIGlwdTNfdWFwaV9zdGF0c18zYSAqKioqKioqKioqKioqKioqKioqLw0K PiA+ICsNCj4gPiArI2RlZmluZSBJUFUzX1VBUElfTUFYX1NUUklQRVMJCQkJMg0KPiA+ICsjZGVm aW5lIElQVTNfVUFQSV9NQVhfQlVCQkxFX1NJWkUJCQkxMA0KPiA+ICsNCj4gPiArI2RlZmluZSBJ UFUzX1VBUElfR1JJRF9TVEFSVF9NQVNLCQkJKCgxIDw8IDEyKSAtIDEpDQo+ID4gKyNkZWZpbmUg SVBVM19VQVBJX0dSSURfWV9TVEFSVF9FTgkJCSgxIDw8IDE1KQ0KPiA+ICsNCj4gPiArLyogY29u dHJvbHMgZ2VuZXJhdGlvbiBvZiBtZXRhX2RhdGEgKGxpa2UgRkYgZW5hYmxlL2Rpc2FibGUpICov DQo+ID4gKyNkZWZpbmUgSVBVM19VQVBJX0FXQl9SR0JTX1RIUl9CX0VOCQkJKDEgPDwgMTQpDQo+ ID4gKyNkZWZpbmUgSVBVM19VQVBJX0FXQl9SR0JTX1RIUl9CX0lOQ0xfU0FUCQkoMSA8PCAxNSkN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2dyaWRfY29uZmlnIC0g R3JpZCBwbGFuZSBjb25maWcNCj4gPiArICoNCj4gPiArICogQHdpZHRoOglHcmlkIGhvcml6b250 YWwgZGltZW5zaW9ucywgaW4gbnVtYmVyIG9mIGdyaWQgYmxvY2tzKGNlbGxzKS4NCj4gPiArICog QGhlaWdodDoJR3JpZCB2ZXJ0aWNhbCBkaW1lbnNpb25zLCBpbiBudW1iZXIgb2YgZ3JpZCBjZWxs cy4NCj4gPiArICogQGJsb2NrX3dpZHRoX2xvZzI6CUxvZzIgb2YgdGhlIHdpZHRoIG9mIGVhY2gg Y2VsbCBpbiBwaXhlbHMuDQo+ID4gKyAqCQkJZm9yICgyXjMsIDJeNCwgMl41LCAyXjYsIDJeNyks IHZhbHVlcyBbMywgN10uDQo+ID4gKyAqIEBibG9ja19oZWlnaHRfbG9nMjoJTG9nMiBvZiB0aGUg aGVpZ2h0IG9mIGVhY2ggY2VsbCBpbiBwaXhlbHMuDQo+ID4gKyAqCQkJZm9yICgyXjMsIDJeNCwg Ml41LCAyXjYsIDJeNyksIHZhbHVlcyBbMywgN10uDQo+ID4gKyAqIEBoZWlnaHRfcGVyX3NsaWNl OglUaGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB2ZXJ0aWNhbCBheGlzIHBlciBzbGljZS4NCj4gPiAr ICoJCQlEZWZhdWx0IDIuDQo+ID4gKyAqIEB4X3N0YXJ0OiBYIHZhbHVlIG9mIHRvcCBsZWZ0IGNv cm5lciBvZiBSZWdpb24gb2YgSW50ZXJlc3QoUk9JKS4NCj4gPiArICogQHlfc3RhcnQ6IFkgdmFs dWUgb2YgdG9wIGxlZnQgY29ybmVyIG9mIFJPSQ0KPiA+ICsgKiBAeF9lbmQ6IFggdmFsdWUgb2Yg Ym90dG9tIHJpZ2h0IGNvcm5lciBvZiBST0kNCj4gPiArICogQHlfZW5kOiBZIHZhbHVlIG9mIGJv dHRvbSByaWdodCBjb3JuZXIgb2YgUk9JDQo+ID4gKyAqDQo+ID4gKyAqIER1ZSB0byB0aGUgc2l6 ZSBvZiB0b3RhbCBhbW91bnQgb2YgY29sbGVjdGVkIGRhdGEsIG1vc3Qgc3RhdGlzdGljcw0KPiA+ ICsgKiBjcmVhdGUgYSBncmlkLWJhc2VkIG91dHB1dCwgYW5kIHRoZSBkYXRhIGlzIHRoZW4gZGl2 aWRlZCBpbnRvICJzbGljZXMiLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9ncmlk X2NvbmZpZyB7DQo+ID4gKwlfX3U4IHdpZHRoOw0KPiA+ICsJX191OCBoZWlnaHQ7DQo+ID4gKwlf X3UxNiBibG9ja193aWR0aF9sb2cyOjM7DQo+ID4gKwlfX3UxNiBibG9ja19oZWlnaHRfbG9nMjoz Ow0KPiA+ICsJX191MTYgaGVpZ2h0X3Blcl9zbGljZTo4Ow0KPiA+ICsJX191MTYgeF9zdGFydDsN Cj4gPiArCV9fdTE2IHlfc3RhcnQ7DQo+ID4gKwlfX3UxNiB4X2VuZDsNCj4gPiArCV9fdTE2IHlf ZW5kOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogVGhlIGdyaWQg YmFzZWQgZGF0YSBpcyBkaXZpZGVkIGludG8gInNsaWNlcyIgY2FsbGVkIHNldCwgZWFjaCBzbGlj ZSBvZiBzZXRYDQo+ID4gKyAqIHJlZmVycyB0byBpcHUzX3VhcGlfZ3JpZF9jb25maWcgd2lkdGgg KiBoZWlnaHRfcGVyX3NsaWNlLg0KPiA+ICsgKi8NCj4gPiArI2RlZmluZSBJUFUzX1VBUElfQVdC X01BWF9TRVRTCQkJCTYwDQo+ID4gKy8qIEJhc2VkIG9uIGdyaWQgc2l6ZSA4MCAqIDYwIGFuZCBj ZWxsIHNpemUgMTYgeCAxNiAqLw0KPiA+ICsjZGVmaW5lIElQVTNfVUFQSV9BV0JfU0VUX1NJWkUJ CQkJMTI4MA0KPiA+ICsjZGVmaW5lIElQVTNfVUFQSV9BV0JfTURfSVRFTV9TSVpFCQkJOA0KPiA+ ICsjZGVmaW5lIElQVTNfVUFQSV9BV0JfU1BBUkVfRk9SX0JVQkJMRVMgXA0KPiA+ICsJKElQVTNf VUFQSV9NQVhfQlVCQkxFX1NJWkUgKiBJUFUzX1VBUElfTUFYX1NUUklQRVMgKiBcDQo+ID4gKwkg SVBVM19VQVBJX0FXQl9NRF9JVEVNX1NJWkUpDQo+ID4gKyNkZWZpbmUgSVBVM19VQVBJX0FXQl9N QVhfQlVGRkVSX1NJWkUgXA0KPiA+ICsJKElQVTNfVUFQSV9BV0JfTUFYX1NFVFMgKiBcDQo+ID4g KwkgKElQVTNfVUFQSV9BV0JfU0VUX1NJWkUgKw0KPiBJUFUzX1VBUElfQVdCX1NQQVJFX0ZPUl9C VUJCTEVTKSkNCj4gDQo+IEFkZCBhbiBlbXB0eSBsaW5lIGhlcmUuDQo+IA0KDQpBY2suDQoNCj4g PiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfYXdiX21ldGFfZGF0YSAtIEFXQiBtZXRh IGRhdGENCj4gPiArICoNCj4gPiArICogQG1ldGFfZGF0YV9idWZmZXI6CUF2ZXJhZ2UgdmFsdWVz IGZvciBlYWNoIGNvbG9yIGNoYW5uZWwNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlf YXdiX21ldGFfZGF0YSB7DQo+ID4gKwlfX3U4IG1ldGFfZGF0YV9idWZmZXJbSVBVM19VQVBJX0FX Ql9NQVhfQlVGRkVSX1NJWkVdOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfYXdiX3Jhd19idWZmZXIgLSBBV0IgcmF3IGJ1ZmZlcg0K PiA+ICsgKg0KPiA+ICsgKiBAbWV0YV9kYXRhOiBidWZmZXIgdG8gaG9sZCBhdXRvIHdoaXRlIGJh bGFuY2UgbWV0YSBkYXRhLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9hd2JfcmF3 X2J1ZmZlciB7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2F3Yl9tZXRhX2RhdGEgbWV0YV9kYXRh Ow0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUz X3VhcGlfYXdiX2NvbmZpZ19zIC0gQVdCIGNvbmZpZw0KPiA+ICsgKg0KPiA+ICsgKiBAcmdic190 aHJfZ3I6IGdyIHRocmVzaG9sZCB2YWx1ZS4NCj4gPiArICogQHJnYnNfdGhyX3I6IFJlZCB0aHJl c2hvbGQgdmFsdWUuDQo+ID4gKyAqIEByZ2JzX3Rocl9nYjogZ2IgdGhyZXNob2xkIHZhbHVlLg0K PiA+ICsgKiBAcmdic190aHJfYjogQmx1ZSB0aHJlc2hvbGQgdmFsdWUuDQo+ID4gKyAqIEBncmlk OiAmaXB1M191YXBpX2dyaWRfY29uZmlnLCB0aGUgZGVmYXVsdCBncmlkIHJlc29sdXRpb24gaXMg MTZ4MTYgY2VsbHMuDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSB0aHJlc2hvbGQgaXMgYSBzYXR1cmF0 aW9uIG1lYXN1cmUgcmFuZ2UgWzAsIDgxOTFdLCA4MTkxIGlzIGRlZmF1bHQuDQo+ID4gKyAqIFZh bHVlcyBvdmVyIHRocmVzaG9sZCBtYXkgYmUgb3B0aW9uYWxseSByZWplY3RlZCBmb3IgYXZlcmFn aW5nLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9hd2JfY29uZmlnX3Mgew0KPiA+ ICsJX191MTYgcmdic190aHJfZ3I7DQo+ID4gKwlfX3UxNiByZ2JzX3Rocl9yOw0KPiA+ICsJX191 MTYgcmdic190aHJfZ2I7DQo+ID4gKwlfX3UxNiByZ2JzX3Rocl9iOw0KPiA+ICsJc3RydWN0IGlw dTNfdWFwaV9ncmlkX2NvbmZpZyBncmlkOw0KPiA+ICt9IF9fYXR0cmlidXRlX18oKGFsaWduZWQo MzIpKSkgX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFw aV9hd2JfY29uZmlnIC0gQVdCIGNvbmZpZyB3cmFwcGVyDQo+ID4gKyAqDQo+ID4gKyAqIEBjb25m aWc6IGNvbmZpZyBmb3IgYXV0byB3aGl0ZSBiYWxhbmNlIGFzIGRlZmluZWQgYnkNCj4gJmlwdTNf dWFwaV9hd2JfY29uZmlnX3MNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfYXdiX2Nv bmZpZyB7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2F3Yl9jb25maWdfcyBjb25maWcgX19hdHRy aWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKyNk ZWZpbmUgSVBVM19VQVBJX0FFX0NPTE9SUwkJCQk0CS8qIFIsDQo+IEcsIEIsIFkgKi8NCj4gPiAr I2RlZmluZSBJUFUzX1VBUElfQUVfQklOUwkJCQkyNTYNCj4gPiArI2RlZmluZSBJUFUzX1VBUElf QUVfV0VJR0hUUwkJCQk5Ng0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3Vh cGlfYWVfcmF3X2J1ZmZlciAtIEFFIGdsb2JhbCB3ZWlnaHRlZCBoaXN0b2dyYW0NCj4gPiArICoN Cj4gPiArICogQHZhbHM6IFN1bSBvZiBJUFUzX1VBUElfQUVfQ09MT1JTIGluIGNlbGwNCj4gPiAr ICoNCj4gPiArICogRWFjaCBoaXN0b2dyYW0gY29udGFpbnMgSVBVM19VQVBJX0FFX0JJTlMgYmlu cy4gRWFjaCBiaW4gaGFzIDI0IGJpdA0KPiB1bnNpZ25lZA0KPiA+ICsgKiBmb3IgY291bnRpbmcg dGhlIG51bWJlciBvZiB0aGUgcGl4ZWwuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBp X2FlX3Jhd19idWZmZXIgew0KPiA+ICsJX191MzIgdmFsc1tJUFUzX1VBUElfQUVfQklOUyAqIElQ VTNfVUFQSV9BRV9DT0xPUlNdOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfYWVfcmF3X2J1ZmZlcl9hbGlnbmVkIC0gQUUgcmF3IGJ1 ZmZlcg0KPiA+ICsgKg0KPiA+ICsgKiBAYnVmZjogJmlwdTNfdWFwaV9hZV9yYXdfYnVmZmVyIHRv IGhvbGQgZnVsbCBmcmFtZSBtZXRhIGRhdGEuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191 YXBpX2FlX3Jhd19idWZmZXJfYWxpZ25lZCB7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2FlX3Jh d19idWZmZXIgYnVmZiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDMyKSkpOw0KPiA+ICt9IF9fcGFj a2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfYWVfZ3JpZF9j b25maWcgLSBBRSB3ZWlnaHQgZ3JpZA0KPiA+ICsgKg0KPiA+ICsgKiBAd2lkdGg6IEdyaWQgaG9y aXpvbnRhbCBkaW1lbnNpb25zLiBWYWx1ZTogWzE2LCAzMl0sIGRlZmF1bHQgMTYuDQo+ID4gKyAq IEBoZWlnaHQ6IEdyaWQgdmVydGljYWwgZGltZW5zaW9ucy4gVmFsdWU6IFsxNiwgMjRdLCBkZWZh dWx0IDE2Lg0KPiA+ICsgKiBAYmxvY2tfd2lkdGhfbG9nMjogTG9nMiBvZiB0aGUgd2lkdGggb2Yg dGhlIGdyaWQgY2VsbCwgMl4zID0gMTYuDQo+ID4gKyAqIEBibG9ja19oZWlnaHRfbG9nMjogTG9n MiBvZiB0aGUgaGVpZ2h0IG9mIHRoZSBncmlkIGNlbGwsIDJeMyA9IDE2Lg0KPiA+ICsgKiBAX19y ZXNlcnZlZDA6IHJlc2VydmVkDQo+ID4gKyAqIEBhZV9lbjogMDogZG9lcyBub3Qgd3JpdGUgdG8g bWV0YS1kYXRhIGFycmF5LCAxOiB3cml0ZSBub3JtYWxseS4NCj4gPiArICogQHJzdF9oaXN0X2Fy cmF5OiB3cml0ZSAxIHRvIHRyaWdnZXIgaGlzdG9ncmFtIGFycmF5IHJlc2V0Lg0KPiA+ICsgKiBA ZG9uZV9yc3RfaGlzdF9hcnJheTogZmxhZyBmb3IgaGlzdG9ncmFtIGFycmF5IHJlc2V0IGRvbmUu DQo+ID4gKyAqIEB4X3N0YXJ0OiBYIHZhbHVlIG9mIHRvcCBsZWZ0IGNvcm5lciBvZiBST0ksIGRl ZmF1bHQgMC4NCj4gPiArICogQHlfc3RhcnQ6IFkgdmFsdWUgb2YgdG9wIGxlZnQgY29ybmVyIG9m IFJPSSwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAeF9lbmQ6IFggdmFsdWUgb2YgYm90dG9tIHJpZ2h0 IGNvcm5lciBvZiBST0kNCj4gPiArICogQHlfZW5kOiBZIHZhbHVlIG9mIGJvdHRvbSByaWdodCBj b3JuZXIgb2YgUk9JDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSBBRSBibG9jayBhY2N1bXVsYXRlcyA0 IGdsb2JhbCB3ZWlnaHRlZCBoaXN0b2dyYW1zKFIsIEcsIEIsIFkpIG92ZXINCj4gPiArICogYSBk ZWZpbmVkIFJPSSB3aXRoaW4gdGhlIGZyYW1lLiBUaGUgY29udHJpYnV0aW9uIG9mIGVhY2ggcGl4 ZWwgaW50byB0aGUNCj4gPiArICogaGlzdG9ncmFtLCBkZWZpbmVkIGJ5ICZpcHUzX3VhcGlfYWVf d2VpZ2h0X2VsZW0gTFVULCBpcyBpbmRleGVkIGJ5IGENCj4gZ3JpZC4NCj4gPiArICovDQo+ID4g K3N0cnVjdCBpcHUzX3VhcGlfYWVfZ3JpZF9jb25maWcgew0KPiA+ICsJX191OCB3aWR0aDsNCj4g PiArCV9fdTggaGVpZ2h0Ow0KPiA+ICsJX191OCBibG9ja193aWR0aF9sb2cyOjQ7DQo+ID4gKwlf X3U4IGJsb2NrX2hlaWdodF9sb2cyOjQ7DQo+ID4gKwlfX3U4IF9fcmVzZXJ2ZWQwOjU7DQo+ID4g KwlfX3U4IGFlX2VuOjE7DQo+ID4gKwlfX3U4IHJzdF9oaXN0X2FycmF5OjE7DQo+ID4gKwlfX3U4 IGRvbmVfcnN0X2hpc3RfYXJyYXk6MTsNCj4gPiArCV9fdTE2IHhfc3RhcnQ7DQo+ID4gKwlfX3Ux NiB5X3N0YXJ0Ow0KPiA+ICsJX191MTYgeF9lbmQ7DQo+ID4gKwlfX3UxNiB5X2VuZDsNCj4gPiAr fSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2Fl X3dlaWdodF9lbGVtIC0gQUUgd2VpZ2h0cyBMVVQNCj4gPiArICoNCj4gPiArICogQGNlbGwwOiB3 ZWlnaHRlZCBoaXN0b2dyYW0gZ3JpZCB2YWx1ZS4NCj4gPiArICogQGNlbGwxOiB3ZWlnaHRlZCBo aXN0b2dyYW0gZ3JpZCB2YWx1ZS4NCj4gPiArICogQGNlbGwyOiB3ZWlnaHRlZCBoaXN0b2dyYW0g Z3JpZCB2YWx1ZS4NCj4gPiArICogQGNlbGwzOiB3ZWlnaHRlZCBoaXN0b2dyYW0gZ3JpZCB2YWx1 ZS4NCj4gPiArICogQGNlbGw0OiB3ZWlnaHRlZCBoaXN0b2dyYW0gZ3JpZCB2YWx1ZS4NCj4gPiAr ICogQGNlbGw1OiB3ZWlnaHRlZCBoaXN0b2dyYW0gZ3JpZCB2YWx1ZS4NCj4gPiArICogQGNlbGw2 OiB3ZWlnaHRlZCBoaXN0b2dyYW0gZ3JpZCB2YWx1ZS4NCj4gPiArICogQGNlbGw3OiB3ZWlnaHRl ZCBoaXN0b2dyYW0gZ3JpZCB2YWx1ZS4NCj4gPiArICoNCj4gPiArICogVXNlIHdlaWdodGVkIGdy aWQgdmFsdWUgdG8gZ2l2ZSBhIGRpZmZlcmVudCBjb250cmlidXRpb24gZmFjdG9yIHRvIGVhY2gN Cj4gY2VsbC4NCj4gPiArICogUHJlY2lzaW9uIHU0LCByYW5nZSBbMCwgMTVdLg0KPiA+ICsgKi8N Cj4gPiArc3RydWN0IGlwdTNfdWFwaV9hZV93ZWlnaHRfZWxlbSB7DQo+ID4gKwlfX3UzMiBjZWxs MDo0Ow0KPiA+ICsJX191MzIgY2VsbDE6NDsNCj4gPiArCV9fdTMyIGNlbGwyOjQ7DQo+ID4gKwlf X3UzMiBjZWxsMzo0Ow0KPiA+ICsJX191MzIgY2VsbDQ6NDsNCj4gPiArCV9fdTMyIGNlbGw1OjQ7 DQo+ID4gKwlfX3UzMiBjZWxsNjo0Ow0KPiA+ICsJX191MzIgY2VsbDc6NDsNCj4gPiArfSBfX3Bh Y2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2FlX2NjbSAt IEFFIGNvZWZmaWNpZW50cyBmb3IgV0IgYW5kIENDTQ0KPiA+ICsgKg0KPiA+ICsgKiBAZ2Fpbl9n cjogV0IgZ2FpbiBmYWN0b3IgZm9yIHRoZSBnciBjaGFubmVscy4gRGVmYXVsdCAyNTYuDQo+ID4g KyAqIEBnYWluX3I6IFdCIGdhaW4gZmFjdG9yIGZvciB0aGUgciBjaGFubmVsLiBEZWZhdWx0IDI1 Ni4NCj4gPiArICogQGdhaW5fYjogV0IgZ2FpbiBmYWN0b3IgZm9yIHRoZSBiIGNoYW5uZWwuIERl ZmF1bHQgMjU2Lg0KPiA+ICsgKiBAZ2Fpbl9nYjogV0IgZ2FpbiBmYWN0b3IgZm9yIHRoZSBnYiBj aGFubmVscy4gRGVmYXVsdCAyNTYuDQo+ID4gKyAqIEBtYXQ6IDR4NCBtYXRyaXggdGhhdCB0cmFu c2Zvcm1zIEJheWVyIHF1YWQgb3V0cHV0IGZyb20gV0IgdG8NCj4gUkdCK1kuDQo+ID4gKyAqDQo+ ID4gKyAqIERlZmF1bHQ6DQo+ID4gKyAqCTEyOCwgMCwgMCwgMCwNCj4gPiArICoJMCwgMTI4LCAw LCAwLA0KPiA+ICsgKgkwLCAwLCAxMjgsIDAsDQo+ID4gKyAqCTAsIDAsIDAsIDEyOCwNCj4gPiAr ICoNCj4gPiArICogQXMgcGFydCBvZiB0aGUgcmF3IGZyYW1lIHByZS1wcm9jZXNzIHN0YWdlLCB0 aGUgV0IgYW5kIGNvbG9yDQo+IGNvbnZlcnNpb24gbmVlZA0KPiA+ICsgKiB0byBiZSBhcHBsaWVk IHRvIGV4cG9zZSB0aGUgaW1wYWN0IG9mIHRoZXNlIGdhaW4gb3BlcmF0aW9ucy4NCj4gPiArICov DQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfYWVfY2NtIHsNCj4gPiArCV9fdTE2IGdhaW5fZ3I7DQo+ ID4gKwlfX3UxNiBnYWluX3I7DQo+ID4gKwlfX3UxNiBnYWluX2I7DQo+ID4gKwlfX3UxNiBnYWlu X2diOw0KPiA+ICsJX19zMTYgbWF0WzE2XTsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2FlX2NvbmZpZyAtIEFFIGNvbmZpZw0KPiA+ ICsgKg0KPiA+ICsgKiBAZ3JpZF9jZmc6CWNvbmZpZyBmb3IgYXV0byBleHBvc3VyZSBzdGF0aXN0 aWNzIGdyaWQuIFNlZSBzdHJ1Y3QNCj4gPiArICoJCSZpcHUzX3VhcGlfYWVfZ3JpZF9jb25maWcN Cj4gPiArICogQHdlaWdodHM6CSZJUFUzX1VBUElfQUVfV0VJR0hUUyBpcyBiYXNlZCBvbiAzMngy NCBibG9ja3MNCj4gaW4gdGhlIGdyaWQuDQo+ID4gKyAqCQlFYWNoIGdyaWQgY2VsbCBoYXMgYSBj b3JyZXNwb25kaW5nIHZhbHVlIGluIHdlaWdodHMgTFVUIGNhbGxlZA0KPiA+ICsgKgkJZ3JpZCB2 YWx1ZSwgZ2xvYmFsIGhpc3RvZ3JhbSBpcyB1cGRhdGVkIGJhc2VkIG9uIGdyaWQgdmFsdWUNCj4g YW5kDQo+ID4gKyAqCQlwaXhlbCB2YWx1ZS4NCj4gPiArICogQGFlX2NjbToJQ29sb3IgY29udmVy dCBtYXRyaXggcHJlLXByb2Nlc3NpbmcgYmxvY2suDQo+ID4gKyAqDQo+ID4gKyAqIENhbGN1bGF0 ZSBBRSBncmlkIGZyb20gaW1hZ2UgcmVzb2x1dGlvbiwgcmVzYW1wbGUgYWUgd2VpZ2h0cy4NCj4g PiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfYWVfY29uZmlnIHsNCj4gPiArCXN0cnVjdCBp cHUzX3VhcGlfYWVfZ3JpZF9jb25maWcgZ3JpZF9jZmcgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgz MikpKTsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfYWVfd2VpZ2h0X2VsZW0gd2VpZ2h0c1sNCj4g PiArCQkJCQkJSVBVM19VQVBJX0FFX1dFSUdIVFNdDQo+IF9fYXR0cmlidXRlX18oKGFsaWduZWQo MzIpKSk7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2FlX2NjbSBhZV9jY20gX19hdHRyaWJ1dGVf XygoYWxpZ25lZCgzMikpKTsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2FmX2ZpbHRlcl9jb25maWcgLSBBRiAyRCBmaWx0ZXIgZm9y IGNvbnRyYXN0DQo+IG1lYXN1cmVtZW50cw0KPiA+ICsgKg0KPiA+ICsgKiBAeTFfY29lZmZfMDoJ ZmlsdGVyIFkxLCBzdHJ1Y3R1cmU6IDN4MTEsIHN1cHBvcnQgYm90aCBzeW1tZXRyeSBhbmQNCj4g PiArICoJCWFudGktc3ltbWV0cnkgdHlwZS4gQTEyIGlzIGNlbnRlciwgQTEtQTExIGFyZSBuZWln aGJvdXJzLg0KPiA+ICsgKgkJZm9yIGFuYWx5emluZyBsb3cgZnJlcXVlbmN5IGNvbnRlbnQsIHVz ZWQgdG8gY2FsY3VsYXRlIHN1bQ0KPiA+ICsgKgkJb2YgZ3JhZGllbnRzIGluIHggZGlyZWN0aW9u Lg0KPiA+ICsgKiBAeTFfY29lZmZfMC5hMToJZmlsdGVyMSBjb2VmZmljaWVudHMgQTEsIHU4LCBk ZWZhdWx0IDAuDQo+ID4gKyAqIEB5MV9jb2VmZl8wLmEyOglmaWx0ZXIxIGNvZWZmaWNpZW50cyBB MiwgdTgsIGRlZmF1bHQgMC4NCj4gPiArICogQHkxX2NvZWZmXzAuYTM6CWZpbHRlcjEgY29lZmZp Y2llbnRzIEEzLCB1OCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAeTFfY29lZmZfMC5hNDoJZmlsdGVy MSBjb2VmZmljaWVudHMgQTQsIHU4LCBkZWZhdWx0IDAuDQo+ID4gKyAqIEB5MV9jb2VmZl8xOgkJ U3RydWN0DQo+ID4gKyAqIEB5MV9jb2VmZl8xLmE1OglmaWx0ZXIxIGNvZWZmaWNpZW50cyBBNSwg dTgsIGRlZmF1bHQgMC4NCj4gPiArICogQHkxX2NvZWZmXzEuYTY6CWZpbHRlcjEgY29lZmZpY2ll bnRzIEE2LCB1OCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAeTFfY29lZmZfMS5hNzoJZmlsdGVyMSBj b2VmZmljaWVudHMgQTcsIHU4LCBkZWZhdWx0IDAuDQo+ID4gKyAqIEB5MV9jb2VmZl8xLmE4Oglm aWx0ZXIxIGNvZWZmaWNpZW50cyBBOCwgdTgsIGRlZmF1bHQgMC4NCj4gPiArICogQHkxX2NvZWZm XzI6CQlTdHJ1Y3QNCj4gPiArICogQHkxX2NvZWZmXzIuYTk6CWZpbHRlcjEgY29lZmZpY2llbnRz IEE5LCB1OCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAeTFfY29lZmZfMi5hMTA6CWZpbHRlcjEgY29l ZmZpY2llbnRzIEExMCwgdTgsIGRlZmF1bHQgMC4NCj4gPiArICogQHkxX2NvZWZmXzIuYTExOglm aWx0ZXIxIGNvZWZmaWNpZW50cyBBMTEsIHU4LCBkZWZhdWx0IDAuDQo+ID4gKyAqIEB5MV9jb2Vm Zl8yLmExMjoJZmlsdGVyMSBjb2VmZmljaWVudHMgQTEyLCB1OCwgZGVmYXVsdCAxMjguDQo+ID4g KyAqIEB5MV9zaWduX3ZlYzoJRWFjaCBiaXQgY29ycmVzcG9uZHMgdG8gb25lIGNvZWZmaWNpZW50 IHNpZ24gYml0LA0KPiA+ICsgKgkJCTA6IHBvc2l0aXZlLCAxOiBuZWdhdGl2ZSwgZGVmYXVsdCAw Lg0KPiA+ICsgKiBAeTJfY29lZmZfMDoJWTIsIHNhbWUgc3RydWN0dXJlIGFzIFkxLiBGb3IgYW5h bHl6aW5nIGhpZ2gNCj4gZnJlcXVlbmN5IGNvbnRlbnQuDQo+ID4gKyAqIEB5Ml9jb2VmZl8wLmEx OglmaWx0ZXIyIGNvZWZmaWNpZW50cyBBMSwgdTgsIGRlZmF1bHQgMC4NCj4gPiArICogQHkyX2Nv ZWZmXzAuYTI6CWZpbHRlcjIgY29lZmZpY2llbnRzIEEyLCB1OCwgZGVmYXVsdCAwLg0KPiA+ICsg KiBAeTJfY29lZmZfMC5hMzoJZmlsdGVyMiBjb2VmZmljaWVudHMgQTMsIHU4LCBkZWZhdWx0IDAu DQo+ID4gKyAqIEB5Ml9jb2VmZl8wLmE0OglmaWx0ZXIyIGNvZWZmaWNpZW50cyBBNCwgdTgsIGRl ZmF1bHQgMC4NCj4gPiArICogQHkyX2NvZWZmXzE6CVN0cnVjdA0KPiA+ICsgKiBAeTJfY29lZmZf MS5hNToJZmlsdGVyMiBjb2VmZmljaWVudHMgQTUsIHU4LCBkZWZhdWx0IDAuDQo+ID4gKyAqIEB5 Ml9jb2VmZl8xLmE2OglmaWx0ZXIyIGNvZWZmaWNpZW50cyBBNiwgdTgsIGRlZmF1bHQgMC4NCj4g PiArICogQHkyX2NvZWZmXzEuYTc6CWZpbHRlcjIgY29lZmZpY2llbnRzIEE3LCB1OCwgZGVmYXVs dCAwLg0KPiA+ICsgKiBAeTJfY29lZmZfMS5hODoJZmlsdGVyMiBjb2VmZmljaWVudHMgQTgsIHU4 LCBkZWZhdWx0IDAuDQo+ID4gKyAqIEB5Ml9jb2VmZl8yOglTdHJ1Y3QNCj4gPiArICogQHkyX2Nv ZWZmXzIuYTk6CWZpbHRlcjEgY29lZmZpY2llbnRzIEE5LCB1OCwgZGVmYXVsdCAwLg0KPiA+ICsg KiBAeTJfY29lZmZfMi5hMTA6CWZpbHRlcjEgY29lZmZpY2llbnRzIEExMCwgdTgsIGRlZmF1bHQg MC4NCj4gPiArICogQHkyX2NvZWZmXzIuYTExOglmaWx0ZXIxIGNvZWZmaWNpZW50cyBBMTEsIHU4 LCBkZWZhdWx0IDAuDQo+ID4gKyAqIEB5Ml9jb2VmZl8yLmExMjoJZmlsdGVyMSBjb2VmZmljaWVu dHMgQTEyLCB1OCwgZGVmYXVsdCAxMjguDQo+ID4gKyAqIEB5Ml9zaWduX3ZlYzoJRWFjaCBiaXQg Y29ycmVzcG9uZHMgdG8gb25lIGNvZWZmaWNpZW50IHNpZ24gYml0LA0KPiA+ICsgKgkJCTA6IHBv c2l0aXZlLCAxOiBuZWdhdGl2ZSwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAeV9jYWxjOglQcmUtcHJv Y2Vzc2luZyB0aGF0IGNvbnZlcnRzIEJheWVyIHF1YWQgdG8gUkdCK1kgdmFsdWVzIHRvDQo+IGJl DQo+ID4gKyAqCQl1c2VkIGZvciBidWlsZGluZyBoaXN0b2dyYW0uIFJhbmdlIFswLCAzMl0sIGRl ZmF1bHQgOC4NCj4gPiArICogUnVsZToNCj4gPiArICoJCXlfZ2VuX3JhdGVfZ3IgKyB5X2dlbl9y YXRlX3IgKyB5X2dlbl9yYXRlX2IgKw0KPiB5X2dlbl9yYXRlX2diID0gMzINCj4gPiArICoJCUEg c2luZ2xlIFkgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiBzdW0gb2YgR3IvUi9CL0diIGJhc2VkIG9u DQo+ID4gKyAqCQl0aGVpciBjb250cmlidXRpb24gcmF0aW8uDQo+ID4gKyAqIEB5X2NhbGMueV9n ZW5fcmF0ZV9ncjoJQ29udHJpYnV0aW9uIHJhdGlvIEdyIGZvciBZDQo+ID4gKyAqIEB5X2NhbGMu eV9nZW5fcmF0ZV9yOglDb250cmlidXRpb24gcmF0aW8gUiBmb3IgWQ0KPiA+ICsgKiBAeV9jYWxj LnlfZ2VuX3JhdGVfYjoJQ29udHJpYnV0aW9uIHJhdGlvIEIgZm9yIFkNCj4gPiArICogQHlfY2Fs Yy55X2dlbl9yYXRlX2diOglDb250cmlidXRpb24gcmF0aW8gR2IgZm9yIFkNCj4gPiArICogQG5m OglUaGUgc2hpZnQgcmlnaHQgdmFsdWUgdGhhdCBzaG91bGQgYmUgYXBwbGllZCBkdXJpbmcgdGhl IFkxL1kyDQo+IGZpbHRlciB0bw0KPiA+ICsgKgltYWtlIHN1cmUgdGhlIHRvdGFsIG1lbW9yeSBu ZWVkZWQgaXMgMiBieXRlcyBwZXIgZ3JpZCBjZWxsLg0KPiA+ICsgKiBAbmYuX19yZXNlcnZlZDA6 CXJlc2VydmVkDQo+ID4gKyAqIEBuZi55MV9uZjoJTm9ybWFsaXphdGlvbiBmYWN0b3IgZm9yIHRo ZSBjb252b2x1dGlvbiBjb2VmZnMgb2YgeTEsDQo+ID4gKyAqCQlzaG91bGQgYmUgbG9nMiBvZiB0 aGUgc3VtIG9mIHRoZSBhYnMgdmFsdWVzIG9mIHRoZSBmaWx0ZXINCj4gPiArICoJCWNvZWZmcywg ZGVmYXVsdCA3ICgyXjcgPSAxMjgpLg0KPiA+ICsgKiBAbmYuX19yZXNlcnZlZDE6CXJlc2VydmVk DQo+ID4gKyAqIEBuZi55Ml9uZjoJTm9ybWFsaXphdGlvbiBmYWN0b3IgZm9yIHkyLCBzaG91bGQg YmUgbG9nMiBvZiB0aGUNCj4gc3VtIG9mIHRoZQ0KPiA+ICsgKgkJYWJzIHZhbHVlcyBvZiB0aGUg ZmlsdGVyIGNvZWZmcy4NCj4gPiArICogQG5mLl9fcmVzZXJ2ZWQyOglyZXNlcnZlZA0KPiA+ICsg Ki8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9hZl9maWx0ZXJfY29uZmlnIHsNCj4gPiArCXN0cnVj dCB7DQo+ID4gKwkJX191OCBhMTsNCj4gPiArCQlfX3U4IGEyOw0KPiA+ICsJCV9fdTggYTM7DQo+ ID4gKwkJX191OCBhNDsNCj4gPiArCX0geTFfY29lZmZfMDsNCj4gPiArCXN0cnVjdCB7DQo+ID4g KwkJX191OCBhNTsNCj4gPiArCQlfX3U4IGE2Ow0KPiA+ICsJCV9fdTggYTc7DQo+ID4gKwkJX191 OCBhODsNCj4gPiArCX0geTFfY29lZmZfMTsNCj4gPiArCXN0cnVjdCB7DQo+ID4gKwkJX191OCBh OTsNCj4gPiArCQlfX3U4IGExMDsNCj4gPiArCQlfX3U4IGExMTsNCj4gPiArCQlfX3U4IGExMjsN Cj4gPiArCX0geTFfY29lZmZfMjsNCj4gPiArDQo+ID4gKwlfX3UzMiB5MV9zaWduX3ZlYzsNCj4g PiArDQo+ID4gKwlzdHJ1Y3Qgew0KPiA+ICsJCV9fdTggYTE7DQo+ID4gKwkJX191OCBhMjsNCj4g PiArCQlfX3U4IGEzOw0KPiA+ICsJCV9fdTggYTQ7DQo+ID4gKwl9IHkyX2NvZWZmXzA7DQo+ID4g KwlzdHJ1Y3Qgew0KPiA+ICsJCV9fdTggYTU7DQo+ID4gKwkJX191OCBhNjsNCj4gPiArCQlfX3U4 IGE3Ow0KPiA+ICsJCV9fdTggYTg7DQo+ID4gKwl9IHkyX2NvZWZmXzE7DQo+ID4gKwlzdHJ1Y3Qg ew0KPiA+ICsJCV9fdTggYTk7DQo+ID4gKwkJX191OCBhMTA7DQo+ID4gKwkJX191OCBhMTE7DQo+ ID4gKwkJX191OCBhMTI7DQo+ID4gKwl9IHkyX2NvZWZmXzI7DQo+ID4gKw0KPiA+ICsJX191MzIg eTJfc2lnbl92ZWM7DQo+ID4gKw0KPiA+ICsJc3RydWN0IHsNCj4gPiArCQlfX3U4IHlfZ2VuX3Jh dGVfZ3I7DQo+ID4gKwkJX191OCB5X2dlbl9yYXRlX3I7DQo+ID4gKwkJX191OCB5X2dlbl9yYXRl X2I7DQo+ID4gKwkJX191OCB5X2dlbl9yYXRlX2diOw0KPiA+ICsJfSB5X2NhbGM7DQo+ID4gKw0K PiA+ICsJc3RydWN0IHsNCj4gPiArCQlfX3UzMiBfX3Jlc2VydmVkMDo4Ow0KPiA+ICsJCV9fdTMy IHkxX25mOjQ7DQo+ID4gKwkJX191MzIgX19yZXNlcnZlZDE6NDsNCj4gPiArCQlfX3UzMiB5Ml9u Zjo0Ow0KPiA+ICsJCV9fdTMyIF9fcmVzZXJ2ZWQyOjEyOw0KPiA+ICsJfSBuZjsNCj4gPiArfSBf X3BhY2tlZDsNCj4gPiArDQo+ID4gKyNkZWZpbmUgSVBVM19VQVBJX0FGX01BWF9TRVRTCQkJCTI0 DQo+ID4gKyNkZWZpbmUgSVBVM19VQVBJX0FGX01EX0lURU1fU0laRQkJCTQNCj4gPiArI2RlZmlu ZSBJUFUzX1VBUElfQUZfU1BBUkVfRk9SX0JVQkJMRVMgXA0KPiA+ICsJKElQVTNfVUFQSV9NQVhf QlVCQkxFX1NJWkUgKiBJUFUzX1VBUElfTUFYX1NUUklQRVMgKiBcDQo+ID4gKwkgSVBVM19VQVBJ X0FGX01EX0lURU1fU0laRSkNCj4gPiArI2RlZmluZSBJUFUzX1VBUElfQUZfWV9UQUJMRV9TRVRf U0laRQkJCTEyOA0KPiA+ICsjZGVmaW5lIElQVTNfVUFQSV9BRl9ZX1RBQkxFX01BWF9TSVpFIFwN Cj4gPiArCShJUFUzX1VBUElfQUZfTUFYX1NFVFMgKiBcDQo+ID4gKwkgKElQVTNfVUFQSV9BRl9Z X1RBQkxFX1NFVF9TSVpFICsNCj4gSVBVM19VQVBJX0FGX1NQQVJFX0ZPUl9CVUJCTEVTKSAqIFwN Cj4gPiArCSBJUFUzX1VBUElfTUFYX1NUUklQRVMpDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog c3RydWN0IGlwdTNfdWFwaV9hZl9tZXRhX2RhdGEgLSBBRiBtZXRhIGRhdGENCj4gPiArICoNCj4g PiArICogQHlfdGFibGU6CUVhY2ggY29sb3IgY29tcG9uZW50IHdpbGwgYmUgY29udm9sdmVkIHNl cGFyYXRlbHkgd2l0aA0KPiBmaWx0ZXIxDQo+ID4gKyAqCQlhbmQgZmlsdGVyMiBhbmQgdGhlIHJl c3VsdCB3aWxsIGJlIHN1bW1lZCBvdXQgYW5kIGF2ZXJhZ2VkDQo+IGZvcg0KPiA+ICsgKgkJZWFj aCBjZWxsLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9hZl9tZXRhX2RhdGEgew0K PiA+ICsJX191OCB5X3RhYmxlW0lQVTNfVUFQSV9BRl9ZX1RBQkxFX01BWF9TSVpFXQ0KPiBfX2F0 dHJpYnV0ZV9fKChhbGlnbmVkKDMyKSkpOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfYWZfcmF3X2J1ZmZlciAtIEFGIHJhdyBidWZm ZXINCj4gPiArICoNCj4gPiArICogQG1ldGFfZGF0YTogcmF3IGJ1ZmZlciAmaXB1M191YXBpX2Fm X21ldGFfZGF0YSBmb3IgYXV0byBmb2N1cw0KPiBtZXRhIGRhdGEuDQo+ID4gKyAqLw0KPiA+ICtz dHJ1Y3QgaXB1M191YXBpX2FmX3Jhd19idWZmZXIgew0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9h Zl9tZXRhX2RhdGEgbWV0YV9kYXRhDQo+IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFw aV9hZl9jb25maWdfcyAtIEFGIGNvbmZpZw0KPiA+ICsgKg0KPiA+ICsgKiBAZmlsdGVyX2NvbmZp ZzogQUYgdXNlcyBZMSBhbmQgWTIgZmlsdGVycyBhcyBjb25maWd1cmVkIGluDQo+ID4gKyAqCQkg ICAmaXB1M191YXBpX2FmX2ZpbHRlcl9jb25maWcNCj4gPiArICogQHBhZGRpbmc6IHBhZGRpbmdz DQo+ID4gKyAqIEBncmlkX2NmZzogU2VlICZpcHUzX3VhcGlfZ3JpZF9jb25maWcsIGRlZmF1bHQg cmVzb2x1dGlvbiAxNngxNi4gVXNlDQo+IGxhcmdlDQo+ID4gKyAqCSAgICAgIGdyaWQgc2l6ZSBm b3IgbGFyZ2UgaW1hZ2UgYW5kIHZpY2UgdmVyc2EuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1 M191YXBpX2FmX2NvbmZpZ19zIHsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfYWZfZmlsdGVyX2Nv bmZpZyBmaWx0ZXJfY29uZmlnDQo+IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4g KwlfX3U4IHBhZGRpbmdbNF07DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2dyaWRfY29uZmlnIGdy aWRfY2ZnIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4gK30gX19wYWNrZWQ7DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9hZl9jb25maWcgLSBBRiBj b25maWcgd3JhcHBlcg0KPiA+ICsgKg0KPiA+ICsgKiBAY29uZmlnOiBjb25maWcgZm9yIGF1dG8g Zm9jdXMgYXMgZGVmaW5lZCBieSAmaXB1M191YXBpX2FmX2NvbmZpZ19zDQo+ID4gKyAqLw0KPiA+ ICtzdHJ1Y3QgaXB1M191YXBpX2FmX2NvbmZpZyB7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2Fm X2NvbmZpZ19zIGNvbmZpZzsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKyNkZWZpbmUg SVBVM19VQVBJX0FXQl9GUl9NQVhfU0VUUwkJCTI0DQo+ID4gKyNkZWZpbmUgSVBVM19VQVBJX0FX Ql9GUl9NRF9JVEVNX1NJWkUJCQk4DQo+ID4gKyNkZWZpbmUgSVBVM19VQVBJX0FXQl9GUl9CQVlF Ul9UQkxfU0laRQkJCTI1Ng0KPiA+ICsjZGVmaW5lIElQVTNfVUFQSV9BV0JfRlJfU1BBUkVfRk9S X0JVQkJMRVMgXA0KPiA+ICsJKElQVTNfVUFQSV9NQVhfQlVCQkxFX1NJWkUgKiBJUFUzX1VBUElf TUFYX1NUUklQRVMgKiBcDQo+ID4gKwkgSVBVM19VQVBJX0FXQl9GUl9NRF9JVEVNX1NJWkUpDQo+ ID4gKyNkZWZpbmUgSVBVM19VQVBJX0FXQl9GUl9CQVlFUl9UQUJMRV9NQVhfU0laRSBcDQo+ID4g KwkoSVBVM19VQVBJX0FXQl9GUl9NQVhfU0VUUyAqIFwNCj4gPiArCShJUFUzX1VBUElfQVdCX0ZS X0JBWUVSX1RCTF9TSVpFICsgXA0KPiA+ICsJIElQVTNfVUFQSV9BV0JfRlJfU1BBUkVfRk9SX0JV QkJMRVMpICoNCj4gSVBVM19VQVBJX01BWF9TVFJJUEVTKQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIHN0cnVjdCBpcHUzX3VhcGlfYXdiX2ZyX21ldGFfZGF0YSAtIEFXQiBmaWx0ZXIgcmVzcG9u c2UgbWV0YSBkYXRhDQo+ID4gKyAqDQo+ID4gKyAqIEBiYXllcl90YWJsZTogU3RhdGlzdGljcyBv dXRwdXQgb24gdGhlIGdyaWQgYWZ0ZXIgY29udm9sdmluZyB3aXRoIDFEDQo+IGZpbHRlci4NCj4g PiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfYXdiX2ZyX21ldGFfZGF0YSB7DQo+ID4gKwlf X3U4IGJheWVyX3RhYmxlW0lQVTNfVUFQSV9BV0JfRlJfQkFZRVJfVEFCTEVfTUFYX1NJWkVdDQo+ IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9hd2JfZnJfcmF3X2J1ZmZlciAtIEFX QiBmaWx0ZXIgcmVzcG9uc2UgcmF3IGJ1ZmZlcg0KPiA+ICsgKg0KPiA+ICsgKiBAbWV0YV9kYXRh OiBTZWUgJmlwdTNfdWFwaV9hd2JfZnJfbWV0YV9kYXRhLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0 IGlwdTNfdWFwaV9hd2JfZnJfcmF3X2J1ZmZlciB7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2F3 Yl9mcl9tZXRhX2RhdGEgbWV0YV9kYXRhOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfYXdiX2ZyX2NvbmZpZ19zIC0gQVdCIGZpbHRl ciByZXNwb25zZSBjb25maWcNCj4gPiArICoNCj4gPiArICogQGdyaWRfY2ZnOglncmlkIGNvbmZp ZywgZGVmYXVsdCAxNngxNi4NCj4gPiArICogQGJheWVyX2NvZWZmOgkxRCBGaWx0ZXIgMXgxMSBj ZW50ZXIgc3ltbWV0cnkvYW50aS1zeW1tZXRyeS4NCj4gPiArICoJCQljb2VmZmNpZW50cyBkZWZh dWx0cyB7IDAsIDAsIDAsIDAsIDAsIDEyOCB9Lg0KPiA+ICsgKgkJCUFwcGxpZWQgb24gd2hvbGUg aW1hZ2UgZm9yIGVhY2ggQmF5ZXIgY2hhbm5lbA0KPiBzZXBhcmF0ZWx5DQo+ID4gKyAqCQkJYnkg YSB3ZWlnaHRlZCBzdW0gb2YgaXRzIDExeDEgbmVpZ2hib3JzLg0KPiA+ICsgKiBAX19yZXNlcnZl ZDE6CXJlc2VydmVkDQo+ID4gKyAqIEBiYXllcl9zaWduOglzaWduIG9mIGZpbHRlciBjb2VmZmNp ZW50cywgZGVmYXVsdCAwLg0KPiA+ICsgKiBAYmF5ZXJfbmY6CW5vcm1hbGl6YXRpb24gZmFjdG9y IGZvciB0aGUgY29udm9sdXRpb24gY29lZmZzLCB0bw0KPiBtYWtlIHN1cmUNCj4gPiArICoJCXRv dGFsIG1lbW9yeSBuZWVkZWQgaXMgd2l0aGluIHByZS1kZXRlcm1pbmVkIHJhbmdlLg0KPiA+ICsg KgkJTkYgc2hvdWxkIGJlIHRoZSBsb2cyIG9mIHRoZSBzdW0gb2YgdGhlIGFicyB2YWx1ZXMgb2Yg dGhlDQo+ID4gKyAqCQlmaWx0ZXIgY29lZmZzLCByYW5nZSBbNywgMTRdLCBkZWZhdWx0IDcuDQo+ ID4gKyAqIEBfX3Jlc2VydmVkMjoJcmVzZXJ2ZWQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUz X3VhcGlfYXdiX2ZyX2NvbmZpZ19zIHsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfZ3JpZF9jb25m aWcgZ3JpZF9jZmc7DQo+ID4gKwlfX3U4IGJheWVyX2NvZWZmWzZdOw0KPiA+ICsJX191MTYgX19y ZXNlcnZlZDE7DQo+ID4gKwlfX3UzMiBiYXllcl9zaWduOw0KPiA+ICsJX191OCBiYXllcl9uZjsN Cj4gPiArCV9fdTggX19yZXNlcnZlZDJbM107DQo+ID4gK30gX19hdHRyaWJ1dGVfXygoYWxpZ25l ZCgzMikpKSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191 YXBpX2F3Yl9mcl9jb25maWcgLSBBV0IgZmlsdGVyIHJlc3BvbnNlIGNvbmZpZyB3cmFwcGVyDQo+ ID4gKyAqDQo+ID4gKyAqIEBjb25maWc6CVNlZSAmaXB1M191YXBpX2F3Yl9mcl9jb25maWdfcy4N Cj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfYXdiX2ZyX2NvbmZpZyB7DQo+ID4gKwlz dHJ1Y3QgaXB1M191YXBpX2F3Yl9mcl9jb25maWdfcyBjb25maWc7DQo+ID4gK30gX19wYWNrZWQ7 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV80YV9jb25maWcgLSA0 QSBjb25maWcNCj4gPiArICoNCj4gPiArICogQGF3Yl9jb25maWc6ICZpcHUzX3VhcGlfYXdiX2Nv bmZpZ19zLCBkZWZhdWx0IHJlc29sdXRpb24gMTZ4MTYNCj4gPiArICogQGFlX2dyZF9jb25maWc6 IGF1dG8gZXhwb3N1cmUgc3RhdGlzdGljcyAmaXB1M191YXBpX2FlX2dyaWRfY29uZmlnDQo+ID4g KyAqIEBwYWRkaW5nOiBwYWRkaW5ncw0KPiA+ICsgKiBAYWZfY29uZmlnOiBhdXRvIGZvY3VzIGNv bmZpZyAmaXB1M191YXBpX2FmX2NvbmZpZ19zDQo+ID4gKyAqIEBhd2JfZnJfY29uZmlnOiAmaXB1 M191YXBpX2F3Yl9mcl9jb25maWdfcywgZGVmYXVsdCByZXNvbHV0aW9uDQo+IDE2eDE2DQo+ID4g KyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpXzRhX2NvbmZpZyB7DQo+ID4gKwlzdHJ1Y3QgaXB1 M191YXBpX2F3Yl9jb25maWdfcyBhd2JfY29uZmlnDQo+IF9fYXR0cmlidXRlX18oKGFsaWduZWQo MzIpKSk7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2FlX2dyaWRfY29uZmlnIGFlX2dyZF9jb25m aWc7DQo+ID4gKwlfX3U4IHBhZGRpbmdbMjBdOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9hZl9j b25maWdfcyBhZl9jb25maWc7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2F3Yl9mcl9jb25maWdf cyBhd2JfZnJfY29uZmlnOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4g KyAqIHN0cnVjdCBpcHUzX3VhcGlfYnViYmxlX2luZm8gLSBCdWJibGUgaW5mbyBmb3IgaG9zdCBz aWRlIGRlYnVnZ2luZw0KPiA+ICsgKg0KPiA+ICsgKiBAbnVtX29mX3N0cmlwZXM6IEEgc2luZ2xl IGZyYW1lIGlzIGRpdmlkZWQgaW50byBzZXZlcmFsIHBhcnRzIGNhbGxlZA0KPiBzdHJpcGVzDQo+ ID4gKyAqCQkgICAgZHVlIHRvIGxpbWl0YXRpb24gb24gbGluZSBidWZmZXIgbWVtb3J5Lg0KPiA+ ICsgKgkJICAgIFRoZSBzZXBhcmF0aW9uIGJldHdlZW4gdGhlIHN0cmlwZXMgaXMgdmVydGljYWwu IEVhY2ggc3VjaA0KPiA+ICsgKgkJICAgIHN0cmlwZSBpcyBwcm9jZXNzZWQgYXMgYSBzaW5nbGUg ZnJhbWUgYnkgdGhlIElTUCBwaXBlLg0KPiA+ICsgKiBAcGFkZGluZzogcGFkZGluZyBieXRlcy4N Cj4gPiArICogQG51bV9zZXRzOiBudW1iZXIgb2Ygc2V0cy4NCj4gPiArICogQHBhZGRpbmcxOiBw YWRkaW5nIGJ5dGVzLg0KPiA+ICsgKiBAc2l6ZV9vZl9zZXQ6IHNldCBzaXplLg0KPiA+ICsgKiBA cGFkZGluZzI6IHBhZGRpbmcgYnl0ZXMuDQo+ID4gKyAqIEBidWJibGVfc2l6ZTogaXMgdGhlIGFt b3VudCBvZiBwYWRkaW5nIGluIHRoZSBidWJibGUgZXhwcmVzc2VkIGluDQo+ICJzZXRzIi4NCj4g PiArICogQHBhZGRpbmczOiBwYWRkaW5nIGJ5dGVzLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlw dTNfdWFwaV9idWJibGVfaW5mbyB7DQo+ID4gKwlfX3UzMiBudW1fb2Zfc3RyaXBlcyBfX2F0dHJp YnV0ZV9fKChhbGlnbmVkKDMyKSkpOw0KPiA+ICsJX191OCBwYWRkaW5nWzI4XTsNCj4gPiArCV9f dTMyIG51bV9zZXRzOw0KPiA+ICsJX191OCBwYWRkaW5nMVsyOF07DQo+ID4gKwlfX3UzMiBzaXpl X29mX3NldDsNCj4gPiArCV9fdTggcGFkZGluZzJbMjhdOw0KPiA+ICsJX191MzIgYnViYmxlX3Np emU7DQo+ID4gKwlfX3U4IHBhZGRpbmczWzI4XTsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ ID4gKy8qDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfc3RhdHNfM2FfYnViYmxlX2luZm9fcGVy X3N0cmlwZQ0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9zdGF0c18zYV9idWJibGVf aW5mb19wZXJfc3RyaXBlIHsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfYnViYmxlX2luZm8gYXdi W0lQVTNfVUFQSV9NQVhfU1RSSVBFU107DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2J1YmJsZV9p bmZvIGFmW0lQVTNfVUFQSV9NQVhfU1RSSVBFU107DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2J1 YmJsZV9pbmZvIGF3Yl9mcltJUFUzX1VBUElfTUFYX1NUUklQRVNdOw0KPiA+ICt9IF9fcGFja2Vk Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfZmZfc3RhdHVzIC0g RW5hYmxlIGJpdHMgZm9yIGVhY2ggM0EgZml4ZWQgZnVuY3Rpb24NCj4gPiArICoNCj4gPiArICog QGF3Yl9lbjogYXV0byB3aGl0ZSBiYWxhbmNlIGVuYWJsZQ0KPiA+ICsgKiBAcGFkZGluZzogcGFk ZGluZyBjb25maWcNCj4gPiArICogQGFlX2VuOiBhdXRvIGV4cG9zdXJlIGVuYWJsZQ0KPiA+ICsg KiBAcGFkZGluZzE6IHBhZGRpbmcgY29uZmlnDQo+ID4gKyAqIEBhZl9lbjogYXV0byBmb2N1cyBl bmFibGUNCj4gPiArICogQHBhZGRpbmcyOiBwYWRkaW5nIGNvbmZpZw0KPiA+ICsgKiBAYXdiX2Zy X2VuOiBhd2IgZmlsdGVyIHJlc3BvbnNlIGVuYWJsZSBiaXQNCj4gPiArICogQHBhZGRpbmczOiBw YWRkaW5nIGNvbmZpZw0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9mZl9zdGF0dXMg ew0KPiA+ICsJX191MzIgYXdiX2VuIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4g KwlfX3U4IHBhZGRpbmdbMjhdOw0KPiA+ICsJX191MzIgYWVfZW47DQo+ID4gKwlfX3U4IHBhZGRp bmcxWzI4XTsNCj4gPiArCV9fdTMyIGFmX2VuOw0KPiA+ICsJX191OCBwYWRkaW5nMlsyOF07DQo+ ID4gKwlfX3UzMiBhd2JfZnJfZW47DQo+ID4gKwlfX3U4IHBhZGRpbmczWzI4XTsNCj4gPiArfSBf X3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3N0YXRz XzNhIC0gM0Egc3RhdGlzdGljcw0KPiA+ICsgKg0KPiA+ICsgKiBAYXdiX3Jhd19idWZmZXI6IGF1 dG8gd2hpdGUgYmFsYW5jZSBtZXRhIGRhdGENCj4gJmlwdTNfdWFwaV9hd2JfcmF3X2J1ZmZlcg0K PiA+ICsgKiBAYWVfcmF3X2J1ZmZlcjogYXV0byBleHBvc3VyZSByYXcgZGF0YQ0KPiAmaXB1M191 YXBpX2FlX3Jhd19idWZmZXJfYWxpZ25lZA0KPiA+ICsgKiBAYWZfcmF3X2J1ZmZlcjogJmlwdTNf dWFwaV9hZl9yYXdfYnVmZmVyIGZvciBhdXRvIGZvY3VzIG1ldGEgZGF0YQ0KPiA+ICsgKiBAYXdi X2ZyX3Jhd19idWZmZXI6IHZhbHVlIGFzIHNwZWNpZmllZCBieQ0KPiAmaXB1M191YXBpX2F3Yl9m cl9yYXdfYnVmZmVyDQo+ID4gKyAqIEBzdGF0c180YV9jb25maWc6IDRhIHN0YXRpc3RpY3MgY29u ZmlnIGFzIGRlZmluZWQgYnkNCj4gJmlwdTNfdWFwaV80YV9jb25maWcuDQo+ID4gKyAqIEBhZV9q b2luX2J1ZmZlcnM6IDEgdG8gdXNlIGFlX3Jhd19idWZmZXIuDQo+ID4gKyAqIEBwYWRkaW5nOiBw YWRkaW5nIGNvbmZpZw0KPiA+ICsgKiBAc3RhdHNfM2FfYnViYmxlX3Blcl9zdHJpcGU6IGENCj4g JmlwdTNfdWFwaV9zdGF0c18zYV9idWJibGVfaW5mb19wZXJfc3RyaXBlDQo+ID4gKyAqIEBzdGF0 c18zYV9zdGF0dXM6IDNhIHN0YXRpc3RpY3Mgc3RhdHVzIHNldCBpbiAmaXB1M191YXBpX2ZmX3N0 YXR1cw0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9zdGF0c18zYSB7DQo+ID4gKwlz dHJ1Y3QgaXB1M191YXBpX2F3Yl9yYXdfYnVmZmVyIGF3Yl9yYXdfYnVmZmVyDQo+IF9fYXR0cmli dXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2FlX3Jhd19idWZm ZXJfYWxpZ25lZA0KPiA+ICsJCQlhZV9yYXdfYnVmZmVyW0lQVTNfVUFQSV9NQVhfU1RSSVBFU107 DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2FmX3Jhd19idWZmZXIgYWZfcmF3X2J1ZmZlcjsNCj4g PiArCXN0cnVjdCBpcHUzX3VhcGlfYXdiX2ZyX3Jhd19idWZmZXIgYXdiX2ZyX3Jhd19idWZmZXI7 DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpXzRhX2NvbmZpZyBzdGF0c180YV9jb25maWc7DQo+ID4g KwlfX3UzMiBhZV9qb2luX2J1ZmZlcnM7DQo+ID4gKwlfX3U4IHBhZGRpbmdbMjhdOw0KPiA+ICsJ c3RydWN0IGlwdTNfdWFwaV9zdGF0c18zYV9idWJibGVfaW5mb19wZXJfc3RyaXBlDQo+ID4gKwkJ CXN0YXRzXzNhX2J1YmJsZV9wZXJfc3RyaXBlOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9mZl9z dGF0dXMgc3RhdHNfM2Ffc3RhdHVzOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoq KioqKioqKioqKioqKioqKiogaXB1M191YXBpX2FjY19wYXJhbSAqKioqKioqKioqKioqKioqKioq Lw0KPiA+ICsNCj4gPiArI2RlZmluZSBJUFUzX1VBUElfSVNQX1ZFQ19FTEVNUwkJCQk2NA0KPiA+ ICsjZGVmaW5lIElQVTNfVUFQSV9JU1BfVE5SM19WTUVNX0xFTgkJCTkNCj4gPiArDQo+ID4gKyNk ZWZpbmUgSVBVM19VQVBJX0JOUl9MVVRfU0laRQkJCQkzMg0KPiA+ICsNCj4gPiArLyogbnVtYmVy IG9mIGVsZW1lbnRzIGluIGdhbW1hIGNvcnJlY3Rpb24gTFVUICovDQo+ID4gKyNkZWZpbmUgSVBV M19VQVBJX0dBTU1BX0NPUlJfTFVUX0VOVFJJRVMJCTI1Ng0KPiA+ICsNCj4gPiArLyogbGFyZ2Vz dCBncmlkIGlzIDczeDU2LCBmb3IgZ3JpZF9oZWlnaHRfcGVyX3NsaWNlIG9mIDIsIDczeDIgPSAx NDYgKi8NCj4gPiArI2RlZmluZSBJUFUzX1VBUElfU0hEX01BWF9DRUxMU19QRVJfU0VUCQkJMTQ2 DQo+ID4gKyNkZWZpbmUgSVBVM19VQVBJX1NIRF9NQVhfQ0ZHX1NFVFMJCQkyOA0KPiA+ICsvKiBO b3JtYWxpemF0aW9uIHNoaWZ0IGFrYSBuZiAqLw0KPiA+ICsjZGVmaW5lIElQVTNfVUFQSV9TSERf QkxHUl9ORl9TSElGVAkJCTEzDQo+ID4gKyNkZWZpbmUgSVBVM19VQVBJX1NIRF9CTEdSX05GX01B U0sJCQk3DQo+ID4gKw0KPiA+ICsjZGVmaW5lIElQVTNfVUFQSV9ZVVZQMl9UQ0NfTUFDQ19UQUJM RV9FTEVNRU5UUwkJMTYNCj4gPiArI2RlZmluZSBJUFUzX1VBUElfWVVWUDJfVENDX0lOVl9ZX0xV VF9FTEVNRU5UUwkJMTQNCj4gPiArI2RlZmluZSBJUFUzX1VBUElfWVVWUDJfVENDX0dBSU5fUENX TF9MVVRfRUxFTUVOVFMJMjU4DQo+ID4gKyNkZWZpbmUgSVBVM19VQVBJX1lVVlAyX1RDQ19SX1NR Ul9MVVRfRUxFTUVOVFMJCTI0DQo+ID4gKw0KPiA+ICsjZGVmaW5lIElQVTNfVUFQSV9BTlJfTFVU X1NJWkUJCQkJMjYNCj4gPiArI2RlZmluZSBJUFUzX1VBUElfQU5SX1BZUkFNSURfU0laRQkJCTIy DQo+ID4gKw0KPiA+ICsjZGVmaW5lIElQVTNfVUFQSV9MSU5fTFVUX1NJWkUJCQkJNjQNCj4gPiAr DQo+ID4gKy8qIEJheWVyIE5vaXNlIFJlZHVjdGlvbiByZWxhdGVkIHN0cnVjdHMgKi8NCj4gPiAr DQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2Jucl9zdGF0aWNfY29uZmlnX3di X2dhaW5zX2NvbmZpZyAtIFdoaXRlIGJhbGFuY2UNCj4gZ2FpbnMNCj4gPiArICoNCj4gPiArICog QGdyOgl3aGl0ZSBiYWxhbmNlIGdhaW4gZm9yIEdyIGNoYW5uZWwuDQo+ID4gKyAqIEByOgl3aGl0 ZSBiYWxhbmNlIGdhaW4gZm9yIFIgY2hhbm5lbC4NCj4gPiArICogQGI6CXdoaXRlIGJhbGFuY2Ug Z2FpbiBmb3IgQiBjaGFubmVsLg0KPiA+ICsgKiBAZ2I6CXdoaXRlIGJhbGFuY2UgZ2FpbiBmb3Ig R2IgY2hhbm5lbC4NCj4gPiArICoNCj4gPiArICogUHJlY2lzaW9uIHUzLjEzLCByYW5nZSBbMCwg OF0uIFdoaXRlIGJhbGFuY2UgY29ycmVjdGlvbiBpcyBkb25lIGJ5DQo+IGFwcGx5aW5nDQo+ID4g KyAqIGEgbXVsdGlwbGljYXRpdmUgZ2FpbiB0byBlYWNoIGNvbG9yIGNoYW5uZWxzIHByaW9yIHRv IEJOUi4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfYm5yX3N0YXRpY19jb25maWdf d2JfZ2FpbnNfY29uZmlnIHsNCj4gPiArCV9fdTE2IGdyOw0KPiA+ICsJX191MTYgcjsNCj4gPiAr CV9fdTE2IGI7DQo+ID4gKwlfX3UxNiBnYjsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2Jucl9zdGF0aWNfY29uZmlnX3diX2dhaW5z X3Rocl9jb25maWcgLSBUaHJlc2hvbGQNCj4gY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAqIEBncjoJ d2hpdGUgYmFsYW5jZSB0aHJlc2hvbGQgZ2FpbiBmb3IgR3IgY2hhbm5lbC4NCj4gPiArICogQHI6 CXdoaXRlIGJhbGFuY2UgdGhyZXNob2xkIGdhaW4gZm9yIFIgY2hhbm5lbC4NCj4gPiArICogQGI6 CXdoaXRlIGJhbGFuY2UgdGhyZXNob2xkIGdhaW4gZm9yIEIgY2hhbm5lbC4NCj4gPiArICogQGdi Ogl3aGl0ZSBiYWxhbmNlIHRocmVzaG9sZCBnYWluIGZvciBHYiBjaGFubmVsLg0KPiA+ICsgKg0K PiA+ICsgKiBEZWZpbmVzIHRoZSB0aHJlc2hvbGQgdGhhdCBzcGVjaWZpZXMgaG93IGRpZmZlcmVu dCBhIGRlZmVjdCBwaXhlbCBjYW4gYmUNCj4gZnJvbQ0KPiA+ICsgKiBpdHMgbmVpZ2hib3JzLih1 c2VkIGJ5IGR5bmFtaWMgZGVmZWN0IHBpeGVsIGNvcnJlY3Rpb24gc3ViIGJsb2NrKQ0KPiA+ICsg KiBQcmVjaXNpb24gdTQuNCByYW5nZSBbMCwgOF0uDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1 M191YXBpX2Jucl9zdGF0aWNfY29uZmlnX3diX2dhaW5zX3Rocl9jb25maWcgew0KPiA+ICsJX191 OCBncjsNCj4gPiArCV9fdTggcjsNCj4gPiArCV9fdTggYjsNCj4gPiArCV9fdTggZ2I7DQo+ID4g K30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9i bnJfc3RhdGljX2NvbmZpZ190aHJfY29lZmZzX2NvbmZpZyAtIE5vaXNlIG1vZGVsDQo+ID4gKyAq CQkJCWNvZWZmaWNpZW50cyB0aGF0IGNvbnRyb2xzIG5vaXNlIHRocmVzaG9sZA0KPiA+ICsgKg0K PiA+ICsgKiBAY2Y6CUZyZWUgY29lZmZpY2llbnQgZm9yIHRocmVzaG9sZCBjYWxjdWxhdGlvbiwg cmFuZ2UgWzAsIDgxOTFdLA0KPiBkZWZhdWx0IDAuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMDoJcmVz ZXJ2ZWQNCj4gPiArICogQGNnOglHYWluIGNvZWZmaWNpZW50IGZvciB0aHJlc2hvbGQgY2FsY3Vs YXRpb24sIFswLCAzMV0sIGRlZmF1bHQgOC4NCj4gPiArICogQGNpOglJbnRlbnNpdHkgY29lZmZp Y2llbnQgZm9yIHRocmVzaG9sZCBjYWxjdWxhdGlvbi4gcmFuZ2UgWzAsIDB4MWZdDQo+ID4gKyAq CWRlZmF1bHQgNi4NCj4gPiArICogCWZvcm1hdDogdTMuMiAoMyBtb3N0IHNpZ25pZmljYW50IGJp dHMgcmVwcmVzZW50IHdob2xlIG51bWJlciwNCj4gPiArICoJMiBsZWFzdCBzaWduaWZpY2FudCBi aXRzIHJlcHJlc2VudCB0aGUgZnJhY3Rpb25hbCBwYXJ0DQo+ID4gKyAqCXdpdGggZWFjaCBjb3Vu dCByZXByZXNlbnRpbmcgMC4yNSkNCj4gPiArICoJZS5nIDYgaW4gYmluYXJ5IGZvcm1hdCBpcyAw MDExMCwgdGhhdCB0cmFuc2xhdGVzIHRvIDEuNQ0KPiA+ICsgKiBAX19yZXNlcnZlZDE6CXJlc2Vy dmVkDQo+IA0KPiBXaHkgdXNlICdfXycgcHJlZml4PyBJdCBzZWVtcyB0byBtZSB0aGF0IGNhbGxp bmcgaXQgJ3Jlc2VydmVkMScgaXMganVzdCBmaW5lLg0KPiBVbmxlc3MgdGhlcmUgaXMgc29tZSBn b29kIHJlYXNvbiBmb3IgdGhpcywgcGxlYXNlIHJlbW92ZSB0aGUgX18gZnJvbSBzdWNoDQo+IGJp dGZpZWxkcyBpbiB0aGlzIGhlYWRlci4gVGhlIHVzZSBvZiAnX18nIGlzIHJlc2VydmVkIGZvciBj b21waWxlcnMgZXRjLg0KPiANCg0KQWNrLCB3aWxsIHJlbW92ZSAnX18nIHByZWZpeCBmb3IgcmVz ZXJ2ZWQgaW4gdGhpcyBmaWxlLg0KDQo+ID4gKyAqIEByX25mOglOb3JtYWxpemF0aW9uIHNoaWZ0 IHZhbHVlIGZvciByXjIgY2FsY3VsYXRpb24sIHJhbmdlIFsxMiwgMjBdDQo+ID4gKyAqCQl3aGVy ZSByIGlzIGEgcmFkaXVzIG9mIHBpeGVsIFtyb3csIGNvbF0gZnJvbSBjZW50b3Igb2Ygc2Vuc29y Lg0KPiA+ICsgKgkJZGVmYXVsdCAxNC4NCj4gPiArICoNCj4gPiArICogVGhyZXNob2xkIHVzZWQg dG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBub2lzZSBhbmQgZGV0YWlscy4NCj4gPiArICovDQo+ID4g K3N0cnVjdCBpcHUzX3VhcGlfYm5yX3N0YXRpY19jb25maWdfdGhyX2NvZWZmc19jb25maWcgew0K PiA+ICsJX191MzIgY2Y6MTM7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMDozOw0KPiA+ICsJX191 MzIgY2c6NTsNCj4gPiArCV9fdTMyIGNpOjU7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMToxOw0K PiA+ICsJX191MzIgcl9uZjo1Ow0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfYm5yX3N0YXRpY19jb25maWdfdGhyX2N0cmxfc2hkX2Nv bmZpZyAtIFNoYWRpbmcgY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAqIEBncjoJQ29lZmZpY2llbnQg ZGVmaW5lcyBsZW5zIHNoYWRpbmcgZ2FpbiBhcHByb3hpbWF0aW9uIGZvciBncg0KPiBjaGFubmVs DQo+ID4gKyAqIEByOglDb2VmZmljaWVudCBkZWZpbmVzIGxlbnMgc2hhZGluZyBnYWluIGFwcHJv eGltYXRpb24gZm9yIHINCj4gY2hhbm5lbA0KPiA+ICsgKiBAYjoJQ29lZmZpY2llbnQgZGVmaW5l cyBsZW5zIHNoYWRpbmcgZ2FpbiBhcHByb3hpbWF0aW9uIGZvciBiDQo+IGNoYW5uZWwNCj4gPiAr ICogQGdiOglDb2VmZmljaWVudCBkZWZpbmVzIGxlbnMgc2hhZGluZyBnYWluIGFwcHJveGltYXRp b24gZm9yIGdiDQo+IGNoYW5uZWwNCj4gPiArICoNCj4gPiArICogUGFyYW1ldGVycyBmb3Igbm9p c2UgbW9kZWwgKE5NKSBhZGFwdGF0aW9uIG9mIEJOUiBkdWUgdG8gc2hhZGluZw0KPiBjb3JyZWN0 aW9uLg0KPiA+ICsgKiBBbGwgYWJvdmUgaGF2ZSBwcmVjaXNpb24gb2YgdTMuMywgZGVmYXVsdCB0 byAwLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9ibnJfc3RhdGljX2NvbmZpZ190 aHJfY3RybF9zaGRfY29uZmlnIHsNCj4gPiArCV9fdTggZ3I7DQo+ID4gKwlfX3U4IHI7DQo+ID4g KwlfX3U4IGI7DQo+ID4gKwlfX3U4IGdiOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfYm5yX3N0YXRpY19jb25maWdfb3B0X2NlbnRl cl9jb25maWcgLSBPcHRpY2FsIGNlbnRlcg0KPiBjb25maWcNCj4gPiArICoNCj4gPiArICogQHhf cmVzZXQ6CVJlc2V0IHZhbHVlIG9mIFggKGNvbCBzdGFydCAtIFggY2VudGVyKS4gUHJlY2lzaW9u IHMxMi4wLg0KPiA+ICsgKiBAX19yZXNlcnZlZDA6CXJlc2VydmVkDQo+ID4gKyAqIEB5X3Jlc2V0 OglSZXNldCB2YWx1ZSBvZiBZIChyb3cgc3RhcnQgLSBZIGNlbnRlcikuIFByZWNpc2lvbiBzMTIu MC4NCj4gPiArICogQF9fcmVzZXJ2ZWQyOglyZXNlcnZlZA0KPiA+ICsgKg0KPiA+ICsgKiBEaXN0 YW5jZSBmcm9tIGNvcm5lciB0byBvcHRpY2FsIGNlbnRlciBmb3IgTk0gYWRhcHRhdGlvbiBkdWUg dG8NCj4gc2hhZGluZw0KPiA+ICsgKiBjb3JyZWN0aW9uIChzaG91bGQgYmUgY2FsY3VsYXRlZCBi YXNlZCBvbiBzaGFkaW5nIHRhYmxlcykNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlf Ym5yX3N0YXRpY19jb25maWdfb3B0X2NlbnRlcl9jb25maWcgew0KPiA+ICsJX19zMzIgeF9yZXNl dDoxMzsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQwOjM7DQo+ID4gKwlfX3MzMiB5X3Jlc2V0OjEz Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDI6MzsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2Jucl9zdGF0aWNfY29uZmlnX2x1dF9j b25maWcgLSBCTlIgc3F1YXJlIHJvb3QgbG9va3VwDQo+IHRhYmxlDQo+ID4gKyAqDQo+ID4gKyAq IEB2YWx1ZXM6IHByZS1jYWxjdWxhdGVkIHZhbHVlcyBvZiBzcXVhcmUgcm9vdCBmdW5jdGlvbi4N Cj4gPiArICoNCj4gPiArICogTFVUIGltcGxlbWVudGF0aW9uIG9mIHNxdWFyZSByb290IG9wZXJh dGlvbi4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfYm5yX3N0YXRpY19jb25maWdf bHV0X2NvbmZpZyB7DQo+ID4gKwlfX3U4IHZhbHVlc1tJUFUzX1VBUElfQk5SX0xVVF9TSVpFXTsN Cj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191 YXBpX2Jucl9zdGF0aWNfY29uZmlnX2JwX2N0cmxfY29uZmlnIC0gRGV0ZWN0IGJhZCBwaXhlbHMN Cj4gKGJwKQ0KPiA+ICsgKg0KPiA+ICsgKiBAYnBfdGhyX2dhaW46CURlZmluZXMgdGhlIHRocmVz aG9sZCB0aGF0IHNwZWNpZmllcyBob3cgZGlmZmVyZW50IGENCj4gPiArICoJCQlkZWZlY3QgcGl4 ZWwgY2FuIGJlIGZyb20gaXRzIG5laWdoYm9ycy4gVGhyZXNob2xkIGlzDQo+ID4gKyAqCQkJZGVw ZW5kZW50IG9uIGRlLW5vaXNlIHRocmVzaG9sZCBjYWxjdWxhdGVkIGJ5DQo+IGFsZ29yaXRobS4N Cj4gPiArICoJCQlSYW5nZSBbNCwgMzFdLCBkZWZhdWx0IDQuDQo+ID4gKyAqIEBfX3Jlc2VydmVk MDoJcmVzZXJ2ZWQNCj4gPiArICogQGRlZmVjdF9tb2RlOglNb2RlIG9mIGFkZHJlc3NlZCBkZWZl Y3QgcGl4ZWxzLA0KPiA+ICsgKgkJCTAgLSBzaW5nbGUgZGVmZWN0IHBpeGVsIGlzIGV4cGVjdGVk LA0KPiA+ICsgKgkJCTEgLSAyIGFkamFjZW50IGRlZmVjdCBwaXhlbHMgYXJlIGV4cGVjdGVkLCBk ZWZhdWx0IDEuDQo+ID4gKyAqIEBicF9nYWluOglEZWZpbmVzIGhvdyAybmQgZGVyaXZhdGlvbiB0 aGF0IHBhc3NlcyB0aHJvdWdoIGENCj4gZGVmZWN0IHBpeGVsDQo+ID4gKyAqCQlpcyBkaWZmZXJl bnQgZnJvbSAybmQgZGVyaXZhdGlvbnMgdGhhdCBwYXNzIHRocm91Z2gNCj4gPiArICoJCW5laWdo Ym9yIHBpeGVscy4gdTQuMiwgcmFuZ2UgWzAsIDI1Nl0sIGRlZmF1bHQgOC4NCj4gPiArICogQF9f cmVzZXJ2ZWQxOglyZXNlcnZlZA0KPiA+ICsgKiBAdzBfY29lZmY6CUJsZW5kaW5nIGNvZWZmaWNp ZW50IG9mIGRlZmVjdCBwaXhlbCBjb3JyZWN0aW9uLg0KPiA+ICsgKgkJUHJlY2lzaW9uIHU0LCBy YW5nZSBbMCwgOF0sIGRlZmF1bHQgOC4NCj4gPiArICogQF9fcmVzZXJ2ZWQyOglyZXNlcnZlZA0K PiA+ICsgKiBAdzFfY29lZmY6CUVuYWJsZSBpbmZsdWVuY2Ugb2YgaW5jb3JyZWN0IGRlZmVjdCBw aXhlbCBjb3JyZWN0aW9uDQo+IHRvIGJlDQo+ID4gKyAqCQlhdm9pZGVkLiBQcmVjaXNpb24gdTQs IHJhbmdlIFsxLCA4XSwgZGVmYXVsdCA4Lg0KPiA+ICsgKiBAX19yZXNlcnZlZDM6CXJlc2VydmVk DQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX2Jucl9zdGF0aWNfY29uZmlnX2JwX2N0 cmxfY29uZmlnIHsNCj4gPiArCV9fdTMyIGJwX3Rocl9nYWluOjU7DQo+ID4gKwlfX3UzMiBfX3Jl c2VydmVkMDoyOw0KPiA+ICsJX191MzIgZGVmZWN0X21vZGU6MTsNCj4gPiArCV9fdTMyIGJwX2dh aW46NjsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQxOjE4Ow0KPiA+ICsJX191MzIgdzBfY29lZmY6 NDsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQyOjQ7DQo+ID4gKwlfX3UzMiB3MV9jb2VmZjo0Ow0K PiA+ICsJX191MzIgX19yZXNlcnZlZDM6MjA7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9ibnJfc3RhdGljX2NvbmZpZ19kbl9kZXRl Y3RfY3RybF9jb25maWcgLSBEZW5vaXNpbmcNCj4gY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAqIEBh bHBoYToJV2VpZ2h0IG9mIGNlbnRyYWwgZWxlbWVudCBvZiBzbW9vdGhpbmcgZmlsdGVyLg0KPiA+ ICsgKiBAYmV0YToJV2VpZ2h0IG9mIHBlcmlwaGVyYWwgZWxlbWVudHMgb2Ygc21vb3RoaW5nIGZp bHRlciwgZGVmYXVsdCA0Lg0KPiA+ICsgKiBAZ2FtbWE6CVdlaWdodCBvZiBkaWFnb25hbCBlbGVt ZW50cyBvZiBzbW9vdGhpbmcgZmlsdGVyLCBkZWZhdWx0IDQuDQo+ID4gKyAqDQo+ID4gKyAqIGJl dGEgYW5kIGdhbW1hIHBhcmFtZXRlciBkZWZpbmUgdGhlIHN0cmVuZ3RoIG9mIHRoZSBub2lzZSBy ZW1vdmFsDQo+IGZpbHRlci4NCj4gPiArICoJCUFsbCBhYm92ZSBoYXMgcHJlY2lzaW9uIHUwLjQs IHJhbmdlIFswLCAweGZdDQo+ID4gKyAqCQlmb3JtYXQ6IHUwLjQgKG5vIC8gemVybyBiaXRzIHJl cHJlc2VudCB3aG9sZSBudW1iZXIsDQo+ID4gKyAqCQk0IGJpdHMgcmVwcmVzZW50IHRoZSBmcmFj dGlvbmFsIHBhcnQNCj4gPiArICoJCXdpdGggZWFjaCBjb3VudCByZXByZXNlbnRpbmcgMC4wNjI1 KQ0KPiA+ICsgKgkJZS5nIDB4ZiB0cmFuc2xhdGVzIHRvIDAuMDYyNXgxNSA9IDAuOTM3NQ0KPiAN Cj4gZS5nIC0+IGUuZy4NCj4gDQo+ID4gKyAqDQo+ID4gKyAqIEBfX3Jlc2VydmVkMDoJcmVzZXJ2 ZWQNCj4gPiArICogQG1heF9pbmY6CU1heGltdW0gaW5jcmVhc2Ugb2YgcGVyaXBoZXJhbCBvciBk aWFnb25hbCBlbGVtZW50DQo+IGluZmx1ZW5jZQ0KPiA+ICsgKgkJcmVsYXRpdmUgdG8gdGhlIHBy ZS1kZWZpbmVkIHZhbHVlIHJhbmdlOiBbMHg1LCAweGFdDQo+ID4gKyAqIEBfX3Jlc2VydmVkMToJ cmVzZXJ2ZWQNCj4gPiArICogQGdkX2VuYWJsZToJR3JlZW4gZGlzcGFyaXR5IGVuYWJsZSBjb250 cm9sLCAwIC0gZGlzYWJsZSwgMSAtIGVuYWJsZS4NCj4gPiArICogQGJwY19lbmFibGU6CUJhZCBw aXhlbCBjb3JyZWN0aW9uIGVuYWJsZSBjb250cm9sLCAwIC0gZGlzYWJsZSwgMSAtDQo+IGVuYWJs ZS4NCj4gPiArICogQGJucl9lbmFibGU6CUJheWVyIG5vaXNlIHJlbW92YWwgZW5hYmxlIGNvbnRy b2wsIDAgLSBkaXNhYmxlLCAxIC0NCj4gZW5hYmxlLg0KPiA+ICsgKiBAZmZfZW5hYmxlOglGaXhl ZCBmdW5jdGlvbiBlbmFibGUsIDAgLSBkaXNhYmxlLCAxIC0gZW5hYmxlLg0KPiA+ICsgKiBAX19y ZXNlcnZlZDI6CXJlc2VydmVkDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX2Jucl9z dGF0aWNfY29uZmlnX2RuX2RldGVjdF9jdHJsX2NvbmZpZyB7DQo+ID4gKwlfX3UzMiBhbHBoYTo0 Ow0KPiA+ICsJX191MzIgYmV0YTo0Ow0KPiA+ICsJX191MzIgZ2FtbWE6NDsNCj4gPiArCV9fdTMy IF9fcmVzZXJ2ZWQwOjQ7DQo+ID4gKwlfX3UzMiBtYXhfaW5mOjQ7DQo+ID4gKwlfX3UzMiBfX3Jl c2VydmVkMTo3Ow0KPiA+ICsJX191MzIgZ2RfZW5hYmxlOjE7DQo+ID4gKwlfX3UzMiBicGNfZW5h YmxlOjE7DQo+ID4gKwlfX3UzMiBibnJfZW5hYmxlOjE7DQo+ID4gKwlfX3UzMiBmZl9lbmFibGU6 MTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQyOjE7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9ibnJfc3RhdGljX2NvbmZpZ19vcHRf Y2VudGVyX3Nxcl9jb25maWcgLSBCTlIgb3B0aWNhbA0KPiBzcXVhcmUNCj4gPiArICoNCj4gPiAr ICogQHhfc3FyX3Jlc2V0OiBSZXNldCB2YWx1ZSBvZiBYXjIuDQo+ID4gKyAqIEB5X3Nxcl9yZXNl dDogUmVzZXQgdmFsdWUgb2YgWV4yLg0KPiA+ICsgKg0KPiA+ICsgKiBQbGVhc2Ugbm90ZToNCj4g PiArICoNCj4gPiArICogICAgIy4gWCBhbmQgWSByZWYgdG8NCj4gPiArICogICAgICAgJmlwdTNf dWFwaV9ibnJfc3RhdGljX2NvbmZpZ19vcHRfY2VudGVyX2NvbmZpZw0KPiA+ICsgKiAgICAjLiBC b3RoIHN0cnVjdHMgYXJlIHVzZWQgaW4gdGhyZXNob2xkIGZvcm11bGEgdG8gY2FsY3VsYXRlIHJe Miwgd2hlcmUgcg0KPiA+ICsgKiAgICAgICBpcyBhIHJhZGl1cyBvZiBwaXhlbCBbcm93LCBjb2xd IGZyb20gY2VudG9yIG9mIHNlbnNvci4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlf Ym5yX3N0YXRpY19jb25maWdfb3B0X2NlbnRlcl9zcXJfY29uZmlnIHsNCj4gPiArCV9fdTMyIHhf c3FyX3Jlc2V0Ow0KPiA+ICsJX191MzIgeV9zcXJfcmVzZXQ7DQo+ID4gK30gX19wYWNrZWQ7DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9ibnJfc3RhdGljX2NvbmZp ZyAtIEJOUiBzdGF0aWMgY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAqIEB3Yl9nYWluczoJd2hpdGUg YmFsYW5jZSBnYWlucw0KPiAmaXB1M191YXBpX2Jucl9zdGF0aWNfY29uZmlnX3diX2dhaW5zX2Nv bmZpZw0KPiA+ICsgKiBAd2JfZ2FpbnNfdGhyOgl3aGl0ZSBiYWxhbmNlIGdhaW5zIHRocmVzaG9s ZCBhcyBkZWZpbmVkIGJ5DQo+ID4gKyAqCQkJJmlwdTNfdWFwaV9ibnJfc3RhdGljX2NvbmZpZ193 Yl9nYWluc190aHJfY29uZmlnDQo+ID4gKyAqIEB0aHJfY29lZmZzOgljb2VmZmljaWVudHMgb2Yg dGhyZXNob2xkDQo+ID4gKyAqCQkmaXB1M191YXBpX2Jucl9zdGF0aWNfY29uZmlnX3Rocl9jb2Vm ZnNfY29uZmlnDQo+ID4gKyAqIEB0aHJfY3RybF9zaGQ6CWNvbnRyb2wgb2Ygc2hhZGluZyB0aHJl c2hvbGQNCj4gPiArICoJCQkmaXB1M191YXBpX2Jucl9zdGF0aWNfY29uZmlnX3Rocl9jdHJsX3No ZF9jb25maWcNCj4gPiArICogQG9wdF9jZW50ZXI6CW9wdGljYWwgY2VudGVyDQo+ICZpcHUzX3Vh cGlfYm5yX3N0YXRpY19jb25maWdfb3B0X2NlbnRlcl9jb25maWcNCj4gPiArICoNCj4gPiArICog QWJvdmUgcGFyYW1ldGVycyBhbmQgb3B0X2NlbnRlcl9zcXIgYXJlIHVzZWQgZm9yIHdoaXRlIGJh bGFuY2UgYW5kDQo+IHNoYWRpbmcuDQo+ID4gKyAqDQo+ID4gKyAqIEBsdXQ6CWxvb2t1cCB0YWJs ZSAmaXB1M191YXBpX2Jucl9zdGF0aWNfY29uZmlnX2x1dF9jb25maWcNCj4gPiArICogQGJwX2N0 cmw6CWRldGVjdCBhbmQgcmVtb3ZlIGJhZCBwaXhlbHMgYXMgZGVmaW5lZCBpbiBzdHJ1Y3QNCj4g PiArICoJCSZpcHUzX3VhcGlfYm5yX3N0YXRpY19jb25maWdfYnBfY3RybF9jb25maWcNCj4gPiAr ICogQGRuX2RldGVjdF9jdHJsOglkZXRlY3QgYW5kIHJlbW92ZSBub2lzZS4NCj4gPiArICoJCQkm aXB1M191YXBpX2Jucl9zdGF0aWNfY29uZmlnX2RuX2RldGVjdF9jdHJsX2NvbmZpZw0KPiA+ICsg KiBAY29sdW1uX3NpemU6CVRoZSBudW1iZXIgb2YgcGl4ZWxzIGluIGNvbHVtbi4NCj4gPiArICog QG9wdF9jZW50ZXJfc3FyOglSZXNldCB2YWx1ZSBvZiByXjIgdG8gb3B0aWNhbCBjZW50ZXIsIHNl ZQ0KPiA+ICsgKg0KPiAJJmlwdTNfdWFwaV9ibnJfc3RhdGljX2NvbmZpZ19vcHRfY2VudGVyX3Nx cl9jb25maWcuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX2Jucl9zdGF0aWNfY29u ZmlnIHsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfYm5yX3N0YXRpY19jb25maWdfd2JfZ2FpbnNf Y29uZmlnIHdiX2dhaW5zOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9ibnJfc3RhdGljX2NvbmZp Z193Yl9nYWluc190aHJfY29uZmlnDQo+IHdiX2dhaW5zX3RocjsNCj4gPiArCXN0cnVjdCBpcHUz X3VhcGlfYm5yX3N0YXRpY19jb25maWdfdGhyX2NvZWZmc19jb25maWcgdGhyX2NvZWZmczsNCj4g PiArCXN0cnVjdCBpcHUzX3VhcGlfYm5yX3N0YXRpY19jb25maWdfdGhyX2N0cmxfc2hkX2NvbmZp ZyB0aHJfY3RybF9zaGQ7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2Jucl9zdGF0aWNfY29uZmln X29wdF9jZW50ZXJfY29uZmlnIG9wdF9jZW50ZXI7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2Ju cl9zdGF0aWNfY29uZmlnX2x1dF9jb25maWcgbHV0Ow0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9i bnJfc3RhdGljX2NvbmZpZ19icF9jdHJsX2NvbmZpZyBicF9jdHJsOw0KPiA+ICsJc3RydWN0IGlw dTNfdWFwaV9ibnJfc3RhdGljX2NvbmZpZ19kbl9kZXRlY3RfY3RybF9jb25maWcNCj4gZG5fZGV0 ZWN0X2N0cmw7DQo+ID4gKwlfX3UzMiBjb2x1bW5fc2l6ZTsNCj4gPiArCXN0cnVjdCBpcHUzX3Vh cGlfYm5yX3N0YXRpY19jb25maWdfb3B0X2NlbnRlcl9zcXJfY29uZmlnDQo+IG9wdF9jZW50ZXJf c3FyOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBp cHUzX3VhcGlfYm5yX3N0YXRpY19jb25maWdfZ3JlZW5fZGlzcGFyaXR5IC0gQ29ycmVjdCBncmVl bg0KPiBkaXNwYXJpdHkNCj4gPiArICoNCj4gPiArICogQGdkX3JlZDoJU2hhZGluZyBnYWluIGNv ZWZmIGZvciBnciBkaXNwYXJpdHkgbGV2ZWwgaW4gYnJpZ2h0IHJlZCByZWdpb24uDQo+ID4gKyAq CQlQcmVjaXNpb24gdTAuNiwgZGVmYXVsdCA0KDAuMDYyNSkuDQo+ID4gKyAqIEBfX3Jlc2VydmVk MDoJcmVzZXJ2ZWQNCj4gPiArICogQGdkX2dyZWVuOglTaGFkaW5nIGdhaW4gY29lZmYgZm9yIGdy IGRpc3Bhcml0eSBsZXZlbCBpbiBicmlnaHQNCj4gZ3JlZW4NCj4gPiArICoJCXJlZ2lvbi4gUHJl Y2lzaW9uIHUwLjYsIGRlZmF1bHQgNCgwLjA2MjUpLg0KPiA+ICsgKiBAX19yZXNlcnZlZDE6CXJl c2VydmVkDQo+ID4gKyAqIEBnZF9ibHVlOglTaGFkaW5nIGdhaW4gY29lZmYgZm9yIGdyIGRpc3Bh cml0eSBsZXZlbCBpbiBicmlnaHQgYmx1ZQ0KPiByZWdpb24uDQo+ID4gKyAqCQlQcmVjaXNpb24g dTAuNiwgZGVmYXVsdCA0KDAuMDYyNSkuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMjoJcmVzZXJ2ZWQN Cj4gPiArICogQGdkX2JsYWNrOglNYXhpbWFsIGdyZWVuIGRpc3Bhcml0eSBsZXZlbCBpbiBkYXJr IHJlZ2lvbiAoc3Ryb25nZXINCj4gZGlzcGFyaXR5DQo+ID4gKyAqCQlhc3N1bWVkIHRvIGJlIGlt YWdlIGRldGFpbCkuIFByZWNpc2lvbiB1MTQsIGRlZmF1bHQgODAuDQo+ID4gKyAqIEBfX3Jlc2Vy dmVkMzoJcmVzZXJ2ZWQNCj4gPiArICogQGdkX3NoYWRpbmc6CUNoYW5nZSBtYXhpbWFsIGdyZWVu IGRpc3Bhcml0eSBsZXZlbCBhY2NvcmRpbmcgdG8NCj4gc3F1YXJlDQo+ID4gKyAqCQlkaXN0YW5j ZSBmcm9tIGltYWdlIGNlbnRlci4NCj4gPiArICogQF9fcmVzZXJ2ZWQ0OglyZXNlcnZlZA0KPiA+ ICsgKiBAZ2Rfc3VwcG9ydDoJTG93ZXIgYm91bmQgZm9yIHRoZSBudW1iZXIgb2Ygc2Vjb25kIGdy ZWVuIGNvbG9yDQo+IHBpeGVscyBpbg0KPiA+ICsgKgkJY3VycmVudCBwaXhlbCBuZWlnaGJvcmhv b2Qgd2l0aCBsZXNzIHRoYW4gdGhyZXNob2xkDQo+IGRpZmZlcmVuY2UNCj4gPiArICoJCWZyb20g aXQuDQo+ID4gKyAqDQo+ID4gKyAqIFRoZSBzaGFkaW5nIGdhaW4gY29lZmYgb2YgcmVkLCBncmVl biwgYmx1ZSBhbmQgYmxhY2sgYXJlIHVzZWQgdG8NCj4gY2FsY3VsYXRlDQo+ID4gKyAqIHRocmVz aG9sZCBnaXZlbiBhIHBpeGVsJ3MgY29sb3IgdmFsdWUgYW5kIGl0cyBjb29yZGluYXRlcyBpbiB0 aGUgaW1hZ2UuDQo+ID4gKyAqDQo+ID4gKyAqIEBfX3Jlc2VydmVkNToJcmVzZXJ2ZWQNCj4gPiAr ICogQGdkX2NsaXA6CVR1cm4gZ3JlZW4gZGlzcGFyaXR5IGNsaXAgb24vb2ZmLCBbMCwgMV0sIGRl ZmF1bHQgMS4NCj4gPiArICogQGdkX2NlbnRyYWxfd2VpZ2h0OglDZW50cmFsIHBpeGVsIHdlaWdo dCBpbiA5IHBpeGVscyB3ZWlnaHRlZCBzdW0uDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191 YXBpX2Jucl9zdGF0aWNfY29uZmlnX2dyZWVuX2Rpc3Bhcml0eSB7DQo+ID4gKwlfX3UzMiBnZF9y ZWQ6NjsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQwOjI7DQo+ID4gKwlfX3UzMiBnZF9ncmVlbjo2 Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDE6MjsNCj4gPiArCV9fdTMyIGdkX2JsdWU6NjsNCj4g PiArCV9fdTMyIF9fcmVzZXJ2ZWQyOjEwOw0KPiA+ICsJX191MzIgZ2RfYmxhY2s6MTQ7DQo+ID4g KwlfX3UzMiBfX3Jlc2VydmVkMzoyOw0KPiA+ICsJX191MzIgZ2Rfc2hhZGluZzo3Ow0KPiA+ICsJ X191MzIgX19yZXNlcnZlZDQ6MTsNCj4gPiArCV9fdTMyIGdkX3N1cHBvcnQ6MjsNCj4gPiArCV9f dTMyIF9fcmVzZXJ2ZWQ1OjE7DQo+ID4gKwlfX3UzMiBnZF9jbGlwOjE7DQo+ID4gKwlfX3UzMiBn ZF9jZW50cmFsX3dlaWdodDo0Ow0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfZG1fY29uZmlnIC0gRGUtbW9zYWljIHBhcmFtZXRlcnMN Cj4gPiArICoNCj4gPiArICogQGRtX2VuOglkZS1tb3NhaWMgZW5hYmxlLg0KPiA+ICsgKiBAY2hf YXJfZW46CUNoZWNrZXIgYXJ0aWZhY3RzIHJlbW92YWwgZW5hYmxlIGZsYWcuIERlZmF1bHQgMC4N Cj4gPiArICogQGZjY19lbjoJRmFsc2UgY29sb3IgY29ycmVjdGlvbiAoRkNDKSBlbmFibGUgZmxh Zy4gRGVmYXVsdCAwLg0KPiA+ICsgKiBAX19yZXNlcnZlZDA6CXJlc2VydmVkDQo+ID4gKyAqIEBm cmFtZV93aWR0aDoJZG8gbm90IGNhcmUNCj4gPiArICogQGdhbW1hX3NjOglTaGFycGVuaW5nIGNv ZWZmaWNpZW50IChjb2VmZmljaWVudCBvZiAyLWQgZGVyaXZhdGlvbg0KPiBvZg0KPiA+ICsgKgkJ Y29tcGxlbWVudGFyeSBjb2xvciBpbiBIYW1pbHRvbi1BZGFtcyBpbnRlcnBvbGF0aW9uKS4NCj4g PiArICoJCXU1LCByYW5nZSBbMCwgMzFdLCBkZWZhdWx0IDguDQo+ID4gKyAqIEBfX3Jlc2VydmVk MToJcmVzZXJ2ZWQNCj4gPiArICogQGxjX2N0cmw6CVBhcmFtZXRlciB0aGF0IGNvbnRyb2xzIHdl aWdodHMgb2YgQ2hyb21hIEhvbW9nZW5laXR5DQo+IG1ldHJpYw0KPiA+ICsgKgkJaW4gY2FsY3Vs YXRpb24gb2YgZmluYWwgaG9tb2dlbmVpdHkgbWV0cmljLg0KPiA+ICsgKgkJdTUsIHJhbmdlIFsw LCAzMV0sIGRlZmF1bHQgNy4NCj4gPiArICogQF9fcmVzZXJ2ZWQyOglyZXNlcnZlZA0KPiA+ICsg KiBAY3JfcGFyYW0xOglGaXJzdCBwYXJhbWV0ZXIgdGhhdCBkZWZpbmVzIENoZWNrZXIgYXJ0aWZh Y3QgcmVtb3ZhbA0KPiA+ICsgKgkJZmVhdHVyZSBnYWluLlByZWNpc2lvbiB1NSwgcmFuZ2UgWzAs IDMxXSwgZGVmYXVsdCA4Lg0KPiANCj4gQWRkIHNwYWNlIGJlZm9yZSAnUHJlY2lzaW9uJw0KDQpB Y2suDQoNCj4gDQo+ID4gKyAqIEBfX3Jlc2VydmVkMzoJcmVzZXJ2ZWQNCj4gPiArICogQGNyX3Bh cmFtMjoJU2Vjb25kIHBhcmFtZXRlciB0aGF0IGRlZmluZXMgQ2hlY2tlciBhcnRpZmFjdA0KPiBy ZW1vdmFsDQo+ID4gKyAqCQlmZWF0dXJlIGdhaW4uIFByZWNpc2lvbiB1NSwgcmFuZ2UgWzAsIDMx XSwgZGVmYXVsdCA4Lg0KPiA+ICsgKiBAX19yZXNlcnZlZDQ6CXJlc2VydmVkDQo+ID4gKyAqIEBj b3JpbmdfcGFyYW06CURlZmluZXMgcG93ZXIgb2YgZmFsc2UgY29sb3IgY29ycmVjdGlvbiBvcGVy YXRpb24uDQo+ID4gKyAqCQkJbG93IGZvciBwcmVzZXJ2aW5nIGVkZ2UgY29sb3JzLCBoaWdoIGZv ciBwcmVzZXJ2aW5nDQo+IGdyYXkNCj4gPiArICoJCQllZGdlIGFydGlmYWN0cy4gdTEuNCwgcmFu Z2UgWzAsIDEuOTM3NV0sIGRlZmF1bHQgNCgwLjI1KS4NCj4gDQo+IEFkZCBzcGFjZSBhZnRlciAi ZGVmYXVsdCA0Ii4NCj4gDQoNCkFjay4NCg0KPiA+ICsgKiBAX19yZXNlcnZlZDU6CXJlc2VydmVk DQo+ID4gKyAqDQo+ID4gKyAqIFRoZSBkZW1vc2FpYyBmaXhlZCBmdW5jdGlvbiBibG9jayBpcyBy ZXNwb25zaWJsZSB0byBjb3ZlcnQNCj4gQmF5ZXIobW9zYWljZWQpDQo+ID4gKyAqIGltYWdlcyBp bnRvIGNvbG9yIGltYWdlcyBiYXNlZCBvbiBkZW1vc2FpY2luZyBhbGdvcml0aG0uDQo+ID4gKyAq Lw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX2RtX2NvbmZpZyB7DQo+ID4gKwlfX3UzMiBkbV9lbjox Ow0KPiA+ICsJX191MzIgY2hfYXJfZW46MTsNCj4gPiArCV9fdTMyIGZjY19lbjoxOw0KPiA+ICsJ X191MzIgX19yZXNlcnZlZDA6MTM7DQo+ID4gKwlfX3UzMiBmcmFtZV93aWR0aDoxNjsNCj4gPiAr DQo+ID4gKwlfX3UzMiBnYW1tYV9zYzo1Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDE6MzsNCj4g PiArCV9fdTMyIGxjX2N0cmw6NTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQyOjM7DQo+ID4gKwlf X3UzMiBjcl9wYXJhbTE6NTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQzOjM7DQo+ID4gKwlfX3Uz MiBjcl9wYXJhbTI6NTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQ0OjM7DQo+ID4gKw0KPiA+ICsJ X191MzIgY29yaW5nX3BhcmFtOjU7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkNToyNzsNCj4gPiAr fSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2Nj bV9tYXRfY29uZmlnIC0gQ29sb3IgY29ycmVjdGlvbiBtYXRyaXgNCj4gPiArICoNCj4gPiArICog QGNvZWZmX20xMTogQ0NNIDN4MyBjb2VmZmljaWVudCwgcmFuZ2UgWy02NTUzNiwgNjU1MzVdDQo+ ID4gKyAqIEBjb2VmZl9tMTI6IENDTSAzeDMgY29lZmZpY2llbnQsIHJhbmdlIFstODE5MiwgODE5 MV0NCj4gPiArICogQGNvZWZmX20xMzogQ0NNIDN4MyBjb2VmZmljaWVudCwgcmFuZ2UgWy0zMjc2 OCwgMzI3NjddDQo+ID4gKyAqIEBjb2VmZl9vX3I6IEJpYXMgM3gxIGNvZWZmaWNpZW50LCByYW5n ZSBbLTgxOTEsIDgxODFdDQo+ID4gKyAqIEBjb2VmZl9tMjE6IENDTSAzeDMgY29lZmZpY2llbnQs IHJhbmdlIFstMzI3NjcsIDMyNzY3XQ0KPiA+ICsgKiBAY29lZmZfbTIyOiBDQ00gM3gzIGNvZWZm aWNpZW50LCByYW5nZSBbLTgxOTIsIDgxOTFdDQo+ID4gKyAqIEBjb2VmZl9tMjM6IENDTSAzeDMg Y29lZmZpY2llbnQsIHJhbmdlIFstMzI3NjgsIDMyNzY3XQ0KPiA+ICsgKiBAY29lZmZfb19nOiBC aWFzIDN4MSBjb2VmZmljaWVudCwgcmFuZ2UgWy04MTkxLCA4MTgxXQ0KPiA+ICsgKiBAY29lZmZf bTMxOiBDQ00gM3gzIGNvZWZmaWNpZW50LCByYW5nZSBbLTMyNzY4LCAzMjc2N10NCj4gPiArICog QGNvZWZmX20zMjogQ0NNIDN4MyBjb2VmZmljaWVudCwgcmFuZ2UgWy04MTkyLCA4MTkxXQ0KPiA+ ICsgKiBAY29lZmZfbTMzOiBDQ00gM3gzIGNvZWZmaWNpZW50LCByYW5nZSBbLTMyNzY4LCAzMjc2 N10NCj4gPiArICogQGNvZWZmX29fYjogQmlhcyAzeDEgY29lZmZpY2llbnQsIHJhbmdlIFstODE5 MSwgODE4MV0NCj4gPiArICoNCj4gPiArICogVHJhbnNmb3JtIHNlbnNvciBzcGVjaWZpYyBjb2xv ciBzcGFjZSB0byBzdGFuZGFyZCBzUkdCIGJ5IGFwcGx5aW5nIDN4Mw0KPiBtYXRyaXgNCj4gPiAr ICogYW5kIGFkZGluZyBhIGJpYXMgdmVjdG9yIE8uIFRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBiYXNp Y2FsbHkgYSByb3RhdGlvbg0KPiBhbmQNCj4gPiArICogdHJhbnNsYXRpb24gaW4gdGhlIDMtZGlt ZW5zaW9uYWwgY29sb3Igc3BhY2VzLiBIZXJlIGFyZSB0aGUgZGVmYXVsdHM6DQo+ID4gKyAqDQo+ ID4gKyAqCTk3NzUsCS0yNjcxLAkxMDg3LAkwDQo+ID4gKyAqCS0xMDcxLAk4MzAzLAk4MTUsCTAN Cj4gPiArICoJLTIzLAktNzg4NywJMTYxMDMsCTANCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUz X3VhcGlfY2NtX21hdF9jb25maWcgew0KPiA+ICsJX19zMTYgY29lZmZfbTExOw0KPiA+ICsJX19z MTYgY29lZmZfbTEyOw0KPiA+ICsJX19zMTYgY29lZmZfbTEzOw0KPiA+ICsJX19zMTYgY29lZmZf b19yOw0KPiA+ICsJX19zMTYgY29lZmZfbTIxOw0KPiA+ICsJX19zMTYgY29lZmZfbTIyOw0KPiA+ ICsJX19zMTYgY29lZmZfbTIzOw0KPiA+ICsJX19zMTYgY29lZmZfb19nOw0KPiA+ICsJX19zMTYg Y29lZmZfbTMxOw0KPiA+ICsJX19zMTYgY29lZmZfbTMyOw0KPiA+ICsJX19zMTYgY29lZmZfbTMz Ow0KPiA+ICsJX19zMTYgY29lZmZfb19iOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfZ2FtbWFfY29ycl9jdHJsIC0gR2FtbWEgY29y cmVjdGlvbg0KPiA+ICsgKg0KPiA+ICsgKiBAZW5hYmxlOiBnYW1tYSBjb3JyZWN0aW9uIGVuYWJs ZS4NCj4gPiArICogQF9fcmVzZXJ2ZWQ6IHJlc2VydmVkDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3Qg aXB1M191YXBpX2dhbW1hX2NvcnJfY3RybCB7DQo+ID4gKwlfX3UzMiBlbmFibGU6MTsNCj4gPiAr CV9fdTMyIF9fcmVzZXJ2ZWQ6MzE7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9nYW1tYV9jb3JyX2x1dCAtIFBlci1waXhlbCB0b25l IG1hcHBpbmcNCj4gaW1wbGVtZW50ZWQgYXMgTFVULg0KPiA+ICsgKg0KPiA+ICsgKiBAbHV0Ogky NTYgdGFidWxhdGVkIHZhbHVlcyBvZiB0aGUgZ2FtbWEgZnVuY3Rpb24uIExVVFsxXS4uDQo+IExV VFsyNTZdDQo+ID4gKyAqCQlmb3JtYXQgdTEzLjAsIHJhbmdlIFswLCA4MTkxXS4NCj4gPiArICoN Cj4gPiArICogVGhlIHRvbmUgbWFwcGluZyBvcGVyYXRpb24gaXMgZG9uZSBieSBhIFBpZWNlIHdp c2UgbGluZWFyIGdyYXBoDQo+ID4gKyAqIHRoYXQgaXMgaW1wbGVtZW50ZWQgYXMgYSBsb29rdXAg dGFibGUoTFVUKS4gVGhlIHBpeGVsIGNvbXBvbmVudCBpbnB1dA0KPiA+ICsgKiBpbnRlbnNpdHkg aXMgdGhlIFgtYXhpcyBvZiB0aGUgZ3JhcGggd2hpY2ggaXMgdGhlIHRhYmxlIGVudHJ5Lg0KPiA+ ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9nYW1tYV9jb3JyX2x1dCB7DQo+ID4gKwlfX3Ux NiBsdXRbSVBVM19VQVBJX0dBTU1BX0NPUlJfTFVUX0VOVFJJRVNdOw0KPiA+ICt9IF9fcGFja2Vk Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfZ2FtbWFfY29uZmln IC0gR2FtbWEgY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAqIEBnY19jdHJsOiBjb250cm9sIG9mIGdh bW1hIGNvcnJlY3Rpb24gJmlwdTNfdWFwaV9nYW1tYV9jb3JyX2N0cmwNCj4gPiArICogQGdjX2x1 dDogbG9va3VwIHRhYmxlIG9mIGdhbW1hIGNvcnJlY3Rpb24NCj4gJmlwdTNfdWFwaV9nYW1tYV9j b3JyX2x1dA0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9nYW1tYV9jb25maWcgew0K PiA+ICsJc3RydWN0IGlwdTNfdWFwaV9nYW1tYV9jb3JyX2N0cmwgZ2NfY3RybA0KPiBfX2F0dHJp YnV0ZV9fKChhbGlnbmVkKDMyKSkpOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9nYW1tYV9jb3Jy X2x1dCBnY19sdXQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCj4gPiArfSBfX3BhY2tl ZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2NzY19tYXRfY29u ZmlnIC0gQ29sb3Igc3BhY2UgY29udmVyc2lvbiBtYXRyaXggY29uZmlnDQo+ID4gKyAqDQo+ID4g KyAqIEBjb2VmZl9jMTE6CUNvbnZlcnNpb24gbWF0cml4IHZhbHVlLCBmb3JtYXQgczAuMTQsIHJh bmdlIFstMSwgMV0sDQo+IGRlZmF1bHQgMS4NCj4gPiArICogQGNvZWZmX2MxMjoJQ29udmVyc2lv biBtYXRyaXggdmFsdWUsIGZvcm1hdCBzMC4xNCwgcmFuZ2UgWy0xLCAxXSwNCj4gZGVmYXVsdCAw Lg0KPiA+ICsgKiBAY29lZmZfYzEzOglDb252ZXJzaW9uIG1hdHJpeCB2YWx1ZSwgZm9ybWF0IHMw LjE0LCByYW5nZSBbLTEsIDFdLA0KPiBkZWZhdWx0IDAuDQo+ID4gKyAqIEBjb2VmZl9iMToJQmlh cyAzeDEgY29lZmZpY2llbnQsIHMxMywwIHJhbmdlIFstODE5MSwgODE4MV0sDQo+IGRlZmF1bHQg MC4NCj4gPiArICogQGNvZWZmX2MyMToJQ29udmVyc2lvbiBtYXRyaXggdmFsdWUsIGZvcm1hdCBz MC4xNCwgcmFuZ2UgWy0xLCAxXSwNCj4gZGVmYXVsdCAwLg0KPiA+ICsgKiBAY29lZmZfYzIyOglD b252ZXJzaW9uIG1hdHJpeCB2YWx1ZSwgZm9ybWF0IHMwLjE0LCByYW5nZSBbLTEsIDFdLA0KPiBk ZWZhdWx0IDEuDQo+ID4gKyAqIEBjb2VmZl9jMjM6CUNvbnZlcnNpb24gbWF0cml4IHZhbHVlLCBm b3JtYXQgczAuMTQsIHJhbmdlIFstMSwgMV0sDQo+IGRlZmF1bHQgMC4NCj4gPiArICogQGNvZWZm X2IyOglCaWFzIDN4MSBjb2VmZmljaWVudCwgczEzLDAgcmFuZ2UgWy04MTkxLCA4MTgxXSwNCj4g ZGVmYXVsdCAwLg0KPiA+ICsgKiBAY29lZmZfYzMxOglDb252ZXJzaW9uIG1hdHJpeCB2YWx1ZSwg Zm9ybWF0IHMwLjE0LCByYW5nZSBbLTEsIDFdLA0KPiBkZWZhdWx0IDAuDQo+ID4gKyAqIEBjb2Vm Zl9jMzI6CUNvbnZlcnNpb24gbWF0cml4IHZhbHVlLCBmb3JtYXQgczAuMTQsIHJhbmdlIFstMSwg MV0sDQo+IGRlZmF1bHQgMC4NCj4gPiArICogQGNvZWZmX2MzMzoJQ29udmVyc2lvbiBtYXRyaXgg dmFsdWUsIGZvcm1hdCBzMC4xNCwgcmFuZ2UgWy0xLCAxXSwNCj4gZGVmYXVsdCAxLg0KPiA+ICsg KiBAY29lZmZfYjM6CUJpYXMgM3gxIGNvZWZmaWNpZW50LCBzMTMsMCByYW5nZSBbLTgxOTEsIDgx ODFdLA0KPiBkZWZhdWx0IDAuDQo+ID4gKyAqDQo+ID4gKyAqIFRvIHRyYW5zZm9ybSBlYWNoIHBp eGVsIGZyb20gUkdCIHRvIFlVViAoWSAtIGJyaWdodG5lc3MvbHVtaW5hbmNlLA0KPiA+ICsgKiBV ViAtY2hyb21hKSBieSBhcHBseWluZyB0aGUgcGl4ZWwncyB2YWx1ZXMgYnkgYSAzeDMgbWF0cml4 IGFuZCBhZGRpbmcNCj4gYW4NCj4gPiArICogb3B0aW9uYWwgYmlhcyAzeDEgdmVjdG9yLg0KPiA+ ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9jc2NfbWF0X2NvbmZpZyB7DQo+ID4gKwlfX3Mx NiBjb2VmZl9jMTE7DQo+ID4gKwlfX3MxNiBjb2VmZl9jMTI7DQo+ID4gKwlfX3MxNiBjb2VmZl9j MTM7DQo+ID4gKwlfX3MxNiBjb2VmZl9iMTsNCj4gPiArCV9fczE2IGNvZWZmX2MyMTsNCj4gPiAr CV9fczE2IGNvZWZmX2MyMjsNCj4gPiArCV9fczE2IGNvZWZmX2MyMzsNCj4gPiArCV9fczE2IGNv ZWZmX2IyOw0KPiA+ICsJX19zMTYgY29lZmZfYzMxOw0KPiA+ICsJX19zMTYgY29lZmZfYzMyOw0K PiA+ICsJX19zMTYgY29lZmZfYzMzOw0KPiA+ICsJX19zMTYgY29lZmZfYjM7DQo+ID4gK30gX19w YWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9jZHNfcGFy YW1zIC0gQ2hyb21hIGRvd24tc2NhbGluZw0KPiA+ICsgKg0KPiA+ICsgKiBAZHNfYzAwOglyYW5n ZSBbMCwgM10NCj4gPiArICogQGRzX2MwMToJcmFuZ2UgWzAsIDNdDQo+ID4gKyAqIEBkc19jMDI6 CXJhbmdlIFswLCAzXQ0KPiA+ICsgKiBAZHNfYzAzOglyYW5nZSBbMCwgM10NCj4gPiArICogQGRz X2MxMDoJcmFuZ2UgWzAsIDNdDQo+ID4gKyAqIEBkc19jMTE6CXJhbmdlIFswLCAzXQ0KPiA+ICsg KiBAZHNfYzEyOglyYW5nZSBbMCwgM10NCj4gPiArICogQGRzX2MxMzoJcmFuZ2UgWzAsIDNdDQo+ ID4gKyAqDQo+ID4gKyAqIEluIGNhc2UgdXNlciBkb2VzIG5vdCBwcm92aWRlLCBhYm92ZSA0eDIg ZmlsdGVyIHdpbGwgdXNlIGZvbGxvd2luZw0KPiBkZWZhdWx0czoNCj4gPiArICoJMSwgMywgMywg MSwNCj4gPiArICoJMSwgMywgMywgMSwNCj4gPiArICoNCj4gPiArICogQGRzX25mOglOb3JtYWxp emF0aW9uIGZhY3RvciBmb3IgQ2hyb21hIG91dHB1dCBkb3duc2NhbGluZyBmaWx0ZXIsDQo+ID4g KyAqCQlyYW5nZSAwLDQsIGRlZmF1bHQgMi4NCj4gPiArICogQF9fcmVzZXJ2ZWQwOglyZXNlcnZl ZA0KPiA+ICsgKiBAY3NjX2VuOglDb2xvciBzcGFjZSBjb252ZXJzaW9uIGVuYWJsZQ0KPiA+ICsg KiBAdXZfYmluX291dHB1dDoJMDogb3V0cHV0IFlVViA0LjIuMCwgMTogb3V0cHV0IFlVViA0LjIu MihkZWZhdWx0KS4NCj4gPiArICogQF9fcmVzZXJ2ZWQxOglyZXNlcnZlZA0KPiA+ICsgKi8NCj4g PiArc3RydWN0IGlwdTNfdWFwaV9jZHNfcGFyYW1zIHsNCj4gPiArCV9fdTMyIGRzX2MwMDoyOw0K PiA+ICsJX191MzIgZHNfYzAxOjI7DQo+ID4gKwlfX3UzMiBkc19jMDI6MjsNCj4gPiArCV9fdTMy IGRzX2MwMzoyOw0KPiA+ICsJX191MzIgZHNfYzEwOjI7DQo+ID4gKwlfX3UzMiBkc19jMTE6MjsN Cj4gPiArCV9fdTMyIGRzX2MxMjoyOw0KPiA+ICsJX191MzIgZHNfYzEzOjI7DQo+ID4gKwlfX3Uz MiBkc19uZjo1Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDA6MzsNCj4gPiArCV9fdTMyIGNzY19l bjoxOw0KPiA+ICsJX191MzIgdXZfYmluX291dHB1dDoxOw0KPiA+ICsJX191MzIgX19yZXNlcnZl ZDE6NjsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3Qg aXB1M191YXBpX3NoZF9ncmlkX2NvbmZpZyAtIEJheWVyIHNoYWRpbmcoZGFya2VuaW5nKSBjb3Jy ZWN0aW9uDQo+ID4gKyAqDQo+ID4gKyAqIEB3aWR0aDoJR3JpZCBob3Jpem9udGFsIGRpbWVuc2lv bnMsIHU4LCBbOCwgMTI4XSwgZGVmYXVsdCA3Mw0KPiA+ICsgKiBAaGVpZ2h0OglHcmlkIHZlcnRp Y2FsIGRpbWVuc2lvbnMsIHU4LCBbOCwgMTI4XSwgZGVmYXVsdCA1Ng0KPiA+ICsgKiBAYmxvY2tf d2lkdGhfbG9nMjoJTG9nMiBvZiB0aGUgd2lkdGggb2YgdGhlIGdyaWQgY2VsbCBpbiBwaXhlbA0K PiBjb3VudA0KPiA+ICsgKgkJCXU0LCBbMCwgMTVdLCBkZWZhdWx0IHZhbHVlIDUuDQo+ID4gKyAq IEBfX3Jlc2VydmVkMDoJcmVzZXJ2ZWQNCj4gPiArICogQGJsb2NrX2hlaWdodF9sb2cyOglMb2cy IG9mIHRoZSBoZWlnaHQgb2YgdGhlIGdyaWQgY2VsbCBpbiBwaXhlbA0KPiBjb3VudA0KPiA+ICsg KgkJCXU0LCBbMCwgMTVdLCBkZWZhdWx0IHZhbHVlIDYuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMToJ cmVzZXJ2ZWQNCj4gPiArICogQGdyaWRfaGVpZ2h0X3Blcl9zbGljZToJU0hEX01BWF9DRUxMU19Q RVJfU0VUL3dpZHRoLg0KPiA+ICsgKgkJCQkod2l0aCBTSERfTUFYX0NFTExTX1BFUl9TRVQgPSAx NDYpLg0KPiA+ICsgKiBAeF9zdGFydDoJWCB2YWx1ZSBvZiB0b3AgbGVmdCBjb3JuZXIgb2Ygc2Vu c29yIHJlbGF0aXZlIHRvIFJPSQ0KPiA+ICsgKgkJdTEyLCBbLTQwOTYsIDBdLiBkZWZhdWx0IDAs IG9ubHkgbmVnYXRpdmUgdmFsdWVzLg0KPiANCj4gLiBkZWZhdWx0IC0+ICwgZGVmYXVsdA0KPiAN Cj4gPiArICogQHlfc3RhcnQ6CVkgdmFsdWUgb2YgdG9wIGxlZnQgY29ybmVyIG9mIHNlbnNvciBy ZWxhdGl2ZSB0byBST0kNCj4gPiArICoJCXUxMiwgWy00MDk2LCAwXS4gZGVmYXVsdCAwLCBvbmx5 IG5lZ2F0aXZlIHZhbHVlcy4NCj4gDQo+IGRpdHRvLg0KPiANCg0KQWNrLg0KDQo+ID4gKyAqLw0K PiA+ICtzdHJ1Y3QgaXB1M191YXBpX3NoZF9ncmlkX2NvbmZpZyB7DQo+ID4gKwkvKiByZWcgMCAq Lw0KPiA+ICsJX191OCB3aWR0aDsNCj4gPiArCV9fdTggaGVpZ2h0Ow0KPiA+ICsJX191OCBibG9j a193aWR0aF9sb2cyOjM7DQo+ID4gKwlfX3U4IF9fcmVzZXJ2ZWQwOjE7DQo+ID4gKwlfX3U4IGJs b2NrX2hlaWdodF9sb2cyOjM7DQo+ID4gKwlfX3U4IF9fcmVzZXJ2ZWQxOjE7DQo+ID4gKwlfX3U4 IGdyaWRfaGVpZ2h0X3Blcl9zbGljZTsNCj4gPiArCS8qIHJlZyAxICovDQo+ID4gKwlfX3MxNiB4 X3N0YXJ0Ow0KPiA+ICsJX19zMTYgeV9zdGFydDsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3NoZF9nZW5lcmFsX2NvbmZpZyAtIFNo YWRpbmcgZ2VuZXJhbCBjb25maWcNCj4gPiArICoNCj4gPiArICogQGluaXRfc2V0X3ZydF9vZmZz dF91bDogc2V0IHZlcnRpY2FsIG9mZnNldCwNCj4gPiArICoJCQl5X3N0YXJ0ID4+IGJsb2NrX2hl aWdodF9sb2cyICUgZ3JpZF9oZWlnaHRfcGVyX3NsaWNlLg0KPiA+ICsgKiBAc2hkX2VuYWJsZTog c2hhZGluZyBlbmFibGUuDQo+ID4gKyAqIEBnYWluX2ZhY3RvcjogR2FpbiBmYWN0b3IuIFNoaWZ0 IGNhbGN1bGF0ZWQgYW50aSBzaGFkaW5nIHZhbHVlLiBQcmVjaXNpb24NCj4gdTIuDQo+ID4gKyAq CQkweDAgLSBnYWluIGZhY3RvciBbMSwgNV0sIG1lYW5zIG5vIHNoaWZ0IGludGVycG9sYXRlZCB2 YWx1ZS4NCj4gPiArICoJCTB4MSAtIGdhaW4gZmFjdG9yIFsxLCA5XSwgbWVhbnMgc2hpZnQgaW50 ZXJwb2xhdGVkIGJ5IDEuDQo+ID4gKyAqCQkweDIgLSBnYWluIGZhY3RvciBbMSwgMTddLCBtZWFu cyBzaGlmdCBpbnRlcnBvbGF0ZWQgYnkgMi4NCj4gPiArICogQF9fcmVzZXJ2ZWQ6IHJlc2VydmVk DQo+ID4gKyAqDQo+ID4gKyAqIENvcnJlY3Rpb24gaXMgcGVyZm9ybWVkIGJ5IG11bHRpcGx5aW5n IGEgZ2FpbiBmYWN0b3IgZm9yIGVhY2ggb2YgdGhlIDQNCj4gQmF5ZXINCj4gPiArICogY2hhbm5l bHMgYXMgYSBmdW5jdGlvbiBvZiB0aGUgcGl4ZWwgbG9jYXRpb24gaW4gdGhlIHNlbnNvci4NCj4g PiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfc2hkX2dlbmVyYWxfY29uZmlnIHsNCj4gPiAr CV9fdTMyIGluaXRfc2V0X3ZydF9vZmZzdF91bDo4Ow0KPiA+ICsJX191MzIgc2hkX2VuYWJsZTox Ow0KPiA+ICsJX191MzIgZ2Fpbl9mYWN0b3I6MjsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQ6MjE7 DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNf dWFwaV9zaGRfYmxhY2tfbGV2ZWxfY29uZmlnIC0gQmxhY2sgbGV2ZWwgY29ycmVjdGlvbg0KPiA+ ICsgKg0KPiA+ICsgKiBAYmxfcjoJQmlvcyB2YWx1ZXMgZm9yIGdyZWVuIHJlZC4gczExIHJhbmdl IFstMjA0OCwgMjA0N10uDQo+ID4gKyAqIEBibF9ncjoJQmlvcyB2YWx1ZXMgZm9yIGdyZWVuIGJs dWUuIHMxMSByYW5nZSBbLTIwNDgsIDIwNDddLg0KPiA+ICsgKiBAYmxfZ2I6CUJpb3MgdmFsdWVz IGZvciByZWQuIHMxMSByYW5nZSBbLTIwNDgsIDIwNDddLg0KPiA+ICsgKiBAYmxfYjoJQmlvcyB2 YWx1ZXMgZm9yIGJsdWUuIHMxMSByYW5nZSBbLTIwNDgsIDIwNDddLg0KPiA+ICsgKi8NCj4gPiAr c3RydWN0IGlwdTNfdWFwaV9zaGRfYmxhY2tfbGV2ZWxfY29uZmlnIHsNCj4gPiArCV9fczE2IGJs X3I7DQo+ID4gKwlfX3MxNiBibF9ncjsNCj4gPiArCV9fczE2IGJsX2diOw0KPiA+ICsJX19zMTYg YmxfYjsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3Qg aXB1M191YXBpX3NoZF9jb25maWdfc3RhdGljIC0gU2hhZGluZyBjb25maWcgc3RhdGljDQo+ID4g KyAqDQo+ID4gKyAqIEBncmlkOglzaGFkaW5nIGdyaWQgY29uZmlnICZpcHUzX3VhcGlfc2hkX2dy aWRfY29uZmlnDQo+ID4gKyAqIEBnZW5lcmFsOglzaGFkaW5nIGdlbmVyYWwgY29uZmlnICZpcHUz X3VhcGlfc2hkX2dlbmVyYWxfY29uZmlnDQo+ID4gKyAqIEBibGFja19sZXZlbDoJYmxhY2sgbGV2 ZWwgY29uZmlnIGZvciBzaGFkaW5nIGNvcnJlY3Rpb24gYXMgZGVmaW5lZCBieQ0KPiA+ICsgKgkJ CSZpcHUzX3VhcGlfc2hkX2JsYWNrX2xldmVsX2NvbmZpZw0KPiA+ICsgKi8NCj4gPiArc3RydWN0 IGlwdTNfdWFwaV9zaGRfY29uZmlnX3N0YXRpYyB7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3No ZF9ncmlkX2NvbmZpZyBncmlkOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9zaGRfZ2VuZXJhbF9j b25maWcgZ2VuZXJhbDsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfc2hkX2JsYWNrX2xldmVsX2Nv bmZpZyBibGFja19sZXZlbDsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3NoZF9sdXQgLSBTaGFkaW5nIGdhaW4gZmFjdG9yIGxvb2t1 cCB0YWJsZS4NCj4gPiArICoNCj4gPiArICogQHNldHM6IGFycmF5DQo+ID4gKyAqIEBzZXRzLnJf YW5kX2dyOiBSZWQgYW5kIEdyZWVuUiBMb29rdXAgdGFibGUuDQo+ID4gKyAqIEBzZXRzLnJfYW5k X2dyLnI6IFJlZCBzaGFkaW5nIGZhY3Rvci4NCj4gPiArICogQHNldHMucl9hbmRfZ3IuZ3I6IEdy ZWVuUiBzaGFkaW5nIGZhY3Rvci4NCj4gPiArICogQHNldHMuX19yZXNlcnZlZDE6IHJlc2VydmVk DQo+ID4gKyAqIEBzZXRzLmdiX2FuZF9iOiBHcmVlbkIgYW5kIEJsdWUgTG9va3VwIHRhYmxlLg0K PiA+ICsgKiBAc2V0cy5nYl9hbmRfYi5nYjogR3JlZW5CIHNoYWRpbmcgZmFjdG9yLg0KPiA+ICsg KiBAc2V0cy5nYl9hbmRfYi5iOiBCbHVlIHNoYWRpbmcgZmFjdG9yLg0KPiA+ICsgKiBAc2V0cy5f X3Jlc2VydmVkMjogcmVzZXJ2ZWQNCj4gPiArICoNCj4gPiArICogTWFwIHRvIHNoYWRpbmcgY29y cmVjdGlvbiBMVVQgcmVnaXN0ZXIgc2V0Lg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFw aV9zaGRfbHV0IHsNCj4gPiArCXN0cnVjdCB7DQo+ID4gKwkJc3RydWN0IHsNCj4gPiArCQkJX191 MTYgcjsNCj4gPiArCQkJX191MTYgZ3I7DQo+ID4gKwkJfSByX2FuZF9ncltJUFUzX1VBUElfU0hE X01BWF9DRUxMU19QRVJfU0VUXTsNCj4gPiArCQlfX3U4IF9fcmVzZXJ2ZWQxWzI0XTsNCj4gPiAr CQlzdHJ1Y3Qgew0KPiA+ICsJCQlfX3UxNiBnYjsNCj4gPiArCQkJX191MTYgYjsNCj4gPiArCQl9 IGdiX2FuZF9iW0lQVTNfVUFQSV9TSERfTUFYX0NFTExTX1BFUl9TRVRdOw0KPiA+ICsJCV9fdTgg X19yZXNlcnZlZDJbMjRdOw0KPiA+ICsJfSBzZXRzW0lQVTNfVUFQSV9TSERfTUFYX0NGR19TRVRT XTsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1 M191YXBpX3NoZF9jb25maWcgLSBTaGFkaW5nIGNvbmZpZw0KPiA+ICsgKg0KPiA+ICsgKiBAc2hk OglzaGFkaW5nIHN0YXRpYyBjb25maWcsIHNlZSAmaXB1M191YXBpX3NoZF9jb25maWdfc3RhdGlj DQo+ID4gKyAqIEBzaGRfbHV0OglzaGFkaW5nIGxvb2t1cCB0YWJsZSAmaXB1M191YXBpX3NoZF9s dXQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfc2hkX2NvbmZpZyB7DQo+ID4gKwlz dHJ1Y3QgaXB1M191YXBpX3NoZF9jb25maWdfc3RhdGljIHNoZCBfX2F0dHJpYnV0ZV9fKChhbGln bmVkKDMyKSkpOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9zaGRfbHV0IHNoZF9sdXQgX19hdHRy aWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8q IEltYWdlIEVuaGFuY2VtZW50IEZpbHRlciBkaXJlY3RlZCAqLw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfaWVmZF9jdXgyIC0gSUVGZCBDb25maWcgVW5pdCAyIHBh cmFtZXRlcnMNCj4gPiArICoNCj4gPiArICogQHgwOgkJWDAgcG9pbnQgb2YgQ29uZmlnIFVuaXQs IHU5LjAsIGRlZmF1bHQgMC4NCj4gPiArICogQHgxOgkJWDEgcG9pbnQgb2YgQ29uZmlnIFVuaXQs IHU5LjAsIGRlZmF1bHQgMC4NCj4gPiArICogQGEwMToJU2xvcGUgQSBvZiBDb25maWcgVW5pdCwg czQuNCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAYjAxOglBbHdheXMgMC4NCj4gPiArICoNCj4gPiAr ICogQ2FsY3VsYXRlIHdlaWdodCBmb3IgYmxlbmRpbmcgZGlyZWN0ZWQgYW5kIG5vbi1kaXJlY3Rl ZCBkZW5vaXNlDQo+IGVsZW1lbnRzDQo+ID4gKyAqDQo+ID4gKyAqIE5vdGU6DQo+ID4gKyAqIEVh Y2ggaW5zdGFuY2Ugb2YgQ29uZmlnIFVuaXQgbmVlZHMgWCBjb29yZGluYXRlIG9mIG4gcG9pbnRz IGFuZA0KPiA+ICsgKiBzbG9wZSBBIGZhY3RvciBiZXR3ZWVuIHBvaW50cyBjYWxjdWxhdGVkIGJ5 IGRyaXZlciBiYXNlZCBvbiBjYWxpYnJhdGlvbg0KPiA+ICsgKiBwYXJhbWV0ZXJzLg0KPiA+ICsg Ki8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9pZWZkX2N1eDIgew0KPiA+ICsJX191MzIgeDA6OTsN Cj4gPiArCV9fdTMyIHgxOjk7DQo+ID4gKwlfX3UzMiBhMDE6OTsNCj4gPiArCV9fdTMyIGIwMTo1 OwkvKiBOT1RFOiBoYXJkY29kZWQgdG8gemVybyAqLw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfaWVmZF9jdXg2X2VkIC0gQ2FsY3Vs YXRlIHBvd2VyIG9mIG5vbi1kaXJlY3RlZA0KPiBzaGFycGVuaW5nDQo+ID4gKyAqCQkJCSAgIGVs ZW1lbnQsIENvbmZpZyBVbml0IDYgZm9yIGVkZ2UgZGV0YWlsIChFRCkuDQo+ID4gKyAqDQo+ID4g KyAqIEB4MDoJWCBjb29yZGluYXRlIG9mIHBvaW50IDAsIHU5LjAsIGRlZmF1bHQgMC4NCj4gPiAr ICogQHgxOglYIGNvb3JkaW5hdGUgb2YgcG9pbnQgMSwgdTkuMCwgZGVmYXVsdCAwLg0KPiA+ICsg KiBAeDI6CVggY29vcmRpbmF0ZSBvZiBwb2ludCAyLCB1OS4wLCBkZWZhdWx0IDAuDQo+ID4gKyAq IEBfX3Jlc2VydmVkMDoJcmVzZXJ2ZWQNCj4gPiArICogQHgzOglYIGNvb3JkaW5hdGUgb2YgcG9p bnQgMywgdTkuMCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAeDQ6CVggY29vcmRpbmF0ZSBvZiBwb2lu dCA0LCB1OS4wLCBkZWZhdWx0IDAuDQo+ID4gKyAqIEB4NToJWCBjb29yZGluYXRlIG9mIHBvaW50 IDUsIHU5LjAsIGRlZmF1bHQgMC4NCj4gPiArICogQF9fcmVzZXJ2ZWQxOglyZXNlcnZlZA0KPiA+ ICsgKiBAYTAxOglzbG9wZSBBIHBvaW50cyAwMSwgczQuNCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBA YTEyOglzbG9wZSBBIHBvaW50cyAxMiwgczQuNCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAYTIzOglz bG9wZSBBIHBvaW50cyAyMywgczQuNCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAX19yZXNlcnZlZDI6 CXJlc2VydmVkDQo+ID4gKyAqIEBhMzQ6CXNsb3BlIEEgcG9pbnRzIDM0LCBzNC40LCBkZWZhdWx0 IDAuDQo+ID4gKyAqIEBhNDU6CXNsb3BlIEEgcG9pbnRzIDQ1LCBzNC40LCBkZWZhdWx0IDAuDQo+ ID4gKyAqIEBfX3Jlc2VydmVkMzoJcmVzZXJ2ZWQNCj4gPiArICogQGIwMToJc2xvcGUgQiBwb2lu dHMgMDEsIHM0LjQsIGRlZmF1bHQgMC4NCj4gPiArICogQGIxMjoJc2xvcGUgQiBwb2ludHMgMTIs IHM0LjQsIGRlZmF1bHQgMC4NCj4gPiArICogQGIyMzoJc2xvcGUgQiBwb2ludHMgMjMsIHM0LjQs IGRlZmF1bHQgMC4NCj4gPiArICogQF9fcmVzZXJ2ZWQ0OglyZXNlcnZlZA0KPiA+ICsgKiBAYjM0 OglzbG9wZSBCIHBvaW50cyAzNCwgczQuNCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAYjQ1OglzbG9w ZSBCIHBvaW50cyA0NSwgczQuNCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAX19yZXNlcnZlZDU6CXJl c2VydmVkDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX2llZmRfY3V4Nl9lZCB7DQo+ ID4gKwlfX3UzMiB4MDo5Ow0KPiA+ICsJX191MzIgeDE6OTsNCj4gPiArCV9fdTMyIHgyOjk7DQo+ ID4gKwlfX3UzMiBfX3Jlc2VydmVkMDo1Ow0KPiA+ICsNCj4gPiArCV9fdTMyIHgzOjk7DQo+ID4g KwlfX3UzMiB4NDo5Ow0KPiA+ICsJX191MzIgeDU6OTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQx OjU7DQo+ID4gKw0KPiA+ICsJX191MzIgYTAxOjk7DQo+ID4gKwlfX3UzMiBhMTI6OTsNCj4gPiAr CV9fdTMyIGEyMzo5Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDI6NTsNCj4gPiArDQo+ID4gKwlf X3UzMiBhMzQ6OTsNCj4gPiArCV9fdTMyIGE0NTo5Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDM6 MTQ7DQo+ID4gKw0KPiA+ICsJX191MzIgYjAxOjk7DQo+ID4gKwlfX3UzMiBiMTI6OTsNCj4gPiAr CV9fdTMyIGIyMzo5Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDQ6NTsNCj4gPiArDQo+ID4gKwlf X3UzMiBiMzQ6OTsNCj4gPiArCV9fdTMyIGI0NTo5Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDU6 MTQ7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlw dTNfdWFwaV9pZWZkX2N1eDJfMSAtIENhbGN1bGF0ZSBwb3dlciBvZiBub24tZGlyZWN0ZWQgZGVu b2lzZQ0KPiA+ICsgKgkJCQkgIGVsZW1lbnQgYXBwbHkuDQo+ID4gKyAqIEB4MDogWDAgcG9pbnQg b2YgQ29uZmlnIFVuaXQsIHU5LjAsIGRlZmF1bHQgMC4NCj4gPiArICogQHgxOiBYMSBwb2ludCBv ZiBDb25maWcgVW5pdCwgdTkuMCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAYTAxOiBTbG9wZSBBIG9m IENvbmZpZyBVbml0LCBzNC40LCBkZWZhdWx0IDAuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMTogcmVz ZXJ2ZWQNCj4gPiArICogQGIwMTogb2Zmc2V0IEIwIG9mIENvbmZpZyBVbml0LCB1Ny4wLCBkZWZh dWx0IDAuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMjogcmVzZXJ2ZWQNCj4gPiArICovDQo+ID4gK3N0 cnVjdCBpcHUzX3VhcGlfaWVmZF9jdXgyXzEgew0KPiA+ICsJX191MzIgeDA6OTsNCj4gPiArCV9f dTMyIHgxOjk7DQo+ID4gKwlfX3UzMiBhMDE6OTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQxOjU7 DQo+ID4gKw0KPiA+ICsJX191MzIgYjAxOjg7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMjoyNDsN Cj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191 YXBpX2llZmRfY3V4NCAtIENhbGN1bGF0ZSBwb3dlciBvZiBub24tZGlyZWN0ZWQNCj4gc2hhcnBl bmluZw0KPiA+ICsgKgkJCQllbGVtZW50Lg0KPiA+ICsgKg0KPiA+ICsgKiBAeDA6CVgwIHBvaW50 IG9mIENvbmZpZyBVbml0LCB1OS4wLCBkZWZhdWx0IDAuDQo+ID4gKyAqIEB4MToJWDEgcG9pbnQg b2YgQ29uZmlnIFVuaXQsIHU5LjAsIGRlZmF1bHQgMC4NCj4gPiArICogQHgyOglYMiBwb2ludCBv ZiBDb25maWcgVW5pdCwgdTkuMCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAX19yZXNlcnZlZDA6CXJl c2VydmVkDQo+ID4gKyAqIEB4MzoJWDMgcG9pbnQgb2YgQ29uZmlnIFVuaXQsIHU5LjAsIGRlZmF1 bHQgMC4NCj4gPiArICogQGEwMToJU2xvcGUgQTAgb2YgQ29uZmlnIFVuaXQsIHM0LjQsIGRlZmF1 bHQgMC4NCj4gPiArICogQGExMjoJU2xvcGUgQTEgb2YgQ29uZmlnIFVuaXQsIHM0LjQsIGRlZmF1 bHQgMC4NCj4gPiArICogQF9fcmVzZXJ2ZWQxOglyZXNlcnZlZA0KPiA+ICsgKiBAYTIzOglTbG9w ZSBBMiBvZiBDb25maWcgVW5pdCwgczQuNCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAYjAxOglPZmZz ZXQgQjAgb2YgQ29uZmlnIFVuaXQsIHM3LjAsIGRlZmF1bHQgMC4NCj4gPiArICogQGIxMjoJT2Zm c2V0IEIxIG9mIENvbmZpZyBVbml0LCBzNy4wLCBkZWZhdWx0IDAuDQo+ID4gKyAqIEBfX3Jlc2Vy dmVkMjoJcmVzZXJ2ZWQNCj4gPiArICogQGIyMzoJT2Zmc2V0IEIyIG9mIENvbmZpZyBVbml0LCBz Ny4wLCBkZWZhdWx0IDAuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMzogcmVzZXJ2ZWQNCj4gPiArICov DQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfaWVmZF9jdXg0IHsNCj4gPiArCV9fdTMyIHgwOjk7DQo+ ID4gKwlfX3UzMiB4MTo5Ow0KPiA+ICsJX191MzIgeDI6OTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2 ZWQwOjU7DQo+ID4gKw0KPiA+ICsJX191MzIgeDM6OTsNCj4gPiArCV9fdTMyIGEwMTo5Ow0KPiA+ ICsJX191MzIgYTEyOjk7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMTo1Ow0KPiA+ICsNCj4gPiAr CV9fdTMyIGEyMzo5Ow0KPiA+ICsJX191MzIgYjAxOjg7DQo+ID4gKwlfX3UzMiBiMTI6ODsNCj4g PiArCV9fdTMyIF9fcmVzZXJ2ZWQyOjc7DQo+ID4gKw0KPiA+ICsJX191MzIgYjIzOjg7DQo+ID4g KwlfX3UzMiBfX3Jlc2VydmVkMzoyNDsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2llZmRfY3V4Nl9yYWQgLSBSYWRpYWwgQ29uZmln IFVuaXQgKENVKQ0KPiA+ICsgKg0KPiA+ICsgKiBAeDA6CXgwIHBvaW50cyBvZiBDb25maWcgVW5p dCByYWRpYWwsIHU4LjANCj4gPiArICogQHgxOgl4MSBwb2ludHMgb2YgQ29uZmlnIFVuaXQgcmFk aWFsLCB1OC4wDQo+ID4gKyAqIEB4MjoJeDIgcG9pbnRzIG9mIENvbmZpZyBVbml0IHJhZGlhbCwg dTguMA0KPiA+ICsgKiBAeDM6CXgzIHBvaW50cyBvZiBDb25maWcgVW5pdCByYWRpYWwsIHU4LjAN Cj4gPiArICogQHg0Ogl4NCBwb2ludHMgb2YgQ29uZmlnIFVuaXQgcmFkaWFsLCB1OC4wDQo+ID4g KyAqIEB4NToJeDUgcG9pbnRzIG9mIENvbmZpZyBVbml0IHJhZGlhbCwgdTguMA0KPiA+ICsgKiBA X19yZXNlcnZlZDE6IHJlc2VydmVkDQo+ID4gKyAqIEBhMDE6CVNsb3BlIEEgb2YgQ29uZmlnIFVu aXQgcmFkaWFsLCBzNy44DQo+ID4gKyAqIEBhMTI6CVNsb3BlIEEgb2YgQ29uZmlnIFVuaXQgcmFk aWFsLCBzNy44DQo+ID4gKyAqIEBhMjM6CVNsb3BlIEEgb2YgQ29uZmlnIFVuaXQgcmFkaWFsLCBz Ny44DQo+ID4gKyAqIEBhMzQ6CVNsb3BlIEEgb2YgQ29uZmlnIFVuaXQgcmFkaWFsLCBzNy44DQo+ ID4gKyAqIEBhNDU6CVNsb3BlIEEgb2YgQ29uZmlnIFVuaXQgcmFkaWFsLCBzNy44DQo+ID4gKyAq IEBfX3Jlc2VydmVkMjogcmVzZXJ2ZWQNCj4gPiArICogQGIwMToJU2xvcGUgQiBvZiBDb25maWcg VW5pdCByYWRpYWwsIHM5LjANCj4gPiArICogQGIxMjoJU2xvcGUgQiBvZiBDb25maWcgVW5pdCBy YWRpYWwsIHM5LjANCj4gPiArICogQGIyMzoJU2xvcGUgQiBvZiBDb25maWcgVW5pdCByYWRpYWws IHM5LjANCj4gPiArICogQF9fcmVzZXJ2ZWQ0OiByZXNlcnZlZA0KPiA+ICsgKiBAYjM0OglTbG9w ZSBCIG9mIENvbmZpZyBVbml0IHJhZGlhbCwgczkuMA0KPiA+ICsgKiBAYjQ1OglTbG9wZSBCIG9m IENvbmZpZyBVbml0IHJhZGlhbCwgczkuMA0KPiA+ICsgKiBAX19yZXNlcnZlZDU6IHJlc2VydmVk DQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX2llZmRfY3V4Nl9yYWQgew0KPiA+ICsJ X191MzIgeDA6ODsNCj4gPiArCV9fdTMyIHgxOjg7DQo+ID4gKwlfX3UzMiB4Mjo4Ow0KPiA+ICsJ X191MzIgeDM6ODsNCj4gPiArDQo+ID4gKwlfX3UzMiB4NDo4Ow0KPiA+ICsJX191MzIgeDU6ODsN Cj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQxOjE2Ow0KPiA+ICsNCj4gPiArCV9fdTMyIGEwMToxNjsN Cj4gPiArCV9fdTMyIGExMjoxNjsNCj4gPiArDQo+ID4gKwlfX3UzMiBhMjM6MTY7DQo+ID4gKwlf X3UzMiBhMzQ6MTY7DQo+ID4gKw0KPiA+ICsJX191MzIgYTQ1OjE2Ow0KPiA+ICsJX191MzIgX19y ZXNlcnZlZDI6MTY7DQo+ID4gKw0KPiA+ICsJX191MzIgYjAxOjEwOw0KPiA+ICsJX191MzIgYjEy OjEwOw0KPiA+ICsJX191MzIgYjIzOjEwOw0KPiA+ICsJX191MzIgX19yZXNlcnZlZDQ6MjsNCj4g PiArDQo+ID4gKwlfX3UzMiBiMzQ6MTA7DQo+ID4gKwlfX3UzMiBiNDU6MTA7DQo+ID4gKwlfX3Uz MiBfX3Jlc2VydmVkNToxMjsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX2llZmRfY2ZnX3VuaXRzIC0gSUVGZCBDb25maWcg VW5pdHMgcGFyYW1ldGVycw0KPiA+ICsgKg0KPiA+ICsgKiBAY3VfMTogY2FsY3VsYXRlIHdlaWdo dCBmb3IgYmxlbmRpbmcgZGlyZWN0ZWQgYW5kDQo+ID4gKyAqCSAgbm9uLWRpcmVjdGVkIGRlbm9p c2UgZWxlbWVudHMuIFNlZSAmaXB1M191YXBpX2llZmRfY3V4Mg0KPiA+ICsgKiBAY3VfZWQ6IGNh bGN1bGF0ZSBwb3dlciBvZiBub24tZGlyZWN0ZWQgc2hhcnBlbmluZyBlbGVtZW50LCBzZWUNCj4g PiArICoJICAgJmlwdTNfdWFwaV9pZWZkX2N1eDZfZWQNCj4gPiArICogQGN1XzM6IGNhbGN1bGF0 ZSB3ZWlnaHQgZm9yIGJsZW5kaW5nIGRpcmVjdGVkIGFuZA0KPiA+ICsgKgkgIG5vbi1kaXJlY3Rl ZCBkZW5vaXNlIGVsZW1lbnRzLiBBICZpcHUzX3VhcGlfaWVmZF9jdXgyDQo+ID4gKyAqIEBjdV81 OiBjYWxjdWxhdGUgcG93ZXIgb2Ygbm9uLWRpcmVjdGVkIGRlbm9pc2UgZWxlbWVudCBhcHBseSwg dXNlDQo+ID4gKyAqCSAgJmlwdTNfdWFwaV9pZWZkX2N1eDJfMQ0KPiA+ICsgKiBAY3VfNjogY2Fs Y3VsYXRlIHBvd2VyIG9mIG5vbi1kaXJlY3RlZCBzaGFycGVuaW5nIGVsZW1lbnQuIFNlZQ0KPiA+ ICsgKgkgICZpcHUzX3VhcGlfaWVmZF9jdXg0DQo+ID4gKyAqIEBjdV83OiBjYWxjdWxhdGUgd2Vp Z2h0IGZvciBibGVuZGluZyBkaXJlY3RlZCBhbmQNCj4gPiArICoJICBub24tZGlyZWN0ZWQgZGVu b2lzZSBlbGVtZW50cy4gVXNlICZpcHUzX3VhcGlfaWVmZF9jdXgyDQo+ID4gKyAqIEBjdV91bnNo YXJwOiBDb25maWcgVW5pdCBvZiB1bnNoYXJwICZpcHUzX3VhcGlfaWVmZF9jdXg0DQo+ID4gKyAq IEBjdV9yYWRpYWw6IENvbmZpZyBVbml0IG9mIHJhZGlhbCAmaXB1M191YXBpX2llZmRfY3V4Nl9y YWQNCj4gPiArICogQGN1X3Zzc25sbTogQ29uZmlnIFVuaXQgb2YgdnNzbmxtICZpcHUzX3VhcGlf aWVmZF9jdXgyDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX2llZmRfY2Zn X3VuaXRzIHsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfaWVmZF9jdXgyIGN1XzE7DQo+ID4gKwlz dHJ1Y3QgaXB1M191YXBpX2llZmRfY3V4Nl9lZCBjdV9lZDsNCj4gPiArCXN0cnVjdCBpcHUzX3Vh cGlfaWVmZF9jdXgyIGN1XzM7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2llZmRfY3V4Ml8xIGN1 XzU7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2llZmRfY3V4NCBjdV82Ow0KPiA+ICsJc3RydWN0 IGlwdTNfdWFwaV9pZWZkX2N1eDIgY3VfNzsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfaWVmZF9j dXg0IGN1X3Vuc2hhcnA7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2llZmRfY3V4Nl9yYWQgY3Vf cmFkaWFsOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9pZWZkX2N1eDIgY3VfdnNzbmxtOw0KPiA+ ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlf eXV2cDFfaWVmZF9jb25maWdfcyAtIElFRmQgY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAqIEBob3J2 ZXJfZGlhZ19jb2VmZjogR3JhZGlhbnQgY29tcGVuc2F0aW9uLCBjb2VmZmljaWVudCB0aGF0DQo+ IGNvbXBlbnNhdGVzIGZvcg0KPiA+ICsgKgkJICAgICAgIGRpZmZlcmVudCBkaXN0YW5jZSBmb3Ig dmVydGljYWwgLyBob3Jpem9udGFsIGFuZCBkaWFnb25hbA0KPiA+ICsgKgkJICAgICAgICogZ3Jh ZGllbnQgY2FsY3VsYXRpb24gKH4xL3NxcnQoMikpLg0KPiANCj4gVWgsIGlzIHRoaXMgImRpYWdv bmFsICogZ3JhZGllbnQiIG9yICJkaWFnb25hbCBncmFkaWVudCI/IEl0J3MgcHJvYmFibHkgYQ0K PiBzcHVyaW91cyAnKicuDQo+IA0KDQpZZXMsIGl0J3MgYSBzcHVyaW91cyB0eXBpbmcuDQoNCj4g QW5kIHdoYXQgZG9lcyB+MS9zcXJ0KDIpIHJlZmVyIHRvPyBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0 aGUgY29lZmZpY2llbnQ/DQo+IEFuZCBkb2VzICd+JyBzdGFuZCBmb3IgJ2FwcHJveGltYXRlJz8g U2xpZ2h0bHkgY29uZnVzaW5nIGdpdmVuIHRoZQ0KPiBDIH4gb3BlcmF0b3IuIEl0J3MgcHJvYmFi bHkgYmV0dGVyIHRvIGp1c3Qgd3JpdGUgJ2FwcHJveC4gMS9zcXJ0KDIpJy4NCj4gDQoNCkFjaywg Zm9yIDEvc3FydCgyKSwgaXQgbWVhbnMgY29tcGFyaW5nIHRvIGhvcml6b250YWwoMCBkZWdyZWUp IG9yIHZlcnRpY2FsKDkwIGRlZ3JlZSkgZGlyZWN0aW9uLCBjb2VmZmljaWVudCBvZiBkaWFnb25h bCg0NSBkZWdyZWUgb3IgMTM1IGRlZ3JlZSkgZGlyZWN0aW9uIHNob3VsZCBiZSBjb3JyZWN0ZWQg d2l0aCAxL3NxcnQoMiksIHRvIG1ha2UgYWxsIGRpcmVjdGlvbiBhbGlnbiB3aXRoIHNhbWUgZ3Jh ZGllbnQgY2FsY3VsYXRpb24vY29ycmVjdGlvbi4NCg0KPiA+ICsgKiBAX19yZXNlcnZlZDA6IHJl c2VydmVkDQo+ID4gKyAqIEBjbGFtcF9zdGl0Y2g6IFNsb3BlIHRvIHN0aXRjaCBiZXR3ZWVuIGNs YW1wZWQgYW5kIHVuY2xhbXBlZCBlZGdlDQo+IHZhbHVlcw0KPiA+ICsgKiBAX19yZXNlcnZlZDE6 IHJlc2VydmVkDQo+ID4gKyAqIEBkaXJlY3RfbWV0cmljX3VwZGF0ZTogVXBkYXRlIGNvZWZmIGZv ciBkaXJlY3Rpb24gbWV0cmljDQo+ID4gKyAqIEBfX3Jlc2VydmVkMjogcmVzZXJ2ZWQNCj4gPiAr ICogQGVkX2hvcnZlcl9kaWFnX2NvZWZmOiBSYWRpYWwgQ29lZmZpY2llbnQgdGhhdCBjb21wZW5z YXRlcyBmb3INCj4gPiArICoJCQkgIGRpZmZlcmVudCBkaXN0YW5jZSBmb3IgdmVydGljYWwvaG9y aXpvbnRhbCBhbmQNCj4gPiArICoJCQkgIGRpYWdvbmFsIGdyYWRpZW50IGNhbGN1bGF0aW9uICh+ MS9zcXJ0KDIpKQ0KPiANCj4gZGl0dG8NCj4gDQoNCkFjaywgd2lsbCBpbXByb3ZlIHRoZSBjbGFy aXR5IGluIG5leHQgdXBkYXRlLg0KDQo+ID4gKyAqIEBfX3Jlc2VydmVkMzogcmVzZXJ2ZWQNCj4g PiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfeXV2cDFfaWVmZF9jb25maWdfcyB7DQo+ID4g KwlfX3UzMiBob3J2ZXJfZGlhZ19jb2VmZjo3Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDA6MTsN Cj4gPiArCV9fdTMyIGNsYW1wX3N0aXRjaDo2Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDE6MjsN Cj4gPiArCV9fdTMyIGRpcmVjdF9tZXRyaWNfdXBkYXRlOjU7DQo+ID4gKwlfX3UzMiBfX3Jlc2Vy dmVkMjozOw0KPiA+ICsJX191MzIgZWRfaG9ydmVyX2RpYWdfY29lZmY6NzsNCj4gPiArCV9fdTMy IF9fcmVzZXJ2ZWQzOjE7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICogc3RydWN0IGlwdTNfdWFwaV95dXZwMV9pZWZkX2NvbnRyb2wgLSBJRUZkIGNvbnRyb2wNCj4g PiArICoNCj4gPiArICogQGllZmRfZW46CUVuYWJsZSBJRUZkDQo+ID4gKyAqIEBkZW5vaXNlX2Vu OglFbmFibGUgZGVub2lzZQ0KPiA+ICsgKiBAZGlyZWN0X3Ntb290aF9lbjoJRW5hYmxlIGRpcmVj dGlvbmFsIHNtb290aA0KPiA+ICsgKiBAcmFkX2VuOglFbmFibGUgcmFkaWFsIHVwZGF0ZQ0KPiA+ ICsgKiBAdnNzbmxtX2VuOglFbmFibGUgVlNTTkxNIG91dHB1dCBmaWx0ZXINCj4gPiArICogQF9f cmVzZXJ2ZWQ6CXJlc2VydmVkDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX3l1dnAx X2llZmRfY29udHJvbCB7DQo+ID4gKwlfX3UzMiBpZWZkX2VuOjE7DQo+ID4gKwlfX3UzMiBkZW5v aXNlX2VuOjE7DQo+ID4gKwlfX3UzMiBkaXJlY3Rfc21vb3RoX2VuOjE7DQo+ID4gKwlfX3UzMiBy YWRfZW46MTsNCj4gPiArCV9fdTMyIHZzc25sbV9lbjoxOw0KPiA+ICsJX191MzIgX19yZXNlcnZl ZDoyNzsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3Qg aXB1M191YXBpX3NoYXJwX2NmZyAtIFNoYXJwZW5pbmcgY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAq IEBuZWdhX2xtdF90eHQ6IFNoYXJwZW5pbmcgbGltaXQgZm9yIG5lZ2F0aXZlIG92ZXJzaG9vdHMg Zm9yIHRleHR1cmUuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMDogcmVzZXJ2ZWQNCj4gPiArICogQHBv c2lfbG10X3R4dDogU2hhcnBlbmluZyBsaW1pdCBmb3IgcG9zaXRpdmUgb3ZlcnNob290cyBmb3Ig dGV4dHVyZS4NCj4gPiArICogQF9fcmVzZXJ2ZWQxOiByZXNlcnZlZA0KPiA+ICsgKiBAbmVnYV9s bXRfZGlyOiBTaGFycGVuaW5nIGxpbWl0IGZvciBuZWdhdGl2ZSBvdmVyc2hvb3RzIGZvciBkaXJl Y3Rpb24NCj4gKGVkZ2UpLg0KPiA+ICsgKiBAX19yZXNlcnZlZDI6IHJlc2VydmVkDQo+ID4gKyAq IEBwb3NpX2xtdF9kaXI6IFNoYXJwZW5pbmcgbGltaXQgZm9yIHBvc2l0aXZlIG92ZXJzaG9vdHMg Zm9yIGRpcmVjdGlvbg0KPiAoZWRnZSkuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMzogcmVzZXJ2ZWQN Cj4gPiArICoNCj4gPiArICogRml4ZWQgcG9pbnQgdHlwZSB1MTMuMCwgcmFuZ2UgWzAsIDgxOTFd Lg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9zaGFycF9jZmcgew0KPiA+ICsJX191 MzIgbmVnYV9sbXRfdHh0OjEzOw0KPiA+ICsJX191MzIgX19yZXNlcnZlZDA6MTk7DQo+ID4gKwlf X3UzMiBwb3NpX2xtdF90eHQ6MTM7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMToxOTsNCj4gPiAr CV9fdTMyIG5lZ2FfbG10X2RpcjoxMzsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQyOjE5Ow0KPiA+ ICsJX191MzIgcG9zaV9sbXRfZGlyOjEzOw0KPiA+ICsJX191MzIgX19yZXNlcnZlZDM6MTk7DQo+ ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IHN0cnVjdCBp cHUzX3VhcGlfZmFyX3cgLSBTaGFycGVuaW5nIGNvbmZpZyBmb3IgZmFyIHN1Yi1ncm91cA0KPiA+ ICsgKg0KPiA+ICsgKiBAZGlyX3NocnA6CVdlaWdodCBvZiB3aWRlIGRpcmVjdCBzaGFycGVuaW5n LCB1MS42LCByYW5nZSBbMCwgNjRdLA0KPiBkZWZhdWx0IDY0Lg0KPiA+ICsgKiBAX19yZXNlcnZl ZDA6CXJlc2VydmVkDQo+ID4gKyAqIEBkaXJfZG5zOglXZWlnaHQgb2Ygd2lkZSBkaXJlY3QgZGVu b2lzaW5nLCB1MS42LCByYW5nZSBbMCwgNjRdLA0KPiBkZWZhdWx0IDAuDQo+ID4gKyAqIEBfX3Jl c2VydmVkMToJcmVzZXJ2ZWQNCj4gPiArICogQG5kaXJfZG5zX3Bvd3I6CVBvd2VyIG9mIG5vbi1k aXJlY3QgZGVub2lzaW5nLA0KPiA+ICsgKgkJCVByZWNpc2lvbiB1MS42LCByYW5nZSBbMCwgNjRd LCBkZWZhdWx0IDY0Lg0KPiA+ICsgKiBAX19yZXNlcnZlZDI6CXJlc2VydmVkDQo+ID4gKyAqLw0K PiA+ICtzdHJ1Y3QgaXB1M191YXBpX2Zhcl93IHsNCj4gPiArCV9fdTMyIGRpcl9zaHJwOjc7DQo+ ID4gKwlfX3UzMiBfX3Jlc2VydmVkMDoxOw0KPiA+ICsJX191MzIgZGlyX2Ruczo3Ow0KPiA+ICsJ X191MzIgX19yZXNlcnZlZDE6MTsNCj4gPiArCV9fdTMyIG5kaXJfZG5zX3Bvd3I6NzsNCj4gPiAr CV9fdTMyIF9fcmVzZXJ2ZWQyOjk7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogc3RydWN0IHN0cnVjdCBpcHUzX3VhcGlfdW5zaGFycF9jZmcgLSBVbnNoYXJwIGNv bmZpZw0KPiA+ICsgKg0KPiA+ICsgKiBAdW5zaGFycF93ZWlnaHQ6IFVuc2hhcnAgbWFzayBibGVu ZGluZyB3ZWlnaHQuDQo+ID4gKyAqCQkgICAgdTEuNiwgcmFuZ2UgWzAsIDY0XSwgZGVmYXVsdCAx Ni4NCj4gPiArICoJCSAgICAwIC0gZGlzYWJsZWQsIDY0IC0gdXNlIG9ubHkgdW5zaGFycC4NCj4g PiArICogQF9fcmVzZXJ2ZWQwOiByZXNlcnZlZA0KPiA+ICsgKiBAdW5zaGFycF9hbW91bnQ6IFVu c2hhcnAgbWFzayBhbW91bnQsIHU0LjUsIHJhbmdlIFswLCA1MTFdLA0KPiBkZWZhdWx0IDAuDQo+ ID4gKyAqIEBfX3Jlc2VydmVkMTogcmVzZXJ2ZWQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUz X3VhcGlfdW5zaGFycF9jZmcgew0KPiA+ICsJX191MzIgdW5zaGFycF93ZWlnaHQ6NzsNCj4gPiAr CV9fdTMyIF9fcmVzZXJ2ZWQwOjE7DQo+ID4gKwlfX3UzMiB1bnNoYXJwX2Ftb3VudDo5Ow0KPiA+ ICsJX191MzIgX19yZXNlcnZlZDE6MTU7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV95dXZwMV9pZWZkX3NocnBfY2ZnIC0gSUVGZCBz aGFycG5lc3MgY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAqIEBjZmc6IHNoYXJwbmVzcyBjb25maWcg JmlwdTNfdWFwaV9zaGFycF9jZmcNCj4gPiArICogQGZhcl93OiB3aWRlIHJhbmdlIGNvbmZpZywg dmFsdWUgYXMgc3BlY2lmaWVkIGJ5ICZpcHUzX3VhcGlfZmFyX3c6DQo+ID4gKyAqCVRoZSA1eDUg ZW52aXJvbm1lbnQgaXMgc2VwYXJhdGVkIGludG8gMiBzdWItZ3JvdXBzLCB0aGUgM3gzIG5lYXJl c3QNCj4gPiArICoJbmVpZ2hib3JzICg4IHBpeGVscyBjYWxsZWQgTmVhciksIGFuZCB0aGUgc2Vj b25kIG9yZGVyIG5laWdoYm9yaG9vZA0KPiA+ICsgKglhcm91bmQgdGhlbSAoMTYgcGl4ZWxzIGNh bGxlZCBGYXIpLg0KPiA+ICsgKiBAdW5zaHJwX2NmZzogdW5zaGFycG5lc3MgY29uZmlnLiAmaXB1 M191YXBpX3Vuc2hhcnBfY2ZnDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX3l1dnAx X2llZmRfc2hycF9jZmcgew0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9zaGFycF9jZmcgY2ZnOw0K PiA+ICsJc3RydWN0IGlwdTNfdWFwaV9mYXJfdyBmYXJfdzsNCj4gPiArCXN0cnVjdCBpcHUzX3Vh cGlfdW5zaGFycF9jZmcgdW5zaHJwX2NmZzsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3Vuc2hhcnBfY29lZjAgLSBVbnNoYXJwIG1h c2sgY29lZmZpY2llbnRzDQo+ID4gKyAqDQo+ID4gKyAqIEBjMDA6IENvZWZmMTEsIHMwLjgsIHJh bmdlIFstMjU1LCAyNTVdLCBkZWZhdWx0IDEuDQo+ID4gKyAqIEBjMDE6IENvZWZmMTIsIHMwLjgs IHJhbmdlIFstMjU1LCAyNTVdLCBkZWZhdWx0IDUuDQo+ID4gKyAqIEBjMDI6IENvZWZmMTMsIHMw LjgsIHJhbmdlIFstMjU1LCAyNTVdLCBkZWZhdWx0IDkuDQo+ID4gKyAqIEBfX3Jlc2VydmVkOiBy ZXNlcnZlZA0KPiA+ICsgKg0KPiA+ICsgKiBDb25maWd1cmFibGUgcmVnaXN0ZXJzIGZvciBjb21t b24gc2hhcnBlbmluZyBzdXBwb3J0Lg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV91 bnNoYXJwX2NvZWYwIHsNCj4gPiArCV9fdTMyIGMwMDo5Ow0KPiA+ICsJX191MzIgYzAxOjk7DQo+ ID4gKwlfX3UzMiBjMDI6OTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQ6NTsNCj4gPiArfSBfX3Bh Y2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3Vuc2hhcnBf Y29lZjEgLSBVbnNoYXJwIG1hc2sgY29lZmZpY2llbnRzDQo+ID4gKyAqDQo+ID4gKyAqIEBjMTE6 IENvZWZmMjIsIHMwLjgsIHJhbmdlIFstMjU1LCAyNTVdLCBkZWZhdWx0IDI5Lg0KPiA+ICsgKiBA YzEyOiBDb2VmZjIzLCBzMC44LCByYW5nZSBbLTI1NSwgMjU1XSwgZGVmYXVsdCA1NS4NCj4gPiAr ICogQGMyMjogQ29lZmYzMywgczAuOCwgcmFuZ2UgWy0yNTUsIDI1NV0sIGRlZmF1bHQgOTYuDQo+ ID4gKyAqIEBfX3Jlc2VydmVkOiByZXNlcnZlZA0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNf dWFwaV91bnNoYXJwX2NvZWYxIHsNCj4gPiArCV9fdTMyIGMxMTo5Ow0KPiA+ICsJX191MzIgYzEy Ojk7DQo+ID4gKwlfX3UzMiBjMjI6OTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQ6NTsNCj4gPiAr fSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3l1 dnAxX2llZmRfdW5zaHJwX2NmZyAtIFVuc2hhcnAgbWFzayBjb25maWcNCj4gPiArICoNCj4gPiAr ICogQHVuc2hhcnBfY29lZjA6IHVuc2hhcnAgY29lZmZpY2llbnQgMCBjb25maWcuIFNlZQ0KPiAm aXB1M191YXBpX3Vuc2hhcnBfY29lZjANCj4gPiArICogQHVuc2hhcnBfY29lZjE6IHVuc2hhcnAg Y29lZmZpY2llbnQgMSBjb25maWcuIFNlZQ0KPiAmaXB1M191YXBpX3Vuc2hhcnBfY29lZjENCj4g PiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfeXV2cDFfaWVmZF91bnNocnBfY2ZnIHsNCj4g PiArCXN0cnVjdCBpcHUzX3VhcGlfdW5zaGFycF9jb2VmMCB1bnNoYXJwX2NvZWYwOw0KPiA+ICsJ c3RydWN0IGlwdTNfdWFwaV91bnNoYXJwX2NvZWYxIHVuc2hhcnBfY29lZjE7DQo+ID4gK30gX19w YWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9yYWRpYWxf cmVzZXRfeHkgLSBSYWRpYWwgY29vcmRpbmF0ZSByZXNldA0KPiA+ICsgKg0KPiA+ICsgKiBAeDoJ UmFkaWFsIHJlc2V0IG9mIHggY29vcmRpbmF0ZS4gUHJlY2lzaW9uIHMxMiwgWy00MDk1LCA0MDk1 XSwNCj4gZGVmYXVsdCAwLg0KPiA+ICsgKiBAX19yZXNlcnZlZDA6CXJlc2VydmVkDQo+ID4gKyAq IEB5OglSYWRpYWwgY2VudGVyIHkgY29vcmRpbmF0ZS4gUHJlY2lzaW9uIHMxMiwgWy00MDk1LCA0 MDk1XSwNCj4gZGVmYXVsdCAwLg0KPiA+ICsgKiBAX19yZXNlcnZlZDE6CXJlc2VydmVkDQo+ID4g KyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX3JhZGlhbF9yZXNldF94eSB7DQo+ID4gKwlfX3Mz MiB4OjEzOw0KPiA+ICsJX191MzIgX19yZXNlcnZlZDA6MzsNCj4gPiArCV9fczMyIHk6MTM7DQo+ ID4gKwlfX3UzMiBfX3Jlc2VydmVkMTozOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfcmFkaWFsX3Jlc2V0X3gyIC0gUmFkaWFsIFhe MiByZXNldA0KPiA+ICsgKg0KPiA+ICsgKiBAeDI6CVJhZGlhbCByZXNldCBvZiB4XjIgY29vcmRp bmF0ZS4gUHJlY2lzaW9uIHUyNCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAX19yZXNlcnZlZDoJcmVz ZXJ2ZWQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfcmFkaWFsX3Jlc2V0X3gyIHsN Cj4gPiArCV9fdTMyIHgyOjI0Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDo4Ow0KPiA+ICt9IF9f cGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfcmFkaWFs X3Jlc2V0X3kyIC0gUmFkaWFsIFleMiByZXNldA0KPiA+ICsgKg0KPiA+ICsgKiBAeTI6CVJhZGlh bCByZXNldCBvZiB5XjIgY29vcmRpbmF0ZS4gUHJlY2lzaW9uIHUyNCwgZGVmYXVsdCAwLg0KPiA+ ICsgKiBAX19yZXNlcnZlZDoJcmVzZXJ2ZWQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3Vh cGlfcmFkaWFsX3Jlc2V0X3kyIHsNCj4gPiArCV9fdTMyIHkyOjI0Ow0KPiA+ICsJX191MzIgX19y ZXNlcnZlZDo4Ow0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0 cnVjdCBpcHUzX3VhcGlfcmFkaWFsX2NmZyAtIFJhZGlhbCBjb25maWcNCj4gPiArICoNCj4gPiAr ICogQHJhZF9uZjogUmFkaWFsLiBSXjIgbm9ybWFsaXphdGlvbiBmYWN0b3IgaXMgc2NhbGUgZG93 biBieSAyXiAtICgxNSArDQo+IHNjYWxlKQ0KPiA+ICsgKiBAX19yZXNlcnZlZDA6IHJlc2VydmVk DQo+ID4gKyAqIEByYWRfaW52X3IyOiBSYWRpYWwgUl4tMiBub3JtZWxpemVkIHRvICgwLjUuLjEp LCBQcmVjJyB1NywgcmFuZ2UgWzAsIDEyN10uDQo+IA0KPiBQcmVjJyAtPiBQcmVjaXNpb24NCj4g DQoNCkFjay4NCg0KPiA+ICsgKiBAX19yZXNlcnZlZDE6IHJlc2VydmVkDQo+ID4gKyAqLw0KPiA+ ICtzdHJ1Y3QgaXB1M191YXBpX3JhZGlhbF9jZmcgew0KPiA+ICsJX191MzIgcmFkX25mOjQ7DQo+ ID4gKwlfX3UzMiBfX3Jlc2VydmVkMDo0Ow0KPiA+ICsJX191MzIgcmFkX2ludl9yMjo3Ow0KPiA+ ICsJX191MzIgX19yZXNlcnZlZDE6MTc7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9yYWRfZmFyX3cgLSBSYWRpYWwgRkFSIHN1Yi1n cm91cA0KPiA+ICsgKg0KPiA+ICsgKiBAcmFkX2Rpcl9mYXJfc2hhcnBfdzogV2VpZ2h0IG9mIHdp ZGUgZGlyZWN0IHNoYXJwZW5pbmcsIHUxLjYsIHJhbmdlDQo+IFswLCA2NF0sDQo+ID4gKyAqCQkJ IGRlZmF1bHQgNjQuDQo+ID4gKyAqIEByYWRfZGlyX2Zhcl9kbnNfdzogV2VpZ2h0IG9mIHdpZGUg ZGlyZWN0IGRlbm9pc2luZywgdTEuNiwgcmFuZ2UgWzAsDQo+IDY0XSwNCj4gPiArICoJCQkgZGVm YXVsdCAwLg0KPiA+ICsgKiBAcmFkX25kaXJfZmFyX2Ruc19wb3dlcjogcG93ZXIgb2Ygbm9uLWRp cmVjdCBzaGFycGVuaW5nLCB1MS42LA0KPiByYW5nZSBbMCwgNjRdLA0KPiA+ICsgKgkJCSBkZWZh dWx0IDAuDQo+ID4gKyAqIEBfX3Jlc2VydmVkOiByZXNlcnZlZA0KPiA+ICsgKi8NCj4gPiArc3Ry dWN0IGlwdTNfdWFwaV9yYWRfZmFyX3cgew0KPiA+ICsJX191MzIgcmFkX2Rpcl9mYXJfc2hhcnBf dzo4Ow0KPiA+ICsJX191MzIgcmFkX2Rpcl9mYXJfZG5zX3c6ODsNCj4gPiArCV9fdTMyIHJhZF9u ZGlyX2Zhcl9kbnNfcG93ZXI6ODsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQ6ODsNCj4gPiArfSBf X3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2N1X2Nm ZzAgLSBSYWRpdXMgQ29uZmlnIFVuaXQgY2ZnMCByZWdpc3Rlcg0KPiA+ICsgKg0KPiA+ICsgKiBA Y3U2X3BvdzogUG93ZXIgb2YgQ1U2LiBQb3dlciBvZiBub24tZGlyZWN0IHNoYXJwZW5pbmcsIHUz LjQuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMDogcmVzZXJ2ZWQNCj4gPiArICogQGN1X3Vuc2hhcnBf cG93OiBQb3dlciBvZiB1bnNoYXJwIG1hc2ssIHUyLjQuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMTog cmVzZXJ2ZWQNCj4gPiArICogQHJhZF9jdTZfcG93OiBSYWRpYWwvY29ybmVyIENVNi4gRGlyZWN0 ZWQgc2hhcnBlbmluZyBwb3dlciwgdTMuNC4NCj4gPiArICogQF9fcmVzZXJ2ZWQyOiByZXNlcnZl ZA0KPiA+ICsgKiBAcmFkX2N1X3Vuc2hhcnBfcG93OiBSYWRpYWwgcG93ZXIgb2YgdW5zaGFycCBt YXNrLCB1Mi40Lg0KPiA+ICsgKiBAX19yZXNlcnZlZDM6IHJlc2VydmVkDQo+ID4gKyAqLw0KPiA+ ICtzdHJ1Y3QgaXB1M191YXBpX2N1X2NmZzAgew0KPiA+ICsJX191MzIgY3U2X3Bvdzo3Ow0KPiA+ ICsJX191MzIgX19yZXNlcnZlZDA6MTsNCj4gPiArCV9fdTMyIGN1X3Vuc2hhcnBfcG93Ojc7DQo+ ID4gKwlfX3UzMiBfX3Jlc2VydmVkMToxOw0KPiA+ICsJX191MzIgcmFkX2N1Nl9wb3c6NzsNCj4g PiArCV9fdTMyIF9fcmVzZXJ2ZWQyOjE7DQo+ID4gKwlfX3UzMiByYWRfY3VfdW5zaGFycF9wb3c6 NjsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQzOjI7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9jdV9jZmcxIC0gUmFkaXVzIENvbmZp ZyBVbml0IGNmZzEgcmVnaXN0ZXINCj4gPiArICoNCj4gPiArICogQHJhZF9jdTZfeDE6IFgxIHBv aW50IG9mIENvbmZpZyBVbml0IDYsIHByZWNpc2lvbiB1OS4wLg0KPiA+ICsgKiBAX19yZXNlcnZl ZDA6IHJlc2VydmVkDQo+ID4gKyAqIEByYWRfY3VfdW5zaGFycF94MTogWDEgcG9pbnQgZm9yIENv bmZpZyBVbml0IHVuc2hhcnAgZm9yDQo+IHJhZGlhbC9jb3JuZXIgcG9pbnQNCj4gPiArICoJCQlw cmVjaXNpb24gdTkuMC4NCj4gPiArICogQF9fcmVzZXJ2ZWQxOiByZXNlcnZlZA0KPiA+ICsgKi8N Cj4gPiArc3RydWN0IGlwdTNfdWFwaV9jdV9jZmcxIHsNCj4gPiArCV9fdTMyIHJhZF9jdTZfeDE6 OTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQwOjE7DQo+ID4gKwlfX3UzMiByYWRfY3VfdW5zaGFy cF94MTo5Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDE6MTM7DQo+ID4gK30gX19wYWNrZWQ7DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV95dXZwMV9pZWZkX3JhZF9j ZmcgLSBJRUZkIHBhcmFtZXRlcnMgY2hhbmdlZA0KPiByYWRpYWxseSBvdmVyDQo+ID4gKyAqCQkJ CQkgdGhlIHBpY3R1cmUgcGxhaW4uDQo+IA0KPiBJIGd1ZXNzIHlvdSBtZWFuICdwbGFuZScgaW5z dGVhZCBvZiAncGxhaW4nPw0KPiANCg0KSXQncyAncGxhaW4nIGFjY29yZGluZyB0byB0aGUgc3Bl Y3MsIHdlIGFyZSBjb25zdWx0aW5nIGludGVybmFsbHkgZm9yIGEgbW9yZSBnZW5lcmljL2Rlc2Ny aXB0aXZlIHRlcm0sIHNhbWUgZm9yIHN0cnVjdCBpcHUzX3VhcGlfYW5yX3BsYWluX2NvbG9yLg0K DQo+ID4gKyAqDQo+ID4gKyAqIEByZXNldF94eTogcmVzZXQgeHkgdmFsdWUgaW4gcmFkaWFsIGNh bGN1bGF0aW9uLg0KPiAmaXB1M191YXBpX3JhZGlhbF9yZXNldF94eQ0KPiA+ICsgKiBAcmVzZXRf eDI6IHJlc2V0IHggc3F1YXJlIHZhbHVlIGluIHJhZGlhbCBjYWxjdWxhdGlvbi4gU2VlIHN0cnVj dA0KPiA+ICsgKgkgICAgICAmaXB1M191YXBpX3JhZGlhbF9yZXNldF94Mg0KPiA+ICsgKiBAcmVz ZXRfeTI6IHJlc2V0IHkgc3F1YXJlIHZhbHVlIGluIHJhZGlhbCBjYWxjdWxhdGlvbi4gU2VlIHN0 cnVjdA0KPiA+ICsgKgkgICAgICAmaXB1M191YXBpX3JhZGlhbF9yZXNldF95Mg0KPiA+ICsgKiBA Y2ZnOiByYWRpYWwgY29uZmlnIGRlZmluZWQgaW4gJmlwdTNfdWFwaV9yYWRpYWxfY2ZnDQo+ID4g KyAqIEByYWRfZmFyX3c6IHdlaWdodCBmb3Igd2lkZSByYW5nZSByYWRpYWwuICZpcHUzX3VhcGlf cmFkX2Zhcl93DQo+ID4gKyAqIEBjdV9jZmcwOiBjb25maWd1cmF0aW9uIHVuaXQgMC4gU2VlICZp cHUzX3VhcGlfY3VfY2ZnMA0KPiA+ICsgKiBAY3VfY2ZnMTogY29uZmlndXJhdGlvbiB1bml0IDEu IFNlZSAmaXB1M191YXBpX2N1X2NmZzENCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlf eXV2cDFfaWVmZF9yYWRfY2ZnIHsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfcmFkaWFsX3Jlc2V0 X3h5IHJlc2V0X3h5Ow0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9yYWRpYWxfcmVzZXRfeDIgcmVz ZXRfeDI7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3JhZGlhbF9yZXNldF95MiByZXNldF95MjsN Cj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfcmFkaWFsX2NmZyBjZmc7DQo+ID4gKwlzdHJ1Y3QgaXB1 M191YXBpX3JhZF9mYXJfdyByYWRfZmFyX3c7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2N1X2Nm ZzAgY3VfY2ZnMDsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfY3VfY2ZnMSBjdV9jZmcxOw0KPiA+ ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyogVnNzbmxtIC0gVmVyeSBzbWFsbCBzY2FsZSBu b24tbG9jYWwgbWVhbiBhbGdvcml0aG0gKi8NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1 Y3QgaXB1M191YXBpX3Zzc19sdXRfeCAtIFZzc25sbSBMVVQgeDAveDEveDINCj4gPiArICoNCj4g PiArICogQHZzX3gwOiBWc3NubG0gTFVUIHgwLCBwcmVjaXNpb24gdTgsIHJhbmdlIFswLCAyNTVd LCBkZWZhdWx0IDE2Lg0KPiA+ICsgKiBAdnNfeDE6IFZzc25sbSBMVVQgeDEsIHByZWNpc2lvbiB1 OCwgcmFuZ2UgWzAsIDI1NV0sIGRlZmF1bHQgMzIuDQo+ID4gKyAqIEB2c194MjogVnNzbmxtIExV VCB4MiwgcHJlY2lzaW9uIHU4LCByYW5nZSBbMCwgMjU1XSwgZGVmYXVsdCA2NC4NCj4gPiArICog QF9fcmVzZXJ2ZWQyOiByZXNlcnZlZA0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV92 c3NfbHV0X3ggew0KPiA+ICsJX191MzIgdnNfeDA6ODsNCj4gPiArCV9fdTMyIHZzX3gxOjg7DQo+ ID4gKwlfX3UzMiB2c194Mjo4Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDI6ODsNCj4gPiArfSBf X3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3Zzc19s dXRfeSAtIFZzc25sbSBMVVQgeTAveTEveTINCj4gPiArICoNCj4gPiArICogQHZzX3kxOiBWc3Nu bG0gTFVUIHkxLCBwcmVjaXNpb24gdTQsIHJhbmdlIFswLCA4XSwgZGVmYXVsdCAxLg0KPiA+ICsg KiBAX19yZXNlcnZlZDA6IHJlc2VydmVkDQo+ID4gKyAqIEB2c195MjogVnNzbmxtIExVVCB5Miwg cHJlY2lzaW9uIHU0LCByYW5nZSBbMCwgOF0sIGRlZmF1bHQgMy4NCj4gPiArICogQF9fcmVzZXJ2 ZWQxOiByZXNlcnZlZA0KPiA+ICsgKiBAdnNfeTM6IFZzc25sbSBMVVQgeTMsIHByZWNpc2lvbiB1 NCwgcmFuZ2UgWzAsIDhdLCBkZWZhdWx0IDguDQo+ID4gKyAqIEBfX3Jlc2VydmVkMjogcmVzZXJ2 ZWQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfdnNzX2x1dF95IHsNCj4gPiArCV9f dTMyIHZzX3kxOjQ7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMDo0Ow0KPiA+ICsJX191MzIgdnNf eTI6NDsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQxOjQ7DQo+ID4gKwlfX3UzMiB2c195Mzo0Ow0K PiA+ICsJX191MzIgX19yZXNlcnZlZDI6MTI7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV95dXZwMV9pZWZkX3Zzc25sbV9jZiAtIElF RmQgVnNzbmxtIExvb2t1cCB0YWJsZQ0KPiA+ICsgKg0KPiA+ICsgKiBAdnNzX2x1dF94OiB2c3Mg bG9va3VwIHRhYmxlLiBTZWUgJmlwdTNfdWFwaV92c3NfbHV0X3ggZGVzY3JpcHRpb24NCj4gPiAr ICogQHZzc19sdXRfeTogdnNzIGxvb2t1cCB0YWJsZS4gU2VlICZpcHUzX3VhcGlfdnNzX2x1dF95 IGRlc2NyaXB0aW9uDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX2llZmRf dnNzbmxtX2NmZyB7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3Zzc19sdXRfeCB2c3NfbHV0X3g7 DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3Zzc19sdXRfeSB2c3NfbHV0X3k7DQo+ID4gK30gX19w YWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV95dXZwMV9p ZWZkX2NvbmZpZyAtIElFRmQgY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAqIEB1bml0czogY29uZmln dXJhdGlvbiB1bml0IHNldHRpbmcsICZpcHUzX3VhcGlfeXV2cDFfaWVmZF9jZmdfdW5pdHMNCj4g PiArICogQGNvbmZpZzogY29uZmlndXJhdGlvbiwgYXMgZGVmaW5lZCBieSAmaXB1M191YXBpX3l1 dnAxX2llZmRfY29uZmlnX3MNCj4gPiArICogQGNvbnRyb2w6IGNvbnRyb2wgc2V0dGluZywgYXMg ZGVmaW5lZCBieQ0KPiAmaXB1M191YXBpX3l1dnAxX2llZmRfY29udHJvbA0KPiA+ICsgKiBAc2hh cnA6IHNoYXJwbmVzcyBzZXR0aW5nLCBhcyBkZWZpbmVkIGJ5DQo+ICZpcHUzX3VhcGlfeXV2cDFf aWVmZF9zaHJwX2NmZw0KPiA+ICsgKiBAdW5zaGFycDogdW5zaGFycG5lc3Mgc2V0dGluZywgYXMg ZGVmaW5lZCBieQ0KPiAmaXB1M191YXBpX3l1dnAxX2llZmRfdW5zaHJwX2NmZw0KPiA+ICsgKiBA cmFkOiByYWRpYWwgc2V0dGluZywgYXMgZGVmaW5lZCBieSAmaXB1M191YXBpX3l1dnAxX2llZmRf cmFkX2NmZw0KPiA+ICsgKiBAdnNzbG5tOiB2c3Nsbm0gc2V0dGluZywgYXMgZGVmaW5lZCBieQ0K PiAmaXB1M191YXBpX3l1dnAxX2llZmRfdnNzbmxtX2NmZw0KPiA+ICsgKi8NCj4gPiArc3RydWN0 IGlwdTNfdWFwaV95dXZwMV9pZWZkX2NvbmZpZyB7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3l1 dnAxX2llZmRfY2ZnX3VuaXRzIHVuaXRzOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV95dXZwMV9p ZWZkX2NvbmZpZ19zIGNvbmZpZzsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfeXV2cDFfaWVmZF9j b250cm9sIGNvbnRyb2w7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX2llZmRfc2hycF9j Zmcgc2hhcnA7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX2llZmRfdW5zaHJwX2NmZyB1 bnNoYXJwOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV95dXZwMV9pZWZkX3JhZF9jZmcgcmFkOw0K PiA+ICsJc3RydWN0IGlwdTNfdWFwaV95dXZwMV9pZWZkX3Zzc25sbV9jZmcgdnNzbG5tOw0KPiA+ ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlf eXV2cDFfeWRzX2NvbmZpZyAtIFkgRG93bi1TYW1wbGluZyBjb25maWcNCj4gPiArICoNCj4gPiAr ICogQGMwMDogcmFuZ2UgWzAsIDNdLCBkZWZhdWx0IDB4MA0KPiA+ICsgKiBAYzAxOiByYW5nZSBb MCwgM10sIGRlZmF1bHQgMHgxDQo+ID4gKyAqIEBjMDI6IHJhbmdlIFswLCAzXSwgZGVmYXVsdCAw eDENCj4gPiArICogQGMwMzogcmFuZ2UgWzAsIDNdLCBkZWZhdWx0IDB4MA0KPiA+ICsgKiBAYzEw OiByYW5nZSBbMCwgM10sIGRlZmF1bHQgMHgwDQo+ID4gKyAqIEBjMTE6IHJhbmdlIFswLCAzXSwg ZGVmYXVsdCAweDENCj4gPiArICogQGMxMjogcmFuZ2UgWzAsIDNdLCBkZWZhdWx0IDB4MQ0KPiA+ ICsgKiBAYzEzOiByYW5nZSBbMCwgM10sIGRlZmF1bHQgMHgwDQo+ID4gKyAqDQo+ID4gKyAqIEFi b3ZlIGFyZSA0eDIgZmlsdGVyIGNvZWZmaWNpZW50cyBmb3IgY2hyb21hIG91dHB1dCBkb3duc2Nh bGluZy4NCj4gPiArICoNCj4gPiArICogQG5vcm1fZmFjdG9yOiBOb3JtYWxpemF0aW9uIGZhY3Rv ciwgcmFuZ2UgWzAsIDRdLCBkZWZhdWx0IDINCj4gPiArICoJCTAgLSBkaXZpZGUgYnkgMQ0KPiA+ ICsgKgkJMSAtIGRpdmlkZSBieSAyDQo+ID4gKyAqCQkyIC0gZGl2aWRlIGJ5IDQNCj4gPiArICoJ CTMgLSBkaXZpZGUgYnkgOA0KPiA+ICsgKgkJNCAtIGRpdmlkZSBieSAxNg0KPiA+ICsgKiBAX19y ZXNlcnZlZDA6IHJlc2VydmVkDQo+ID4gKyAqIEBiaW5fb3V0cHV0OiBEb3duIHNhbXBsaW5nIG9u IEx1bWEgY2hhbm5lbCBpbiB0d28gb3B0aW9uYWwgbW9kZXMNCj4gPiArICoJCTAgLSBCaW4gb3V0 cHV0IDQuMi4wIChkZWZhdWx0KSwgMSBvdXRwdXQgNC4yLjIuDQo+ID4gKyAqIEBfX3Jlc2VydmVk MTogcmVzZXJ2ZWQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfeXV2cDFfeWRzX2Nv bmZpZyB7DQo+ID4gKwlfX3UzMiBjMDA6MjsNCj4gPiArCV9fdTMyIGMwMToyOw0KPiA+ICsJX191 MzIgYzAyOjI7DQo+ID4gKwlfX3UzMiBjMDM6MjsNCj4gPiArCV9fdTMyIGMxMDoyOw0KPiA+ICsJ X191MzIgYzExOjI7DQo+ID4gKwlfX3UzMiBjMTI6MjsNCj4gPiArCV9fdTMyIGMxMzoyOw0KPiA+ ICsJX191MzIgbm9ybV9mYWN0b3I6NTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQwOjQ7DQo+ID4g KwlfX3UzMiBiaW5fb3V0cHV0OjE7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMTo2Ow0KPiA+ICt9 IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyogQ2hyb21hIE5vaXNlIFJlZHVjdGlvbiAqLw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfeXV2cDFfY2hucl9lbmFibGVf Y29uZmlnIC0gQ2hyb21hIG5vaXNlIHJlZHVjdGlvbg0KPiBlbmFibGUNCj4gPiArICoNCj4gPiAr ICogQGVuYWJsZTogZW5hYmxlL2Rpc2FibGUgY2hyb21hIG5vaXNlIHJlZHVjdGlvbg0KPiA+ICsg KiBAeXV2X21vZGU6IDAgLSBZVVY0MjAsIDEgLSBZVVY0MjINCj4gPiArICogQF9fcmVzZXJ2ZWQw OiByZXNlcnZlZA0KPiA+ICsgKiBAY29sX3NpemU6IG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBm cmFtZSwgbWF4IHdpZHRoIGlzIDI1NjANCj4gPiArICogQF9fcmVzZXJ2ZWQxOiByZXNlcnZlZA0K PiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV95dXZwMV9jaG5yX2VuYWJsZV9jb25maWcg ew0KPiA+ICsJX191MzIgZW5hYmxlOjE7DQo+ID4gKwlfX3UzMiB5dXZfbW9kZToxOw0KPiA+ICsJ X191MzIgX19yZXNlcnZlZDA6MTQ7DQo+ID4gKwlfX3UzMiBjb2xfc2l6ZToxMjsNCj4gPiArCV9f dTMyIF9fcmVzZXJ2ZWQxOjQ7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogc3RydWN0IGlwdTNfdWFwaV95dXZwMV9jaG5yX2NvcmluZ19jb25maWcgLSBDb3Jpbmcg dGhyZXNob2xkcyBmb3IgVVYNCj4gPiArICoNCj4gPiArICogQHU6IFUgY29yaW5nIGxldmVsLCB1 MC4xMywgcmFuZ2UgWzAuMCwgMS4wXSwgZGVmYXVsdCAwLjANCj4gPiArICogQF9fcmVzZXJ2ZWQw OiByZXNlcnZlZA0KPiA+ICsgKiBAdjogViBjb3JpbmcgbGV2ZWwsIHUwLjEzLCByYW5nZSBbMC4w LCAxLjBdLCBkZWZhdWx0IDAuMA0KPiA+ICsgKiBAX19yZXNlcnZlZDE6IHJlc2VydmVkDQo+ID4g KyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX2NobnJfY29yaW5nX2NvbmZpZyB7DQo+ ID4gKwlfX3UzMiB1OjEzOw0KPiA+ICsJX191MzIgX19yZXNlcnZlZDA6MzsNCj4gPiArCV9fdTMy IHY6MTM7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMTozOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfeXV2cDFfY2hucl9zZW5zZV9n YWluX2NvbmZpZyAtIENocm9tYSBub2lzZQ0KPiByZWR1Y3Rpb24gZ2FpbnMNCj4gPiArICoNCj4g PiArICogQWxsIHNlbnNpdGl2aXR5IGdhaW4gcGFyYW1ldGVycyBoYXZlIHByZWNpc2lvbiB1MTMu MCwgcmFuZ2UgWzAsIDgxOTFdLg0KPiA+ICsgKg0KPiA+ICsgKiBAdnk6IFNlbnNpdGl2aXR5IG9m IGhvcml6b250YWwgZWRnZSBvZiBZLCBkZWZhdWx0IDEwMA0KPiA+ICsgKiBAdnU6IFNlbnNpdGl2 aXR5IG9mIGhvcml6b250YWwgZWRnZSBvZiBVLCBkZWZhdWx0IDEwMA0KPiA+ICsgKiBAdnY6IFNl bnNpdGl2aXR5IG9mIGhvcml6b250YWwgZWRnZSBvZiBWLCBkZWZhdWx0IDEwMA0KPiA+ICsgKiBA X19yZXNlcnZlZDA6IHJlc2VydmVkDQo+ID4gKyAqIEBoeTogU2Vuc2l0aXZpdHkgb2YgdmVydGlj YWwgZWRnZSBvZiBZLCBkZWZhdWx0IDUwDQo+ID4gKyAqIEBodTogU2Vuc2l0aXZpdHkgb2YgdmVy dGljYWwgZWRnZSBvZiBVLCBkZWZhdWx0IDUwDQo+ID4gKyAqIEBodjogU2Vuc2l0aXZpdHkgb2Yg dmVydGljYWwgZWRnZSBvZiBWLCBkZWZhdWx0IDUwDQo+ID4gKyAqIEBfX3Jlc2VydmVkMTogcmVz ZXJ2ZWQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfeXV2cDFfY2hucl9zZW5zZV9n YWluX2NvbmZpZyB7DQo+ID4gKwlfX3UzMiB2eTo4Ow0KPiA+ICsJX191MzIgdnU6ODsNCj4gPiAr CV9fdTMyIHZ2Ojg7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMDo4Ow0KPiA+ICsNCj4gPiArCV9f dTMyIGh5Ojg7DQo+ID4gKwlfX3UzMiBodTo4Ow0KPiA+ICsJX191MzIgaHY6ODsNCj4gPiArCV9f dTMyIF9fcmVzZXJ2ZWQxOjg7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogc3RydWN0IGlwdTNfdWFwaV95dXZwMV9jaG5yX2lpcl9maXJfY29uZmlnIC0gQ2hyb21h IElJUi9GSVIgZmlsdGVyIGNvbmZpZw0KPiA+ICsgKg0KPiA+ICsgKiBAZmlyXzBoOiBWYWx1ZSBv ZiBjZW50ZXIgdGFwIGluIGhvcml6b250YWwgRklSLCByYW5nZSBbMCwgMzJdLCBkZWZhdWx0IDgu DQo+ID4gKyAqIEBfX3Jlc2VydmVkMDogcmVzZXJ2ZWQNCj4gPiArICogQGZpcl8xaDogVmFsdWUg b2YgZGlzdGFuY2UgMSBpbiBob3Jpem9udGFsIEZJUiwgcmFuZ2UgWzAsIDMyXSwgZGVmYXVsdCAx Mi4NCj4gPiArICogQF9fcmVzZXJ2ZWQxOiByZXNlcnZlZA0KPiA+ICsgKiBAZmlyXzJoOiBWYWx1 ZSBvZiBkaXN0YW5jZSAyIHRhcCBpbiBob3Jpem9udGFsIEZJUiwgcmFuZ2UgWzAsIDMyXSwgZGVm YXVsdA0KPiAwLg0KPiA+ICsgKiBAZGFscGhhX2NsaXBfdmFsOiB3ZWlnaHQgZm9yIHByZXZpb3Vz IHJvdyBpbiBJSVIsIHJhbmdlIFsxLCAyNTZdLCBkZWZhdWx0DQo+IDAuDQo+ID4gKyAqIEBfX3Jl c2VydmVkMjogcmVzZXJ2ZWQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfeXV2cDFf Y2hucl9paXJfZmlyX2NvbmZpZyB7DQo+ID4gKwlfX3UzMiBmaXJfMGg6NjsNCj4gPiArCV9fdTMy IF9fcmVzZXJ2ZWQwOjI7DQo+ID4gKwlfX3UzMiBmaXJfMWg6NjsNCj4gPiArCV9fdTMyIF9fcmVz ZXJ2ZWQxOjI7DQo+ID4gKwlfX3UzMiBmaXJfMmg6NjsNCj4gPiArCV9fdTMyIGRhbHBoYV9jbGlw X3ZhbDo5Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDI6MTsNCj4gPiArfSBfX3BhY2tlZDsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX2NobnJfY29uZmln IC0gQ2hyb21hIG5vaXNlIHJlZHVjdGlvbiBjb25maWcNCj4gPiArICoNCj4gPiArICogQGVuYWJs ZTogY2hyb21hIG5vaXNlIHJlZHVjdGlvbiBlbmFibGUsIHNlZQ0KPiA+ICsgKgkgICAgJmlwdTNf dWFwaV95dXZwMV9jaG5yX2VuYWJsZV9jb25maWcNCj4gPiArICogQGNvcmluZzogY29yaW5nIGNv bmZpZyBmb3IgY2hyb21hIG5vaXNlIHJlZHVjdGlvbiwgc2VlDQo+ID4gKyAqCSAgICAmaXB1M191 YXBpX3l1dnAxX2NobnJfY29yaW5nX2NvbmZpZw0KPiA+ICsgKiBAc2Vuc2VfZ2Fpbjogc2Vuc2l0 aXZpdHkgY29uZmlnIGZvciBjaHJvbWEgbm9pc2UgcmVkdWN0aW9uLCBzZWUNCj4gPiArICoJCWlw dTNfdWFwaV95dXZwMV9jaG5yX3NlbnNlX2dhaW5fY29uZmlnDQo+ID4gKyAqIEBpaXJfZmlyOiBp aXIgYW5kIGZpciBjb25maWcgZm9yIGNocm9tYSBub2lzZSByZWR1Y3Rpb24sIHNlZQ0KPiA+ICsg KgkgICAgIGlwdTNfdWFwaV95dXZwMV9jaG5yX2lpcl9maXJfY29uZmlnDQo+ID4gKyAqLw0KPiA+ ICtzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX2NobnJfY29uZmlnIHsNCj4gPiArCXN0cnVjdCBpcHUz X3VhcGlfeXV2cDFfY2hucl9lbmFibGVfY29uZmlnIGVuYWJsZTsNCj4gPiArCXN0cnVjdCBpcHUz X3VhcGlfeXV2cDFfY2hucl9jb3JpbmdfY29uZmlnIGNvcmluZzsNCj4gPiArCXN0cnVjdCBpcHUz X3VhcGlfeXV2cDFfY2hucl9zZW5zZV9nYWluX2NvbmZpZyBzZW5zZV9nYWluOw0KPiA+ICsJc3Ry dWN0IGlwdTNfdWFwaV95dXZwMV9jaG5yX2lpcl9maXJfY29uZmlnIGlpcl9maXI7DQo+ID4gK30g X19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKiBFZGdlIEVuaGFuY2VtZW50IGFuZCBOb2lzZSBSZWR1 Y3Rpb24gKi8NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3l1dnAx X3lfZWVfbnJfbHBmX2NvbmZpZyAtIEx1bWEoWSkgZWRnZQ0KPiBlbmhhbmNlbWVudCBsb3ctcGFz cw0KPiA+ICsgKgkJCQkJICAgICAgIGZpbHRlciBjb2VmZmljaWVudHMNCj4gPiArICoNCj4gPiAr ICogQGFfZGlhZzogU21vb3RoaW5nIGRpYWdvbmFsIGNvZWZmaWNpZW50LCB1NS4wLg0KPiA+ICsg KiBAX19yZXNlcnZlZDA6IHJlc2VydmVkDQo+ID4gKyAqIEBhX3BlcmlwaDogSW1hZ2Ugc21vb3Ro aW5nIHBlcnBoZXJpYWwsIHU1LjAuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMTogcmVzZXJ2ZWQNCj4g PiArICogQGFfY2VudDogSW1hZ2UgU21vb3RoaW5nIGNlbnRlciBjb2VmZmljaWVudCwgdTUuMC4N Cj4gPiArICogQF9fcmVzZXJ2ZWQyOiByZXNlcnZlZA0KPiA+ICsgKiBAZW5hYmxlOiAwOiBZX0VF X05SIGRpc2FibGVkLCBvdXRwdXQgPSBpbnB1dDsgMTogWV9FRV9OUiBlbmFibGVkLg0KPiA+ICsg Ki8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV95dXZwMV95X2VlX25yX2xwZl9jb25maWcgew0KPiA+ ICsJX191MzIgYV9kaWFnOjU7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMDozOw0KPiA+ICsJX191 MzIgYV9wZXJpcGg6NTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQxOjM7DQo+ID4gKwlfX3UzMiBh X2NlbnQ6NTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQyOjk7DQo+ID4gKwlfX3UzMiBlbmFibGU6 MTsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1 M191YXBpX3l1dnAxX3lfZWVfbnJfc2Vuc2VfY29uZmlnIC0gTHVtYShZKSBlZGdlDQo+IGVuaGFu Y2VtZW50DQo+ID4gKyAqCQkJCQlub2lzZSByZWR1Y3Rpb24gc2Vuc2l0aXZpdHkgZ2FpbnMNCj4g PiArICoNCj4gPiArICogQGVkZ2Vfc2Vuc2VfMDogU2Vuc2l0aXZpdHkgb2YgZWRnZSBpbiBkYXJr IGFyZWEuIHUxMy4wLCBkZWZhdWx0IDgxOTEuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMDogcmVzZXJ2 ZWQNCj4gPiArICogQGRlbHRhX2VkZ2Vfc2Vuc2U6IERpZmZlcmVuY2UgaW4gdGhlIHNlbnNpdGl2 aXR5IG9mIGVkZ2VzIGJldHdlZW4NCj4gPiArICoJCSAgICAgIHRoZSBicmlnaHQgYW5kIGRhcmsg YXJlYXMuIHUxMy4wLCBkZWZhdWx0IDAuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMTogcmVzZXJ2ZWQN Cj4gPiArICogQGNvcm5lcl9zZW5zZV8wOiBTZW5zaXRpdml0eSBvZiBjb3JuZXIgaW4gZGFyayBh cmVhLiB1MTMuMCwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAX19yZXNlcnZlZDI6IHJlc2VydmVkDQo+ ID4gKyAqIEBkZWx0YV9jb3JuZXJfc2Vuc2U6IERpZmZlcmVuY2UgaW4gdGhlIHNlbnNpdGl2aXR5 IG9mIGNvcm5lcnMgYmV0d2Vlbg0KPiA+ICsgKgkJCXRoZSBicmlnaHQgYW5kIGRhcmsgYXJlYXMu IHUxMy4wLCBkZWZhdWx0IDgxOTEuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMzogcmVzZXJ2ZWQNCj4g PiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfeXV2cDFfeV9lZV9ucl9zZW5zZV9jb25maWcg ew0KPiA+ICsJX191MzIgZWRnZV9zZW5zZV8wOjEzOw0KPiA+ICsJX191MzIgX19yZXNlcnZlZDA6 MzsNCj4gPiArCV9fdTMyIGRlbHRhX2VkZ2Vfc2Vuc2U6MTM7DQo+ID4gKwlfX3UzMiBfX3Jlc2Vy dmVkMTozOw0KPiA+ICsJX191MzIgY29ybmVyX3NlbnNlXzA6MTM7DQo+ID4gKwlfX3UzMiBfX3Jl c2VydmVkMjozOw0KPiA+ICsJX191MzIgZGVsdGFfY29ybmVyX3NlbnNlOjEzOw0KPiA+ICsJX191 MzIgX19yZXNlcnZlZDM6MzsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX3lfZWVfbnJfZ2Fpbl9jb25maWcgLSBMdW1hKFkp IGVkZ2UNCj4gZW5oYW5jZW1lbnQNCj4gPiArICoJCQkJCQlub2lzZSByZWR1Y3Rpb24gZ2FpbiBj b25maWcNCj4gPiArICoNCj4gPiArICogQGdhaW5fcG9zXzA6IEdhaW4gZm9yIHBvc2l0aXZlIGVk Z2UgaW4gZGFyayBhcmVhLiB1NS4wLCBbMCwgMTZdLCBkZWZhdWx0DQo+IDIuDQo+ID4gKyAqIEBf X3Jlc2VydmVkMDogcmVzZXJ2ZWQNCj4gPiArICogQGRlbHRhX2dhaW5fcG9zaTogRGlmZmVyZW5j ZSBpbiB0aGUgZ2FpbiBvZiBlZGdlcyBiZXR3ZWVuIHRoZSBicmlnaHQNCj4gYW5kDQo+ID4gKyAq CQkgICAgIGRhcmsgYXJlYXMgZm9yIHBvc2l0aXZlIGVkZ2VzLiB1NS4wLCBbMCwgMTZdLCBkZWZh dWx0IDAuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMTogcmVzZXJ2ZWQNCj4gPiArICogQGdhaW5fbmVn XzA6IEdhaW4gZm9yIG5lZ2F0aXZlIGVkZ2UgaW4gZGFyayBhcmVhLiB1NS4wLCBbMCwgMTZdLCBk ZWZhdWx0DQo+IDguDQo+ID4gKyAqIEBfX3Jlc2VydmVkMjogcmVzZXJ2ZWQNCj4gPiArICogQGRl bHRhX2dhaW5fbmVnOiBEaWZmZXJlbmNlIGluIHRoZSBnYWluIG9mIGVkZ2VzIGJldHdlZW4gdGhl IGJyaWdodA0KPiBhbmQNCj4gPiArICoJCSAgICBkYXJrIGFyZWFzIGZvciBuZWdhdGl2ZSBlZGdl cy4gdTUuMCwgWzAsIDE2XSwgZGVmYXVsdCAwLg0KPiA+ICsgKiBAX19yZXNlcnZlZDM6IHJlc2Vy dmVkDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX3lfZWVfbnJfZ2Fpbl9j b25maWcgew0KPiA+ICsJX191MzIgZ2Fpbl9wb3NfMDo1Ow0KPiA+ICsJX191MzIgX19yZXNlcnZl ZDA6MzsNCj4gPiArCV9fdTMyIGRlbHRhX2dhaW5fcG9zaTo1Ow0KPiA+ICsJX191MzIgX19yZXNl cnZlZDE6MzsNCj4gPiArCV9fdTMyIGdhaW5fbmVnXzA6NTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2 ZWQyOjM7DQo+ID4gKwlfX3UzMiBkZWx0YV9nYWluX25lZzo1Ow0KPiA+ICsJX191MzIgX19yZXNl cnZlZDM6MzsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1 Y3QgaXB1M191YXBpX3l1dnAxX3lfZWVfbnJfY2xpcF9jb25maWcgLSBMdW1hKFkpIGVkZ2UNCj4g ZW5oYW5jZW1lbnQNCj4gPiArICoJCQkJCW5vaXNlIHJlZHVjdGlvbiBjbGlwcGluZyBjb25maWcN Cj4gPiArICoNCj4gPiArICogQGNsaXBfcG9zXzA6IExpbWl0IG9mIHBvc2l0aXZlIGVkZ2UgaW4g ZGFyayBhcmVhDQo+ID4gKyAqCQl1NSwgdmFsdWUgWzAsIDE2XSwgZGVmYXVsdCA4Lg0KPiA+ICsg KiBAX19yZXNlcnZlZDA6IHJlc2VydmVkDQo+ID4gKyAqIEBkZWx0YV9jbGlwX3Bvc2k6IERpZmZl cmVuY2UgaW4gdGhlIGxpbWl0IG9mIGVkZ2VzIGJldHdlZW4gdGhlIGJyaWdodA0KPiA+ICsgKgkJ ICAgICBhbmQgZGFyayBhcmVhcyBmb3IgcG9zaXRpdmUgZWRnZXMuDQo+ID4gKyAqCQkgICAgIHU1 LCB2YWx1ZSBbMCwgMTZdLCBkZWZhdWx0IDguDQo+ID4gKyAqIEBfX3Jlc2VydmVkMTogcmVzZXJ2 ZWQNCj4gPiArICogQGNsaXBfbmVnXzA6IExpbWl0IG9mIG5lZ2F0aXZlIGVkZ2UgaW4gZGFyayBh cmVhDQo+ID4gKyAqCQl1NSwgdmFsdWUgWzAsIDE2XSwgZGVmYXVsdCA4Lg0KPiA+ICsgKiBAX19y ZXNlcnZlZDI6IHJlc2VydmVkDQo+ID4gKyAqIEBkZWx0YV9jbGlwX25lZzogRGlmZmVyZW5jZSBp biB0aGUgbGltaXQgb2YgZWRnZXMgYmV0d2VlbiB0aGUgYnJpZ2h0DQo+ID4gKyAqCQkgICAgYW5k IGRhcmsgYXJlYXMgZm9yIG5lZ2F0aXZlIGVkZ2VzLg0KPiA+ICsgKgkJICAgIHU1LCB2YWx1ZSBb MCwgMTZdLCBkZWZhdWx0IDguDQo+ID4gKyAqIEBfX3Jlc2VydmVkMzogcmVzZXJ2ZWQNCj4gPiAr ICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfeXV2cDFfeV9lZV9ucl9jbGlwX2NvbmZpZyB7DQo+ ID4gKwlfX3UzMiBjbGlwX3Bvc18wOjU7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMDozOw0KPiA+ ICsJX191MzIgZGVsdGFfY2xpcF9wb3NpOjU7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMTozOw0K PiA+ICsJX191MzIgY2xpcF9uZWdfMDo1Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDI6MzsNCj4g PiArCV9fdTMyIGRlbHRhX2NsaXBfbmVnOjU7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMzozOw0K PiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3Vh cGlfeXV2cDFfeV9lZV9ucl9mcm5nX2NvbmZpZyAtIEx1bWEoWSkgZWRnZQ0KPiBlbmhhbmNlbWVu dA0KPiA+ICsgKgkJCQkJCW5vaXNlIHJlZHVjdGlvbiBmcmluZ2UgY29uZmlnDQo+ID4gKyAqDQo+ ID4gKyAqIEBnYWluX2V4cDogQ29tbW9uIGV4cG9uZW50IG9mIGdhaW5zLCB1NCwgWzAsIDhdLCBk ZWZhdWx0IDIuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMDogcmVzZXJ2ZWQNCj4gPiArICogQG1pbl9l ZGdlOiBUaHJlc2hvbGQgZm9yIGVkZ2UgYW5kIHNtb290aCBzdGl0Y2hpbmcsIHUxMy4NCj4gPiAr ICogQF9fcmVzZXJ2ZWQxOiByZXNlcnZlZA0KPiA+ICsgKiBAbGluX3NlZ19wYXJhbTogUG93ZXIg b2YgTGluU2VnLCB1NC4NCj4gPiArICogQF9fcmVzZXJ2ZWQyOiByZXNlcnZlZA0KPiA+ICsgKiBA dDE6IFBhcmFtZXRlciBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBlZGdlIGVuaGFuY2VtZW50 LCB1MS4wLCBbMCwNCj4gMV0sDQo+ID4gKyAqCWRlZmF1bHQgMS4NCj4gPiArICogQHQyOiBQYXJh bWV0ZXIgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgc21vb3RoaW5nLCB1MS4wLCBbMCwgMV0s DQo+ID4gKyAqCWRlZmF1bHQgMS4NCj4gPiArICogQF9fcmVzZXJ2ZWQzOiByZXNlcnZlZA0KPiA+ ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV95dXZwMV95X2VlX25yX2ZybmdfY29uZmlnIHsN Cj4gPiArCV9fdTMyIGdhaW5fZXhwOjQ7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMDoyODsNCj4g PiArCV9fdTMyIG1pbl9lZGdlOjEzOw0KPiA+ICsJX191MzIgX19yZXNlcnZlZDE6MzsNCj4gPiAr CV9fdTMyIGxpbl9zZWdfcGFyYW06NDsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQyOjQ7DQo+ID4g KwlfX3UzMiB0MToxOw0KPiA+ICsJX191MzIgdDI6MTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQz OjY7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlw dTNfdWFwaV95dXZwMV95X2VlX25yX2RpYWdfY29uZmlnIC0gTHVtYShZKSBlZGdlDQo+IGVuaGFu Y2VtZW50DQo+ID4gKyAqCQkJCQlub2lzZSByZWR1Y3Rpb24gZGlhZ29uYWwgY29uZmlnDQo+ID4g KyAqDQo+ID4gKyAqIEBkaWFnX2Rpc2NfZzogQ29lZmZpY2llbnQgdGhhdCBwcmlvcml0aXplIGRp YWdvbmFsIGVkZ2UgZGlyZWN0aW9uIG9uDQo+ID4gKyAqCQkgaG9yaXpvbnRhbCBvciB2ZXJ0aWNh bCBmb3IgZmluYWwgZW5oYW5jZW1lbnQuDQo+ID4gKyAqCQkgdTQuMCwgWzEsIDE1XSwgZGVmYXVs dCAxLg0KPiA+ICsgKiBAX19yZXNlcnZlZDA6IHJlc2VydmVkDQo+ID4gKyAqIEBodndfaG9yOiBX ZWlnaHQgb2YgaG9yaXpvbnRhbC92ZXJ0aWNhbCBlZGdlIGVuaGFuY2VtZW50IGZvciBodg0KPiBl ZGdlLg0KPiA+ICsgKgkJdTIuMiwgWzEsIDE1XSwgZGVmYXVsdCA0Lg0KPiA+ICsgKiBAZHdfaG9y OiBXZWlnaHQgb2YgZGlhZ29uYWwgZWRnZSBlbmhhbmNlbWVudCBmb3IgaHYgZWRnZS4NCj4gPiAr ICoJCXUyLjIsIFsxLCAxNV0sIGRlZmF1bHQgMS4NCj4gPiArICogQGh2d19kaWFnOiBXZWlnaHQg b2YgaG9yaXpvbnRhbC92ZXJ0aWNhbCBlZGdlIGVuaGFuY2VtZW50IGZvcg0KPiBkaWFnb25hbCBl ZGdlLg0KPiA+ICsgKgkJdTIuMiwgWzEsIDE1XSwgZGVmYXVsdCAxLg0KPiA+ICsgKiBAZHdfZGlh ZzogV2VpZ2h0IG9mIGRpYWdvbmFsIGVkZ2UgZW5oYW5jZW1lbnQgZm9yIGRpYWdvbmFsIGVkZ2Uu DQo+ID4gKyAqCQl1Mi4yLCBbMSwgMTVdLCBkZWZhdWx0IDQuDQo+ID4gKyAqIEBfX3Jlc2VydmVk MTogcmVzZXJ2ZWQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfeXV2cDFfeV9lZV9u cl9kaWFnX2NvbmZpZyB7DQo+ID4gKwlfX3UzMiBkaWFnX2Rpc2NfZzo0Ow0KPiA+ICsJX191MzIg X19yZXNlcnZlZDA6NDsNCj4gPiArCV9fdTMyIGh2d19ob3I6NDsNCj4gPiArCV9fdTMyIGR3X2hv cjo0Ow0KPiA+ICsJX191MzIgaHZ3X2RpYWc6NDsNCj4gPiArCV9fdTMyIGR3X2RpYWc6NDsNCj4g PiArCV9fdTMyIF9fcmVzZXJ2ZWQxOjg7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV95dXZwMV95X2VlX25yX2ZjX2NvcmluZ19jb25m aWcgLSBMdW1hKFkpIGVkZ2UNCj4gZW5oYW5jZW1lbnQNCj4gPiArICoJCW5vaXNlIHJlZHVjdGlv biBmYWxzZSBjb2xvciBjb3JyZWN0aW9uIChGQ0MpIGNvcmluZyBjb25maWcNCj4gPiArICoNCj4g PiArICogQHBvc18wOiBHYWluIGZvciBwb3NpdGl2ZSBlZGdlIGluIGRhcmssIHUxMy4wLCBbMCwg MTZdLCBkZWZhdWx0IDAuDQo+ID4gKyAqIEBfX3Jlc2VydmVkMDogcmVzZXJ2ZWQNCj4gPiArICog QHBvc19kZWx0YTogR2FpbiBmb3IgcG9zaXRpdmUgZWRnZSBpbiBicmlnaHQsIHZhbHVlOiBwb3Nf MCArIHBvc19kZWx0YQ0KPiA8PTE2DQo+ID4gKyAqCQl1MTMuMCwgZGVmYXVsdCAwLg0KPiA+ICsg KiBAX19yZXNlcnZlZDE6IHJlc2VydmVkDQo+ID4gKyAqIEBuZWdfMDogR2FpbiBmb3IgbmVnYXRp dmUgZWRnZSBpbiBkYXJrIGFyZWEsIHUxMy4wLCByYW5nZSBbMCwgMTZdLA0KPiBkZWZhdWx0IDAu DQo+ID4gKyAqIEBfX3Jlc2VydmVkMjogcmVzZXJ2ZWQNCj4gPiArICogQG5lZ19kZWx0YTogR2Fp biBmb3IgbmVnYXRpdmUgZWRnZSBpbiBicmlnaHQgYXJlYS4gbmVnXzAgKyBuZWdfZGVsdGENCj4g PD0xNg0KPiA+ICsgKgkJdTEzLjAsIGRlZmF1bHQgMC4NCj4gPiArICogQF9fcmVzZXJ2ZWQzOiBy ZXNlcnZlZA0KPiA+ICsgKg0KPiA+ICsgKiBDb3JpbmcgaXMgYSBzaW1wbGUgc29mdCB0aHJlc2hv bGRpbmcgdGVjaG5pcXVlLg0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV95dXZwMV95 X2VlX25yX2ZjX2NvcmluZ19jb25maWcgew0KPiA+ICsJX191MzIgcG9zXzA6MTM7DQo+ID4gKwlf X3UzMiBfX3Jlc2VydmVkMDozOw0KPiA+ICsJX191MzIgcG9zX2RlbHRhOjEzOw0KPiA+ICsJX191 MzIgX19yZXNlcnZlZDE6MzsNCj4gPiArCV9fdTMyIG5lZ18wOjEzOw0KPiA+ICsJX191MzIgX19y ZXNlcnZlZDI6MzsNCj4gPiArCV9fdTMyIG5lZ19kZWx0YToxMzsNCj4gPiArCV9fdTMyIF9fcmVz ZXJ2ZWQzOjM7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3Ry dWN0IGlwdTNfdWFwaV95dXZwMV95X2VlX25yX2NvbmZpZyAtIEVkZ2UgZW5oYW5jZW1lbnQgYW5k IG5vaXNlDQo+IHJlZHVjdGlvbg0KPiA+ICsgKg0KPiA+ICsgKiBAbHBmOiBsb3ctcGFzcyBmaWx0 ZXIgY29uZmlnLiBTZWUgJmlwdTNfdWFwaV95dXZwMV95X2VlX25yX2xwZl9jb25maWcNCj4gPiAr ICogQHNlbnNlOiBzZW5zaXRpdml0eSBjb25maWcuIFNlZQ0KPiAmaXB1M191YXBpX3l1dnAxX3lf ZWVfbnJfc2Vuc2VfY29uZmlnDQo+ID4gKyAqIEBnYWluOiBnYWluIGNvbmZpZyBhcyBkZWZpbmVk IGluDQo+ICZpcHUzX3VhcGlfeXV2cDFfeV9lZV9ucl9nYWluX2NvbmZpZw0KPiA+ICsgKiBAY2xp cDogY2xpcCBjb25maWcgYXMgZGVmaW5lZCBpbiAmaXB1M191YXBpX3l1dnAxX3lfZWVfbnJfY2xp cF9jb25maWcNCj4gPiArICogQGZybmc6IGZyaW5nZSBjb25maWcgYXMgZGVmaW5lZCBpbg0KPiAm aXB1M191YXBpX3l1dnAxX3lfZWVfbnJfZnJuZ19jb25maWcNCj4gPiArICogQGRpYWc6IGRpYWdv bmFsIGVkZ2UgY29uZmlnLiBTZWUNCj4gJmlwdTNfdWFwaV95dXZwMV95X2VlX25yX2RpYWdfY29u ZmlnDQo+ID4gKyAqIEBmY19jb3Jpbmc6IGNvcmluZyBjb25maWcgZm9yIGZyaW5nZSBjb250cm9s LiBTZWUNCj4gPiArICoJICAgICAgICZpcHUzX3VhcGlfeXV2cDFfeV9lZV9ucl9mY19jb3Jpbmdf Y29uZmlnDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX3lfZWVfbnJfY29u ZmlnIHsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfeXV2cDFfeV9lZV9ucl9scGZfY29uZmlnIGxw ZjsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfeXV2cDFfeV9lZV9ucl9zZW5zZV9jb25maWcgc2Vu c2U7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX3lfZWVfbnJfZ2Fpbl9jb25maWcgZ2Fp bjsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfeXV2cDFfeV9lZV9ucl9jbGlwX2NvbmZpZyBjbGlw Ow0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV95dXZwMV95X2VlX25yX2ZybmdfY29uZmlnIGZybmc7 DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3l1dnAxX3lfZWVfbnJfZGlhZ19jb25maWcgZGlhZzsN Cj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfeXV2cDFfeV9lZV9ucl9mY19jb3JpbmdfY29uZmlnIGZj X2NvcmluZzsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qIFRvdGFsIENvbG9yIENv cnJlY3Rpb24gKi8NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3l1 dnAyX3RjY19nZW5fY29udHJvbF9zdGF0aWNfY29uZmlnIC0gVG90YWwgY29sb3INCj4gY29ycmVj dGlvbg0KPiA+ICsgKgkJCQlnZW5lcmFsIGNvbnRyb2wgY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAq IEBlbjoJMCAtIFRDQyBkaXNhYmxlZC4gT3V0cHV0ID0gaW5wdXQgMSAtIFRDQyBlbmFibGVkLg0K PiA+ICsgKiBAYmxlbmRfc2hpZnQ6CWJsZW5kIHNoaWZ0LCBSYW5nZVszLCA0XSwgZGVmYXVsdCBO QS4NCj4gPiArICogQGdhaW5fYWNjb3JkaW5nX3RvX3lfb25seToJMDogR2FpbiBpcyBjYWxjdWxh dGVkIGFjY29yZGluZyB0byBZVVYsDQo+ID4gKyAqCQkJCTE6IEdhaW4gaXMgY2FsY3VsYXRlZCBh Y2NvcmRpbmcgdG8gWSBvbmx5DQo+ID4gKyAqIEBfX3Jlc2VydmVkMDogcmVzZXJ2ZWQNCj4gPiAr ICogQGdhbW1hOglGaW5hbCBibGVuZGluZyBjb2VmZmljaWVudHMuIFZhbHVlc1stMTYsIDE2XSwg ZGVmYXVsdCBOQS4NCj4gPiArICogQF9fcmVzZXJ2ZWQxOiByZXNlcnZlZA0KPiA+ICsgKiBAZGVs dGE6CUZpbmFsIGJsZW5kaW5nIGNvZWZmaWNpZW50cy4gVmFsdWVzWy0xNiwgMTZdLCBkZWZhdWx0 IE5BLg0KPiA+ICsgKiBAX19yZXNlcnZlZDI6IHJlc2VydmVkDQo+ID4gKyAqLw0KPiA+ICtzdHJ1 Y3QgaXB1M191YXBpX3l1dnAyX3RjY19nZW5fY29udHJvbF9zdGF0aWNfY29uZmlnIHsNCj4gPiAr CV9fdTMyIGVuOjE7DQo+ID4gKwlfX3UzMiBibGVuZF9zaGlmdDozOw0KPiA+ICsJX191MzIgZ2Fp bl9hY2NvcmRpbmdfdG9feV9vbmx5OjE7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMDoxMTsNCj4g PiArCV9fczMyIGdhbW1hOjU7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMTozOw0KPiA+ICsJX19z MzIgZGVsdGE6NTsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQyOjM7DQo+ID4gK30gX19wYWNrZWQ7 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV95dXZwMl90Y2NfbWFj Y19lbGVtX3N0YXRpY19jb25maWcgLSBUb3RhbCBjb2xvcg0KPiBjb3JyZWN0aW9uDQo+ID4gKyAq CQkJCW11bHRpLWF4aXMgY29sb3IgY29udHJvbCAoTUFDQykgY29uZmlnDQo+ID4gKyAqDQo+ID4g KyAqIEBhOiBhIGNvZWZmaWNpZW50IGZvciAyeDIgTUFDQyBjb252ZXJzaW9uIG1hdHJpeC4NCj4g PiArICogQF9fcmVzZXJ2ZWQwOiByZXNlcnZlZA0KPiA+ICsgKiBAYjogYiBjb2VmZmljaWVudCAg MngyIE1BQ0MgY29udmVyc2lvbiBtYXRyaXguDQo+ID4gKyAqIEBfX3Jlc2VydmVkMTogcmVzZXJ2 ZWQNCj4gPiArICogQGM6IGMgY29lZmZpY2llbnQgZm9yIDJ4MiBNQUNDIGNvbnZlcnNpb24gbWF0 cml4Lg0KPiA+ICsgKiBAX19yZXNlcnZlZDI6IHJlc2VydmVkDQo+ID4gKyAqIEBkOiBkIGNvZWZm aWNpZW50IGZvciAyeDIgTUFDQyBjb252ZXJzaW9uIG1hdHJpeC4NCj4gPiArICogQF9fcmVzZXJ2 ZWQzOiByZXNlcnZlZA0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV95dXZwMl90Y2Nf bWFjY19lbGVtX3N0YXRpY19jb25maWcgew0KPiA+ICsJX19zMzIgYToxMjsNCj4gPiArCV9fdTMy IF9fcmVzZXJ2ZWQwOjQ7DQo+ID4gKwlfX3MzMiBiOjEyOw0KPiA+ICsJX191MzIgX19yZXNlcnZl ZDE6NDsNCj4gPiArCV9fczMyIGM6MTI7DQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMjo0Ow0KPiA+ ICsJX19zMzIgZDoxMjsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQzOjQ7DQo+ID4gK30gX19wYWNr ZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV95dXZwMl90Y2Nf bWFjY190YWJsZV9zdGF0aWNfY29uZmlnIC0gVG90YWwgY29sb3INCj4gY29ycmVjdGlvbg0KPiA+ ICsgKgkJCQltdWx0aS1heGlzIGNvbG9yIGNvbnRyb2wgKE1BQ0MpIHRhYmxlIGFycmF5DQo+ID4g KyAqDQo+ID4gKyAqIEBlbnRyaWVzOiBjb25maWcgZm9yIG11bHRpIGF4aXMgY29sb3IgY29ycmVj dGlvbiwgYXMgc3BlY2lmaWVkIGJ5DQo+ID4gKyAqCSAgICAgJmlwdTNfdWFwaV95dXZwMl90Y2Nf bWFjY19lbGVtX3N0YXRpY19jb25maWcNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlf eXV2cDJfdGNjX21hY2NfdGFibGVfc3RhdGljX2NvbmZpZyB7DQo+ID4gKwlzdHJ1Y3QgaXB1M191 YXBpX3l1dnAyX3RjY19tYWNjX2VsZW1fc3RhdGljX2NvbmZpZw0KPiA+ICsJCWVudHJpZXNbSVBV M19VQVBJX1lVVlAyX1RDQ19NQUNDX1RBQkxFX0VMRU1FTlRTXTsNCj4gPiArfSBfX3BhY2tlZDsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3l1dnAyX3RjY19pbnZf eV9sdXRfc3RhdGljX2NvbmZpZyAtIFRvdGFsIGNvbG9yDQo+IGNvcnJlY3Rpb24NCj4gPiArICoJ CQkJaW52ZXJzZSB5IGxvb2t1cCB0YWJsZQ0KPiA+ICsgKg0KPiA+ICsgKiBAZW50cmllczogbG9v a3VwIHRhYmxlIGZvciBpbnZlcnNlIHkgZXN0aW1hdGlvbiwgYW5kIHVzZSBpdCB0byBlc3RpbWF0 ZQ0KPiB0aGUNCj4gPiArICoJICAgICByYXRpbyBiZXR3ZWVuIGx1bWEgYW5kIGNocm9tYS4gQ2hy b21hIGJ5IGFwcHJveGltYXRlIHRoZQ0KPiBhYnNvbHV0ZQ0KPiA+ICsgKgkgICAgIHZhbHVlIG9m IHRoZSByYWRpdXMgb24gdGhlIGNocm9tYSBwbGFuZSAoUiA9IHNxcnQodV4yK3ZeMikgKSBhbmQN Cj4gPiArICoJICAgICBsdW1hIGJ5IGFwcHJveGltYXRlIGJ5IDEvWS4NCj4gPiArICovDQo+ID4g K3N0cnVjdCBpcHUzX3VhcGlfeXV2cDJfdGNjX2ludl95X2x1dF9zdGF0aWNfY29uZmlnIHsNCj4g PiArCV9fdTE2IGVudHJpZXNbSVBVM19VQVBJX1lVVlAyX1RDQ19JTlZfWV9MVVRfRUxFTUVOVFNd Ow0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUz X3VhcGlfeXV2cDJfdGNjX2dhaW5fcGN3bF9sdXRfc3RhdGljX2NvbmZpZyAtIFRvdGFsIGNvbG9y DQo+ID4gKyAqCQkJCQljb3JyZWN0aW9uIGxvb2t1cCB0YWJsZSBmb3IgUENXTA0KPiA+ICsgKg0K PiA+ICsgKiBAZW50cmllczogbG9va3VwIHRhYmxlIGZvciBnYWluIHBpZWNlIHdpc2UgbGluZWFy IHRyYW5zZm9ybWF0aW9uIChQQ1dMKQ0KPiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV95 dXZwMl90Y2NfZ2Fpbl9wY3dsX2x1dF9zdGF0aWNfY29uZmlnIHsNCj4gPiArCV9fdTE2IGVudHJp ZXNbSVBVM19VQVBJX1lVVlAyX1RDQ19HQUlOX1BDV0xfTFVUX0VMRU1FTlRTXTsNCj4gPiArfSBf X3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3l1dnAy X3RjY19yX3Nxcl9sdXRfc3RhdGljX2NvbmZpZyAtIFRvdGFsIGNvbG9yDQo+IGNvcnJlY3Rpb24N Cj4gPiArICoJCQkJbG9va3VwIHRhYmxlIGZvciByIHNxdWFyZSByb290DQo+ID4gKyAqDQo+ID4g KyAqIEBlbnRyaWVzOiBsb29rdXAgdGFibGUgZm9yIHIgc3F1YXJlIHJvb3QgZXN0aW1hdGlvbg0K PiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV95dXZwMl90Y2Nfcl9zcXJfbHV0X3N0YXRp Y19jb25maWcgew0KPiA+ICsJX19zMTYgZW50cmllc1tJUFUzX1VBUElfWVVWUDJfVENDX1JfU1FS X0xVVF9FTEVNRU5UU107DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICogc3RydWN0IGlwdTNfdWFwaV95dXZwMl90Y2Nfc3RhdGljX2NvbmZpZy0gVG90YWwgY29sb3Ig Y29ycmVjdGlvbiBzdGF0aWMNCj4gPiArICoNCj4gPiArICogQGdlbl9jb250cm9sOiBnZW5lcmFs IGNvbmZpZyBmb3IgVG90YWwgQ29sb3IgQ29ycmVjdGlvbg0KPiA+ICsgKiBAbWFjY190YWJsZTog Y29uZmlnIGZvciBtdWx0aSBheGlzIGNvbG9yIGNvcnJlY3Rpb24NCj4gPiArICogQGludl95X2x1 dDogbG9va3VwIHRhYmxlIGZvciBpbnZlcnNlIHkgZXN0aW1hdGlvbg0KPiA+ICsgKiBAZ2Fpbl9w Y3dsOiBsb29rdXAgdGFibGUgZm9yIGdhaW4gUENXTA0KPiA+ICsgKiBAcl9zcXJfbHV0OiBsb29r dXAgdGFibGUgZm9yIHIgc3F1YXJlIHJvb3QgZXN0aW1hdGlvbi4NCj4gPiArICovDQo+ID4gK3N0 cnVjdCBpcHUzX3VhcGlfeXV2cDJfdGNjX3N0YXRpY19jb25maWcgew0KPiA+ICsJc3RydWN0IGlw dTNfdWFwaV95dXZwMl90Y2NfZ2VuX2NvbnRyb2xfc3RhdGljX2NvbmZpZyBnZW5fY29udHJvbDsN Cj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfeXV2cDJfdGNjX21hY2NfdGFibGVfc3RhdGljX2NvbmZp ZyBtYWNjX3RhYmxlOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV95dXZwMl90Y2NfaW52X3lfbHV0 X3N0YXRpY19jb25maWcgaW52X3lfbHV0Ow0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV95dXZwMl90 Y2NfZ2Fpbl9wY3dsX2x1dF9zdGF0aWNfY29uZmlnIGdhaW5fcGN3bDsNCj4gPiArCXN0cnVjdCBp cHUzX3VhcGlfeXV2cDJfdGNjX3Jfc3FyX2x1dF9zdGF0aWNfY29uZmlnIHJfc3FyX2x1dDsNCj4g PiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qIEFkdmFuY2VkIE5vaXNlIFJlZHVjdGlvbiBy ZWxhdGVkIHN0cnVjdHMgKi8NCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3Vh cGlfYW5yX2FscGhhIC0gQWR2YW5jZWQgbm9pc2UgcmVkdWN0aW9uIGFscGhhDQo+ID4gKyAqDQo+ ID4gKyAqIFR1bmFibGUgcGFyYW1ldGVycyB0aGF0IGFyZSBzdWJqZWN0IHRvIG1vZGlmaWNhdGlv biBhY2NvcmRpbmcgdG8gdGhlDQo+ID4gKyAqIHRvdGFsIGdhaW4gdXNlZC4NCj4gPiArICovDQo+ ID4gK3N0cnVjdCBpcHUzX3VhcGlfYW5yX2FscGhhIHsNCj4gPiArCV9fdTE2IGdyOw0KPiA+ICsJ X191MTYgcjsNCj4gPiArCV9fdTE2IGI7DQo+ID4gKwlfX3UxNiBnYjsNCj4gPiArCV9fdTE2IGRj X2dyOw0KPiA+ICsJX191MTYgZGNfcjsNCj4gPiArCV9fdTE2IGRjX2I7DQo+ID4gKwlfX3UxNiBk Y19nYjsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIHN0cnVjdCBp cHUzX3VhcGlfYW5yX2JldGEgLSBBZHZhbmNlZCBub2lzZSByZWR1Y3Rpb24gYmV0YQ0KPiA+ICsg Kg0KPiA+ICsgKiBUdW5hYmxlIHBhcmFtZXRlcnMgdGhhdCBhcmUgc3ViamVjdCB0byBtb2RpZmlj YXRpb24gYWNjb3JkaW5nIHRvIHRoZQ0KPiA+ICsgKiB0b3RhbCBnYWluIHVzZWQuDQo+ID4gKyAq Lw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX2Fucl9iZXRhIHsNCj4gPiArCV9fdTE2IGJldGFfZ3I7 DQo+ID4gKwlfX3UxNiBiZXRhX3I7DQo+ID4gKwlfX3UxNiBiZXRhX2I7DQo+ID4gKwlfX3UxNiBi ZXRhX2diOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoNCj4gPiArICogc3RydWN0 IGlwdTNfdWFwaV9hbnJfcGxhaW5fY29sb3IgLSBBZHZhbmNlZCBub2lzZSByZWR1Y3Rpb24gcGxh aW4NCj4gY29sb3Igd2l0aA0KPiA+ICsgKgkJCQkgICAgICA0eDQgbWF0cml4DQo+IA0KPiBXaGF0 IGlzIGEgInBsYWluIGNvbG9yIj8gT3Igc2hvdWxkIHRoaXMgaGF2ZSBiZWVuICJwbGFuZSBjb2xv ciI/IEJ1dCB0aGVuIEkNCj4gZG9uJ3Qga25vdyB3aGF0IGEgInBsYW5lIGNvbG9yIiBpcyBlaXRo ZXIgOi0pDQo+IA0KDQpUaGFua3MgZm9yIGNhdGNoaW5nIHRoaXMsIHdpbGwgZmluZCBvdXQgdGhl IHBsYWluIGV4cGxhbmF0aW9uIDopIA0KDQo+ID4gKyAqDQo+ID4gKyAqIFR1bmFibGUgcGFyYW1l dGVycyB0aGF0IGFyZSBzdWJqZWN0IHRvIG1vZGlmaWNhdGlvbiBhY2NvcmRpbmcgdG8gdGhlDQo+ ID4gKyAqIHRvdGFsIGdhaW4gdXNlZC4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlf YW5yX3BsYWluX2NvbG9yIHsNCj4gPiArCV9fdTE2IHJlZ193X2dyWzE2XTsNCj4gPiArCV9fdTE2 IHJlZ193X3JbMTZdOw0KPiA+ICsJX191MTYgcmVnX3dfYlsxNl07DQo+ID4gKwlfX3UxNiByZWdf d19nYlsxNl07DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3Ry dWN0IGlwdTNfdWFwaV9hbnJfdHJhbnNmb3JtX2NvbmZpZyAtIEFkdmFuY2VkIG5vaXNlIHJlZHVj dGlvbg0KPiB0cmFuc2Zvcm0NCj4gPiArICoNCj4gPiArICogQGVuYWJsZTogYWR2YW5jZWQgbm9p c2UgcmVkdWN0aW9uIGVuYWJsZWQuDQo+ID4gKyAqIEBhZGFwdGl2ZV90cmVzaGhvbGRfZW46IE9u IElQVTMsIGFkYXB0aXZlIHRocmVzaG9sZCBpcyBhbHdheXMNCj4gZW5hYmxlZC4NCj4gPiArICog QF9fcmVzZXJ2ZWQxOiByZXNlcnZlZA0KPiA+ICsgKiBAX19yZXNlcnZlZDI6IHJlc2VydmVkDQo+ ID4gKyAqIEBhbHBoYTogdXNpbmcgZm9sbG93aW5nIGRlZmF1bHRzOg0KPiA+ICsgKgkJMTMsIDEz LCAxMywgMTMsIDAsIDAsIDAsIDANCj4gPiArICoJCTExLCAxMSwgMTEsIDExLCAwLCAwLCAwLCAw DQo+ID4gKyAqCQkxNCwgIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDANCj4gPiArICogQGJldGE6IHVz ZSBmb2xsb3dpbmcgZGVmYXVsdHM6DQo+ID4gKyAqCQkyNCwgMjQsIDI0LCAyNA0KPiA+ICsgKgkJ MjEsIDIwLCAyMCwgMjENCj4gPiArICoJCTI1LCAyNSwgMjUsIDI1DQo+ID4gKyAqIEBjb2xvcjog dXNlIGRlZmF1bHRzIGRlZmluZWQgaW4gZHJpdmVyL21lZGlhL3BjaS9pbnRlbC9pcHUzLXRhYmxl cy5jDQo+ID4gKyAqIEBzcXJ0X2x1dDogMTEgYml0cyBwZXIgZWxlbWVudCwgdmFsdWVzID0NCj4g PiArICoJCQkJCVs3MjQgNzY4IDgxMCA4NDkgODg3DQo+ID4gKyAqCQkJCQk5MjMgOTU4IDk5MSAx MDI0IDEwNTYNCj4gPiArICoJCQkJCTExMTYgMTE0NSAxMTczIDEyMDEgMTA4Ng0KPiA+ICsgKgkJ CQkJMTIyOCAxMjU0IDEyODAgMTMwNSAxMzMwDQo+ID4gKyAqCQkJCQkxMzU1IDEzNzkgMTQwMiAx NDI1IDE0NDhdDQo+ID4gKyAqIEB4cmVzZXQ6IFJlc2V0IHZhbHVlIG9mIFggZm9yIHJeMiBjYWxj dWxhdGlvbiBWYWx1ZTogY29sX3N0YXJ0LVhfY2VudGVyDQo+ID4gKyAqCUNvbnN0cmFpbnQ6IFhy ZXNldCArIEZyYW1lV2RpdGg9NDA5NSBYcmVzZXQ9IC00MDk1LCBkZWZhdWx0IC0xNjMyLg0KPiA+ ICsgKiBAX19yZXNlcnZlZDM6IHJlc2VydmVkDQo+ID4gKyAqIEB5cmVzZXQ6IFJlc2V0IHZhbHVl IG9mIFkgZm9yIHJeMiBjYWxjdWxhdGlvbiBWYWx1ZTogcm93X3N0YXJ0LVlfY2VudGVyDQo+ID4g KyAqCSBDb25zdHJhaW50OiBZcmVzZXQgKyBGcmFtZUhlaWdodD00MDk1IFlyZXNldD0gLTQwOTUs IGRlZmF1bHQgLTEyMjQuDQo+ID4gKyAqIEBfX3Jlc2VydmVkNDogcmVzZXJ2ZWQNCj4gPiArICog QHhfc3FyX3Jlc2V0OiBSZXNldCB2YWx1ZSBvZiBYXjIgZm9yIHJeMiBjYWxjdWxhdGlvbiBWYWx1 ZSA9IChYcmVzZXQpXjINCj4gPiArICogQHJfbm9ybWZhY3RvcjogTm9ybWFsaXphdGlvbiBmYWN0 b3IgZm9yIFIuIERlZmF1bHQgMTQuDQo+ID4gKyAqIEBfX3Jlc2VydmVkNTogcmVzZXJ2ZWQNCj4g PiArICogQHlfc3FyX3Jlc2V0OiBSZXNldCB2YWx1ZSBvZiBZXjIgZm9yIHJeMiBjYWxjdWxhdGlv biBWYWx1ZSA9IChZcmVzZXQpXjINCj4gPiArICogQGdhaW5fc2NhbGU6IFBhcmFtZXRlciBkZXNj cmliaW5nIHNoYWRpbmcgZ2FpbiBhcyBhIGZ1bmN0aW9uIG9mDQo+IGRpc3RhbmNlDQo+ID4gKyAq CQlmcm9tIHRoZSBpbWFnZSBjZW50ZXIuDQo+ID4gKyAqCQlBIHNpbmdsZSB2YWx1ZSBwZXIgZnJh bWUsIGxvYWRlZCBieSB0aGUgZHJpdmVyLiBEZWZhdWx0IDExNS4NCj4gPiArICovDQo+ID4gK3N0 cnVjdCBpcHUzX3VhcGlfYW5yX3RyYW5zZm9ybV9jb25maWcgew0KPiA+ICsJX191MzIgZW5hYmxl OjE7CQkJLyogMCBvciAxLCBkaXNhYmxlZCBvciBlbmFibGVkDQo+ICovDQo+ID4gKwlfX3UzMiBh ZGFwdGl2ZV90cmVzaGhvbGRfZW46MTsJLyogT24gSVBVMywgYWx3YXlzIGVuYWJsZWQNCj4gKi8N Cj4gPiArDQo+ID4gKwlfX3UzMiBfX3Jlc2VydmVkMTozMDsNCj4gPiArCV9fdTggX19yZXNlcnZl ZDJbNDRdOw0KPiA+ICsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfYW5yX2FscGhhIGFscGhhWzNd Ow0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9hbnJfYmV0YSBiZXRhWzNdOw0KPiA+ICsJc3RydWN0 IGlwdTNfdWFwaV9hbnJfcGxhaW5fY29sb3IgY29sb3JbM107DQo+ID4gKw0KPiA+ICsJX191MTYg c3FydF9sdXRbSVBVM19VQVBJX0FOUl9MVVRfU0laRV07CS8qIDExIGJpdHMgcGVyIGVsZW1lbnQN Cj4gKi8NCj4gPiArDQo+ID4gKwlfX3MxNiB4cmVzZXQ6MTM7DQo+ID4gKwlfX3UxNiBfX3Jlc2Vy dmVkMzozOw0KPiA+ICsJX19zMTYgeXJlc2V0OjEzOw0KPiA+ICsJX191MTYgX19yZXNlcnZlZDQ6 MzsNCj4gPiArDQo+ID4gKwlfX3UzMiB4X3Nxcl9yZXNldDoyNDsNCj4gPiArCV9fdTMyIHJfbm9y bWZhY3Rvcjo1Ow0KPiA+ICsJX191MzIgX19yZXNlcnZlZDU6MzsNCj4gPiArDQo+ID4gKwlfX3Uz MiB5X3Nxcl9yZXNldDoyNDsNCj4gPiArCV9fdTMyIGdhaW5fc2NhbGU6ODsNCj4gPiArfSBfX3Bh Y2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2Fucl9zdGl0 Y2hfcHlyYW1pZCAtIEFOUiBzdGl0Y2ggcHlyYW1pZA0KPiA+ICsgKg0KPiA+ICsgKiBAZW50cnkw OiBweXJhbWlkIExVVCBlbnRyeTAsIHJhbmdlIFsweDAsIDB4M2ZdDQo+ID4gKyAqIEBlbnRyeTE6 IHB5cmFtaWQgTFVUIGVudHJ5MSwgcmFuZ2UgWzB4MCwgMHgzZl0NCj4gPiArICogQGVudHJ5Mjog cHlyYW1pZCBMVVQgZW50cnkyLCByYW5nZSBbMHgwLCAweDNmXQ0KPiA+ICsgKiBAX19yZXNlcnZl ZDogcmVzZXJ2ZWQNCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfYW5yX3N0aXRjaF9w eXJhbWlkIHsNCj4gPiArCV9fdTMyIGVudHJ5MDo2Ow0KPiA+ICsJX191MzIgZW50cnkxOjY7DQo+ ID4gKwlfX3UzMiBlbnRyeTI6NjsNCj4gPiArCV9fdTMyIF9fcmVzZXJ2ZWQ6MTQ7DQo+ID4gK30g X19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9hbnJf c3RpdGNoX2NvbmZpZyAtIEFOUiBzdGl0Y2ggY29uZmlnDQo+ID4gKyAqDQo+ID4gKyAqIEBhbnJf c3RpdGNoX2VuOiBlbmFibGUgc3RpdGNoLiBFbmFibGVkIHdpdGggMS4NCj4gPiArICogQF9fcmVz ZXJ2ZWQ6IHJlc2VydmVkDQo+ID4gKyAqIEBweXJhbWlkOiBweXJhbWlkIHRhYmxlIGFzIGRlZmlu ZWQgYnkNCj4gJmlwdTNfdWFwaV9hbnJfc3RpdGNoX3B5cmFtaWQNCj4gPiArICoJCWRlZmF1bHQg dmFsdWVzOg0KPiA+ICsgKgkJeyAxLCAzLCA1IH0sIHsgNywgNywgNSB9LCB7IDMsIDEsIDMgfSwN Cj4gPiArICoJCXsgOSwgMTUsIDIxIH0sIHsgMjEsIDE1LCA5IH0sIHsgMywgNSwgMTUgfSwNCj4g PiArICoJCXsgMjUsIDM1LCAzNSB9LCB7IDI1LCAxNSwgNSB9LCB7IDcsIDIxLCAzNSB9LA0KPiA+ ICsgKgkJeyA0OSwgNDksIDM1IH0sIHsgMjEsIDcsIDcgfSwgeyAyMSwgMzUsIDQ5IH0sDQo+ID4g KyAqCQl7IDQ5LCAzNSwgMjEgfSwgeyA3LCA1LCAxNSB9LCB7IDI1LCAzNSwgMzUgfSwNCj4gPiAr ICoJCXsgMjUsIDE1LCA1IH0sIHsgMywgOSwgMTUgfSwgeyAyMSwgMjEsIDE1IH0sDQo+ID4gKyAq CQl7IDksIDMsIDEgfSwgeyAzLCA1LCA3IH0sIHsgNywgNSwgM30sIHsgMSB9DQo+ID4gKyAqLw0K PiA+ICtzdHJ1Y3QgaXB1M191YXBpX2Fucl9zdGl0Y2hfY29uZmlnIHsNCj4gPiArCV9fdTMyIGFu cl9zdGl0Y2hfZW47DQo+ID4gKwlfX3U4IF9fcmVzZXJ2ZWRbNDRdOw0KPiA+ICsJc3RydWN0IGlw dTNfdWFwaV9hbnJfc3RpdGNoX3B5cmFtaWQNCj4gcHlyYW1pZFtJUFUzX1VBUElfQU5SX1BZUkFN SURfU0laRV07DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3Ry dWN0IGlwdTNfdWFwaV9hbnJfY29uZmlnIC0gQU5SIGNvbmZpZw0KPiA+ICsgKg0KPiA+ICsgKiBA dHJhbnNmb3JtOglhZHZhbmNlZCBub2lzZSByZWR1Y3Rpb24gdHJhbnNmb3JtIGNvbmZpZyBhcw0K PiBzcGVjaWZpZWQgYnkNCj4gPiArICoJCSZpcHUzX3VhcGlfYW5yX3RyYW5zZm9ybV9jb25maWcN Cj4gPiArICogQHN0aXRjaDogY3JlYXRlIDR4NCBwYXRjaCBmcm9tIDQgc3Vycm91bmRpbmcgOHg4 IHBhdGNoZXMuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX2Fucl9jb25maWcgew0K PiA+ICsJc3RydWN0IGlwdTNfdWFwaV9hbnJfdHJhbnNmb3JtX2NvbmZpZyB0cmFuc2Zvcm0NCj4g X19hdHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfYW5y X3N0aXRjaF9jb25maWcgc3RpdGNoIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4g K30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9h Y2NfcGFyYW0gLSBBY2NlbGVyYXRvciBjbHVzdGVyIHBhcmFtZXRlcnMNCj4gPiArICoNCj4gPiAr ICogQUNDIHJlZmVycyB0byB0aGUgSFcgY2x1c3RlciBjb250YWluaW5nIGFsbCBGaXhlZCBGdW5j dGlvbnMoRkZzKS4gRWFjaCBGRg0KPiANCj4gQWRkIHNwYWNlIGJlZm9yZSAnKEZGcyknLg0KDQpB Y2suDQoNCj4gDQo+ID4gKyAqIGltcGxlbWVudHMgYSBzcGVjaWZpYyBhbGdvcml0aG0uDQo+ID4g KyAqDQo+ID4gKyAqIEBibnI6CXBhcmFtZXRlcnMgZm9yIGJheWVyIG5vaXNlIHJlZHVjdGlvbiBz dGF0aWMgY29uZmlnLiBTZWUNCj4gPiArICoJCSZpcHUzX3VhcGlfYm5yX3N0YXRpY19jb25maWcN Cj4gPiArICogQGdyZWVuX2Rpc3Bhcml0eToJZGlzcGFyaXR5IHN0YXRpYyBjb25maWcgYmV0d2Vl biBnciBhbmQgZ2INCj4gY2hhbm5lbC4NCj4gPiArICoJCQlTZWUgJmlwdTNfdWFwaV9ibnJfc3Rh dGljX2NvbmZpZ19ncmVlbl9kaXNwYXJpdHkNCj4gPiArICogQGRtOglkZS1tb3NhaWMgY29uZmln LiBTZWUgJmlwdTNfdWFwaV9kbV9jb25maWcNCj4gPiArICogQGNjbToJY29sb3IgY29ycmVjdGlv biBtYXRyaXguIFNlZSAmaXB1M191YXBpX2NjbV9tYXRfY29uZmlnDQo+ID4gKyAqIEBnYW1tYToJ Z2FtbWEgY29ycmVjdGlvbiBjb25maWcuIFNlZSAmaXB1M191YXBpX2dhbW1hX2NvbmZpZw0KPiA+ ICsgKiBAY3NjOgljb2xvciBzcGFjZSBjb252ZXJzaW9uIG1hdHJpeC4gU2VlDQo+ICZpcHUzX3Vh cGlfY3NjX21hdF9jb25maWcNCj4gPiArICogQGNkczoJY29sb3IgZG93biBzYW1wbGUgY29uZmln LiBTZWUgJmlwdTNfdWFwaV9jZHNfcGFyYW1zDQo+ID4gKyAqIEBzaGQ6CWxlbnMgc2hhZGluZyBj b3JyZWN0aW9uIGNvbmZpZy4gU2VlICZpcHUzX3VhcGlfc2hkX2NvbmZpZw0KPiA+ICsgKiBAaWVm ZDoJSW1hZ2UgZW5oYW5jZW1lbnQgZmlsdGVyIGFuZCBkZW5vaXNlIGNvbmZpZy4NCj4gPiArICoJ CSZpcHUzX3VhcGlfeXV2cDFfaWVmZF9jb25maWcNCj4gPiArICogQHlkc19jMDoJeSBkb3duIHNj YWxlciBjb25maWcuICZpcHUzX3VhcGlfeXV2cDFfeWRzX2NvbmZpZw0KPiA+ICsgKiBAY2hucl9j MDoJY2hyb21hIG5vaXNlIHJlZHVjdGlvbiBjb25maWcuDQo+ICZpcHUzX3VhcGlfeXV2cDFfY2hu cl9jb25maWcNCj4gPiArICogQHlfZWVfbnI6CXkgZWRnZSBlbmhhbmNlbWVudCBhbmQgbm9pc2Ug cmVkdWN0aW9uIGNvbmZpZy4NCj4gPiArICoJCSZpcHUzX3VhcGlfeXV2cDFfeV9lZV9ucl9jb25m aWcNCj4gPiArICogQHlkczoJeSBkb3duIHNjYWxlciBjb25maWcuIFNlZSAmaXB1M191YXBpX3l1 dnAxX3lkc19jb25maWcNCj4gPiArICogQGNobnI6CWNocm9tYSBub2lzZSByZWR1Y3Rpb24gY29u ZmlnLiBTZWUNCj4gJmlwdTNfdWFwaV95dXZwMV9jaG5yX2NvbmZpZw0KPiA+ICsgKiBAX19yZXNl cnZlZDE6IHJlc2VydmVkDQo+ID4gKyAqIEB5ZHMyOgl5IGNoYW5uZWwgZG93biBzY2FsZXIgY29u ZmlnLiBTZWUNCj4gJmlwdTNfdWFwaV95dXZwMV95ZHNfY29uZmlnDQo+ID4gKyAqIEB0Y2M6CXRv dGFsIGNvbG9yIGNvcnJlY3Rpb24gY29uZmlnIGFzIGRlZmluZWQgaW4gc3RydWN0DQo+ID4gKyAq CQkmaXB1M191YXBpX3l1dnAyX3RjY19zdGF0aWNfY29uZmlnDQo+ID4gKyAqIEBfX3Jlc2VydmVk MjogcmVzZXJ2ZWQNCj4gPiArICogQGFucjoJYWR2YW5jZWQgbm9pc2UgcmVkdWN0aW9uIGNvbmZp Zy5TZWUgJmlwdTNfdWFwaV9hbnJfY29uZmlnDQo+ID4gKyAqIEBhd2JfZnI6CUFXQiBmaWx0ZXIg cmVzcG9uc2UgY29uZmlnLiBTZWUgaXB1M191YXBpX2F3Yl9mcl9jb25maWcNCj4gPiArICogQGFl OglhdXRvIGV4cG9zdXJlIGNvbmZpZyAgQXMgc3BlY2lmaWVkIGJ5ICZpcHUzX3VhcGlfYWVfY29u ZmlnDQo+ID4gKyAqIEBhZjoJYXV0byBmb2N1cyBjb25maWcuIEFzIHNwZWNpZmllZCBieSAmaXB1 M191YXBpX2FmX2NvbmZpZw0KPiA+ICsgKiBAYXdiOglhdXRvIHdoaXRlIGJhbGFuY2UgY29uZmln LiBBcyBzcGVjaWZpZWQgYnkNCj4gJmlwdTNfdWFwaV9hd2JfY29uZmlnDQo+ID4gKyAqLw0KPiA+ ICtzdHJ1Y3QgaXB1M191YXBpX2FjY19wYXJhbSB7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2Ju cl9zdGF0aWNfY29uZmlnIGJucjsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfYm5yX3N0YXRpY19j b25maWdfZ3JlZW5fZGlzcGFyaXR5DQo+ID4gKwkJCQlncmVlbl9kaXNwYXJpdHkgX19hdHRyaWJ1 dGVfXygoYWxpZ25lZCgzMikpKTsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfZG1fY29uZmlnIGRt IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2Nj bV9tYXRfY29uZmlnIGNjbSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDMyKSkpOw0KPiA+ICsJc3Ry dWN0IGlwdTNfdWFwaV9nYW1tYV9jb25maWcgZ2FtbWEgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgz MikpKTsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfY3NjX21hdF9jb25maWcgY3NjIF9fYXR0cmli dXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2Nkc19wYXJhbXMg Y2RzIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBp X3NoZF9jb25maWcgc2hkIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4gKwlzdHJ1 Y3QgaXB1M191YXBpX3l1dnAxX2llZmRfY29uZmlnIGllZmQgX19hdHRyaWJ1dGVfXygoYWxpZ25l ZCgzMikpKTsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfeXV2cDFfeWRzX2NvbmZpZyB5ZHNfYzAN Cj4gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlf eXV2cDFfY2hucl9jb25maWcgY2hucl9jMA0KPiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDMyKSkp Ow0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV95dXZwMV95X2VlX25yX2NvbmZpZyB5X2VlX25yDQo+ IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX3l1 dnAxX3lkc19jb25maWcgeWRzIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4gKwlz dHJ1Y3QgaXB1M191YXBpX3l1dnAxX2NobnJfY29uZmlnIGNobnINCj4gX19hdHRyaWJ1dGVfXygo YWxpZ25lZCgzMikpKTsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfeXV2cDFfeWRzX2NvbmZpZyB5 ZHMyIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMzIpKSk7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBp X3l1dnAyX3RjY19zdGF0aWNfY29uZmlnIHRjYw0KPiBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDMy KSkpOw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9hbnJfY29uZmlnIGFucjsNCj4gPiArCXN0cnVj dCBpcHUzX3VhcGlfYXdiX2ZyX2NvbmZpZyBhd2JfZnI7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBp X2FlX2NvbmZpZyBhZTsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfYWZfY29uZmlnIGFmOw0KPiA+ ICsJc3RydWN0IGlwdTNfdWFwaV9hd2JfY29uZmlnIGF3YjsNCj4gPiArfSBfX3BhY2tlZDsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX2lzcF9saW5fdm1lbV9wYXJh bXMgLSBMaW5lYXJpemF0aW9uIHBhcmFtZXRlcnMNCj4gPiArICoNCj4gPiArICogQGxpbl9sdXRs b3dfZ3I6IGxpbmVhcml6YXRpb24gbG9vay11cCB0YWJsZSBmb3IgR1IgY2hhbm5lbCBpbnRlcnBv bGF0aW9uLg0KPiA+ICsgKiBAbGluX2x1dGxvd19yOiBsaW5lYXJpemF0aW9uIGxvb2stdXAgdGFi bGUgZm9yIFIgY2hhbm5lbCBpbnRlcnBvbGF0aW9uLg0KPiA+ICsgKiBAbGluX2x1dGxvd19iOiBs aW5lYXJpemF0aW9uIGxvb2stdXAgdGFibGUgZm9yIEIgY2hhbm5lbCBpbnRlcnBvbGF0aW9uLg0K PiA+ICsgKiBAbGluX2x1dGxvd19nYjogbGluZWFyaXphdGlvbiBsb29rLXVwIHRhYmxlIGZvciBH QiBjaGFubmVsIGludGVycG9sYXRpb24uDQo+ID4gKyAqCQkJbGluX2x1dGxvd19nciAvIGxpbl9s dXRsb3dfZ3IgLyBsaW5fbHV0bG93X2dyIC8NCj4gPiArICoJCQlsaW5fbHV0bG93X2dyIDw9IExJ Tl9NQVhfVkFMVUUgLSAxLg0KPiA+ICsgKiBAbGluX2x1dGRpZl9ncjoJbGluX2x1dGxvd19ncltp KzFdIC0gbGluX2x1dGxvd19ncltpXS4NCj4gPiArICogQGxpbl9sdXRkaWZfcjoJbGluX2x1dGxv d19yW2krMV0gLSBsaW5fbHV0bG93X3JbaV0uDQo+ID4gKyAqIEBsaW5fbHV0ZGlmX2I6CWxpbl9s dXRsb3dfYltpKzFdIC0gbGluX2x1dGxvd19iW2ldLg0KPiA+ICsgKiBAbGluX2x1dGRpZl9nYjoJ bGluX2x1dGxvd19nYltpKzFdIC0gbGluX2x1dGxvd19nYltpXS4NCj4gPiArICovDQo+ID4gK3N0 cnVjdCBpcHUzX3VhcGlfaXNwX2xpbl92bWVtX3BhcmFtcyB7DQo+ID4gKwlfX3MxNiBsaW5fbHV0 bG93X2dyW0lQVTNfVUFQSV9MSU5fTFVUX1NJWkVdOw0KPiA+ICsJX19zMTYgbGluX2x1dGxvd19y W0lQVTNfVUFQSV9MSU5fTFVUX1NJWkVdOw0KPiA+ICsJX19zMTYgbGluX2x1dGxvd19iW0lQVTNf VUFQSV9MSU5fTFVUX1NJWkVdOw0KPiA+ICsJX19zMTYgbGluX2x1dGxvd19nYltJUFUzX1VBUElf TElOX0xVVF9TSVpFXTsNCj4gPiArCV9fczE2IGxpbl9sdXRkaWZfZ3JbSVBVM19VQVBJX0xJTl9M VVRfU0laRV07DQo+ID4gKwlfX3MxNiBsaW5fbHV0ZGlmX3JbSVBVM19VQVBJX0xJTl9MVVRfU0la RV07DQo+ID4gKwlfX3MxNiBsaW5fbHV0ZGlmX2JbSVBVM19VQVBJX0xJTl9MVVRfU0laRV07DQo+ ID4gKwlfX3MxNiBsaW5fbHV0ZGlmX2diW0lQVTNfVUFQSV9MSU5fTFVUX1NJWkVdOw0KPiA+ICt9 IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyogVGVtcG9yYWwgTm9pc2UgUmVkdWN0aW9uICovDQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9pc3BfdG5yM192bWVtX3Bh cmFtcyAtIFRlbXBvcmFsIG5vaXNlIHJlZHVjdGlvbg0KPiB2ZWN0b3INCj4gPiArICoJCQkJCSAg IG1lbW9yeSBwYXJhbWV0ZXJzDQo+ID4gKyAqDQo+ID4gKyAqIEBzbG9wZTogc2xvcGUgc2V0dGlu ZyBpbiBpbnRlcnBvbGF0aW9uIGN1cnZlIGZvciB0ZW1wb3JhbCBub2lzZQ0KPiByZWR1Y3Rpb24u DQo+ID4gKyAqIEBfX3Jlc2VydmVkMTogcmVzZXJ2ZWQNCj4gPiArICogQHNpZ21hOiBrbmVlIHBv aW50IHNldHRpbmcgaW4gaW50ZXJwb2xhdGlvbiBjdXJ2ZSBmb3IgdGVtcG9yYWwNCj4gPiArICoJ ICAgbm9pc2UgcmVkdWN0aW9uLg0KPiA+ICsgKiBAX19yZXNlcnZlZDI6IHJlc2VydmVkDQo+ID4g KyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191YXBpX2lzcF90bnIzX3ZtZW1fcGFyYW1zIHsNCj4gPiAr CV9fdTE2IHNsb3BlW0lQVTNfVUFQSV9JU1BfVE5SM19WTUVNX0xFTl07DQo+ID4gKwlfX3UxNiBf X3Jlc2VydmVkMVtJUFUzX1VBUElfSVNQX1ZFQ19FTEVNUw0KPiA+ICsJCQkJCQktDQo+IElQVTNf VUFQSV9JU1BfVE5SM19WTUVNX0xFTl07DQo+ID4gKwlfX3UxNiBzaWdtYVtJUFUzX1VBUElfSVNQ X1ROUjNfVk1FTV9MRU5dOw0KPiA+ICsJX191MTYgX19yZXNlcnZlZDJbSVBVM19VQVBJX0lTUF9W RUNfRUxFTVMNCj4gPiArCQkJCQkJLQ0KPiBJUFUzX1VBUElfSVNQX1ROUjNfVk1FTV9MRU5dOw0K PiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3Vh cGlfaXNwX3RucjNfcGFyYW1zIC0gVGVtcG9yYWwgbm9pc2UgcmVkdWN0aW9uIHYzDQo+IHBhcmFt ZXRlcnMNCj4gPiArICoNCj4gPiArICogQGtuZWVfeTE6IEtuZWUgcG9pbnQgVE5SMyBhc3N1bWVz IHN0YW5kYXJkIGRldmlhdGlvbiBvZiBZLFUgYW5kDQo+ID4gKyAqCVYgYXQgWTEgYXJlIFRuclkx X1NpZ21hX1ksIFUgYW5kIFYuDQo+ID4gKyAqIEBrbmVlX3kyOiBLbmVlIHBvaW50IFROUjMgYXNz dW1lcyBzdGFuZGFyZCBkZXZpYXRpb24gb2YgWSxVIGFuZA0KPiA+ICsgKgkJViBhdCBZMiBhcmUg VG5yWTJfU2lnbWFfWSwgVSBhbmQgVi4NCj4gPiArICogQG1heGZiX3k6IE1heCBmZWVkYmFjayBn YWluIGZvciBZDQo+ID4gKyAqIEBtYXhmYl91OiBNYXggZmVlZGJhY2sgZ2FpbiBmb3IgVQ0KPiA+ ICsgKiBAbWF4ZmJfdjogTWF4IGZlZWRiYWNrIGdhaW4gZm9yIFYNCj4gPiArICogQHJvdW5kX2Fk al95OiByb3VuZGluZyBBZGp1c3QgZm9yIFkNCj4gPiArICogQHJvdW5kX2Fkal91OiByb3VuZGlu ZyBBZGp1c3QgZm9yIFUNCj4gPiArICogQHJvdW5kX2Fkal92OiByb3VuZGluZyBBZGp1c3QgZm9y IFYNCj4gPiArICogQHJlZl9idWZfc2VsZWN0OiBzZWxlY3Rpb24gb2YgdGhlIHJlZmVyZW5jZSBm cmFtZSBidWZmZXIgdG8gYmUgdXNlZC4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlf aXNwX3RucjNfcGFyYW1zIHsNCj4gPiArCV9fdTMyIGtuZWVfeTE7DQo+ID4gKwlfX3UzMiBrbmVl X3kyOw0KPiA+ICsJX191MzIgbWF4ZmJfeTsNCj4gPiArCV9fdTMyIG1heGZiX3U7DQo+ID4gKwlf X3UzMiBtYXhmYl92Ow0KPiA+ICsJX191MzIgcm91bmRfYWRqX3k7DQo+ID4gKwlfX3UzMiByb3Vu ZF9hZGpfdTsNCj4gPiArCV9fdTMyIHJvdW5kX2Fkal92Ow0KPiA+ICsJX191MzIgcmVmX2J1Zl9z ZWxlY3Q7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKiBFeHRyZW1lIE5vaXNlIFJl ZHVjdGlvbiB2ZXJzaW9uIDMgKi8NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1 M191YXBpX2lzcF94bnIzX3ZtZW1fcGFyYW1zIC0gRXh0cmVtZSBub2lzZSByZWR1Y3Rpb24gdjMN Cj4gPiArICoJCQkJCSAgIHZlY3RvciBtZW1vcnkgcGFyYW1ldGVycw0KPiA+ICsgKg0KPiA+ICsg KiBAeDogeG5yMyBwYXJhbWV0ZXJzLg0KPiA+ICsgKiBAYTogeG5yMyBwYXJhbWV0ZXJzLg0KPiA+ ICsgKiBAYjogeG5yMyBwYXJhbWV0ZXJzLg0KPiA+ICsgKiBAYzogeG5yMyBwYXJhbWV0ZXJzLg0K PiA+ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9pc3BfeG5yM192bWVtX3BhcmFtcyB7DQo+ ID4gKwlfX3UxNiB4W0lQVTNfVUFQSV9JU1BfVkVDX0VMRU1TXTsNCj4gPiArCV9fdTE2IGFbSVBV M19VQVBJX0lTUF9WRUNfRUxFTVNdOw0KPiA+ICsJX191MTYgYltJUFUzX1VBUElfSVNQX1ZFQ19F TEVNU107DQo+ID4gKwlfX3UxNiBjW0lQVTNfVUFQSV9JU1BfVkVDX0VMRU1TXTsNCj4gPiArfSBf X3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3hucjNf YWxwaGFfcGFyYW1zIC0gRXh0cmVtZSBub2lzZSByZWR1Y3Rpb24gdjMNCj4gPiArICoJCQkJCWFs cGhhIHR1bmluZyBwYXJhbWV0ZXJzDQo+ID4gKyAqDQo+ID4gKyAqIEB5MDogU2lnbWEgZm9yIFkg cmFuZ2Ugc2ltaWxhcml0eSBpbiBkYXJrIGFyZWEuDQo+ID4gKyAqIEB1MDogU2lnbWEgZm9yIFUg cmFuZ2Ugc2ltaWxhcml0eSBpbiBkYXJrIGFyZWEuDQo+ID4gKyAqIEB2MDogU2lnbWEgZm9yIFYg cmFuZ2Ugc2ltaWxhcml0eSBpbiBkYXJrIGFyZWEuDQo+ID4gKyAqIEB5ZGlmZjogU2lnbWEgZGlm ZmVyZW5jZSBmb3IgWSBiZXR3ZWVuIGJyaWdodCBhcmVhIGFuZCBkYXJrIGFyZWEuDQo+ID4gKyAq IEB1ZGlmZjogU2lnbWEgZGlmZmVyZW5jZSBmb3IgVSBiZXR3ZWVuIGJyaWdodCBhcmVhIGFuZCBk YXJrIGFyZWEuDQo+ID4gKyAqIEB2ZGlmZjogU2lnbWEgZGlmZmVyZW5jZSBmb3IgViBiZXR3ZWVu IGJyaWdodCBhcmVhIGFuZCBkYXJrIGFyZWEuDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgaXB1M191 YXBpX3hucjNfYWxwaGFfcGFyYW1zIHsNCj4gPiArCV9fdTMyIHkwOw0KPiA+ICsJX191MzIgdTA7 DQo+ID4gKwlfX3UzMiB2MDsNCj4gPiArCV9fdTMyIHlkaWZmOw0KPiA+ICsJX191MzIgdWRpZmY7 DQo+ID4gKwlfX3UzMiB2ZGlmZjsNCj4gPiArfSBfX3BhY2tlZDsNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgKiBzdHJ1Y3QgaXB1M191YXBpX3hucjNfY29yaW5nX3BhcmFtcyAtIEV4dHJlbWUgbm9p c2UgcmVkdWN0aW9uIHYzDQo+ID4gKyAqCQkJCQkgY29yaW5nIHBhcmFtZXRlcnMNCj4gPiArICoN Cj4gPiArICogQHUwOiBDb3JpbmcgVGhyZXNob2xkIG9mIFUgY2hhbm5lbCBpbiBkYXJrIGFyZWEu DQo+ID4gKyAqIEB2MDogQ29yaW5nIFRocmVzaG9sZCBvZiBWIGNoYW5uZWwgaW4gZGFyayBhcmVh Lg0KPiA+ICsgKiBAdWRpZmY6IFRocmVzaG9sZCBkaWZmZXJlbmNlIG9mIFUgY2hhbm5lbCBiZXR3 ZWVuIGJyaWdodCBhbmQgZGFyaw0KPiBhcmVhLg0KPiA+ICsgKiBAdmRpZmY6IFRocmVzaG9sZCBk aWZmZXJlbmNlIG9mIFYgY2hhbm5lbCBiZXR3ZWVuIGJyaWdodCBhbmQgZGFyayBhcmVhLg0KPiA+ ICsgKi8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV94bnIzX2NvcmluZ19wYXJhbXMgew0KPiA+ICsJ X191MzIgdTA7DQo+ID4gKwlfX3UzMiB2MDsNCj4gPiArCV9fdTMyIHVkaWZmOw0KPiA+ICsJX191 MzIgdmRpZmY7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3Ry dWN0IGlwdTNfdWFwaV94bnIzX2JsZW5kaW5nX3BhcmFtcyAtIEJsZW5kaW5nIGZhY3Rvcg0KPiA+ ICsgKg0KPiA+ICsgKiBAc3RyZW5ndGg6IFRoZSBmYWN0b3IgZm9yIGJsZW5kaW5nIG91dHB1dCB3 aXRoIGlucHV0LiBUaGlzIGlzIHR1bmluZw0KPiA+ICsgKgkgICAgICBwYXJhbWV0ZXJIaWdoZXIg dmFsdWVzIGxlYWQgdG8gbW9yZSBhZ2dyZXNzaXZlIFhOUiBvcGVyYXRpb24uDQo+ID4gKyAqLw0K PiA+ICtzdHJ1Y3QgaXB1M191YXBpX3hucjNfYmxlbmRpbmdfcGFyYW1zIHsNCj4gPiArCV9fdTMy IHN0cmVuZ3RoOw0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0 cnVjdCBpcHUzX3VhcGlfaXNwX3hucjNfcGFyYW1zIC0gRXh0cmVtZSBub2lzZSByZWR1Y3Rpb24g djMNCj4gcGFyYW1ldGVycw0KPiA+ICsgKg0KPiA+ICsgKiBAYWxwaGE6IHBhcmFtZXRlcnMgZm9y IHhucjMgYWxwaGEuIFNlZQ0KPiAmaXB1M191YXBpX3hucjNfYWxwaGFfcGFyYW1zDQo+ID4gKyAq IEBjb3Jpbmc6IHBhcmFtZXRlcnMgZm9yIHhucjMgY29yaW5nLiBTZWUNCj4gJmlwdTNfdWFwaV94 bnIzX2NvcmluZ19wYXJhbXMNCj4gPiArICogQGJsZW5kaW5nOiBwYXJhbWV0ZXJzIGZvciB4bnIz IGJsZW5kaW5nLiBTZWUNCj4gJmlwdTNfdWFwaV94bnIzX2JsZW5kaW5nX3BhcmFtcw0KPiA+ICsg Ki8NCj4gPiArc3RydWN0IGlwdTNfdWFwaV9pc3BfeG5yM19wYXJhbXMgew0KPiA+ICsJc3RydWN0 IGlwdTNfdWFwaV94bnIzX2FscGhhX3BhcmFtcyBhbHBoYTsNCj4gPiArCXN0cnVjdCBpcHUzX3Vh cGlfeG5yM19jb3JpbmdfcGFyYW1zIGNvcmluZzsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfeG5y M19ibGVuZGluZ19wYXJhbXMgYmxlbmRpbmc7DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKw0KPiA+ ICsvKioqKiogT2JncmlkIChvcHRpY2FsIGJsYWNrIGxldmVsIGNvbXBlbnNhdGlvbikgdGFibGUg ZW50cnkgKioqKiovDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IGlwdTNfdWFwaV9v YmdyaWRfcGFyYW0gLSBPcHRpY2FsIGJsYWNrIGxldmVsIGNvbXBlbnNhdGlvbg0KPiBwYXJhbWV0 ZXJzDQo+ID4gKyAqDQo+ID4gKyAqIEBncjogR3JpZCB0YWJsZSB2YWx1ZXMgZm9yIGNvbG9yIEdS DQo+ID4gKyAqIEByOiBHcmlkIHRhYmxlIHZhbHVlcyBmb3IgY29sb3IgUg0KPiA+ICsgKiBAYjog R3JpZCB0YWJsZSB2YWx1ZXMgZm9yIGNvbG9yIEINCj4gPiArICogQGdiOiBHcmlkIHRhYmxlIHZh bHVlcyBmb3IgY29sb3IgR0INCj4gPiArICoNCj4gPiArICogQmxhY2sgbGV2ZWwgaXMgZGlmZmVy ZW50IGZvciByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjaGFubmVscy4gU28gYmxhY2sgbGV2ZWwNCj4g PiArICogY29tcGVuc2F0aW9uIGlzIGRpZmZlcmVudCBwZXIgY2hhbm5lbC4NCj4gPiArICovDQo+ ID4gK3N0cnVjdCBpcHUzX3VhcGlfb2JncmlkX3BhcmFtIHsNCj4gPiArCV9fdTE2IGdyOw0KPiA+ ICsJX191MTYgcjsNCj4gPiArCV9fdTE2IGI7DQo+ID4gKwlfX3UxNiBnYjsNCj4gPiArfSBfX3Bh Y2tlZDsNCj4gPiArDQo+ID4gKy8qKioqKioqKioqKioqKioqKioqIFY0TDJfTUVUQV9GTVRfSVBV M19QQVJBTVMNCj4gKioqKioqKioqKioqKioqKioqKi8NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsg KiBzdHJ1Y3QgaXB1M191YXBpX2ZsYWdzIC0gYml0cyB0byBpbmRpY2F0ZSB3aGljaCBwaXBlbGlu ZSBuZWVkcyB1cGRhdGUNCj4gPiArICoNCj4gPiArICogQGdkYzogMCA9IG5vIHVwZGF0ZSwgMSA9 IHVwZGF0ZS4NCj4gPiArICogQG9iZ3JpZDogMCA9IG5vIHVwZGF0ZSwgMSA9IHVwZGF0ZS4NCj4g PiArICogQF9fcmVzZXJ2ZWQxOiBOb3QgdXNlZC4NCj4gPiArICogQGFjY19ibnI6IDAgPSBubyB1 cGRhdGUsIDEgPSB1cGRhdGUuDQo+ID4gKyAqIEBhY2NfZ3JlZW5fZGlzcGFyaXR5OiAwID0gbm8g dXBkYXRlLCAxID0gdXBkYXRlLg0KPiA+ICsgKiBAYWNjX2RtOiAwID0gbm8gdXBkYXRlLCAxID0g dXBkYXRlLg0KPiA+ICsgKiBAYWNjX2NjbTogMCA9IG5vIHVwZGF0ZSwgMSA9IHVwZGF0ZS4NCj4g PiArICogQGFjY19nYW1tYTogMCA9IG5vIHVwZGF0ZSwgMSA9IHVwZGF0ZS4NCj4gPiArICogQGFj Y19jc2M6IDAgPSBubyB1cGRhdGUsIDEgPSB1cGRhdGUuDQo+ID4gKyAqIEBhY2NfY2RzOiAwID0g bm8gdXBkYXRlLCAxID0gdXBkYXRlLg0KPiA+ICsgKiBAYWNjX3NoZDogMCA9IG5vIHVwZGF0ZSwg MSA9IHVwZGF0ZS4NCj4gPiArICogQF9fcmVzZXJ2ZWQyOiBOb3QgdXNlZC4NCj4gPiArICogQGFj Y19pZWZkOiAwID0gbm8gdXBkYXRlLCAxID0gdXBkYXRlLg0KPiA+ICsgKiBAYWNjX3lkc19jMDog MCA9IG5vIHVwZGF0ZSwgMSA9IHVwZGF0ZS4NCj4gPiArICogQGFjY19jaG5yX2MwOiAwID0gbm8g dXBkYXRlLCAxID0gdXBkYXRlLg0KPiA+ICsgKiBAYWNjX3lfZWVfbnI6IDAgPSBubyB1cGRhdGUs IDEgPSB1cGRhdGUuDQo+ID4gKyAqIEBhY2NfeWRzOiAwID0gbm8gdXBkYXRlLCAxID0gdXBkYXRl Lg0KPiA+ICsgKiBAYWNjX2NobnI6IDAgPSBubyB1cGRhdGUsIDEgPSB1cGRhdGUuDQo+ID4gKyAq IEBhY2NfeXRtOiAwID0gbm8gdXBkYXRlLCAxID0gdXBkYXRlLg0KPiA+ICsgKiBAYWNjX3lkczI6 IDAgPSBubyB1cGRhdGUsIDEgPSB1cGRhdGUuDQo+ID4gKyAqIEBhY2NfdGNjOiAwID0gbm8gdXBk YXRlLCAxID0gdXBkYXRlLg0KPiA+ICsgKiBAYWNjX2RwYzogMCA9IG5vIHVwZGF0ZSwgMSA9IHVw ZGF0ZS4NCj4gPiArICogQGFjY19iZHM6IDAgPSBubyB1cGRhdGUsIDEgPSB1cGRhdGUuDQo+ID4g KyAqIEBhY2NfYW5yOiAwID0gbm8gdXBkYXRlLCAxID0gdXBkYXRlLg0KPiA+ICsgKiBAYWNjX2F3 Yl9mcjogMCA9IG5vIHVwZGF0ZSwgMSA9IHVwZGF0ZS4NCj4gPiArICogQGFjY19hZTogMCA9IG5v IHVwZGF0ZSwgMSA9IHVwZGF0ZS4NCj4gPiArICogQGFjY19hZjogMCA9IG5vIHVwZGF0ZSwgMSA9 IHVwZGF0ZS4NCj4gPiArICogQGFjY19hd2I6IDAgPSBubyB1cGRhdGUsIDEgPSB1cGRhdGUuDQo+ ID4gKyAqIEBfX2FjY19vc3lzOiAwID0gbm8gdXBkYXRlLCAxID0gdXBkYXRlLg0KPiA+ICsgKiBA X19yZXNlcnZlZDM6IE5vdCB1c2VkLg0KPiA+ICsgKiBAbGluX3ZtZW1fcGFyYW1zOiAwID0gbm8g dXBkYXRlLCAxID0gdXBkYXRlLg0KPiA+ICsgKiBAdG5yM192bWVtX3BhcmFtczogMCA9IG5vIHVw ZGF0ZSwgMSA9IHVwZGF0ZS4NCj4gPiArICogQHhucjNfdm1lbV9wYXJhbXM6IDAgPSBubyB1cGRh dGUsIDEgPSB1cGRhdGUuDQo+ID4gKyAqIEB0bnIzX2RtZW1fcGFyYW1zOiAwID0gbm8gdXBkYXRl LCAxID0gdXBkYXRlLg0KPiA+ICsgKiBAeG5yM19kbWVtX3BhcmFtczogMCA9IG5vIHVwZGF0ZSwg MSA9IHVwZGF0ZS4NCj4gPiArICogQF9fcmVzZXJ2ZWQ0OiBOb3QgdXNlZC4NCj4gPiArICogQG9i Z3JpZF9wYXJhbTogMCA9IG5vIHVwZGF0ZSwgMSA9IHVwZGF0ZS4NCj4gPiArICogQF9fcmVzZXJ2 ZWQ1OiBOb3QgdXNlZC4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUzX3VhcGlfZmxhZ3Mgew0K PiA+ICsJX191MzIgZ2RjOjE7DQo+ID4gKwlfX3UzMiBvYmdyaWQ6MTsNCj4gPiArCV9fdTMyIF9f cmVzZXJ2ZWQxOjMwOw0KPiA+ICsNCj4gPiArCV9fdTMyIGFjY19ibnI6MTsNCj4gPiArCV9fdTMy IGFjY19ncmVlbl9kaXNwYXJpdHk6MTsNCj4gPiArCV9fdTMyIGFjY19kbToxOw0KPiA+ICsJX191 MzIgYWNjX2NjbToxOw0KPiA+ICsJX191MzIgYWNjX2dhbW1hOjE7DQo+ID4gKwlfX3UzMiBhY2Nf Y3NjOjE7DQo+ID4gKwlfX3UzMiBhY2NfY2RzOjE7DQo+ID4gKwlfX3UzMiBhY2Nfc2hkOjE7DQo+ ID4gKwlfX3UzMiBfX3Jlc2VydmVkMjoyOw0KPiA+ICsJX191MzIgYWNjX2llZmQ6MTsNCj4gPiAr CV9fdTMyIGFjY195ZHNfYzA6MTsNCj4gPiArCV9fdTMyIGFjY19jaG5yX2MwOjE7DQo+ID4gKwlf X3UzMiBhY2NfeV9lZV9ucjoxOw0KPiA+ICsJX191MzIgYWNjX3lkczoxOw0KPiA+ICsJX191MzIg YWNjX2NobnI6MTsNCj4gPiArCV9fdTMyIGFjY195dG06MTsNCj4gPiArCV9fdTMyIGFjY195ZHMy OjE7DQo+ID4gKwlfX3UzMiBhY2NfdGNjOjE7DQo+ID4gKwlfX3UzMiBhY2NfZHBjOjE7DQo+ID4g KwlfX3UzMiBhY2NfYmRzOjE7DQo+ID4gKwlfX3UzMiBhY2NfYW5yOjE7DQo+ID4gKwlfX3UzMiBh Y2NfYXdiX2ZyOjE7DQo+ID4gKwlfX3UzMiBhY2NfYWU6MTsNCj4gPiArCV9fdTMyIGFjY19hZjox Ow0KPiA+ICsJX191MzIgYWNjX2F3YjoxOw0KPiA+ICsJX191MzIgX19yZXNlcnZlZDM6NDsNCj4g PiArDQo+ID4gKwlfX3UzMiBsaW5fdm1lbV9wYXJhbXM6MTsNCj4gPiArCV9fdTMyIHRucjNfdm1l bV9wYXJhbXM6MTsNCj4gPiArCV9fdTMyIHhucjNfdm1lbV9wYXJhbXM6MTsNCj4gPiArCV9fdTMy IHRucjNfZG1lbV9wYXJhbXM6MTsNCj4gPiArCV9fdTMyIHhucjNfZG1lbV9wYXJhbXM6MTsNCj4g PiArCV9fdTMyIF9fcmVzZXJ2ZWQ0OjE7DQo+ID4gKwlfX3UzMiBvYmdyaWRfcGFyYW06MTsNCj4g PiArCV9fdTMyIF9fcmVzZXJ2ZWQ1OjI1Ow0KPiA+ICt9IF9fcGFja2VkOw0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfcGFyYW1zIC0gVjRMMl9NRVRBX0ZNVF9JUFUz X1BBUkFNUw0KPiA+ICsgKg0KPiA+ICsgKiBAdXNlOglzZWxlY3Qgd2hpY2ggcGFyYW1ldGVycyB0 byBhcHBseSwgc2VlICZpcHUzX3VhcGlfZmxhZ3MNCj4gPiArICogQGFjY19wYXJhbToJQUNDIHBh cmFtZXRlcnMsIGFzIHNwZWNpZmllZCBieQ0KPiAmaXB1M191YXBpX2FjY19wYXJhbQ0KPiA+ICsg KiBAbGluX3ZtZW1fcGFyYW1zOglsaW5lYXJpemF0aW9uIFZNRU0sIGFzIHNwZWNpZmllZCBieQ0K PiA+ICsgKgkJCSZpcHUzX3VhcGlfaXNwX2xpbl92bWVtX3BhcmFtcw0KPiA+ICsgKiBAdG5yM192 bWVtX3BhcmFtczoJdG5yMyBWTUVNIGFzIHNwZWNpZmllZCBieQ0KPiA+ICsgKgkJCSZpcHUzX3Vh cGlfaXNwX3RucjNfdm1lbV9wYXJhbXMNCj4gPiArICogQHhucjNfdm1lbV9wYXJhbXM6CXhucjMg Vk1FTSBhcyBzcGVjaWZpZWQgYnkNCj4gPiArICoJCQkmaXB1M191YXBpX2lzcF94bnIzX3ZtZW1f cGFyYW1zDQo+ID4gKyAqIEB0bnIzX2RtZW1fcGFyYW1zOgl0bnIzIERNRU0gYXMgc3BlY2lmaWVk IGJ5DQo+ICZpcHUzX3VhcGlfaXNwX3RucjNfcGFyYW1zDQo+ID4gKyAqIEB4bnIzX2RtZW1fcGFy YW1zOgl4bnIzIERNRU0gYXMgc3BlY2lmaWVkIGJ5DQo+ICZpcHUzX3VhcGlfaXNwX3hucjNfcGFy YW1zDQo+ID4gKyAqIEBvYmdyaWRfcGFyYW06CW9iZ3JpZCBwYXJhbWV0ZXJzIGFzIHNwZWNpZmll ZCBieQ0KPiA+ICsgKgkJCSZpcHUzX3VhcGlfb2JncmlkX3BhcmFtDQo+ID4gKyAqDQo+ID4gKyAq IFRoZSB2aWRlbyBxdWV1ZSAicGFyYW1ldGVycyIgaXMgb2YgZm9ybWF0DQo+IFY0TDJfTUVUQV9G TVRfSVBVM19QQVJBTVMuDQo+ID4gKyAqIFRoaXMgaXMgYSAic2luZ2xlIHBsYW5lIiB2NGwyX21l dGFfZm9ybWF0IHVzaW5nDQo+IFY0TDJfQlVGX1RZUEVfTUVUQV9PVVRQVVQuDQo+ID4gKyAqDQo+ ID4gKyAqIHN0cnVjdCBpcHUzX3VhcGlfcGFyYW1zIGFzIGRlZmluZWQgYmVsb3cgY29udGFpbnMg YSBsb3Qgb2YgcGFyYW1ldGVycw0KPiBhbmQNCj4gPiArICogaXB1M191YXBpX2ZsYWdzIHNlbGVj dHMgd2hpY2ggcGFyYW1ldGVycyB0byBhcHBseS4NCj4gPiArICovDQo+ID4gK3N0cnVjdCBpcHUz X3VhcGlfcGFyYW1zIHsNCj4gPiArCS8qIEZsYWdzIHdoaWNoIG9mIHRoZSBzZXR0aW5ncyBiZWxv dyBhcmUgdG8gYmUgYXBwbGllZCAqLw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9mbGFncyB1c2Ug X19hdHRyaWJ1dGVfXygoYWxpZ25lZCgzMikpKTsNCj4gPiArDQo+ID4gKwkvKiBBY2NlbGVyYXRv ciBjbHVzdGVyIHBhcmFtZXRlcnMgKi8NCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfYWNjX3BhcmFt IGFjY19wYXJhbTsNCj4gPiArDQo+ID4gKwkvKiBJU1AgdmVjdG9yIGFkZHJlc3Mgc3BhY2UgcGFy YW1ldGVycyAqLw0KPiA+ICsJc3RydWN0IGlwdTNfdWFwaV9pc3BfbGluX3ZtZW1fcGFyYW1zIGxp bl92bWVtX3BhcmFtczsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfaXNwX3RucjNfdm1lbV9wYXJh bXMgdG5yM192bWVtX3BhcmFtczsNCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfaXNwX3hucjNfdm1l bV9wYXJhbXMgeG5yM192bWVtX3BhcmFtczsNCj4gPiArDQo+ID4gKwkvKiBJU1AgZGF0YSBtZW1v cnkgKERNRU0pIHBhcmFtZXRlcnMgKi8NCj4gPiArCXN0cnVjdCBpcHUzX3VhcGlfaXNwX3RucjNf cGFyYW1zIHRucjNfZG1lbV9wYXJhbXM7DQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX2lzcF94bnIz X3BhcmFtcyB4bnIzX2RtZW1fcGFyYW1zOw0KPiA+ICsNCj4gPiArCS8qIE9wdGljYWwgYmxhY2sg bGV2ZWwgY29tcGVuc2F0aW9uICovDQo+ID4gKwlzdHJ1Y3QgaXB1M191YXBpX29iZ3JpZF9wYXJh bSBvYmdyaWRfcGFyYW07DQo+ID4gK30gX19wYWNrZWQ7DQo+ID4gKyNlbmRpZg0KPiA+DQo+IA0K PiBUaGlzIGxvb2tzIHZlcnkgZ29vZC4gSSdtIHN1cmUgeW91J3ZlIGJlZW4gbGVzcyB0aGFuIGhh cHB5IHdpdGggdXMgZm9yIGhhdmluZw0KPiB0byBkb2N1bWVudCBhbGwgdGhpcywgYnV0IHRoZSBl bmQgcmVzdWx0IGlzIHZlcnkgaW1wcmVzc2l2ZS4NCj4gDQo+IEJhc2VkIG9uIG15IGNvbW1lbnQg YW5kIHRob3NlIG9mIG90aGVycyBJIHdvdWxkIGV4cGVjdCB0aGF0IHY4IHdpbGwgYmUgdGhlDQo+ IGZpbmFsIHZlcnNpb24uDQo+IA0KPiBSZWdhcmRzLA0KPiANCj4gCUhhbnMNCg0KVGhhbmtzIGEg bG90LCB3ZSByZWFsbHkgYXBwcmVjaWF0ZSB5b3VyIGVuY291cmFnaW5nIHdvcmRzIGFuZCB0aW1l IHNwZW50IG9uIHRoaXMgc2VyaWVzLiBUaWwgdjggdGhlbi4NCg0KWW9uZw0K