From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Jerry (Junwei)" Subject: Re: [PATCH v2] drm/amdgpu: update documentation for amdgpu_drv.c Date: Wed, 4 Jul 2018 12:57:01 +0800 Message-ID: <5B3C539D.9020208@amd.com> References: <1530648395-17495-1-git-send-email-sonny.jiang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1530648395-17495-1-git-send-email-sonny.jiang-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Sonny Jiang , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org T24gMDcvMDQvMjAxOCAwNDowNiBBTSwgU29ubnkgSmlhbmcgd3JvdGU6Cj4gU2lnbmVkLW9mZi1i eTogU29ubnkgSmlhbmcgPHNvbm55LmppYW5nQGFtZC5jb20+CkFja2VkLWJ5OiBKdW53ZWkgWmhh bmcgPEplcnJ5LlpoYW5nQGFtZC5jb20+Cgo+IC0tLQo+ICAgRG9jdW1lbnRhdGlvbi9ncHUvYW1k Z3B1LnJzdCAgICAgICAgICAgIHwgICA3ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9kcnYuYyB8IDIyMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICAg MiBmaWxlcyBjaGFuZ2VkLCAyMjIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9hbWRncHUucnN0IGIvRG9jdW1lbnRhdGlvbi9n cHUvYW1kZ3B1LnJzdAo+IGluZGV4IDc2NWMyYTMuLmE3NDBlNDkgMTAwNjQ0Cj4gLS0tIGEvRG9j dW1lbnRhdGlvbi9ncHUvYW1kZ3B1LnJzdAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2FtZGdw dS5yc3QKPiBAQCAtNSw2ICs1LDEzIEBACj4gICBUaGUgZHJtL2FtZGdwdSBkcml2ZXIgc3VwcG9y dHMgYWxsIEFNRCBSYWRlb24gR1BVcyBiYXNlZCBvbiB0aGUgR3JhcGhpY3MgQ29yZQo+ICAgTmV4 dCAoR0NOKSBhcmNoaXRlY3R1cmUuCj4KPiArTW9kdWxlIFBhcmFtZXRlcnMKPiArPT09PT09PT09 PT09PT09PT0KPiArCj4gK1RoZSBhbWRncHUgZHJpdmVyIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcg bW9kdWxlIHBhcmFtZXRlcnM6Cj4gKwo+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4gKwo+ICAgQ29yZSBEcml2ZXIgSW5mcmFzdHJ1Y3R1 cmUKPiAgID09PT09PT09PT09PT09PT09PT09PT09PT09Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2Rydi5jCj4gaW5kZXggOTYzNTc4Yy4uY2FmODFjZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKPiBAQCAtMSwxMCArMSwzIEBACj4gLS8q Kgo+IC0gKiBcZmlsZSBhbWRncHVfZHJ2LmMKPiAtICogQU1EIEFtZGdwdSBkcml2ZXIKPiAtICoK PiAtICogXGF1dGhvciBHYXJldGggSHVnaGVzIDxnYXJldGhAdmFsaW51eC5jb20+Cj4gLSAqLwo+ IC0KPiAgIC8qCj4gICAgKiBDb3B5cmlnaHQgMjAwMCBWQSBMaW51eCBTeXN0ZW1zLCBJbmMuLCBT dW5ueXZhbGUsIENhbGlmb3JuaWEuCj4gICAgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgo+IEBAIC0x MzYsMTAyICsxMjksMjM1IEBAIGludCBhbWRncHVfZ3B1X3JlY292ZXJ5ID0gLTE7IC8qIGF1dG8g Ki8KPiAgIGludCBhbWRncHVfZW11X21vZGUgPSAwOwo+ICAgdWludCBhbWRncHVfc211X21lbW9y eV9wb29sX3NpemUgPSAwOwo+Cj4gKy8qKgo+ICsgKiBET0M6IHZyYW1saW1pdCAoaW50KQo+ICsg KiBSZXN0cmljdCB0aGUgdG90YWwgYW1vdW50IG9mIFZSQU0gaW4gTWlCIGZvciB0ZXN0aW5nLiAg VGhlIGRlZmF1bHQgaXMgMCAoVXNlIGZ1bGwgVlJBTSkuCj4gKyAqLwo+ICAgTU9EVUxFX1BBUk1f REVTQyh2cmFtbGltaXQsICJSZXN0cmljdCBWUkFNIGZvciB0ZXN0aW5nLCBpbiBtZWdhYnl0ZXMi KTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZCh2cmFtbGltaXQsIGFtZGdwdV92cmFtX2xpbWl0LCBp bnQsIDA2MDApOwo+Cj4gKy8qKgo+ICsgKiBET0M6IHZpc192cmFtbGltaXQgKGludCkKPiArICog UmVzdHJpY3QgdGhlIGFtb3VudCBvZiBDUFUgdmlzaWJsZSBWUkFNIGluIE1pQiBmb3IgdGVzdGlu Zy4gIFRoZSBkZWZhdWx0IGlzIDAgKFVzZSBmdWxsIENQVSB2aXNpYmxlIFZSQU0pLgo+ICsgKi8K PiAgIE1PRFVMRV9QQVJNX0RFU0ModmlzX3ZyYW1saW1pdCwgIlJlc3RyaWN0IHZpc2libGUgVlJB TSBmb3IgdGVzdGluZywgaW4gbWVnYWJ5dGVzIik7Cj4gICBtb2R1bGVfcGFyYW1fbmFtZWQodmlz X3ZyYW1saW1pdCwgYW1kZ3B1X3Zpc192cmFtX2xpbWl0LCBpbnQsIDA0NDQpOwo+Cj4gKy8qKgo+ ICsgKiBET0M6IGdhcnRzaXplICh1aW50KQo+ICsgKiBSZXN0cmljdCB0aGUgc2l6ZSBvZiBHQVJU IGluIE1pYiAoMzIsIDY0LCBldGMuKSBmb3IgdGVzdGluZy4gVGhlIGRlZmF1bHQgaXMgLTEgKFRo ZSBzaXplIGRlcGVuZHMgb24gYXNpYykuCj4gKyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyhnYXJ0 c2l6ZSwgIlNpemUgb2YgR0FSVCB0byBzZXR1cCBpbiBtZWdhYnl0ZXMgKDMyLCA2NCwgZXRjLiwg LTE9YXV0bykiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZChnYXJ0c2l6ZSwgYW1kZ3B1X2dhcnRf c2l6ZSwgdWludCwgMDYwMCk7Cj4KPiArLyoqCj4gKyAqIERPQzogZ3R0c2l6ZSAoaW50KQo+ICsg KiBSZXN0cmljdCB0aGUgc2l6ZSBvZiBHVFQgZG9tYWluIGluIE1pQiBmb3IgdGVzdGluZy4gVGhl IGRlZmF1bHQgaXMgLTEgKEl0J3MgVlJBTSBzaXplIGlmIDNHQiA8IFZSQU0gPCAzLzQgUkFNLAo+ ICsgKiBvdGhlcndpc2UgMy80IFJBTSBzaXplKS4KPiArICovCj4gICBNT0RVTEVfUEFSTV9ERVND KGd0dHNpemUsICJTaXplIG9mIHRoZSBHVFQgZG9tYWluIGluIG1lZ2FieXRlcyAoLTEgPSBhdXRv KSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKGd0dHNpemUsIGFtZGdwdV9ndHRfc2l6ZSwgaW50 LCAwNjAwKTsKPgo+ICsvKioKPiArICogRE9DOiBtb3ZlcmF0ZSAoaW50KQo+ICsgKiBTZXQgbWF4 aW11bSBidWZmZXIgbWlncmF0aW9uIHJhdGUgaW4gTUIvcy4gVGhlIGRlZmF1bHQgaXMgLTEgKDgg TUIvcykuCj4gKyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyhtb3ZlcmF0ZSwgIk1heGltdW0gYnVm ZmVyIG1pZ3JhdGlvbiByYXRlIGluIE1CL3MuICgzMiwgNjQsIGV0Yy4sIC0xPWF1dG8sIDA9MT1k aXNhYmxlZCkiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZChtb3ZlcmF0ZSwgYW1kZ3B1X21vdmVy YXRlLCBpbnQsIDA2MDApOwo+Cj4gKy8qKgo+ICsgKiBET0M6IGJlbmNobWFyayAoaW50KQo+ICsg KiBSdW4gYmVuY2htYXJrcy4gVGhlIGRlZmF1bHQgaXMgMCAoU2tpcCBiZW5jaG1hcmtzKS4KPiAr ICovCj4gICBNT0RVTEVfUEFSTV9ERVNDKGJlbmNobWFyaywgIlJ1biBiZW5jaG1hcmsiKTsKPiAg IG1vZHVsZV9wYXJhbV9uYW1lZChiZW5jaG1hcmssIGFtZGdwdV9iZW5jaG1hcmtpbmcsIGludCwg MDQ0NCk7Cj4KPiArLyoqCj4gKyAqIERPQzogdGVzdCAoaW50KQo+ICsgKiBUZXN0IEJPIEdUVC0+ VlJBTSBhbmQgVlJBTS0+R1RUIEdQVSBjb3BpZXMuIFRoZSBkZWZhdWx0IGlzIDAgKFNraXAgdGVz dCwgb25seSBzZXQgMSB0byBydW4gdGVzdCkuCj4gKyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyh0 ZXN0LCAiUnVuIHRlc3RzIik7Cj4gICBtb2R1bGVfcGFyYW1fbmFtZWQodGVzdCwgYW1kZ3B1X3Rl c3RpbmcsIGludCwgMDQ0NCk7Cj4KPiArLyoqCj4gKyAqIERPQzogYXVkaW8gKGludCkKPiArICog U2V0IEF1ZGlvLiBUaGUgZGVmYXVsdCBpcyAtMSAoRW5hYmxlZCksIHNldCAwIHRvIGRpc2FibGVk IGl0Lgo+ICsgKi8KPiAgIE1PRFVMRV9QQVJNX0RFU0MoYXVkaW8sICJBdWRpbyBlbmFibGUgKC0x ID0gYXV0bywgMCA9IGRpc2FibGUsIDEgPSBlbmFibGUpIik7Cj4gICBtb2R1bGVfcGFyYW1fbmFt ZWQoYXVkaW8sIGFtZGdwdV9hdWRpbywgaW50LCAwNDQ0KTsKPgo+ICsvKioKPiArICogRE9DOiBk aXNwX3ByaW9yaXR5IChpbnQpCj4gKyAqIFNldCBkaXNwbGF5IFByaW9yaXR5ICgwID0gYXV0bywg MSA9IG5vcm1hbCwgMiA9IGhpZ2gpLiBUaGUgZGVmYXVsdCBpcyAwLgo+ICsgKi8KPiAgIE1PRFVM RV9QQVJNX0RFU0MoZGlzcF9wcmlvcml0eSwgIkRpc3BsYXkgUHJpb3JpdHkgKDAgPSBhdXRvLCAx ID0gbm9ybWFsLCAyID0gaGlnaCkiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZChkaXNwX3ByaW9y aXR5LCBhbWRncHVfZGlzcF9wcmlvcml0eSwgaW50LCAwNDQ0KTsKPgo+ICsvKioKPiArICogRE9D OiBod19pMmMgKGludCkKPiArICogVG8gZW5hYmxlIGh3IGkyYyBlbmdpbmUuIFRoZSBkZWZhdWx0 IGlzIDAgKERpc2FibGVkKS4KPiArICovCj4gICBNT0RVTEVfUEFSTV9ERVNDKGh3X2kyYywgImh3 IGkyYyBlbmdpbmUgZW5hYmxlICgwID0gZGlzYWJsZSkiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1l ZChod19pMmMsIGFtZGdwdV9od19pMmMsIGludCwgMDQ0NCk7Cj4KPiArLyoqCj4gKyAqIERPQzog cGNpZV9nZW4yIChpbnQpCj4gKyAqIFRvIGRpc2FibGUgUENJRSBHZW4yIG1vZGUgKDAgPSBkaXNh YmxlLCAxID0gZW5hYmxlKS4gVGhlIGRlZmF1bHQgaXMgLTEgKGF1dG8sIGVuYWJsZWQpLgo+ICsg Ki8KPiAgIE1PRFVMRV9QQVJNX0RFU0MocGNpZV9nZW4yLCAiUENJRSBHZW4yIG1vZGUgKC0xID0g YXV0bywgMCA9IGRpc2FibGUsIDEgPSBlbmFibGUpIik7Cj4gICBtb2R1bGVfcGFyYW1fbmFtZWQo cGNpZV9nZW4yLCBhbWRncHVfcGNpZV9nZW4yLCBpbnQsIDA0NDQpOwo+Cj4gKy8qKgo+ICsgKiBE T0M6IG1zaSAoaW50KQo+ICsgKiBUbyBkaXNhYmxlIE1TSSBmdW5jdGlvbmFsaXR5ICgxID0gZW5h YmxlLCAwID0gZGlzYWJsZSkuIFRoZSBkZWZhdWx0IGlzIC0xIChhdXRvLCBlbmFibGVkKS4KPiAr ICovCj4gICBNT0RVTEVfUEFSTV9ERVNDKG1zaSwgIk1TSSBzdXBwb3J0ICgxID0gZW5hYmxlLCAw ID0gZGlzYWJsZSwgLTEgPSBhdXRvKSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKG1zaSwgYW1k Z3B1X21zaSwgaW50LCAwNDQ0KTsKPgo+ICsvKioKPiArICogRE9DOiBsb2NrdXBfdGltZW91dCAo aW50KQo+ICsgKiBTZXQgR1BVIHNjaGVkdWxlciB0aW1lb3V0IHZhbHVlIGluIG1zLiBJdCBtdXN0 IGJlID4gMC4gIFRoZSBkZWZhdWx0IGlzIDEwMDAwLgo+ICsgKi8KPiAgIE1PRFVMRV9QQVJNX0RF U0MobG9ja3VwX3RpbWVvdXQsICJHUFUgbG9ja3VwIHRpbWVvdXQgaW4gbXMgPiAwIChkZWZhdWx0 IDEwMDAwKSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKGxvY2t1cF90aW1lb3V0LCBhbWRncHVf bG9ja3VwX3RpbWVvdXQsIGludCwgMDQ0NCk7Cj4KPiArLyoqCj4gKyAqIERPQzogZHBtIChpbnQp Cj4gKyAqIE92ZXJyaWRlIGZvciBkeW5hbWljIHBvd2VyIG1hbmFnZW1lbnQgc2V0dGluZyAoMSA9 IGVuYWJsZSwgMCA9IGRpc2FibGUpLiBUaGUgZGVmYXVsdCBpcyAtMSAoYXV0bykuCj4gKyAqLwo+ ICAgTU9EVUxFX1BBUk1fREVTQyhkcG0sICJEUE0gc3VwcG9ydCAoMSA9IGVuYWJsZSwgMCA9IGRp c2FibGUsIC0xID0gYXV0bykiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZChkcG0sIGFtZGdwdV9k cG0sIGludCwgMDQ0NCk7Cj4KPiArLyoqCj4gKyAqIERPQzogZndfbG9hZF90eXBlIChpbnQpCj4g KyAqIFNldCBkaWZmZXJlbnQgZmlybXdhcmUgbG9hZGluZyB0eXBlIGZvciBkZWJ1Z2dpbmcgKDAg PSBkaXJlY3QsIDEgPSBTTVUsIDIgPSBQU1ApLiBUaGUgZGVmYXVsdCBpcyAtMSAoYXV0bykuCj4g KyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyhmd19sb2FkX3R5cGUsICJmaXJtd2FyZSBsb2FkaW5n IHR5cGUgKDAgPSBkaXJlY3QsIDEgPSBTTVUsIDIgPSBQU1AsIC0xID0gYXV0bykiKTsKPiAgIG1v ZHVsZV9wYXJhbV9uYW1lZChmd19sb2FkX3R5cGUsIGFtZGdwdV9md19sb2FkX3R5cGUsIGludCwg MDQ0NCk7Cj4KPiArLyoqCj4gKyAqIERPQzogYXNwbSAoaW50KQo+ICsgKiBUbyBkaXNhYmxlIEFT UE0gKDEgPSBlbmFibGUsIDAgPSBkaXNhYmxlKS4gVGhlIGRlZmF1bHQgaXMgLTEgKGF1dG8sIGVu YWJsZWQpLgo+ICsgKi8KPiAgIE1PRFVMRV9QQVJNX0RFU0MoYXNwbSwgIkFTUE0gc3VwcG9ydCAo MSA9IGVuYWJsZSwgMCA9IGRpc2FibGUsIC0xID0gYXV0bykiKTsKPiAgIG1vZHVsZV9wYXJhbV9u YW1lZChhc3BtLCBhbWRncHVfYXNwbSwgaW50LCAwNDQ0KTsKPgo+ICsvKioKPiArICogRE9DOiBy dW5wbSAoaW50KQo+ICsgKiBPdmVycmlkZSBmb3IgcnVudGltZSBwb3dlciBtYW5hZ2VtZW50IGNv bnRyb2wgZm9yIGRHUFVzIGluIFBYL0hHIGxhcHRvcHMuIFRoZSBhbWRncHUgZHJpdmVyIGNhbiBk eW5hbWljYWxseSBwb3dlciBkb3duCj4gKyAqIHRoZSBkR1BVIG9uIFBYL0hHIGxhcHRvcHMgd2hl biBpdCBpcyBpZGxlLiBUaGUgZGVmYXVsdCBpcyAtMSAoYXV0byBlbmFibGUpLiBTZXR0aW5nIHRo ZSB2YWx1ZSB0byAwIGRpc2FibGVzIHRoaXMgZnVuY3Rpb25hbGl0eS4KPiArICovCj4gICBNT0RV TEVfUEFSTV9ERVNDKHJ1bnBtLCAiUFggcnVudGltZSBwbSAoMSA9IGZvcmNlIGVuYWJsZSwgMCA9 IGRpc2FibGUsIC0xID0gUFggb25seSBkZWZhdWx0KSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVk KHJ1bnBtLCBhbWRncHVfcnVudGltZV9wbSwgaW50LCAwNDQ0KTsKPgo+ICsvKioKPiArICogRE9D OiBpcF9ibG9ja19tYXNrICh1aW50KQo+ICsgKiBPdmVycmlkZSB3aGF0IElQIGJsb2NrcyBhcmUg ZW5hYmxlZCBvbiB0aGUgR1BVLiAgRWFjaCBHUFUgaXMgYSBjb2xsZWN0aW9uIG9mIElQIGJsb2Nr cyAoZ2Z4LCBkaXNwbGF5LCB2aWRlbywgZXRjLikuCj4gKyAqIFVzZSB0aGlzIHBhcmFtZXRlciB0 byBkaXNhYmxlIHNwZWNpZmljIGJsb2Nrcy4gTm90ZSB0aGF0IHRoZSBJUCBibG9ja3MgZG8gbm90 IGhhdmUgYSBmaXhlZCBpbmRleCAoZS5nLiwgeW91IG1pZ2h0IGhhdmUgYSBkZXZpY2UKPiArICog d2l0aCBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgYW4gSVAgYmxvY2spIHNvIHRoZSBtYXNrIGlzIGJv YXJkIHNwZWNpZmljLiBUaGUgZGVmYXVsdCBpcyAweGZmZmZmZmZmIChlbmFibGUgYWxsIGJsb2Nr cyBvbiBhIGRldmljZSkuCj4gKyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyhpcF9ibG9ja19tYXNr LCAiSVAgQmxvY2sgTWFzayAoYWxsIGJsb2NrcyBlbmFibGVkIChkZWZhdWx0KSkiKTsKPiAgIG1v ZHVsZV9wYXJhbV9uYW1lZChpcF9ibG9ja19tYXNrLCBhbWRncHVfaXBfYmxvY2tfbWFzaywgdWlu dCwgMDQ0NCk7Cj4KPiArLyoqCj4gKyAqIERPQzogYmFwbSAoaW50KQo+ICsgKiBUbyBkaXNhYmxl IEJBUE0gKDAgPSBkaXNhYmxlKS4gVGhlIGRlZmF1bHQgLTEgKGF1dG8sIGVuYWJsZWQpCj4gKyAq Lwo+ICAgTU9EVUxFX1BBUk1fREVTQyhiYXBtLCAiQkFQTSBzdXBwb3J0ICgxID0gZW5hYmxlLCAw ID0gZGlzYWJsZSwgLTEgPSBhdXRvKSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKGJhcG0sIGFt ZGdwdV9iYXBtLCBpbnQsIDA0NDQpOwo+Cj4gKy8qKgo+ICsgKiBET0M6IGRlZXBfY29sb3IgKGlu dCkKPiArICogU2V0IDEgdG8gZW5hYmxlIERlZXAgQ29sb3Igc3VwcG9ydC4gVGhlIGRlZmF1bHQg aXMgMCAoZGlzYWJsZWQpLgo+ICsgKi8KPiAgIE1PRFVMRV9QQVJNX0RFU0MoZGVlcF9jb2xvciwg IkRlZXAgQ29sb3Igc3VwcG9ydCAoMSA9IGVuYWJsZSwgMCA9IGRpc2FibGUgKGRlZmF1bHQpKSIp Owo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKGRlZXBfY29sb3IsIGFtZGdwdV9kZWVwX2NvbG9yLCBp bnQsIDA0NDQpOwo+Cj4gKy8qKgo+ICsgKiBET0M6IHZtX3NpemUgKGludCkKPiArICogT3ZlcnJp ZGUgdGhlIHNpemUgb2YgdGhlIEdQVSdzIHBlciBjbGllbnQgdmlydHVhbCBhZGRyZXNzIHNwYWNl IGluIEdpQi4gIFRoZSBkZWZhdWx0IGlzIC0xIChhdXRvbWF0aWMgZm9yIGVhY2ggYXNpYykuCj4g KyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyh2bV9zaXplLCAiVk0gYWRkcmVzcyBzcGFjZSBzaXpl IGluIGdpZ2FieXRlcyAoZGVmYXVsdCA2NEdCKSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKHZt X3NpemUsIGFtZGdwdV92bV9zaXplLCBpbnQsIDA0NDQpOwo+Cj4gKy8qKgo+ICsgKiBET0M6IHZt X2ZyYWdtZW50X3NpemUgKGludCkKPiArICogT3ZlcnJpZGUgVk0gZnJhZ21lbnQgc2l6ZSBpbiBi aXRzICg0LCA1LCBldGMuIDQgPSA2NEssIDkgPSAyTSkuIFRoZSBkZWZhdWx0IGlzIC0xIChhdXRv bWF0aWMgZm9yIGVhY2ggYXNpYykuCj4gKyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyh2bV9mcmFn bWVudF9zaXplLCAiVk0gZnJhZ21lbnQgc2l6ZSBpbiBiaXRzICg0LCA1LCBldGMuIDQgPSA2NEsg KGRlZmF1bHQpLCBNYXggOSA9IDJNKSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKHZtX2ZyYWdt ZW50X3NpemUsIGFtZGdwdV92bV9mcmFnbWVudF9zaXplLCBpbnQsIDA0NDQpOwo+Cj4gKy8qKgo+ ICsgKiBET0M6IHZtX2Jsb2NrX3NpemUgKGludCkKPiArICogT3ZlcnJpZGUgVk0gcGFnZSB0YWJs ZSBzaXplIGluIGJpdHMgKGRlZmF1bHQgZGVwZW5kaW5nIG9uIHZtX3NpemUgYW5kIGh3IHNldHVw KS4gVGhlIGRlZmF1bHQgaXMgLTEgKGF1dG9tYXRpYyBmb3IgZWFjaCBhc2ljKS4KPiArICovCj4g ICBNT0RVTEVfUEFSTV9ERVNDKHZtX2Jsb2NrX3NpemUsICJWTSBwYWdlIHRhYmxlIHNpemUgaW4g Yml0cyAoZGVmYXVsdCBkZXBlbmRpbmcgb24gdm1fc2l6ZSkiKTsKPiAgIG1vZHVsZV9wYXJhbV9u YW1lZCh2bV9ibG9ja19zaXplLCBhbWRncHVfdm1fYmxvY2tfc2l6ZSwgaW50LCAwNDQ0KTsKPgo+ ICsvKioKPiArICogRE9DOiB2bV9mYXVsdF9zdG9wIChpbnQpCj4gKyAqIFN0b3Agb24gVk0gZmF1 bHQgZm9yIGRlYnVnZ2luZyAoMCA9IG5ldmVyLCAxID0gcHJpbnQgZmlyc3QsIDIgPSBhbHdheXMp LiBUaGUgZGVmYXVsdCBpcyAwIChObyBzdG9wKS4KPiArICovCj4gICBNT0RVTEVfUEFSTV9ERVND KHZtX2ZhdWx0X3N0b3AsICJTdG9wIG9uIFZNIGZhdWx0ICgwID0gbmV2ZXIgKGRlZmF1bHQpLCAx ID0gcHJpbnQgZmlyc3QsIDIgPSBhbHdheXMpIik7Cj4gICBtb2R1bGVfcGFyYW1fbmFtZWQodm1f ZmF1bHRfc3RvcCwgYW1kZ3B1X3ZtX2ZhdWx0X3N0b3AsIGludCwgMDQ0NCk7Cj4KPiArLyoqCj4g KyAqIERPQzogdm1fZGVidWcgKGludCkKPiArICogRGVidWcgVk0gaGFuZGxpbmcgKDAgPSBkaXNh YmxlZCwgMSA9IGVuYWJsZWQpLiBUaGUgZGVmYXVsdCBpcyAwIChEaXNhYmxlZCkuCj4gKyAqLwo+ ICAgTU9EVUxFX1BBUk1fREVTQyh2bV9kZWJ1ZywgIkRlYnVnIFZNIGhhbmRsaW5nICgwID0gZGlz YWJsZWQgKGRlZmF1bHQpLCAxID0gZW5hYmxlZCkiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZCh2 bV9kZWJ1ZywgYW1kZ3B1X3ZtX2RlYnVnLCBpbnQsIDA2NDQpOwo+Cj4gKy8qKgo+ICsgKiBET0M6 IHZtX3VwZGF0ZV9tb2RlIChpbnQpCj4gKyAqIE92ZXJyaWRlIFZNIHVwZGF0ZSBtb2RlLiBWTSB1 cGRhdGVkIGJ5IHVzaW5nIENQVSAoMCA9IG5ldmVyLCAxID0gR3JhcGhpY3Mgb25seSwgMiA9IENv bXB1dGUgb25seSwgMyA9IEJvdGgpLiBUaGUgZGVmYXVsdAo+ICsgKiBpcyAtMSAoT25seSBpbiBs YXJnZSBCQVIoTEIpIHN5c3RlbXMgQ29tcHV0ZSBWTSB0YWJsZXMgd2lsbCBiZSB1cGRhdGVkIGJ5 IENQVSwgb3RoZXJ3aXNlIDAsIG5ldmVyKS4KPiArICovCj4gICBNT0RVTEVfUEFSTV9ERVNDKHZt X3VwZGF0ZV9tb2RlLCAiVk0gdXBkYXRlIHVzaW5nIENQVSAoMCA9IG5ldmVyIChkZWZhdWx0IGV4 Y2VwdCBmb3IgbGFyZ2UgQkFSKExCKSksIDEgPSBHcmFwaGljcyBvbmx5LCAyID0gQ29tcHV0ZSBv bmx5IChkZWZhdWx0IGZvciBMQiksIDMgPSBCb3RoIik7Cj4gICBtb2R1bGVfcGFyYW1fbmFtZWQo dm1fdXBkYXRlX21vZGUsIGFtZGdwdV92bV91cGRhdGVfbW9kZSwgaW50LCAwNDQ0KTsKPgo+ICsv KioKPiArICogRE9DOiB2cmFtX3BhZ2Vfc3BsaXQgKGludCkKPiArICogT3ZlcnJpZGUgdGhlIG51 bWJlciBvZiBwYWdlcyBhZnRlciB3ZSBzcGxpdCBWUkFNIGFsbG9jYXRpb25zIChkZWZhdWx0IDUx MiwgLTEgPSBkaXNhYmxlKS4gVGhlIGRlZmF1bHQgaXMgNTEyLgo+ICsgKi8KPiAgIE1PRFVMRV9Q QVJNX0RFU0ModnJhbV9wYWdlX3NwbGl0LCAiTnVtYmVyIG9mIHBhZ2VzIGFmdGVyIHdlIHNwbGl0 IFZSQU0gYWxsb2NhdGlvbnMgKGRlZmF1bHQgNTEyLCAtMSA9IGRpc2FibGUpIik7Cj4gICBtb2R1 bGVfcGFyYW1fbmFtZWQodnJhbV9wYWdlX3NwbGl0LCBhbWRncHVfdnJhbV9wYWdlX3NwbGl0LCBp bnQsIDA0NDQpOwo+Cj4gKy8qKgo+ICsgKiBET0M6IGV4cF9od19zdXBwb3J0IChpbnQpCj4gKyAq IEVuYWJsZSBleHBlcmltZW50YWwgaHcgc3VwcG9ydCAoMSA9IGVuYWJsZSkuIFRoZSBkZWZhdWx0 IGlzIDAgKGRpc2FibGVkKS4KPiArICovCj4gICBNT0RVTEVfUEFSTV9ERVNDKGV4cF9od19zdXBw b3J0LCAiZXhwZXJpbWVudGFsIGh3IHN1cHBvcnQgKDEgPSBlbmFibGUsIDAgPSBkaXNhYmxlIChk ZWZhdWx0KSkiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZChleHBfaHdfc3VwcG9ydCwgYW1kZ3B1 X2V4cF9od19zdXBwb3J0LCBpbnQsIDA0NDQpOwo+Cj4gKy8qKgo+ICsgKiBET0M6IGRjIChpbnQp Cj4gKyAqIERpc2FibGUvRW5hYmxlIERpc3BsYXkgQ29yZSBkcml2ZXIgZm9yIGRlYnVnZ2luZyAo MSA9IGVuYWJsZSwgMCA9IGRpc2FibGUpLiBUaGUgZGVmYXVsdCBpcyAtMSAoYXV0b21hdGljIGZv ciBlYWNoIGFzaWMpLgo+ICsgKi8KPiAgIE1PRFVMRV9QQVJNX0RFU0MoZGMsICJEaXNwbGF5IENv cmUgZHJpdmVyICgxID0gZW5hYmxlLCAwID0gZGlzYWJsZSwgLTEgPSBhdXRvIChkZWZhdWx0KSki KTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZChkYywgYW1kZ3B1X2RjLCBpbnQsIDA0NDQpOwo+Cj4g ICBNT0RVTEVfUEFSTV9ERVNDKGRjX2xvZywgIkRpc3BsYXkgQ29yZSBMb2cgTGV2ZWwgKDAgPSBt aW5pbWFsIChkZWZhdWx0KSwgMSA9IGNoYXR0eSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKGRj X2xvZywgYW1kZ3B1X2RjX2xvZywgaW50LCAwNDQ0KTsKPgo+ICsvKioKPiArICogRE9DOiBzY2hl ZF9qb2JzIChpbnQpCj4gKyAqIE92ZXJyaWRlIHRoZSBtYXggbnVtYmVyIG9mIGpvYnMgc3VwcG9y dGVkIGluIHRoZSBzdyBxdWV1ZS4gVGhlIGRlZmF1bHQgaXMgMzIuCj4gKyAqLwo+ICAgTU9EVUxF X1BBUk1fREVTQyhzY2hlZF9qb2JzLCAidGhlIG1heCBudW1iZXIgb2Ygam9icyBzdXBwb3J0ZWQg aW4gdGhlIHN3IHF1ZXVlIChkZWZhdWx0IDMyKSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKHNj aGVkX2pvYnMsIGFtZGdwdV9zY2hlZF9qb2JzLCBpbnQsIDA0NDQpOwo+Cj4gKy8qKgo+ICsgKiBE T0M6IHNjaGVkX2h3X3N1Ym1pc3Npb24gKGludCkKPiArICogT3ZlcnJpZGUgdGhlIG1heCBudW1i ZXIgb2YgSFcgc3VibWlzc2lvbnMuIFRoZSBkZWZhdWx0IGlzIDIuCj4gKyAqLwo+ICAgTU9EVUxF X1BBUk1fREVTQyhzY2hlZF9od19zdWJtaXNzaW9uLCAidGhlIG1heCBudW1iZXIgb2YgSFcgc3Vi bWlzc2lvbnMgKGRlZmF1bHQgMikiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZChzY2hlZF9od19z dWJtaXNzaW9uLCBhbWRncHVfc2NoZWRfaHdfc3VibWlzc2lvbiwgaW50LCAwNDQ0KTsKPgo+ICsv KioKPiArICogRE9DOiBwcGZlYXR1cmVtYXNrICh1aW50KQo+ICsgKiBPdmVycmlkZSB3aGF0IHBv d2VyIGZlYXR1cmVzIGFyZSBlbmFibGVkLiBUaGUgZGVmYXVsdCBpcyAweGZmZmYzZmZmIChnZnhv ZmYoYml0IDE1KSwgb3ZlcmRyaXZlcihiaXQgMTQpIGRpc2FibGVkKS4KPiArICovCj4gICBNT0RV TEVfUEFSTV9ERVNDKHBwZmVhdHVyZW1hc2ssICJhbGwgcG93ZXIgZmVhdHVyZXMgZW5hYmxlZCAo ZGVmYXVsdCkpIik7Cj4gICBtb2R1bGVfcGFyYW1fbmFtZWQocHBmZWF0dXJlbWFzaywgYW1kZ3B1 X3BwX2ZlYXR1cmVfbWFzaywgdWludCwgMDQ0NCk7Cj4KPiBAQCAtMjQxLDU4ICszNjcsMTI5IEBA IG1vZHVsZV9wYXJhbV9uYW1lZChub19ldmljdCwgYW1kZ3B1X25vX2V2aWN0LCBpbnQsIDA0NDQp Owo+ICAgTU9EVUxFX1BBUk1fREVTQyhkaXJlY3RfZ21hX3NpemUsICJEaXJlY3QgR01BIHNpemUg aW4gbWVnYWJ5dGVzIChtYXggOTZNQikiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZChkaXJlY3Rf Z21hX3NpemUsIGFtZGdwdV9kaXJlY3RfZ21hX3NpemUsIGludCwgMDQ0NCk7Cj4KPiArLyoqCj4g KyAqIERPQzogcGNpZV9nZW5fY2FwICh1aW50KQo+ICsgKiBPdmVycmlkZSBQQ0lFIGdlbiBzcGVl ZCBjYXBhYmlsaXRpZXMuIFRoZSBkZWZhdWx0IGlzIDAgKGF1dG9tYXRpYyBmb3IgZWFjaCBhc2lj KS4KPiArICovCj4gICBNT0RVTEVfUEFSTV9ERVNDKHBjaWVfZ2VuX2NhcCwgIlBDSUUgR2VuIENh cHMgKDA6IGF1dG9kZXRlY3QgKGRlZmF1bHQpKSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKHBj aWVfZ2VuX2NhcCwgYW1kZ3B1X3BjaWVfZ2VuX2NhcCwgdWludCwgMDQ0NCk7Cj4KPiArLyoqCj4g KyAqIERPQzogcGNpZV9sYW5lX2NhcCAodWludCkKPiArICogT3ZlcnJpZGUgUENJRSBsYW5lcyBj YXBhYmlsaXRpZXMuIFRoZSBkZWZhdWx0IGlzIDAgKGF1dG9tYXRpYyBmb3IgZWFjaCBhc2ljKS4K PiArICovCj4gICBNT0RVTEVfUEFSTV9ERVNDKHBjaWVfbGFuZV9jYXAsICJQQ0lFIExhbmUgQ2Fw cyAoMDogYXV0b2RldGVjdCAoZGVmYXVsdCkpIik7Cj4gICBtb2R1bGVfcGFyYW1fbmFtZWQocGNp ZV9sYW5lX2NhcCwgYW1kZ3B1X3BjaWVfbGFuZV9jYXAsIHVpbnQsIDA0NDQpOwo+Cj4gKy8qKgo+ ICsgKiBET0M6IGNnX21hc2sgKHVpbnQpCj4gKyAqIE92ZXJyaWRlIHdoYXQgQ2xvY2tnYXRpbmcg ZmVhdHVyZXMgYXJlIGVuYWJsZWQgb24gR1BVICgwID0gZGlzYWJsZSBjbG9jayBnYXRpbmcpLiBU aGUgZGVmYXVsdCBpcyAweGZmZmZmZmZmIChhbGwgZW5hYmxlZCkuCj4gKyAqLwo+ICAgTU9EVUxF X1BBUk1fREVTQyhjZ19tYXNrLCAiQ2xvY2tnYXRpbmcgZmxhZ3MgbWFzayAoMCA9IGRpc2FibGUg Y2xvY2sgZ2F0aW5nKSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKGNnX21hc2ssIGFtZGdwdV9j Z19tYXNrLCB1aW50LCAwNDQ0KTsKPgo+ICsvKioKPiArICogRE9DOiBwZ19tYXNrICh1aW50KQo+ ICsgKiBPdmVycmlkZSB3aGF0IFBvd2VyZ2F0aW5nIGZlYXR1cmVzIGFyZSBlbmFibGVkIG9uIEdQ VSAoMCA9IGRpc2FibGUgcG93ZXIgZ2F0aW5nKS4gVGhlIGRlZmF1bHQgaXMgMHhmZmZmZmZmZiAo YWxsIGVuYWJsZWQpLgo+ICsgKi8KPiAgIE1PRFVMRV9QQVJNX0RFU0MocGdfbWFzaywgIlBvd2Vy Z2F0aW5nIGZsYWdzIG1hc2sgKDAgPSBkaXNhYmxlIHBvd2VyIGdhdGluZykiKTsKPiAgIG1vZHVs ZV9wYXJhbV9uYW1lZChwZ19tYXNrLCBhbWRncHVfcGdfbWFzaywgdWludCwgMDQ0NCk7Cj4KPiAr LyoqCj4gKyAqIERPQzogc2RtYV9waGFzZV9xdWFudHVtICh1aW50KQo+ICsgKiBPdmVycmlkZSBT RE1BIGNvbnRleHQgc3dpdGNoIHBoYXNlIHF1YW50dW0gKHggMUsgR1BVIGNsb2NrIGN5Y2xlcywg MCA9IG5vIGNoYW5nZSkuIFRoZSBkZWZhdWx0IGlzIDMyLgo+ICsgKi8KPiAgIE1PRFVMRV9QQVJN X0RFU0Moc2RtYV9waGFzZV9xdWFudHVtLCAiU0RNQSBjb250ZXh0IHN3aXRjaCBwaGFzZSBxdWFu dHVtICh4IDFLIEdQVSBjbG9jayBjeWNsZXMsIDAgPSBubyBjaGFuZ2UgKGRlZmF1bHQgMzIpKSIp Owo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKHNkbWFfcGhhc2VfcXVhbnR1bSwgYW1kZ3B1X3NkbWFf cGhhc2VfcXVhbnR1bSwgdWludCwgMDQ0NCk7Cj4KPiArLyoqCj4gKyAqIERPQzogZGlzYWJsZV9j dSAoY2hhcnApCj4gKyAqIFNldCB0byBkaXNhYmxlIENVcyAoSXQncyBzZXQgbGlrZSBzZS5zaC5j dSwuLi4pLiBUaGUgZGVmYXVsdCBpcyBOVUxMLgo+ICsgKi8KPiAgIE1PRFVMRV9QQVJNX0RFU0Mo ZGlzYWJsZV9jdSwgIkRpc2FibGUgQ1VzIChzZS5zaC5jdSwuLi4pIik7Cj4gICBtb2R1bGVfcGFy YW1fbmFtZWQoZGlzYWJsZV9jdSwgYW1kZ3B1X2Rpc2FibGVfY3UsIGNoYXJwLCAwNDQ0KTsKPgo+ ICsvKioKPiArICogRE9DOiB2aXJ0dWFsX2Rpc3BsYXkgKGNoYXJwKQo+ICsgKiBTZXQgdG8gZW5h YmxlIHZpcnR1YWwgZGlzcGxheSBmZWF0dXJlLiBUaGlzIGZlYXR1cmUgcHJvdmlkZXMgYSB2aXJ0 dWFsIGRpc3BsYXkgaGFyZHdhcmUgb24gaGVhZGxlc3MgYm9hcmRzCj4gKyAqIG9yIGluIHZpcnR1 YWxpemVkIGVudmlyb25tZW50cy4gSXQgd2lsbCBiZSBzZXQgbGlrZSB4eHh4Onh4Onh4LngseDt4 eHh4Onh4Onh4LngseC4gVGhlIGRlZmF1bHQgaXMgTlVMTC4KPiArICovCj4gICBNT0RVTEVfUEFS TV9ERVNDKHZpcnR1YWxfZGlzcGxheSwKPiAgIAkJICJFbmFibGUgdmlydHVhbCBkaXNwbGF5IGZl YXR1cmUgKHRoZSB2aXJ0dWFsX2Rpc3BsYXkgd2lsbCBiZSBzZXQgbGlrZSB4eHh4Onh4Onh4Lngs eDt4eHh4Onh4Onh4LngseCkiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZCh2aXJ0dWFsX2Rpc3Bs YXksIGFtZGdwdV92aXJ0dWFsX2Rpc3BsYXksIGNoYXJwLCAwNDQ0KTsKPgo+ICsvKioKPiArICog RE9DOiBuZ2cgKGludCkKPiArICogU2V0IHRvIGVuYWJsZSBOZXh0IEdlbmVyYXRpb24gR3JhcGhp Y3MgKDEgPSBlbmFibGUpLiBUaGUgZGVmYXVsdCBpcyAwIChkaXNhYmxlZCkuCj4gKyAqLwo+ICAg TU9EVUxFX1BBUk1fREVTQyhuZ2csICJOZXh0IEdlbmVyYXRpb24gR3JhcGhpY3MgKDEgPSBlbmFi bGUsIDAgPSBkaXNhYmxlKGRlZmF1bHQgZGVwZW5kaW5nIG9uIGdmeCkpIik7Cj4gICBtb2R1bGVf cGFyYW1fbmFtZWQobmdnLCBhbWRncHVfbmdnLCBpbnQsIDA0NDQpOwo+Cj4gKy8qKgo+ICsgKiBE T0M6IHByaW1fYnVmX3Blcl9zZSAoaW50KQo+ICsgKiBPdmVycmlkZSB0aGUgc2l6ZSBvZiBQcmlt aXRpdmUgQnVmZmVyIHBlciBTaGFkZXIgRW5naW5lIGluIEJ5dGUuIFRoZSBkZWZhdWx0IGlzIDAg KGRlcGVuZGluZyBvbiBnZngpLgo+ICsgKi8KPiAgIE1PRFVMRV9QQVJNX0RFU0MocHJpbV9idWZf cGVyX3NlLCAidGhlIHNpemUgb2YgUHJpbWl0aXZlIEJ1ZmZlciBwZXIgU2hhZGVyIEVuZ2luZSAo ZGVmYXVsdCBkZXBlbmRpbmcgb24gZ2Z4KSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKHByaW1f YnVmX3Blcl9zZSwgYW1kZ3B1X3ByaW1fYnVmX3Blcl9zZSwgaW50LCAwNDQ0KTsKPgo+ICsvKioK PiArICogRE9DOiBwb3NfYnVmX3Blcl9zZSAoaW50KQo+ICsgKiBPdmVycmlkZSB0aGUgc2l6ZSBv ZiBQb3NpdGlvbiBCdWZmZXIgcGVyIFNoYWRlciBFbmdpbmUgaW4gQnl0ZS4gVGhlIGRlZmF1bHQg aXMgMCAoZGVwZW5kaW5nIG9uIGdmeCkuCj4gKyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyhwb3Nf YnVmX3Blcl9zZSwgInRoZSBzaXplIG9mIFBvc2l0aW9uIEJ1ZmZlciBwZXIgU2hhZGVyIEVuZ2lu ZSAoZGVmYXVsdCBkZXBlbmRpbmcgb24gZ2Z4KSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKHBv c19idWZfcGVyX3NlLCBhbWRncHVfcG9zX2J1Zl9wZXJfc2UsIGludCwgMDQ0NCk7Cj4KPiArLyoq Cj4gKyAqIERPQzogY250bF9zYl9idWZfcGVyX3NlIChpbnQpCj4gKyAqIE92ZXJyaWRlIHRoZSBz aXplIG9mIENvbnRyb2wgU2lkZWJhbmQgcGVyIFNoYWRlciBFbmdpbmUgaW4gQnl0ZS4gVGhlIGRl ZmF1bHQgaXMgMCAoZGVwZW5kaW5nIG9uIGdmeCkuCj4gKyAqLwo+ICAgTU9EVUxFX1BBUk1fREVT QyhjbnRsX3NiX2J1Zl9wZXJfc2UsICJ0aGUgc2l6ZSBvZiBDb250cm9sIFNpZGViYW5kIHBlciBT aGFkZXIgRW5naW5lIChkZWZhdWx0IGRlcGVuZGluZyBvbiBnZngpIik7Cj4gICBtb2R1bGVfcGFy YW1fbmFtZWQoY250bF9zYl9idWZfcGVyX3NlLCBhbWRncHVfY250bF9zYl9idWZfcGVyX3NlLCBp bnQsIDA0NDQpOwo+Cj4gKy8qKgo+ICsgKiBET0M6IHBhcmFtX2J1Zl9wZXJfc2UgKGludCkKPiAr ICogT3ZlcnJpZGUgdGhlIHNpemUgb2YgT2ZmLUNoaXAgUHJhbWF0ZXIgQ2FjaGUgcGVyIFNoYWRl ciBFbmdpbmUgaW4gQnl0ZS4gVGhlIGRlZmF1bHQgaXMgMCAoZGVwZW5kaW5nIG9uIGdmeCkuCj4g KyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyhwYXJhbV9idWZfcGVyX3NlLCAidGhlIHNpemUgb2Yg T2ZmLUNoaXAgUHJhbWF0ZXIgQ2FjaGUgcGVyIFNoYWRlciBFbmdpbmUgKGRlZmF1bHQgZGVwZW5k aW5nIG9uIGdmeCkiKTsKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZChwYXJhbV9idWZfcGVyX3NlLCBh bWRncHVfcGFyYW1fYnVmX3Blcl9zZSwgaW50LCAwNDQ0KTsKPgo+ICsvKioKPiArICogRE9DOiBq b2JfaGFuZ19saW1pdCAoaW50KQo+ICsgKiBTZXQgaG93IG11Y2ggdGltZSBhbGxvdyBhIGpvYiBo YW5nIGFuZCBub3QgZHJvcCBpdC4gVGhlIGRlZmF1bHQgaXMgMC4KPiArICovCj4gICBNT0RVTEVf UEFSTV9ERVNDKGpvYl9oYW5nX2xpbWl0LCAiaG93IG11Y2ggdGltZSBhbGxvdyBhIGpvYiBoYW5n IGFuZCBub3QgZHJvcCBpdCAoZGVmYXVsdCAwKSIpOwo+ICAgbW9kdWxlX3BhcmFtX25hbWVkKGpv Yl9oYW5nX2xpbWl0LCBhbWRncHVfam9iX2hhbmdfbGltaXQsIGludCAsMDQ0NCk7Cj4KPiArLyoq Cj4gKyAqIERPQzogbGJwdyAoaW50KQo+ICsgKiBPdmVycmlkZSBMb2FkIEJhbGFuY2luZyBQZXIg V2F0dCAoTEJQVykgc3VwcG9ydCAoMSA9IGVuYWJsZSwgMCA9IGRpc2FibGUpLiBUaGUgZGVmYXVs dCBpcyAtMSAoYXV0bywgZW5hYmxlZCkuCj4gKyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyhsYnB3 LCAiTG9hZCBCYWxhbmNpbmcgUGVyIFdhdHQgKExCUFcpIHN1cHBvcnQgKDEgPSBlbmFibGUsIDAg PSBkaXNhYmxlLCAtMSA9IGF1dG8pIik7Cj4gICBtb2R1bGVfcGFyYW1fbmFtZWQobGJwdywgYW1k Z3B1X2xicHcsIGludCwgMDQ0NCk7Cj4KPiAgIE1PRFVMRV9QQVJNX0RFU0MoY29tcHV0ZV9tdWx0 aXBpcGUsICJGb3JjZSBjb21wdXRlIHF1ZXVlcyB0byBiZSBzcHJlYWQgYWNyb3NzIHBpcGVzICgx ID0gZW5hYmxlLCAwID0gZGlzYWJsZSwgLTEgPSBhdXRvKSIpOwo+ICAgbW9kdWxlX3BhcmFtX25h bWVkKGNvbXB1dGVfbXVsdGlwaXBlLCBhbWRncHVfY29tcHV0ZV9tdWx0aXBpcGUsIGludCwgMDQ0 NCk7Cj4KPiArLyoqCj4gKyAqIERPQzogZ3B1X3JlY292ZXJ5IChpbnQpCj4gKyAqIFNldCB0byBl bmFibGUgR1BVIHJlY292ZXJ5IG1lY2hhbmlzbSAoMSA9IGVuYWJsZSwgMCA9IGRpc2FibGUpLiBU aGUgZGVmYXVsdCBpcyAtMSAoYXV0bywgZGlzYWJsZWQgZXhjZXB0IFNSSU9WKS4KPiArICovCj4g ICBNT0RVTEVfUEFSTV9ERVNDKGdwdV9yZWNvdmVyeSwgIkVuYWJsZSBHUFUgcmVjb3ZlcnkgbWVj aGFuaXNtLCAoMSA9IGVuYWJsZSwgMCA9IGRpc2FibGUsIC0xID0gYXV0bykiKTsKPiAgIG1vZHVs ZV9wYXJhbV9uYW1lZChncHVfcmVjb3ZlcnksIGFtZGdwdV9ncHVfcmVjb3ZlcnksIGludCwgMDQ0 NCk7Cj4KPiArLyoqCj4gKyAqIERPQzogZW11X21vZGUgKGludCkKPiArICogU2V0IHZhbHVlIDEg dG8gZW5hYmxlIGVtdWxhdGlvbiBtb2RlLiBUaGUgZGVmYXVsdCBpcyAwIChkaXNhYmxlZCkuCj4g KyAqLwo+ICAgTU9EVUxFX1BBUk1fREVTQyhlbXVfbW9kZSwgIkVtdWxhdGlvbiBtb2RlLCAoMSA9 IGVuYWJsZSwgMCA9IGRpc2FibGUpIik7Cj4gICBtb2R1bGVfcGFyYW1fbmFtZWQoZW11X21vZGUs IGFtZGdwdV9lbXVfbW9kZSwgaW50LCAwNDQ0KTsKPgo+ICsvKioKPiArICogRE9DOiBzaV9zdXBw b3J0IChpbnQpCj4gKyAqIFNldCBTSSBzdXBwb3J0IGRyaXZlci4gVGhpcyBwYXJhbWV0ZXIgd29y a3MgYWZ0ZXIgc2V0IGNvbmZpZyBDT05GSUdfRFJNX0FNREdQVV9TSS4gRm9yIFNJIGFzaWMsIHdo ZW4gcmFkZW9uIGRyaXZlciBpcyBlbmFibGVkLAo+ICsgKiBzZXQgdmFsdWUgMCB0byB1c2UgcmFk ZW9uIGRyaXZlciwgd2hpbGUgc2V0IHZhbHVlIDEgdG8gdXNlIGFtZGdwdSBkcml2ZXIuIFRoZSBk ZWZhdWx0IGlzIHVzaW5nIHJhZGVvbiBkcml2ZXIgd2hlbiBpdCBhdmFpbGFibGUsCj4gKyAqIG90 aGVyd2lzZSB1c2luZyBhbWRncHUgZHJpdmVyLgo+ICsgKi8KPiAgICNpZmRlZiBDT05GSUdfRFJN X0FNREdQVV9TSQo+Cj4gICAjaWYgZGVmaW5lZChDT05GSUdfRFJNX1JBREVPTikgfHwgZGVmaW5l ZChDT05GSUdfRFJNX1JBREVPTl9NT0RVTEUpCj4gQEAgLTMwNiw2ICs1MDMsMTIgQEAgTU9EVUxF X1BBUk1fREVTQyhzaV9zdXBwb3J0LCAiU0kgc3VwcG9ydCAoMSA9IGVuYWJsZWQgKGRlZmF1bHQp LCAwID0gZGlzYWJsZWQpIikKPiAgIG1vZHVsZV9wYXJhbV9uYW1lZChzaV9zdXBwb3J0LCBhbWRn cHVfc2lfc3VwcG9ydCwgaW50LCAwNDQ0KTsKPiAgICNlbmRpZgo+Cj4gKy8qKgo+ICsgKiBET0M6 IGNpa19zdXBwb3J0IChpbnQpCj4gKyAqIFNldCBDSUsgc3VwcG9ydCBkcml2ZXIuIFRoaXMgcGFy YW1ldGVyIHdvcmtzIGFmdGVyIHNldCBjb25maWcgQ09ORklHX0RSTV9BTURHUFVfQ0lLLiBGb3Ig Q0lLIGFzaWMsIHdoZW4gcmFkZW9uIGRyaXZlciBpcyBlbmFibGVkLAo+ICsgKiBzZXQgdmFsdWUg MCB0byB1c2UgcmFkZW9uIGRyaXZlciwgd2hpbGUgc2V0IHZhbHVlIDEgdG8gdXNlIGFtZGdwdSBk cml2ZXIuIFRoZSBkZWZhdWx0IGlzIHVzaW5nIHJhZGVvbiBkcml2ZXIgd2hlbiBpdCBhdmFpbGFi bGUsCj4gKyAqIG90aGVyd2lzZSB1c2luZyBhbWRncHUgZHJpdmVyLgo+ICsgKi8KPiAgICNpZmRl ZiBDT05GSUdfRFJNX0FNREdQVV9DSUsKPgo+ICAgI2lmIGRlZmluZWQoQ09ORklHX0RSTV9SQURF T04pIHx8IGRlZmluZWQoQ09ORklHX0RSTV9SQURFT05fTU9EVUxFKQo+IEBAIC0zMTksNiArNTIy LDExIEBAIE1PRFVMRV9QQVJNX0RFU0MoY2lrX3N1cHBvcnQsICJDSUsgc3VwcG9ydCAoMSA9IGVu YWJsZWQgKGRlZmF1bHQpLCAwID0gZGlzYWJsZWQpCj4gICBtb2R1bGVfcGFyYW1fbmFtZWQoY2lr X3N1cHBvcnQsIGFtZGdwdV9jaWtfc3VwcG9ydCwgaW50LCAwNDQ0KTsKPiAgICNlbmRpZgo+Cj4g Ky8qKgo+ICsgKiBET0M6IHNtdV9tZW1vcnlfcG9vbF9zaXplICh1aW50KQo+ICsgKiBJdCBpcyB1 c2VkIHRvIHJlc2VydmUgZ3R0IGZvciBzbXUgZGVidWcgdXNhZ2UsIHNldHRpbmcgdmFsdWUgMCB0 byBkaXNhYmxlIGl0LiBUaGUgYWN0dWFsIHNpemUgaXMgdmFsdWUgKiAyNTZNaUIuCj4gKyAqIEUu Zy4gMHgxID0gMjU2TWJ5dGUsIDB4MiA9IDUxMk1ieXRlLCAweDQgPSAxIEdieXRlLCAweDggPSAy R0J5dGUuIFRoZSBkZWZhdWx0IGlzIDAgKGRpc2FibGVkKS4KPiArICovCj4gICBNT0RVTEVfUEFS TV9ERVNDKHNtdV9tZW1vcnlfcG9vbF9zaXplLAo+ICAgCSJyZXNlcnZlIGd0dCBmb3Igc211IGRl YnVnIHVzYWdlLCAwID0gZGlzYWJsZSwiCj4gICAJCSIweDEgPSAyNTZNYnl0ZSwgMHgyID0gNTEy TWJ5dGUsIDB4NCA9IDEgR2J5dGUsIDB4OCA9IDJHQnl0ZSIpOwo+Cl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=