From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4972 invoked by alias); 18 May 2017 13:37:21 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 4934 invoked by uid 89); 18 May 2017 13:37:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-10.8 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: EUR03-AM5-obe.outbound.protection.outlook.com Received: from mail-oln040092070023.outbound.protection.outlook.com (HELO EUR03-AM5-obe.outbound.protection.outlook.com) (40.92.70.23) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 18 May 2017 13:37:14 +0000 Received: from VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com (10.152.18.54) by VE1EUR03HT100.eop-EUR03.prod.protection.outlook.com (10.152.19.128) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1075.5; Thu, 18 May 2017 13:37:14 +0000 Received: from AM4PR0701MB2162.eurprd07.prod.outlook.com (10.152.18.54) by VE1EUR03FT043.mail.protection.outlook.com (10.152.19.122) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.5 via Frontend Transport; Thu, 18 May 2017 13:37:14 +0000 Received: from AM4PR0701MB2162.eurprd07.prod.outlook.com ([fe80::55fc:f172:98b5:d2bc]) by AM4PR0701MB2162.eurprd07.prod.outlook.com ([fe80::55fc:f172:98b5:d2bc%19]) with mapi id 15.01.1101.019; Thu, 18 May 2017 13:37:14 +0000 From: Bernd Edlinger To: Daniel Santos CC: gcc-patches , Uros Bizjak Subject: Re: [PATCH] [i386] Recompute the frame layout less often Date: Thu, 18 May 2017 13:48:00 -0000 Message-ID: References: <9aa7427e-6cfc-b603-2ec4-1f0e02ae294d@pobox.com> <20c96fa0-328b-af1a-c558-dab6652c482e@pobox.com> <8d8b4700-98eb-aaa8-7718-d603cae106e8@pobox.com> In-Reply-To: authentication-results: pobox.com; dkim=none (message not signed) header.d=none;pobox.com; dmarc=none action=none header.from=hotmail.de; x-incomingtopheadermarker: OriginalChecksum:7EDC32EE3694276C4A747BD6311E8EEC85F30A2C1979CA4298964631FFAC2533;UpperCasedChecksum:0CB081C7C6ECB25A347D36E650F3A5386ECD66A6ABB709B67A49FA21D453EFFA;SizeAsReceived:8935;Count:43 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;VE1EUR03HT100;5:cGxRC7np6h9HGBHLcSyNYoNT21SR70/WAjkkNkKmUOVOVRlRqxXi2r6lbO6hUwYrfe0IqricH8rrvTyqC2SrbsmE77yPduc02Mec/J4+GT7XpOmznK4vS4LCCN+NOEZ8alIX2f6TsXh7pzCmUc/oBg==;24:RKeJxYeMkHSPufuDSHcjsEPbYeX21ycvn02vmYszJ4pV0bqtqS4gXhhGPKL9WO/v2Cm6BAJ++53Tu8+rp/9Fmv/aHUGGuaxYFxL5J1WamVg=;7:UdqNr8G+bgAjUN1moNpb5i6bPZdlv2z31gu/64MWy4VkXF+gwP5fVuJ5T47qcpZVugLJgVzrfnMbFkaIks9+vNq8pe6ECz4JY9uUghgyXSM42eEIMvRmV4RPjFbuknqZOZHbW09pfQCcxTFAWeWQGBPIRQzpM0jRbeR3ndhDbl1L4UORGNcv8MuiPaSzUWLSmvf43YPddtQc77aEa6PjxYCs0EC/Pl94loB1A68pza8+jr0mNapM65+d2v04jedcImJuLIXFEZevIxuv6Qo3ZcB5naWaffmMgtJy5Aki50jvLHwKSqpCML46Akhmlsa8 x-incomingheadercount: 43 x-eopattributedmessage: 0 x-forefront-antispam-report: EFV:NLI;SFV:NSPM;SFS:(7070007)(98901004);DIR:OUT;SFP:1901;SCL:1;SRVR:VE1EUR03HT100;H:AM4PR0701MB2162.eurprd07.prod.outlook.com;FPR:;SPF:None;LANG:en; x-ms-office365-filtering-correlation-id: d82d770a-60dc-4aae-e2da-08d49df2fd6e x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322274)(1601125374)(1603101448)(1701031045);SRVR:VE1EUR03HT100; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(444000031);SRVR:VE1EUR03HT100;BCL:0;PCL:0;RULEID:;SRVR:VE1EUR03HT100; x-forefront-prvs: 0311124FA9 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/mixed; boundary="_003_AM4PR0701MB2162D94C4885E78DEF26F4E1E4E40AM4PR0701MB2162_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-originalarrivaltime: 18 May 2017 13:37:14.1725 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1EUR03HT100 X-SW-Source: 2017-05/txt/msg01461.txt.bz2 --_003_AM4PR0701MB2162D94C4885E78DEF26F4E1E4E40AM4PR0701MB2162_ Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 Content-length: 2534 T24gMDUvMTcvMTcgMDQ6MDEsIERhbmllbCBTYW50b3Mgd3JvdGU6DQo+Pg0K Pj4gLSAgaWYgKGlnbm9yZV9vdXRsaW5lZCAmJiBjZnVuLT5tYWNoaW5lLT5j YWxsX21zMnN5c3YNCj4+IC0gICAgICAmJiBpbl9oYXJkX3JlZ19zZXRfcCAo c3R1Yl9tYW5hZ2VkX3JlZ3MsIERJbW9kZSwgcmVnbm8pKQ0KPj4gLSAgICBy ZXR1cm4gZmFsc2U7DQo+PiArICBpZiAoaWdub3JlX291dGxpbmVkICYmIGNm dW4tPm1hY2hpbmUtPmNhbGxfbXMyc3lzdikNCj4+ICsgICAgew0KPj4gKyAg ICAgIC8qIFJlZ2lzdGVycyB3aG8ncyBzYXZlICYgcmVzdG9yZSB3aWxsIGJl IG1hbmFnZWQgYnkgc3R1YnMNCj4+IGNhbGxlZCBmcm9tDQo+PiArICAgICBw cm8vZXBpbG9ndWUuICAqLw0KPj4gKyAgICAgIEhBUkRfUkVHX1NFVCBzdHVi X21hbmFnZWRfcmVnczsNCj4+ICsgICAgICB4bG9ndWVfbGF5b3V0Ojpjb21w dXRlX3N0dWJfbWFuYWdlZF9yZWdzIChzdHViX21hbmFnZWRfcmVncyk7DQo+ Pg0KPj4gKyAgICAgIGlmIChpbl9oYXJkX3JlZ19zZXRfcCAoc3R1Yl9tYW5h Z2VkX3JlZ3MsIERJbW9kZSwgcmVnbm8pKQ0KPj4gKyAgICByZXR1cm4gZmFs c2U7DQo+PiArICAgIH0NCj4+ICsNCj4+ICAgIGlmIChjcnRsLT5kcmFwX3Jl Zw0KPj4gICAgICAgICYmIHJlZ25vID09IFJFR05PIChjcnRsLT5kcmFwX3Jl ZykNCj4+ICAgICAgICAmJiAhY2Z1bi0+bWFjaGluZS0+bm9fZHJhcF9zYXZl X3Jlc3RvcmUpDQo+DQo+IFRoaXMgbWFrZXMgbm8gc2Vuc2UuICBUaGUgZW50 aXJlIHB1cnBvc2Ugb2Ygc3R1Yl9tYW5hZ2VkX3JlZ3MgaXMgdG8NCj4gY2Fj aGUgdGhlIHJlc3VsdCBvZiB4bG9ndWVfbGF5b3V0Ojpjb21wdXRlX3N0dWJf bWFuYWdlZF9yZWdzKCkgYW5kIHRoaXMNCj4gd291bGQgdW5uZWNlc3Nhcmls eSByZXBlYXQgdGhhdCBjYWxjdWxhdGlvbiBmb3IgZWFjaCB0aW1lDQo+IGl4 ODZfc2F2ZV9yZWcoKSBpcyBjYWxsZWQuICBTaW5jZQ0KPiB4bG9ndWVfbGF5 b3V0Ojpjb21wdXRlX3N0dWJfbWFuYWdlZF9yZWdzKCkgY2FsbHMgaXg4Nl9z YXZlX3JlZyBtYW55DQo+IHRpbWVzLCB0aGlzIG1ha2VzIGl0IGV2ZW4gd29y c2UuV2hpY2ggcmVnaXN0ZXJzIGFyZSBiZWluZyBzYXZlZA0KPiBvdXQtb2Yt bGluZSBhbmQgaW5saW5lIE1VU1QgYmUga25vd24gYXQgdGhlIHRpbWUgdGhl IHN0YWNrIGxheW91dCBpcw0KPiBkZXRlcm1pbmVkLiAgU28gc3R1Yl9tYW5h Z2VkX3JlZ3NzaG91bGQgZWl0aGVyIGJlIGxlZnQgYSBUVSBzdGF0aWMgb3IN Cj4ganVzdCBtb3ZlZCB0byBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbi4NCj4N Cj4gQXMgYW4gYXNpZGUsIEkndmUgbm90aWNlZCB0aGF0IHhsb2d1ZV9sYXlv dXQ6OmNvbXB1dGVfc3R1Yl9tYW5hZ2VkX3JlZ3MNCj4gaXMgY2FsbGluZyBp eDg2X3NhdmVfcmVnICh3aGljaCBpc24ndCB0cml2aWFsKSBtb3JlIG9mdGVu IHRoYW4gaXQgcmVhbGx5DQo+IGhhcyB0bywgc28gSSd2ZSByZWZhY3RvcmVk IGl0Lg0KPg0KDQpXZWxsLCBtZWFud2hpbGUgSSB0aGluayB0aGUgc3R1Yl9t YW5hZ2VkX3JlZ3MgY29udGFpbiB6ZXJvIGluZm9ybWF0aW9uDQphbmQgbmVl ZCBub3QgYmUgc2F2ZWQgYXQgYWxsLCBiZWNhdXNlIGl0IGNhbiBlYXNpbHkg YmUgcmVjb25zdHJ1Y3RlZA0KZnJvbSAgbS0+Y2FsbF9tczJzeXN2X2V4dHJh X3JlZ3MuDQoNClNlZSB0aGUgYXR0YWNoZWQgbmV3IHZlcnNpb24uICBEYW5p ZWwgZG9lcyBpdCB3b3JrIGZvciB5b3U/DQoNCg0KQm9vdHN0cmFwcGVkIGFu ZCByZWctdGVzdGVkIG9uIHg4Nl82NC1wYy1saW51eC1nbnUgd2l0aA0KLS10 YXJnZXRfYm9hcmQ9dW5peFx7LC1tMzJcfS4NCklzIGl0IE9LIGZvciB0cnVu az8NCg0KDQpUaGFua3MNCkJlcm5kLg0K --_003_AM4PR0701MB2162D94C4885E78DEF26F4E1E4E40AM4PR0701MB2162_ Content-Type: text/plain; name="changelog-frame-layout-i386.txt" Content-Description: changelog-frame-layout-i386.txt Content-Disposition: attachment; filename="changelog-frame-layout-i386.txt"; size=1957; creation-date="Thu, 18 May 2017 13:37:12 GMT"; modification-date="Thu, 18 May 2017 13:37:12 GMT" Content-ID: Content-Transfer-Encoding: base64 Content-length: 2656 MjAxNy0wNS0xNiAgQmVybmQgRWRsaW5nZXIgIDxiZXJuZC5lZGxpbmdlckBo b3RtYWlsLmRlPgoKCSogY29uZmlnL2kzODYvaTM4Ni5jICh4ODZfNjRfbXNf c3lzdl9leHRyYV9jbG9iYmVyZWRfcmVnaXN0ZXJzKTogTWFrZQoJc3RhdGlj LgoJKHhsb2d1ZV9sYXlvdXQ6OmdldF9zdGFja19zcGFjZV91c2VkLCB4bG9n dWVfbGF5b3V0OjpzX2luc3RhbmNlcywKCXhsb2d1ZV9sYXlvdXQ6OmdldF9p bnN0YW5jZSwgbG9ndWVfbGF5b3V0Ojp4bG9ndWVfbGF5b3V0LAoJeGxvZ3Vl X2xheW91dDo6Z2V0X3N0dWJfcnR4LCBzcF92YWxpZF9hdCwgZnBfdmFsaWRf YXQsCgljaG9vc2VfYmFzZXJlZyk6IEZvcm1hdHRpbmcuCgkoeGxvZ3VlX2xh eW91dDo6Z2V0X3N0dWJfbmFtZSk6IEF2b2lkIGNvbnN0LWNhc3QuCgkoeGxv Z3VlX2xheW91dDo6Y29tcHV0ZV9zdHViX21hbmFnZWRfcmVncyk6IFJlbmFt ZSB0by4uLgoJKHhsb2d1ZV9sYXlvdXQ6OmNvdW50X3N0dWJfbWFuYWdlZF9y ZWdzKTogLi4udGhpcy4KCSh4bG9ndWVfbGF5b3V0Ojppc19zdHViX21hbmFn ZWRfcmVnKTogTmV3IGZ1bmN0aW9uLgoJKHhsb2d1ZV9sYXlvdXQ6Om1fc3R1 Yl9uYW1lcyk6IFJlbmFtZSB0by4uLgoJKHhsb2d1ZV9sYXlvdXQ6OnNfc3R1 Yl9uYW1lcyk6IC4uLnRoaXMuCgkoeGxvZ3VlX2xheW91dDo6U1RVQl9JTkRF WF9PRkZTRVQsIHhsb2d1ZV9sYXlvdXQ6Ok1JTl9SRUdTLAoJeGxvZ3VlX2xh eW91dDo6TUFYX1JFR1MsIHhsb2d1ZV9sYXlvdXQ6Ok1BWF9FWFRSQV9SRUdT LAoJeGxvZ3VlX2xheW91dDo6VkFSSUFOVF9DT1VOVCwgeGxvZ3VlX2xheW91 dDo6U1RVQl9OQU1FX01BWF9MRU4sCgl4bG9ndWVfbGF5b3V0OjpzX3N0dWJf bmFtZXMpOiBJbnN0YW50aWF0ZSBzdGF0aWNzLgoJKHN0dWJfbWFuYWdlZF9y ZWdzKTogUmVtb3ZlLgoJKGl4ODZfc2F2ZV9yZWcpOiBVc2UgeGxvZ3VlX2xh eW91dDo6Y29tcHV0ZV9zdHViX21hbmFnZWRfcmVncy4KCShkaXNhYmxlX2Nh bGxfbXMyc3lzdl94bG9ndWVzKTogUmVuYW1lIHRvLi4uCgkod2Fybl9vbmNl X2NhbGxfbXMyc3lzdl94bG9ndWVzKTogLi4udGhpcywgYW5kIHdhcm4gb25s eSBvbmNlLgoJKGl4ODZfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQsIGl4 ODZfZXhwYW5kX2NhbGwpOiBGaXggY2FsbF9tczJzeXN2Cgl3YXJuaW5nIGxv Z2ljLgoJKGl4ODZfc3RhdGljX2NoYWluKTogTWFrZSBzdXJlIHRoYXQgaXg4 Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2sgY2FuJ3QKCWNoYW5nZSBhZnRlciBy ZWxvYWRfY29tcGxldGVkLgoJKGl4ODZfY2FuX3VzZV9yZXR1cm5faW5zbl9w KTogVXNlIHRoZSBpeDg2X2ZyYW1lIGRhdGEgc3RydWN0dXJlCglkaXJlY3Rs eS4KCShpeDg2X2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgoJKGl4ODZf ZXhwYW5kX2VwaWxvZ3VlKTogTGlrZXdpc2UuCgkoaXg4Nl9leHBhbmRfc3Bs aXRfc3RhY2tfcHJvbG9ndWUpOiBMaWtld2lzZS4KCShpeDg2X2NvbXB1dGVf ZnJhbWVfbGF5b3V0KTogUmVtb3ZlIGZyYW1lIHBhcmFtZXRlciAuLi4KCShU QVJHRVRfQ09NUFVURV9GUkFNRV9MQVlPVVQpOiAuLi4gYW5kIGV4cG9ydCBp dCBhcyBhIHRhcmdldCBob29rLgoJKGl4ODZfZmluYWxpemVfc3RhY2tfcmVh bGlnbl9mbGFncyk6IENhbGwgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dAoJ b25seSBpZiBuZWNlc3NhcnkuCgkoaXg4Nl9pbml0X21hY2hpbmVfc3RhdHVz KTogRG9uJ3Qgc2V0IHVzZV9mYXN0X3Byb2xvZ3VlX2VwaWxvZ3VlX25yZWdz LgoJKGl4ODZfZnJhbWUpOiBNb3ZlIGZyb20gaGVyZSAuLi4KCSogY29uZmln L2kzODYvaTM4Ni5oIChpeDg2X2ZyYW1lKTogLi4uIHRvIGhlcmUuCgkobWFj aGluZV9mdW5jdGlvbik6IFJlbW92ZSB1c2VfZmFzdF9wcm9sb2d1ZV9lcGls b2d1ZV9ucmVncywgY2FjaGUgdGhlCgljb21wbGV0ZSBpeDg2X2ZyYW1lIGRh dGEgc3RydWN0dXJlIGluc3RlYWQuCg== --_003_AM4PR0701MB2162D94C4885E78DEF26F4E1E4E40AM4PR0701MB2162_ Content-Type: text/x-patch; name="patch-frame-layout-i386.diff" Content-Description: patch-frame-layout-i386.diff Content-Disposition: attachment; filename="patch-frame-layout-i386.diff"; size=25862; creation-date="Thu, 18 May 2017 13:37:12 GMT"; modification-date="Thu, 18 May 2017 13:37:12 GMT" Content-ID: <9871F7704CF9854D9D622028FB77E41A@eurprd07.prod.outlook.com> Content-Transfer-Encoding: base64 Content-length: 35059 SW5kZXg6IGdjYy9jb25maWcvaTM4Ni9pMzg2LmMNCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCi0tLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jCShyZXZpc2lv biAyNDgwMzEpDQorKysgZ2NjL2NvbmZpZy9pMzg2L2kzODYuYwkod29ya2lu ZyBjb3B5KQ0KQEAgLTI0MjUsNyArMjQyNSw5IEBAIHN0YXRpYyBpbnQgY29u c3QgeDg2XzY0X2ludF9yZXR1cm5fcmVnaXN0ZXJzWzRdID0NCiANCiAvKiBB ZGRpdGlvbmFsIHJlZ2lzdGVycyB0aGF0IGFyZSBjbG9iYmVyZWQgYnkgU1lT ViBjYWxscy4gICovDQogDQotdW5zaWduZWQgY29uc3QgeDg2XzY0X21zX3N5 c3ZfZXh0cmFfY2xvYmJlcmVkX3JlZ2lzdGVyc1sxMl0gPQ0KKyNkZWZpbmUg TlVNX1g4Nl82NF9NU19DTE9CQkVSRURfUkVHUyAxMg0KK3N0YXRpYyBpbnQg Y29uc3QgeDg2XzY0X21zX3N5c3ZfZXh0cmFfY2xvYmJlcmVkX3JlZ2lzdGVy cw0KKwkJIFtOVU1fWDg2XzY0X01TX0NMT0JCRVJFRF9SRUdTXSA9DQogew0K ICAgU0lfUkVHLCBESV9SRUcsDQogICBYTU02X1JFRywgWE1NN19SRUcsDQpA QCAtMjQ3NCw2ICsyNDc2LDcgQEAgY2xhc3MgeGxvZ3VlX2xheW91dCB7DQog DQogICBjb25zdCBjaGFyICpnZXRfc3R1Yl9uYW1lIChlbnVtIHhsb2d1ZV9z dHViIHN0dWIsDQogCQkJICAgICB1bnNpZ25lZCBuX2V4dHJhX2FyZ3MpIGNv bnN0Ow0KKw0KICAgLyogUmV0dXJucyBhbiBydHggZm9yIHRoZSBzdHViJ3Mg c3ltYm9sIGJhc2VkIHVwb24NCiAgICAgICAgMS4pIHRoZSBzcGVjaWZpZWQg c3R1YiAoc2F2ZSwgcmVzdG9yZSBvciByZXN0b3JlX3JldCkgYW5kDQogICAg ICAgIDIuKSB0aGUgdmFsdWUgb2YgY2Z1bi0+bWFjaGluZS0+Y2FsbF9tczJz eXN2X2V4dHJhX3JlZ3MgYW5kDQpAQCAtMjQ4NCwxMyArMjQ4NywxMyBAQCBj bGFzcyB4bG9ndWVfbGF5b3V0IHsNCiAgICAgIG5lZWRzIHRvIHN0b3JlIHJl Z2lzdGVycyBiYXNlZCB1cG9uIGRhdGEgaW4gdGhlIG1hY2hpbmVfZnVuY3Rp b24uICAqLw0KICAgSE9TVF9XSURFX0lOVCBnZXRfc3RhY2tfc3BhY2VfdXNl ZCAoKSBjb25zdA0KICAgew0KLSAgICBjb25zdCBzdHJ1Y3QgbWFjaGluZV9m dW5jdGlvbiAmbSA9ICpjZnVuLT5tYWNoaW5lOw0KLSAgICB1bnNpZ25lZCBs YXN0X3JlZyA9IG0uY2FsbF9tczJzeXN2X2V4dHJhX3JlZ3MgKyBNSU5fUkVH UyAtIDE7DQorICAgIGNvbnN0IHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uICpt ID0gY2Z1bi0+bWFjaGluZTsNCisgICAgdW5zaWduZWQgbGFzdF9yZWcgPSBt LT5jYWxsX21zMnN5c3ZfZXh0cmFfcmVncyArIE1JTl9SRUdTIC0gMTsNCiAN Ci0gICAgZ2NjX2Fzc2VydCAobS5jYWxsX21zMnN5c3ZfZXh0cmFfcmVncyA8 PSBNQVhfRVhUUkFfUkVHUyk7DQorICAgIGdjY19hc3NlcnQgKG0tPmNhbGxf bXMyc3lzdl9leHRyYV9yZWdzIDw9IE1BWF9FWFRSQV9SRUdTKTsNCiAgICAg cmV0dXJuIG1fcmVnc1tsYXN0X3JlZ10ub2Zmc2V0DQotCSAgICArIChtLmNh bGxfbXMyc3lzdl9wYWRfb3V0ID8gOCA6IDApDQotCSAgICArIFNUVUJfSU5E RVhfT0ZGU0VUOw0KKwkgICArIChtLT5jYWxsX21zMnN5c3ZfcGFkX291dCA/ IDggOiAwKQ0KKwkgICArIFNUVUJfSU5ERVhfT0ZGU0VUOw0KICAgfQ0KIA0K ICAgLyogUmV0dXJucyB0aGUgb2Zmc2V0IGZvciB0aGUgYmFzZSBwb2ludGVy IHVzZWQgYnkgdGhlIHN0dWIuICAqLw0KQEAgLTI1MDAsNyArMjUwMyw4IEBA IGNsYXNzIHhsb2d1ZV9sYXlvdXQgew0KICAgfQ0KIA0KICAgc3RhdGljIGNv bnN0IHN0cnVjdCB4bG9ndWVfbGF5b3V0ICZnZXRfaW5zdGFuY2UgKCk7DQot ICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZV9zdHViX21hbmFnZWRfcmVncyAo SEFSRF9SRUdfU0VUICZzdHViX21hbmFnZWRfcmVncyk7DQorICBzdGF0aWMg dW5zaWduZWQgY291bnRfc3R1Yl9tYW5hZ2VkX3JlZ3MgKCk7DQorICBzdGF0 aWMgYm9vbCBpc19zdHViX21hbmFnZWRfcmVnICh1bnNpZ25lZCByZWdubywg dW5zaWduZWQgY291bnQpOw0KIA0KICAgc3RhdGljIGNvbnN0IEhPU1RfV0lE RV9JTlQgU1RVQl9JTkRFWF9PRkZTRVQgPSAweDcwOw0KICAgc3RhdGljIGNv bnN0IHVuc2lnbmVkIE1JTl9SRUdTID0gTlVNX1g4Nl82NF9NU19DTE9CQkVS RURfUkVHUzsNCkBAIC0yNTMwLDkgKzI1MzQsMTAgQEAgY2xhc3MgeGxvZ3Vl X2xheW91dCB7DQogICBzdHJ1Y3QgcmVnaW5mbyBtX3JlZ3NbTUFYX1JFR1Nd Ow0KIA0KICAgLyogTGF6eS1pbml0ZWQgY2FjaGUgb2Ygc3ltYm9sIG5hbWVz IGZvciBzdHVicy4gICovDQotICBjaGFyIG1fc3R1Yl9uYW1lc1tYTE9HVUVf U1RVQl9DT1VOVF1bVkFSSUFOVF9DT1VOVF1bU1RVQl9OQU1FX01BWF9MRU5d Ow0KKyAgc3RhdGljIGNoYXIgc19zdHViX25hbWVzW1hMT0dVRV9TRVRfQ09V TlRdW1hMT0dVRV9TVFVCX0NPVU5UXQ0KKwkJCSAgW1ZBUklBTlRfQ09VTlRd W1NUVUJfTkFNRV9NQVhfTEVOXTsNCiANCi0gIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgeGxvZ3VlX2xheW91dCBHVFkoKCkpIHNfaW5zdGFuY2VzW1hMT0dVRV9T RVRfQ09VTlRdOw0KKyAgc3RhdGljIGNvbnN0IHhsb2d1ZV9sYXlvdXQgc19p bnN0YW5jZXNbWExPR1VFX1NFVF9DT1VOVF07DQogfTsNCiANCiBjb25zdCBj aGFyICogY29uc3QgeGxvZ3VlX2xheW91dDo6U1RVQl9CQVNFX05BTUVTW1hM T0dVRV9TVFVCX0NPVU5UXSA9IHsNCkBAIC0yNTcyLDkgKzI1NzcsMjAgQEAg Y29uc3QgdW5zaWduZWQgeGxvZ3VlX2xheW91dDo6UkVHX09SREVSW3hsb2d1 ZV9sYXkNCiAgICAgUjE1X1JFRywJLyogMHhlMAkJMHhlOAkJMHhkOAkJMHhl MAkqLw0KIH07DQogDQorLyogSW5zdGFudGlhdGUgc3RhdGljIGNvbnN0IHZh bHVlcy4gICovDQorY29uc3QgSE9TVF9XSURFX0lOVCB4bG9ndWVfbGF5b3V0 OjpTVFVCX0lOREVYX09GRlNFVDsNCitjb25zdCB1bnNpZ25lZCB4bG9ndWVf bGF5b3V0OjpNSU5fUkVHUzsNCitjb25zdCB1bnNpZ25lZCB4bG9ndWVfbGF5 b3V0OjpNQVhfUkVHUzsNCitjb25zdCB1bnNpZ25lZCB4bG9ndWVfbGF5b3V0 OjpNQVhfRVhUUkFfUkVHUzsNCitjb25zdCB1bnNpZ25lZCB4bG9ndWVfbGF5 b3V0OjpWQVJJQU5UX0NPVU5UOw0KK2NvbnN0IHVuc2lnbmVkIHhsb2d1ZV9s YXlvdXQ6OlNUVUJfTkFNRV9NQVhfTEVOOw0KKw0KKy8qIEluaXRpYWxpemUg eGxvZ3VlX2xheW91dDo6c19zdHViX25hbWVzIHRvIHplcm8uICAqLw0KK2No YXIgeGxvZ3VlX2xheW91dDo6c19zdHViX25hbWVzW1hMT0dVRV9TRVRfQ09V TlRdW1hMT0dVRV9TVFVCX0NPVU5UXQ0KKwkJCQlbVkFSSUFOVF9DT1VOVF1b U1RVQl9OQU1FX01BWF9MRU5dOw0KKw0KIC8qIEluc3RhbnRpYXRlcyBhbGwg eGxvZ3VlX2xheW91dCBpbnN0YW5jZXMuICAqLw0KLWNvbnN0IHN0cnVjdCB4 bG9ndWVfbGF5b3V0IEdUWSgoKSkNCi14bG9ndWVfbGF5b3V0OjpzX2luc3Rh bmNlc1tYTE9HVUVfU0VUX0NPVU5UXSA9IHsNCitjb25zdCB4bG9ndWVfbGF5 b3V0IHhsb2d1ZV9sYXlvdXQ6OnNfaW5zdGFuY2VzW1hMT0dVRV9TRVRfQ09V TlRdID0gew0KICAgeGxvZ3VlX2xheW91dCAoMCwgZmFsc2UpLA0KICAgeGxv Z3VlX2xheW91dCAoOCwgZmFsc2UpLA0KICAgeGxvZ3VlX2xheW91dCAoMCwg dHJ1ZSksDQpAQCAtMjU4Myw3ICsyNTk5LDggQEAgY29uc3QgdW5zaWduZWQg eGxvZ3VlX2xheW91dDo6UkVHX09SREVSW3hsb2d1ZV9sYXkNCiANCiAvKiBS ZXR1cm4gYW4gYXBwcm9wcmlhdGUgY29uc3QgaW5zdGFuY2Ugb2YgeGxvZ3Vl X2xheW91dCBiYXNlZCB1cG9uIHZhbHVlcw0KICAgIGluIGNmdW4tPm1hY2hp bmUgYW5kIGNydGwuICAqLw0KLWNvbnN0IHN0cnVjdCB4bG9ndWVfbGF5b3V0 ICZ4bG9ndWVfbGF5b3V0OjpnZXRfaW5zdGFuY2UgKCkNCitjb25zdCBzdHJ1 Y3QgeGxvZ3VlX2xheW91dCAmDQoreGxvZ3VlX2xheW91dDo6Z2V0X2luc3Rh bmNlICgpDQogew0KICAgZW51bSB4bG9ndWVfc3R1Yl9zZXRzIHN0dWJfc2V0 Ow0KICAgYm9vbCBhbGlnbmVkX3BsdXNfOCA9IGNmdW4tPm1hY2hpbmUtPmNh bGxfbXMyc3lzdl9wYWRfaW47DQpAQCAtMjYwMCw1MCArMjYxNyw1NCBAQCBj b25zdCB1bnNpZ25lZCB4bG9ndWVfbGF5b3V0OjpSRUdfT1JERVJbeGxvZ3Vl X2xheQ0KICAgcmV0dXJuIHNfaW5zdGFuY2VzW3N0dWJfc2V0XTsNCiB9DQog DQotLyogRGV0ZXJtaW5lIHdoaWNoIGNsb2JiZXJlZCByZWdpc3RlcnMgY2Fu IGJlIHNhdmVkIGJ5IHRoZSBzdHViIGFuZCBzdG9yZQ0KLSAgIHRoZW0gaW4g c3R1Yl9tYW5hZ2VkX3JlZ3MuICBSZXR1cm5zIHRoZSBjb3VudCBvZiByZWdp c3RlcnMgdGhlIHN0dWIgd2lsbA0KLSAgIHNhdmUgYW5kIHJlc3RvcmUuICAq Lw0KKy8qIERldGVybWluZSBob3cgbWFueSBjbG9iYmVyZWQgcmVnaXN0ZXJz IGNhbiBiZSBzYXZlZCBieSB0aGUgc3R1Yi4NCisgICBSZXR1cm5zIHRoZSBj b3VudCBvZiByZWdpc3RlcnMgdGhlIHN0dWIgd2lsbCBzYXZlIGFuZCByZXN0 b3JlLiAgKi8NCiB1bnNpZ25lZA0KLXhsb2d1ZV9sYXlvdXQ6OmNvbXB1dGVf c3R1Yl9tYW5hZ2VkX3JlZ3MgKEhBUkRfUkVHX1NFVCAmc3R1Yl9tYW5hZ2Vk X3JlZ3MpDQoreGxvZ3VlX2xheW91dDo6Y291bnRfc3R1Yl9tYW5hZ2VkX3Jl Z3MgKCkNCiB7DQogICBib29sIGhmcCA9IGZyYW1lX3BvaW50ZXJfbmVlZGVk IHx8IHN0YWNrX3JlYWxpZ25fZnA7DQotDQogICB1bnNpZ25lZCBpLCBjb3Vu dDsNCiAgIHVuc2lnbmVkIHJlZ25vOw0KIA0KLSAgZm9yIChpID0gMDsgaSA8 IE5VTV9YODZfNjRfTVNfQ0xPQkJFUkVEX1JFR1M7ICsraSkNCisgIGZvciAo Y291bnQgPSBpID0gTUlOX1JFR1M7IGkgPCBNQVhfUkVHUzsgKytpKQ0KICAg ICB7DQotICAgICAgcmVnbm8gPSB4ODZfNjRfbXNfc3lzdl9leHRyYV9jbG9i YmVyZWRfcmVnaXN0ZXJzW2ldOw0KLSAgICAgIGlmIChyZWdubyA9PSBCUF9S RUcgJiYgaGZwKQ0KLQljb250aW51ZTsNCi0gICAgICBpZiAoIWl4ODZfc2F2 ZV9yZWcgKHJlZ25vLCBmYWxzZSwgZmFsc2UpKQ0KLQlyZXR1cm4gMDsNCi0g ICAgfQ0KLQ0KLSAgZm9yIChjb3VudCA9IGkgPSAwOyBpIDwgTUFYX1JFR1M7 ICsraSkNCi0gICAgew0KICAgICAgIHJlZ25vID0gUkVHX09SREVSW2ldOw0K ICAgICAgIGlmIChyZWdubyA9PSBCUF9SRUcgJiYgaGZwKQ0KIAljb250aW51 ZTsNCiAgICAgICBpZiAoIWl4ODZfc2F2ZV9yZWcgKHJlZ25vLCBmYWxzZSwg ZmFsc2UpKQ0KIAlicmVhazsNCi0gICAgICBhZGRfdG9faGFyZF9yZWdfc2V0 ICgmc3R1Yl9tYW5hZ2VkX3JlZ3MsIERJbW9kZSwgcmVnbm8pOw0KICAgICAg ICsrY291bnQ7DQogICAgIH0NCi0gICAgZ2NjX2Fzc2VydCAoY291bnQgPj0g TUlOX1JFR1MgJiYgY291bnQgPD0gTUFYX1JFR1MpOw0KLSAgICByZXR1cm4g Y291bnQ7DQorICByZXR1cm4gY291bnQ7DQogfQ0KIA0KKy8qIERldGVybWlu ZSBpZiByZWdpc3RlciBSRUdOTyBpcyBhIHN0dWIgbWFuYWdlZCByZWdpc3Rl ciBnaXZlbiB0aGUNCisgICB0b3RhbCBDT1VOVCBvZiBzdHViIG1hbmFnZWQg cmVnaXN0ZXJzLiAgKi8NCitib29sDQoreGxvZ3VlX2xheW91dDo6aXNfc3R1 Yl9tYW5hZ2VkX3JlZyAodW5zaWduZWQgcmVnbm8sIHVuc2lnbmVkIGNvdW50 KQ0KK3sNCisgIGJvb2wgaGZwID0gZnJhbWVfcG9pbnRlcl9uZWVkZWQgfHwg c3RhY2tfcmVhbGlnbl9mcDsNCisgIHVuc2lnbmVkIGk7DQorDQorICBmb3Ig KGkgPSAwOyBpIDwgY291bnQ7ICsraSkNCisgICAgew0KKyAgICAgIGdjY19h c3NlcnQgKGkgPCBNQVhfUkVHUyk7DQorICAgICAgaWYgKFJFR19PUkRFUltp XSA9PSBCUF9SRUcgJiYgaGZwKQ0KKwkrK2NvdW50Ow0KKyAgICAgIGVsc2Ug aWYgKFJFR19PUkRFUltpXSA9PSByZWdubykNCisJcmV0dXJuIHRydWU7DQor ICAgIH0NCisgIHJldHVybiBmYWxzZTsNCit9DQorDQogLyogQ29uc3RydWN0 b3IgZm9yIHhsb2d1ZV9sYXlvdXQuICAqLw0KIHhsb2d1ZV9sYXlvdXQ6Onhs b2d1ZV9sYXlvdXQgKEhPU1RfV0lERV9JTlQgc3RhY2tfYWxpZ25fb2ZmX2lu LCBib29sIGhmcCkNCiAgIDogbV9oZnAgKGhmcCkgLCBtX25yZWdzIChoZnAg PyAxNyA6IDE4KSwNCiAgICAgbV9zdGFja19hbGlnbl9vZmZfaW4gKHN0YWNr X2FsaWduX29mZl9pbikNCiB7DQotICBtZW1zZXQgKG1fcmVncywgMCwgc2l6 ZW9mIChtX3JlZ3MpKTsNCi0gIG1lbXNldCAobV9zdHViX25hbWVzLCAwLCBz aXplb2YgKG1fc3R1Yl9uYW1lcykpOw0KLQ0KICAgSE9TVF9XSURFX0lOVCBv ZmZzZXQgPSBzdGFja19hbGlnbl9vZmZfaW47DQogICB1bnNpZ25lZCBpLCBq Ow0KKw0KICAgZm9yIChpID0gaiA9IDA7IGkgPCBNQVhfUkVHUzsgKytpKQ0K ICAgICB7DQogICAgICAgdW5zaWduZWQgcmVnbm8gPSBSRUdfT1JERVJbaV07 DQpAQCAtMjY2MiwxNCArMjY4MywxNCBAQCB4bG9ndWVfbGF5b3V0Ojp4bG9n dWVfbGF5b3V0IChIT1NUX1dJREVfSU5UIHN0YWNrXw0KICAgICAgIG1fcmVn c1tqXS5yZWdubyAgICA9IHJlZ25vOw0KICAgICAgIG1fcmVnc1tqKytdLm9m ZnNldCA9IG9mZnNldCAtIFNUVUJfSU5ERVhfT0ZGU0VUOw0KICAgICB9DQot ICAgIGdjY19hc3NlcnQgKGogPT0gbV9ucmVncyk7DQorICBnY2NfYXNzZXJ0 IChqID09IG1fbnJlZ3MpOw0KIH0NCiANCi1jb25zdCBjaGFyICp4bG9ndWVf bGF5b3V0OjpnZXRfc3R1Yl9uYW1lIChlbnVtIHhsb2d1ZV9zdHViIHN0dWIs DQotCQkJCQkgIHVuc2lnbmVkIG5fZXh0cmFfcmVncykgY29uc3QNCitjb25z dCBjaGFyICoNCit4bG9ndWVfbGF5b3V0OjpnZXRfc3R1Yl9uYW1lIChlbnVt IHhsb2d1ZV9zdHViIHN0dWIsDQorCQkJICAgICAgdW5zaWduZWQgbl9leHRy YV9yZWdzKSBjb25zdA0KIHsNCi0gIHhsb2d1ZV9sYXlvdXQgKndyaXRleV90 aGlzID0gY29uc3RfY2FzdDx4bG9ndWVfbGF5b3V0Kj4odGhpcyk7DQotICBj aGFyICpuYW1lID0gd3JpdGV5X3RoaXMtPm1fc3R1Yl9uYW1lc1tzdHViXVtu X2V4dHJhX3JlZ3NdOw0KKyAgY2hhciAqbmFtZSA9IHNfc3R1Yl9uYW1lc1t0 aGlzIC0gc19pbnN0YW5jZXNdW3N0dWJdW25fZXh0cmFfcmVnc107DQogDQog ICAvKiBMYXp5IGluaXQgKi8NCiAgIGlmICghKm5hbWUpDQpAQCAtMjY3Niw3 ICsyNjk3LDcgQEAgeGxvZ3VlX2xheW91dDo6eGxvZ3VlX2xheW91dCAoSE9T VF9XSURFX0lOVCBzdGFja18NCiAgICAgew0KICAgICAgIGludCByZXMgPSBz bnByaW50ZiAobmFtZSwgU1RVQl9OQU1FX01BWF9MRU4sICJfXyVzXyV1IiwN CiAJCQkgIFNUVUJfQkFTRV9OQU1FU1tzdHViXSwgTUlOX1JFR1MgKyBuX2V4 dHJhX3JlZ3MpOw0KLSAgICAgIGdjY19jaGVja2luZ19hc3NlcnQgKHJlcyA8 PSAoaW50KVNUVUJfTkFNRV9NQVhfTEVOKTsNCisgICAgICBnY2NfY2hlY2tp bmdfYXNzZXJ0IChyZXMgPCAoaW50KVNUVUJfTkFNRV9NQVhfTEVOKTsNCiAg ICAgfQ0KIA0KICAgcmV0dXJuIG5hbWU7DQpAQCAtMjY4NCw3ICsyNzA1LDgg QEAgeGxvZ3VlX2xheW91dDo6eGxvZ3VlX2xheW91dCAoSE9TVF9XSURFX0lO VCBzdGFja18NCiANCiAvKiBSZXR1cm4gcnR4IG9mIGEgc3ltYm9sIHJlZiBm b3IgdGhlIGVudHJ5IHBvaW50IChiYXNlZCB1cG9uDQogICAgY2Z1bi0+bWFj aGluZS0+Y2FsbF9tczJzeXN2X2V4dHJhX3JlZ3MpIG9mIHRoZSBzcGVjaWZp ZWQgc3R1Yi4gICovDQotcnR4IHhsb2d1ZV9sYXlvdXQ6OmdldF9zdHViX3J0 eCAoZW51bSB4bG9ndWVfc3R1YiBzdHViKSBjb25zdA0KK3J0eA0KK3hsb2d1 ZV9sYXlvdXQ6OmdldF9zdHViX3J0eCAoZW51bSB4bG9ndWVfc3R1YiBzdHVi KSBjb25zdA0KIHsNCiAgIGNvbnN0IHVuc2lnbmVkIG5fZXh0cmFfcmVncyA9 IGNmdW4tPm1hY2hpbmUtPmNhbGxfbXMyc3lzdl9leHRyYV9yZWdzOw0KICAg Z2NjX2NoZWNraW5nX2Fzc2VydCAobl9leHRyYV9yZWdzIDw9IE1BWF9FWFRS QV9SRUdTKTsNCkBAIC0yNzAzLDczICsyNzI1LDYgQEAgc3RydWN0IEdUWSgo KSkgc3RhY2tfbG9jYWxfZW50cnkgew0KICAgc3RydWN0IHN0YWNrX2xvY2Fs X2VudHJ5ICpuZXh0Ow0KIH07DQogDQotLyogU3RydWN0dXJlIGRlc2NyaWJp bmcgc3RhY2sgZnJhbWUgbGF5b3V0Lg0KLSAgIFN0YWNrIGdyb3dzIGRvd253 YXJkOg0KLQ0KLSAgIFthcmd1bWVudHNdDQotCQkJCQk8LSBBUkdfUE9JTlRF Ug0KLSAgIHNhdmVkIHBjDQotDQotICAgc2F2ZWQgc3RhdGljIGNoYWluCQkJ aWYgaXg4Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2sNCi0NCi0gICBzYXZlZCBm cmFtZSBwb2ludGVyCQkJaWYgZnJhbWVfcG9pbnRlcl9uZWVkZWQNCi0JCQkJ CTwtIEhBUkRfRlJBTUVfUE9JTlRFUg0KLSAgIFtzYXZlZCByZWdzXQ0KLQkJ CQkJPC0gcmVnX3NhdmVfb2Zmc2V0DQotICAgW3BhZGRpbmcwXQ0KLQkJCQkJ PC0gc3RhY2tfcmVhbGlnbl9vZmZzZXQNCi0gICBbc2F2ZWQgU1NFIHJlZ3Nd DQotCU9SDQotICAgW3N0dWItc2F2ZWQgcmVnaXN0ZXJzIGZvciBtcyB4NjQg LS0+IHN5c3YgY2xvYmJlcnMNCi0JCQk8LSBTdGFydCBvZiBvdXQtb2YtbGlu ZSwgc3R1Yi1zYXZlZC9yZXN0b3JlZCByZWdzDQotCQkJICAgKHNlZSBsaWJn Y2MvY29uZmlnL2kzODYvKHNhdnxyZXMpbXM2NCouUykNCi0gICAgIFtYTU02 LTE1XQ0KLSAgICAgW1JTSV0NCi0gICAgIFtSREldDQotICAgICBbP1JCWF0J CW9ubHkgaWYgUkJYIGlzIGNsb2JiZXJlZA0KLSAgICAgWz9SQlBdCQlvbmx5 IGlmIFJCUCBhbmQgUkJYIGFyZSBjbG9iYmVyZWQNCi0gICAgIFs/UjEyXQkJ b25seSBpZiBSMTIgYW5kIGFsbCBwcmV2aW91cyByZWdzIGFyZSBjbG9iYmVy ZWQNCi0gICAgIFs/UjEzXQkJb25seSBpZiBSMTMgYW5kIGFsbCBwcmV2aW91 cyByZWdzIGFyZSBjbG9iYmVyZWQNCi0gICAgIFs/UjE0XQkJb25seSBpZiBS MTQgYW5kIGFsbCBwcmV2aW91cyByZWdzIGFyZSBjbG9iYmVyZWQNCi0gICAg IFs/UjE1XQkJb25seSBpZiBSMTUgYW5kIGFsbCBwcmV2aW91cyByZWdzIGFy ZSBjbG9iYmVyZWQNCi0JCQk8LSBlbmQgb2Ygc3R1Yi1zYXZlZC9yZXN0b3Jl ZCByZWdzDQotICAgICBbcGFkZGluZzFdDQotICAgXQ0KLQkJCQkJPC0gb3V0 bGluZWRfc2F2ZV9vZmZzZXQNCi0JCQkJCTwtIHNzZV9yZWdzX3NhdmVfb2Zm c2V0DQotICAgW3BhZGRpbmcyXQ0KLQkJICAgICAgIHwJCTwtIEZSQU1FX1BP SU5URVINCi0gICBbdmFfYXJnIHJlZ2lzdGVyc10gIHwNCi0JCSAgICAgICB8 DQotICAgW2ZyYW1lXQkgICAgICAgfA0KLQkJICAgICAgIHwNCi0gICBbcGFk ZGluZzJdCSAgICAgICB8ID0gdG9fYWxsb2NhdGUNCi0JCQkJCTwtIFNUQUNL X1BPSU5URVINCi0gICovDQotc3RydWN0IGl4ODZfZnJhbWUNCi17DQotICBp bnQgbnNzZXJlZ3M7DQotICBpbnQgbnJlZ3M7DQotICBpbnQgdmFfYXJnX3Np emU7DQotICBpbnQgcmVkX3pvbmVfc2l6ZTsNCi0gIGludCBvdXRnb2luZ19h cmd1bWVudHNfc2l6ZTsNCi0NCi0gIC8qIFRoZSBvZmZzZXRzIHJlbGF0aXZl IHRvIEFSR19QT0lOVEVSLiAgKi8NCi0gIEhPU1RfV0lERV9JTlQgZnJhbWVf cG9pbnRlcl9vZmZzZXQ7DQotICBIT1NUX1dJREVfSU5UIGhhcmRfZnJhbWVf cG9pbnRlcl9vZmZzZXQ7DQotICBIT1NUX1dJREVfSU5UIHN0YWNrX3BvaW50 ZXJfb2Zmc2V0Ow0KLSAgSE9TVF9XSURFX0lOVCBoZnBfc2F2ZV9vZmZzZXQ7 DQotICBIT1NUX1dJREVfSU5UIHJlZ19zYXZlX29mZnNldDsNCi0gIEhPU1Rf V0lERV9JTlQgc3RhY2tfcmVhbGlnbl9hbGxvY2F0ZV9vZmZzZXQ7DQotICBI T1NUX1dJREVfSU5UIHN0YWNrX3JlYWxpZ25fb2Zmc2V0Ow0KLSAgSE9TVF9X SURFX0lOVCBvdXRsaW5lZF9zYXZlX29mZnNldDsNCi0gIEhPU1RfV0lERV9J TlQgc3NlX3JlZ19zYXZlX29mZnNldDsNCi0NCi0gIC8qIFdoZW4gc2F2ZV9y ZWdzX3VzaW5nX21vdiBpcyBzZXQsIGVtaXQgcHJvbG9ndWUgdXNpbmcNCi0g ICAgIG1vdmUgaW5zdGVhZCBvZiBwdXNoIGluc3RydWN0aW9ucy4gICovDQot ICBib29sIHNhdmVfcmVnc191c2luZ19tb3Y7DQotfTsNCi0NCiAvKiBXaGlj aCBjcHUgYXJlIHdlIHNjaGVkdWxpbmcgZm9yLiAgKi8NCiBlbnVtIGF0dHJf Y3B1IGl4ODZfc2NoZWR1bGU7DQogDQpAQCAtMjg2MSw3ICsyODE2LDcgQEAg c3RhdGljIHVuc2lnbmVkIGludCBpeDg2X2Z1bmN0aW9uX2FyZ19ib3VuZGFy eSAobWENCiAJCQkJCQljb25zdF90cmVlKTsNCiBzdGF0aWMgcnR4IGl4ODZf c3RhdGljX2NoYWluIChjb25zdF90cmVlLCBib29sKTsNCiBzdGF0aWMgaW50 IGl4ODZfZnVuY3Rpb25fcmVncGFybSAoY29uc3RfdHJlZSwgY29uc3RfdHJl ZSk7DQotc3RhdGljIHZvaWQgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAo c3RydWN0IGl4ODZfZnJhbWUgKik7DQorc3RhdGljIHZvaWQgaXg4Nl9jb21w dXRlX2ZyYW1lX2xheW91dCAodm9pZCk7DQogc3RhdGljIGJvb2wgaXg4Nl9l eHBhbmRfdmVjdG9yX2luaXRfb25lX25vbnplcm8gKGJvb2wsIG1hY2hpbmVf bW9kZSwNCiAJCQkJCQkgcnR4LCBydHgsIGludCk7DQogc3RhdGljIHZvaWQg aXg4Nl9hZGRfbmV3X2J1aWx0aW5zIChIT1NUX1dJREVfSU5ULCBIT1NUX1dJ REVfSU5UKTsNCkBAIC0xMjI5Myw3ICsxMjI0OCw3IEBAIGl4ODZfY2FuX3Vz ZV9yZXR1cm5faW5zbl9wICh2b2lkKQ0KICAgaWYgKGNydGwtPmFyZ3MucG9w c19hcmdzICYmIGNydGwtPmFyZ3Muc2l6ZSA+PSAzMjc2OCkNCiAgICAgcmV0 dXJuIDA7DQogDQotICBpeDg2X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgmZnJh bWUpOw0KKyAgZnJhbWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsNCiAgIHJl dHVybiAoZnJhbWUuc3RhY2tfcG9pbnRlcl9vZmZzZXQgPT0gVU5JVFNfUEVS X1dPUkQNCiAJICAmJiAoZnJhbWUubnJlZ3MgKyBmcmFtZS5uc3NlcmVncykg PT0gMCk7DQogfQ0KQEAgLTEyNjM0LDEwICsxMjU4OSw2IEBAIGl4ODZfaGFy ZF9yZWdub19zY3JhdGNoX29rICh1bnNpZ25lZCBpbnQgcmVnbm8pDQogCSAg ICAgICYmIGRmX3JlZ3NfZXZlcl9saXZlX3AgKHJlZ25vKSkpOw0KIH0NCiAN Ci0vKiBSZWdpc3RlcnMgd2hvJ3Mgc2F2ZSAmIHJlc3RvcmUgd2lsbCBiZSBt YW5hZ2VkIGJ5IHN0dWJzIGNhbGxlZCBmcm9tDQotICAgcHJvL2VwaWxvZ3Vl LiAgKi8NCi1zdGF0aWMgSEFSRF9SRUdfU0VUIEdUWSgoKSkgc3R1Yl9tYW5h Z2VkX3JlZ3M7DQotDQogLyogUmV0dXJuIHRydWUgaWYgcmVnaXN0ZXIgY2xh c3MgQ0wgc2hvdWxkIGJlIGFuIGFkZGl0aW9uYWwgYWxsb2Nubw0KICAgIGNs YXNzLiAgKi8NCiANCkBAIC0xMjcxOCw5ICsxMjY2OSwxMyBAQCBpeDg2X3Nh dmVfcmVnICh1bnNpZ25lZCBpbnQgcmVnbm8sIGJvb2wgbWF5YmVfZWhfcg0K IAl9DQogICAgIH0NCiANCi0gIGlmIChpZ25vcmVfb3V0bGluZWQgJiYgY2Z1 bi0+bWFjaGluZS0+Y2FsbF9tczJzeXN2DQotICAgICAgJiYgaW5faGFyZF9y ZWdfc2V0X3AgKHN0dWJfbWFuYWdlZF9yZWdzLCBESW1vZGUsIHJlZ25vKSkN Ci0gICAgcmV0dXJuIGZhbHNlOw0KKyAgaWYgKGlnbm9yZV9vdXRsaW5lZCAm JiBjZnVuLT5tYWNoaW5lLT5jYWxsX21zMnN5c3YpDQorICAgIHsNCisgICAg ICB1bnNpZ25lZCBjb3VudCA9IGNmdW4tPm1hY2hpbmUtPmNhbGxfbXMyc3lz dl9leHRyYV9yZWdzDQorCQkgICAgICAgKyB4bG9ndWVfbGF5b3V0OjpNSU5f UkVHUzsNCisgICAgICBpZiAoeGxvZ3VlX2xheW91dDo6aXNfc3R1Yl9tYW5h Z2VkX3JlZyAocmVnbm8sIGNvdW50KSkNCisJcmV0dXJuIGZhbHNlOw0KKyAg ICB9DQogDQogICBpZiAoY3J0bC0+ZHJhcF9yZWcNCiAgICAgICAmJiByZWdu byA9PSBSRUdOTyAoY3J0bC0+ZHJhcF9yZWcpDQpAQCAtMTI3ODcsOCArMTI3 NDIsNyBAQCBpeDg2X2Nhbl9lbGltaW5hdGUgKGNvbnN0IGludCBmcm9tLCBj b25zdCBpbnQgdG8pDQogSE9TVF9XSURFX0lOVA0KIGl4ODZfaW5pdGlhbF9l bGltaW5hdGlvbl9vZmZzZXQgKGludCBmcm9tLCBpbnQgdG8pDQogew0KLSAg c3RydWN0IGl4ODZfZnJhbWUgZnJhbWU7DQotICBpeDg2X2NvbXB1dGVfZnJh bWVfbGF5b3V0ICgmZnJhbWUpOw0KKyAgc3RydWN0IGl4ODZfZnJhbWUgZnJh bWUgPSBjZnVuLT5tYWNoaW5lLT5mcmFtZTsNCiANCiAgIGlmIChmcm9tID09 IEFSR19QT0lOVEVSX1JFR05VTSAmJiB0byA9PSBIQVJEX0ZSQU1FX1BPSU5U RVJfUkVHTlVNKQ0KICAgICByZXR1cm4gZnJhbWUuaGFyZF9mcmFtZV9wb2lu dGVyX29mZnNldDsNCkBAIC0xMjgxOCwxMyArMTI3NzIsMTYgQEAgaXg4Nl9i dWlsdGluX3NldGptcF9mcmFtZV92YWx1ZSAodm9pZCkNCiAgIHJldHVybiBz dGFja19yZWFsaWduX2ZwID8gaGFyZF9mcmFtZV9wb2ludGVyX3J0eCA6IHZp cnR1YWxfc3RhY2tfdmFyc19ydHg7DQogfQ0KIA0KLS8qIERpc2FibGVzIG91 dC1vZi1saW5lZCBtc2FiaSB0byBzeXN2IHByby9lcGlsb2d1ZXMgYW5kIGVt aXRzIGEgd2FybmluZyBpZg0KLSAgIHdhcm5fb25jZSBpcyBudWxsLCBvciAq d2Fybl9vbmNlIGlzIHplcm8uICAqLw0KLXN0YXRpYyB2b2lkIGRpc2FibGVf Y2FsbF9tczJzeXN2X3hsb2d1ZXMgKGNvbnN0IGNoYXIgKmZlYXR1cmUpDQor LyogRW1pdHMgYSB3YXJuaW5nIGZvciB1bnN1cHBvcnRlZCBtc2FiaSB0byBz eXN2IHByby9lcGlsb2d1ZXMuICAqLw0KK3N0YXRpYyB2b2lkIHdhcm5fb25j ZV9jYWxsX21zMnN5c3ZfeGxvZ3VlcyAoY29uc3QgY2hhciAqZmVhdHVyZSkN CiB7DQotICBjZnVuLT5tYWNoaW5lLT5jYWxsX21zMnN5c3YgPSBmYWxzZTsN Ci0gIHdhcm5pbmcgKE9QVF9tY2FsbF9tczJzeXN2X3hsb2d1ZXMsICJub3Qg Y3VycmVudGx5IGNvbXBhdGlibGUgd2l0aCAlcy4iLA0KLQkgICBmZWF0dXJl KTsNCisgIHN0YXRpYyBib29sIHdhcm5lZF9vbmNlID0gZmFsc2U7DQorICBp ZiAoIXdhcm5lZF9vbmNlKQ0KKyAgICB7DQorICAgICAgd2FybmluZyAoMCwg Ii1tY2FsbC1tczJzeXN2LXhsb2d1ZXMgaXMgbm90IGNvbXBhdGlibGUgd2l0 aCAlcyIsDQorCSAgICAgICBmZWF0dXJlKTsNCisgICAgICB3YXJuZWRfb25j ZSA9IHRydWU7DQorICAgIH0NCiB9DQogDQogLyogV2hlbiB1c2luZyAtZnNw bGl0LXN0YWNrLCB0aGUgYWxsb2NhdGlvbiByb3V0aW5lcyBzZXQgYSBmaWVs ZCBpbg0KQEAgLTEyODM2LDggKzEyNzkzLDkgQEAgaXg4Nl9idWlsdGluX3Nl dGptcF9mcmFtZV92YWx1ZSAodm9pZCkNCiAvKiBGaWxsIHN0cnVjdHVyZSBp eDg2X2ZyYW1lIGFib3V0IGZyYW1lIG9mIGN1cnJlbnRseSBjb21wdXRlZCBm dW5jdGlvbi4gICovDQogDQogc3RhdGljIHZvaWQNCi1peDg2X2NvbXB1dGVf ZnJhbWVfbGF5b3V0IChzdHJ1Y3QgaXg4Nl9mcmFtZSAqZnJhbWUpDQoraXg4 Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAodm9pZCkNCiB7DQorICBzdHJ1Y3Qg aXg4Nl9mcmFtZSAqZnJhbWUgPSAmY2Z1bi0+bWFjaGluZS0+ZnJhbWU7DQog ICBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbiAqbSA9IGNmdW4tPm1hY2hpbmU7 DQogICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIHN0YWNrX2FsaWdubWVudF9u ZWVkZWQ7DQogICBIT1NUX1dJREVfSU5UIG9mZnNldDsNCkBAIC0xMjg0NSw0 NiArMTI4MDMsMzkgQEAgc3RhdGljIHZvaWQNCiAgIEhPU1RfV0lERV9JTlQg c2l6ZSA9IGdldF9mcmFtZV9zaXplICgpOw0KICAgSE9TVF9XSURFX0lOVCB0 b19hbGxvY2F0ZTsNCiANCi0gIENMRUFSX0hBUkRfUkVHX1NFVCAoc3R1Yl9t YW5hZ2VkX3JlZ3MpOw0KLQ0KICAgLyogbS0+Y2FsbF9tczJzeXN2IGlzIGlu aXRpYWxseSBlbmFibGVkIGluIGl4ODZfZXhwYW5kX2NhbGwgZm9yIGFsbCA2 NC1iaXQNCiAgICAqIG1zX2FiaSBmdW5jdGlvbnMgdGhhdCBjYWxsIGEgc3lz diBmdW5jdGlvbi4gIFdlIG5vdyBuZWVkIHRvIHBydW5lIGF3YXkNCiAgICAq IGNhc2VzIHdoZXJlIGl0IHNob3VsZCBiZSBkaXNhYmxlZC4gICovDQogICBp ZiAoVEFSR0VUXzY0QklUICYmIG0tPmNhbGxfbXMyc3lzdikNCi0gIHsNCi0g ICAgZ2NjX2Fzc2VydCAoVEFSR0VUXzY0QklUX01TX0FCSSk7DQotICAgIGdj Y19hc3NlcnQgKFRBUkdFVF9DQUxMX01TMlNZU1ZfWExPR1VFUyk7DQotICAg IGdjY19hc3NlcnQgKCFUQVJHRVRfU0VIKTsNCisgICAgew0KKyAgICAgIGdj Y19hc3NlcnQgKFRBUkdFVF82NEJJVF9NU19BQkkpOw0KKyAgICAgIGdjY19h c3NlcnQgKFRBUkdFVF9DQUxMX01TMlNZU1ZfWExPR1VFUyk7DQorICAgICAg Z2NjX2Fzc2VydCAoIVRBUkdFVF9TRUgpOw0KKyAgICAgIGdjY19hc3NlcnQg KFRBUkdFVF9TU0UpOw0KKyAgICAgIGdjY19hc3NlcnQgKCFpeDg2X3VzaW5n X3JlZF96b25lICgpKTsNCiANCi0gICAgaWYgKCFUQVJHRVRfU1NFKQ0KLSAg ICAgIG0tPmNhbGxfbXMyc3lzdiA9IGZhbHNlOw0KKyAgICAgIGlmIChjcnRs LT5jYWxsc19laF9yZXR1cm4pDQorCXsNCisJICBnY2NfYXNzZXJ0ICghcmVs b2FkX2NvbXBsZXRlZCk7DQorCSAgbS0+Y2FsbF9tczJzeXN2ID0gZmFsc2U7 DQorCSAgd2Fybl9vbmNlX2NhbGxfbXMyc3lzdl94bG9ndWVzICgiX19idWls dGluX2VoX3JldHVybiIpOw0KKwl9DQogDQotICAgIC8qIERvbid0IGJyZWFr IGhvdC1wYXRjaGVkIGZ1bmN0aW9ucy4gICovDQotICAgIGVsc2UgaWYgKGl4 ODZfZnVuY3Rpb25fbXNfaG9va19wcm9sb2d1ZSAoY3VycmVudF9mdW5jdGlv bl9kZWNsKSkNCi0gICAgICBtLT5jYWxsX21zMnN5c3YgPSBmYWxzZTsNCisg ICAgICBlbHNlIGlmIChpeDg2X3N0YXRpY19jaGFpbl9vbl9zdGFjaykNCisJ ew0KKwkgIGdjY19hc3NlcnQgKCFyZWxvYWRfY29tcGxldGVkKTsNCisJICBt LT5jYWxsX21zMnN5c3YgPSBmYWxzZTsNCisJICB3YXJuX29uY2VfY2FsbF9t czJzeXN2X3hsb2d1ZXMgKCJzdGF0aWMgY2FsbCBjaGFpbnMiKTsNCisJfQ0K IA0KLSAgICAvKiBUT0RPOiBDYXNlcyBub3QgeWV0IGV4YW1pbmVkLiAgKi8N Ci0gICAgZWxzZSBpZiAoY3J0bC0+Y2FsbHNfZWhfcmV0dXJuKQ0KLSAgICAg IGRpc2FibGVfY2FsbF9tczJzeXN2X3hsb2d1ZXMgKCJfX2J1aWx0aW5fZWhf cmV0dXJuIik7DQorICAgICAgLyogRmluYWxseSwgY29tcHV0ZSB3aGljaCBy ZWdpc3RlcnMgdGhlIHN0dWIgd2lsbCBtYW5hZ2UuICAqLw0KKyAgICAgIGVs c2UNCisJew0KKwkgIHVuc2lnbmVkIGNvdW50ID0geGxvZ3VlX2xheW91dDo6 Y291bnRfc3R1Yl9tYW5hZ2VkX3JlZ3MgKCk7DQorCSAgbS0+Y2FsbF9tczJz eXN2X2V4dHJhX3JlZ3MgPSBjb3VudCAtIHhsb2d1ZV9sYXlvdXQ6Ok1JTl9S RUdTOw0KKwl9DQorICAgIH0NCiANCi0gICAgZWxzZSBpZiAoaXg4Nl9zdGF0 aWNfY2hhaW5fb25fc3RhY2spDQotICAgICAgZGlzYWJsZV9jYWxsX21zMnN5 c3ZfeGxvZ3VlcyAoInN0YXRpYyBjYWxsIGNoYWlucyIpOw0KLQ0KLSAgICBl bHNlIGlmIChpeDg2X3VzaW5nX3JlZF96b25lICgpKQ0KLSAgICAgIGRpc2Fi bGVfY2FsbF9tczJzeXN2X3hsb2d1ZXMgKCJyZWQgem9uZXMiKTsNCi0NCi0g ICAgZWxzZSBpZiAoZmxhZ19zcGxpdF9zdGFjaykNCi0gICAgICBkaXNhYmxl X2NhbGxfbXMyc3lzdl94bG9ndWVzICgic3BsaXQgc3RhY2siKTsNCi0NCi0g ICAgLyogRmluYWxseSwgY29tcHV0ZSB3aGljaCByZWdpc3RlcnMgdGhlIHN0 dWIgd2lsbCBtYW5hZ2UuICAqLw0KLSAgICBlbHNlDQotICAgICAgew0KLQl1 bnNpZ25lZCBjb3VudCA9IHhsb2d1ZV9sYXlvdXQNCi0JCQkgOjpjb21wdXRl X3N0dWJfbWFuYWdlZF9yZWdzIChzdHViX21hbmFnZWRfcmVncyk7DQotCW0t PmNhbGxfbXMyc3lzdl9leHRyYV9yZWdzID0gY291bnQgLSB4bG9ndWVfbGF5 b3V0OjpNSU5fUkVHUzsNCi0gICAgICB9DQotICB9DQotDQogICBmcmFtZS0+ bnJlZ3MgPSBpeDg2X25zYXZlZF9yZWdzICgpOw0KICAgZnJhbWUtPm5zc2Vy ZWdzID0gaXg4Nl9uc2F2ZWRfc3NlcmVncyAoKTsNCiAgIG0tPmNhbGxfbXMy c3lzdl9wYWRfaW4gPSAwOw0KQEAgLTEyOTE2LDE5ICsxMjg2NywxMSBAQCBz dGF0aWMgdm9pZA0KICAgICAgaW4gZG9pbmcgYW55dGhpbmcgZXhjZXB0IFBV U0hzLiAgKi8NCiAgIGlmIChUQVJHRVRfU0VIKQ0KICAgICBtLT51c2VfZmFz dF9wcm9sb2d1ZV9lcGlsb2d1ZSA9IGZhbHNlOw0KLQ0KLSAgLyogRHVyaW5n IHJlbG9hZCBpdGVyYXRpb24gdGhlIGFtb3VudCBvZiByZWdpc3RlcnMgc2F2 ZWQgY2FuIGNoYW5nZS4NCi0gICAgIFJlY29tcHV0ZSB0aGUgdmFsdWUgYXMg bmVlZGVkLiAgRG8gbm90IHJlY29tcHV0ZSB3aGVuIGFtb3VudCBvZiByZWdp c3RlcnMNCi0gICAgIGRpZG4ndCBjaGFuZ2UgYXMgcmVsb2FkIGRvZXMgbXVs dGlwbGUgY2FsbHMgdG8gdGhlIGZ1bmN0aW9uIGFuZCBkb2VzIG5vdA0KLSAg ICAgZXhwZWN0IHRoZSBkZWNpc2lvbiB0byBjaGFuZ2Ugd2l0aGluIHNpbmds ZSBpdGVyYXRpb24uICAqLw0KLSAgZWxzZSBpZiAoIW9wdGltaXplX2JiX2Zv cl9zaXplX3AgKEVOVFJZX0JMT0NLX1BUUl9GT1JfRk4gKGNmdW4pKQ0KLQkg ICAmJiBtLT51c2VfZmFzdF9wcm9sb2d1ZV9lcGlsb2d1ZV9ucmVncyAhPSBm cmFtZS0+bnJlZ3MpDQorICBlbHNlIGlmICghb3B0aW1pemVfYmJfZm9yX3Np emVfcCAoRU5UUllfQkxPQ0tfUFRSX0ZPUl9GTiAoY2Z1bikpKQ0KICAgICB7 DQogICAgICAgaW50IGNvdW50ID0gZnJhbWUtPm5yZWdzOw0KICAgICAgIHN0 cnVjdCBjZ3JhcGhfbm9kZSAqbm9kZSA9IGNncmFwaF9ub2RlOjpnZXQgKGN1 cnJlbnRfZnVuY3Rpb25fZGVjbCk7DQogDQotICAgICAgbS0+dXNlX2Zhc3Rf cHJvbG9ndWVfZXBpbG9ndWVfbnJlZ3MgPSBjb3VudDsNCi0NCiAgICAgICAv KiBUaGUgZmFzdCBwcm9sb2d1ZSB1c2VzIG1vdmUgaW5zdGVhZCBvZiBwdXNo IHRvIHNhdmUgcmVnaXN0ZXJzLiAgVGhpcw0KICAgICAgICAgIGlzIHNpZ25p ZmljYW50bHkgbG9uZ2VyLCBidXQgYWxzbyBleGVjdXRlcyBmYXN0ZXIgYXMg bW9kZXJuIGhhcmR3YXJlDQogICAgICAgICAgY2FuIGV4ZWN1dGUgdGhlIG1v dmVzIGluIHBhcmFsbGVsLCBidXQgY2FuJ3QgZG8gdGhhdCBmb3IgcHVzaC9w b3AuDQpAQCAtMTMxNDUsNyArMTMwODgsOCBAQCBjaG9vc2VfYmFzZWFkZHJf bGVuICh1bnNpZ25lZCBpbnQgcmVnbm8sIEhPU1RfV0lERQ0KIA0KIC8qIERl dGVybWluZSBpZiB0aGUgc3RhY2sgcG9pbnRlciBpcyB2YWxpZCBmb3IgYWNj ZXNzaW5nIHRoZSBjZmFfb2Zmc2V0LiAgKi8NCiANCi1zdGF0aWMgaW5saW5l IGJvb2wgc3BfdmFsaWRfYXQgKEhPU1RfV0lERV9JTlQgY2ZhX29mZnNldCkN CitzdGF0aWMgaW5saW5lIGJvb2wNCitzcF92YWxpZF9hdCAoSE9TVF9XSURF X0lOVCBjZmFfb2Zmc2V0KQ0KIHsNCiAgIGNvbnN0IHN0cnVjdCBtYWNoaW5l X2ZyYW1lX3N0YXRlICZmcyA9IGNmdW4tPm1hY2hpbmUtPmZzOw0KICAgcmV0 dXJuIGZzLnNwX3ZhbGlkICYmICEoZnMuc3BfcmVhbGlnbmVkDQpAQCAtMTMx NTQsNyArMTMwOTgsOCBAQCBjaG9vc2VfYmFzZWFkZHJfbGVuICh1bnNpZ25l ZCBpbnQgcmVnbm8sIEhPU1RfV0lERQ0KIA0KIC8qIERldGVybWluZSBpZiB0 aGUgZnJhbWUgcG9pbnRlciBpcyB2YWxpZCBmb3IgYWNjZXNzaW5nIHRoZSBj ZmFfb2Zmc2V0LiAgKi8NCiANCi1zdGF0aWMgaW5saW5lIGJvb2wgZnBfdmFs aWRfYXQgKEhPU1RfV0lERV9JTlQgY2ZhX29mZnNldCkNCitzdGF0aWMgaW5s aW5lIGJvb2wNCitmcF92YWxpZF9hdCAoSE9TVF9XSURFX0lOVCBjZmFfb2Zm c2V0KQ0KIHsNCiAgIGNvbnN0IHN0cnVjdCBtYWNoaW5lX2ZyYW1lX3N0YXRl ICZmcyA9IGNmdW4tPm1hY2hpbmUtPmZzOw0KICAgcmV0dXJuIGZzLmZwX3Zh bGlkICYmICEoZnMuc3BfdmFsaWQgJiYgZnMuc3BfcmVhbGlnbmVkDQpAQCAt MTMxNjQsOSArMTMxMDksMTAgQEAgY2hvb3NlX2Jhc2VhZGRyX2xlbiAodW5z aWduZWQgaW50IHJlZ25vLCBIT1NUX1dJREUNCiAvKiBDaG9vc2UgYSBiYXNl IHJlZ2lzdGVyIGJhc2VkIHVwb24gYWxpZ25tZW50IHJlcXVlc3RlZCwgc3Bl ZWQgYW5kL29yDQogICAgc2l6ZS4gICovDQogDQotc3RhdGljIHZvaWQgY2hv b3NlX2Jhc2VyZWcgKEhPU1RfV0lERV9JTlQgY2ZhX29mZnNldCwgcnR4ICZi YXNlX3JlZywNCi0JCQkgICAgSE9TVF9XSURFX0lOVCAmYmFzZV9vZmZzZXQs DQotCQkJICAgIHVuc2lnbmVkIGludCBhbGlnbl9yZXFlc3RlZCwgdW5zaWdu ZWQgaW50ICphbGlnbikNCitzdGF0aWMgdm9pZA0KK2Nob29zZV9iYXNlcmVn IChIT1NUX1dJREVfSU5UIGNmYV9vZmZzZXQsIHJ0eCAmYmFzZV9yZWcsDQor CQlIT1NUX1dJREVfSU5UICZiYXNlX29mZnNldCwNCisJCXVuc2lnbmVkIGlu dCBhbGlnbl9yZXFlc3RlZCwgdW5zaWduZWQgaW50ICphbGlnbikNCiB7DQog ICBjb25zdCBzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbiAqbSA9IGNmdW4tPm1h Y2hpbmU7DQogICB1bnNpZ25lZCBpbnQgaGZwX2FsaWduOw0KQEAgLTE0MTU5 LDYgKzE0MTA1LDcgQEAgaXg4Nl9maW5hbGl6ZV9zdGFja19yZWFsaWduX2Zs YWdzICh2b2lkKQ0KICAgICAgICA8IChjcnRsLT5pc19sZWFmICYmICFpeDg2 X2N1cnJlbnRfZnVuY3Rpb25fY2FsbHNfdGxzX2Rlc2NyaXB0b3INCiAJICA/ IGNydGwtPm1heF91c2VkX3N0YWNrX3Nsb3RfYWxpZ25tZW50DQogCSAgOiBj cnRsLT5zdGFja19hbGlnbm1lbnRfbmVlZGVkKSk7DQorICBib29sIHJlY29t cHV0ZV9mcmFtZV9sYXlvdXRfcCA9IGZhbHNlOw0KIA0KICAgaWYgKGNydGwt PnN0YWNrX3JlYWxpZ25fZmluYWxpemVkKQ0KICAgICB7DQpAQCAtMTQyMDgs OCArMTQxNTUsMTIgQEAgaXg4Nl9maW5hbGl6ZV9zdGFja19yZWFsaWduX2Zs YWdzICh2b2lkKQ0KIAkJJiYgcmVxdWlyZXNfc3RhY2tfZnJhbWVfcCAoaW5z biwgcHJvbG9ndWVfdXNlZCwNCiAJCQkJCSAgIHNldF91cF9ieV9wcm9sb2d1 ZSkpDQogCSAgICAgIHsNCisJCWlmIChjcnRsLT5zdGFja19yZWFsaWduX25l ZWRlZCAhPSBzdGFja19yZWFsaWduKQ0KKwkJICByZWNvbXB1dGVfZnJhbWVf bGF5b3V0X3AgPSB0cnVlOw0KIAkJY3J0bC0+c3RhY2tfcmVhbGlnbl9uZWVk ZWQgPSBzdGFja19yZWFsaWduOw0KIAkJY3J0bC0+c3RhY2tfcmVhbGlnbl9m aW5hbGl6ZWQgPSB0cnVlOw0KKwkJaWYgKHJlY29tcHV0ZV9mcmFtZV9sYXlv dXRfcCkNCisJCSAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsNCiAJ CXJldHVybjsNCiAJICAgICAgfQ0KIAl9DQpAQCAtMTQyNDAsMTAgKzE0MTkx LDE1IEBAIGl4ODZfZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyAodm9p ZCkNCiAgICAgICBkZl9zY2FuX2Jsb2NrcyAoKTsNCiAgICAgICBkZl9jb21w dXRlX3JlZ3NfZXZlcl9saXZlICh0cnVlKTsNCiAgICAgICBkZl9hbmFseXpl ICgpOw0KKyAgICAgIHJlY29tcHV0ZV9mcmFtZV9sYXlvdXRfcCA9IHRydWU7 DQogICAgIH0NCiANCisgIGlmIChjcnRsLT5zdGFja19yZWFsaWduX25lZWRl ZCAhPSBzdGFja19yZWFsaWduKQ0KKyAgICByZWNvbXB1dGVfZnJhbWVfbGF5 b3V0X3AgPSB0cnVlOw0KICAgY3J0bC0+c3RhY2tfcmVhbGlnbl9uZWVkZWQg PSBzdGFja19yZWFsaWduOw0KICAgY3J0bC0+c3RhY2tfcmVhbGlnbl9maW5h bGl6ZWQgPSB0cnVlOw0KKyAgaWYgKHJlY29tcHV0ZV9mcmFtZV9sYXlvdXRf cCkNCisgICAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoKTsNCiB9DQog DQogLyogRGVsZXRlIFNFVF9HT1QgcmlnaHQgYWZ0ZXIgZW50cnkgYmxvY2sg aWYgaXQgaXMgYWxsb2NhdGVkIHRvIHJlZy4gICovDQpAQCAtMTQzNzIsNyAr MTQzMjgsNyBAQCBpeDg2X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkNCiAgIG0t PmZzLnNwX3ZhbGlkID0gdHJ1ZTsNCiAgIG0tPmZzLnNwX3JlYWxpZ25lZCA9 IGZhbHNlOw0KIA0KLSAgaXg4Nl9jb21wdXRlX2ZyYW1lX2xheW91dCAoJmZy YW1lKTsNCisgIGZyYW1lID0gbS0+ZnJhbWU7DQogDQogICBpZiAoIVRBUkdF VF82NEJJVCAmJiBpeDg2X2Z1bmN0aW9uX21zX2hvb2tfcHJvbG9ndWUgKGN1 cnJlbnRfZnVuY3Rpb25fZGVjbCkpDQogICAgIHsNCkBAIC0xNTIxMiw3ICsx NTE2OCw3IEBAIGl4ODZfZXhwYW5kX2VwaWxvZ3VlIChpbnQgc3R5bGUpDQog ICBib29sIHJlc3RvcmVfc3R1Yl9pc190YWlsID0gZmFsc2U7DQogDQogICBp eDg2X2ZpbmFsaXplX3N0YWNrX3JlYWxpZ25fZmxhZ3MgKCk7DQotICBpeDg2 X2NvbXB1dGVfZnJhbWVfbGF5b3V0ICgmZnJhbWUpOw0KKyAgZnJhbWUgPSBt LT5mcmFtZTsNCiANCiAgIG0tPmZzLnNwX3JlYWxpZ25lZCA9IHN0YWNrX3Jl YWxpZ25fZnA7DQogICBtLT5mcy5zcF92YWxpZCA9IHN0YWNrX3JlYWxpZ25f ZnANCkBAIC0xNTc1Nyw3ICsxNTcxMyw3IEBAIGl4ODZfZXhwYW5kX3NwbGl0 X3N0YWNrX3Byb2xvZ3VlICh2b2lkKQ0KICAgZ2NjX2Fzc2VydCAoZmxhZ19z cGxpdF9zdGFjayAmJiByZWxvYWRfY29tcGxldGVkKTsNCiANCiAgIGl4ODZf ZmluYWxpemVfc3RhY2tfcmVhbGlnbl9mbGFncyAoKTsNCi0gIGl4ODZfY29t cHV0ZV9mcmFtZV9sYXlvdXQgKCZmcmFtZSk7DQorICBmcmFtZSA9IGNmdW4t Pm1hY2hpbmUtPmZyYW1lOw0KICAgYWxsb2NhdGUgPSBmcmFtZS5zdGFja19w b2ludGVyX29mZnNldCAtIElOQ09NSU5HX0ZSQU1FX1NQX09GRlNFVDsNCiAN CiAgIC8qIFRoaXMgaXMgdGhlIGxhYmVsIHdlIHdpbGwgYnJhbmNoIHRvIGlm IHdlIGhhdmUgZW5vdWdoIHN0YWNrDQpAQCAtMjkzMjAsNyArMjkyNzYsMjQg QEAgaXg4Nl9leHBhbmRfY2FsbCAocnR4IHJldHZhbCwgcnR4IGZuYWRkciwg cnR4IGNhbGwNCiANCiAgICAgICAvKiBTZXQgaGVyZSwgYnV0IGl0IG1heSBn ZXQgY2xlYXJlZCBsYXRlci4gICovDQogICAgICAgaWYgKFRBUkdFVF9DQUxM X01TMlNZU1ZfWExPR1VFUykNCi0JY2Z1bi0+bWFjaGluZS0+Y2FsbF9tczJz eXN2ID0gdHJ1ZTsNCisJew0KKwkgIGlmICghVEFSR0VUX1NTRSkNCisJICAg IDsNCisNCisJICAvKiBEb24ndCBicmVhayBob3QtcGF0Y2hlZCBmdW5jdGlv bnMuICAqLw0KKwkgIGVsc2UgaWYgKGl4ODZfZnVuY3Rpb25fbXNfaG9va19w cm9sb2d1ZSAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkNCisJICAgIDsNCisN CisJICAvKiBUT0RPOiBDYXNlcyBub3QgeWV0IGV4YW1pbmVkLiAgKi8NCisJ ICBlbHNlIGlmIChmbGFnX3NwbGl0X3N0YWNrKQ0KKwkgICAgd2Fybl9vbmNl X2NhbGxfbXMyc3lzdl94bG9ndWVzICgiLWZzcGxpdC1zdGFjayIpOw0KKw0K KwkgIGVsc2UNCisJICAgIHsNCisJICAgICAgZ2NjX2Fzc2VydCAoIXJlbG9h ZF9jb21wbGV0ZWQpOw0KKwkgICAgICBjZnVuLT5tYWNoaW5lLT5jYWxsX21z MnN5c3YgPSB0cnVlOw0KKwkgICAgfQ0KKwl9DQogICAgIH0NCiANCiAgIGlm ICh2ZWNfbGVuID4gMSkNCkBAIC0yOTQ1NSw3ICsyOTQyOCw2IEBAIGl4ODZf aW5pdF9tYWNoaW5lX3N0YXR1cyAodm9pZCkNCiAgIHN0cnVjdCBtYWNoaW5l X2Z1bmN0aW9uICpmOw0KIA0KICAgZiA9IGdnY19jbGVhcmVkX2FsbG9jPG1h Y2hpbmVfZnVuY3Rpb24+ICgpOw0KLSAgZi0+dXNlX2Zhc3RfcHJvbG9ndWVf ZXBpbG9ndWVfbnJlZ3MgPSAtMTsNCiAgIGYtPmNhbGxfYWJpID0gaXg4Nl9h Ymk7DQogDQogICByZXR1cm4gZjsNCkBAIC0zMTUxNSw4ICszMTQ4NywxMiBA QCBpeDg2X3N0YXRpY19jaGFpbiAoY29uc3RfdHJlZSBmbmRlY2xfb3JfdHlw ZSwgYm9vbA0KIAkgICAgIHNhbWUgb25jZSB3ZSdyZSBleGVjdXRpbmcgdGhl IG5lc3RlZCBmdW5jdGlvbi4gICovDQogCSAgaWYgKGluY29taW5nX3ApDQog CSAgICB7DQotCSAgICAgIGlmIChmbmRlY2wgPT0gY3VycmVudF9mdW5jdGlv bl9kZWNsKQ0KLQkJaXg4Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2sgPSB0cnVl Ow0KKwkgICAgICBpZiAoZm5kZWNsID09IGN1cnJlbnRfZnVuY3Rpb25fZGVj bA0KKwkJICAmJiAhaXg4Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2spDQorCQl7 DQorCQkgIGdjY19hc3NlcnQgKCFyZWxvYWRfY29tcGxldGVkKTsNCisJCSAg aXg4Nl9zdGF0aWNfY2hhaW5fb25fc3RhY2sgPSB0cnVlOw0KKwkJfQ0KIAkg ICAgICByZXR1cm4gZ2VuX2ZyYW1lX21lbSAoU0ltb2RlLA0KIAkJCQkgICAg cGx1c19jb25zdGFudCAoUG1vZGUsDQogCQkJCQkJICAgYXJnX3BvaW50ZXJf cnR4LCAtOCkpOw0KQEAgLTUyODI4LDYgKzUyODA0LDkgQEAgaXg4Nl9ydW5f c2VsZnRlc3RzICh2b2lkKQ0KICN1bmRlZiBUQVJHRVRfTEVHSVRJTUFURV9D T05TVEFOVF9QDQogI2RlZmluZSBUQVJHRVRfTEVHSVRJTUFURV9DT05TVEFO VF9QIGl4ODZfbGVnaXRpbWF0ZV9jb25zdGFudF9wDQogDQorI3VuZGVmIFRB UkdFVF9DT01QVVRFX0ZSQU1FX0xBWU9VVA0KKyNkZWZpbmUgVEFSR0VUX0NP TVBVVEVfRlJBTUVfTEFZT1VUIGl4ODZfY29tcHV0ZV9mcmFtZV9sYXlvdXQN CisNCiAjdW5kZWYgVEFSR0VUX0ZSQU1FX1BPSU5URVJfUkVRVUlSRUQNCiAj ZGVmaW5lIFRBUkdFVF9GUkFNRV9QT0lOVEVSX1JFUVVJUkVEIGl4ODZfZnJh bWVfcG9pbnRlcl9yZXF1aXJlZA0KIA0KSW5kZXg6IGdjYy9jb25maWcvaTM4 Ni9pMzg2LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBnY2MvY29u ZmlnL2kzODYvaTM4Ni5oCShyZXZpc2lvbiAyNDgwMzEpDQorKysgZ2NjL2Nv bmZpZy9pMzg2L2kzODYuaAkod29ya2luZyBjb3B5KQ0KQEAgLTIxNjMsMTAg KzIxNjMsNiBAQCBleHRlcm4gaW50IGNvbnN0IGRieF9yZWdpc3Rlcl9tYXBb RklSU1RfUFNFVURPX1JFRw0KIGV4dGVybiBpbnQgY29uc3QgZGJ4NjRfcmVn aXN0ZXJfbWFwW0ZJUlNUX1BTRVVET19SRUdJU1RFUl07DQogZXh0ZXJuIGlu dCBjb25zdCBzdnI0X2RieF9yZWdpc3Rlcl9tYXBbRklSU1RfUFNFVURPX1JF R0lTVEVSXTsNCiANCi1leHRlcm4gdW5zaWduZWQgY29uc3QgeDg2XzY0X21z X3N5c3ZfZXh0cmFfY2xvYmJlcmVkX3JlZ2lzdGVyc1sxMl07DQotI2RlZmlu ZSBOVU1fWDg2XzY0X01TX0NMT0JCRVJFRF9SRUdTIFwNCi0gIChBUlJBWV9T SVpFICh4ODZfNjRfbXNfc3lzdl9leHRyYV9jbG9iYmVyZWRfcmVnaXN0ZXJz KSkNCi0NCiAvKiBCZWZvcmUgdGhlIHByb2xvZ3VlLCBSQSBpcyBhdCAwKCVl c3ApLiAgKi8NCiAjZGVmaW5lIElOQ09NSU5HX1JFVFVSTl9BRERSX1JUWCBc DQogICBnZW5fcnR4X01FTSAoUG1vZGUsIGdlbl9ydHhfUkVHIChQbW9kZSwg U1RBQ0tfUE9JTlRFUl9SRUdOVU0pKQ0KQEAgLTI0NDgsOSArMjQ0NCw3NiBA QCBlbnVtIGF2eF91MTI4X3N0YXRlDQogDA0KICNkZWZpbmUgRkFTVENBTExf UFJFRklYICdAJw0KIAwNCisjaWZuZGVmIFVTRURfRk9SX1RBUkdFVA0KKy8q IFN0cnVjdHVyZSBkZXNjcmliaW5nIHN0YWNrIGZyYW1lIGxheW91dC4NCisg ICBTdGFjayBncm93cyBkb3dud2FyZDoNCisNCisgICBbYXJndW1lbnRzXQ0K KwkJCQkJPC0gQVJHX1BPSU5URVINCisgICBzYXZlZCBwYw0KKw0KKyAgIHNh dmVkIHN0YXRpYyBjaGFpbgkJCWlmIGl4ODZfc3RhdGljX2NoYWluX29uX3N0 YWNrDQorDQorICAgc2F2ZWQgZnJhbWUgcG9pbnRlcgkJCWlmIGZyYW1lX3Bv aW50ZXJfbmVlZGVkDQorCQkJCQk8LSBIQVJEX0ZSQU1FX1BPSU5URVINCisg ICBbc2F2ZWQgcmVnc10NCisJCQkJCTwtIHJlZ19zYXZlX29mZnNldA0KKyAg IFtwYWRkaW5nMF0NCisJCQkJCTwtIHN0YWNrX3JlYWxpZ25fb2Zmc2V0DQor ICAgW3NhdmVkIFNTRSByZWdzXQ0KKwlPUg0KKyAgIFtzdHViLXNhdmVkIHJl Z2lzdGVycyBmb3IgbXMgeDY0IC0tPiBzeXN2IGNsb2JiZXJzDQorCQkJPC0g U3RhcnQgb2Ygb3V0LW9mLWxpbmUsIHN0dWItc2F2ZWQvcmVzdG9yZWQgcmVn cw0KKwkJCSAgIChzZWUgbGliZ2NjL2NvbmZpZy9pMzg2LyhzYXZ8cmVzKW1z NjQqLlMpDQorICAgICBbWE1NNi0xNV0NCisgICAgIFtSU0ldDQorICAgICBb UkRJXQ0KKyAgICAgWz9SQlhdCQlvbmx5IGlmIFJCWCBpcyBjbG9iYmVyZWQN CisgICAgIFs/UkJQXQkJb25seSBpZiBSQlAgYW5kIFJCWCBhcmUgY2xvYmJl cmVkDQorICAgICBbP1IxMl0JCW9ubHkgaWYgUjEyIGFuZCBhbGwgcHJldmlv dXMgcmVncyBhcmUgY2xvYmJlcmVkDQorICAgICBbP1IxM10JCW9ubHkgaWYg UjEzIGFuZCBhbGwgcHJldmlvdXMgcmVncyBhcmUgY2xvYmJlcmVkDQorICAg ICBbP1IxNF0JCW9ubHkgaWYgUjE0IGFuZCBhbGwgcHJldmlvdXMgcmVncyBh cmUgY2xvYmJlcmVkDQorICAgICBbP1IxNV0JCW9ubHkgaWYgUjE1IGFuZCBh bGwgcHJldmlvdXMgcmVncyBhcmUgY2xvYmJlcmVkDQorCQkJPC0gZW5kIG9m IHN0dWItc2F2ZWQvcmVzdG9yZWQgcmVncw0KKyAgICAgW3BhZGRpbmcxXQ0K KyAgIF0NCisJCQkJCTwtIG91dGxpbmVkX3NhdmVfb2Zmc2V0DQorCQkJCQk8 LSBzc2VfcmVnc19zYXZlX29mZnNldA0KKyAgIFtwYWRkaW5nMl0NCisJCSAg ICAgICB8CQk8LSBGUkFNRV9QT0lOVEVSDQorICAgW3ZhX2FyZyByZWdpc3Rl cnNdICB8DQorCQkgICAgICAgfA0KKyAgIFtmcmFtZV0JICAgICAgIHwNCisJ CSAgICAgICB8DQorICAgW3BhZGRpbmcyXQkgICAgICAgfCA9IHRvX2FsbG9j YXRlDQorCQkJCQk8LSBTVEFDS19QT0lOVEVSDQorICAqLw0KK3N0cnVjdCBH VFkoKCkpIGl4ODZfZnJhbWUNCit7DQorICBpbnQgbnNzZXJlZ3M7DQorICBp bnQgbnJlZ3M7DQorICBpbnQgdmFfYXJnX3NpemU7DQorICBpbnQgcmVkX3pv bmVfc2l6ZTsNCisgIGludCBvdXRnb2luZ19hcmd1bWVudHNfc2l6ZTsNCisN CisgIC8qIFRoZSBvZmZzZXRzIHJlbGF0aXZlIHRvIEFSR19QT0lOVEVSLiAg Ki8NCisgIEhPU1RfV0lERV9JTlQgZnJhbWVfcG9pbnRlcl9vZmZzZXQ7DQor ICBIT1NUX1dJREVfSU5UIGhhcmRfZnJhbWVfcG9pbnRlcl9vZmZzZXQ7DQor ICBIT1NUX1dJREVfSU5UIHN0YWNrX3BvaW50ZXJfb2Zmc2V0Ow0KKyAgSE9T VF9XSURFX0lOVCBoZnBfc2F2ZV9vZmZzZXQ7DQorICBIT1NUX1dJREVfSU5U IHJlZ19zYXZlX29mZnNldDsNCisgIEhPU1RfV0lERV9JTlQgc3RhY2tfcmVh bGlnbl9hbGxvY2F0ZV9vZmZzZXQ7DQorICBIT1NUX1dJREVfSU5UIHN0YWNr X3JlYWxpZ25fb2Zmc2V0Ow0KKyAgSE9TVF9XSURFX0lOVCBvdXRsaW5lZF9z YXZlX29mZnNldDsNCisgIEhPU1RfV0lERV9JTlQgc3NlX3JlZ19zYXZlX29m ZnNldDsNCisNCisgIC8qIFdoZW4gc2F2ZV9yZWdzX3VzaW5nX21vdiBpcyBz ZXQsIGVtaXQgcHJvbG9ndWUgdXNpbmcNCisgICAgIG1vdmUgaW5zdGVhZCBv ZiBwdXNoIGluc3RydWN0aW9ucy4gICovDQorICBib29sIHNhdmVfcmVnc191 c2luZ19tb3Y7DQorfTsNCisNCiAvKiBNYWNoaW5lIHNwZWNpZmljIGZyYW1l IHRyYWNraW5nIGR1cmluZyBwcm9sb2d1ZS9lcGlsb2d1ZSBnZW5lcmF0aW9u LiAgKi8NCiANCi0jaWZuZGVmIFVTRURfRk9SX1RBUkdFVA0KIHN0cnVjdCBH VFkoKCkpIG1hY2hpbmVfZnJhbWVfc3RhdGUNCiB7DQogICAvKiBUaGlzIHBh aXIgdHJhY2tzIHRoZSBjdXJyZW50bHkgYWN0aXZlIENGQSBhcyByZWcrb2Zm c2V0LiAgV2hlbiByZWcNCkBAIC0yNTIwLDkgKzI1ODMsOCBAQCBzdHJ1Y3Qg R1RZKCgpKSBtYWNoaW5lX2Z1bmN0aW9uIHsNCiAgIGludCB2YXJhcmdzX2Zw cl9zaXplOw0KICAgaW50IG9wdGltaXplX21vZGVfc3dpdGNoaW5nW01BWF8z ODZfRU5USVRJRVNdOw0KIA0KLSAgLyogTnVtYmVyIG9mIHNhdmVkIHJlZ2lz dGVycyBVU0VfRkFTVF9QUk9MT0dVRV9FUElMT0dVRQ0KLSAgICAgaGFzIGJl ZW4gY29tcHV0ZWQgZm9yLiAgKi8NCi0gIGludCB1c2VfZmFzdF9wcm9sb2d1 ZV9lcGlsb2d1ZV9ucmVnczsNCisgIC8qIENhY2hlZCBpbml0aWFsIGZyYW1l IGxheW91dCBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24uICAqLw0KKyAgc3Ry dWN0IGl4ODZfZnJhbWUgZnJhbWU7DQogDQogICAvKiBGb3IgLWZzcGxpdC1z dGFjayBzdXBwb3J0OiBBIHN0YWNrIGxvY2FsIHdoaWNoIGhvbGRzIGEgcG9p bnRlciB0bw0KICAgICAgdGhlIHN0YWNrIGFyZ3VtZW50cyBmb3IgYSBmdW5j dGlvbiB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mDQo= --_003_AM4PR0701MB2162D94C4885E78DEF26F4E1E4E40AM4PR0701MB2162_--