From owner-svn-src-all@freebsd.org Tue Sep 24 19:29:41 2019 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B02B312EEE9; Tue, 24 Sep 2019 19:29:41 +0000 (UTC) (envelope-from ohartmann@walstatt.org) Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "mout.gmx.net", Issuer "TeleSec ServerPass Class 2 CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46dB8h47GBz3P7j; Tue, 24 Sep 2019 19:29:40 +0000 (UTC) (envelope-from ohartmann@walstatt.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1569353368; bh=igmhJ3+eSaZLKNLrRCAdRlqU0AxF8MnP4MoxHcvu++4=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=MH7fqeUWkEjojEDOrMiZR8hrYhGEJ2L2b6XKNO6rVLsOaDjbNiyfQW8w9btPeEsV7 Lu9HwOum3t//tl1/OXDcTTr9Nkjdn4u42D9Fdv+Uyo7qb5S/VBHQ+zPDmjGISbIu7p mytikCQTyg23mhPKqdczKlkseuFo6r1M4UXQd4d8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from thor.intern.walstatt.dynvpn.de ([78.55.203.44]) by mail.gmx.com (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MbzuB-1hcOcZ2AUp-00dUTf; Tue, 24 Sep 2019 21:29:28 +0200 Date: Tue, 24 Sep 2019 21:28:51 +0200 From: "O. Hartmann" To: Randall Stewart Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r352657 - in head/sys: conf kern modules/tcp modules/tcp/bbr netinet netinet/tcp_stacks sys Message-ID: <20190924212918.01e52920@thor.intern.walstatt.dynvpn.de> In-Reply-To: <201909241818.x8OIIBNr039667@repo.freebsd.org> References: <201909241818.x8OIIBNr039667@repo.freebsd.org> Organization: WALSTATT User-Agent: OutScare 3.1415926 X-Operating-System: ImNotAnOperatingSystem 3.141592527 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:VtDhqBshUKi86Z48deJJOETipNbQhgZWQjIs271SvakXejvSCH4 IRdlEajR+DuizKtegWrcdhFqVcD+vwAel1jkEj/qzpBuHMn10HGIbO3ujqMmrLkpaMikfPI H8Z5A5w5l9caupWzB/WzUHYI1TDUgRm4p9jViiBMxVjkH8CDSELghHn2jugNoZSo1dvVlsJ +PgJ7HquJJOR8FhiaFqTQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:q1xws33WMeE=:H8ZvX1/9QEiCcvFT7qstpK HjbDkugYAz2uERG/UQNLnyTB/a+E/23wUEKKYlQXsU06tN9JaVM/nBA19JcfMDj57NB2SOIXG PmlTF4B+hpu2TAvA7IYsRjb2iobq/UccVxje94k2CXMA95QCIIvzZgy7lqheejEI0XzrOppmx y+EVrAbDhew2vfdQ5aRoTq4SxaQPBfOknHdCwEsz5edSy7DVXNEzzaXLmTAaDaS4dMeTNsqT2 SsWOSZxOH7lNoOe+gcnHwVFFI5w6Lpl8SdidI+c1F4ax/dq8bhMm/QLYNhwfZ5/QMPXRW3s/i 3m0b3QFc9IWQ7dFleyXNN4CO5JXI1E0Dz0vX9hR6wOB5jd/CMo/V44pRbDb+pArX9qoDRi/mw wqP1HPSS+qNmVVp9cv/YIHXrgKEsVezCtb99jHvAracZSIefVDTdOmmlrW5qF1BoqnZTp+Tax pSbnPRuU2Anw65v5f0zf+vZIzxg3suanSojTqvBXrAudJDMQ1UUMdmHn1lL8Q5uITqsFjZhB4 FZ0O3NvOBYrWmKrvVcpx0B/vjLNxv2d+s8Fd305+2nuAUQlQl8LjcxHhWwJSDi4RAjeiPc+FP oyY405XCO5CDy4Mce4IemDaA4pJUaq6izqqfNqZ0bZPQnSsLV5EKas/nmRcv88MIY5nT6Qrs9 qZVDfHYfYErFC0ry+GgD76ju7fx2+b4qusDa6/fq9Bh8j4DJY/akkN4NRQmyOFQSQOH6Qv+Pf b2potZKcuB/fbo4Umupfp1i/nzfgwp9qLLcLH/8+ymuax5W497zRv3s+PJOWbWv42NTz/4xM9 ZfyHy3hlV17ulAL/FyiYg8QMYwlvUUU81wIKtXjFtRUDW8AX3yyAa7+QvwezesEM5XIPaVAi9 Tv9sE0kPJ9LEzVo8gvSmHYSLYyZtmo05GDmkB5VqJYJGYbI3FumK30jMm2A+yeKKrJ67CALQ1 AqJRHbkF1+v61v5JbETMmW0zdnos6A5LyRKjT72Y82r60VN0S+fc9MtT+7PKhvuCtwwSSsYXy 4mgOX9M2yGZiRZbreiw/+lmVcrwfBcOtvINJqxzHJBFGIgTtNb8jMUyQ5Xq8nPBC0+PVrReeC ywjdDNfhMU3Vf+/qg7DdS+DiXXqeFb3uclg+8MybCPgKfj3kHkttiYrv42xsef7q/POUCcWjO EB0AhpbG5OaPppI/riINxA1fir12skyBK3IhDSjN9LeqmtOmhC1SWgXBbDKzwoLmsymyjun98 YLzMZtEx4bMf936/55yi/UoQPZyHV30wvWiGkSgMacMXHXSFx40wqRKpLkEM= X-Rspamd-Queue-Id: 46dB8h47GBz3P7j X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmx.net header.s=badeba3b8450 header.b=MH7fqeUW; dmarc=none; spf=none (mx1.freebsd.org: domain of ohartmann@walstatt.org has no SPF policy when checking 212.227.17.20) smtp.mailfrom=ohartmann@walstatt.org X-Spamd-Result: default: False [-3.46 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(-0.20)[gmx.net:s=badeba3b8450]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_THREE(0.00)[4]; TO_DN_SOME(0.00)[]; IP_SCORE(-1.16)[ip: (-6.56), ipnet: 212.227.0.0/16(-1.37), asn: 8560(2.12), country: DE(-0.01)]; MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[walstatt.org]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; HAS_ORG_HEADER(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[gmx.net:+]; MIME_BASE64_TEXT(0.10)[]; R_SPF_NA(0.00)[]; RCVD_IN_DNSWL_LOW(-0.10)[20.17.227.212.list.dnswl.org : 127.0.3.1]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:8560, ipnet:212.227.0.0/16, country:DE]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Sep 2019 19:29:41 -0000 LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQ0KSGFzaDogU0hBMjU2DQoNCkFtIFR1 ZSwgMjQgU2VwIDIwMTkgMTg6MTg6MTEgKzAwMDAgKFVUQykNClJhbmRhbGwgU3Rld2FydCA8cnJz QEZyZWVCU0Qub3JnPiBzY2hyaWViOg0KDQo+IEF1dGhvcjogcnJzDQo+IERhdGU6IFR1ZSBTZXAg MjQgMTg6MTg6MTEgMjAxOQ0KPiBOZXcgUmV2aXNpb246IDM1MjY1Nw0KPiBVUkw6IGh0dHBzOi8v c3Zud2ViLmZyZWVic2Qub3JnL2NoYW5nZXNldC9iYXNlLzM1MjY1Nw0KPiANCj4gTG9nOg0KPiAg IFRoaXMgY29tbWl0IGFkZHMgQkJSIChCb3R0bGVuZWNrIEJhbmR3aWR0aCBhbmQgUlRUKSBjb25n ZXN0aW9uIGNvbnRyb2wuIFRoaXMNCj4gICBpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgVENQIHN0 YWNrICh0Y3BfYmJyLmtvKSB0aGF0IHdpbGwgYmUgYnVpbHQgb25seSBpZg0KPiAgIHlvdSBhZGQg dGhlIG1ha2Ugb3B0aW9ucyBXSVRIX0VYVFJBX1RDUF9TVEFDS1M9MSBhbmQgYWxzbyBpbmNsdWRl IHRoZSBvcHRpb24NCj4gICBUQ1BIUFRTLiBZb3UgY2FuIGFsc28gaW5jbHVkZSB0aGUgUkFURUxJ TUlUIG9wdGlvbiBpZiB5b3UgaGF2ZSBhIE5JQyBpbnRlcmZhY2UgdGhhdA0KPiAgIHN1cHBvcnRz IGhhcmR3YXJlIHBhY2luZywgQkJSIHVuZGVyc3RhbmRzIGhvdyB0byB1c2Ugc3VjaCBhIGZlYXR1 cmUuDQo+ICAgDQo+ICAgTm90ZSB0aGF0IHRoaXMgY29tbWl0IGFsc28gYWRkcyBpbiBhIGdlbmVy YWwgcHVycG9zZSB0aW1lLWZpbHRlciB3aGljaA0KPiAgIGFsbG93cyB5b3UgdG8gaGF2ZSBhIG1p bi1maWx0ZXIgb3IgbWF4LWZpbHRlci4gQSBmaWx0ZXIgYWxsb3dzIHlvdSB0bw0KPiAgIGhhdmUg YSBsb3cgKG9yIGhpZ2gpIHZhbHVlIGZvciBzb21lIHBlcmlvZCBvZiB0aW1lIGFuZCBkZWdyYWRl IHNsb3dseQ0KPiAgIHRvIGFub3RoZXIgdmFsdWUgaGFzIHRpbWUgcGFzc2VzLiBZb3UgY2FuIGZp bmQgb3V0IHRoZSBkZXRhaWxzIG9mDQo+ICAgQkJSIGJ5IGxvb2tpbmcgYXQgdGhlIG9yaWdpbmFs IHBhcGVyIGF0Og0KPiAgIA0KPiAgIGh0dHBzOi8vcXVldWUuYWNtLm9yZy9kZXRhaWwuY2ZtP2lk PTMwMjIxODQNCj4gICANCj4gICBvciBjb25zdWx0IG1hbnkgb3RoZXIgd2ViIHJlc291cmNlcyB5 b3UgY2FuIGZpbmQgb24gdGhlIHdlYg0KPiAgIHJlZmVyZW5jZWQgYnkgIkJCUiBjb25nZXN0aW9u IGNvbnRyb2wiLiBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdA0KPiAgIEJCUnYxICh3aGljaCB0aGlz IGlzKSBkb2VzIHRlbmQgdG8gdW5mYWlybmVzcyBpbiBjYXNlcyBvZiBzbWFsbA0KPiAgIGJ1ZmZl cmVkIHBhdGhzLCBhbmQgaXQgd2lsbCB1c3VhbGx5IGdldCBsZXNzIGJhbmR3aWR0aCBpbiB0aGUg Y2FzZQ0KPiAgIG9mIGxhcmdlIEJEUCBwYXRocyh3aGVuIGNvbXBldGluZyB3aXRoIG5ldy1yZW5v IG9yIGN1YmljIGZsb3dzKS4gQkJSDQo+ICAgaXMgc3RpbGwgYW4gYWN0aXZlIHJlc2VhcmNoIGFy ZWEgYW5kIHdlIGRvIHBsYW4gb24gIGltcGxlbWVudGluZyBWMg0KPiAgIG9mIEJCUiB0byBzZWUg aWYgaXQgaXMgYW4gaW1wcm92ZW1lbnQgb3ZlciBWMS4NCj4gICANCj4gICBTcG9uc29yZWQgYnk6 CU5ldGZsaXggSW5jLg0KPiAgIERpZmZlcmVudGlhbCBSZXZpc2lvbjoJaHR0cHM6Ly9yZXZpZXdz LmZyZWVic2Qub3JnL0QyMTU4Mg0KPiANCj4gQWRkZWQ6DQo+ICAgaGVhZC9zeXMva2Vybi9zdWJy X2ZpbHRlci5jICAgKGNvbnRlbnRzLCBwcm9wcyBjaGFuZ2VkKQ0KPiAgIGhlYWQvc3lzL21vZHVs ZXMvdGNwL2Jici8NCj4gICBoZWFkL3N5cy9tb2R1bGVzL3RjcC9iYnIvTWFrZWZpbGUgICAoY29u dGVudHMsIHByb3BzIGNoYW5nZWQpDQo+ICAgaGVhZC9zeXMvbmV0aW5ldC90Y3Bfc3RhY2tzL2Ji ci5jICAgKGNvbnRlbnRzLCBwcm9wcyBjaGFuZ2VkKQ0KPiAgIGhlYWQvc3lzL25ldGluZXQvdGNw X3N0YWNrcy90Y3BfYmJyLmggICAoY29udGVudHMsIHByb3BzIGNoYW5nZWQpDQo+ICAgaGVhZC9z eXMvc3lzL3RpbV9maWx0ZXIuaCAgIChjb250ZW50cywgcHJvcHMgY2hhbmdlZCkNCj4gTW9kaWZp ZWQ6DQo+ICAgaGVhZC9zeXMvY29uZi9maWxlcw0KPiAgIGhlYWQvc3lzL21vZHVsZXMvdGNwL01h a2VmaWxlDQo+ICAgaGVhZC9zeXMvbmV0aW5ldC9pcF9vdXRwdXQuYw0KPiAgIGhlYWQvc3lzL25l dGluZXQvaXBfdmFyLmgNCj4gICBoZWFkL3N5cy9uZXRpbmV0L3RjcC5oDQo+ICAgaGVhZC9zeXMv bmV0aW5ldC90Y3Bfc3RhY2tzL3JhY2suYw0KPiAgIGhlYWQvc3lzL25ldGluZXQvdGNwX3N0YWNr cy9yYWNrX2Jicl9jb21tb24uYw0KPiAgIGhlYWQvc3lzL25ldGluZXQvdGNwX3N0YWNrcy9yYWNr X2Jicl9jb21tb24uaA0KPiAgIGhlYWQvc3lzL25ldGluZXQvdGNwX3N0YWNrcy9zYWNrX2ZpbHRl ci5jDQo+ICAgaGVhZC9zeXMvbmV0aW5ldC90Y3Bfc3RhY2tzL3NhY2tfZmlsdGVyLmgNCj4gICBo ZWFkL3N5cy9uZXRpbmV0L3RjcF9zdGFja3MvdGNwX3JhY2suaA0KPiAgIGhlYWQvc3lzL3N5cy9t YnVmLmgNCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5cy9jb25mL2ZpbGVzDQo+ID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQ0KPiAtLS0gaGVhZC9zeXMvY29uZi9maWxlcwlUdWUgU2VwIDI0IDE3OjA2OjMy IDIwMTkJKHIzNTI2NTYpDQo+ICsrKyBoZWFkL3N5cy9jb25mL2ZpbGVzCVR1ZSBTZXAgMjQgMTg6 MTg6MTEgMjAxOQkocjM1MjY1NykNCj4gQEAgLTM4MDgsNiArMzgwOCw3IEBAIGtlcm4vc3Vicl9l cG9jaC5jCQlzdGFuZGFyZA0KPiAga2Vybi9zdWJyX2V2ZW50aGFuZGxlci5jCXN0YW5kYXJkDQo+ ICBrZXJuL3N1YnJfZmF0dGltZS5jCQlzdGFuZGFyZA0KPiAga2Vybi9zdWJyX2Zpcm13YXJlLmMJ CW9wdGlvbmFsIGZpcm13YXJlDQo+ICtrZXJuL3N1YnJfZmlsdGVyLmMgICAgICAgICAgICAgIHN0 YW5kYXJkDQo+ICBrZXJuL3N1YnJfZ3Rhc2txdWV1ZS5jCQlzdGFuZGFyZA0KPiAga2Vybi9zdWJy X2hhc2guYwkJc3RhbmRhcmQNCj4gIGtlcm4vc3Vicl9oaW50cy5jCQlzdGFuZGFyZA0KPiANCj4g QWRkZWQ6IGhlYWQvc3lzL2tlcm4vc3Vicl9maWx0ZXIuYw0KPiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0NCj4gLS0tIC9kZXYvbnVsbAkwMDowMDowMCAxOTcwCShlbXB0eSwgYmVjYXVzZSBmaWxlIGlz IG5ld2x5IGFkZGVkKQ0KPiArKysgaGVhZC9zeXMva2Vybi9zdWJyX2ZpbHRlci5jCVR1ZSBTZXAg MjQgMTg6MTg6MTEgMjAxOQkocjM1MjY1NykNCj4gQEAgLTAsMCArMSw0ODIgQEANCj4gKy8qLQ0K PiArICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMTkgTmV0ZmxpeCwgSW5jLg0KPiArICogQWxsIHJp Z2h0cyByZXNlcnZlZC4NCj4gKyAqDQo+ICsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gKyAqIG1vZGlmaWNhdGlv biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0K PiArICogYXJlIG1ldDoNCj4gKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgKiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+ICsgKiAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv cHlyaWdodA0KPiArICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KPiArICogICAgZG9jdW1lbnRhdGlvbiBhbmQv b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gKyAq DQo+ICsgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRS SUJVVE9SUyBgYEFTIElTJycgQU5EDQo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCj4gKyAqIElNUExJRUQg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFDQo+ICsgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFV VEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFDQo+ICsgKiBGT1IgQU5ZIERJUkVDVCwgSU5E SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTA0K PiArICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U IE9GIFNVQlNUSVRVVEUgR09PRFMNCj4gKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KPiArICogSE9XRVZFUiBD QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU LCBTVFJJQ1QNCj4gKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkNCj4gKyAqIE9VVCBPRiBUSEUgVVNFIE9G IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCj4g KyAqIFNVQ0ggREFNQUdFLg0KPiArICovDQo+ICsNCj4gKy8qDQo+ICsgKiBBdXRob3I6IFJhbmRh bGwgU3Rld2FydCA8cnJzQG5ldGZsaXguY29tPg0KPiArICovDQo+ICsjaW5jbHVkZSA8c3lzL2Nk ZWZzLmg+DQo+ICtfX0ZCU0RJRCgiJEZyZWVCU0QkIik7DQo+ICsjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+DQo+ICsjaW5jbHVkZSA8c3lzL3RpbWUuaD4NCj4gKyNpbmNsdWRlIDxzeXMvZXJybm8uaD4N Cj4gKyNpbmNsdWRlIDxzeXMvdGltX2ZpbHRlci5oPg0KPiArDQo+ICt2b2lkDQo+ICtyZXNldF90 aW1lKHN0cnVjdCB0aW1lX2ZpbHRlciAqdGYsIHVpbnQzMl90IHRpbWVfbGVuKQ0KPiArew0KPiAr CXRmLT5jdXJfdGltZV9saW1pdCA9IHRpbWVfbGVuOw0KPiArfQ0KPiArDQo+ICt2b2lkDQo+ICty ZXNldF90aW1lX3NtYWxsKHN0cnVjdCB0aW1lX2ZpbHRlcl9zbWFsbCAqdGYsIHVpbnQzMl90IHRp bWVfbGVuKQ0KPiArew0KPiArCXRmLT5jdXJfdGltZV9saW1pdCA9IHRpbWVfbGVuOw0KPiArfQ0K PiArDQo+ICsvKg0KPiArICogQSB0aW1lIGZpbHRlciBjYW4gYmUgYSBmaWx0ZXIgZm9yIE1JTiBv ciBNQVguIA0KPiArICogWW91IGNhbGwgc2V0dXBfdGltZV9maWx0ZXIoKSB3aXRoIHRoZSBwb2lu dGVyIHRvDQo+ICsgKiB0aGUgZmlsdGVyIHN0cnVjdHVyZSwgdGhlIHR5cGUgKEZJTFRFUl9UWVBF X01JTi9NQVgpIGFuZA0KPiArICogdGhlIHRpbWUgbGVuZ3RoLiBZb3UgY2FuIG9wdGlvbmFsbHkg cmVzZXQgdGhlIHRpbWUgbGVuZ3RoDQo+ICsgKiBsYXRlciB3aXRoIHJlc2V0X3RpbWUoKS4NCj4g KyAqDQo+ICsgKiBZb3UgZ2VuZXJhbGx5IGNhbGwgYXBwbHlfZmlsdGVyX3h4eCgpIHRvIGFwcGx5 IHRoZSBuZXcgdmFsdWUNCj4gKyAqIHRvIHRoZSBmaWx0ZXIuIFlvdSBhbHNvIHByb3ZpZGUgYSB0 aW1lIChub3cpLiBUaGUgZmlsdGVyIHdpbGwNCj4gKyAqIGFnZSBvdXQgZW50cmllcyBiYXNlZCBv biB0aGUgdGltZSBub3cgYW5kIHlvdXIgdGltZSBsaW1pdA0KPiArICogc28gdGhhdCB5b3UgYXJl IGFsd2F5cyBtYWludGFpbmluZyB0aGUgbWluIG9yIG1heCBpbiB0aGF0DQo+ICsgKiB3aW5kb3cg b2YgdGltZS4gVGltZSBpcyBhIHJlbGF0aXZlIHRoaW5nLCBpdCBtaWdodCBiZSB0aWNrcw0KPiAr ICogaW4gbWlsbGlzZWNvbmRzLCBpdCBtaWdodCBiZSByb3VuZCB0cmlwIHRpbWVzLCBpdHMgcmVh bGx5DQo+ICsgKiB1cCB0byB5b3UgdG8gZGVjaWRlIHdoYXQgaXQgaXMuDQo+ICsgKg0KPiArICog VG8gYWNjZXNzIHRoZSBjdXJyZW50IGZsaXRlcmVkIHZhbHVlIHlvdSBjYW4gdXNlIHRoZSBtYWNy bw0KPiArICogZ2V0X2ZpbHRlcl92YWx1ZSgpIHdoaWNoIHJldHVybnMgdGhlIGNvcnJlY3QgZW50 cnkgdGhhdA0KPiArICogaGFzIHRoZSAiY3VycmVudCIgdmFsdWUgaW4gdGhlIGZpbHRlci4NCj4g KyAqDQo+ICsgKiBPbmUgdGhpbmcgdGhhdCB1c2VkIHRvIGJlIGhlcmUgaXMgYSBzaW5nbGUgYXBw bHlfZmlsdGVyKCkuIEJ1dA0KPiArICogdGhpcyBtZWFudCB0aGF0IHdlIHRoZW4gaGFkIHRvIHN0 b3JlIHRoZSB0eXBlIG9mIGZpbHRlciBpbg0KPiArICogdGhlIHRpbWVfZmlsdGVyIHN0cnVjdHVy ZS4gSW4gb3JkZXIgdG8ga2VlcCBpdCBhdCBhIGNhY2hlDQo+ICsgKiBsaW5lIHNpemUgSSBzcGxp dCBpdCB0byB0d28gZnVuY3Rpb25zLiANCj4gKyAqDQo+ICsgKi8NCj4gK2ludA0KPiArc2V0dXBf dGltZV9maWx0ZXIoc3RydWN0IHRpbWVfZmlsdGVyICp0ZiwgaW50IGZpbF90eXBlLCB1aW50MzJf dCB0aW1lX2xlbikNCj4gK3sNCj4gKwl1aW50NjRfdCBzZXRfdmFsOw0KPiArCWludCBpOw0KPiAr CQ0KPiArCS8qIA0KPiArCSAqIFlvdSBtdXN0IHNwZWNpZnkgZWl0aGVyIGEgTUlOIG9yIE1BWCBm aWx0ZXIsDQo+ICsJICogdGhvdWdoIGl0cyB1cCB0byB0aGUgdXNlciB0byB1c2UgdGhlIGNvcnJl Y3QNCj4gKwkgKiBhcHBseS4NCj4gKwkgKi8NCj4gKwlpZiAoKGZpbF90eXBlICE9IEZJTFRFUl9U WVBFX01JTikgJiYNCj4gKwkgICAgKGZpbF90eXBlICE9IEZJTFRFUl9UWVBFX01BWCkpDQo+ICsJ CXJldHVybihFSU5WQUwpOw0KPiArDQo+ICsJaWYgKHRpbWVfbGVuIDwgTlVNX0ZJTFRFUl9FTlRS SUVTKQ0KPiArCQlyZXR1cm4oRUlOVkFMKTsNCj4gKwkJICAgICAgIA0KPiArCWlmIChmaWxfdHlw ZSA9PSBGSUxURVJfVFlQRV9NSU4pDQo+ICsJCXNldF92YWwgPSAweGZmZmZmZmZmZmZmZmZmZmY7 DQo+ICsJZWxzZQ0KPiArCQlzZXRfdmFsID0gMDsNCj4gKw0KPiArCWZvcihpPTA7IGk8TlVNX0ZJ TFRFUl9FTlRSSUVTOyBpKyspIHsNCj4gKwkJdGYtPmVudHJpZXNbaV0udmFsdWUgPSBzZXRfdmFs Ow0KPiArCQl0Zi0+ZW50cmllc1tpXS50aW1lX3VwID0gMDsNCj4gKwl9DQo+ICsJdGYtPmN1cl90 aW1lX2xpbWl0ID0gdGltZV9sZW47DQo+ICsJcmV0dXJuKDApOw0KPiArfQ0KPiArDQo+ICtpbnQN Cj4gK3NldHVwX3RpbWVfZmlsdGVyX3NtYWxsKHN0cnVjdCB0aW1lX2ZpbHRlcl9zbWFsbCAqdGYs IGludCBmaWxfdHlwZSwgdWludDMyX3QgdGltZV9sZW4pDQo+ICt7DQo+ICsJdWludDMyX3Qgc2V0 X3ZhbDsNCj4gKwlpbnQgaTsNCj4gKwkNCj4gKwkvKiANCj4gKwkgKiBZb3UgbXVzdCBzcGVjaWZ5 IGVpdGhlciBhIE1JTiBvciBNQVggZmlsdGVyLA0KPiArCSAqIHRob3VnaCBpdHMgdXAgdG8gdGhl IHVzZXIgdG8gdXNlIHRoZSBjb3JyZWN0DQo+ICsJICogYXBwbHkuDQo+ICsJICovDQo+ICsJaWYg KChmaWxfdHlwZSAhPSBGSUxURVJfVFlQRV9NSU4pICYmDQo+ICsJICAgIChmaWxfdHlwZSAhPSBG SUxURVJfVFlQRV9NQVgpKQ0KPiArCQlyZXR1cm4oRUlOVkFMKTsNCj4gKw0KPiArCWlmICh0aW1l X2xlbiA8IE5VTV9GSUxURVJfRU5UUklFUykNCj4gKwkJcmV0dXJuKEVJTlZBTCk7DQo+ICsJCSAg ICAgICANCj4gKwlpZiAoZmlsX3R5cGUgPT0gRklMVEVSX1RZUEVfTUlOKQ0KPiArCQlzZXRfdmFs ID0gMHhmZmZmZmZmZjsNCj4gKwllbHNlDQo+ICsJCXNldF92YWwgPSAwOw0KPiArDQo+ICsJZm9y KGk9MDsgaTxOVU1fRklMVEVSX0VOVFJJRVM7IGkrKykgew0KPiArCQl0Zi0+ZW50cmllc1tpXS52 YWx1ZSA9IHNldF92YWw7DQo+ICsJCXRmLT5lbnRyaWVzW2ldLnRpbWVfdXAgPSAwOw0KPiArCX0N Cj4gKwl0Zi0+Y3VyX3RpbWVfbGltaXQgPSB0aW1lX2xlbjsNCj4gKwlyZXR1cm4oMCk7DQo+ICt9 DQo+ICsNCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK2NoZWNrX3VwZGF0ZV90aW1lcyhzdHJ1Y3Qg dGltZV9maWx0ZXIgKnRmLCB1aW50NjRfdCB2YWx1ZSwgdWludDMyX3Qgbm93KQ0KPiArew0KPiAr CWludCBpLCBqLCBmbmQ7DQo+ICsJdWludDMyX3QgdGltOw0KPiArCXVpbnQzMl90IHRpbWVfbGlt aXQ7DQo+ICsJZm9yKGk9MDsgaTwoTlVNX0ZJTFRFUl9FTlRSSUVTLTEpOyBpKyspIHsNCj4gKwkJ dGltID0gbm93IC0gdGYtPmVudHJpZXNbaV0udGltZV91cDsNCj4gKwkJdGltZV9saW1pdCA9ICh0 Zi0+Y3VyX3RpbWVfbGltaXQgKg0KPiAoTlVNX0ZJTFRFUl9FTlRSSUVTLWkpKS9OVU1fRklMVEVS X0VOVFJJRVM7DQo+ICsJCWlmICh0aW0gPj0gdGltZV9saW1pdCkgew0KPiArCQkJZm5kID0gMDsN Cj4gKwkJCWZvcihqPShpKzEpOyBqPE5VTV9GSUxURVJfRU5UUklFUzsgaisrKSB7DQo+ICsJCQkJ aWYgKHRmLT5lbnRyaWVzW2ldLnRpbWVfdXAgPCB0Zi0+ZW50cmllc1tqXS50aW1lX3VwKSB7DQo+ ICsJCQkJCXRmLT5lbnRyaWVzW2ldLnZhbHVlID0gdGYtPmVudHJpZXNbal0udmFsdWU7DQo+ICsJ CQkJCXRmLT5lbnRyaWVzW2ldLnRpbWVfdXAgPSB0Zi0+ZW50cmllc1tqXS50aW1lX3VwOw0KPiAr CQkJCQlmbmQgPSAxOw0KPiArCQkJCQlicmVhazsNCj4gKwkJCQl9DQo+ICsJCQl9DQo+ICsJCQlp ZiAoZm5kID09IDApIHsNCj4gKwkJCQkvKiBOb3RoaW5nIGJ1dCB0aGUgc2FtZSBvbGQgZW50cnkg Ki8NCj4gKwkJCQl0Zi0+ZW50cmllc1tpXS52YWx1ZSA9IHZhbHVlOw0KPiArCQkJCXRmLT5lbnRy aWVzW2ldLnRpbWVfdXAgPSBub3c7DQo+ICsJCQl9DQo+ICsJCX0NCj4gKwl9DQo+ICsJaSA9IE5V TV9GSUxURVJfRU5UUklFUy0xOw0KPiArCXRpbSA9IG5vdyAtIHRmLT5lbnRyaWVzW2ldLnRpbWVf dXA7DQo+ICsJdGltZV9saW1pdCA9ICh0Zi0+Y3VyX3RpbWVfbGltaXQgKiAoTlVNX0ZJTFRFUl9F TlRSSUVTLWkpKS9OVU1fRklMVEVSX0VOVFJJRVM7DQo+ICsJaWYgKHRpbSA+PSB0aW1lX2xpbWl0 KSB7DQo+ICsJCXRmLT5lbnRyaWVzW2ldLnZhbHVlID0gdmFsdWU7DQo+ICsJCXRmLT5lbnRyaWVz W2ldLnRpbWVfdXAgPSBub3c7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiAr Y2hlY2tfdXBkYXRlX3RpbWVzX3NtYWxsKHN0cnVjdCB0aW1lX2ZpbHRlcl9zbWFsbCAqdGYsIHVp bnQzMl90IHZhbHVlLCB1aW50MzJfdCBub3cpDQo+ICt7DQo+ICsJaW50IGksIGosIGZuZDsNCj4g Kwl1aW50MzJfdCB0aW07DQo+ICsJdWludDMyX3QgdGltZV9saW1pdDsNCj4gKwlmb3IoaT0wOyBp PChOVU1fRklMVEVSX0VOVFJJRVMtMSk7IGkrKykgew0KPiArCQl0aW0gPSBub3cgLSB0Zi0+ZW50 cmllc1tpXS50aW1lX3VwOw0KPiArCQl0aW1lX2xpbWl0ID0gKHRmLT5jdXJfdGltZV9saW1pdCAq DQo+IChOVU1fRklMVEVSX0VOVFJJRVMtaSkpL05VTV9GSUxURVJfRU5UUklFUzsNCj4gKwkJaWYg KHRpbSA+PSB0aW1lX2xpbWl0KSB7DQo+ICsJCQlmbmQgPSAwOw0KPiArCQkJZm9yKGo9KGkrMSk7 IGo8TlVNX0ZJTFRFUl9FTlRSSUVTOyBqKyspIHsNCj4gKwkJCQlpZiAodGYtPmVudHJpZXNbaV0u dGltZV91cCA8IHRmLT5lbnRyaWVzW2pdLnRpbWVfdXApIHsNCj4gKwkJCQkJdGYtPmVudHJpZXNb aV0udmFsdWUgPSB0Zi0+ZW50cmllc1tqXS52YWx1ZTsNCj4gKwkJCQkJdGYtPmVudHJpZXNbaV0u dGltZV91cCA9IHRmLT5lbnRyaWVzW2pdLnRpbWVfdXA7DQo+ICsJCQkJCWZuZCA9IDE7DQo+ICsJ CQkJCWJyZWFrOw0KPiArCQkJCX0NCj4gKwkJCX0NCj4gKwkJCWlmIChmbmQgPT0gMCkgew0KPiAr CQkJCS8qIE5vdGhpbmcgYnV0IHRoZSBzYW1lIG9sZCBlbnRyeSAqLw0KPiArCQkJCXRmLT5lbnRy aWVzW2ldLnZhbHVlID0gdmFsdWU7DQo+ICsJCQkJdGYtPmVudHJpZXNbaV0udGltZV91cCA9IG5v dzsNCj4gKwkJCX0NCj4gKwkJfQ0KPiArCX0NCj4gKwlpID0gTlVNX0ZJTFRFUl9FTlRSSUVTLTE7 DQo+ICsJdGltID0gbm93IC0gdGYtPmVudHJpZXNbaV0udGltZV91cDsNCj4gKwl0aW1lX2xpbWl0 ID0gKHRmLT5jdXJfdGltZV9saW1pdCAqIChOVU1fRklMVEVSX0VOVFJJRVMtaSkpL05VTV9GSUxU RVJfRU5UUklFUzsNCj4gKwlpZiAodGltID49IHRpbWVfbGltaXQpIHsNCj4gKwkJdGYtPmVudHJp ZXNbaV0udmFsdWUgPSB2YWx1ZTsNCj4gKwkJdGYtPmVudHJpZXNbaV0udGltZV91cCA9IG5vdzsN Cj4gKwl9DQo+ICt9DQo+ICsNCj4gKw0KPiArDQo+ICt2b2lkDQo+ICtmaWx0ZXJfcmVkdWNlX2J5 KHN0cnVjdCB0aW1lX2ZpbHRlciAqdGYsIHVpbnQ2NF90IHJlZHVjZV9ieSwgdWludDMyX3Qgbm93 KQ0KPiArew0KPiArCWludCBpOw0KPiArCS8qIA0KPiArCSAqIFJlZHVjZSBvdXIgZmlsdGVyIG1h aW4gYnkgcmVkdWNlX2J5IGFuZA0KPiArCSAqIHVwZGF0ZSBpdHMgdGltZS4gVGhlbiB3YWxrIG90 aGVyJ3MgYW5kDQo+ICsJICogbWFrZSB0aGVtIHRoZSBuZXcgdmFsdWUgdG9vLg0KPiArCSAqLw0K PiArCWlmIChyZWR1Y2VfYnkgPCB0Zi0+ZW50cmllc1swXS52YWx1ZSkNCj4gKwkJdGYtPmVudHJp ZXNbMF0udmFsdWUgLT0gcmVkdWNlX2J5Ow0KPiArCWVsc2UNCj4gKwkJdGYtPmVudHJpZXNbMF0u dmFsdWUgPSAwOw0KPiArCXRmLT5lbnRyaWVzWzBdLnRpbWVfdXAgPSBub3c7DQo+ICsJZm9yKGk9 MTsgaTxOVU1fRklMVEVSX0VOVFJJRVM7IGkrKykgew0KPiArCQl0Zi0+ZW50cmllc1tpXS52YWx1 ZSA9IHRmLT5lbnRyaWVzWzBdLnZhbHVlOw0KPiArCQl0Zi0+ZW50cmllc1tpXS50aW1lX3VwID0g bm93Ow0KPiArCX0NCj4gK30NCj4gKw0KPiArdm9pZA0KPiArZmlsdGVyX3JlZHVjZV9ieV9zbWFs bChzdHJ1Y3QgdGltZV9maWx0ZXJfc21hbGwgKnRmLCB1aW50MzJfdCByZWR1Y2VfYnksIHVpbnQz Ml90IG5vdykNCj4gK3sNCj4gKwlpbnQgaTsNCj4gKwkvKiANCj4gKwkgKiBSZWR1Y2Ugb3VyIGZp bHRlciBtYWluIGJ5IHJlZHVjZV9ieSBhbmQNCj4gKwkgKiB1cGRhdGUgaXRzIHRpbWUuIFRoZW4g d2FsayBvdGhlcidzIGFuZA0KPiArCSAqIG1ha2UgdGhlbSB0aGUgbmV3IHZhbHVlIHRvby4NCj4g KwkgKi8NCj4gKwlpZiAocmVkdWNlX2J5IDwgdGYtPmVudHJpZXNbMF0udmFsdWUpDQo+ICsJCXRm LT5lbnRyaWVzWzBdLnZhbHVlIC09IHJlZHVjZV9ieTsNCj4gKwllbHNlDQo+ICsJCXRmLT5lbnRy aWVzWzBdLnZhbHVlID0gMDsNCj4gKwl0Zi0+ZW50cmllc1swXS50aW1lX3VwID0gbm93Ow0KPiAr CWZvcihpPTE7IGk8TlVNX0ZJTFRFUl9FTlRSSUVTOyBpKyspIHsNCj4gKwkJdGYtPmVudHJpZXNb aV0udmFsdWUgPSB0Zi0+ZW50cmllc1swXS52YWx1ZTsNCj4gKwkJdGYtPmVudHJpZXNbaV0udGlt ZV91cCA9IG5vdzsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3ZvaWQNCj4gK2ZpbHRlcl9pbmNyZWFz ZV9ieShzdHJ1Y3QgdGltZV9maWx0ZXIgKnRmLCB1aW50NjRfdCBpbmNyX2J5LCB1aW50MzJfdCBu b3cpDQo+ICt7DQo+ICsJaW50IGk7DQo+ICsJLyogDQo+ICsJICogSW5jcmVhc2Ugb3VyIGZpbHRl ciBtYWluIGJ5IGluY3JfYnkgYW5kDQo+ICsJICogdXBkYXRlIGl0cyB0aW1lLiBUaGVuIHdhbGsg b3RoZXIncyBhbmQNCj4gKwkgKiBtYWtlIHRoZW0gdGhlIG5ldyB2YWx1ZSB0b28uDQo+ICsJICov DQo+ICsJdGYtPmVudHJpZXNbMF0udmFsdWUgKz0gaW5jcl9ieTsNCj4gKwl0Zi0+ZW50cmllc1sw XS50aW1lX3VwID0gbm93Ow0KPiArCWZvcihpPTE7IGk8TlVNX0ZJTFRFUl9FTlRSSUVTOyBpKysp IHsNCj4gKwkJdGYtPmVudHJpZXNbaV0udmFsdWUgPSB0Zi0+ZW50cmllc1swXS52YWx1ZTsNCj4g KwkJdGYtPmVudHJpZXNbaV0udGltZV91cCA9IG5vdzsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3Zv aWQNCj4gK2ZpbHRlcl9pbmNyZWFzZV9ieV9zbWFsbChzdHJ1Y3QgdGltZV9maWx0ZXJfc21hbGwg KnRmLCB1aW50MzJfdCBpbmNyX2J5LCB1aW50MzJfdCBub3cpDQo+ICt7DQo+ICsJaW50IGk7DQo+ ICsJLyogDQo+ICsJICogSW5jcmVhc2Ugb3VyIGZpbHRlciBtYWluIGJ5IGluY3JfYnkgYW5kDQo+ ICsJICogdXBkYXRlIGl0cyB0aW1lLiBUaGVuIHdhbGsgb3RoZXIncyBhbmQNCj4gKwkgKiBtYWtl IHRoZW0gdGhlIG5ldyB2YWx1ZSB0b28uDQo+ICsJICovDQo+ICsJdGYtPmVudHJpZXNbMF0udmFs dWUgKz0gaW5jcl9ieTsNCj4gKwl0Zi0+ZW50cmllc1swXS50aW1lX3VwID0gbm93Ow0KPiArCWZv cihpPTE7IGk8TlVNX0ZJTFRFUl9FTlRSSUVTOyBpKyspIHsNCj4gKwkJdGYtPmVudHJpZXNbaV0u dmFsdWUgPSB0Zi0+ZW50cmllc1swXS52YWx1ZTsNCj4gKwkJdGYtPmVudHJpZXNbaV0udGltZV91 cCA9IG5vdzsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3ZvaWQNCj4gK2ZvcndhcmRfZmlsdGVyX2Ns b2NrKHN0cnVjdCB0aW1lX2ZpbHRlciAqdGYsIHVpbnQzMl90IHRpY2tzX2ZvcndhcmQpDQo+ICt7 DQo+ICsJLyoNCj4gKwkgKiBCcmluZyBmb3J3YXJkIGFsbCB0aW1lIHZhbHVlcyBieSBOIHRpY2tz LiBUaGlzDQo+ICsJICogcG9zdHBvbmVzIGV4cGlyaW5nIHNsb3RzIGJ5IHRoYXQgYW1vdW50Lg0K PiArCSAqLw0KPiArCWludCBpOw0KPiArDQo+ICsJZm9yKGk9MDsgaTxOVU1fRklMVEVSX0VOVFJJ RVM7IGkrKykgew0KPiArCQl0Zi0+ZW50cmllc1tpXS50aW1lX3VwICs9IHRpY2tzX2ZvcndhcmQ7 DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICsNCj4gK3ZvaWQNCj4gK2ZvcndhcmRfZmlsdGVyX2Nsb2Nr X3NtYWxsKHN0cnVjdCB0aW1lX2ZpbHRlcl9zbWFsbCAqdGYsIHVpbnQzMl90IHRpY2tzX2Zvcndh cmQpDQo+ICt7DQo+ICsJLyoNCj4gKwkgKiBCcmluZyBmb3J3YXJkIGFsbCB0aW1lIHZhbHVlcyBi eSBOIHRpY2tzLiBUaGlzDQo+ICsJICogcG9zdHBvbmVzIGV4cGlyaW5nIHNsb3RzIGJ5IHRoYXQg YW1vdW50Lg0KPiArCSAqLw0KPiArCWludCBpOw0KPiArDQo+ICsJZm9yKGk9MDsgaTxOVU1fRklM VEVSX0VOVFJJRVM7IGkrKykgew0KPiArCQl0Zi0+ZW50cmllc1tpXS50aW1lX3VwICs9IHRpY2tz X2ZvcndhcmQ7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICsNCj4gK3ZvaWQNCj4gK3RpY2tfZmlsdGVy X2Nsb2NrKHN0cnVjdCB0aW1lX2ZpbHRlciAqdGYsIHVpbnQzMl90IG5vdykNCj4gK3sNCj4gKwlp bnQgaTsNCj4gKwl1aW50MzJfdCB0aW0sIHRpbWVfbGltaXQ7DQo+ICsNCj4gKwkvKg0KPiArCSAq IFdlIHN0YXJ0IGF0IHR3byBwb3NpdGlvbnMgYmFjay4gVGhpcw0KPiArCSAqIGlzIGJlY2F1c2Ug dGhlIG9sZGVzdCB3b3JzdCB2YWx1ZSBpcw0KPiArCSAqIHByZXNlcnZlZCBhbHdheXMsIGkuZS4g aXQgY2FuJ3QgZXhwaXJlDQo+ICsJICogZHVlIHRvIGNsb2NrIHRpY2tpbmcgd2l0aCBubyB1cGRh dGVkIHZhbHVlLg0KPiArCSAqDQo+ICsJICogVGhlIG90aGVyIGNob2ljZSB3b3VsZCBiZSB0byBm aWxsIGl0IGluIHdpdGgNCj4gKwkgKiB6ZXJvLCBidXQgSSBkb24ndCBsaWtlIHRoYXQgb3B0aW9u IHNpbmNlDQo+ICsJICogc29tZSBtZWFzdXJlbWVudCBpcyBiZXR0ZXIgdGhhbiBub25lIChldmVu DQo+ICsJICogaWYgaXRzIHlvdXIgb2xkZXN0IG1lYXN1cm1lbnQpLg0KPiArCSAqLw0KPiArCWZv cihpPShOVU1fRklMVEVSX0VOVFJJRVMtMik7IGk+PTAgOyBpLS0pIHsNCj4gKwkJdGltID0gbm93 IC0gdGYtPmVudHJpZXNbaV0udGltZV91cDsNCj4gKwkJdGltZV9saW1pdCA9ICh0Zi0+Y3VyX3Rp bWVfbGltaXQgKg0KPiAoTlVNX0ZJTFRFUl9FTlRSSUVTLWkpKS9OVU1fRklMVEVSX0VOVFJJRVM7 DQo+ICsJCWlmICh0aW0gPj0gdGltZV9saW1pdCkgew0KPiArCQkJLyogDQo+ICsJCQkgKiBUaGlz IGVudHJ5IGlzIGV4cGlyZWQsIHB1bGwgZG93bg0KPiArCQkJICogdGhlIG5leHQgb25lIHVwLg0K PiArCQkJICovDQo+ICsJCQl0Zi0+ZW50cmllc1tpXS52YWx1ZSA9IHRmLT5lbnRyaWVzWyhpKzEp XS52YWx1ZTsNCj4gKwkJCXRmLT5lbnRyaWVzW2ldLnRpbWVfdXAgPSB0Zi0+ZW50cmllc1soaSsx KV0udGltZV91cDsNCj4gKwkJfQ0KPiArDQo+ICsJfQ0KPiArfQ0KPiArDQo+ICt2b2lkDQo+ICt0 aWNrX2ZpbHRlcl9jbG9ja19zbWFsbChzdHJ1Y3QgdGltZV9maWx0ZXJfc21hbGwgKnRmLCB1aW50 MzJfdCBub3cpDQo+ICt7DQo+ICsJaW50IGk7DQo+ICsJdWludDMyX3QgdGltLCB0aW1lX2xpbWl0 Ow0KPiArDQo+ICsJLyoNCj4gKwkgKiBXZSBzdGFydCBhdCB0d28gcG9zaXRpb25zIGJhY2suIFRo aXMNCj4gKwkgKiBpcyBiZWNhdXNlIHRoZSBvbGRlc3Qgd29yc3QgdmFsdWUgaXMNCj4gKwkgKiBw cmVzZXJ2ZWQgYWx3YXlzLCBpLmUuIGl0IGNhbid0IGV4cGlyZQ0KPiArCSAqIGR1ZSB0byBjbG9j ayB0aWNraW5nIHdpdGggbm8gdXBkYXRlZCB2YWx1ZS4NCj4gKwkgKg0KPiArCSAqIFRoZSBvdGhl ciBjaG9pY2Ugd291bGQgYmUgdG8gZmlsbCBpdCBpbiB3aXRoDQo+ICsJICogemVybywgYnV0IEkg ZG9uJ3QgbGlrZSB0aGF0IG9wdGlvbiBzaW5jZQ0KPiArCSAqIHNvbWUgbWVhc3VyZW1lbnQgaXMg YmV0dGVyIHRoYW4gbm9uZSAoZXZlbg0KPiArCSAqIGlmIGl0cyB5b3VyIG9sZGVzdCBtZWFzdXJt ZW50KS4NCj4gKwkgKi8NCj4gKwlmb3IoaT0oTlVNX0ZJTFRFUl9FTlRSSUVTLTIpOyBpPj0wIDsg aS0tKSB7DQo+ICsJCXRpbSA9IG5vdyAtIHRmLT5lbnRyaWVzW2ldLnRpbWVfdXA7DQo+ICsJCXRp bWVfbGltaXQgPSAodGYtPmN1cl90aW1lX2xpbWl0ICoNCj4gKE5VTV9GSUxURVJfRU5UUklFUy1p KSkvTlVNX0ZJTFRFUl9FTlRSSUVTOw0KPiArCQlpZiAodGltID49IHRpbWVfbGltaXQpIHsNCj4g KwkJCS8qIA0KPiArCQkJICogVGhpcyBlbnRyeSBpcyBleHBpcmVkLCBwdWxsIGRvd24NCj4gKwkJ CSAqIHRoZSBuZXh0IG9uZSB1cC4NCj4gKwkJCSAqLw0KPiArCQkJdGYtPmVudHJpZXNbaV0udmFs dWUgPSB0Zi0+ZW50cmllc1soaSsxKV0udmFsdWU7DQo+ICsJCQl0Zi0+ZW50cmllc1tpXS50aW1l X3VwID0gdGYtPmVudHJpZXNbKGkrMSldLnRpbWVfdXA7DQo+ICsJCX0NCj4gKw0KPiArCX0NCj4g K30NCj4gKw0KPiArdWludDMyX3QNCj4gK2FwcGx5X2ZpbHRlcl9taW4oc3RydWN0IHRpbWVfZmls dGVyICp0ZiwgdWludDY0X3QgdmFsdWUsIHVpbnQzMl90IG5vdykNCj4gK3sNCj4gKwlpbnQgaSwg ajsNCj4gKwkNCj4gKwlpZiAodmFsdWUgPD0gdGYtPmVudHJpZXNbMF0udmFsdWUpIHsNCj4gKwkJ LyogWmFwIHRoZW0gYWxsICovDQo+ICsJCWZvcihpPTA7IGk8TlVNX0ZJTFRFUl9FTlRSSUVTOyBp KyspIHsNCj4gKwkJCXRmLT5lbnRyaWVzW2ldLnZhbHVlID0gdmFsdWU7DQo+ICsJCQl0Zi0+ZW50 cmllc1tpXS50aW1lX3VwID0gbm93Ow0KPiArCQl9DQo+ICsJCXJldHVybiAodGYtPmVudHJpZXNb MF0udmFsdWUpOw0KPiArCX0NCj4gKwlmb3IgKGo9MTsgajxOVU1fRklMVEVSX0VOVFJJRVM7IGor Kykgew0KPiArCQlpZiAodmFsdWUgPD0gdGYtPmVudHJpZXNbal0udmFsdWUpIHsNCj4gKwkJCWZv cihpPWo7IGk8TlVNX0ZJTFRFUl9FTlRSSUVTOyBpKyspIHsNCj4gKwkJCQl0Zi0+ZW50cmllc1tp XS52YWx1ZSA9IHZhbHVlOw0KPiArCQkJCXRmLT5lbnRyaWVzW2ldLnRpbWVfdXAgPSBub3c7DQo+ ICsJCQl9DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0KPiArCX0NCj4gKwljaGVja191cGRhdGVfdGlt ZXModGYsIHZhbHVlLCBub3cpOw0KPiArCXJldHVybiAodGYtPmVudHJpZXNbMF0udmFsdWUpOw0K PiArfQ0KPiArDQo+ICt1aW50MzJfdA0KPiArYXBwbHlfZmlsdGVyX21pbl9zbWFsbChzdHJ1Y3Qg dGltZV9maWx0ZXJfc21hbGwgKnRmLA0KPiArCQkgICAgICAgdWludDMyX3QgdmFsdWUsIHVpbnQz Ml90IG5vdykNCj4gK3sNCj4gKwlpbnQgaSwgajsNCj4gKwkNCj4gKwlpZiAodmFsdWUgPD0gdGYt PmVudHJpZXNbMF0udmFsdWUpIHsNCj4gKwkJLyogWmFwIHRoZW0gYWxsICovDQo+ICsJCWZvcihp PTA7IGk8TlVNX0ZJTFRFUl9FTlRSSUVTOyBpKyspIHsNCj4gKwkJCXRmLT5lbnRyaWVzW2ldLnZh bHVlID0gdmFsdWU7DQo+ICsJCQl0Zi0+ZW50cmllc1tpXS50aW1lX3VwID0gbm93Ow0KPiArCQl9 DQo+ICsJCXJldHVybiAodGYtPmVudHJpZXNbMF0udmFsdWUpOw0KPiArCX0NCj4gKwlmb3IgKGo9 MTsgajxOVU1fRklMVEVSX0VOVFJJRVM7IGorKykgew0KPiArCQlpZiAodmFsdWUgPD0gdGYtPmVu dHJpZXNbal0udmFsdWUpIHsNCj4gKwkJCWZvcihpPWo7IGk8TlVNX0ZJTFRFUl9FTlRSSUVTOyBp KyspIHsNCj4gKwkJCQl0Zi0+ZW50cmllc1tpXS52YWx1ZSA9IHZhbHVlOw0KPiArCQkJCXRmLT5l bnRyaWVzW2ldLnRpbWVfdXAgPSBub3c7DQo+ICsJCQl9DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0K PiArCX0NCj4gKwljaGVja191cGRhdGVfdGltZXNfc21hbGwodGYsIHZhbHVlLCBub3cpOw0KPiAr CXJldHVybiAodGYtPmVudHJpZXNbMF0udmFsdWUpOw0KPiArfQ0KPiArDQo+ICt1aW50MzJfdA0K PiArYXBwbHlfZmlsdGVyX21heChzdHJ1Y3QgdGltZV9maWx0ZXIgKnRmLCB1aW50NjRfdCB2YWx1 ZSwgdWludDMyX3Qgbm93KQ0KPiArew0KPiArCWludCBpLCBqOw0KPiArCQ0KPiArCWlmICh2YWx1 ZSA+PSB0Zi0+ZW50cmllc1swXS52YWx1ZSkgew0KPiArCQkvKiBaYXAgdGhlbSBhbGwgKi8NCj4g KwkJZm9yKGk9MDsgaTxOVU1fRklMVEVSX0VOVFJJRVM7IGkrKykgew0KPiArCQkJdGYtPmVudHJp ZXNbaV0udmFsdWUgPSB2YWx1ZTsNCj4gKwkJCXRmLT5lbnRyaWVzW2ldLnRpbWVfdXAgPSBub3c7 DQo+ICsJCX0NCj4gKwkJcmV0dXJuICh0Zi0+ZW50cmllc1swXS52YWx1ZSk7DQo+ICsJfQ0KPiAr CWZvciAoaj0xOyBqPE5VTV9GSUxURVJfRU5UUklFUzsgaisrKSB7DQo+ICsJCWlmICh2YWx1ZSA+ PSB0Zi0+ZW50cmllc1tqXS52YWx1ZSkgew0KPiArCQkJZm9yKGk9ajsgaTxOVU1fRklMVEVSX0VO VFJJRVM7IGkrKykgew0KPiArCQkJCXRmLT5lbnRyaWVzW2ldLnZhbHVlID0gdmFsdWU7DQo+ICsJ CQkJdGYtPmVudHJpZXNbaV0udGltZV91cCA9IG5vdzsNCj4gKwkJCX0NCj4gKwkJCWJyZWFrOw0K PiArCQl9DQo+ICsJfQ0KPiArCWNoZWNrX3VwZGF0ZV90aW1lcyh0ZiwgdmFsdWUsIG5vdyk7DQo+ ICsJcmV0dXJuICh0Zi0+ZW50cmllc1swXS52YWx1ZSk7DQo+ICt9DQo+ICsNCj4gKw0KPiArdWlu dDMyX3QNCj4gK2FwcGx5X2ZpbHRlcl9tYXhfc21hbGwoc3RydWN0IHRpbWVfZmlsdGVyX3NtYWxs ICp0ZiwNCj4gKwkJICAgICAgIHVpbnQzMl90IHZhbHVlLCB1aW50MzJfdCBub3cpDQo+ICt7DQo+ ICsJaW50IGksIGo7DQo+ICsJDQo+ICsJaWYgKHZhbHVlID49IHRmLT5lbnRyaWVzWzBdLnZhbHVl KSB7DQo+ICsJCS8qIFphcCB0aGVtIGFsbCAqLw0KPiArCQlmb3IoaT0wOyBpPE5VTV9GSUxURVJf RU5UUklFUzsgaSsrKSB7DQo+ICsJCQl0Zi0+ZW50cmllc1tpXS52YWx1ZSA9IHZhbHVlOw0KPiAr CQkJdGYtPmVudHJpZXNbaV0udGltZV91cCA9IG5vdzsNCj4gKwkJfQ0KPiArCQlyZXR1cm4gKHRm LT5lbnRyaWVzWzBdLnZhbHVlKTsNCj4gKwl9DQo+ICsJZm9yIChqPTE7IGo8TlVNX0ZJTFRFUl9F TlRSSUVTOyBqKyspIHsNCj4gKwkJaWYgKHZhbHVlID49IHRmLT5lbnRyaWVzW2pdLnZhbHVlKSB7 DQo+ICsJCQlmb3IoaT1qOyBpPE5VTV9GSUxURVJfRU5UUklFUzsgaSsrKSB7DQo+ICsJCQkJdGYt PmVudHJpZXNbaV0udmFsdWUgPSB2YWx1ZTsNCj4gKwkJCQl0Zi0+ZW50cmllc1tpXS50aW1lX3Vw ID0gbm93Ow0KPiArCQkJfQ0KPiArCQkJYnJlYWs7DQo+ICsJCX0NCj4gKwl9DQo+ICsJY2hlY2tf dXBkYXRlX3RpbWVzX3NtYWxsKHRmLCB2YWx1ZSwgbm93KTsNCj4gKwlyZXR1cm4gKHRmLT5lbnRy aWVzWzBdLnZhbHVlKTsNCj4gK30NCj4gDQo+IE1vZGlmaWVkOiBoZWFkL3N5cy9tb2R1bGVzL3Rj cC9NYWtlZmlsZQ0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLS0tIGhlYWQvc3lzL21vZHVs ZXMvdGNwL01ha2VmaWxlCVR1ZSBTZXAgMjQgMTc6MDY6MzIgMjAxOQkocjM1MjY1NikNCj4gKysr IGhlYWQvc3lzL21vZHVsZXMvdGNwL01ha2VmaWxlCVR1ZSBTZXAgMjQgMTg6MTg6MTEgMjAxOQko cjM1MjY1NykNCj4gQEAgLTYsMTAgKzYsMTIgQEAgU1lTRElSPz0ke1NSQ1RPUH0vc3lzDQo+ICAu aW5jbHVkZSAiJHtTWVNESVJ9L2NvbmYva2Vybi5vcHRzLm1rIg0KPiAgDQo+ICBTVUJESVI9CVwN Cj4gKyAgICAgICAgJHtfdGNwX2Jicn0gXA0KPiAgICAgICAgICAke190Y3BfcmFja30gXA0KPiAg CSR7X3RjcG1kNX0gXA0KPiAgDQo+ICAuaWYgJHtNS19FWFRSQV9UQ1BfU1RBQ0tTfSAhPSAibm8i IHx8IGRlZmluZWQoQUxMX01PRFVMRVMpDQo+ICtfdGNwX2Jicj0gCWJicg0KPiAgX3RjcF9yYWNr PSAJcmFjaw0KPiAgLmVuZGlmDQo+ICANCj4gDQo+IEFkZGVkOiBoZWFkL3N5cy9tb2R1bGVzL3Rj cC9iYnIvTWFrZWZpbGUNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IC0tLSAvZGV2L251bGwJ MDA6MDA6MDAgMTk3MAkoZW1wdHksIGJlY2F1c2UgZmlsZSBpcyBuZXdseSBhZGRlZCkNCj4gKysr IGhlYWQvc3lzL21vZHVsZXMvdGNwL2Jici9NYWtlZmlsZQlUdWUgU2VwIDI0IDE4OjE4OjExIDIw MTkJKHIzNTI2NTcpDQo+IEBAIC0wLDAgKzEsMjMgQEANCj4gKyMNCj4gKyMgJEZyZWVCU0QkDQo+ ICsjDQo+ICsNCj4gKy5QQVRIOiAkey5DVVJESVJ9Ly4uLy4uLy4uL25ldGluZXQvdGNwX3N0YWNr cw0KPiArDQo+ICtTVEFDS05BTUU9CWJicg0KPiArS01PRD0JdGNwXyR7U1RBQ0tOQU1FfQ0KPiAr U1JDUz0JYmJyLmMgc2Fja19maWx0ZXIuYyByYWNrX2Jicl9jb21tb24uYw0KPiArDQo+ICtTUkNT Kz0Jb3B0X2luZXQuaCBvcHRfaW5ldDYuaCBvcHRfaXBzZWMuaA0KPiArU1JDUys9CW9wdF90Y3Bk ZWJ1Zy5oDQo+ICtTUkNTKz0Jb3B0X2tlcm5fdGxzLmgNCj4gKw0KPiArIw0KPiArIyBFbmFibGUg ZnVsbCBkZWJ1Z2dpbmcNCj4gKyMNCj4gKyNDRkxBR1MgKz0gLWcNCj4gKw0KPiArQ0ZMQUdTKz0J LURNT0ROQU1FPSR7S01PRH0NCj4gK0NGTEFHUys9CS1EU1RBQ0tOQU1FPSR7U1RBQ0tOQU1FfQ0K PiArDQo+ICsuaW5jbHVkZSA8YnNkLmttb2QubWs+DQo+IA0KPiBNb2RpZmllZDogaGVhZC9zeXMv bmV0aW5ldC9pcF9vdXRwdXQuYw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gLS0tIGhlYWQv c3lzL25ldGluZXQvaXBfb3V0cHV0LmMJVHVlIFNlcCAyNCAxNzowNjozMiAyMDE5CShyMzUyNjU2 KQ0KPiArKysgaGVhZC9zeXMvbmV0aW5ldC9pcF9vdXRwdXQuYwlUdWUgU2VwIDI0IDE4OjE4OjEx IDIwMTkJKHIzNTI2NTcpDQo+IEBAIC0yMTIsNyArMjEyLDcgQEAgaXBfb3V0cHV0X3BmaWwoc3Ry dWN0IG1idWYgKiptcCwgc3RydWN0IGlmbmV0ICppZnAsIGluDQo+ICANCj4gIHN0YXRpYyBpbnQN Cj4gIGlwX291dHB1dF9zZW5kKHN0cnVjdCBpbnBjYiAqaW5wLCBzdHJ1Y3QgaWZuZXQgKmlmcCwg c3RydWN0IG1idWYgKm0sDQo+IC0gICAgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luICpndywgc3Ry dWN0IHJvdXRlICpybykNCj4gKyAgICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmd3LCBzdHJ1 Y3Qgcm91dGUgKnJvLCBib29sIHN0YW1wX3RhZykNCj4gIHsNCj4gICNpZmRlZiBLRVJOX1RMUw0K PiAgCXN0cnVjdCBrdGxzX3Nlc3Npb24gKnRscyA9IE5VTEw7DQo+IEBAIC0yNTYsNyArMjU2LDcg QEAgaXBfb3V0cHV0X3NlbmQoc3RydWN0IGlucGNiICppbnAsIHN0cnVjdCBpZm5ldCAqaWZwLCBz DQo+ICAJCQltc3QgPSBpbnAtPmlucF9zbmRfdGFnOw0KPiAgCX0NCj4gICNlbmRpZg0KPiAtCWlm IChtc3QgIT0gTlVMTCkgew0KPiArCWlmIChzdGFtcF90YWcgJiYgbXN0ICE9IE5VTEwpIHsNCj4g IAkJS0FTU0VSVChtLT5tX3BrdGhkci5yY3ZpZiA9PSBOVUxMLA0KPiAgCQkgICAgKCJ0cnlpbmcg dG8gYWRkIGEgc2VuZCB0YWcgdG8gYSBmb3J3YXJkZWQgcGFja2V0IikpOw0KPiAgCQlpZiAobXN0 LT5pZnAgIT0gaWZwKSB7DQo+IEBAIC03OTEsNyArNzkxLDggQEAgc2VuZGl0Og0KPiAgCQkgKi8N Cj4gIAkJbV9jbHJwcm90b2ZsYWdzKG0pOw0KPiAgCQlJUF9QUk9CRShzZW5kLCBOVUxMLCBOVUxM LCBpcCwgaWZwLCBpcCwgTlVMTCk7DQo+IC0JCWVycm9yID0gaXBfb3V0cHV0X3NlbmQoaW5wLCBp ZnAsIG0sIGd3LCBybyk7DQo+ICsJCWVycm9yID0gaXBfb3V0cHV0X3NlbmQoaW5wLCBpZnAsIG0s IGd3LCBybywNCj4gKwkJICAgIChmbGFncyAmIElQX05PX1NORF9UQUdfUkwpID8gZmFsc2UgOiB0 cnVlKTsNCj4gIAkJZ290byBkb25lOw0KPiAgCX0NCj4gIA0KPiBAQCAtODI3LDcgKzgyOCw3IEBA IHNlbmRpdDoNCj4gIA0KPiAgCQkJSVBfUFJPQkUoc2VuZCwgTlVMTCwgTlVMTCwgbXRvZChtLCBz dHJ1Y3QgaXAgKiksIGlmcCwNCj4gIAkJCSAgICBtdG9kKG0sIHN0cnVjdCBpcCAqKSwgTlVMTCk7 DQo+IC0JCQllcnJvciA9IGlwX291dHB1dF9zZW5kKGlucCwgaWZwLCBtLCBndywgcm8pOw0KPiAr CQkJZXJyb3IgPSBpcF9vdXRwdXRfc2VuZChpbnAsIGlmcCwgbSwgZ3csIHJvLCB0cnVlKTsNCj4g IAkJfSBlbHNlDQo+ICAJCQltX2ZyZWVtKG0pOw0KPiAgCX0NCj4gDQo+IE1vZGlmaWVkOiBoZWFk L3N5cy9uZXRpbmV0L2lwX3Zhci5oDQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiAtLS0gaGVh ZC9zeXMvbmV0aW5ldC9pcF92YXIuaAlUdWUgU2VwIDI0IDE3OjA2OjMyIDIwMTkJKHIzNTI2NTYp DQo+ICsrKyBoZWFkL3N5cy9uZXRpbmV0L2lwX3Zhci5oCVR1ZSBTZXAgMjQgMTg6MTg6MTEgMjAx OQkocjM1MjY1NykNCj4gQEAgLTE2Niw2ICsxNjYsNyBAQCB2b2lkCWttb2RfaXBzdGF0X2RlYyhp bnQgc3RhdG51bSk7DQo+ICAjZGVmaW5lIElQX1JPVVRFVE9JRgkJU09fRE9OVFJPVVRFCS8qIDB4 MTAgYnlwYXNzIHJvdXRpbmcgdGFibGVzICovDQo+ICAjZGVmaW5lIElQX0FMTE9XQlJPQURDQVNU CVNPX0JST0FEQ0FTVAkvKiAweDIwIGNhbiBzZW5kIGJyb2FkY2FzdCBwYWNrZXRzICovDQo+ICAj ZGVmaW5lCUlQX05PREVGQVVMVEZMT1dJRAkweDQwCQkvKiBEb24ndCBzZXQgdGhlIGZsb3dpZCBm cm9tDQo+IGlucCAqLyArI2RlZmluZSBJUF9OT19TTkRfVEFHX1JMCTB4ODAJCS8qIERvbid0IHNl bmQgZG93biB0aGUgcmF0ZWxpbWl0DQo+IHRhZyAqLyANCj4gICNpZmRlZiBfX05PX1NUUklDVF9B TElHTk1FTlQNCj4gICNkZWZpbmUgSVBfSERSX0FMSUdORURfUChpcCkJMQ0KPiANCj4gTW9kaWZp ZWQ6IGhlYWQvc3lzL25ldGluZXQvdGNwLmgNCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+IC0t LSBoZWFkL3N5cy9uZXRpbmV0L3RjcC5oCVR1ZSBTZXAgMjQgMTc6MDY6MzIgMjAxOQkocjM1MjY1 NikNCj4gKysrIGhlYWQvc3lzL25ldGluZXQvdGNwLmgJVHVlIFNlcCAyNCAxODoxODoxMSAyMDE5 CShyMzUyNjU3KQ0KPiBAQCAtMjM5LDYgKzIzOSw3IEBAIHN0cnVjdCB0Y3BoZHIgew0KPiAgI2Rl ZmluZSBUQ1BfQkJSX0FDS19DT01QX0FMRyAgIDEwOTYgCS8qIE5vdCB1c2VkICovDQo+ICAjZGVm aW5lIFRDUF9CQlJfVE1SX1BBQ0VfT0ggICAgMTA5NgkvKiBSZWN5Y2xlZCBpbiA0LjIgKi8NCj4g ICNkZWZpbmUgVENQX0JCUl9FWFRSQV9HQUlOICAgICAxMDk3DQo+ICsjZGVmaW5lIFRDUF9SQUNL X0RPX0RFVEVDVElPTiAgMTA5NwkvKiBSZWN5Y2xlIG9mIGV4dHJhIGdhaW4gZm9yIHJhY2ssIGF0 dGFjaw0KPiBkZXRlY3Rpb24gKi8gI2RlZmluZSBUQ1BfQkJSX1JBQ0tfUlRUX1VTRSAgIDEwOTgJ Lyogd2hhdCBSVFQgc2hvdWxkIHdlIHVzZSAwLCAxLCBvcg0KPiAyPyAqLyAjZGVmaW5lIFRDUF9C QlJfUkVUUkFOX1dUU08gICAgMTA5OQ0KPiAgI2RlZmluZSBUQ1BfREFUQV9BRlRFUl9DTE9TRSAg IDExMDANCj4gDQo+IEFkZGVkOiBoZWFkL3N5cy9uZXRpbmV0L3RjcF9zdGFja3MvYmJyLmMNCj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09DQo+IC0tLSAvZGV2L251bGwJMDA6MDA6MDAgMTk3MAkoZW1w dHksIGJlY2F1c2UgZmlsZSBpcyBuZXdseSBhZGRlZCkNCj4gKysrIGhlYWQvc3lzL25ldGluZXQv dGNwX3N0YWNrcy9iYnIuYwlUdWUgU2VwIDI0IDE4OjE4OjExIDIwMTkJKHIzNTI2NTcpDQo+IEBA IC0wLDAgKzEsMTUxODkgQEANCj4gKy8qLQ0KPiArICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMTkN Cj4gKyAqCU5ldGZsaXggSW5jLg0KPiArICogICAgICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAr ICoNCj4gKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dA0KPiArICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+ICsgKiBhcmUgbWV0Og0KPiAr ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92 ZSBjb3B5cmlnaHQNCj4gKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ICsgKiAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIgaW4gdGhlDQo+ICsgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KPiArICoNCj4gKyAqIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycg QU5EDQo+ICsgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCj4gKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQo+ICsgKiBB UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJV VE9SUyBCRSBMSUFCTEUNCj4gKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMDQo+ICsgKiBEQU1BR0VTIChJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUw0KPiArICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQo+ICsgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVA0KPiArICog TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS SVNJTkcgSU4gQU5ZIFdBWQ0KPiArICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KPiArICogU1VDSCBEQU1BR0Uu DQo+ICsgKg0KPiArICovDQo+ICsvKioNCj4gKyAqIEF1dGhvcjogUmFuZGFsbCBTdGV3YXJ0IDxy cnNAbmV0ZmxpeC5jb20+DQo+ICsgKiBUaGlzIHdvcmsgaXMgYmFzZWQgb24gdGhlIEFDTSBRdWV1 ZSBwYXBlcg0KPiArICogQkJSIC0gQ29uZ2VzdGlvbiBCYXNlZCBDb25nZXN0aW9uIENvbnRyb2wN Cj4gKyAqIGFuZCBhbHNvIG51bWVyb3VzIGRpc2N1c3Npb25zIHdpdGggTmVhbCwgWXVjaHVuZyBh bmQgVmFuLg0KPiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4NCj4gK19fRkJT RElEKCIkRnJlZUJTRCQiKTsNCj4gKw0KPiArI2luY2x1ZGUgIm9wdF9pbmV0LmgiDQo+ICsjaW5j bHVkZSAib3B0X2luZXQ2LmgiDQo+ICsjaW5jbHVkZSAib3B0X2lwc2VjLmgiDQo+ICsjaW5jbHVk ZSAib3B0X3RjcGRlYnVnLmgiDQo+ICsjaW5jbHVkZSAib3B0X3JhdGVsaW1pdC5oIg0KPiArI2lu Y2x1ZGUgIm9wdF9rZXJuX3Rscy5oIg0KPiArI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KPiArI2lu Y2x1ZGUgPHN5cy9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxzeXMva2VybmVsLmg+DQo+ICsjaWZk ZWYgVENQX0hIT09LDQo+ICsjaW5jbHVkZSA8c3lzL2hob29rLmg+DQo+ICsjZW5kaWYNCj4gKyNp bmNsdWRlIDxzeXMvbWFsbG9jLmg+DQo+ICsjaW5jbHVkZSA8c3lzL21idWYuaD4NCj4gKyNpbmNs dWRlIDxzeXMvcHJvYy5oPg0KPiArI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4NCj4gKyNpbmNsdWRl IDxzeXMvc29ja2V0dmFyLmg+DQo+ICsjaWZkZWYgS0VSTl9UTFMNCj4gKyNpbmNsdWRlIDxzeXMv a3Rscy5oPg0KPiArI2VuZGlmDQo+ICsjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPg0KPiArI2luY2x1 ZGUgPHN5cy9zeXN0bS5oPg0KPiArI2luY2x1ZGUgPHN5cy9xbWF0aC5oPg0KPiArI2luY2x1ZGUg PHN5cy90cmVlLmg+DQo+ICsjaWZkZWYgTkVURkxJWF9TVEFUUw0KPiArI2luY2x1ZGUgPHN5cy9z dGF0cy5oPiAvKiBNdXN0IGNvbWUgYWZ0ZXIgcW1hdGguaCBhbmQgdHJlZS5oICovDQo+ICsjZW5k aWYNCj4gKyNpbmNsdWRlIDxzeXMvcmVmY291bnQuaD4NCj4gKyNpbmNsdWRlIDxzeXMvcXVldWUu aD4NCj4gKyNpbmNsdWRlIDxzeXMvZXZlbnRoYW5kbGVyLmg+DQo+ICsjaW5jbHVkZSA8c3lzL3Nt cC5oPg0KPiArI2luY2x1ZGUgPHN5cy9rdGhyZWFkLmg+DQo+ICsjaW5jbHVkZSA8c3lzL2xvY2su aD4NCj4gKyNpbmNsdWRlIDxzeXMvbXV0ZXguaD4NCj4gKyNpbmNsdWRlIDxzeXMvdGltX2ZpbHRl ci5oPg0KPiArI2luY2x1ZGUgPHN5cy90aW1lLmg+DQo+ICsjaW5jbHVkZSA8dm0vdW1hLmg+DQo+ ICsjaW5jbHVkZSA8c3lzL2tlcm5fcHJlZmV0Y2guaD4NCj4gKw0KPiArI2luY2x1ZGUgPG5ldC9y b3V0ZS5oPg0KPiArI2luY2x1ZGUgPG5ldC92bmV0Lmg+DQo+ICsNCj4gKyNkZWZpbmUgVENQU1RB VEVTCQkvKiBmb3IgbG9nZ2luZyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPg0K PiArI2luY2x1ZGUgPG5ldGluZXQvaW5fa2R0cmFjZS5oPg0KPiArI2luY2x1ZGUgPG5ldGluZXQv aW5fcGNiLmg+DQo+ICsjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPg0KPiArI2luY2x1ZGUgPG5ldGlu ZXQvaXBfaWNtcC5oPgkvKiByZXF1aXJlZCBmb3IgaWNtcF92YXIuaCAqLw0KPiArI2luY2x1ZGUg PG5ldGluZXQvaWNtcF92YXIuaD4JLyogZm9yIElDTVBfQkFORExJTSAqLw0KPiArI2luY2x1ZGUg PG5ldGluZXQvaXBfdmFyLmg+DQo+ICsjaW5jbHVkZSA8bmV0aW5ldC9pcDYuaD4NCj4gKyNpbmNs dWRlIDxuZXRpbmV0Ni9pbjZfcGNiLmg+DQo+ICsjaW5jbHVkZSA8bmV0aW5ldDYvaXA2X3Zhci5o Pg0KPiArI2RlZmluZQlUQ1BPVVRGTEFHUw0KPiArI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+DQo+ ICsjaW5jbHVkZSA8bmV0aW5ldC90Y3BfZnNtLmg+DQo+ICsjaW5jbHVkZSA8bmV0aW5ldC90Y3Bf c2VxLmg+DQo+ICsjaW5jbHVkZSA8bmV0aW5ldC90Y3BfdGltZXIuaD4NCj4gKyNpbmNsdWRlIDxu ZXRpbmV0L3RjcF92YXIuaD4NCj4gKyNpbmNsdWRlIDxuZXRpbmV0L3RjcGlwLmg+DQo+ICsjaW5j bHVkZSA8bmV0aW5ldC90Y3BfaHB0cy5oPg0KPiArI2luY2x1ZGUgPG5ldGluZXQvY2MvY2MuaD4N Cj4gKyNpbmNsdWRlIDxuZXRpbmV0L3RjcF9sb2dfYnVmLmg+DQo+ICsjaW5jbHVkZSA8bmV0aW5l dC90Y3BfcmF0ZWxpbWl0Lmg+DQo+ICsjaW5jbHVkZSA8bmV0aW5ldC90Y3BfbHJvLmg+DQo+ICsj aWZkZWYgVENQREVCVUcNCj4gKyNpbmNsdWRlIDxuZXRpbmV0L3RjcF9kZWJ1Zy5oPg0KPiArI2Vu ZGlmCQkJCS8qIFRDUERFQlVHICovDQo+ICsjaWZkZWYgVENQX09GRkxPQUQNCj4gKyNpbmNsdWRl IDxuZXRpbmV0L3RjcF9vZmZsb2FkLmg+DQo+ICsjZW5kaWYNCj4gKyNpZmRlZiBJTkVUNg0KPiAr I2luY2x1ZGUgPG5ldGluZXQ2L3RjcDZfdmFyLmg+DQo+ICsjZW5kaWYNCj4gKyNpbmNsdWRlIDxu ZXRpbmV0L3RjcF9mYXN0b3Blbi5oPg0KPiArDQo+ICsjaW5jbHVkZSA8bmV0aXBzZWMvaXBzZWNf c3VwcG9ydC5oPg0KPiArI2luY2x1ZGUgPG5ldC9pZi5oPg0KPiArI2luY2x1ZGUgPG5ldC9pZl92 YXIuaD4NCj4gKyNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4NCj4gKw0KPiArI2lmIGRlZmluZWQo SVBTRUMpIHx8IGRlZmluZWQoSVBTRUNfU1VQUE9SVCkNCj4gKyNpbmNsdWRlIDxuZXRpcHNlYy9p cHNlYy5oPg0KPiArI2luY2x1ZGUgPG5ldGlwc2VjL2lwc2VjNi5oPg0KPiArI2VuZGlmCQkJCS8q IElQU0VDICovDQo+ICsNCj4gKyNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPg0KPiArI2luY2x1ZGUg PG5ldGluZXQvdWRwX3Zhci5oPg0KPiArI2luY2x1ZGUgPG1hY2hpbmUvaW5fY2tzdW0uaD4NCj4g Kw0KPiArI2lmZGVmIE1BQw0KPiArI2luY2x1ZGUgPHNlY3VyaXR5L21hYy9tYWNfZnJhbWV3b3Jr Lmg+DQo+ICsjZW5kaWYNCj4gKw0KPiArI2luY2x1ZGUgInNhY2tfZmlsdGVyLmgiDQo+ICsjaW5j bHVkZSAidGNwX2Jici5oIg0KPiArI2luY2x1ZGUgInJhY2tfYmJyX2NvbW1vbi5oIg0KPiArdW1h X3pvbmVfdCBiYnJfem9uZTsNCj4gK3VtYV96b25lX3QgYmJyX3BjYl96b25lOw0KPiArDQo+ICtz dHJ1Y3Qgc3lzY3RsX2N0eF9saXN0IGJicl9zeXNjdGxfY3R4Ow0KPiArc3RydWN0IHN5c2N0bF9v aWQgKmJicl9zeXNjdGxfcm9vdDsNCj4gKw0KPiArI2RlZmluZQlUQ1BUX1JBTkdFU0VUX05PU0xP UCh0diwgdmFsdWUsIHR2bWluLCB0dm1heCkgZG8geyBcDQo+ICsJKHR2KSA9ICh2YWx1ZSk7IFwN Cj4gKwlpZiAoKHVfbG9uZykodHYpIDwgKHVfbG9uZykodHZtaW4pKSBcDQo+ICsJCSh0dikgPSAo dHZtaW4pOyBcDQo+ICsJaWYgKCh1X2xvbmcpKHR2KSA+ICh1X2xvbmcpKHR2bWF4KSkgXA0KPiAr CQkodHYpID0gKHR2bWF4KTsgXA0KPiArfSB3aGlsZSgwKQ0KPiArDQo+ICsvKiNkZWZpbmUgQkJS X0lOVkFSSUFOVCAxKi8NCj4gKw0KPiArLyoNCj4gKyAqIGluaXRpYWwgd2luZG93DQo+ICsgKi8N Cj4gK3N0YXRpYyB1aW50MzJfdCBiYnJfZGVmX2luaXRfd2luID0gMTA7DQo+ICtzdGF0aWMgaW50 MzJfdCBiYnJfcGVyc2lzdF9taW4gPSAyNTAwMDA7CS8qIDI1MG1zICovDQo+ICtzdGF0aWMgaW50 MzJfdCBiYnJfcGVyc2lzdF9tYXggPSAxMDAwMDAwOwkvKiAxIFNlY29uZCAqLw0KPiArc3RhdGlj IGludDMyX3QgYmJyX2N3bmRfbWF5X3NocmluayA9IDA7DQo+ICtzdGF0aWMgaW50MzJfdCBiYnJf Y3duZHRhcmdldF9ydHRfdG91c2UgPSBCQlJfUlRUX1BST1A7DQo+ICtzdGF0aWMgaW50MzJfdCBi YnJfbnVtX3BrdGVwb19mb3JfZGVsX2xpbWl0ID0gQkJSX05VTV9SVFRTX0ZPUl9ERUxfTElNSVQ7 DQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfaGFyZHdhcmVfcGFjaW5nX2xpbWl0ID0gODAwMDsNCj4g K3N0YXRpYyBpbnQzMl90IGJicl9xdWFudGEgPSAzOwkvKiBIb3cgbXVjaCBleHRyYSBxdWFudGEg ZG8gd2UgZ2V0PyAqLw0KPiArc3RhdGljIGludDMyX3QgYmJyX25vX3JldHJhbiA9IDA7DQo+ICtz dGF0aWMgaW50MzJfdCBiYnJfdGNwX21hcF9lbnRyaWVzX2xpbWl0ID0gMTUwMDsNCj4gK3N0YXRp YyBpbnQzMl90IGJicl90Y3BfbWFwX3NwbGl0X2xpbWl0ID0gMjU2Ow0KPiArDQo+ICtzdGF0aWMg aW50MzJfdCBiYnJfZXJyb3JfYmFzZV9wYWNlb3V0ID0gMTAwMDA7IC8qIHVzZWMgdG8gcGFjZSAq Lw0KPiArc3RhdGljIGludDMyX3QgYmJyX21heF9uZXRfZXJyb3JfY250ID0gMTA7DQo+ICsvKiBT aG91bGQgdGhlIGZvbGxvd2luZyBiZSBkeW5hbWljIHRvbyAtLSBsb3NzIHdpc2UgKi8NCj4gK3N0 YXRpYyBpbnQzMl90IGJicl9ydHRfZ2Fpbl90aHJlc2ggPSAwOw0KPiArLyogTWVhc3VyZW1lbnQg Y29udHJvbHMgKi8NCj4gK3N0YXRpYyBpbnQzMl90IGJicl91c2VfZ29vZ2xlX2FsZ28gPSAxOw0K PiArc3RhdGljIGludDMyX3QgYmJyX3RzX2xpbWl0aW5nID0gMTsNCj4gK3N0YXRpYyBpbnQzMl90 IGJicl90c19jYW5fcmFpc2UgPSAwOw0KPiArc3RhdGljIGludDMyX3QgYmJyX2RvX3JlZCA9IDYw MDsNCj4gK3N0YXRpYyBpbnQzMl90IGJicl9yZWRfc2NhbGUgPSAyMDAwMDsNCj4gK3N0YXRpYyBp bnQzMl90IGJicl9yZWRfbXVsID0gMTsNCj4gK3N0YXRpYyBpbnQzMl90IGJicl9yZWRfZGl2ID0g MjsNCj4gK3N0YXRpYyBpbnQzMl90IGJicl9yZWRfZ3Jvd3RoX3Jlc3RyaWN0ID0gMTsNCj4gK3N0 YXRpYyBpbnQzMl90ICBiYnJfdGFyZ2V0X2lzX2JidW5pdCA9IDA7DQo+ICtzdGF0aWMgaW50MzJf dCBiYnJfZHJvcF9saW1pdCA9IDA7DQo+ICsvKg0KPiArICogSG93IG11Y2ggZ2FpbiBkbyB3ZSBu ZWVkIHRvIHNlZSB0bw0KPiArICogc3RheSBpbiBzdGFydHVwPw0KPiArICovDQo+ICtzdGF0aWMg aW50MzJfdCBiYnJfbWFya3Nfcnh0X3NhY2tfcGFzc2VkID0gMDsNCj4gK3N0YXRpYyBpbnQzMl90 IGJicl9zdGFydF9leGl0ID0gMjU7DQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfbG93X3N0YXJ0X2V4 aXQgPSAyNTsJLyogV2hlbiB3ZSBhcmUgaW4gcmVkdWNlZCBnYWluICovDQo+ICtzdGF0aWMgaW50 MzJfdCBiYnJfc3RhcnR1cF9sb3NzX3RocmVzaCA9IDIwMDA7CS8qIDIwLjAwJSBsb3NzICovDQo+ ICtzdGF0aWMgaW50MzJfdCBiYnJfaHB0c2lfbWF4X211bCA9IDE7CS8qIFRoZXNlIHR3byBtdWwv ZGl2IGFzc3VyZSBhIG1pbiBwYWNpbmcgKi8NCj4gK3N0YXRpYyBpbnQzMl90IGJicl9ocHRzaV9t YXhfZGl2ID0gMjsJLyogdGltZSwgMCBtZWFucyB0dXJuZWQgb2ZmLiBXZSBuZWVkIHRoaXMNCj4g KwkJCQkJICogaWYgd2UgZ28gYmFjayBldmVyIHRvIHdoZXJlIHRoZSBwYWNlcg0KPiArCQkJCQkg KiBoYXMgcHJpb3JpdHkgb3ZlciB0aW1lcnMuDQo+ICsJCQkJCSAqLw0KPiArc3RhdGljIGludDMy X3QgYmJyX3BvbGljZXJfY2FsbF9mcm9tX3JhY2tfdG8gPSAwOw0KPiArc3RhdGljIGludDMyX3Qg YmJyX3BvbGljZXJfZGV0ZWN0aW9uX2VuYWJsZWQgPSAxOw0KPiArc3RhdGljIGludDMyX3QgYmJy X21pbl9tZWFzdXJlbWVudHNfcmVxID0gMTsJLyogV2UgbmVlZCBhdCBsZWFzdCAyDQo+ICsJCQkJ CQkgKiBtZWFzdXJtZW50cyBiZWZvcmUgd2UgYXJlDQo+ICsJCQkJCQkgKiAiZ29vZCIgbm90ZSB0 aGF0IDIgPT0gMS4NCj4gKwkJCQkJCSAqIFRoaXMgaXMgYmVjYXVzZSB3ZSB1c2UgYSA+DQo+ICsJ CQkJCQkgKiBjb21wYXJpc29uLiBUaGlzIG1lYW5zIGlmDQo+ICsJCQkJCQkgKiBtaW5fbWVhc3Vy ZSB3YXMgMCwgaXQgdGFrZXMNCj4gKwkJCQkJCSAqIG51bS1tZWFzdXJlcyA+IG1pbigwKSBhbmQN Cj4gKwkJCQkJCSAqIHlvdSBnZXQgMSBtZWFzdXJlbWVudCBhbmQNCj4gKwkJCQkJCSAqIHlvdSBh cmUgZ29vZC4gU2V0IHRvIDEsIHlvdQ0KPiArCQkJCQkJICogaGF2ZSB0byBoYXZlIHR3bw0KPiAr CQkJCQkJICogbWVhc3VyZW1lbnRzICh0aGlzIGlzIGRvbmUNCj4gKwkJCQkJCSAqIHRvIHByZXZl bnQgaXQgZnJvbSBiZWluZyBvaw0KPiArCQkJCQkJICogdG8gaGF2ZSBubyBtZWFzdXJlbWVudHMp LiAqLw0KPiArc3RhdGljIGludDMyX3QgYmJyX25vX3BhY2luZ191bnRpbCA9IDQ7DQo+ICsJCQkJ CQkgDQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfbWluX3VzZWNfZGVsdGEgPSAyMDAwMDsJLyogMjAs MDAwIHVzZWNzICovDQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfbWluX3BlZXJfZGVsdGEgPSAyMDsJ CS8qIDIwIHVuaXRzICovDQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfZGVsdGFfcGVyY2VudCA9IDE1 MDsJCS8qIDE1LjAgJSAqLw0KPiArDQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfdGFyZ2V0X2N3bmRf bXVsdF9saW1pdCA9IDg7DQo+ICsvKg0KPiArICogYmJyX2N3bmRfbWluX3ZhbCBpcyB0aGUgbnVt YmVyIG9mDQo+ICsgKiBzZWdtZW50cyB3ZSBob2xkIHRvIGluIHRoZSBSVFQgcHJvYmUNCj4gKyAq IHN0YXRlIHR5cGljYWxseSA0Lg0KPiArICovDQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfY3duZF9t aW5fdmFsID0gQkJSX1BST0JFUlRUX05VTV9NU1M7DQo+ICsNCj4gKw0KPiArc3RhdGljIGludDMy X3QgYmJyX2N3bmRfbWluX3ZhbF9ocyA9IEJCUl9ISUdIU1BFRURfTlVNX01TUzsNCj4gKw0KPiAr c3RhdGljIGludDMyX3QgYmJyX2dhaW5fdG9fdGFyZ2V0ID0gMTsNCj4gK3N0YXRpYyBpbnQzMl90 IGJicl9nYWluX2dldHNfZXh0cmFfdG9vID0gMTsNCj4gKy8qDQo+ICsgKiBiYnJfaGlnaF9nYWlu IGlzIHRoZSAyL2xuKDIpIHZhbHVlIHdlIG5lZWQNCj4gKyAqIHRvIGRvdWJsZSB0aGUgc2VuZGlu ZyByYXRlIGluIHN0YXJ0dXAuIFRoaXMNCj4gKyAqIGlzIHVzZWQgZm9yIGJvdGggY3duZCBhbmQg aHB0c2kgZ2FpbidzLg0KPiArICovDQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfaGlnaF9nYWluID0g QkJSX1VOSVQgKiAyODg1IC8gMTAwMCArIDE7DQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfc3RhcnR1 cF9sb3dlciA9IEJCUl9VTklUICogMTUwMCAvIDEwMDAgKyAxOw0KPiArc3RhdGljIGludDMyX3Qg YmJyX3VzZV9sb3dlcl9nYWluX2luX3N0YXJ0dXAgPSAxOw0KPiArDQo+ICsvKiB0aHJlc2hvbGRz IGZvciByZWR1Y3Rpb24gb24gZHJhaW4gaW4gc3ViLXN0YXRlcy9kcmFpbiAqLw0KPiArc3RhdGlj IGludDMyX3QgYmJyX2RyYWluX3J0dCA9IEJCUl9TUlRUOw0KPiArc3RhdGljIGludDMyX3QgYmJy X2RyYWluX2Zsb29yID0gODg7DQo+ICtzdGF0aWMgaW50MzJfdCBnb29nbGVfYWxsb3dfZWFybHlf b3V0ID0gMTsNCj4gK3N0YXRpYyBpbnQzMl90IGdvb2dsZV9jb25zaWRlcl9sb3N0ID0gMTsNCj4g K3N0YXRpYyBpbnQzMl90IGJicl9kcmFpbl9kcm9wX211bCA9IDQ7DQo+ICtzdGF0aWMgaW50MzJf dCBiYnJfZHJhaW5fZHJvcF9kaXYgPSA1Ow0KPiArc3RhdGljIGludDMyX3QgYmJyX3JhbmRfb3Qg PSA1MDsNCj4gK3N0YXRpYyBpbnQzMl90IGJicl9jYW5fZm9yY2VfcHJvYmVydHQgPSAwOw0KPiAr c3RhdGljIGludDMyX3QgYmJyX2Nhbl9hZGp1c3RfcHJvYmVydHQgPSAxOw0KPiArc3RhdGljIGlu dDMyX3QgYmJyX3Byb2JlcnR0X3NldHNfcnR0ID0gMDsNCj4gK3N0YXRpYyBpbnQzMl90IGJicl9j YW5fdXNlX3RzX2Zvcl9ydHQgPSAxOw0KPiArc3RhdGljIGludDMyX3QgYmJyX2lzX3JhdGlvID0g MDsNCj4gK3N0YXRpYyBpbnQzMl90IGJicl9zdWJfZHJhaW5fYXBwX2xpbWl0ID0gMTsNCj4gK3N0 YXRpYyBpbnQzMl90IGJicl9wcnR0X3NsYW1fY3duZCA9IDE7DQo+ICtzdGF0aWMgaW50MzJfdCBi YnJfc3ViX2RyYWluX3NsYW1fY3duZCA9IDE7DQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfc2xhbV9j d25kX2luX21haW5fZHJhaW4gPSAxOw0KPiArc3RhdGljIGludDMyX3QgYmJyX2ZpbHRlcl9sZW5f c2VjID0gNjsJLyogSG93IGxvbmcgZG9lcyB0aGUgcnR0UHJvcCBmaWx0ZXINCj4gKwkJCQkJICog aG9sZCAqLw0KPiArc3RhdGljIHVpbnQzMl90IGJicl9ydHRfcHJvYmVfbGltaXQgPSAoVVNFQ1Nf SU5fU0VDT05EICogNCk7DQo+ICsvKg0KPiArICogYmJyX2RyYWluX2dhaW4gaXMgdGhlIHJldmVy c2Ugb2YgdGhlIGhpZ2hfZ2Fpbg0KPiArICogZGVzaWduZWQgdG8gZHJhaW4gYmFjayBvdXQgdGhl IHN0YW5kaW5nIHF1ZXVlDQo+ICsgKiB0aGF0IGlzIGZvcm1lZCBpbiBzdGFydHVwIGJ5IGNhdXNp bmcgYSBsYXJnZXINCj4gKyAqIGhwdHNpIGdhaW4gYW5kIHRodXMgZHJhaW5naW5nIHRoZSBwYWNr ZXRzDQo+ICsgKiBpbiBmbGlnaHQuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbnQzMl90IGJicl9kcmFp bl9nYWluID0gQkJSX1VOSVQgKiAxMDAwIC8gMjg4NTsNCj4gK3N0YXRpYyBpbnQzMl90IGJicl9y dHRwcm9iZV9nYWluID0gMTkyOw0KPiArDQo+ICsvKg0KPiArICogVGhlIGN3bmRfZ2FpbiBpcyB0 aGUgZGVmYXVsdCBjd25kIGdhaW4gYXBwbGllZCB3aGVuDQo+ICsgKiBjYWxjdWxhdGluZyBhIHRh cmdldCBjd25kLiBOb3RlIHRoYXQgdGhlIGN3bmQgaXMNCj4gKyAqIGEgc2Vjb25kYXJ5IGZhY3Rv ciBpbiB0aGUgd2F5IEJCUiB3b3JrcyAoc2VlIHRoZQ0KPiArICogcGFwZXIgYW5kIHRoaW5rIGFi b3V0IGl0LCBpdCB3aWxsIHRha2Ugc29tZSB0aW1lKS4NCj4gKyAqIEJhc2ljYWxseSB0aGUgaHB0 c2lfZ2FpbiBzcHJlYWRzIHRoZSBwYWNrZXRzIG91dA0KPiArICogc28geW91IG5ldmVyIGdldCBt b3JlIHRoYW4gQkRQIHRvIHRoZSBwZWVyIGV2ZW4NCj4gKyAqIGlmIHRoZSBjd25kIGlzIGhpZ2gu IEluIG91ciBpbXBsZW1lbmF0aW9uIHRoYXQNCj4gKyAqIG1lYW5zIGluIG5vbi1yZWNvdmVyeS9y ZXRyYW5zbWlzc2lvbiBzY2VuYXJpb3MNCj4gKyAqIGN3bmQgd2lsbCBuZXZlciBiZSByZWFjaGVk IGJ5IHRoZSBmbGlnaHQtc2l6ZS4NCj4gKyAqLw0KPiArc3RhdGljIGludDMyX3QgYmJyX2N3bmRf Z2FpbiA9IEJCUl9VTklUICogMjsNCj4gK3N0YXRpYyBpbnQzMl90IGJicl90bHBfdHlwZV90b191 c2UgPSBCQlJfU1JUVDsNCj4gK3N0YXRpYyBpbnQzMl90IGJicl9kZWxhY2tfdGltZSA9IDEwMDAw MDsJLyogMTAwbXMgaW4gdXNlY29uZHMgKi8NCj4gK3N0YXRpYyBpbnQzMl90IGJicl9zYWNrX25v dF9yZXF1aXJlZCA9IDA7CS8qIHNldCB0byBvbmUgdG8gYWxsb3cgbm9uLXNhY2sgdG8gdXNlIGJi cg0KPiAqLyArc3RhdGljIGludDMyX3QgYmJyX2luaXRpYWxfYndfYnBzID0gNjI1MDA7CS8qIDUw MGticHMgaW4gYnl0ZXMgcHMgKi8NCj4gK3N0YXRpYyBpbnQzMl90IGJicl9pZ25vcmVfZGF0YV9h ZnRlcl9jbG9zZSA9IDE7DQo+ICtzdGF0aWMgaW50MTZfdCBiYnJfaHB0c2lfZ2FpbltdID0gew0K PiArCShCQlJfVU5JVCAqNSAvIDQpLA0KPiArCShCQlJfVU5JVCAqIDMgLyA0KSwNCj4gKwlCQlJf VU5JVCwNCj4gKwlCQlJfVU5JVCwNCj4gKwlCQlJfVU5JVCwNCj4gKwlCQlJfVU5JVCwNCj4gKwlC QlJfVU5JVCwNCj4gKwlCQlJfVU5JVA0KPiArfTsNCj4gK2ludDMyX3QgYmJyX3VzZV9yYWNrX3Jl c2VuZF9jaGVhdCA9IDE7DQo+ICtpbnQzMl90IGJicl9zZW5kc19mdWxsX2l3bmQgPSAxOw0KPiAr DQo+ICsjZGVmaW5lIEJCUl9IUFRTSV9HQUlOX01BWCA4DQo+ICsvKg0KPiArICogVGhlIEJCUiBt b2R1bGUgaW5jb3Jwb3JhdGVzIGEgbnVtYmVyIG9mDQo+ICsgKiBUQ1AgaWRlYXMgdGhhdCBoYXZl IGJlZW4gcHV0IG91dCBpbnRvIHRoZSBJRVRGDQo+ICsgKiBvdmVyIHRoZSBsYXN0IGZldyB5ZWFy czoNCj4gKyAqIC0gWXVjaHVuZyBDaGVuZydzIFJBQ0sgVENQIChmb3Igd2hpY2ggaXRzIG5hbWVk KSB0aGF0DQo+ICsgKiAgICB3aWxsIHN0b3AgdXMgdXNpbmcgdGhlIG51bWJlciBvZiBkdXAgYWNr cyBhbmQgaW5zdGVhZA0KPiArICogICAgdXNlIHRpbWUgYXMgdGhlIGdhZ2Ugb2Ygd2hlbiB3ZSBy ZXRyYW5zbWl0Lg0KPiArICogLSBSZW9yZGVyIERldGVjdGlvbiBvZiBSRkM0NzM3IGFuZCB0aGUg VGFpbC1Mb3NzIHByb2JlIGRyYWZ0DQo+ICsgKiAgICBvZiBEdWtraXBhdGkgZXQuYWwuDQo+ICsg KiAtIFZhbiBKYWNvYnNvbidzIGV0LmFsIEJCUi4NCj4gKyAqDQo+ICsgKiBSQUNLIGRlcGVuZHMg b24gU0FDSywgc28gaWYgYW4gZW5kcG9pbnQgYXJyaXZlcyB0aGF0DQo+ICsgKiBjYW5ub3QgZG8g U0FDSyB0aGUgc3RhdGUgbWFjaGluZSBiZWxvdyB3aWxsIHNodXR0bGUgdGhlDQo+ICsgKiBjb25u ZWN0aW9uIGJhY2sgdG8gdXNpbmcgdGhlICJkZWZhdWx0IiBUQ1Agc3RhY2sgdGhhdCBpcw0KPiAr ICogaW4gRnJlZUJTRC4NCj4gKyAqDQo+ICsgKiBUbyBpbXBsZW1lbnQgQkJSIGFuZCBSQUNLIHRo ZSBvcmlnaW5hbCBUQ1Agc3RhY2sgd2FzIGZpcnN0IGRlY29tcG9zZWQNCj4gKyAqIGludG8gYSBm dW5jdGlvbmFsIHN0YXRlIG1hY2hpbmUgd2l0aCBpbmRpdmlkdWFsIHN0YXRlcw0KPiArICogZm9y IGVhY2ggb2YgdGhlIHBvc3NpYmxlIFRDUCBjb25uZWN0aW9uIHN0YXRlcy4gVGhlIGRvX3NlZ2Vt ZW50DQo+ICsgKiBmdW5jdGlvbnMgcm9sZSBpbiBsaWZlIGlzIHRvIG1hbmRhdGUgdGhlIGNvbm5l Y3Rpb24gc3VwcG9ydHMgU0FDSw0KPiArICogaW5pdGlhbGx5IGFuZCB0aGVuIGFzc3VyZSB0aGF0 IHRoZSBSQUNLIHN0YXRlIG1hdGNoZXMgdGhlIGNvbmVuY3Rpb24NCj4gKyAqIHN0YXRlIGJlZm9y ZSBjYWxsaW5nIHRoZSBzdGF0ZXMgZG9fc2VnbWVudCBmdW5jdGlvbi4gRGF0YSBwcm9jZXNzaW5n DQo+ICsgKiBvZiBpbmJvdW5kIHNlZ21lbnRzIGFsc28gbm93IGhhcHBlbnMgaW4gdGhlIGhwdHNf ZG9fc2VnbWVudCBpbiBnZW5lcmFsDQo+ICsgKiB3aXRoIG9ubHkgb25lIGV4Y2VwdGlvbi4gVGhp cyBpcyBzbyB3ZSBjYW4ga2VlcCB0aGUgY29ubmVjdGlvbiBvbg0KPiArICogYSBzaW5nbGUgQ1BV Lg0KPiArICoNCj4gKyAqIEVhY2ggc3RhdGUgaXMgc2ltcGxpZmllZCBkdWUgdG8gdGhlIGZhY3Qg dGhhdCB0aGUgb3JpZ2luYWwgZG9fc2VnbWVudA0KPiArICogaGFzIGJlZW4gZGVjb21wb3NlZCBh bmQgd2UgKmtub3cqIHdoYXQgc3RhdGUgd2UgYXJlIGluIChubw0KPiArICogc3dpdGNoZXMgb24g dGhlIHN0YXRlKSBhbmQgYWxsIHRlc3RzIGZvciBTQUNLIGFyZSBnb25lLiBUaGlzDQo+ICsgKiBn cmVhdGx5IHNpbXBsaWZpZXMgd2hhdCBlYWNoIHN0YXRlIGRvZXMuDQo+ICsgKg0KPiArICogVENQ IG91dHB1dCBpcyBhbHNvIG92ZXItd3JpdHRlbiB3aXRoIGEgbmV3IHZlcnNpb24gc2luY2UgaXQN Cj4gKyAqIG11c3QgbWFpbnRhaW4gdGhlIG5ldyByYWNrIHNjb3JlYm9hcmQgYW5kIGhhcyBoYWQg aHB0c2kNCj4gKyAqIGludGVncmF0ZWQgYXMgYSByZXF1aXJtZW50LiBTdGlsbCB0b2RvIGlzIHRv IGVsaW1pbmF0ZSB0aGUNCj4gKyAqIHVzZSBvZiB0aGUgY2FsbG91dF8oKSBzeXN0ZW0gYW5kIHVz ZSB0aGUgaHB0cyBmb3IgYWxsDQo+ICsgKiB0aW1lcnMgYXMgd2VsbC4NCj4gKyAqLw0KPiArc3Rh dGljIHVpbnQzMl90IGJicl9ydHRfcHJvYmVfdGltZSA9IDIwMDAwMDsJLyogMjAwbXMgaW4gbWlj cm8gc2Vjb25kcyAqLw0KPiArc3RhdGljIHVpbnQzMl90IGJicl9ydHRfcHJvYmVfY3duZHRhcmcg PSA0OwkvKiBIb3cgbWFueSBtc3MncyBvdXRzdGFuZGluZyAqLw0KPiArc3RhdGljIGNvbnN0IGlu dDMyX3QgYmJyX21pbl9yZXFfZnJlZSA9IDI7CS8qIFRoZSBtaW4gd2UgbXVzdCBoYXZlIG9uIHRo ZQ0KPiArCQkJCQkJICogZnJlZSBsaXN0ICovDQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfdGxwX3Ro cmVzaCA9IDE7DQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfcmVvcmRlcl90aHJlc2ggPSAyOw0KPiAr c3RhdGljIGludDMyX3QgYmJyX3Jlb3JkZXJfZmFkZSA9IDYwMDAwMDAwOwkvKiAwIC0gbmV2ZXIg ZmFkZSwgZGVmDQo+ICsJCQkJCQkgKiA2MCwwMDAsMDAwIC0gNjAgc2Vjb25kcyAqLw0KPiArc3Rh dGljIGludDMyX3QgYmJyX3BrdF9kZWxheSA9IDEwMDA7DQo+ICtzdGF0aWMgaW50MzJfdCBiYnJf bWluX3RvID0gMTAwMDsJLyogTnVtYmVyIG9mIHVzZWMncyBtaW5pbXVtIHRpbWVvdXQgKi8NCj4g K3N0YXRpYyBpbnQzMl90IGJicl9pbmNyX3RpbWVycyA9IDE7DQo+ICsNCj4gK3N0YXRpYyBpbnQz Ml90IGJicl90bHBfbWluID0gMTAwMDA7CS8qIDEwbXMgaW4gdXNlY3MgKi8NCj4gK3N0YXRpYyBp bnQzMl90IGJicl9kZWxheWVkX2Fja190aW1lID0gMjAwMDAwOwkvKiAyMDBtcyBpbiB1c2VjcyAq Lw0KPiArc3RhdGljIGludDMyX3QgYmJyX2V4aXRfc3RhcnR1cF9hdF9sb3NzID0gMTsNCj4gKw0K PiArLyoNCj4gKyAqIGJicl9sdF9id19yYXRpbyBpcyAxLzh0aA0KPiArICogYmJyX2x0X2J3X2Rp ZmYgaXMgIDwgNCBLYml0L3NlYw0KPiArICovDQo+ICtzdGF0aWMgdWludDY0X3QgYmJyX2x0X2J3 X2RpZmYgPSA0MDAwIC8gODsJLyogSW4gYnl0ZXMgcGVyIHNlY29uZCAqLw0KPiArc3RhdGljIHVp bnQ2NF90IGJicl9sdF9id19yYXRpbyA9IDg7CS8qIEZvciAxLzh0aCAqLw0KPiArc3RhdGljIHVp bnQzMl90IGJicl9sdF9id19tYXhfcnR0cyA9IDQ4OwkvKiBIb3cgbWFueSBydHQncyBkbyB3ZSB1 c2UNCj4gKwkJCQkJCSAqIHRoZSBsdF9idyBmb3IgKi8NCj4gK3N0YXRpYyB1aW50MzJfdCBiYnJf bHRfaW50dmxfbWluX3J0dHMgPSA0OwkvKiBNaW4gbnVtIG9mIFJUVCdzIHRvIG1lYXN1cmUNCj4g KwkJCQkJCSAqIGx0X2J3ICovDQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfbHRfaW50dmxfZnAgPSAw OwkJLyogRmFsc2UgcG9zaXRpdmUgZXBvY2ggZGlmZiAqLw0KPiArc3RhdGljIGludDMyX3QgYmJy X2x0X2xvc3NfdGhyZXNoID0gMTk2OwkvKiBMb3N0IHZzIGRlbGl2ZXJlZCAlICovDQo+ICtzdGF0 aWMgaW50MzJfdCBiYnJfbHRfZmRfdGhyZXNoID0gMTAwOwkJLyogZmFsc2UgZGV0ZWN0aW9uICUg Ki8NCj4gKw0KPiArc3RhdGljIGludDMyX3QgYmJyX3ZlcmJvc2VfbG9nZ2luZyA9IDA7DQo+ICsv Kg0KPiArICogQ3VycmVudGx5IHJlZ3VsYXIgdGNwIGhhcyBhIHJ0b19taW4gb2YgMzBtcw0KPiAr ICogdGhlIGJhY2tvZmYgZ29lcyAxMiB0aW1lcyBzbyB0aGF0IGVuZHMgdXANCj4gKyAqIGJlaW5n IGEgdG90YWwgb2YgMTIyLjg1MCBzZWNvbmRzIGJlZm9yZSBhDQo+ICsgKiBjb25uZWN0aW9uIGlz IGtpbGxlZC4NCj4gKyAqLw0KPiArc3RhdGljIGludDMyX3QgYmJyX3J0b19taW5fbXMgPSAzMDsJ LyogMzBtcyBzYW1lIGFzIG1haW4gZnJlZWJzZCAqLw0KPiArc3RhdGljIGludDMyX3QgYmJyX3J0 b19tYXhfc2VjID0gNDsJLyogNCBzZWNvbmRzICovDQo+ICsNCj4gKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KPiArLyogREVGQVVMVCBUU08g U0laSU5HICAoY3B1IHBlcmZvcm1hbmNlIGltcGFjdGluZykgICovDQo+ICsvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCj4gKy8qIFdoYXQgYW1v dW50IGlzIG91ciBmb3JtdWxhIHVzaW5nIHRvIGdldCBUU08gc2l6ZSAqLw0KPiArc3RhdGljIGlu dDMyX3QgYmJyX2hwdHNpX3Blcl9zZWNvbmQgPSAxMDAwOw0KPiArDQo+ICsvKg0KPiArICogRm9y IGhwdHNpIHVuZGVyIGJicl9jcm9zc19vdmVyIGNvbm5lY3Rpb25zIHdoYXQgaXMgZGVsYXkgDQo+ ICsgKiB0YXJnZXQgN21zIChpbiB1c2VjKSBjb21iaW5lZCB3aXRoIGEgc2VnX21heCBvZiAyDQo+ ICsgKiBnZXRzIHVzIGNsb3NlIHRvIGlkZW50aWNhbCBnb29nbGUgYmVoYXZpb3IgaW4gDQo+ICsg KiBUU08gc2l6ZSBzZWxlY3Rpb24gKHBvc3NpYmx5IG1vcmUgMU1TUyBzZW5kcykuDQo+ICsgKi8N Cj4gK3N0YXRpYyBpbnQzMl90IGJicl9ocHRzaV9zZWdtZW50c19kZWxheV90YXIgPSA3MDAwOw0K PiArDQo+ICsvKiBEb2VzIHBhY2luZyBkZWxheSBpbmNsdWRlIG92ZXJoZWFkJ3MgaW4gaXRzIHRp bWUgY2FsY3VsYXRpb25zPyAqLw0KPiArc3RhdGljIGludDMyX3QgYmJyX2luY2x1ZGVfZW5ldF9v aCA9IDA7DQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfaW5jbHVkZV9pcF9vaCA9IDE7DQo+ICtzdGF0 aWMgaW50MzJfdCBiYnJfaW5jbHVkZV90Y3Bfb2ggPSAxOw0KPiArc3RhdGljIGludDMyX3QgYmJy X2dvb2dsZV9kaXNjb3VudCA9IDEwOw0KPiArDQo+ICsvKiBEbyB3ZSB1c2UgKG5mIG1vZGUpIHBr dC1lcG9jaCB0byBkcml2ZSB1cyBvciBydHRQcm9wPyAqLw0KPiArc3RhdGljIGludDMyX3QgYmJy X3N0YXRlX2lzX3BrdF9lcG9jaCA9IDA7DQo+ICtzdGF0aWMgaW50MzJfdCBiYnJfc3RhdGVfZHJh aW5fMl90YXIgPSAxOw0KPiArLyogV2hhdCBpcyB0aGUgbWF4IHRoZSAwIC0gYmJyX2Nyb3NzX292 ZXIgTUJQUyBUU08gdGFyZ2V0DQo+ICsgKiBjYW4gcmVhY2ggdXNpbmcgb3VyIGRlbGF5IHRhcmdl dC4gTm90ZSB0aGF0IHRoaXMNCj4gKyAqIHZhbHVlIGJlY29tZXMgdGhlIGZsb29yIGZvciB0aGUg Y3Jvc3Mgb3Zlcg0KPiArICogYWxnb3JpdGhtLg0KPiANCj4gKioqIERJRkYgT1VUUFVUIFRSVU5D QVRFRCBBVCAxMDAwIExJTkVTICoqKg0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXw0KPiBzdm4tc3JjLWhlYWRAZnJlZWJzZC5vcmcgbWFpbGluZyBsaXN0 DQo+IGh0dHBzOi8vbGlzdHMuZnJlZWJzZC5vcmcvbWFpbG1hbi9saXN0aW5mby9zdm4tc3JjLWhl YWQNCg0KPiBUbyB1bnN1YnNjcmliZSwgc2VuZCBhbnkgbWFpbCB0byAic3ZuLXNyYy1oZWFkLXVu c3Vic2NyaWJlQGZyZWVic2Qub3JnIg0KDQpUaGlzIGJyZWFrIGtlcm5lbCBidWlsZHM6DQoNClsu Li5dDQovdXNyL3NyYy9zeXMvbW9kdWxlcy90Y3AvYmJyLy4uLy4uLy4uL25ldGluZXQvdGNwX3N0 YWNrcy9iYnIuYzo1NjEzOjk6IGVycm9yOiBpbXBsaWNpdA0KZGVjbGFyYXRpb24gb2YgZnVuY3Rp b24gJ3RjcF9jaGdfcGFjaW5nX3JhdGUnIGlzIGludmFsaWQgaW4gQzk5DQpbLVdlcnJvciwtV2lt cGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXSBucnRlID0gdGNwX2NoZ19wYWNpbmdfcmF0ZShi YnItPnJfY3RsLmNydGUsIF4NCi91c3Ivc3JjL3N5cy9tb2R1bGVzL3RjcC9iYnIvLi4vLi4vLi4v bmV0aW5ldC90Y3Bfc3RhY2tzL2Jici5jOjU2MTM6OTogZXJyb3I6IHRoaXMgZnVuY3Rpb24NCmRl Y2xhcmF0aW9uIGlzIG5vdCBhIHByb3RvdHlwZSBbLVdlcnJvciwtV3N0cmljdC1wcm90b3R5cGVz XQ0KL3Vzci9zcmMvc3lzL21vZHVsZXMvdGNwL2Jici8uLi8uLi8uLi9uZXRpbmV0L3RjcF9zdGFj a3MvYmJyLmM6NTYxMzo3OiBlcnJvcjogaW5jb21wYXRpYmxlDQppbnRlZ2VyIHRvIHBvaW50ZXIg Y29udmVyc2lvbiBhc3NpZ25pbmcgdG8gJ2NvbnN0IHN0cnVjdCB0Y3BfaHdyYXRlX2xpbWl0X3Rh YmxlIConIGZyb20gJ2ludCcNClstV2Vycm9yLC1XaW50LWNvbnZlcnNpb25dIG5ydGUgPSB0Y3Bf Y2hnX3BhY2luZ19yYXRlKGJici0+cl9jdGwuY3J0ZSwgXg0Kfn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+IC0tLSBhbGxfc3ViZGlyX3RvZWNvcmUgLS0tIEJ1aWxkaW5nDQovdXNy L29iai91c3Ivc3JjL2FtZDY0LmFtZDY0L3N5cy9USE9SL21vZHVsZXMvdXNyL3NyYy9zeXMvbW9k dWxlcy90b2Vjb3JlL3RvZWNvcmUua28gLS0tDQphbGxfc3ViZGlyX3RjcCAtLS0gL3Vzci9zcmMv c3lzL21vZHVsZXMvdGNwL2Jici8uLi8uLi8uLi9uZXRpbmV0L3RjcF9zdGFja3MvYmJyLmM6MTA0 NDM6NDoNCmVycm9yOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAndGNwX3JlbF9w YWNpbmdfcmF0ZScgaXMgaW52YWxpZCBpbiBDOTkNClstV2Vycm9yLC1XaW1wbGljaXQtZnVuY3Rp b24tZGVjbGFyYXRpb25dIHRjcF9yZWxfcGFjaW5nX3JhdGUoYmJyLT5yX2N0bC5jcnRlLCBiYnIt PnJjX3RwKTsgXg0KLSAtLS0gYWxsX3N1YmRpcl90cG0gLS0tDQo9PT0+IHRwbSAoYWxsKQ0KLSAt LS0gYWxsX3N1YmRpcl90Y3AgLS0tDQovdXNyL3NyYy9zeXMvbW9kdWxlcy90Y3AvYmJyLy4uLy4u Ly4uL25ldGluZXQvdGNwX3N0YWNrcy9iYnIuYzoxMDQ0Mzo0OiBlcnJvcjogdGhpcyBmdW5jdGlv bg0KZGVjbGFyYXRpb24gaXMgbm90IGEgcHJvdG90eXBlIFstV2Vycm9yLC1Xc3RyaWN0LXByb3Rv dHlwZXNdIC0tLSBhbGxfc3ViZGlyX3RybSAtLS0NCj09PT4gdHJtIChhbGwpDQotIC0tLSBhbGxf c3ViZGlyX3RjcCAtLS0NCi91c3Ivc3JjL3N5cy9tb2R1bGVzL3RjcC9iYnIvLi4vLi4vLi4vbmV0 aW5ldC90Y3Bfc3RhY2tzL2Jici5jOjE0MzA3OjIxOiBlcnJvcjogaW1wbGljaXQNCmRlY2xhcmF0 aW9uIG9mIGZ1bmN0aW9uICd0Y3Bfc2V0X3BhY2luZ19yYXRlJyBpcyBpbnZhbGlkIGluIEM5OQ0K Wy1XZXJyb3IsLVdpbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0gYmJyLT5yX2N0bC5jcnRl ID0gdGNwX3NldF9wYWNpbmdfcmF0ZShiYnItPnJjX3RwLCANCg0KLSAtLSANCk8uIEhhcnRtYW5u DQoNCkljaCB3aWRlcnNwcmVjaGUgZGVyIE51dHp1bmcgb2RlciDDnGJlcm1pdHRsdW5nIG1laW5l ciBEYXRlbiBmw7xyDQpXZXJiZXp3ZWNrZSBvZGVyIGbDvHIgZGllIE1hcmt0LSBvZGVyIE1laW51 bmdzZm9yc2NodW5nICjCpyAyOCBBYnMuIDQgQkRTRykuDQotLS0tLUJFR0lOIFBHUCBTSUdOQVRV UkUtLS0tLQ0KDQppSFVFQVJZSUFCMFdJUVN5OElCeEFQRGtxVkJhVEo0NE4xWlpQYmE1UndVQ1hZ cHVqZ0FLQ1JBNE4xWlpQYmE1DQpSN2J3QVFEOWNnSmdKeWI1UHFYOEE4eDlSK0g5VHVuOWIrWVNn NFROSzN2UC9WZmZId0VBOE1OMkIvUVR2aEpjDQpXSVN5c2lMSGVPclFLR2hDSmJ0alcyUlVicHJM ZkFZPQ0KPTBoSXUNCi0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLQ0K